Merge branch 'offscreen-window-fixes-for-gimp-3' into 'gtk-3-24'
Offscreen window fixes for GIMP3 See merge request GNOME/gtk!6665
This commit is contained in:
commit
c70612ba1d
@ -24,6 +24,7 @@ gdk__private__ (void)
|
||||
gdk_profiler_start,
|
||||
gdk_profiler_stop,
|
||||
gdk_window_titlebar_gesture,
|
||||
gdk_window_is_impl_offscreen,
|
||||
};
|
||||
|
||||
return &table;
|
||||
|
@ -31,6 +31,8 @@ gboolean gdk_display_get_debug_updates (GdkDisplay *display);
|
||||
void gdk_display_set_debug_updates (GdkDisplay *display,
|
||||
gboolean debug_updates);
|
||||
|
||||
gboolean gdk_window_is_impl_offscreen (GdkWindow *window);
|
||||
|
||||
const gchar * gdk_get_desktop_startup_id (void);
|
||||
const gchar * gdk_get_desktop_autostart_id (void);
|
||||
|
||||
@ -69,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
|
||||
|
@ -2710,6 +2710,9 @@ gdk_display_get_monitor_at_window (GdkDisplay *display,
|
||||
|
||||
g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
|
||||
|
||||
if (window && gdk_window_is_impl_offscreen (window))
|
||||
window = gdk_offscreen_window_get_embedder (window);
|
||||
|
||||
class = GDK_DISPLAY_GET_CLASS (display);
|
||||
if (class->get_monitor_at_window)
|
||||
{
|
||||
|
@ -780,3 +780,12 @@ gdk_offscreen_window_class_init (GdkOffscreenWindowClass *klass)
|
||||
impl_class->delete_property = NULL;
|
||||
impl_class->get_scale_factor = gdk_offscreen_window_get_scale_factor;
|
||||
}
|
||||
|
||||
gboolean
|
||||
gdk_window_is_impl_offscreen (GdkWindow *window)
|
||||
{
|
||||
g_return_val_if_fail (GDK_IS_WINDOW (window), FALSE);
|
||||
|
||||
return GDK_IS_OFFSCREEN_WINDOW (window->impl);
|
||||
}
|
||||
|
||||
|
@ -10542,9 +10542,8 @@ void
|
||||
gdk_window_set_transient_for (GdkWindow *window,
|
||||
GdkWindow *parent)
|
||||
{
|
||||
if (!gdk_window_is_offscreen (window) &&
|
||||
parent != NULL &&
|
||||
gdk_window_is_offscreen (parent))
|
||||
if (parent != NULL &&
|
||||
GDK_WINDOW_IMPL_GET_CLASS (window->impl) != GDK_WINDOW_IMPL_GET_CLASS (parent->impl))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user