summaryrefslogtreecommitdiff
path: root/gtk/gtkcanvasitem.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtkcanvasitem.c')
-rw-r--r--gtk/gtkcanvasitem.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/gtk/gtkcanvasitem.c b/gtk/gtkcanvasitem.c
index 05ec3845fa..893f505b98 100644
--- a/gtk/gtkcanvasitem.c
+++ b/gtk/gtkcanvasitem.c
@@ -212,7 +212,7 @@ gtk_canvas_item_init (GtkCanvasItem *self)
gtk_canvas_vector_init_constant (&self->bounds.point, 0, 0);
gtk_canvas_vector_init_copy (&self->bounds.size, &self->size_vecs[GTK_CANVAS_ITEM_MEASURE_NAT_FOR_NAT]);
- graphene_vec2_init (&self->bounds.origin, 0, 0);
+ gtk_canvas_vector_init_constant (&self->bounds.origin, 0.5, 0.5);
gtk_canvas_box_init_variable (&self->bounds_var);
gtk_canvas_box_update_variable (&self->bounds_var, &self->bounds);
gtk_canvas_box_init_variable (&self->allocation_var);
@@ -276,20 +276,30 @@ gtk_canvas_item_validate_variables (GtkCanvasItem *self)
gtk_canvas_vector_get_variable (&self->allocation_var.point));
gtk_canvas_vector_init_invalid (
gtk_canvas_vector_get_variable (&self->allocation_var.size));
+ gtk_canvas_vector_init_invalid (
+ gtk_canvas_vector_get_variable (&self->allocation_var.origin));
}
void
gtk_canvas_item_allocate (GtkCanvasItem *self,
graphene_rect_t *rect)
{
+ graphene_vec2_t origin;
+
+ if (!gtk_canvas_vector_eval (&self->bounds.origin, &origin))
+ graphene_vec2_init_from_vec2 (&origin, graphene_vec2_zero ());
+
gtk_canvas_vector_init_constant (
gtk_canvas_vector_get_variable (&self->allocation_var.point),
- rect->origin.x + graphene_vec2_get_x (&self->bounds.origin) * rect->size.width,
- rect->origin.y + graphene_vec2_get_y (&self->bounds.origin) * rect->size.height);
+ rect->origin.x + graphene_vec2_get_x (&origin) * rect->size.width,
+ rect->origin.y + graphene_vec2_get_y (&origin) * rect->size.height);
gtk_canvas_vector_init_constant (
gtk_canvas_vector_get_variable (&self->allocation_var.size),
rect->size.width, rect->size.height);
- graphene_vec2_init_from_vec2 (&self->allocation_var.origin, &self->bounds.origin);
+ gtk_canvas_vector_init_constant (
+ gtk_canvas_vector_get_variable (&self->allocation_var.origin),
+ graphene_vec2_get_x (&origin),
+ graphene_vec2_get_y (&origin));
}
void