From ec99782105d90d054cdbbf27f4005ecd52a368de Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 9 Nov 2023 17:09:54 +0100 Subject: [PATCH] Revert "ProjectExplorer: Use more Ids instead of Kit in KitModel" This reverts commit 05e7308c08301b5bda20334cb1f3f71d2d7c0e85. Currently kit cloning crashes, and the trivial fix loses re-foucssing on the newly cloned kit. Change-Id: Id34d4430f97ab5825d5203096fbd1551464f80cb Reviewed-by: Christian Kandeler --- .../projectexplorer/kitoptionspage.cpp | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/plugins/projectexplorer/kitoptionspage.cpp b/src/plugins/projectexplorer/kitoptionspage.cpp index 87b0465c7ab..e3c84549ca8 100644 --- a/src/plugins/projectexplorer/kitoptionspage.cpp +++ b/src/plugins/projectexplorer/kitoptionspage.cpp @@ -176,6 +176,7 @@ public: Kit *kit(const QModelIndex &); KitNode *kitNode(const QModelIndex &); + QModelIndex indexOf(Kit *k) const; QModelIndex indexOf(Id kitId) const; void setDefaultKit(const QModelIndex &index); @@ -186,7 +187,7 @@ public: void apply(); void markForRemoval(Kit *k); - Id markForAddition(Kit *baseKit); + Kit *markForAddition(Kit *baseKit); void updateVisibility(); @@ -263,6 +264,12 @@ QModelIndex KitModel::indexOf(Id kitId) const return n ? indexForItem(n) : QModelIndex(); } +QModelIndex KitModel::indexOf(Kit *k) const +{ + KitNode *n = findWorkingCopy(k); + return n ? indexForItem(n) : QModelIndex(); +} + void KitModel::setDefaultKit(const QModelIndex &index) { if (KitNode *n = kitNode(index)) @@ -341,7 +348,7 @@ void KitModel::markForRemoval(Kit *k) validateKitNames(); } -Id KitModel::markForAddition(Kit *baseKit) +Kit *KitModel::markForAddition(Kit *baseKit) { const QString newName = newKitName(baseKit ? baseKit->unexpandedDisplayName() : QString()); KitNode *node = createNode(nullptr); @@ -360,7 +367,7 @@ Id KitModel::markForAddition(Kit *baseKit) if (!m_defaultNode) setDefaultNode(node); - return k->id(); + return k; } void KitModel::updateVisibility() @@ -618,9 +625,9 @@ void KitOptionsPageWidget::kitSelectionChanged() void KitOptionsPageWidget::addNewKit() { - Id kitId = m_model->markForAddition(nullptr); + Kit *k = m_model->markForAddition(nullptr); - QModelIndex newIdx = m_sortModel->mapFromSource(m_model->indexOf(kitId)); + QModelIndex newIdx = m_sortModel->mapFromSource(m_model->indexOf(k)); m_selectionModel->select(newIdx, QItemSelectionModel::Clear | QItemSelectionModel::SelectCurrent @@ -641,8 +648,8 @@ void KitOptionsPageWidget::cloneKit() if (!current) return; - Id kitId = m_model->markForAddition(current); - QModelIndex newIdx = m_sortModel->mapFromSource(m_model->indexOf(kitId)); + Kit *k = m_model->markForAddition(current); + QModelIndex newIdx = m_sortModel->mapFromSource(m_model->indexOf(k)); m_kitsView->scrollTo(newIdx); m_selectionModel->select(newIdx, QItemSelectionModel::Clear