From aeb2b458d075431f8cf9832132935f23d93c6b74 Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Tue, 25 Apr 2023 14:59:18 +0200 Subject: Terminal: Allow dropping files Change-Id: I978ea72d6de7df6c31d1d2d2368e7aadf835279d Reviewed-by: Cristian Adam --- src/plugins/terminal/terminalwidget.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/plugins/terminal/terminalwidget.cpp') 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 #include #include +#include #include #include #include @@ -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); -- cgit v1.2.1