diff options
author | Jan Grulich <jgrulich@redhat.com> | 2022-07-29 11:47:02 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-07-29 12:48:42 +0000 |
commit | 044bf457f6b2e878938b01e1f0070402e1e73c1a (patch) | |
tree | 094b0f83e036be456203914c43bd728d49ae1dcc | |
parent | 68e5ea14710d5790d428625da318677b7c3cf867 (diff) |
Client: do not take decoration shadows into account when placing popups
The anchor rectangle is relative to the window geometry, which according
to xdg-shell specs shouldn't include invisible portions like shadows.
This causes all popups be wrongly positioned when drop-shadows are used.
Change-Id: Iac30ab264599f9898f3ddecd7f0c5f2aca824ad6
Reviewed-by: David Edmundson <davidedmundson@kde.org>
(cherry picked from commit 14c0293fe6e55317e8a645f6a156b5973190cd8e)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp index d7a5f5659..ce19a0013 100644 --- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp +++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp @@ -439,8 +439,8 @@ void QWaylandXdgSurface::setPopup(QWaylandWindow *parent) QPoint transientPos = m_window->geometry().topLeft(); // this is absolute transientPos -= parent->geometry().topLeft(); if (parent->decoration()) { - transientPos.setX(transientPos.x() + parent->decoration()->margins().left()); - transientPos.setY(transientPos.y() + parent->decoration()->margins().top()); + transientPos.setX(transientPos.x() + parent->decoration()->margins(QWaylandAbstractDecoration::ShadowsExcluded).left()); + transientPos.setY(transientPos.y() + parent->decoration()->margins(QWaylandAbstractDecoration::ShadowsExcluded).top()); } positioner->set_anchor_rect(transientPos.x(), transientPos.y(), 1, 1); positioner->set_anchor(QtWayland::xdg_positioner::anchor_top_left); |