summaryrefslogtreecommitdiff
path: root/src/plugins/debugger/debuggeritemmanager.cpp
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2017-05-12 14:30:08 +0200
committerhjk <hjk@qt.io>2017-05-12 12:41:21 +0000
commit69521da36e21795aa0d115f3b6cf53d7a499b013 (patch)
tree69a883ff5d79d3c11be1e407f2db4c349dc0ef96 /src/plugins/debugger/debuggeritemmanager.cpp
parent47198b44e400aa8ef447e6e750704fe9be5bafa3 (diff)
downloadqt-creator-69521da36e21795aa0d115f3b6cf53d7a499b013.tar.gz
Debugger: Fix crash on second options opening
Change-Id: I6ca5d860e9c2a82e7032873a0a2c939ab2f4c69f Task-number: QTCREATORBUG-18189 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Diffstat (limited to 'src/plugins/debugger/debuggeritemmanager.cpp')
-rw-r--r--src/plugins/debugger/debuggeritemmanager.cpp26
1 files changed, 17 insertions, 9 deletions
diff --git a/src/plugins/debugger/debuggeritemmanager.cpp b/src/plugins/debugger/debuggeritemmanager.cpp
index 0b473fd93e..6bdf2ca980 100644
--- a/src/plugins/debugger/debuggeritemmanager.cpp
+++ b/src/plugins/debugger/debuggeritemmanager.cpp
@@ -197,8 +197,9 @@ public:
void updateDebugger(const DebuggerItem &item);
void apply();
void cancel();
+ DebuggerTreeItem *currentTreeItem();
- DebuggerTreeItem *m_currentTreeItem = nullptr;
+ QPersistentModelIndex m_currentIndex;
};
template <class Predicate>
@@ -287,8 +288,13 @@ void DebuggerItemModel::cancel()
void DebuggerItemModel::setCurrentIndex(const QModelIndex &index)
{
- TreeItem *treeItem = itemForIndex(index);
- m_currentTreeItem = treeItem && treeItem->level() == 2 ? static_cast<DebuggerTreeItem *>(treeItem) : 0;
+ m_currentIndex = index;
+}
+
+DebuggerTreeItem *DebuggerItemModel::currentTreeItem()
+{
+ TreeItem *treeItem = itemForIndex(m_currentIndex);
+ return treeItem && treeItem->level() == 2 ? static_cast<DebuggerTreeItem *>(treeItem) : nullptr;
}
DebuggerItemConfigWidget::DebuggerItemConfigWidget()
@@ -514,10 +520,11 @@ public:
void DebuggerConfigWidget::cloneDebugger()
{
- if (!d->m_model->m_currentTreeItem)
+ DebuggerTreeItem *treeItem = d->m_model->currentTreeItem();
+ if (!treeItem)
return;
- DebuggerItem *item = &d->m_model->m_currentTreeItem->m_item;
+ DebuggerItem *item = &treeItem->m_item;
DebuggerItem newItem;
newItem.createId();
newItem.setCommand(item->command());
@@ -542,9 +549,10 @@ void DebuggerConfigWidget::addDebugger()
void DebuggerConfigWidget::removeDebugger()
{
- QTC_ASSERT(d->m_model->m_currentTreeItem, return);
- d->m_model->m_currentTreeItem->m_removed = !d->m_model->m_currentTreeItem->m_removed;
- d->m_model->m_currentTreeItem->update();
+ DebuggerTreeItem *treeItem = d->m_model->currentTreeItem();
+ QTC_ASSERT(treeItem, return);
+ treeItem->m_removed = !treeItem->m_removed;
+ treeItem->update();
updateButtons();
}
@@ -556,7 +564,7 @@ void DebuggerConfigWidget::currentDebuggerChanged(const QModelIndex &newCurrent)
void DebuggerConfigWidget::updateButtons()
{
- DebuggerTreeItem *titem = d->m_model->m_currentTreeItem;
+ DebuggerTreeItem *titem = d->m_model->currentTreeItem();
DebuggerItem *item = titem ? &titem->m_item : nullptr;
m_itemConfigWidget->load(item);