From 2e86420052d18a3ada261f6610b491ac719aef03 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 19 Mar 2024 12:54:07 +0100 Subject: [PATCH] Debugger: Add context menu entries to enable/disable all breakpoints Fixes: QTCREATORBUG-30564 Change-Id: I8b0458eed859c23f1ef9d40c0ad7cbe6b61ecf90 Reviewed-by: Marcus Tillmanns --- src/plugins/debugger/breakhandler.cpp | 58 +++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/src/plugins/debugger/breakhandler.cpp b/src/plugins/debugger/breakhandler.cpp index a3f6cc2f11c..3d907d20be6 100644 --- a/src/plugins/debugger/breakhandler.cpp +++ b/src/plugins/debugger/breakhandler.cpp @@ -1637,6 +1637,8 @@ bool BreakHandler::contextMenuEvent(const ItemViewEvent &ev) // bp.setThreadSpec(threadId); // }); + menu->addSeparator(); + addAction(this, menu, selectedBreakpoints.size() > 1 ? breakpointsEnabled ? Tr::tr("Disable Selected Breakpoints") : Tr::tr("Enable Selected Breakpoints") @@ -1651,6 +1653,37 @@ bool BreakHandler::contextMenuEvent(const ItemViewEvent &ev) } ); + QList enabledBreakpoints; + QList disabledBreakpoints; + forItemsAtLevel<1>([&enabledBreakpoints, &disabledBreakpoints](Breakpoint bp) { + if (bp) { + if (bp->isEnabled()) + enabledBreakpoints.append(bp); + else + disabledBreakpoints.append(bp); + } + }); + + addAction(this, menu, Tr::tr("Disable All Breakpoints"), + !enabledBreakpoints.isEmpty(), + [this, enabledBreakpoints] { + for (Breakpoint bp : enabledBreakpoints) { + if (GlobalBreakpoint gbp = bp->globalBreakpoint()) + gbp->setEnabled(false, false); + requestBreakpointEnabling(bp, false); + } + }); + + addAction(this, menu, Tr::tr("Enable All Breakpoints"), + !disabledBreakpoints.isEmpty(), + [this, disabledBreakpoints] { + for (Breakpoint bp : disabledBreakpoints) { + if (GlobalBreakpoint gbp = bp->globalBreakpoint()) + gbp->setEnabled(true, false); + requestBreakpointEnabling(bp, true); + } + }); + addAction(this, menu, selectedLocations.size() > 1 ? locationsEnabled ? Tr::tr("Disable Selected Locations") : Tr::tr("Enable Selected Locations") @@ -2661,6 +2694,31 @@ bool BreakpointManager::contextMenuEvent(const ItemViewEvent &ev) } ); + QList enabledBreakpoints; + QList disabledBreakpoints; + forItemsAtLevel<1>([&enabledBreakpoints, &disabledBreakpoints](GlobalBreakpoint gbp) { + if (gbp) { + if (gbp->isEnabled()) + enabledBreakpoints.append(gbp); + else + disabledBreakpoints.append(gbp); + } + }); + + addAction(this, menu, Tr::tr("Disable All Breakpoints"), + !enabledBreakpoints.isEmpty(), + [enabledBreakpoints] { + for (GlobalBreakpoint gbp : enabledBreakpoints) + gbp->setEnabled(false); + }); + + addAction(this, menu, Tr::tr("Enable All Breakpoints"), + !disabledBreakpoints.isEmpty(), + [disabledBreakpoints] { + for (GlobalBreakpoint gbp : disabledBreakpoints) + gbp->setEnabled(true); + }); + menu->addSeparator(); addAction(this, menu, Tr::tr("Delete All Breakpoints"),