diff --git a/src/plugins/designer/formwindowfile.cpp b/src/plugins/designer/formwindowfile.cpp index e95e4b92be2..a130cc9d680 100644 --- a/src/plugins/designer/formwindowfile.cpp +++ b/src/plugins/designer/formwindowfile.cpp @@ -35,6 +35,7 @@ #include #include +#include #include #include @@ -53,6 +54,8 @@ FormWindowFile::FormWindowFile(QDesignerFormWindowInterface *form, QObject *pare m_mimeType(QLatin1String(Designer::Constants::FORM_MIMETYPE)), m_formWindow(form) { + connect(m_formWindow->core()->formWindowManager(), SIGNAL(formWindowRemoved(QDesignerFormWindowInterface*)), + this, SLOT(slotFormWindowRemoved(QDesignerFormWindowInterface*))); } bool FormWindowFile::save(const QString &name /*= QString()*/) @@ -192,5 +195,14 @@ QDesignerFormWindowInterface *FormWindowFile::formWindow() const return m_formWindow; } +void FormWindowFile::slotFormWindowRemoved(QDesignerFormWindowInterface *w) +{ + // Release formwindow as soon as the FormWindowManager removes + // as calls to isDirty() are triggered at arbitrary times + // while building. + if (w == m_formWindow) + m_formWindow = 0; +} + } // namespace Internal } // namespace Designer diff --git a/src/plugins/designer/formwindowfile.h b/src/plugins/designer/formwindowfile.h index 5ac62ac4f04..92dbc236950 100644 --- a/src/plugins/designer/formwindowfile.h +++ b/src/plugins/designer/formwindowfile.h @@ -78,6 +78,9 @@ signals: public slots: void setFileName(const QString &); +private slots: + void slotFormWindowRemoved(QDesignerFormWindowInterface *w); + private: const QString m_mimeType;