diff --git a/src/plugins/debugger/breakhandler.cpp b/src/plugins/debugger/breakhandler.cpp
index f393bcff4ad..dece318182b 100644
--- a/src/plugins/debugger/breakhandler.cpp
+++ b/src/plugins/debugger/breakhandler.cpp
@@ -1680,8 +1680,7 @@ bool BreakHandler::contextMenuEvent(const ItemViewEvent &ev)
menu->addSeparator();
menu->addAction(action(UseToolTipsInBreakpointsView));
- menu->addAction(action(UseAddressInBreakpointsView));
- menu->addSeparator();
+ Internal::addHideColumnActions(menu, ev.view());
menu->addAction(action(SettingsDialog));
menu->popup(ev.globalPos());
@@ -2669,8 +2668,7 @@ bool BreakpointManager::contextMenuEvent(const ItemViewEvent &ev)
menu->addSeparator();
menu->addAction(action(UseToolTipsInBreakpointsView));
- menu->addAction(action(UseAddressInBreakpointsView));
- menu->addSeparator();
+ Internal::addHideColumnActions(menu, ev.view());
menu->addAction(action(SettingsDialog));
menu->popup(ev.globalPos());
diff --git a/src/plugins/debugger/commonoptionspage.cpp b/src/plugins/debugger/commonoptionspage.cpp
index de39258df10..52007a36365 100644
--- a/src/plugins/debugger/commonoptionspage.cpp
+++ b/src/plugins/debugger/commonoptionspage.cpp
@@ -228,8 +228,6 @@ QWidget *CommonOptionsPage::widget()
m_group.insert(action(AlwaysAdjustColumnWidths), nullptr);
m_group.insert(action(UseToolTipsInBreakpointsView), nullptr);
m_group.insert(action(UseToolTipsInStackView), nullptr);
- m_group.insert(action(UseAddressInBreakpointsView), nullptr);
- m_group.insert(action(UseAddressInStackView), nullptr);
m_group.insert(action(MaximalStackDepth), spinBoxMaximalStackDepth);
m_group.insert(action(ShowStdNamespace), nullptr);
m_group.insert(action(ShowQtNamespace), nullptr);
diff --git a/src/plugins/debugger/debuggeractions.cpp b/src/plugins/debugger/debuggeractions.cpp
index ace0f759dc2..49ebc219e50 100644
--- a/src/plugins/debugger/debuggeractions.cpp
+++ b/src/plugins/debugger/debuggeractions.cpp
@@ -541,24 +541,6 @@ DebuggerSettings::DebuggerSettings()
item->setDefaultValue(true);
insertItem(UseToolTipsInStackView, item);
- item = new SavedAction;
- item->setSettingsKey(debugModeGroup, "UseAddressInBreakpointsView");
- item->setText(tr("Show Address Data in Breakpoints View when Debugging"));
- item->setToolTip(tr("
Checking this will show a column with address "
- "information in the breakpoint view during debugging."));
- item->setCheckable(true);
- item->setDefaultValue(false);
- insertItem(UseAddressInBreakpointsView, item);
-
- item = new SavedAction;
- item->setSettingsKey(debugModeGroup, "UseAddressInStackView");
- item->setText(tr("Show Address Data in Stack View when Debugging"));
- item->setToolTip(tr("
Checking this will show a column with address "
- "information in the stack view during debugging."));
- item->setCheckable(true);
- item->setDefaultValue(false);
- insertItem(UseAddressInStackView, item);
-
item = new SavedAction;
item->setSettingsKey(debugModeGroup, "SkipKnownFrames");
item->setText(tr("Skip Known Frames"));
diff --git a/src/plugins/debugger/debuggeractions.h b/src/plugins/debugger/debuggeractions.h
index 12fcae4e78f..05d9855b34d 100644
--- a/src/plugins/debugger/debuggeractions.h
+++ b/src/plugins/debugger/debuggeractions.h
@@ -101,8 +101,6 @@ enum DebuggerActionCode
UseToolTipsInLocalsView,
UseToolTipsInBreakpointsView,
UseToolTipsInStackView,
- UseAddressInBreakpointsView,
- UseAddressInStackView,
RegisterForPostMortem,
AlwaysAdjustColumnWidths,
diff --git a/src/plugins/debugger/debuggercore.h b/src/plugins/debugger/debuggercore.h
index af0de1c25b9..d3672e78012 100644
--- a/src/plugins/debugger/debuggercore.h
+++ b/src/plugins/debugger/debuggercore.h
@@ -77,6 +77,9 @@ QAction *addAction(QMenu *menu, const QString &d1, const QString &d2, bool on,
QAction *addCheckableAction(QMenu *menu, const QString &display, bool on, bool checked,
const std::function &onTriggered);
+void addHideColumnActions(QMenu *menu, QWidget *widget);
+
+
// Qt's various build paths for unpatched versions
QStringList qtBuildPaths();
diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp
index a90c569c6dc..e0f00b883f1 100644
--- a/src/plugins/debugger/debuggerengine.cpp
+++ b/src/plugins/debugger/debuggerengine.cpp
@@ -731,8 +731,6 @@ void DebuggerEnginePrivate::setupViews()
m_breakView->setWindowIcon(Icons::BREAKPOINTS.icon());
m_breakView->setSelectionMode(QAbstractItemView::ExtendedSelection);
m_breakView->setSpanColumn(BreakpointFunctionColumn);
- connect(action(UseAddressInBreakpointsView), &QAction::toggled,
- this, [this](bool on) { m_breakView->setColumnHidden(BreakpointAddressColumn, !on); });
m_breakView->setSettings(settings, "Debugger.BreakWindow");
m_breakView->setModel(m_breakHandler.model());
m_breakView->setRootIsDecorated(true);
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index d75389764a6..a394e7b76da 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -460,6 +460,26 @@ QAction *addCheckableAction(QMenu *menu, const QString &display, bool on, bool c
return act;
}
+void addHideColumnActions(QMenu *menu, QWidget *widget)
+{
+ QTreeView *view = qobject_cast(widget);
+ QTC_ASSERT(view, return);
+ QAbstractItemModel *model = view->model();
+ QTC_ASSERT(model, return);
+ const int columns = model->columnCount();
+ menu->addSeparator();
+ for (int i = 0; i < columns; ++i) {
+ QString columnName = model->headerData(i, Qt::Horizontal).toString();
+ QAction *act = menu->addAction(DebuggerPlugin::tr("Show %1 Column").arg(columnName));
+ act->setCheckable(true);
+ act->setChecked(!view->isColumnHidden(i));
+ QObject::connect(act, &QAction::toggled, menu, [view, i](bool on) {
+ view->setColumnHidden(i, !on);
+ });
+ }
+ menu->addSeparator();
+}
+
///////////////////////////////////////////////////////////////////////
//
// DebugMode
diff --git a/src/plugins/debugger/moduleshandler.cpp b/src/plugins/debugger/moduleshandler.cpp
index 4fd1e40669d..dda92488c39 100644
--- a/src/plugins/debugger/moduleshandler.cpp
+++ b/src/plugins/debugger/moduleshandler.cpp
@@ -223,7 +223,7 @@ bool ModulesModel::contextMenuEvent(const ItemViewEvent &ev)
canShowSymbols && moduleNameValid,
[this, modulePath] { engine->requestModuleSections(modulePath); });
- menu->addSeparator();
+ Internal::addHideColumnActions(menu, ev.view());
menu->addAction(action(SettingsDialog));
menu->popup(ev.globalPos());
diff --git a/src/plugins/debugger/peripheralregisterhandler.cpp b/src/plugins/debugger/peripheralregisterhandler.cpp
index 1603faf3dc9..0e0f035a979 100644
--- a/src/plugins/debugger/peripheralregisterhandler.cpp
+++ b/src/plugins/debugger/peripheralregisterhandler.cpp
@@ -772,7 +772,7 @@ bool PeripheralRegisterHandler::contextMenuEvent(const ItemViewEvent &ev)
menu->addMenu(fmtMenu);
}
- menu->addSeparator();
+ Internal::addHideColumnActions(menu, ev.view());
menu->addAction(action(SettingsDialog));
menu->popup(ev.globalPos());
return true;
diff --git a/src/plugins/debugger/registerhandler.cpp b/src/plugins/debugger/registerhandler.cpp
index d35abc5c65a..0553efd82a1 100644
--- a/src/plugins/debugger/registerhandler.cpp
+++ b/src/plugins/debugger/registerhandler.cpp
@@ -756,7 +756,7 @@ bool RegisterHandler::contextMenuEvent(const ItemViewEvent &ev)
addFormatAction(tr("Octal"), OctalFormat);
addFormatAction(tr("Binary"), BinaryFormat);
- menu->addSeparator();
+ Internal::addHideColumnActions(menu, ev.view());
menu->addAction(action(SettingsDialog));
menu->popup(ev.globalPos());
return true;
diff --git a/src/plugins/debugger/sourcefileshandler.cpp b/src/plugins/debugger/sourcefileshandler.cpp
index eec9a4cca58..16873197768 100644
--- a/src/plugins/debugger/sourcefileshandler.cpp
+++ b/src/plugins/debugger/sourcefileshandler.cpp
@@ -137,7 +137,7 @@ bool SourceFilesHandler::setData(const QModelIndex &idx, const QVariant &data, i
addAction(tr("Open File \"%1\"").arg(name), true,
[this, name] { m_engine->gotoLocation(name); });
- menu->addSeparator();
+ Internal::addHideColumnActions(menu, ev.view());
menu->addAction(action(SettingsDialog));
menu->popup(ev.globalPos());
return true;
diff --git a/src/plugins/debugger/stackhandler.cpp b/src/plugins/debugger/stackhandler.cpp
index ea26e929995..7f20afaeef3 100644
--- a/src/plugins/debugger/stackhandler.cpp
+++ b/src/plugins/debugger/stackhandler.cpp
@@ -444,12 +444,9 @@ bool StackHandler::contextMenuEvent(const ItemViewEvent &ev)
[this] { m_engine->loadSymbolsForStack(); });
}
- if (m_engine->hasCapability(MemoryAddressCapability))
- menu->addAction(action(UseAddressInStackView));
-
menu->addSeparator();
menu->addAction(action(UseToolTipsInStackView));
- menu->addSeparator();
+ Internal::addHideColumnActions(menu, ev.view());
menu->addAction(action(SettingsDialog));
menu->popup(ev.globalPos());
return true;
diff --git a/src/plugins/debugger/stackwindow.cpp b/src/plugins/debugger/stackwindow.cpp
index 7ed3da160d2..e810fbec0c4 100644
--- a/src/plugins/debugger/stackwindow.cpp
+++ b/src/plugins/debugger/stackwindow.cpp
@@ -40,10 +40,7 @@ namespace Internal {
StackTreeView::StackTreeView(QWidget *parent)
: BaseTreeView(parent)
{
- connect(action(UseAddressInStackView), &QAction::toggled,
- this, &StackTreeView::showAddressColumn);
setSpanColumn(StackFunctionNameColumn);
- showAddressColumn(false);
}
void StackTreeView::setModel(QAbstractItemModel *model)
@@ -58,9 +55,6 @@ void StackTreeView::setModel(QAbstractItemModel *model)
if (!m_contentsAdjusted)
adjustForContents();
});
-
- // Resize for the current contents if any are available.
- showAddressColumn(action(UseAddressInStackView)->isChecked());
}
void StackTreeView::showAddressColumn(bool on)
diff --git a/src/plugins/debugger/threadshandler.cpp b/src/plugins/debugger/threadshandler.cpp
index 24ec22c693c..c63a6d5469b 100644
--- a/src/plugins/debugger/threadshandler.cpp
+++ b/src/plugins/debugger/threadshandler.cpp
@@ -258,6 +258,7 @@ bool ThreadsHandler::setData(const QModelIndex &idx, const QVariant &data, int r
if (ev.as()) {
auto menu = new QMenu;
+ Internal::addHideColumnActions(menu, ev.view());
menu->addAction(action(SettingsDialog));
menu->popup(ev.globalPos());
return true;
diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp
index e444044fb54..d7c3e11f997 100644
--- a/src/plugins/debugger/watchhandler.cpp
+++ b/src/plugins/debugger/watchhandler.cpp
@@ -1741,7 +1741,7 @@ bool WatchModel::contextMenuEvent(const ItemViewEvent &ev)
menu->addAction(action(UseDynamicType));
menu->addAction(action(SettingsDialog));
- menu->addSeparator();
+ Internal::addHideColumnActions(menu, ev.view());
menu->addAction(action(SettingsDialog));
connect(menu, &QMenu::aboutToHide, menu, &QObject::deleteLater);
menu->popup(ev.globalPos());