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
This commit is contained in:
stransky 2021-10-13 08:06:43 +00:00
Родитель cc06afa32e
Коммит 6bbd33a24f
1 изменённых файлов: 5 добавлений и 3 удалений

Просмотреть файл

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