diff options
Diffstat (limited to 'src/plugins/cmakeprojectmanager/cmakeproject.cpp')
-rw-r--r-- | src/plugins/cmakeprojectmanager/cmakeproject.cpp | 46 |
1 files changed, 26 insertions, 20 deletions
diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index c73092fa94b..4202b9813c4 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -49,7 +49,6 @@ #include <projectexplorer/toolchain.h> #include <cplusplus/ModelManagerInterface.h> #include <extensionsystem/pluginmanager.h> -#include <designer/formwindoweditor.h> #include <utils/qtcassert.h> #include <coreplugin/icore.h> #include <coreplugin/editormanager/editormanager.h> @@ -76,6 +75,20 @@ using namespace ProjectExplorer; // Open Questions // Who sets up the environment for cl.exe ? INCLUDEPATH and so on +// Test for form editor (loosely coupled) +static inline bool isFormWindowEditor(const QObject *o) +{ + return o && !qstrcmp(o->metaObject()->className(), "Designer::FormWindowEditor"); +} + +// Return contents of form editor (loosely coupled) +static inline QString formWindowEditorContents(const QObject *editor) +{ + const QVariant contentV = editor->property("contents"); + QTC_ASSERT(contentV.isValid(), return QString(); ) + return contentV.toString(); +} + /*! \class CMakeProject */ @@ -659,13 +672,11 @@ void CMakeProject::updateCodeModelSupportFromEditor(const QString &uiFileName, void CMakeProject::editorChanged(Core::IEditor *editor) { // Handle old editor - Designer::FormWindowEditor *lastFormEditor = qobject_cast<Designer::FormWindowEditor *>(m_lastEditor); - if (lastFormEditor) { - disconnect(lastFormEditor, SIGNAL(changed()), this, SLOT(uiEditorContentsChanged())); - + if (isFormWindowEditor(m_lastEditor)) { + disconnect(m_lastEditor, SIGNAL(changed()), this, SLOT(uiEditorContentsChanged())); if (m_dirtyUic) { - const QString contents = lastFormEditor->contents(); - updateCodeModelSupportFromEditor(lastFormEditor->file()->fileName(), contents); + const QString contents = formWindowEditorContents(m_lastEditor); + updateCodeModelSupportFromEditor(m_lastEditor->file()->fileName(), contents); m_dirtyUic = false; } } @@ -673,8 +684,8 @@ void CMakeProject::editorChanged(Core::IEditor *editor) m_lastEditor = editor; // Handle new editor - if (Designer::FormWindowEditor *fw = qobject_cast<Designer::FormWindowEditor *>(editor)) - connect(fw, SIGNAL(changed()), this, SLOT(uiEditorContentsChanged())); + if (isFormWindowEditor(editor)) + connect(editor, SIGNAL(changed()), this, SLOT(uiEditorContentsChanged())); } void CMakeProject::editorAboutToClose(Core::IEditor *editor) @@ -682,12 +693,11 @@ void CMakeProject::editorAboutToClose(Core::IEditor *editor) if (m_lastEditor == editor) { // Oh no our editor is going to be closed // get the content first - Designer::FormWindowEditor *lastEditor = qobject_cast<Designer::FormWindowEditor *>(m_lastEditor); - if (lastEditor) { - disconnect(lastEditor, SIGNAL(changed()), this, SLOT(uiEditorContentsChanged())); + if (isFormWindowEditor(m_lastEditor)) { + disconnect(m_lastEditor, SIGNAL(changed()), this, SLOT(uiEditorContentsChanged())); if (m_dirtyUic) { - const QString contents = lastEditor->contents(); - updateCodeModelSupportFromEditor(lastEditor->file()->fileName(), contents); + const QString contents = formWindowEditorContents(m_lastEditor); + updateCodeModelSupportFromEditor(m_lastEditor->file()->fileName(), contents); m_dirtyUic = false; } } @@ -698,12 +708,8 @@ void CMakeProject::editorAboutToClose(Core::IEditor *editor) void CMakeProject::uiEditorContentsChanged() { // cast sender, get filename - if (m_dirtyUic) - return; - Designer::FormWindowEditor *fw = qobject_cast<Designer::FormWindowEditor *>(sender()); - if (!fw) - return; - m_dirtyUic = true; + if (!m_dirtyUic && isFormWindowEditor(sender())) + m_dirtyUic = true; } void CMakeProject::buildStateChanged(ProjectExplorer::Project *project) |