From 358ecee5e8dbb84f279493b142187232b0d1fe85 Mon Sep 17 00:00:00 2001 From: Artem Sokolovskii Date: Fri, 13 Oct 2023 17:05:02 +0200 Subject: [PATCH] DAP: Remember current engine after restart Change-Id: I13a6c559a3a5bb9f40c95ef3932d796776cd26ce Reviewed-by: hjk --- src/plugins/debugger/enginemanager.cpp | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/plugins/debugger/enginemanager.cpp b/src/plugins/debugger/enginemanager.cpp index 4656f15cb30..a0f515897c4 100644 --- a/src/plugins/debugger/enginemanager.cpp +++ b/src/plugins/debugger/enginemanager.cpp @@ -30,6 +30,7 @@ using namespace Utils; namespace Debugger::Internal { const bool hideSwitcherUnlessNeeded = false; +const char INDEX_ID[] = "Debugger/Debugger.SelectedEngineIndex"; #if 0 SnapshotData::SnapshotData() @@ -125,13 +126,15 @@ class ModelChooser : public QObject Q_OBJECT public: ModelChooser(QAbstractItemModel *sourceModel, - const QString &enginType, + const QString &engineType, QObject *parent = nullptr) : QObject(parent) , m_engineChooser(new QComboBox()) - , m_proxyModel(new EngineTypeFilterProxyModel(enginType)) + , m_proxyModel(new EngineTypeFilterProxyModel(engineType)) , m_sourceModel(sourceModel) - , m_enginType(enginType) + , m_enginType(engineType) + , m_key(engineType.isEmpty() ? Utils::Key(INDEX_ID) + "." + engineType.toUtf8() + : Utils::Key(INDEX_ID)) { m_proxyModel->setSourceModel(sourceModel); @@ -144,6 +147,7 @@ public: QModelIndex sourceIndex = m_proxyModel->mapToSource(m_proxyModel->index(index, 0)); emit activated(sourceIndex.row()); m_lastActivatedIndex = sourceIndex.row(); + ICore::settings()->setValue(m_key, m_lastActivatedIndex); }); connect(m_proxyModel, &QAbstractItemModel::rowsRemoved, this, [this] { @@ -161,6 +165,13 @@ public: QAbstractItemModel *model() const { return m_proxyModel; } const QString &engineType() const { return m_enginType; } + void restoreIndex() + { + m_lastActivatedIndex = ICore::settings()->value(m_key, 0).toInt(); + if (m_lastActivatedIndex <= m_engineChooser->count()) + setCurrentIndex(m_lastActivatedIndex); + } + void setCurrentIndex(int index) { const QModelIndex sourceIndex = m_proxyModel->mapFromSource(m_sourceModel->index(index, 0)); @@ -193,6 +204,7 @@ private: QPointer m_proxyModel; QAbstractItemModel *m_sourceModel; QString m_enginType; + const Utils::Key m_key; int m_lastActivatedIndex = -1; }; @@ -570,6 +582,8 @@ QString EngineManager::registerDefaultPerspective(const QString &name, engineItem->m_perspective.type = type; engineItem->m_perspective.id = id; d->m_engineModel.rootItem()->appendChild(engineItem); + d->m_engineDAPChooser->restoreIndex(); + d->m_engineChooser->restoreIndex(); return QString::number(d->m_engineModel.rootItem()->childCount()); }