mirror of
https://github.com/brl/mutter.git
synced 2025-02-08 01:24:10 +00:00
clutter: Pass base event to clutter_input_device_update()
So we may fetch coordinates without necessarily querying the device state. https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
This commit is contained in:
parent
b13fe4895f
commit
da55f15156
@ -182,7 +182,7 @@ ClutterActor * clutter_input_device_update (ClutterInputDevice *device,
|
|||||||
ClutterEventSequence *sequence,
|
ClutterEventSequence *sequence,
|
||||||
ClutterStage *stage,
|
ClutterStage *stage,
|
||||||
gboolean emit_crossing,
|
gboolean emit_crossing,
|
||||||
uint32_t time_);
|
ClutterEvent *for_event);
|
||||||
CLUTTER_EXPORT
|
CLUTTER_EXPORT
|
||||||
void _clutter_input_device_add_event_sequence (ClutterInputDevice *device,
|
void _clutter_input_device_add_event_sequence (ClutterInputDevice *device,
|
||||||
ClutterEvent *event);
|
ClutterEvent *event);
|
||||||
|
@ -714,6 +714,7 @@ _clutter_input_device_set_actor (ClutterInputDevice *device,
|
|||||||
ClutterEventSequence *sequence,
|
ClutterEventSequence *sequence,
|
||||||
ClutterActor *actor,
|
ClutterActor *actor,
|
||||||
gboolean emit_crossing,
|
gboolean emit_crossing,
|
||||||
|
graphene_point_t coords,
|
||||||
uint32_t time_)
|
uint32_t time_)
|
||||||
{
|
{
|
||||||
ClutterActor *old_actor = clutter_input_device_get_actor (device, sequence);
|
ClutterActor *old_actor = clutter_input_device_get_actor (device, sequence);
|
||||||
@ -746,8 +747,8 @@ _clutter_input_device_set_actor (ClutterInputDevice *device,
|
|||||||
event->crossing.flags = 0;
|
event->crossing.flags = 0;
|
||||||
event->crossing.stage = stage;
|
event->crossing.stage = stage;
|
||||||
event->crossing.source = old_actor;
|
event->crossing.source = old_actor;
|
||||||
event->crossing.x = device->current_x;
|
event->crossing.x = coords.x;
|
||||||
event->crossing.y = device->current_y;
|
event->crossing.y = coords.y;
|
||||||
event->crossing.related = actor;
|
event->crossing.related = actor;
|
||||||
event->crossing.sequence = sequence;
|
event->crossing.sequence = sequence;
|
||||||
clutter_event_set_device (event, device);
|
clutter_event_set_device (event, device);
|
||||||
@ -782,8 +783,8 @@ _clutter_input_device_set_actor (ClutterInputDevice *device,
|
|||||||
event->crossing.time = time_;
|
event->crossing.time = time_;
|
||||||
event->crossing.flags = 0;
|
event->crossing.flags = 0;
|
||||||
event->crossing.stage = stage;
|
event->crossing.stage = stage;
|
||||||
event->crossing.x = device->current_x;
|
event->crossing.x = coords.x;
|
||||||
event->crossing.y = device->current_y;
|
event->crossing.y = coords.y;
|
||||||
event->crossing.source = actor;
|
event->crossing.source = actor;
|
||||||
event->crossing.related = old_actor;
|
event->crossing.related = old_actor;
|
||||||
event->crossing.sequence = sequence;
|
event->crossing.sequence = sequence;
|
||||||
@ -934,17 +935,27 @@ clutter_input_device_update (ClutterInputDevice *device,
|
|||||||
ClutterEventSequence *sequence,
|
ClutterEventSequence *sequence,
|
||||||
ClutterStage *stage,
|
ClutterStage *stage,
|
||||||
gboolean emit_crossing,
|
gboolean emit_crossing,
|
||||||
uint32_t time_)
|
ClutterEvent *for_event)
|
||||||
{
|
{
|
||||||
ClutterActor *new_cursor_actor;
|
ClutterActor *new_cursor_actor;
|
||||||
ClutterActor *old_cursor_actor;
|
ClutterActor *old_cursor_actor;
|
||||||
graphene_point_t point = GRAPHENE_POINT_INIT (-1.0f, -1.0f);
|
graphene_point_t point = GRAPHENE_POINT_INIT (-1.0f, -1.0f);
|
||||||
ClutterInputDeviceType device_type = device->device_type;
|
ClutterInputDeviceType device_type = device->device_type;
|
||||||
|
uint32_t time_;
|
||||||
|
|
||||||
g_assert (device_type != CLUTTER_KEYBOARD_DEVICE &&
|
g_assert (device_type != CLUTTER_KEYBOARD_DEVICE &&
|
||||||
device_type != CLUTTER_PAD_DEVICE);
|
device_type != CLUTTER_PAD_DEVICE);
|
||||||
|
|
||||||
clutter_input_device_get_coords (device, sequence, &point);
|
if (for_event)
|
||||||
|
{
|
||||||
|
clutter_event_get_coords (for_event, &point.x, &point.y);
|
||||||
|
time_ = clutter_event_get_time (for_event);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
clutter_input_device_get_coords (device, sequence, &point);
|
||||||
|
time_ = CLUTTER_CURRENT_TIME;
|
||||||
|
}
|
||||||
|
|
||||||
old_cursor_actor = clutter_input_device_get_actor (device, sequence);
|
old_cursor_actor = clutter_input_device_get_actor (device, sequence);
|
||||||
new_cursor_actor =
|
new_cursor_actor =
|
||||||
@ -972,7 +983,7 @@ clutter_input_device_update (ClutterInputDevice *device,
|
|||||||
_clutter_input_device_set_actor (device, sequence,
|
_clutter_input_device_set_actor (device, sequence,
|
||||||
new_cursor_actor,
|
new_cursor_actor,
|
||||||
emit_crossing,
|
emit_crossing,
|
||||||
time_);
|
point, time_);
|
||||||
|
|
||||||
return new_cursor_actor;
|
return new_cursor_actor;
|
||||||
}
|
}
|
||||||
@ -1564,12 +1575,14 @@ _clutter_input_device_remove_event_sequence (ClutterInputDevice *device,
|
|||||||
{
|
{
|
||||||
GList *sequences =
|
GList *sequences =
|
||||||
g_hash_table_lookup (device->inv_touch_sequence_actors, info->actor);
|
g_hash_table_lookup (device->inv_touch_sequence_actors, info->actor);
|
||||||
|
graphene_point_t point;
|
||||||
|
|
||||||
sequences = g_list_remove (sequences, sequence);
|
sequences = g_list_remove (sequences, sequence);
|
||||||
|
|
||||||
g_hash_table_replace (device->inv_touch_sequence_actors,
|
g_hash_table_replace (device->inv_touch_sequence_actors,
|
||||||
info->actor, sequences);
|
info->actor, sequences);
|
||||||
_clutter_input_device_set_actor (device, sequence, NULL, TRUE,
|
clutter_event_get_coords (event, &point.x, &point.y);
|
||||||
|
_clutter_input_device_set_actor (device, sequence, NULL, TRUE, point,
|
||||||
clutter_event_get_time (event));
|
clutter_event_get_time (event));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1623,7 +1623,7 @@ _clutter_process_event_details (ClutterActor *stage,
|
|||||||
|
|
||||||
actor = clutter_input_device_update (device, NULL,
|
actor = clutter_input_device_update (device, NULL,
|
||||||
CLUTTER_STAGE (stage), FALSE,
|
CLUTTER_STAGE (stage), FALSE,
|
||||||
clutter_event_get_time (event));
|
event);
|
||||||
if (actor != stage)
|
if (actor != stage)
|
||||||
{
|
{
|
||||||
ClutterEvent *crossing;
|
ClutterEvent *crossing;
|
||||||
@ -1774,8 +1774,7 @@ _clutter_process_event_details (ClutterActor *stage,
|
|||||||
|
|
||||||
actor = clutter_input_device_update (device, NULL,
|
actor = clutter_input_device_update (device, NULL,
|
||||||
CLUTTER_STAGE (stage),
|
CLUTTER_STAGE (stage),
|
||||||
TRUE,
|
TRUE, event);
|
||||||
clutter_event_get_time (event));
|
|
||||||
if (actor == NULL)
|
if (actor == NULL)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -1885,8 +1884,7 @@ _clutter_process_event_details (ClutterActor *stage,
|
|||||||
|
|
||||||
actor = clutter_input_device_update (device, sequence,
|
actor = clutter_input_device_update (device, sequence,
|
||||||
CLUTTER_STAGE (stage),
|
CLUTTER_STAGE (stage),
|
||||||
TRUE,
|
TRUE, event);
|
||||||
clutter_event_get_time (event));
|
|
||||||
if (actor == NULL)
|
if (actor == NULL)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1361,8 +1361,7 @@ clutter_stage_update_devices (ClutterStage *stage,
|
|||||||
for (l = devices; l; l = l->next)
|
for (l = devices; l; l = l->next)
|
||||||
{
|
{
|
||||||
ClutterInputDevice *device = l->data;
|
ClutterInputDevice *device = l->data;
|
||||||
clutter_input_device_update (device, NULL, stage, TRUE,
|
clutter_input_device_update (device, NULL, stage, TRUE, NULL);
|
||||||
CLUTTER_CURRENT_TIME);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user