clutter: Add ClutterStage function to repick from event
Instead of doing that in clutter-main.c code, move it together with the rest of picking calls to ClutterStage. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3696>
This commit is contained in:
parent
22d0ff569a
commit
5220bc61b4
3 changed files with 29 additions and 28 deletions
|
@ -430,33 +430,6 @@ emit_event (ClutterStage *stage,
|
|||
clutter_stage_emit_event (stage, event);
|
||||
}
|
||||
|
||||
static ClutterActor *
|
||||
update_device_for_event (ClutterStage *stage,
|
||||
ClutterEvent *event,
|
||||
gboolean emit_crossing)
|
||||
{
|
||||
ClutterInputDevice *device = clutter_event_get_device (event);
|
||||
ClutterInputDevice *source_device = clutter_event_get_source_device (event);
|
||||
ClutterEventSequence *sequence = clutter_event_get_event_sequence (event);
|
||||
ClutterDeviceUpdateFlags flags = CLUTTER_DEVICE_UPDATE_NONE;
|
||||
graphene_point_t point;
|
||||
uint32_t time_ms;
|
||||
|
||||
clutter_event_get_coords (event, &point.x, &point.y);
|
||||
time_ms = clutter_event_get_time (event);
|
||||
|
||||
if (emit_crossing)
|
||||
flags |= CLUTTER_DEVICE_UPDATE_EMIT_CROSSING;
|
||||
|
||||
return clutter_stage_pick_and_update_device (stage,
|
||||
device,
|
||||
sequence,
|
||||
source_device,
|
||||
flags,
|
||||
point,
|
||||
time_ms);
|
||||
}
|
||||
|
||||
static void
|
||||
maybe_remove_device_for_event (ClutterStage *stage,
|
||||
ClutterEvent *event,
|
||||
|
@ -538,7 +511,7 @@ clutter_stage_handle_event (ClutterStage *stage,
|
|||
case CLUTTER_TOUCHPAD_HOLD:
|
||||
case CLUTTER_PROXIMITY_IN:
|
||||
case CLUTTER_SCROLL:
|
||||
update_device_for_event (stage, event, TRUE);
|
||||
clutter_stage_update_device_for_event (stage, event);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
|
|
@ -156,4 +156,7 @@ void clutter_stage_invalidate_devices (ClutterStage *stage);
|
|||
|
||||
GPtrArray * clutter_stage_get_active_gestures_array (ClutterStage *self);
|
||||
|
||||
ClutterActor * clutter_stage_update_device_for_event (ClutterStage *stage,
|
||||
ClutterEvent *event);
|
||||
|
||||
G_END_DECLS
|
||||
|
|
|
@ -4601,3 +4601,28 @@ clutter_stage_get_active_gestures_array (ClutterStage *self)
|
|||
|
||||
return priv->all_active_gestures;
|
||||
}
|
||||
|
||||
ClutterActor *
|
||||
clutter_stage_update_device_for_event (ClutterStage *stage,
|
||||
ClutterEvent *event)
|
||||
{
|
||||
ClutterInputDevice *device = clutter_event_get_device (event);
|
||||
ClutterInputDevice *source_device = clutter_event_get_source_device (event);
|
||||
ClutterEventSequence *sequence = clutter_event_get_event_sequence (event);
|
||||
ClutterDeviceUpdateFlags flags;
|
||||
graphene_point_t point;
|
||||
uint32_t time_ms;
|
||||
|
||||
clutter_event_get_coords (event, &point.x, &point.y);
|
||||
time_ms = clutter_event_get_time (event);
|
||||
|
||||
flags = CLUTTER_DEVICE_UPDATE_EMIT_CROSSING;
|
||||
|
||||
return clutter_stage_pick_and_update_device (stage,
|
||||
device,
|
||||
sequence,
|
||||
source_device,
|
||||
flags,
|
||||
point,
|
||||
time_ms);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue