From 63f128103f666e72f5f547871da44e49a9cbafaf Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 19 Nov 2018 11:17:01 +0100 Subject: Qt Designer: Fix crash when reloading forms with resources 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 --- src/designer/src/components/propertyeditor/propertyeditor.cpp | 11 +++++++++-- 1 file 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(formWindow); const bool idIdBasedTranslation = fwb && fwb->useIdBasedTranslations(); const bool idIdBasedTranslationUnchanged = (idIdBasedTranslation == DesignerPropertyManager::useIdBasedTranslations()); -- cgit v1.2.1