forked from AuroraMiddleware/gtk
snapshot: Repeat color nodes by creating a larger color node
This commit is contained in:
parent
587bc82c37
commit
4788f88840
@ -547,13 +547,25 @@ gtk_snapshot_collect_repeat (GtkSnapshot *snapshot,
|
||||
guint n_nodes)
|
||||
{
|
||||
GskRenderNode *node, *repeat_node;
|
||||
graphene_rect_t *bounds = &state->data.repeat.bounds;
|
||||
graphene_rect_t *child_bounds = &state->data.repeat.child_bounds;
|
||||
const graphene_rect_t *bounds = &state->data.repeat.bounds;
|
||||
const graphene_rect_t *child_bounds = &state->data.repeat.child_bounds;
|
||||
|
||||
node = gtk_snapshot_collect_default (snapshot, state, nodes, n_nodes);
|
||||
if (node == NULL)
|
||||
return NULL;
|
||||
|
||||
if (gsk_render_node_get_node_type (node) == GSK_COLOR_NODE &&
|
||||
graphene_rect_equal (child_bounds, &node->bounds))
|
||||
{
|
||||
/* Repeating a color node entirely is pretty easy by just increasing
|
||||
* the size of the color node. */
|
||||
GskRenderNode *color_node = gsk_color_node_new (gsk_color_node_peek_color (node), bounds);
|
||||
|
||||
gsk_render_node_unref (node);
|
||||
|
||||
return color_node;
|
||||
}
|
||||
|
||||
repeat_node = gsk_repeat_node_new (bounds,
|
||||
node,
|
||||
child_bounds->size.width > 0 ? child_bounds : NULL);
|
||||
|
Loading…
Reference in New Issue
Block a user