From 9507670db45558ad6443b0dec08ae62aa38b26fa Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Tue, 14 Sep 2010 11:39:51 +0200 Subject: [PATCH] API: Add API to query width and height when rendering The functions are gtk_widget_get_allocated_width() and gtk_widget_get_allocated_height(). They are currently identical to using width/height of gtk_widget_get_allocation(), but are introduced for ease of use (no need to use a custom struct) and to free people from having to think about allocation.x and allocation.y (which is where the origin of the cairo context in GtkWidget::draw is located). --- docs/reference/gtk/gtk3-sections.txt | 2 ++ gtk/gtk.symbols | 2 ++ gtk/gtkwidget.c | 36 ++++++++++++++++++++++++++++ gtk/gtkwidget.h | 3 +++ 4 files changed, 43 insertions(+) diff --git a/docs/reference/gtk/gtk3-sections.txt b/docs/reference/gtk/gtk3-sections.txt index 162e01bec3..88012ecf0c 100644 --- a/docs/reference/gtk/gtk3-sections.txt +++ b/docs/reference/gtk/gtk3-sections.txt @@ -4893,6 +4893,8 @@ gtk_widget_get_has_tooltip gtk_widget_set_has_tooltip gtk_widget_trigger_tooltip_query gtk_widget_get_window +gtk_widget_get_allocated_width +gtk_widget_get_allocated_height gtk_widget_get_allocation gtk_widget_set_allocation gtk_widget_get_app_paintable diff --git a/gtk/gtk.symbols b/gtk/gtk.symbols index 0c92553610..cdec6cbb26 100644 --- a/gtk/gtk.symbols +++ b/gtk/gtk.symbols @@ -4206,6 +4206,8 @@ gtk_widget_event gtk_widget_freeze_child_notify gtk_widget_get_accessible gtk_widget_get_allocation +gtk_widget_get_allocated_width +gtk_widget_get_allocated_height gtk_widget_get_ancestor gtk_widget_get_app_paintable #ifndef GTK_DISABLE_DEPRECATED diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 7a8fd33a08..5500a84b41 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -11851,6 +11851,42 @@ gtk_widget_set_allocation (GtkWidget *widget, priv->allocation = *allocation; } +/** + * gtk_widget_get_allocated_width: + * @widget: the widget to query + * + * Returns the width that has currently been allocated to @widget. + * This function is intended to be used when implementing handlers + * for the GtkWidget::draw function. + * + * Returns: the width of the @widget + **/ +int +gtk_widget_get_allocated_width (GtkWidget *widget) +{ + g_return_val_if_fail (GTK_IS_WIDGET (widget), 0); + + return widget->priv->allocation.width; +} + +/** + * gtk_widget_get_allocated_height: + * @widget: the widget to query + * + * Returns the height that has currently been allocated to @widget. + * This function is intended to be used when implementing handlers + * for the GtkWidget::draw function. + * + * Returns: the height of the @widget + **/ +int +gtk_widget_get_allocated_height (GtkWidget *widget) +{ + g_return_val_if_fail (GTK_IS_WIDGET (widget), 0); + + return widget->priv->allocation.height; +} + /** * gtk_widget_get_requisition: * @widget: a #GtkWidget diff --git a/gtk/gtkwidget.h b/gtk/gtkwidget.h index 98480c152c..8f4f6c3ad2 100644 --- a/gtk/gtkwidget.h +++ b/gtk/gtkwidget.h @@ -694,6 +694,9 @@ void gtk_widget_set_window (GtkWidget *widget, GdkWindow *window); GdkWindow * gtk_widget_get_window (GtkWidget *widget); +int gtk_widget_get_allocated_width (GtkWidget *widget); +int gtk_widget_get_allocated_height (GtkWidget *widget); + void gtk_widget_get_allocation (GtkWidget *widget, GtkAllocation *allocation); void gtk_widget_set_allocation (GtkWidget *widget,