Terminal: Allow dropping files

Change-Id: I978ea72d6de7df6c31d1d2d2368e7aadf835279d
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
This commit is contained in:
Marcus Tillmanns
2023-04-25 14:59:18 +02:00
parent 3edc491b2a
commit aeb2b458d0
2 changed files with 24 additions and 0 deletions

View File

@@ -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);