diff --git a/mscore/prefsdialog.cpp b/mscore/prefsdialog.cpp index a4383d186ab58..a03967ef68d52 100644 --- a/mscore/prefsdialog.cpp +++ b/mscore/prefsdialog.cpp @@ -1409,7 +1409,7 @@ void PreferenceDialog::apply() if(uiStyleThemeChanged) { WorkspacesManager::retranslateAll(); - preferences.setPreference(PREF_APP_WORKSPACE, WorkspacesManager::currentWorkspace()->translatableName()); + preferences.setPreference(PREF_APP_WORKSPACE, WorkspacesManager::currentWorkspace()->id()); WorkspacesManager::currentWorkspace()->save(); emit mscore->workspacesChanged(); } diff --git a/mscore/workspace.cpp b/mscore/workspace.cpp index d72d71354fe6b..d9807b28fca03 100644 --- a/mscore/workspace.cpp +++ b/mscore/workspace.cpp @@ -230,7 +230,7 @@ void MuseScore::changeWorkspace(Workspace* p, bool first) connect(getPaletteWorkspace(), &PaletteWorkspace::userPaletteChanged, WorkspacesManager::currentWorkspace(), QOverload<>::of(&Workspace::setDirty), Qt::UniqueConnection); - preferences.setPreference(PREF_APP_WORKSPACE, p->translatableName()); + preferences.setPreference(PREF_APP_WORKSPACE, p->id()); emit mscore->workspacesChanged(); } @@ -272,10 +272,16 @@ bool WorkspacesManager::isDefaultEditedWorkspace(Workspace* workspace) void WorkspacesManager::initCurrentWorkspace() { initWorkspaces(); - m_currentWorkspace = findByName(preferences.getString(PREF_APP_WORKSPACE)); + + QString workspaceName = preferences.getString(PREF_APP_WORKSPACE); + m_currentWorkspace = findByName(workspaceName); Q_ASSERT(!workspaces().empty()); - if (m_currentWorkspace == 0) - m_currentWorkspace = workspaces().at(0); + if (!m_currentWorkspace) { + m_currentWorkspace = findByTranslatableName(workspaceName); + if (!m_currentWorkspace) { + m_currentWorkspace = workspaces().at(0); + } + } } void WorkspacesManager::remove(Workspace* workspace) @@ -317,6 +323,11 @@ Workspace::Workspace() connect(&_saveTimer, &QTimer::timeout, this, &Workspace::ensureWorkspaceSaved); } +QString Workspace::id() const + { + return !_translatableName.isEmpty() ? _translatableName : _name; + } + //--------------------------------------------------------- // makeUserWorkspacePath /// Returns path for the workspace with the given \p name @@ -1094,7 +1105,7 @@ void Workspace::ensureWorkspaceSaved() Q_ASSERT(!_readOnly); WorkspacesManager::refreshWorkspaces(); - preferences.setPreference(PREF_APP_WORKSPACE, translatableName()); + preferences.setPreference(PREF_APP_WORKSPACE, id()); emit mscore->workspacesChanged(); } else diff --git a/mscore/workspace.h b/mscore/workspace.h index bf69ecc742e0f..0bc92ce2f7542 100644 --- a/mscore/workspace.h +++ b/mscore/workspace.h @@ -76,6 +76,7 @@ class Workspace : public QObject { Workspace(const QString& n, const QString& p, bool d, bool r) : _name(n), _path(p), _dirty(d), _readOnly(r) {} + QString id() const; QString path() const { return _path; } void setPath(const QString& s) { _path = s; } QString name() const { return _name; } diff --git a/mscore/workspacecombobox.cpp b/mscore/workspacecombobox.cpp index 56b1c28f36a93..a54e699663882 100644 --- a/mscore/workspacecombobox.cpp +++ b/mscore/workspacecombobox.cpp @@ -81,7 +81,7 @@ void WorkspaceComboBox::updateWorkspaces() int curIdx = -1; for (Workspace* p : pl) { addItem(qApp->translate("Ms::Workspace", p->name().toUtf8()), p->path()); - if (p->name() == preferences.getString(PREF_APP_WORKSPACE)) + if (p->id() == preferences.getString(PREF_APP_WORKSPACE)) curIdx = idx; ++idx; } diff --git a/mscore/workspacedialog.cpp b/mscore/workspacedialog.cpp index 37c95bd2d793d..ac015f4f48cb6 100644 --- a/mscore/workspacedialog.cpp +++ b/mscore/workspacedialog.cpp @@ -153,8 +153,8 @@ void WorkspaceDialog::accepted() mscore->changeWorkspace(newWorkspace); preferences.updateLocalPreferences(); } - - preferences.setPreference(PREF_APP_WORKSPACE, WorkspacesManager::currentWorkspace()->translatableName()); + + preferences.setPreference(PREF_APP_WORKSPACE, WorkspacesManager::currentWorkspace()->id()); emit mscore->workspacesChanged(); close(); }