diff options
-rw-r--r-- | src/mcompositewindow.cpp | 11 | ||||
-rw-r--r-- | src/mcompositewindow.h | 6 |
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 |