From 8a9a174c3b9dfab55c437a5649ed95594999a0e1 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Sun, 5 Jan 2020 15:44:55 +1000 Subject: [PATCH] Fix effect preview picture not set when effect widget is opened in dialog mode Also fix a memory leak when opened in dialog mode Fixes #33600 --- .../effects/qgseffectstackpropertieswidget.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/gui/effects/qgseffectstackpropertieswidget.cpp b/src/gui/effects/qgseffectstackpropertieswidget.cpp index caaa1669643..4ab7161e156 100644 --- a/src/gui/effects/qgseffectstackpropertieswidget.cpp +++ b/src/gui/effects/qgseffectstackpropertieswidget.cpp @@ -470,15 +470,15 @@ void QgsEffectStackCompactWidget::showDialog() return; QgsEffectStack *clone = mStack->clone(); - QgsEffectStackPropertiesWidget *widget = new QgsEffectStackPropertiesWidget( clone, nullptr ); - if ( mPreviewPicture ) - { - widget->setPreviewPicture( *mPreviewPicture ); - } - QgsPanelWidget *panel = QgsPanelWidget::findParentPanel( qobject_cast< QWidget * >( parent() ) ); if ( panel && panel->dockMode() ) { + QgsEffectStackPropertiesWidget *widget = new QgsEffectStackPropertiesWidget( clone, nullptr ); + if ( mPreviewPicture ) + { + widget->setPreviewPicture( *mPreviewPicture ); + } + connect( widget, &QgsPanelWidget::widgetChanged, this, &QgsEffectStackCompactWidget::updateEffectLive ); connect( widget, &QgsPanelWidget::panelAccepted, this, &QgsEffectStackCompactWidget::updateAcceptWidget ); panel->openPanel( widget ); @@ -486,6 +486,11 @@ void QgsEffectStackCompactWidget::showDialog() else { QgsEffectStackPropertiesDialog dlg( clone, this ); + if ( mPreviewPicture ) + { + dlg.setPreviewPicture( *mPreviewPicture ); + } + if ( dlg.exec() == QDialog::Accepted ) { *mStack = *clone;