forked from qt-creator/qt-creator
Debugger: Fix editing breakpoints via breakpoints view
As the comment for the 'm_parameters' member in the 'BreakpointItem' class says, that member is supposed to hold the "Parameters acknowledged by engine", which the parameters newly set in the dialog are not yet at this point in time. Therefore, if a global breakpoint exists, apply the new parameters there, so they are considered as pending changes (also returned by 'Breakpoint::requestedParameters') when 'BreakHandler::requestBreakpointUpdate' is called a few lines below, and new values get applied properly. Task-number: QTCREATORBUG-25035 Change-Id: I8bfd9123785ee911ff180d8311fa2559b55be580 Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -1724,7 +1724,11 @@ void BreakHandler::editBreakpoint(const Breakpoint &bp, QWidget *parent)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (params != bp->requestedParameters()) {
|
if (params != bp->requestedParameters()) {
|
||||||
|
if (GlobalBreakpoint gbp = bp->globalBreakpoint()) {
|
||||||
|
gbp->setParameters(params);
|
||||||
|
} else {
|
||||||
bp->setParameters(params);
|
bp->setParameters(params);
|
||||||
|
}
|
||||||
updateDisassemblerMarker(bp);
|
updateDisassemblerMarker(bp);
|
||||||
bp->updateMarker();
|
bp->updateMarker();
|
||||||
bp->update();
|
bp->update();
|
||||||
@@ -1761,9 +1765,18 @@ void BreakHandler::editBreakpoints(const Breakpoints &bps, QWidget *parent)
|
|||||||
|
|
||||||
for (Breakpoint bp : bps) {
|
for (Breakpoint bp : bps) {
|
||||||
if (bp) {
|
if (bp) {
|
||||||
|
if (GlobalBreakpoint gbp = bp->globalBreakpoint()) {
|
||||||
|
BreakpointParameters params = bp->requestedParameters();
|
||||||
|
params.condition = newCondition;
|
||||||
|
params.ignoreCount = newIgnoreCount;
|
||||||
|
params.threadSpec = newThreadSpec;
|
||||||
|
gbp->setParameters(params);
|
||||||
|
} else {
|
||||||
bp->m_parameters.condition = newCondition;
|
bp->m_parameters.condition = newCondition;
|
||||||
bp->m_parameters.ignoreCount = newIgnoreCount;
|
bp->m_parameters.ignoreCount = newIgnoreCount;
|
||||||
bp->m_parameters.threadSpec = newThreadSpec;
|
bp->m_parameters.threadSpec = newThreadSpec;
|
||||||
|
}
|
||||||
|
|
||||||
if (bp->m_state != BreakpointNew)
|
if (bp->m_state != BreakpointNew)
|
||||||
requestBreakpointUpdate(bp);
|
requestBreakpointUpdate(bp);
|
||||||
}
|
}
|
||||||
@@ -2312,6 +2325,16 @@ void GlobalBreakpointItem::setEnabled(bool enabled, bool descend)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GlobalBreakpointItem::setParameters(const BreakpointParameters ¶ms)
|
||||||
|
{
|
||||||
|
if (m_params != params) {
|
||||||
|
m_params = params;
|
||||||
|
if (m_marker)
|
||||||
|
m_marker->updateMarker();
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void GlobalBreakpointItem::destroyMarker()
|
void GlobalBreakpointItem::destroyMarker()
|
||||||
{
|
{
|
||||||
delete m_marker;
|
delete m_marker;
|
||||||
|
@@ -86,6 +86,7 @@ public:
|
|||||||
|
|
||||||
bool isEnabled() const { return m_params.enabled; }
|
bool isEnabled() const { return m_params.enabled; }
|
||||||
void setEnabled(bool enabled, bool descend = true);
|
void setEnabled(bool enabled, bool descend = true);
|
||||||
|
void setParameters(const BreakpointParameters ¶ms);
|
||||||
|
|
||||||
const BreakpointParameters &requestedParameters() const { return m_params; }
|
const BreakpointParameters &requestedParameters() const { return m_params; }
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user