Debugger: make breakpoint markers draggable

Change-Id: I6139badeb8cb8b20e653ce9f6685c0e577123617
Reviewed-by: David Schulz <david.schulz@digia.com>
This commit is contained in:
hjk
2012-10-09 22:34:36 +02:00
parent 16c5a1493d
commit 315a3ebdeb
4 changed files with 29 additions and 0 deletions

View File

@@ -37,6 +37,7 @@
#include "debuggerstringutils.h" #include "debuggerstringutils.h"
#include "stackframe.h" #include "stackframe.h"
#include <extensionsystem/invoker.h>
#include <utils/hostosinfo.h> #include <utils/hostosinfo.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
@@ -1258,6 +1259,25 @@ void BreakHandler::updateLineNumberFromMarker(BreakpointModelId id, int lineNumb
emit layoutChanged(); emit layoutChanged();
} }
void BreakHandler::changeLineNumberFromMarker(BreakpointModelId id, int lineNumber)
{
// We need to delay this as it is called from a marker which will be destroyed.
ExtensionSystem::InvokerBase invoker;
invoker.addArgument(id);
invoker.addArgument(lineNumber);
invoker.setConnectionType(Qt::QueuedConnection);
invoker.invoke(this, "changeLineNumberFromMarkerHelper");
QTC_CHECK(invoker.wasSuccessful());
}
void BreakHandler::changeLineNumberFromMarkerHelper(BreakpointModelId id, int lineNumber)
{
BreakpointParameters data = breakpointData(id);
data.lineNumber = lineNumber;
removeBreakpoint(id);
appendBreakpoint(data);
}
BreakpointModelIds BreakHandler::allBreakpointIds() const BreakpointModelIds BreakHandler::allBreakpointIds() const
{ {
BreakpointModelIds ids; BreakpointModelIds ids;

View File

@@ -133,6 +133,7 @@ public:
void setEnabled(BreakpointModelId id, bool on); void setEnabled(BreakpointModelId id, bool on);
void updateFileNameFromMarker(BreakpointModelId id, const QString &fileName); void updateFileNameFromMarker(BreakpointModelId id, const QString &fileName);
void updateLineNumberFromMarker(BreakpointModelId id, int lineNumber); void updateLineNumberFromMarker(BreakpointModelId id, int lineNumber);
void changeLineNumberFromMarker(BreakpointModelId id, int lineNumber);
void setMarkerFileAndLine(BreakpointModelId id, void setMarkerFileAndLine(BreakpointModelId id,
const QString &fileName, int lineNumber); const QString &fileName, int lineNumber);
bool isOneShot(BreakpointModelId id) const; bool isOneShot(BreakpointModelId id) const;
@@ -189,6 +190,7 @@ private:
void loadBreakpoints(); void loadBreakpoints();
void saveBreakpoints(); void saveBreakpoints();
void cleanupBreakpoint(BreakpointModelId id); void cleanupBreakpoint(BreakpointModelId id);
Q_SLOT void changeLineNumberFromMarkerHelper(Debugger::Internal::BreakpointModelId id, int lineNumber);
struct BreakpointItem struct BreakpointItem
{ {

View File

@@ -68,6 +68,11 @@ void BreakpointMarker::updateLineNumber(int lineNumber)
breakHandler()->updateLineNumberFromMarker(m_id, lineNumber); breakHandler()->updateLineNumberFromMarker(m_id, lineNumber);
} }
void BreakpointMarker::dragToLine(int lineNumber)
{
breakHandler()->changeLineNumberFromMarker(m_id, lineNumber);
}
void BreakpointMarker::updateFileName(const QString &fileName) void BreakpointMarker::updateFileName(const QString &fileName)
{ {
BaseTextMark::updateFileName(fileName); BaseTextMark::updateFileName(fileName);

View File

@@ -46,6 +46,8 @@ public:
void removedFromEditor(); void removedFromEditor();
void updateLineNumber(int lineNumber); void updateLineNumber(int lineNumber);
void updateFileName(const QString &fileName); void updateFileName(const QString &fileName);
bool isDraggable() const { return true; }
void dragToLine(int lineNumber);
private: private:
BreakpointModelId m_id; BreakpointModelId m_id;