diff --git a/src/plugins/designer/formwindowfile.cpp b/src/plugins/designer/formwindowfile.cpp index e95e4b92be2263b330fd56e6b6fdf39909d63c69..a130cc9d6804b78ebad659a45dc28f259eb66e9c 100644 --- a/src/plugins/designer/formwindowfile.cpp +++ b/src/plugins/designer/formwindowfile.cpp @@ -35,6 +35,7 @@ #include <utils/qtcassert.h> #include <QtDesigner/QDesignerFormWindowInterface> +#include <QtDesigner/QDesignerFormWindowManagerInterface> #include <QtDesigner/QDesignerFormEditorInterface> #include <QtGui/QMessageBox> @@ -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 5ac62ac4f04157eb77375b0ddf2014d1bbce9037..92dbc236950d89400b7434039e5cb107f08b25e6 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;