From 3c08e2d96f5e620e4e8ae007b54ae15ccf47802b Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Fri, 6 Apr 2018 11:31:18 +1000 Subject: [PATCH] [layouts] Fix data defined buttons do not update when clicking between items of same type Fixes #18637, #18639 --- src/gui/layout/qgslayoutitemwidget.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/gui/layout/qgslayoutitemwidget.cpp b/src/gui/layout/qgslayoutitemwidget.cpp index d68799234b64..afd5e7012ed8 100644 --- a/src/gui/layout/qgslayoutitemwidget.cpp +++ b/src/gui/layout/qgslayoutitemwidget.cpp @@ -147,13 +147,24 @@ QgsLayoutObject *QgsLayoutItemBaseWidget::layoutObject() bool QgsLayoutItemBaseWidget::setItem( QgsLayoutItem *item ) { + QgsLayoutObject *oldObject = mObject; + QgsLayoutConfigObject *oldConfigObject = mConfigObject; + // have to set new mObject/mConfigObject here, because setNewItem methods require access to them + mObject = item; + mConfigObject = new QgsLayoutConfigObject( this, mObject ); if ( setNewItem( item ) ) { - mObject = item; + oldConfigObject->deleteLater(); return true; } - - return false; + else + { + // revert object change since it was unsuccessful + mObject = oldObject; + mConfigObject->deleteLater(); + mConfigObject = oldConfigObject; + return false; + } } void QgsLayoutItemBaseWidget::setReportTypeString( const QString & )