diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 5d7f9ab8e2..cb1048e222 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -13669,6 +13669,28 @@ gtk_widget_get_content_allocation (GtkWidget *widget, margin.bottom + border.bottom + padding.bottom; } +void +gtk_widget_get_border_allocation (GtkWidget *widget, + GtkAllocation *allocation) +{ + GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget); + GtkBorder margin, border; + GtkCssStyle *style; + + style = gtk_css_node_get_style (priv->cssnode); + get_box_margin (style, &margin); + get_box_border (style, &border); + + *allocation = priv->allocation; + + allocation->x += margin.left + border.left; + allocation->y += margin.top + border.top; + allocation->width -= margin.left + border.left + + margin.right + border.right; + allocation->height -= margin.top + border.top + + margin.bottom + border.bottom; +} + /** * gtk_widget_set_allocation: * @widget: a #GtkWidget diff --git a/gtk/gtkwidgetprivate.h b/gtk/gtkwidgetprivate.h index 404969bc91..e9acd9acf3 100644 --- a/gtk/gtkwidgetprivate.h +++ b/gtk/gtkwidgetprivate.h @@ -320,6 +320,8 @@ gboolean gtk_widget_focus_move (GtkWidget *wi GPtrArray *focus_order); void gtk_widget_get_content_allocation (GtkWidget *widget, GtkAllocation *allocation); +void gtk_widget_get_border_allocation (GtkWidget *widget, + GtkAllocation *allocation); GtkWidget * gtk_widget_common_ancestor (GtkWidget *widget_a, GtkWidget *widget_b);