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"),