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
This commit is contained in:
Méven Car 2019-03-12 08:54:46 -06:00 committed by Nate Graham
parent 94d7e1471e
commit 40896c02d9
3 changed files with 4 additions and 4 deletions

View file

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

View file

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

View file

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