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
@ -430,33 +430,6 @@ emit_event (ClutterStage *stage,
|
|||||||
clutter_stage_emit_event (stage, event);
|
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
|
static void
|
||||||
maybe_remove_device_for_event (ClutterStage *stage,
|
maybe_remove_device_for_event (ClutterStage *stage,
|
||||||
ClutterEvent *event,
|
ClutterEvent *event,
|
||||||
@ -538,7 +511,7 @@ clutter_stage_handle_event (ClutterStage *stage,
|
|||||||
case CLUTTER_TOUCHPAD_HOLD:
|
case CLUTTER_TOUCHPAD_HOLD:
|
||||||
case CLUTTER_PROXIMITY_IN:
|
case CLUTTER_PROXIMITY_IN:
|
||||||
case CLUTTER_SCROLL:
|
case CLUTTER_SCROLL:
|
||||||
update_device_for_event (stage, event, TRUE);
|
clutter_stage_update_device_for_event (stage, event);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -156,4 +156,7 @@ void clutter_stage_invalidate_devices (ClutterStage *stage);
|
|||||||
|
|
||||||
GPtrArray * clutter_stage_get_active_gestures_array (ClutterStage *self);
|
GPtrArray * clutter_stage_get_active_gestures_array (ClutterStage *self);
|
||||||
|
|
||||||
|
ClutterActor * clutter_stage_update_device_for_event (ClutterStage *stage,
|
||||||
|
ClutterEvent *event);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
@ -4601,3 +4601,28 @@ clutter_stage_get_active_gestures_array (ClutterStage *self)
|
|||||||
|
|
||||||
return priv->all_active_gestures;
|
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…
x
Reference in New Issue
Block a user