[gtk+/wip/ebassi/gsk-renderer: 80/135] Fix fallback render nodes
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/ebassi/gsk-renderer: 80/135] Fix fallback render nodes
- Date: Mon, 17 Oct 2016 16:28:36 +0000 (UTC)
commit 399a03f47571c3d7814268afa88fff431773ae23
Author: Matthias Clasen <mclasen redhat com>
Date: Thu Aug 4 01:05:14 2016 -0400
Fix fallback render nodes
We were allocating a surface thats big enough for the clip, and
we were setting the transform for that, but then GtkContainer
was overriding the transform with the one for the allocation.
Also, we were drawing at the clip position, not the allocation
position.
gtk/gtkwidget.c | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
---
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index b9a1b2d..ae80012 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -16074,10 +16074,12 @@ gtk_widget_get_render_node (GtkWidget *widget,
graphene_point3d_t tmp;
graphene_rect_t bounds;
GtkAllocation clip;
+ GtkAllocation alloc;
gtk_widget_get_clip (widget, &clip);
+ gtk_widget_get_allocation (widget, &alloc);
graphene_rect_init (&bounds, 0, 0, clip.width, clip.height);
- graphene_matrix_init_translate (&m, graphene_point3d_init (&tmp, clip.x, clip.y, 0.f));
+ graphene_matrix_init_translate (&m, graphene_point3d_init (&tmp, alloc.x, alloc.y, 0.f));
/* Compatibility mode: if the widget does not have a render node, we draw
* using gtk_widget_draw() on a temporary node
@@ -16087,6 +16089,7 @@ gtk_widget_get_render_node (GtkWidget *widget,
GskRenderNode *tmp;
cairo_t *cr;
char *str;
+ graphene_point3d_t p;
str = g_strconcat ("Fallback<", G_OBJECT_TYPE_NAME (widget), ">", NULL);
@@ -16095,6 +16098,8 @@ gtk_widget_get_render_node (GtkWidget *widget,
gsk_render_node_set_bounds (tmp, &bounds);
gsk_render_node_set_transform (tmp, &m);
cr = gsk_render_node_get_draw_context (tmp);
+ cairo_translate (cr, alloc.x - clip.x, alloc.y - clip.y);
+ gsk_render_node_set_offset (tmp, graphene_point3d_init (&p, clip.x - alloc.x, clip.y - alloc.y, 0.f));
gtk_widget_draw (widget, cr);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]