From 794962327e5863f082c8c64fa82ec2ae7e2c5b75 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Tue, 22 Dec 2020 17:25:48 +0100 Subject: [PATCH] clutter/main: Change picked actor before emitting crossing events Updating the state before emitting the CLUTTER_LEAVE event allows its handlers to query the pointer actor, and avoid getting the same actor again. Conceptually, this makes picking more "atomic", and the events a notification of the change. Part-of: --- clutter/clutter/clutter-main.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/clutter/clutter/clutter-main.c b/clutter/clutter/clutter-main.c index 2b57079cc..1ce532012 100644 --- a/clutter/clutter/clutter-main.c +++ b/clutter/clutter/clutter-main.c @@ -1608,6 +1608,11 @@ clutter_stage_update_device (ClutterStage *stage, old_actor = clutter_stage_get_device_actor (stage, device, sequence); device_actor_changed = new_actor != old_actor; + clutter_stage_update_device_entry (stage, + device, sequence, + point, + new_actor); + if (device_actor_changed) { CLUTTER_NOTE (EVENT, @@ -1625,15 +1630,7 @@ clutter_stage_update_device (ClutterStage *stage, old_actor, new_actor, point, time); } - } - clutter_stage_update_device_entry (stage, - device, sequence, - point, - new_actor); - - if (device_actor_changed) - { if (new_actor && emit_crossing) { create_crossing_event (stage,