diff options
Diffstat (limited to 'gtk/gtkcanvasitem.c')
-rw-r--r-- | gtk/gtkcanvasitem.c | 18 |
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 |