summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2018-11-19 11:17:01 +0100
committerJani Heikkinen <jani.heikkinen@qt.io>2018-11-26 17:12:03 +0000
commit63f128103f666e72f5f547871da44e49a9cbafaf (patch)
tree2cc48f8e5d7b4f34e31807a216ea9d0f6c9576ef
parenta55cf07c63a1440b35075480fc2960161dfb60d9 (diff)
Qt Designer: Fix crash when reloading forms with resourcesv5.12.0-rc2v5.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.cpp11
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());