forked from AuroraMiddleware/gtk
gtkwindow: Add private API to mark as subsurface
This is a rather hackish way to let GTK+ widgets declare popup windows as subsurfaces, so they may work on wayland without the need of xdg_popup, and without many changes yet on the GTK+ side. https://bugzilla.gnome.org/show_bug.cgi?id=695504
This commit is contained in:
parent
6574d99adf
commit
c38651cac4
@ -229,6 +229,8 @@ struct _GtkWindowPrivate
|
|||||||
|
|
||||||
guint drag_possible : 1;
|
guint drag_possible : 1;
|
||||||
|
|
||||||
|
guint use_subsurface : 1;
|
||||||
|
|
||||||
GtkGesture *multipress_gesture;
|
GtkGesture *multipress_gesture;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -6337,6 +6339,12 @@ gtk_window_realize (GtkWidget *widget)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef GDK_WINDOWING_WAYLAND
|
||||||
|
if (priv->use_subsurface &&
|
||||||
|
GDK_IS_WAYLAND_DISPLAY (gtk_widget_get_display (widget)))
|
||||||
|
attributes.window_type = GDK_WINDOW_SUBSURFACE;
|
||||||
|
#endif
|
||||||
|
|
||||||
attributes.title = priv->title;
|
attributes.title = priv->title;
|
||||||
attributes.wmclass_name = priv->wmclass_name;
|
attributes.wmclass_name = priv->wmclass_name;
|
||||||
attributes.wmclass_class = priv->wmclass_class;
|
attributes.wmclass_class = priv->wmclass_class;
|
||||||
@ -11697,3 +11705,15 @@ gtk_window_enable_debugging (GtkWindow *window,
|
|||||||
else
|
else
|
||||||
gtk_window_set_debugging (TRUE, TRUE, warn);
|
gtk_window_set_debugging (TRUE, TRUE, warn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
gtk_window_set_use_subsurface (GtkWindow *window,
|
||||||
|
gboolean use_subsurface)
|
||||||
|
{
|
||||||
|
GtkWindowPrivate *priv = window->priv;
|
||||||
|
|
||||||
|
g_return_if_fail (GTK_IS_WINDOW (window));
|
||||||
|
g_return_if_fail (!gtk_widget_get_realized (GTK_WIDGET (window)));
|
||||||
|
|
||||||
|
priv->use_subsurface = use_subsurface;
|
||||||
|
}
|
||||||
|
@ -119,6 +119,9 @@ void _gtk_window_get_popover_position (GtkWindow *window,
|
|||||||
GdkPixbuf *gtk_window_get_icon_for_size (GtkWindow *window,
|
GdkPixbuf *gtk_window_get_icon_for_size (GtkWindow *window,
|
||||||
gint size);
|
gint size);
|
||||||
|
|
||||||
|
void gtk_window_set_use_subsurface (GtkWindow *window,
|
||||||
|
gboolean use_subsurface);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __GTK_WINDOW_PRIVATE_H__ */
|
#endif /* __GTK_WINDOW_PRIVATE_H__ */
|
||||||
|
Loading…
Reference in New Issue
Block a user