diff options
author | Marcus Tillmanns <marcus.tillmanns@qt.io> | 2023-04-25 14:59:18 +0200 |
---|---|---|
committer | Marcus Tillmanns <marcus.tillmanns@qt.io> | 2023-04-26 07:08:08 +0000 |
commit | aeb2b458d075431f8cf9832132935f23d93c6b74 (patch) | |
tree | 263112d50c19f42f9ab3df9289ba8365a2c1ed82 /src/plugins/terminal/terminalwidget.cpp | |
parent | 3edc491b2ab5b2177503cf58e7d04c6ef7f61080 (diff) | |
download | qt-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.cpp | 21 |
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); |