diff --git a/src/plugins/axivion/axivionperspective.cpp b/src/plugins/axivion/axivionperspective.cpp index 2527e44fced..f77dec72f91 100644 --- a/src/plugins/axivion/axivionperspective.cpp +++ b/src/plugins/axivion/axivionperspective.cpp @@ -244,8 +244,15 @@ IssuesWidget::IssuesWidget(QWidget *parent) if (data.isValid()) { const AxivionServer server = data.value(); switchActiveDashboardId(server.id); + reinitProjectList(m_dashboardProjects->currentText()); + } else { + switchActiveDashboardId({}); + { + GuardLocker lock(m_signalBlocker); + m_dashboardProjects->clear(); + } + updateBasicProjectInfo(std::nullopt); } - reinitProjectList(m_dashboardProjects->currentText()); }); m_dashboardProjects = new QComboBox(this); @@ -411,28 +418,34 @@ void IssuesWidget::initDashboardList(const QString &preferredProject) : preferredProject; resetDashboard(); m_dashboardListUninitialized = false; - GuardLocker lock(m_signalBlocker); const QList servers = settings().allAvailableServers(); if (servers.isEmpty()) { switchActiveDashboardId({}); + { + GuardLocker lock(m_signalBlocker); + m_dashboardProjects->clear(); + } + updateBasicProjectInfo(std::nullopt); return; } + + GuardLocker lock(m_signalBlocker); + m_dashboards->addItem(Tr::tr("None")); for (const AxivionServer &server : servers) m_dashboards->addItem(server.displayString(), QVariant::fromValue(server)); Id activeId = activeDashboardId(); - if (!activeId.isValid()) - activeId = settings().defaultDashboardId(); if (activeId.isValid()) { int index = Utils::indexOf(servers, Utils::equal(&AxivionServer::id, activeId)); if (index < 0) { activeId = settings().defaultDashboardId(); index = Utils::indexOf(servers, Utils::equal(&AxivionServer::id, activeId)); } - m_dashboards->setCurrentIndex(index); + m_dashboards->setCurrentIndex(index + 1); + reinitProjectList(currentProject); + } else { + m_dashboards->setCurrentIndex(0); } - switchActiveDashboardId(activeId); - reinitProjectList(currentProject); } void IssuesWidget::reinitProjectList(const QString ¤tProject) diff --git a/src/plugins/axivion/axivionplugin.cpp b/src/plugins/axivion/axivionplugin.cpp index f72379c7528..a45ee591476 100644 --- a/src/plugins/axivion/axivionplugin.cpp +++ b/src/plugins/axivion/axivionplugin.cpp @@ -1026,13 +1026,9 @@ void AxivionPluginPrivate::onSessionLoaded(const QString &sessionName) const QString projectName = SessionManager::sessionValue(SV_PROJECTNAME).toString(); const Id dashboardId = Id::fromSetting(SessionManager::sessionValue(SV_DASHBOARDID)); - if (!dashboardId.isValid()) { + if (!dashboardId.isValid()) switchActiveDashboardId({}); - resetDashboard(); - return; - } - - if (activeDashboardId() != dashboardId) + else if (activeDashboardId() != dashboardId) switchActiveDashboardId(dashboardId); reinitDashboard(projectName); }