From: Méven Car Date: Tue, 12 Mar 2019 14:54:46 +0000 (-0600) Subject: Correctly position context menu of the information panel under wayland with a seconda... X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/40896c02d996f69f7bf4e8adebe28acdbff8d350?ds=inline Correctly position context menu of the information panel under wayland with a secondary screen Summary: According to my testing this bug occurs because Qcursor::pos() does not work as expected under wayland on a secondary screen, then it returns inaccurate data. This could hide bugs elsewhere. BUG: 404799 FIXED-IN: 19.04.0 Test Plan: Under Wayland test the context menu on both screens. Do the same under Xorg. Reviewers: #dolphin, elvisangelaccio Reviewed By: #dolphin, elvisangelaccio Subscribers: elvisangelaccio, ngraham, nicolasfella, kfm-devel Tags: #dolphin Differential Revision: https://phabricator.kde.org/D19535 --- diff --git a/src/panels/information/informationpanel.cpp b/src/panels/information/informationpanel.cpp index 1ec2696e3..a0aeaaa37 100644 --- a/src/panels/information/informationpanel.cpp +++ b/src/panels/information/informationpanel.cpp @@ -158,7 +158,7 @@ void InformationPanel::resizeEvent(QResizeEvent* event) void InformationPanel::contextMenuEvent(QContextMenuEvent* event) { // TODO: Move code from InformationPanelContent::configureSettings() here - m_content->configureSettings(customContextMenuActions()); + m_content->configureSettings(customContextMenuActions(), event->globalPos()); Panel::contextMenuEvent(event); } diff --git a/src/panels/information/informationpanelcontent.cpp b/src/panels/information/informationpanelcontent.cpp index 6f671e683..bf87f9b5a 100644 --- a/src/panels/information/informationpanelcontent.cpp +++ b/src/panels/information/informationpanelcontent.cpp @@ -264,7 +264,7 @@ bool InformationPanelContent::eventFilter(QObject* obj, QEvent* event) return QWidget::eventFilter(obj, event); } -void InformationPanelContent::configureSettings(const QList& customContextMenuActions) +void InformationPanelContent::configureSettings(const QList& customContextMenuActions, const QPointF& pos) { QMenu popup(this); @@ -288,7 +288,7 @@ void InformationPanelContent::configureSettings(const QList& customCon // Open the popup and adjust the settings for the // selected action. - QAction* action = popup.exec(QCursor::pos()); + QAction* action = popup.exec(pos.toPoint()); if (!action) { return; } diff --git a/src/panels/information/informationpanelcontent.h b/src/panels/information/informationpanelcontent.h index 9223fcc5a..ca9afab09 100644 --- a/src/panels/information/informationpanelcontent.h +++ b/src/panels/information/informationpanelcontent.h @@ -78,7 +78,7 @@ public: * * TODO: Move this code to the class InformationPanel */ - void configureSettings(const QList& customContextMenuActions); + void configureSettings(const QList& customContextMenuActions, const QPointF& pos); signals: void urlActivated( const QUrl& url );