forked from qt-creator/qt-creator
Debugger: Fix crash on second options opening
Change-Id: I6ca5d860e9c2a82e7032873a0a2c939ab2f4c69f Task-number: QTCREATORBUG-18189 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -197,8 +197,9 @@ public:
|
|||||||
void updateDebugger(const DebuggerItem &item);
|
void updateDebugger(const DebuggerItem &item);
|
||||||
void apply();
|
void apply();
|
||||||
void cancel();
|
void cancel();
|
||||||
|
DebuggerTreeItem *currentTreeItem();
|
||||||
|
|
||||||
DebuggerTreeItem *m_currentTreeItem = nullptr;
|
QPersistentModelIndex m_currentIndex;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <class Predicate>
|
template <class Predicate>
|
||||||
@@ -287,8 +288,13 @@ void DebuggerItemModel::cancel()
|
|||||||
|
|
||||||
void DebuggerItemModel::setCurrentIndex(const QModelIndex &index)
|
void DebuggerItemModel::setCurrentIndex(const QModelIndex &index)
|
||||||
{
|
{
|
||||||
TreeItem *treeItem = itemForIndex(index);
|
m_currentIndex = index;
|
||||||
m_currentTreeItem = treeItem && treeItem->level() == 2 ? static_cast<DebuggerTreeItem *>(treeItem) : 0;
|
}
|
||||||
|
|
||||||
|
DebuggerTreeItem *DebuggerItemModel::currentTreeItem()
|
||||||
|
{
|
||||||
|
TreeItem *treeItem = itemForIndex(m_currentIndex);
|
||||||
|
return treeItem && treeItem->level() == 2 ? static_cast<DebuggerTreeItem *>(treeItem) : nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
DebuggerItemConfigWidget::DebuggerItemConfigWidget()
|
DebuggerItemConfigWidget::DebuggerItemConfigWidget()
|
||||||
@@ -514,10 +520,11 @@ public:
|
|||||||
|
|
||||||
void DebuggerConfigWidget::cloneDebugger()
|
void DebuggerConfigWidget::cloneDebugger()
|
||||||
{
|
{
|
||||||
if (!d->m_model->m_currentTreeItem)
|
DebuggerTreeItem *treeItem = d->m_model->currentTreeItem();
|
||||||
|
if (!treeItem)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
DebuggerItem *item = &d->m_model->m_currentTreeItem->m_item;
|
DebuggerItem *item = &treeItem->m_item;
|
||||||
DebuggerItem newItem;
|
DebuggerItem newItem;
|
||||||
newItem.createId();
|
newItem.createId();
|
||||||
newItem.setCommand(item->command());
|
newItem.setCommand(item->command());
|
||||||
@@ -542,9 +549,10 @@ void DebuggerConfigWidget::addDebugger()
|
|||||||
|
|
||||||
void DebuggerConfigWidget::removeDebugger()
|
void DebuggerConfigWidget::removeDebugger()
|
||||||
{
|
{
|
||||||
QTC_ASSERT(d->m_model->m_currentTreeItem, return);
|
DebuggerTreeItem *treeItem = d->m_model->currentTreeItem();
|
||||||
d->m_model->m_currentTreeItem->m_removed = !d->m_model->m_currentTreeItem->m_removed;
|
QTC_ASSERT(treeItem, return);
|
||||||
d->m_model->m_currentTreeItem->update();
|
treeItem->m_removed = !treeItem->m_removed;
|
||||||
|
treeItem->update();
|
||||||
updateButtons();
|
updateButtons();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -556,7 +564,7 @@ void DebuggerConfigWidget::currentDebuggerChanged(const QModelIndex &newCurrent)
|
|||||||
|
|
||||||
void DebuggerConfigWidget::updateButtons()
|
void DebuggerConfigWidget::updateButtons()
|
||||||
{
|
{
|
||||||
DebuggerTreeItem *titem = d->m_model->m_currentTreeItem;
|
DebuggerTreeItem *titem = d->m_model->currentTreeItem();
|
||||||
DebuggerItem *item = titem ? &titem->m_item : nullptr;
|
DebuggerItem *item = titem ? &titem->m_item : nullptr;
|
||||||
|
|
||||||
m_itemConfigWidget->load(item);
|
m_itemConfigWidget->load(item);
|
||||||
|
Reference in New Issue
Block a user