diff --git a/docs/reference/gdk/gdk4-sections.txt b/docs/reference/gdk/gdk4-sections.txt index e7ff165ecc..2faede76a7 100644 --- a/docs/reference/gdk/gdk4-sections.txt +++ b/docs/reference/gdk/gdk4-sections.txt @@ -181,6 +181,7 @@ GdkSurfaceState gdk_surface_new_toplevel gdk_surface_new_temp gdk_surface_new_popup +gdk_surface_get_parent gdk_surface_destroy gdk_surface_get_surface_type gdk_surface_get_display diff --git a/gdk/gdksurface.c b/gdk/gdksurface.c index 849bea1a67..651896b34b 100644 --- a/gdk/gdksurface.c +++ b/gdk/gdksurface.c @@ -800,6 +800,26 @@ gdk_surface_new_popup (GdkDisplay *display, return surface; } +/** + * gdk_surface_get_parent: + * @surface: a #GtkSurface + * + * Returns the parent surface of a surface, or + * %NULL if the surface does not have a parent. + * + * Only popup surfaces have parents. + * + * Returns: (transfer none) (nullable): the parent of + * @surface, or %NULL + */ +GdkSurface * +gdk_surface_get_parent (GdkSurface *surface) +{ + g_return_val_if_fail (GDK_IS_SURFACE (surface), NULL); + + return surface->parent; +} + static void update_pointer_info_foreach (GdkDisplay *display, GdkDevice *device, diff --git a/gdk/gdksurface.h b/gdk/gdksurface.h index 45705fb51a..4bc98b6193 100644 --- a/gdk/gdksurface.h +++ b/gdk/gdksurface.h @@ -436,6 +436,9 @@ GdkSurfaceType gdk_surface_get_surface_type (GdkSurface *surface); GDK_AVAILABLE_IN_ALL gboolean gdk_surface_is_destroyed (GdkSurface *surface); +GDK_AVAILABLE_IN_ALL +GdkSurface * gdk_surface_get_parent (GdkSurface *surface); + GDK_AVAILABLE_IN_ALL GdkDisplay * gdk_surface_get_display (GdkSurface *surface); GDK_AVAILABLE_IN_ALL