diff options
author | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2020-10-17 12:34:22 -0300 |
---|---|---|
committer | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2020-10-23 19:43:07 -0300 |
commit | d6206c64d29e0ed0838a8649bd0f408910bcfeba (patch) | |
tree | 26ccada0408a2a1331564968f968928808599205 | |
parent | f5d1a2858d2a54f0344648ead219c553cd482737 (diff) | |
download | gnome-shell-gbsneto/graphene-ray.tar.gz |
Adapt to pick changesgbsneto/graphene-ray
It turns out, StViewport's pick implementation was broken, since
Clutter stopped reading clipping from the framebuffer. Rejoice with
bugfixing by removing code!
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1470
-rw-r--r-- | src/st/st-viewport.c | 23 |
1 files changed, 4 insertions, 19 deletions
diff --git a/src/st/st-viewport.c b/src/st/st-viewport.c index 864b04404..3ed2d89e1 100644 --- a/src/st/st-viewport.c +++ b/src/st/st-viewport.c @@ -434,39 +434,24 @@ st_viewport_pick (ClutterActor *actor, ClutterActorBox allocation_box; ClutterActorBox content_box; ClutterActor *child; - CoglFramebuffer *fb = clutter_pick_context_get_framebuffer (pick_context); - - get_border_paint_offsets (viewport, &x, &y); - if (x != 0 || y != 0) - { - cogl_framebuffer_push_matrix (fb); - cogl_framebuffer_translate (fb, (int)x, (int)y, 0); - } CLUTTER_ACTOR_CLASS (st_viewport_parent_class)->pick (actor, pick_context); - if (x != 0 || y != 0) - cogl_framebuffer_pop_matrix (fb); - if (clutter_actor_get_n_children (actor) == 0) return; clutter_actor_get_allocation_box (actor, &allocation_box); st_theme_node_get_content_box (theme_node, &allocation_box, &content_box); + get_border_paint_offsets (viewport, &x, &y); + content_box.x1 += x; content_box.y1 += y; content_box.x2 += x; content_box.y2 += y; if (priv->hadjustment || priv->vadjustment) - { - cogl_framebuffer_push_rectangle_clip (fb, - (int)content_box.x1, - (int)content_box.y1, - (int)content_box.x2, - (int)content_box.y2); - } + clutter_pick_context_push_clip (pick_context, &content_box); for (child = clutter_actor_get_first_child (actor); child != NULL; @@ -474,7 +459,7 @@ st_viewport_pick (ClutterActor *actor, clutter_actor_pick (child, pick_context); if (priv->hadjustment || priv->vadjustment) - cogl_framebuffer_pop_clip (fb); + clutter_pick_context_pop_clip (pick_context); } static gboolean |