mirror of
https://github.com/brl/mutter.git
synced 2024-12-23 11:32:04 +00:00
clutter: Work out stage from actor on which to emit crossing
Don't rely on the device stage. https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
This commit is contained in:
parent
c9efadacd1
commit
89cefd037f
@ -785,10 +785,22 @@ _clutter_input_device_set_actor (ClutterInputDevice *device,
|
|||||||
gboolean emit_crossing)
|
gboolean emit_crossing)
|
||||||
{
|
{
|
||||||
ClutterActor *old_actor = clutter_input_device_get_actor (device, sequence);
|
ClutterActor *old_actor = clutter_input_device_get_actor (device, sequence);
|
||||||
|
ClutterStage *stage = NULL;
|
||||||
|
|
||||||
if (old_actor == actor)
|
if (old_actor == actor)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (emit_crossing)
|
||||||
|
{
|
||||||
|
if (actor)
|
||||||
|
stage = CLUTTER_STAGE (clutter_actor_get_stage (actor));
|
||||||
|
else if (old_actor)
|
||||||
|
stage = CLUTTER_STAGE (clutter_actor_get_stage (old_actor));
|
||||||
|
|
||||||
|
if (!stage)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (old_actor != NULL)
|
if (old_actor != NULL)
|
||||||
{
|
{
|
||||||
ClutterActor *tmp_old_actor;
|
ClutterActor *tmp_old_actor;
|
||||||
@ -800,7 +812,7 @@ _clutter_input_device_set_actor (ClutterInputDevice *device,
|
|||||||
event = clutter_event_new (CLUTTER_LEAVE);
|
event = clutter_event_new (CLUTTER_LEAVE);
|
||||||
event->crossing.time = device->current_time;
|
event->crossing.time = device->current_time;
|
||||||
event->crossing.flags = 0;
|
event->crossing.flags = 0;
|
||||||
event->crossing.stage = device->stage;
|
event->crossing.stage = stage;
|
||||||
event->crossing.source = old_actor;
|
event->crossing.source = old_actor;
|
||||||
event->crossing.x = device->current_x;
|
event->crossing.x = device->current_x;
|
||||||
event->crossing.y = device->current_y;
|
event->crossing.y = device->current_y;
|
||||||
@ -837,7 +849,7 @@ _clutter_input_device_set_actor (ClutterInputDevice *device,
|
|||||||
event = clutter_event_new (CLUTTER_ENTER);
|
event = clutter_event_new (CLUTTER_ENTER);
|
||||||
event->crossing.time = device->current_time;
|
event->crossing.time = device->current_time;
|
||||||
event->crossing.flags = 0;
|
event->crossing.flags = 0;
|
||||||
event->crossing.stage = device->stage;
|
event->crossing.stage = stage;
|
||||||
event->crossing.x = device->current_x;
|
event->crossing.x = device->current_x;
|
||||||
event->crossing.y = device->current_y;
|
event->crossing.y = device->current_y;
|
||||||
event->crossing.source = actor;
|
event->crossing.source = actor;
|
||||||
|
Loading…
Reference in New Issue
Block a user