@@ -2001,7 +2001,8 @@ void nsWindow::UpdateWaylandPopupHierarchy() {
2001
2001
// (mPopupAnchored).
2002
2002
// - Popup isn't anchored but it has toplevel as parent, i.e.
2003
2003
// it's first popup.
2004
- useMoveToRect = (popup->mPopupAnchored ||
2004
+ useMoveToRect = (mPopupType == ePopupTypeTooltip) ||
2005
+ (popup->mPopupAnchored ||
2005
2006
(!popup->mPopupAnchored &&
2006
2007
popup->mWaylandPopupPrev ->mWaylandToplevel == nullptr ));
2007
2008
}
@@ -2354,16 +2355,17 @@ void nsWindow::WaylandPopupMove() {
2354
2355
}
2355
2356
2356
2357
if (!mPopupUseMoveToRect ) {
2357
- if (mNeedsShow ) {
2358
+ if (mNeedsShow && mPopupType != ePopupTypeTooltip ) {
2358
2359
// Workaround for https://gitlab.gnome.org/GNOME/gtk/-/issues/4308
2360
+ // Tooltips are created as subsurfaces with relative position.
2359
2361
LOG_POPUP (" use gtk_window_move(%d, %d) for hidden widget\n " ,
2360
2362
mPopupPosition .x + mRelativePopupOffset .x ,
2361
2363
mPopupPosition .y + mRelativePopupOffset .y );
2362
2364
gtk_window_move (GTK_WINDOW (mShell ),
2363
2365
mPopupPosition .x + mRelativePopupOffset .x ,
2364
2366
mPopupPosition .y + mRelativePopupOffset .y );
2365
2367
} else {
2366
- LOG_POPUP (" use gtk_window_move(%d, %d)\n " ,
2368
+ LOG_POPUP (" use gtk_window_move(%d, %d) for visible widget \n " ,
2367
2369
mRelativePopupPosition .x + mRelativePopupOffset .x ,
2368
2370
mRelativePopupPosition .y + mRelativePopupOffset .y );
2369
2371
gtk_window_move (GTK_WINDOW (mShell ),
0 commit comments