From b514863df1ea47ec1dd4228c2162c8aca8034a12 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Tue, 23 Feb 2021 14:29:15 +1000 Subject: [PATCH] [layouts] Fix map item loses preset them choice if item is selected when a map theme is renamed or changed --- src/gui/layout/qgslayoutmapwidget.cpp | 5 +++++ src/gui/layout/qgslayoutmapwidget.h | 1 + 2 files changed, 6 insertions(+) diff --git a/src/gui/layout/qgslayoutmapwidget.cpp b/src/gui/layout/qgslayoutmapwidget.cpp index cc5d5ab641b5..2ce62aa57625 100644 --- a/src/gui/layout/qgslayoutmapwidget.cpp +++ b/src/gui/layout/qgslayoutmapwidget.cpp @@ -314,6 +314,9 @@ void QgsLayoutMapWidget::followVisibilityPresetSelected( int currentIndex ) if ( !mMapItem ) return; + if ( mBlockThemeComboChanges != 0 ) + return; + if ( currentIndex == -1 ) return; // doing combo box model reset @@ -361,6 +364,7 @@ void QgsLayoutMapWidget::onMapThemesChanged() { if ( QStringListModel *model = qobject_cast( mFollowVisibilityPresetCombo->model() ) ) { + mBlockThemeComboChanges++; QStringList lst; lst.append( tr( "(none)" ) ); lst += QgsProject::instance()->mapThemeCollection()->mapThemes(); @@ -371,6 +375,7 @@ void QgsLayoutMapWidget::onMapThemesChanged() mFollowVisibilityPresetCombo->blockSignals( true ); mFollowVisibilityPresetCombo->setCurrentIndex( presetModelIndex != -1 ? presetModelIndex : 0 ); // 0 == none mFollowVisibilityPresetCombo->blockSignals( false ); + mBlockThemeComboChanges--; } } diff --git a/src/gui/layout/qgslayoutmapwidget.h b/src/gui/layout/qgslayoutmapwidget.h index a27bd10f3932..6cb5d4ad545b 100644 --- a/src/gui/layout/qgslayoutmapwidget.h +++ b/src/gui/layout/qgslayoutmapwidget.h @@ -152,6 +152,7 @@ class GUI_EXPORT QgsLayoutMapWidget: public QgsLayoutItemBaseWidget, private Ui: QMenu *mBookmarkMenu = nullptr; QgsBookmarkManagerProxyModel *mBookmarkModel = nullptr; QString mReportTypeString; + int mBlockThemeComboChanges = 0; //! Sets extent of composer map from line edits void updateComposerExtentFromGui();