From b653dc3e804e4acc61d5a9241ca12cd9b88bf17f Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Wed, 10 Jan 2024 23:51:10 +0100 Subject: [PATCH] NavigationWidget: Move statics outside of class Change-Id: Ibbdb867b52eff75000fbdbc5e15694ab5b5f5646 Reviewed-by: Eike Ziller --- src/plugins/coreplugin/navigationwidget.cpp | 87 +++++++++------------ src/plugins/coreplugin/navigationwidget.h | 1 - 2 files changed, 39 insertions(+), 49 deletions(-) diff --git a/src/plugins/coreplugin/navigationwidget.cpp b/src/plugins/coreplugin/navigationwidget.cpp index 4fc33544fcd..d703624a5d2 100644 --- a/src/plugins/coreplugin/navigationwidget.cpp +++ b/src/plugins/coreplugin/navigationwidget.cpp @@ -33,6 +33,26 @@ using namespace Utils; namespace Core { +struct ActivationInfo { + Side side; + int position; +}; +using ActivationsMap = QHash; + +static NavigationWidget *s_instanceLeft = nullptr; +static NavigationWidget *s_instanceRight = nullptr; +static ActivationsMap s_activationsMap = {}; + +static void addActivationInfo(Id activatedId, const ActivationInfo &activationInfo) +{ + s_activationsMap.insert(activatedId, activationInfo); +} + +NavigationWidget *instance(Side side) +{ + return side == Side::Left ? s_instanceLeft : s_instanceRight; +} + NavigationWidgetPlaceHolder *NavigationWidgetPlaceHolder::s_currentLeft = nullptr; NavigationWidgetPlaceHolder *NavigationWidgetPlaceHolder::s_currentRight = nullptr; @@ -61,7 +81,7 @@ NavigationWidgetPlaceHolder::NavigationWidgetPlaceHolder(Id mode, Side side, QWi NavigationWidgetPlaceHolder::~NavigationWidgetPlaceHolder() { if (NavigationWidgetPlaceHolder::current(m_side) == this) { - if (NavigationWidget *nw = NavigationWidget::instance(m_side)) { + if (NavigationWidget *nw = instance(m_side)) { nw->setParent(nullptr); nw->hide(); } @@ -106,7 +126,7 @@ void NavigationWidgetPlaceHolder::applyStoredSize() // And that the parent of the NavigationWidget gets the correct parent void NavigationWidgetPlaceHolder::currentModeAboutToChange(Id mode) { - NavigationWidget *navigationWidget = NavigationWidget::instance(m_side); + NavigationWidget *navigationWidget = instance(m_side); NavigationWidgetPlaceHolder *current = NavigationWidgetPlaceHolder::current(m_side); if (current == this) { @@ -130,15 +150,9 @@ void NavigationWidgetPlaceHolder::currentModeAboutToChange(Id mode) int NavigationWidgetPlaceHolder::storedWidth() const { - return NavigationWidget::instance(m_side)->storedWidth(); + return instance(m_side)->storedWidth(); } -struct ActivationInfo { - Side side; - int position; -}; -using ActivationsMap = QHash; - struct NavigationWidgetPrivate { explicit NavigationWidgetPrivate(QAction *toggleSideBarAction, Side side); @@ -154,14 +168,6 @@ struct NavigationWidgetPrivate int m_width; QAction *m_toggleSideBarAction; // does not take ownership Side m_side; - - static NavigationWidget *s_instanceLeft; - static NavigationWidget *s_instanceRight; - - static ActivationsMap s_activationsMap; - - static void updateActivationsMap(Id activatedId, const ActivationInfo &activationInfo); - static void removeFromActivationsMap(const ActivationInfo &activationInfo); }; NavigationWidgetPrivate::NavigationWidgetPrivate(QAction *toggleSideBarAction, Side side) : @@ -173,15 +179,6 @@ NavigationWidgetPrivate::NavigationWidgetPrivate(QAction *toggleSideBarAction, S { } -void NavigationWidgetPrivate::updateActivationsMap(Id activatedId, const ActivationInfo &activationInfo) -{ - s_activationsMap.insert(activatedId, activationInfo); -} - -NavigationWidget *NavigationWidgetPrivate::s_instanceLeft = nullptr; -NavigationWidget *NavigationWidgetPrivate::s_instanceRight = nullptr; -ActivationsMap NavigationWidgetPrivate::s_activationsMap; - NavigationWidget::NavigationWidget(QAction *toggleSideBarAction, Side side) : d(new NavigationWidgetPrivate(toggleSideBarAction, side)) { @@ -189,9 +186,9 @@ NavigationWidget::NavigationWidget(QAction *toggleSideBarAction, Side side) : setOrientation(Qt::Vertical); if (side == Side::Left) - NavigationWidgetPrivate::s_instanceLeft = this; + s_instanceLeft = this; else - NavigationWidgetPrivate::s_instanceRight = this; + s_instanceRight = this; connect(ModeManager::instance(), &ModeManager::currentMainWindowChanged, @@ -202,27 +199,21 @@ NavigationWidget::NavigationWidget(QAction *toggleSideBarAction, Side side) : NavigationWidget::~NavigationWidget() { if (d->m_side == Side::Left) - NavigationWidgetPrivate::s_instanceLeft = nullptr; + s_instanceLeft = nullptr; else - NavigationWidgetPrivate::s_instanceRight = nullptr; - + s_instanceRight = nullptr; delete d; } -NavigationWidget *NavigationWidget::instance(Side side) -{ - return side == Side::Left ? NavigationWidgetPrivate::s_instanceLeft - : NavigationWidgetPrivate::s_instanceRight; -} - QWidget *NavigationWidget::activateSubWidget(Id factoryId, Side fallbackSide) { - NavigationWidget *navigationWidget = NavigationWidget::instance(fallbackSide); + NavigationWidget *navigationWidget = instance(fallbackSide); int preferredPosition = -1; - if (NavigationWidgetPrivate::s_activationsMap.contains(factoryId)) { - const ActivationInfo info = NavigationWidgetPrivate::s_activationsMap.value(factoryId); - navigationWidget = NavigationWidget::instance(info.side); + // TODO: Use find + if (s_activationsMap.contains(factoryId)) { + const ActivationInfo info = s_activationsMap.value(factoryId); + navigationWidget = instance(info.side); preferredPosition = info.position; } @@ -333,7 +324,7 @@ Internal::NavigationSubWidget *NavigationWidget::insertSubItem(int position, for (int pos = position + 1; pos < d->m_subWidgets.size(); ++pos) { Internal::NavigationSubWidget *nsw = d->m_subWidgets.at(pos); nsw->setPosition(pos + 1); - NavigationWidgetPrivate::updateActivationsMap(nsw->factory()->id(), {d->m_side, pos + 1}); + addActivationInfo(nsw->factory()->id(), {d->m_side, pos + 1}); } if (!d->m_subWidgets.isEmpty()) // Make all icons the bottom icon @@ -348,14 +339,14 @@ Internal::NavigationSubWidget *NavigationWidget::insertSubItem(int position, }); connect(nsw, &Internal::NavigationSubWidget::factoryIndexChanged, this, [this, nsw] { const Id factoryId = nsw->factory()->id(); - NavigationWidgetPrivate::updateActivationsMap(factoryId, {d->m_side, nsw->position()}); + addActivationInfo(factoryId, {d->m_side, nsw->position()}); }); insertWidget(position, nsw); d->m_subWidgets.insert(position, nsw); d->m_subWidgets.at(0)->setCloseIcon(closeIconForSide(d->m_side, d->m_subWidgets.size())); if (updateActivationsMap) - NavigationWidgetPrivate::updateActivationsMap(nsw->factory()->id(), {d->m_side, position}); + addActivationInfo(nsw->factory()->id(), {d->m_side, position}); return nsw; } @@ -392,7 +383,7 @@ void NavigationWidget::closeSubWidget(Internal::NavigationSubWidget *subWidget) for (int pos = position + 1; pos < d->m_subWidgets.size(); ++pos) { Internal::NavigationSubWidget *nsw = d->m_subWidgets.at(pos); nsw->setPosition(pos - 1); - NavigationWidgetPrivate::updateActivationsMap(nsw->factory()->id(), {d->m_side, pos - 1}); + addActivationInfo(nsw->factory()->id(), {d->m_side, pos - 1}); } d->m_subWidgets.removeOne(subWidget); @@ -460,9 +451,9 @@ void NavigationWidget::saveSettings(QtcSettings *settings) settings->setValue(settingsKey("Width"), d->m_width); const Key activationKey = "ActivationPosition."; - const auto keys = NavigationWidgetPrivate::s_activationsMap.keys(); + const auto keys = s_activationsMap.keys(); for (const auto &factoryId : keys) { - const auto &info = NavigationWidgetPrivate::s_activationsMap[factoryId]; + const auto &info = s_activationsMap[factoryId]; const Utils::Key key = settingsKey(activationKey + factoryId.name()); if (info.side == d->m_side) settings->setValue(key, info.position); @@ -543,7 +534,7 @@ void NavigationWidget::restoreSettings(QtcSettings *settings) int position = settings->value(keyFromString(key)).toInt(); Id factoryId = Id::fromString(key.mid(activationKey.length())); - NavigationWidgetPrivate::updateActivationsMap(factoryId, {d->m_side, position}); + addActivationInfo(factoryId, {d->m_side, position}); } settings->endGroup(); } diff --git a/src/plugins/coreplugin/navigationwidget.h b/src/plugins/coreplugin/navigationwidget.h index c043456b6ae..1d49a546183 100644 --- a/src/plugins/coreplugin/navigationwidget.h +++ b/src/plugins/coreplugin/navigationwidget.h @@ -80,7 +80,6 @@ public: bool isShown() const; void setShown(bool b); - static NavigationWidget *instance(Side side); static QWidget *activateSubWidget(Utils::Id factoryId, Side fallbackSide); int storedWidth();