diff --git a/src/app/qgisapp.cpp b/src/app/qgisapp.cpp index bcd7a4660e51..55cffc774eba 100644 --- a/src/app/qgisapp.cpp +++ b/src/app/qgisapp.cpp @@ -1426,14 +1426,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( "UI/UITheme", "default" ).toString(); - setTheme( themename ); - - // Read legacy settings mRecentProjects.clear(); settings.beginGroup( "/UI" ); @@ -1477,6 +1472,16 @@ void QgisApp::readSettings() mRecentProjects.append( data ); } settings.endGroup(); +} + +void QgisApp::readSettings() +{ + QSettings settings; + QString themename = settings.value( "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" @@ -3258,6 +3263,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 9bc115c08c4a..cf2d3fd461bd 100644 --- a/src/app/qgisapp.h +++ b/src/app/qgisapp.h @@ -1472,6 +1472,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; // actions for menus and toolbars -----------------