summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mcompositewindow.cpp11
-rw-r--r--src/mcompositewindow.h6
2 files changed, 9 insertions, 8 deletions
diff --git a/src/mcompositewindow.cpp b/src/mcompositewindow.cpp
index 06f21ba..78bbab3 100644
--- a/src/mcompositewindow.cpp
+++ b/src/mcompositewindow.cpp
@@ -423,11 +423,14 @@ void MCompositeWindow::closeWindow()
iconify(fadeRect, defer);
}
-void MCompositeWindow::deleteLater()
+bool MCompositeWindow::event(QEvent *e)
{
- destroyed = true;
- if (!is_transitioning)
- QObject::deleteLater();
+ if (e->type() == QEvent::DeferredDelete && is_transitioning) {
+ // Can't delete the object yet, try again in the next iteration.
+ deleteLater();
+ return true;
+ } else
+ return QObject::event(e);
}
void MCompositeWindow::prettyDestroy()
diff --git a/src/mcompositewindow.h b/src/mcompositewindow.h
index b82dfc6..cc53cd7 100644
--- a/src/mcompositewindow.h
+++ b/src/mcompositewindow.h
@@ -72,10 +72,8 @@ public:
Qt::HANDLE window() const { return win_id; }
- /*!
- * Overriden QObject::deleteLater()
- */
- void deleteLater();
+ // Reimplemented to defer deleteLater()s until transitions are over.
+ virtual bool event(QEvent *);
/*!
* Saves the global state of this item. Possibly transformations and