From 050e06d220e991d2cebc9fa78e9d32c239653dd1 Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava Date: Mon, 9 Sep 2019 10:02:45 +0000 Subject: [PATCH] Fix Drag Drop from splits in Wayland In wayland we cant use QCursor::position, it will always return a bogus value --- src/TerminalDisplay.cpp | 3 +-- src/TerminalDisplay.h | 2 +- src/ViewSplitter.cpp | 3 ++- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/TerminalDisplay.cpp b/src/TerminalDisplay.cpp index 97ee656c..727d49c3 100644 --- a/src/TerminalDisplay.cpp +++ b/src/TerminalDisplay.cpp @@ -574,9 +574,8 @@ void TerminalDisplay::hideDragTarget() update(); } -void TerminalDisplay::showDragTarget() +void TerminalDisplay::showDragTarget(const QPoint& cursorPos) { - auto cursorPos = mapFromGlobal(QCursor::pos()); using EdgeDistance = std::pair; auto closerToEdge = std::min( { diff --git a/src/TerminalDisplay.h b/src/TerminalDisplay.h index 1d30bfb0..ebf325a0 100644 --- a/src/TerminalDisplay.h +++ b/src/TerminalDisplay.h @@ -74,7 +74,7 @@ public: explicit TerminalDisplay(QWidget *parent = nullptr); ~TerminalDisplay() Q_DECL_OVERRIDE; - void showDragTarget(); + void showDragTarget(const QPoint& pos); void hideDragTarget(); void applyProfile(const Profile::Ptr& profile); diff --git a/src/ViewSplitter.cpp b/src/ViewSplitter.cpp index 7e31172c..4261e0cf 100644 --- a/src/ViewSplitter.cpp +++ b/src/ViewSplitter.cpp @@ -307,7 +307,8 @@ void Konsole::ViewSplitter::dragMoveEvent(QDragMoveEvent* ev) return; } currentDragTarget = terminal; - currentDragTarget->showDragTarget(); + auto localPos = currentDragTarget->mapFromParent(ev->pos()); + currentDragTarget->showDragTarget(localPos); } }