Debugger[Breakpoints]: Do not trigger reinserting breakpoint unless changed.

Add a menu option to edit breakpoints to the locator/editor context menu.

Reviewed-by: hjk
This commit is contained in:
Friedemann Kleint
2010-10-06 10:32:36 +02:00
parent c29e52b331
commit 7d35c50aa5
3 changed files with 72 additions and 31 deletions

View File

@@ -46,6 +46,7 @@
#include "threadshandler.h"
#include "watchhandler.h"
#include "watchutils.h"
#include "breakwindow.h"
#include <coreplugin/icore.h>
#include <coreplugin/editormanager/editormanager.h>
@@ -84,7 +85,7 @@
#include <QtGui/QTextCursor>
#include <QtGui/QTextDocument>
#include <QtGui/QTreeWidget>
#include <QtGui/QMainWindow>
using namespace Core;
using namespace Debugger;
@@ -286,6 +287,8 @@ public slots:
m_runControl->bringApplicationToForeground(m_inferiorPid);
}
private slots:
void slotEditBreakpoint();
public:
DebuggerState state() const { return m_state; }
@@ -333,6 +336,17 @@ void DebuggerEnginePrivate::breakpointSetRemoveMarginActionTriggered()
m_breakHandler.toggleBreakpoint(fileName, lineNumber, address);
}
void DebuggerEnginePrivate::slotEditBreakpoint()
{
const QAction *act = qobject_cast<QAction *>(sender());
QTC_ASSERT(act, return);
const QVariant data = act->data();
QTC_ASSERT(qVariantCanConvert<BreakpointData *>(data), return);
BreakpointData *breakPointData = qvariant_cast<BreakpointData *>(data);
if (BreakWindow::editBreakpoint(breakPointData, ICore::instance()->mainWindow()))
breakPointData->reinsertBreakpoint();
}
void DebuggerEnginePrivate::breakpointEnableDisableMarginActionTriggered()
{
QAction *act = qobject_cast<QAction *>(sender());
@@ -392,6 +406,10 @@ void DebuggerEnginePrivate::handleContextMenuRequest(const QVariant &parameters)
connect(act2, SIGNAL(triggered()),
this, SLOT(breakpointEnableDisableMarginActionTriggered()));
menu->addAction(act2);
QAction *editAction = new QAction(tr("Edit Breakpoint %1...").arg(number), menu);
connect(editAction, SIGNAL(triggered()), this, SLOT(slotEditBreakpoint()));
editAction->setData(qVariantFromValue(data));
menu->addAction(editAction);
} else {
// non-existing
const QString text = address ?