diff --git a/src/plugins/projectexplorer/projectwelcomepage.cpp b/src/plugins/projectexplorer/projectwelcomepage.cpp index 6607454443c..e1adf657ad2 100644 --- a/src/plugins/projectexplorer/projectwelcomepage.cpp +++ b/src/plugins/projectexplorer/projectwelcomepage.cpp @@ -124,28 +124,6 @@ void ProjectModel::resetProjects() ProjectWelcomePage::ProjectWelcomePage() { - const int actionsCount = 9; - Context welcomeContext(Core::Constants::C_WELCOME_MODE); - - const Id projectBase = PROJECT_BASE_ID; - const Id sessionBase = SESSION_BASE_ID; - for (int i = 1; i <= actionsCount; ++i) { - auto act = new QAction(tr("Open Session #%1").arg(i), this); - Command *cmd = ActionManager::registerAction(act, sessionBase.withSuffix(i), welcomeContext); - cmd->setDefaultKeySequence(QKeySequence((useMacShortcuts ? tr("Ctrl+Meta+%1") : tr("Ctrl+Alt+%1")).arg(i))); - connect(act, &QAction::triggered, this, [this, i] { - if (i <= m_sessionModel->rowCount()) - openSessionAt(i - 1); - }); - - act = new QAction(tr("Open Recent Project #%1").arg(i), this); - cmd = ActionManager::registerAction(act, projectBase.withSuffix(i), welcomeContext); - cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+Shift+%1").arg(i))); - connect(act, &QAction::triggered, this, [this, i] { - if (i <= m_projectModel->rowCount(QModelIndex())) - openProjectAt(i - 1); - }); - } } Utils::Id ProjectWelcomePage::id() const @@ -185,6 +163,40 @@ void ProjectWelcomePage::openProjectAt(int index) ProjectExplorerPlugin::openProjectWelcomePage(projectFile); } +void ProjectWelcomePage::createActions() +{ + static bool actionsRegistered = false; + + if (actionsRegistered) + return; + + actionsRegistered = true; + + const int actionsCount = 9; + Context welcomeContext(Core::Constants::C_WELCOME_MODE); + + const Id projectBase = PROJECT_BASE_ID; + const Id sessionBase = SESSION_BASE_ID; + + for (int i = 1; i <= actionsCount; ++i) { + auto act = new QAction(tr("Open Session #%1").arg(i), this); + Command *cmd = ActionManager::registerAction(act, sessionBase.withSuffix(i), welcomeContext); + cmd->setDefaultKeySequence(QKeySequence((useMacShortcuts ? tr("Ctrl+Meta+%1") : tr("Ctrl+Alt+%1")).arg(i))); + connect(act, &QAction::triggered, this, [this, i] { + if (i <= m_sessionModel->rowCount()) + openSessionAt(i - 1); + }); + + act = new QAction(tr("Open Recent Project #%1").arg(i), this); + cmd = ActionManager::registerAction(act, projectBase.withSuffix(i), welcomeContext); + cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+Shift+%1").arg(i))); + connect(act, &QAction::triggered, this, [this, i] { + if (i <= m_projectModel->rowCount(QModelIndex())) + openProjectAt(i - 1); + }); + } +} + /////////////////// static QColor themeColor(Theme::Color role) @@ -636,7 +648,11 @@ public: QWidget *ProjectWelcomePage::createWidget() const { - return new SessionsPage(const_cast(this)); + auto that = const_cast(this); + QWidget *widget = new SessionsPage(that); + that->createActions(); + + return widget; } } // namespace Internal diff --git a/src/plugins/projectexplorer/projectwelcomepage.h b/src/plugins/projectexplorer/projectwelcomepage.h index a24d8333285..f56b220529d 100644 --- a/src/plugins/projectexplorer/projectwelcomepage.h +++ b/src/plugins/projectexplorer/projectwelcomepage.h @@ -75,6 +75,7 @@ signals: private: void openSessionAt(int index); void openProjectAt(int index); + void createActions(); friend class SessionsPage; SessionModel *m_sessionModel = nullptr;