diff options
author | hjk <hjk@qt.io> | 2017-05-12 14:30:08 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2017-05-12 12:41:21 +0000 |
commit | 69521da36e21795aa0d115f3b6cf53d7a499b013 (patch) | |
tree | 69a883ff5d79d3c11be1e407f2db4c349dc0ef96 /src/plugins/debugger/debuggeritemmanager.cpp | |
parent | 47198b44e400aa8ef447e6e750704fe9be5bafa3 (diff) | |
download | qt-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.cpp | 26 |
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); |