From 9f2bb143b5ee00eddaaebbfe83da2f2da9f18863 Mon Sep 17 00:00:00 2001 From: Elvis Angelaccio Date: Sun, 10 Mar 2019 12:45:43 +0100 Subject: [PATCH] [FoldersPanel] Stop ignoring positions from the controller This fixes the position of Folder panel's context menus on multi-screens on Wayland, because `QCursor::pos()` is not reliable on those setups. --- src/panels/folders/folderspanel.cpp | 8 ++------ src/panels/folders/treeviewcontextmenu.cpp | 4 ++-- src/panels/folders/treeviewcontextmenu.h | 2 +- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/panels/folders/folderspanel.cpp b/src/panels/folders/folderspanel.cpp index 95953f66b..020c41e55 100644 --- a/src/panels/folders/folderspanel.cpp +++ b/src/panels/folders/folderspanel.cpp @@ -214,12 +214,10 @@ void FoldersPanel::slotItemMiddleClicked(int index) void FoldersPanel::slotItemContextMenuRequested(int index, const QPointF& pos) { - Q_UNUSED(pos); - const KFileItem fileItem = m_model->fileItem(index); QPointer contextMenu = new TreeViewContextMenu(this, fileItem); - contextMenu.data()->open(); + contextMenu.data()->open(pos.toPoint()); if (contextMenu.data()) { delete contextMenu.data(); } @@ -227,10 +225,8 @@ void FoldersPanel::slotItemContextMenuRequested(int index, const QPointF& pos) void FoldersPanel::slotViewContextMenuRequested(const QPointF& pos) { - Q_UNUSED(pos); - QPointer contextMenu = new TreeViewContextMenu(this, KFileItem()); - contextMenu.data()->open(); + contextMenu.data()->open(pos.toPoint()); if (contextMenu.data()) { delete contextMenu.data(); } diff --git a/src/panels/folders/treeviewcontextmenu.cpp b/src/panels/folders/treeviewcontextmenu.cpp index f8cb0b4d6..df9b9d62e 100644 --- a/src/panels/folders/treeviewcontextmenu.cpp +++ b/src/panels/folders/treeviewcontextmenu.cpp @@ -55,7 +55,7 @@ TreeViewContextMenu::~TreeViewContextMenu() { } -void TreeViewContextMenu::open() +void TreeViewContextMenu::open(const QPoint& pos) { QMenu* popup = new QMenu(m_parent); @@ -161,7 +161,7 @@ void TreeViewContextMenu::open() } QPointer popupPtr = popup; - popup->exec(QCursor::pos()); + popup->exec(pos); if (popupPtr.data()) { popupPtr.data()->deleteLater(); } diff --git a/src/panels/folders/treeviewcontextmenu.h b/src/panels/folders/treeviewcontextmenu.h index a9491fb5c..245b7d6b0 100644 --- a/src/panels/folders/treeviewcontextmenu.h +++ b/src/panels/folders/treeviewcontextmenu.h @@ -49,7 +49,7 @@ public: ~TreeViewContextMenu() override; /** Opens the context menu modal. */ - void open(); + void open(const QPoint& pos); private slots: /** Cuts the item m_fileItem. */ -- 2.47.3