changeset 18655:41489b96ebca gui-release

GUI: allow drag and drop to win32 GUI command window (Bug #41443) * libgui/qterminal/libqterminal/win32/QWinTerminalImpl.h, libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp (QWinTerminalImpl::QWinTerminalImpl): set Accept Drops. (QWinTerminalImpl::dragEnterEvent): New function. (QWinTerminalImpl::dropEvent): New function.
author John Donoghue <john.donoghue@ieee.org>
date Thu, 17 Apr 2014 09:01:03 -0400
parents 992b6354c8c6
children 1b289f45187f
files libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp libgui/qterminal/libqterminal/win32/QWinTerminalImpl.h
diffstat 2 files changed, 39 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp	Wed Apr 16 16:19:45 2014 -0400
+++ b/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp	Thu Apr 17 09:01:03 2014 -0400
@@ -35,6 +35,9 @@
 #include <QToolTip>
 #include <QCursor>
 #include <QMessageBox>
+#include <QDragEnterEvent>
+#include <QDropEvent>
+#include <QUrl>
 
 #include <fcntl.h>
 #include <io.h>
@@ -1265,6 +1268,8 @@
 
     connect (this, SIGNAL (set_global_shortcuts_signal (bool)),
            parent, SLOT (set_global_shortcuts (bool)));
+
+    setAcceptDrops (true);
 }
 
 //////////////////////////////////////////////////////////////////////////////
@@ -1595,3 +1600,32 @@
   QString selection = d->getSelection ();
   return selection;
 }
+
+//////////////////////////////////////////////////////////////////////////////
+
+void QWinTerminalImpl::dragEnterEvent (QDragEnterEvent *event)
+{
+   if (event->mimeData ()->hasUrls ())
+     {
+       event->acceptProposedAction();
+     }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
+void QWinTerminalImpl::dropEvent (QDropEvent *event)
+{
+  QString dropText;
+
+  if (event->mimeData ()->hasUrls ())
+    {
+      foreach (QUrl url, event->mimeData ()->urls ())
+        {
+          if(dropText.length () > 0) 
+            dropText += "\n";
+          dropText  += url.toLocalFile ();
+        }
+      sendText (dropText);
+    }
+}
+
--- a/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.h	Wed Apr 16 16:19:45 2014 -0400
+++ b/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.h	Thu Apr 17 09:01:03 2014 -0400
@@ -32,6 +32,8 @@
 class QResizeEvent;
 class QWheelEvent;
 class QPoint;
+class QDragEnterEvent;
+class QDropEvent;
 
 class QConsolePrivate;
 class QConsoleThread;
@@ -91,6 +93,9 @@
 
   bool eventFilter(QObject *obj, QEvent *ev);
 
+  void dragEnterEvent(QDragEnterEvent *event);
+  void dropEvent(QDropEvent *event);
+
 private slots:
   void scrollValueChanged (int value);
   void monitorConsole (void);