From 3cb783f7fcad172096f10d3285f86e8a01c40c12 Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Wed, 29 Apr 2009 12:20:10 +0200
Subject: [PATCH] debugger: allow drag&drop from main editor to watchers view

---
 src/plugins/debugger/watchwindow.cpp | 32 ++++++++++++++++++++++++++++
 src/plugins/debugger/watchwindow.h   |  4 ++++
 2 files changed, 36 insertions(+)

diff --git a/src/plugins/debugger/watchwindow.cpp b/src/plugins/debugger/watchwindow.cpp
index 71ac3bb1e6c..7484b29e345 100644
--- a/src/plugins/debugger/watchwindow.cpp
+++ b/src/plugins/debugger/watchwindow.cpp
@@ -122,6 +122,9 @@ WatchWindow::WatchWindow(Type type, QWidget *parent)
     setIndentation(indentation() * 9/10);
     setUniformRowHeights(true);
     setItemDelegate(new WatchDelegate(this));
+    setDragEnabled(true);
+    setAcceptDrops(true);
+    setDropIndicatorShown(true);
 
     connect(this, SIGNAL(expanded(QModelIndex)),
         this, SLOT(expandNode(QModelIndex)));
@@ -161,6 +164,35 @@ void WatchWindow::keyPressEvent(QKeyEvent *ev)
     QTreeView::keyPressEvent(ev);
 }
 
+void WatchWindow::dragEnterEvent(QDragEnterEvent *ev)
+{
+    //QTreeView::dragEnterEvent(ev);
+    if (ev->mimeData()->hasFormat("text/plain")) {
+        ev->setDropAction(Qt::CopyAction);
+        ev->accept();
+    }
+}
+
+void WatchWindow::dragMoveEvent(QDragMoveEvent *ev)
+{
+    //QTreeView::dragMoveEvent(ev);
+    if (ev->mimeData()->hasFormat("text/plain")) {
+        ev->setDropAction(Qt::CopyAction);
+        ev->accept();
+    }
+}
+
+void WatchWindow::dropEvent(QDropEvent *ev)
+{
+    if (ev->mimeData()->hasFormat("text/plain")) {
+        theDebuggerAction(WatchExpression)->trigger(ev->mimeData()->text());
+        //ev->acceptProposedAction();
+        ev->setDropAction(Qt::CopyAction);
+        ev->accept();
+    }
+    //QTreeView::dropEvent(ev);
+}
+
 void WatchWindow::contextMenuEvent(QContextMenuEvent *ev)
 {
     QMenu menu;
diff --git a/src/plugins/debugger/watchwindow.h b/src/plugins/debugger/watchwindow.h
index 715507f8b16..adf4e06347e 100644
--- a/src/plugins/debugger/watchwindow.h
+++ b/src/plugins/debugger/watchwindow.h
@@ -64,6 +64,10 @@ private:
 
     void keyPressEvent(QKeyEvent *ev);
     void contextMenuEvent(QContextMenuEvent *ev);
+    void dragEnterEvent(QDragEnterEvent *ev);
+    void dropEvent(QDropEvent *ev);
+    void dragMoveEvent(QDragMoveEvent *ev);
+
     void editItem(const QModelIndex &idx);
     void reset(); /* reimpl */
 
-- 
GitLab