From 6bbd33a24fce0c05e47ea4f2a3437f82ad0f2d06 Mon Sep 17 00:00:00 2001 From: stransky Date: Wed, 13 Oct 2021 08:06:43 +0000 Subject: [PATCH] Bug 1735294 [Wayland] Don't use global popup position for tooltips and use move-to-rect when possible, r=jhorak Differential Revision: https://phabricator.services.mozilla.com/D128202 --- widget/gtk/nsWindow.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp index bbd6ad3c2f03..24a9c0eda8fa 100644 --- a/widget/gtk/nsWindow.cpp +++ b/widget/gtk/nsWindow.cpp @@ -2001,7 +2001,8 @@ void nsWindow::UpdateWaylandPopupHierarchy() { // (mPopupAnchored). // - Popup isn't anchored but it has toplevel as parent, i.e. // it's first popup. - useMoveToRect = (popup->mPopupAnchored || + useMoveToRect = (mPopupType == ePopupTypeTooltip) || + (popup->mPopupAnchored || (!popup->mPopupAnchored && popup->mWaylandPopupPrev->mWaylandToplevel == nullptr)); } @@ -2354,8 +2355,9 @@ void nsWindow::WaylandPopupMove() { } if (!mPopupUseMoveToRect) { - if (mNeedsShow) { + if (mNeedsShow && mPopupType != ePopupTypeTooltip) { // Workaround for https://gitlab.gnome.org/GNOME/gtk/-/issues/4308 + // Tooltips are created as subsurfaces with relative position. LOG_POPUP(" use gtk_window_move(%d, %d) for hidden widget\n", mPopupPosition.x + mRelativePopupOffset.x, mPopupPosition.y + mRelativePopupOffset.y); @@ -2363,7 +2365,7 @@ void nsWindow::WaylandPopupMove() { mPopupPosition.x + mRelativePopupOffset.x, mPopupPosition.y + mRelativePopupOffset.y); } else { - LOG_POPUP(" use gtk_window_move(%d, %d)\n", + LOG_POPUP(" use gtk_window_move(%d, %d) for visible widget\n", mRelativePopupPosition.x + mRelativePopupOffset.x, mRelativePopupPosition.y + mRelativePopupOffset.y); gtk_window_move(GTK_WINDOW(mShell),