gadget: Add api to get the border allocation

This can be useful for giving input windows the right size.
This commit is contained in:
Matthias Clasen 2015-12-15 21:55:22 -05:00
parent 5aec427c1a
commit b14dc6b5a4
2 changed files with 32 additions and 0 deletions

View File

@ -670,3 +670,31 @@ gtk_css_node_style_changed_for_widget (GtkCssNode *node,
_gtk_bitmask_free (changes);
}
void
gtk_css_gadget_get_border_allocation (GtkCssGadget *gadget,
GtkAllocation *allocation,
int *baseline)
{
GtkCssGadgetPrivate *priv = gtk_css_gadget_get_instance_private (gadget);
GtkBorder margin;
g_return_if_fail (GTK_IS_CSS_GADGET (gadget));
get_box_margin (gtk_css_gadget_get_style (gadget), &margin);
if (allocation)
{
allocation->x = priv->allocated_size.x + margin.left;
allocation->y = priv->allocated_size.y + margin.top;
allocation->width = priv->allocated_size.width - margin.left - margin.right;
allocation->height = priv->allocated_size.height - margin.top - margin.bottom;
}
if (baseline)
{
if (priv->allocated_baseline >= 0)
*baseline = priv->allocated_baseline - margin.top;
else
*baseline = -1;
}
}

View File

@ -97,6 +97,10 @@ void gtk_css_gadget_allocate (GtkCssGadget
void gtk_css_gadget_draw (GtkCssGadget *gadget,
cairo_t *cr);
void gtk_css_gadget_get_border_allocation (GtkCssGadget *gadget,
GtkAllocation *allocation,
int *baseline);
G_END_DECLS
#endif /* __GTK_CSS_GADGET_PRIVATE_H__ */