From: Timm Bäder Date: Thu, 12 Apr 2018 08:06:16 +0000 (+0200) Subject: snapshot: don't create offset nodes inside offset nodes X-Git-Tag: archive/raspbian/4.4.1+ds1-2+rpi1^2~18^2~22^2~507 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=c18219c5a8ca32ebe4a7cd7d86409a9d2228b48f;p=gtk4.git snapshot: don't create offset nodes inside offset nodes It's pretty easy to make that one offset node. --- diff --git a/gtk/gtksnapshot.c b/gtk/gtksnapshot.c index ad7b2d358a..0166660e90 100644 --- a/gtk/gtksnapshot.c +++ b/gtk/gtksnapshot.c @@ -430,9 +430,22 @@ gtk_snapshot_collect_offset (GtkSnapshot *snapshot, previous_state->translate_y == 0.0) return node; - offset_node = gsk_offset_node_new (node, - previous_state->translate_x, - previous_state->translate_y); + if (gsk_render_node_get_node_type (node) == GSK_OFFSET_NODE) + { + const float dx = previous_state->translate_x; + const float dy = previous_state->translate_y; + + offset_node = gsk_offset_node_new (gsk_offset_node_get_child (node), + gsk_offset_node_get_x_offset (node) + dx, + gsk_offset_node_get_y_offset (node) + dy); + } + else + { + offset_node = gsk_offset_node_new (node, + previous_state->translate_x, + previous_state->translate_y); + } + if (name) gsk_render_node_set_name (offset_node, name);