From f45c19cfabfdba337fcb3cdb7415d731d3ad825c Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Thu, 23 Feb 2017 11:34:13 +1000 Subject: [PATCH] Always reread recent projects before saving new ones Avoids loss of recent projects from menu if working in multiple QGIS sessions concurrently --- src/app/qgisapp.cpp | 21 +++++++++++++++------ src/app/qgisapp.h | 3 +++ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/app/qgisapp.cpp b/src/app/qgisapp.cpp index 1c90ef7c27c..c194ab45640 100644 --- a/src/app/qgisapp.cpp +++ b/src/app/qgisapp.cpp @@ -1536,14 +1536,9 @@ QgisAppStyleSheet* QgisApp::styleSheetBuilder() return mStyleSheetBuilder; } -// restore any application settings stored in QSettings -void QgisApp::readSettings() +void QgisApp::readRecentProjects() { QSettings settings; - QString themename = settings.value( QStringLiteral( "UI/UITheme" ), "default" ).toString(); - setTheme( themename ); - - // Read legacy settings mRecentProjects.clear(); settings.beginGroup( QStringLiteral( "/UI" ) ); @@ -1587,6 +1582,16 @@ void QgisApp::readSettings() mRecentProjects.append( data ); } settings.endGroup(); +} + +void QgisApp::readSettings() +{ + QSettings settings; + QString themename = settings.value( QStringLiteral( "UI/UITheme" ), "default" ).toString(); + setTheme( themename ); + + // Read legacy settings + readRecentProjects(); // this is a new session! reset enable macros value to "ask" // whether set to "just for this session" @@ -3354,6 +3359,10 @@ void QgisApp::updateRecentProjectPaths() // add this file to the recently opened/saved projects list void QgisApp::saveRecentProjectPath( const QString& projectPath, bool savePreviewImage ) { + // first, re-read the recent project paths. This prevents loss of recent + // projects when multiple QGIS sessions are open + readRecentProjects(); + QSettings settings; // Get canonical absolute path diff --git a/src/app/qgisapp.h b/src/app/qgisapp.h index 0e3f29203bd..3dd80896b81 100644 --- a/src/app/qgisapp.h +++ b/src/app/qgisapp.h @@ -1534,6 +1534,9 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow //! Copy a vector style from a layer to another one, if they have the same geometry type void duplicateVectorStyle( QgsVectorLayer* srcLayer, QgsVectorLayer* destLayer ); + //! Loads the list of recent projects from settings + void readRecentProjects(); + QgisAppStyleSheet *mStyleSheetBuilder = nullptr; // actions for menus and toolbars -----------------