diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-11-19 11:17:01 +0100 |
---|---|---|
committer | Jani Heikkinen <jani.heikkinen@qt.io> | 2018-11-26 17:12:03 +0000 |
commit | 63f128103f666e72f5f547871da44e49a9cbafaf (patch) | |
tree | 2cc48f8e5d7b4f34e31807a216ea9d0f6c9576ef | |
parent | a55cf07c63a1440b35075480fc2960161dfb60d9 (diff) | |
download | qttools-5.12.0.tar.gz |
Qt Designer: Fix crash when reloading forms with resourcesv5.12.0-rc2v5.12.05.12.0
Change qtools/548a75049efaa3f9b3087016e3e36cc9b4f23e2e caused
icon/pixmap properties to leak when setting a null object on the
property editor since the code removing the properties was not
executed.
Default to the active form window when trying to find a form window
for the object in question and bail out with a warning if that fails.
Fixes: QTBUG-71809
Task-number: QTBUG-68507
Change-Id: I3fd96dd9b72d822c47071286b641254530f1568d
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
-rw-r--r-- | src/designer/src/components/propertyeditor/propertyeditor.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/designer/src/components/propertyeditor/propertyeditor.cpp b/src/designer/src/components/propertyeditor/propertyeditor.cpp index 1fee704d2..d393caee5 100644 --- a/src/designer/src/components/propertyeditor/propertyeditor.cpp +++ b/src/designer/src/components/propertyeditor/propertyeditor.cpp @@ -913,8 +913,15 @@ void PropertyEditor::setObject(QObject *object) m_object = object; m_propertyManager->setObject(object); QDesignerFormWindowInterface *formWindow = QDesignerFormWindowInterface::findFormWindow(m_object); - if (Q_UNLIKELY(formWindow == nullptr)) // QTBUG-68507, can happen in Morph Undo macros with buddies - return; + // QTBUG-68507: Form window can be null for objects in Morph Undo macros with buddies + if (object != nullptr && formWindow == nullptr) { + formWindow = m_core->formWindowManager()->activeFormWindow(); + if (formWindow == nullptr) { + qWarning("PropertyEditor::setObject(): Unable to find form window for \"%s\".", + qPrintable(object->objectName())); + return; + } + } FormWindowBase *fwb = qobject_cast<FormWindowBase *>(formWindow); const bool idIdBasedTranslation = fwb && fwb->useIdBasedTranslations(); const bool idIdBasedTranslationUnchanged = (idIdBasedTranslation == DesignerPropertyManager::useIdBasedTranslations()); |