From 9475b872c0d6c5d85587734a80252e26279e1c47 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Wed, 25 Aug 2021 16:34:43 +0200 Subject: [PATCH] clutter: Trigger immediate repick when pick actor is destroyed Traditionally, the next repaint would also involve picking, which would correct the actor under the pointer. This now does not happen out of the box, so we really are waiting for the next pointer event here. To avoid the pointer/cursor to lag behind, trigger an immediate repick here, that will look up the new actor under the pointer coordinates. Part-of: --- clutter/clutter/clutter-stage.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/clutter/clutter/clutter-stage.c b/clutter/clutter/clutter-stage.c index 03c7205a2..2c235ba6f 100644 --- a/clutter/clutter/clutter-stage.c +++ b/clutter/clutter/clutter-stage.c @@ -3269,12 +3269,10 @@ on_device_actor_destroyed (ClutterActor *actor, /* Simply unset the current_actor pointer here, there's no need to * unset has_pointer or to disconnect any signals because the actor * is gone anyway. - * Also, as soon as the next repaint happens, a repick should be triggered - * and the PointerDeviceEntry will get updated again, so no need to - * trigger a repick here. */ entry->current_actor = NULL; g_clear_pointer (&entry->clear_area, cairo_region_destroy); + clutter_stage_repick_device (entry->stage, entry->device); } static void