summaryrefslogtreecommitdiff
path: root/src/plugins/terminal/terminalwidget.cpp
diff options
context:
space:
mode:
authorMarcus Tillmanns <marcus.tillmanns@qt.io>2023-04-25 14:59:18 +0200
committerMarcus Tillmanns <marcus.tillmanns@qt.io>2023-04-26 07:08:08 +0000
commitaeb2b458d075431f8cf9832132935f23d93c6b74 (patch)
tree263112d50c19f42f9ab3df9289ba8365a2c1ed82 /src/plugins/terminal/terminalwidget.cpp
parent3edc491b2ab5b2177503cf58e7d04c6ef7f61080 (diff)
downloadqt-creator-aeb2b458d075431f8cf9832132935f23d93c6b74.tar.gz
Terminal: Allow dropping files
Change-Id: I978ea72d6de7df6c31d1d2d2368e7aadf835279d Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Diffstat (limited to 'src/plugins/terminal/terminalwidget.cpp')
-rw-r--r--src/plugins/terminal/terminalwidget.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/plugins/terminal/terminalwidget.cpp b/src/plugins/terminal/terminalwidget.cpp
index 67d7cae59d..6e13960bcc 100644
--- a/src/plugins/terminal/terminalwidget.cpp
+++ b/src/plugins/terminal/terminalwidget.cpp
@@ -32,6 +32,7 @@
#include <QGlyphRun>
#include <QLoggingCategory>
#include <QMenu>
+#include <QMimeData>
#include <QPaintEvent>
#include <QPainter>
#include <QPainterPath>
@@ -90,6 +91,7 @@ TerminalWidget::TerminalWidget(QWidget *parent, const OpenTerminalParameters &op
setAttribute(Qt::WA_InputMethodEnabled);
setAttribute(Qt::WA_MouseTracking);
+ setAcceptDrops(true);
setCursor(Qt::IBeamCursor);
@@ -1439,6 +1441,25 @@ void TerminalWidget::mouseDoubleClickEvent(QMouseEvent *event)
event->accept();
}
+void TerminalWidget::dragEnterEvent(QDragEnterEvent *event)
+{
+ if (event->mimeData()->hasUrls()) {
+ event->setDropAction(Qt::CopyAction);
+ event->accept();
+ }
+}
+
+void TerminalWidget::dropEvent(QDropEvent *event)
+{
+ QString urls = Utils::transform(event->mimeData()->urls(), [](const QUrl &url) {
+ return QString("\"%1\"").arg(url.toDisplayString(QUrl::PreferLocalFile));
+ }).join(" ");
+
+ writeToPty(urls.toUtf8());
+ event->setDropAction(Qt::CopyAction);
+ event->accept();
+}
+
void TerminalWidget::showEvent(QShowEvent *event)
{
Q_UNUSED(event);