diff options
-rw-r--r-- | docs/reference/gtk/gtk3-sections.txt | 1 | ||||
-rw-r--r-- | gtk/gtkwindow.c | 41 | ||||
-rw-r--r-- | gtk/gtkwindow.h | 5 |
3 files changed, 47 insertions, 0 deletions
diff --git a/docs/reference/gtk/gtk3-sections.txt b/docs/reference/gtk/gtk3-sections.txt index 0c9237c660..91f4f484be 100644 --- a/docs/reference/gtk/gtk3-sections.txt +++ b/docs/reference/gtk/gtk3-sections.txt @@ -5695,6 +5695,7 @@ gtk_window_set_titlebar gtk_window_add_popover gtk_window_remove_popover gtk_window_set_popover_position +gtk_window_get_popover_position <SUBSECTION Standard> GTK_WINDOW diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index 532bbafaca..8e5916961a 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -12038,3 +12038,44 @@ gtk_window_set_popover_position (GtkWindow *window, gtk_widget_queue_resize (popover); } + +/** + * gtk_window_get_popover_position: + * @window: a #GtkWindow + * @popover: a #GtkWidget acting as popover + * @pos: return value for the position of @popover relative to @rect + * @rect: return value for the disclosure rectangle + * + * Returns the positioning details of @popover, relative to @window. + * + * Since: 3.12 + **/ +void +gtk_window_get_popover_position (GtkWindow *window, + GtkWidget *popover, + GtkPositionType *pos, + cairo_rectangle_int_t *rect) +{ + GtkWindowPopover *data; + GtkWindowPrivate *priv; + + g_return_if_fail (GTK_IS_WINDOW (window)); + g_return_if_fail (GTK_IS_WIDGET (popover)); + + priv = window->priv; + data = g_hash_table_lookup (priv->popovers, popover); + + if (!data) + { + g_warning ("Widget %s(%p) is not a popover of window %s", + gtk_widget_get_name (popover), popover, + gtk_widget_get_name (GTK_WIDGET (window))); + return; + } + + if (pos) + *pos = data->pos; + + if (rect) + *rect = data->rect; +} diff --git a/gtk/gtkwindow.h b/gtk/gtkwindow.h index 31ced6f926..70b3901d99 100644 --- a/gtk/gtkwindow.h +++ b/gtk/gtkwindow.h @@ -494,6 +494,11 @@ void gtk_window_set_popover_position (GtkWindow *window, GtkWidget *popover, GtkPositionType pos, const cairo_rectangle_int_t *rect); +GDK_AVAILABLE_IN_3_12 +void gtk_window_get_popover_position (GtkWindow *window, + GtkWidget *popover, + GtkPositionType *pos, + cairo_rectangle_int_t *rect); G_END_DECLS |