forked from qt-creator/qt-creator
Debugger: Re-enable breakpoint property editing before debugger start
Amends 3b5ecac23
.
Task-number: QTCREATORBUG-20970
Change-Id: I8206b16bc17a4d3830b8e517c7e952efabcf4609
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
@@ -1458,7 +1458,7 @@ bool BreakHandler::tryClaimBreakpoint(const GlobalBreakpoint &gbp)
|
|||||||
if (Utils::anyOf(bps, [gbp](const Breakpoint &bp) { return bp->globalBreakpoint() == gbp; }))
|
if (Utils::anyOf(bps, [gbp](const Breakpoint &bp) { return bp->globalBreakpoint() == gbp; }))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!m_engine->acceptsBreakpoint(gbp->parameters())) {
|
if (!m_engine->acceptsBreakpoint(gbp->requestedParameters())) {
|
||||||
m_engine->showMessage(QString("BREAKPOINT %1 IS NOT ACCEPTED BY ENGINE %2")
|
m_engine->showMessage(QString("BREAKPOINT %1 IS NOT ACCEPTED BY ENGINE %2")
|
||||||
.arg(gbp->displayName()).arg(objectName()));
|
.arg(gbp->displayName()).arg(objectName()));
|
||||||
return false;
|
return false;
|
||||||
@@ -1800,7 +1800,7 @@ BreakpointItem::BreakpointItem(const GlobalBreakpoint &gbp)
|
|||||||
: m_globalBreakpoint(gbp)
|
: m_globalBreakpoint(gbp)
|
||||||
{
|
{
|
||||||
if (gbp)
|
if (gbp)
|
||||||
m_requestedParameters = gbp->parameters();
|
m_requestedParameters = gbp->requestedParameters();
|
||||||
}
|
}
|
||||||
|
|
||||||
BreakpointItem::~BreakpointItem()
|
BreakpointItem::~BreakpointItem()
|
||||||
@@ -2554,9 +2554,9 @@ bool BreakpointManager::setData(const QModelIndex &idx, const QVariant &value, i
|
|||||||
|
|
||||||
if (ev.as<QMouseEvent>(QEvent::MouseButtonDblClick)) {
|
if (ev.as<QMouseEvent>(QEvent::MouseButtonDblClick)) {
|
||||||
if (GlobalBreakpoint gbp = findBreakpointByIndex(idx)) {
|
if (GlobalBreakpoint gbp = findBreakpointByIndex(idx)) {
|
||||||
// if (idx.column() >= BreakpointAddressColumn)
|
if (idx.column() >= BreakpointAddressColumn)
|
||||||
// editBreakpoints({gbp}, ev.view());
|
editBreakpoints({gbp}, ev.view());
|
||||||
// else
|
else
|
||||||
gotoLocation(gbp);
|
gotoLocation(gbp);
|
||||||
} else {
|
} else {
|
||||||
BreakpointManager::executeAddBreakpointDialog();
|
BreakpointManager::executeAddBreakpointDialog();
|
||||||
@@ -2575,9 +2575,6 @@ bool BreakpointManager::contextMenuEvent(const ItemViewEvent &ev)
|
|||||||
const GlobalBreakpoints selectedBreakpoints = findBreakpointsByIndex(selectedIndices);
|
const GlobalBreakpoints selectedBreakpoints = findBreakpointsByIndex(selectedIndices);
|
||||||
const bool breakpointsEnabled = selectedBreakpoints.isEmpty() || selectedBreakpoints.at(0)->isEnabled();
|
const bool breakpointsEnabled = selectedBreakpoints.isEmpty() || selectedBreakpoints.at(0)->isEnabled();
|
||||||
|
|
||||||
// QList<LocationItem *> selectedLocations;
|
|
||||||
// const bool locationsEnabled = selectedLocations.isEmpty() || selectedLocations.at(0)->params.enabled;
|
|
||||||
|
|
||||||
auto menu = new QMenu;
|
auto menu = new QMenu;
|
||||||
|
|
||||||
addAction(menu, tr("Add Breakpoint..."), true, &BreakpointManager::executeAddBreakpointDialog);
|
addAction(menu, tr("Add Breakpoint..."), true, &BreakpointManager::executeAddBreakpointDialog);
|
||||||
@@ -2589,9 +2586,9 @@ bool BreakpointManager::contextMenuEvent(const ItemViewEvent &ev)
|
|||||||
gbp->deleteBreakpoint();
|
gbp->deleteBreakpoint();
|
||||||
});
|
});
|
||||||
|
|
||||||
// addAction(menu, tr("Edit Selected Breakpoints..."),
|
addAction(menu, tr("Edit Selected Breakpoints..."),
|
||||||
// !selectedBreakpoints.isEmpty(),
|
!selectedBreakpoints.isEmpty(),
|
||||||
// [this, selectedBreakpoints, ev] { editBreakpoints(selectedBreakpoints, ev.view()); });
|
[this, selectedBreakpoints, ev] { editBreakpoints(selectedBreakpoints, ev.view()); });
|
||||||
|
|
||||||
addAction(menu,
|
addAction(menu,
|
||||||
selectedBreakpoints.size() > 1
|
selectedBreakpoints.size() > 1
|
||||||
@@ -2664,6 +2661,59 @@ void BreakpointManager::executeDeleteAllBreakpointsDialog()
|
|||||||
gbp->deleteBreakpoint();
|
gbp->deleteBreakpoint();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BreakpointManager::editBreakpoint(const GlobalBreakpoint &gbp, QWidget *parent)
|
||||||
|
{
|
||||||
|
QTC_ASSERT(gbp, return);
|
||||||
|
BreakpointParts parts = NoParts;
|
||||||
|
|
||||||
|
BreakpointParameters params = gbp->requestedParameters();
|
||||||
|
BreakpointDialog dialog(~0, parent);
|
||||||
|
if (!dialog.showDialog(¶ms, &parts))
|
||||||
|
return;
|
||||||
|
|
||||||
|
gbp->destroyMarker();
|
||||||
|
gbp->deleteBreakpoint();
|
||||||
|
BreakpointManager::createBreakpoint(params);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BreakpointManager::editBreakpoints(const GlobalBreakpoints &gbps, QWidget *parent)
|
||||||
|
{
|
||||||
|
QTC_ASSERT(!gbps.isEmpty(), return);
|
||||||
|
|
||||||
|
GlobalBreakpoint gbp = gbps.at(0);
|
||||||
|
|
||||||
|
if (gbps.size() == 1) {
|
||||||
|
editBreakpoint(gbp, parent);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// This allows to change properties of multiple breakpoints at a time.
|
||||||
|
QTC_ASSERT(gbp, return);
|
||||||
|
BreakpointParameters params = gbp->requestedParameters();
|
||||||
|
|
||||||
|
MultiBreakPointsDialog dialog(~0, parent);
|
||||||
|
dialog.setCondition(params.condition);
|
||||||
|
dialog.setIgnoreCount(params.ignoreCount);
|
||||||
|
dialog.setThreadSpec(params.threadSpec);
|
||||||
|
|
||||||
|
if (dialog.exec() == QDialog::Rejected)
|
||||||
|
return;
|
||||||
|
|
||||||
|
const QString newCondition = dialog.condition();
|
||||||
|
const int newIgnoreCount = dialog.ignoreCount();
|
||||||
|
const int newThreadSpec = dialog.threadSpec();
|
||||||
|
|
||||||
|
for (GlobalBreakpoint gbp : gbps) {
|
||||||
|
QTC_ASSERT(gbp, continue);
|
||||||
|
BreakpointParameters newParams = gbp->requestedParameters();
|
||||||
|
newParams.condition = newCondition;
|
||||||
|
newParams.ignoreCount = newIgnoreCount;
|
||||||
|
newParams.threadSpec = newThreadSpec;
|
||||||
|
gbp->destroyMarker();
|
||||||
|
gbp->deleteBreakpoint();
|
||||||
|
BreakpointManager::createBreakpoint(newParams);
|
||||||
|
}
|
||||||
|
}
|
||||||
void BreakpointManager::saveSessionData()
|
void BreakpointManager::saveSessionData()
|
||||||
{
|
{
|
||||||
QList<QVariant> list;
|
QList<QVariant> list;
|
||||||
|
@@ -89,7 +89,7 @@ public:
|
|||||||
bool isEnabled() const { return m_params.enabled; }
|
bool isEnabled() const { return m_params.enabled; }
|
||||||
void setEnabled(bool enabled);
|
void setEnabled(bool enabled);
|
||||||
|
|
||||||
const BreakpointParameters ¶meters() const { return m_params; }
|
const BreakpointParameters &requestedParameters() const { return m_params; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
friend class BreakHandler;
|
friend class BreakHandler;
|
||||||
@@ -326,6 +326,8 @@ private:
|
|||||||
|
|
||||||
bool contextMenuEvent(const Utils::ItemViewEvent &ev);
|
bool contextMenuEvent(const Utils::ItemViewEvent &ev);
|
||||||
void gotoLocation(const GlobalBreakpoint &gbp) const;
|
void gotoLocation(const GlobalBreakpoint &gbp) const;
|
||||||
|
void editBreakpoint(const GlobalBreakpoint &gbp, QWidget *parent);
|
||||||
|
void editBreakpoints(const GlobalBreakpoints &gbps, QWidget *parent);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
Reference in New Issue
Block a user