GtkMenu: Fix positioning when attached to offscreen windows

In order to do that, we have to make gdk_window_is_impl_offscreen ()
accessible from GTK via GdkPrivateVTable.
This commit is contained in:
Luca Bacci
2023-12-13 12:33:15 +01:00
parent 6982415c9f
commit e1d664da63
3 changed files with 6 additions and 2 deletions

View File

@ -24,6 +24,7 @@ gdk__private__ (void)
gdk_profiler_start,
gdk_profiler_stop,
gdk_window_titlebar_gesture,
gdk_window_is_impl_offscreen,
};
return &table;

View File

@ -71,6 +71,8 @@ typedef struct {
gboolean (* gdk_window_titlebar_gesture) (GdkWindow *window,
GdkTitlebarGesture gesture);
gboolean (* gdk_window_is_impl_offscreen) (GdkWindow *window);
} GdkPrivateVTable;
GDK_AVAILABLE_IN_ALL

View File

@ -5218,7 +5218,8 @@ gtk_menu_position (GtkMenu *menu,
rect_anchor_dx = priv->rect_anchor_dx;
rect_anchor_dy = priv->rect_anchor_dy;
if (priv->rect_window)
if (priv->rect_window &&
!GDK_PRIVATE_CALL (gdk_window_is_impl_offscreen (priv->rect_window)))
{
rect_window = priv->rect_window;
rect = priv->rect;
@ -5264,7 +5265,7 @@ gtk_menu_position (GtkMenu *menu,
}
if (rect_window != NULL &&
GDK_WINDOW_TYPE (rect_window) == GDK_WINDOW_OFFSCREEN)
GDK_PRIVATE_CALL (gdk_window_is_impl_offscreen (rect_window)))
{
GdkWindow *effective = gdk_offscreen_window_get_embedder (rect_window);