diff --git a/include/project.h b/include/project.h index 570a2faa..8f2ea94b 100644 --- a/include/project.h +++ b/include/project.h @@ -73,6 +73,7 @@ public: void setRoot(const QString&); const QStringList& mapNames() const { return this->alphabeticalMapNames; } + QStringList getMapNamesByGroup() const; bool isKnownMap(const QString &mapName) const { return this->maps.contains(mapName); } bool isErroredMap(const QString &mapName) const { return this->erroredMaps.contains(mapName); } bool isLoadedMap(const QString &mapName) const { return this->loadedMapNames.contains(mapName); } diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index eb47f34a..f798101d 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -878,7 +878,7 @@ bool MainWindow::setInitialMap() { } // Failed to open recent map/layout, or no recent map/layout. Try opening maps then layouts sequentially. - for (const auto &name : editor->project->mapNames()) { + for (const auto &name : editor->project->getMapNamesByGroup()) { if (name != recent && setMap(name)) return true; } diff --git a/src/project.cpp b/src/project.cpp index c395ec92..28634dde 100644 --- a/src/project.cpp +++ b/src/project.cpp @@ -2017,6 +2017,16 @@ QStringList Project::getLayoutNames() const { return names; } +QStringList Project::getMapNamesByGroup() const { + QStringList names; + for (const auto &groupName : this->groupNames) { + for (const auto &groupMapNames : this->groupNameToMapNames.value(groupName)) { + names.append(groupMapNames); + } + } + return names; +} + bool Project::isUnsavedMap(const QString &mapName) const { Map* map = this->maps.value(mapName); return map ? map->hasUnsavedChanges() : false;