clutter: Use ClutterEvent getter methods

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3153>
This commit is contained in:
Carlos Garnacho 2023-08-04 12:28:04 +02:00
parent 1708becaea
commit 440c249031
7 changed files with 112 additions and 67 deletions

View File

@ -11667,13 +11667,16 @@ clutter_actor_event (ClutterActor *actor,
gboolean retval = FALSE;
gint signal_num = -1;
GQuark detail = 0;
ClutterEventType event_type;
g_return_val_if_fail (CLUTTER_IS_ACTOR (actor), FALSE);
g_return_val_if_fail (event != NULL, FALSE);
g_object_ref (actor);
switch (event->type)
event_type = clutter_event_type (event);
switch (event_type)
{
case CLUTTER_NOTHING:
break;
@ -11758,7 +11761,7 @@ clutter_actor_event (ClutterActor *actor,
g_object_unref (actor);
if (event->type == CLUTTER_ENTER || event->type == CLUTTER_LEAVE)
if (event_type == CLUTTER_ENTER || event_type == CLUTTER_LEAVE)
{
g_warn_if_fail (retval == CLUTTER_EVENT_PROPAGATE);
return CLUTTER_EVENT_PROPAGATE;

View File

@ -179,16 +179,19 @@ clutter_input_focus_filter_event (ClutterInputFocus *focus,
const ClutterEvent *event)
{
ClutterInputFocusPrivate *priv;
ClutterEventType event_type;
g_return_val_if_fail (CLUTTER_IS_INPUT_FOCUS (focus), FALSE);
g_return_val_if_fail (clutter_input_focus_is_focused (focus), FALSE);
priv = clutter_input_focus_get_instance_private (focus);
if (event->type == CLUTTER_KEY_PRESS ||
event->type == CLUTTER_KEY_RELEASE)
event_type = clutter_event_type (event);
if (event_type == CLUTTER_KEY_PRESS ||
event_type == CLUTTER_KEY_RELEASE)
{
return clutter_input_method_filter_key_event (priv->im, &event->key);
return clutter_input_method_filter_key_event (priv->im, (ClutterKeyEvent *) event);
}
return FALSE;
@ -199,31 +202,42 @@ clutter_input_focus_process_event (ClutterInputFocus *focus,
const ClutterEvent *event)
{
ClutterInputFocusPrivate *priv;
ClutterEventType event_type;
g_return_val_if_fail (CLUTTER_IS_INPUT_FOCUS (focus), FALSE);
g_return_val_if_fail (clutter_input_focus_is_focused (focus), FALSE);
priv = clutter_input_focus_get_instance_private (focus);
if (event->type == CLUTTER_IM_COMMIT)
event_type = clutter_event_type (event);
if (event_type == CLUTTER_IM_COMMIT)
{
clutter_input_focus_commit (focus, event->im.text);
clutter_input_focus_commit (focus,
clutter_event_get_im_text (event));
return TRUE;
}
else if (event->type == CLUTTER_IM_DELETE)
else if (event_type == CLUTTER_IM_DELETE)
{
clutter_input_focus_delete_surrounding (focus, event->im.offset,
event->im.len);
int32_t offset;
uint32_t len;
clutter_event_get_im_location (event, &offset, NULL);
len = clutter_event_get_im_delete_length (event);
clutter_input_focus_delete_surrounding (focus, offset, len);
return TRUE;
}
else if (event->type == CLUTTER_IM_PREEDIT)
else if (event_type == CLUTTER_IM_PREEDIT)
{
int32_t offset, anchor;
g_clear_pointer (&priv->preedit, g_free);
priv->preedit = g_strdup (event->im.text);
priv->mode = event->im.mode;
clutter_input_focus_set_preedit_text (focus, event->im.text,
event->im.offset,
event->im.anchor);
priv->preedit = g_strdup (clutter_event_get_im_text (event));
priv->mode = clutter_event_get_im_preedit_reset_mode (event);
clutter_event_get_im_location (event, &offset, &anchor);
clutter_input_focus_set_preedit_text (focus,
priv->preedit,
offset, anchor);
return TRUE;
}

View File

@ -736,13 +736,14 @@ clutter_input_pointer_a11y_update (ClutterInputDevice *device,
ClutterMainContext *clutter_context;
ClutterBackend *backend;
ClutterEventType event_type;
g_return_if_fail (clutter_event_get_device (event) == device);
if (!_clutter_is_input_pointer_a11y_enabled (device))
return;
if ((event->any.flags & CLUTTER_EVENT_FLAG_SYNTHETIC) != 0)
if ((clutter_event_get_flags (event) & CLUTTER_EVENT_FLAG_SYNTHETIC) != 0)
return;
clutter_context = _clutter_context_get_default ();
@ -751,18 +752,20 @@ clutter_input_pointer_a11y_update (ClutterInputDevice *device,
if (!clutter_backend_is_display_server (backend))
return;
if (event->type == CLUTTER_MOTION)
event_type = clutter_event_type (event);
if (event_type == CLUTTER_MOTION)
{
float x, y;
clutter_event_get_coords (event, &x, &y);
_clutter_input_pointer_a11y_on_motion_event (device, x, y);
}
else if (event->type == CLUTTER_BUTTON_PRESS ||
event->type == CLUTTER_BUTTON_RELEASE)
else if (event_type == CLUTTER_BUTTON_PRESS ||
event_type == CLUTTER_BUTTON_RELEASE)
{
_clutter_input_pointer_a11y_on_button_event (device,
event->button.button,
event->type == CLUTTER_BUTTON_PRESS);
clutter_event_get_button (event),
event_type == CLUTTER_BUTTON_PRESS);
}
}

View File

@ -685,8 +685,12 @@ static inline void
emit_event (ClutterStage *stage,
ClutterEvent *event)
{
if (event->type == CLUTTER_KEY_PRESS ||
event->type == CLUTTER_KEY_RELEASE)
ClutterEventType event_type;
event_type = clutter_event_type (event);
if (event_type == CLUTTER_KEY_PRESS ||
event_type == CLUTTER_KEY_RELEASE)
cally_snoop_key_event (stage, (ClutterKeyEvent *) event);
clutter_stage_emit_event (stage, event);
@ -729,7 +733,7 @@ maybe_remove_device_for_event (ClutterStage *stage,
graphene_point_t point;
uint32_t time;
if (event->type == CLUTTER_DEVICE_REMOVED)
if (clutter_event_type (event) == CLUTTER_DEVICE_REMOVED)
{
ClutterInputDeviceType device_type =
clutter_input_device_get_device_type (device);
@ -776,6 +780,7 @@ clutter_stage_handle_event (ClutterStage *stage,
{
ClutterContext *context = _clutter_context_get_default();
ClutterActor *event_actor = NULL;
ClutterEventType event_type;
gboolean filtered;
g_return_if_fail (CLUTTER_IS_STAGE (stage));
@ -785,7 +790,9 @@ clutter_stage_handle_event (ClutterStage *stage,
if (CLUTTER_ACTOR_IN_DESTRUCTION (stage))
return;
switch (event->any.type)
event_type = clutter_event_type (event);
switch (event_type)
{
case CLUTTER_ENTER:
case CLUTTER_MOTION:
@ -798,10 +805,10 @@ clutter_stage_handle_event (ClutterStage *stage,
break;
}
if (event->any.type != CLUTTER_DEVICE_ADDED &&
event->any.type != CLUTTER_DEVICE_REMOVED &&
event->any.type != CLUTTER_NOTHING &&
event->any.type != CLUTTER_EVENT_LAST)
if (event_type != CLUTTER_DEVICE_ADDED &&
event_type != CLUTTER_DEVICE_REMOVED &&
event_type != CLUTTER_NOTHING &&
event_type != CLUTTER_EVENT_LAST)
{
event_actor = clutter_stage_get_event_actor (stage, event);
}
@ -815,11 +822,11 @@ clutter_stage_handle_event (ClutterStage *stage,
if (filtered)
{
if (event->type == CLUTTER_MOTION ||
event->type == CLUTTER_BUTTON_RELEASE ||
event->type == CLUTTER_TOUCH_UPDATE ||
event->type == CLUTTER_TOUCH_END ||
event->type == CLUTTER_TOUCH_CANCEL)
if (event_type == CLUTTER_MOTION ||
event_type == CLUTTER_BUTTON_RELEASE ||
event_type == CLUTTER_TOUCH_UPDATE ||
event_type == CLUTTER_TOUCH_END ||
event_type == CLUTTER_TOUCH_CANCEL)
{
ClutterInputDevice *device = clutter_event_get_device (event);
ClutterEventSequence *sequence = clutter_event_get_event_sequence (event);
@ -832,9 +839,9 @@ clutter_stage_handle_event (ClutterStage *stage,
_clutter_stage_queue_event (stage, event, TRUE);
}
if (event->type == CLUTTER_TOUCH_END ||
event->type == CLUTTER_TOUCH_CANCEL ||
event->type == CLUTTER_DEVICE_REMOVED)
if (event_type == CLUTTER_TOUCH_END ||
event_type == CLUTTER_TOUCH_CANCEL ||
event_type == CLUTTER_DEVICE_REMOVED)
{
_clutter_stage_process_queued_events (stage);
maybe_remove_device_for_event (stage, event, TRUE);
@ -846,7 +853,7 @@ _clutter_process_event_details (ClutterActor *stage,
ClutterMainContext *context,
ClutterEvent *event)
{
switch (event->type)
switch (clutter_event_type (event))
{
case CLUTTER_NOTHING:
break;

View File

@ -641,7 +641,7 @@ clutter_seat_handle_event_post (ClutterSeat *seat,
device = clutter_event_get_source_device (event);
g_assert_true (CLUTTER_IS_INPUT_DEVICE (device));
switch (event->type)
switch (clutter_event_type (event))
{
case CLUTTER_DEVICE_ADDED:
g_signal_emit (seat, signals[DEVICE_ADDED], 0, device);

View File

@ -755,17 +755,21 @@ _clutter_stage_process_queued_events (ClutterStage *stage)
/* Skip consecutive motion events coming from the same device. */
if (next_event != NULL)
{
if (event->type == CLUTTER_MOTION &&
(next_event->type == CLUTTER_MOTION ||
next_event->type == CLUTTER_LEAVE) &&
float x, y;
clutter_event_get_coords (event, &x, &y);
if (clutter_event_type (event) == CLUTTER_MOTION &&
(clutter_event_type (next_event) == CLUTTER_MOTION ||
clutter_event_type (next_event) == CLUTTER_LEAVE) &&
(!check_device || (device == next_device)))
{
CLUTTER_NOTE (EVENT,
"Omitting motion event at %d, %d",
(int) event->motion.x,
(int) event->motion.y);
(int) x,
(int) y);
if (next_event->type == CLUTTER_MOTION)
if (clutter_event_type (next_event) == CLUTTER_MOTION)
{
ClutterEvent *new_event;
@ -781,15 +785,16 @@ _clutter_stage_process_queued_events (ClutterStage *stage)
goto next_event;
}
else if (event->type == CLUTTER_TOUCH_UPDATE &&
next_event->type == CLUTTER_TOUCH_UPDATE &&
event->touch.sequence == next_event->touch.sequence &&
else if (clutter_event_type (event) == CLUTTER_TOUCH_UPDATE &&
clutter_event_type (next_event) == CLUTTER_TOUCH_UPDATE &&
clutter_event_get_event_sequence (event) ==
clutter_event_get_event_sequence (next_event) &&
(!check_device || (device == next_device)))
{
CLUTTER_NOTE (EVENT,
"Omitting touch update event at %d, %d",
(int) event->touch.x,
(int) event->touch.y);
(int) x,
(int) y);
goto next_event;
}
}
@ -4113,7 +4118,7 @@ clutter_stage_get_event_actor (ClutterStage *stage,
g_return_val_if_fail (CLUTTER_IS_STAGE (stage), NULL);
g_return_val_if_fail (event != NULL, NULL);
switch (event->type)
switch (clutter_event_type (event))
{
case CLUTTER_KEY_PRESS:
case CLUTTER_KEY_RELEASE:
@ -4290,13 +4295,16 @@ clutter_stage_emit_event (ClutterStage *self,
PointerDeviceEntry *entry;
ClutterActor *target_actor = NULL, *seat_grab_actor = NULL;
gboolean is_sequence_begin, is_sequence_end;
ClutterEventType event_type;
if (sequence != NULL)
entry = g_hash_table_lookup (priv->touch_sequences, sequence);
else
entry = g_hash_table_lookup (priv->pointer_devices, device);
switch (event->type)
event_type = clutter_event_type (event);
switch (event_type)
{
case CLUTTER_NOTHING:
case CLUTTER_DEVICE_REMOVED:
@ -4358,10 +4366,10 @@ clutter_stage_emit_event (ClutterStage *self,
seat_grab_actor = priv->topmost_grab ? priv->topmost_grab->actor : CLUTTER_ACTOR (self);
is_sequence_begin =
event->type == CLUTTER_BUTTON_PRESS || event->type == CLUTTER_TOUCH_BEGIN;
event_type == CLUTTER_BUTTON_PRESS || event_type == CLUTTER_TOUCH_BEGIN;
is_sequence_end =
event->type == CLUTTER_BUTTON_RELEASE || event->type == CLUTTER_TOUCH_END ||
event->type == CLUTTER_TOUCH_CANCEL;
event_type == CLUTTER_BUTTON_RELEASE || event_type == CLUTTER_TOUCH_END ||
event_type == CLUTTER_TOUCH_CANCEL;
if (is_sequence_begin && setup_implicit_grab (entry))
{
@ -4393,7 +4401,7 @@ clutter_stage_emit_event (ClutterStage *self,
if (is_sequence_end && release_implicit_grab (entry))
{
/* Sync crossings after the implicit grab for mice */
if (event->type == CLUTTER_BUTTON_RELEASE)
if (event_type == CLUTTER_BUTTON_RELEASE)
sync_crossings_on_implicit_grab_end (self, entry);
cleanup_implicit_grab (entry);

View File

@ -2389,7 +2389,7 @@ static gboolean
clutter_text_touch_event (ClutterActor *actor,
ClutterTouchEvent *event)
{
switch (event->type)
switch (clutter_event_type ((ClutterEvent *) event))
{
case CLUTTER_TOUCH_BEGIN:
return clutter_text_press (actor, (ClutterEvent *) event);
@ -2430,6 +2430,9 @@ clutter_text_key_press (ClutterActor *actor,
ClutterText *self = CLUTTER_TEXT (actor);
ClutterTextPrivate *priv = self->priv;
ClutterBindingPool *pool;
ClutterEventFlags flags;
ClutterModifierType modifiers;
uint32_t keyval;
gboolean res;
if (!priv->editable)
@ -2442,7 +2445,11 @@ clutter_text_key_press (ClutterActor *actor,
pool = clutter_binding_pool_find (g_type_name (CLUTTER_TYPE_TEXT));
g_assert (pool != NULL);
if (!(event->flags & CLUTTER_EVENT_FLAG_INPUT_METHOD) &&
flags = clutter_event_get_flags ((ClutterEvent *) event);
keyval = clutter_event_get_key_symbol ((ClutterEvent *) event);
modifiers = clutter_event_get_state ((ClutterEvent *) event);
if (!(flags & CLUTTER_EVENT_FLAG_INPUT_METHOD) &&
clutter_input_focus_is_focused (priv->input_focus) &&
clutter_input_focus_filter_event (priv->input_focus,
(ClutterEvent *) event))
@ -2452,12 +2459,12 @@ clutter_text_key_press (ClutterActor *actor,
* the Unicode value and not the key symbol, unless they
* contain the input method flag.
*/
if (event->keyval == 0 && (event->flags & CLUTTER_EVENT_FLAG_SYNTHETIC) &&
!(event->flags & CLUTTER_EVENT_FLAG_INPUT_METHOD))
if (keyval == 0 && (flags & CLUTTER_EVENT_FLAG_SYNTHETIC) &&
!(flags & CLUTTER_EVENT_FLAG_INPUT_METHOD))
res = FALSE;
else
res = clutter_binding_pool_activate (pool, event->keyval,
event->modifier_state,
res = clutter_binding_pool_activate (pool, keyval,
modifiers,
G_OBJECT (actor));
/* if the key binding has handled the event we bail out
@ -2467,7 +2474,7 @@ clutter_text_key_press (ClutterActor *actor,
*/
if (res)
return CLUTTER_EVENT_STOP;
else if ((event->modifier_state & CLUTTER_CONTROL_MASK) == 0)
else if ((modifiers & CLUTTER_CONTROL_MASK) == 0)
{
gunichar key_unichar;
@ -3074,11 +3081,14 @@ clutter_text_event (ClutterActor *self,
{
ClutterText *text = CLUTTER_TEXT (self);
ClutterTextPrivate *priv = text->priv;
ClutterEventType event_type;
event_type = clutter_event_type (event);
if (clutter_input_focus_is_focused (priv->input_focus) &&
(event->type == CLUTTER_IM_COMMIT ||
event->type == CLUTTER_IM_DELETE ||
event->type == CLUTTER_IM_PREEDIT))
(event_type == CLUTTER_IM_COMMIT ||
event_type == CLUTTER_IM_DELETE ||
event_type == CLUTTER_IM_PREEDIT))
{
return clutter_input_focus_process_event (priv->input_focus, event);
}