diff options
| author | Méven Car <[email protected]> | 2019-03-12 08:54:46 -0600 |
|---|---|---|
| committer | Nate Graham <[email protected]> | 2019-03-12 09:25:31 -0600 |
| commit | 40896c02d996f69f7bf4e8adebe28acdbff8d350 (patch) | |
| tree | fdff394745a25eb636b44d1fa9cd584b034ffb3f /src | |
| parent | 94d7e1471e0a81b72285795ad91c4f6196157ae4 (diff) | |
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
Diffstat (limited to 'src')
| -rw-r--r-- | src/panels/information/informationpanel.cpp | 2 | ||||
| -rw-r--r-- | src/panels/information/informationpanelcontent.cpp | 4 | ||||
| -rw-r--r-- | src/panels/information/informationpanelcontent.h | 2 |
3 files changed, 4 insertions, 4 deletions
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<QAction*>& customContextMenuActions) +void InformationPanelContent::configureSettings(const QList<QAction*>& customContextMenuActions, const QPointF& pos) { QMenu popup(this); @@ -288,7 +288,7 @@ void InformationPanelContent::configureSettings(const QList<QAction*>& 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<QAction*>& customContextMenuActions); + void configureSettings(const QList<QAction*>& customContextMenuActions, const QPointF& pos); signals: void urlActivated( const QUrl& url ); |
