core: Refactor strip/ring direction guessing in action handling
Make it all happen in meta_pad_action_mapper_handle_action(), since we'll need better handling here than just "return FALSE". Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2001>
This commit is contained in:
parent
101cae03f3
commit
952caf6b71
@ -581,34 +581,6 @@ meta_pad_action_mapper_handle_button (MetaPadActionMapper *mapper,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
|
||||||
meta_pad_action_mapper_handle_action (MetaPadActionMapper *mapper,
|
|
||||||
ClutterInputDevice *pad,
|
|
||||||
MetaPadActionType action,
|
|
||||||
guint number,
|
|
||||||
MetaPadDirection direction,
|
|
||||||
guint mode)
|
|
||||||
{
|
|
||||||
GSettings *settings;
|
|
||||||
gboolean handled = FALSE;
|
|
||||||
char *accel;
|
|
||||||
|
|
||||||
settings = lookup_pad_action_settings (pad, action, number, direction, mode);
|
|
||||||
accel = g_settings_get_string (settings, "keybinding");
|
|
||||||
|
|
||||||
if (accel && *accel)
|
|
||||||
{
|
|
||||||
meta_pad_action_mapper_emulate_keybinding (mapper, accel, TRUE);
|
|
||||||
meta_pad_action_mapper_emulate_keybinding (mapper, accel, FALSE);
|
|
||||||
handled = TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
g_object_unref (settings);
|
|
||||||
g_free (accel);
|
|
||||||
|
|
||||||
return handled;
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
meta_pad_action_mapper_get_action_direction (MetaPadActionMapper *mapper,
|
meta_pad_action_mapper_get_action_direction (MetaPadActionMapper *mapper,
|
||||||
const ClutterEvent *event,
|
const ClutterEvent *event,
|
||||||
@ -660,12 +632,44 @@ meta_pad_action_mapper_get_action_direction (MetaPadActionMapper *mapper,
|
|||||||
return has_direction;
|
return has_direction;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
meta_pad_action_mapper_handle_action (MetaPadActionMapper *mapper,
|
||||||
|
ClutterInputDevice *pad,
|
||||||
|
const ClutterEvent *event,
|
||||||
|
MetaPadActionType action,
|
||||||
|
guint number,
|
||||||
|
guint mode)
|
||||||
|
{
|
||||||
|
MetaPadDirection direction = = META_PAD_DIRECTION_NONE;
|
||||||
|
GSettings *settings;
|
||||||
|
gboolean handled = FALSE;
|
||||||
|
char *accel;
|
||||||
|
|
||||||
|
if (!meta_pad_action_mapper_get_action_direction (mapper,
|
||||||
|
event, &direction))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
settings = lookup_pad_action_settings (pad, action, number, direction, mode);
|
||||||
|
accel = g_settings_get_string (settings, "keybinding");
|
||||||
|
|
||||||
|
if (accel && *accel)
|
||||||
|
{
|
||||||
|
meta_pad_action_mapper_emulate_keybinding (mapper, accel, TRUE);
|
||||||
|
meta_pad_action_mapper_emulate_keybinding (mapper, accel, FALSE);
|
||||||
|
handled = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
g_object_unref (settings);
|
||||||
|
g_free (accel);
|
||||||
|
|
||||||
|
return handled;
|
||||||
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
meta_pad_action_mapper_handle_event (MetaPadActionMapper *mapper,
|
meta_pad_action_mapper_handle_event (MetaPadActionMapper *mapper,
|
||||||
const ClutterEvent *event)
|
const ClutterEvent *event)
|
||||||
{
|
{
|
||||||
ClutterInputDevice *pad;
|
ClutterInputDevice *pad;
|
||||||
MetaPadDirection direction = META_PAD_DIRECTION_NONE;
|
|
||||||
|
|
||||||
pad = clutter_event_get_source_device ((ClutterEvent *) event);
|
pad = clutter_event_get_source_device ((ClutterEvent *) event);
|
||||||
|
|
||||||
@ -676,22 +680,14 @@ meta_pad_action_mapper_handle_event (MetaPadActionMapper *mapper,
|
|||||||
return meta_pad_action_mapper_handle_button (mapper, pad,
|
return meta_pad_action_mapper_handle_button (mapper, pad,
|
||||||
&event->pad_button);
|
&event->pad_button);
|
||||||
case CLUTTER_PAD_RING:
|
case CLUTTER_PAD_RING:
|
||||||
if (!meta_pad_action_mapper_get_action_direction (mapper,
|
return meta_pad_action_mapper_handle_action (mapper, pad, event,
|
||||||
event, &direction))
|
|
||||||
return FALSE;
|
|
||||||
return meta_pad_action_mapper_handle_action (mapper, pad,
|
|
||||||
META_PAD_ACTION_RING,
|
META_PAD_ACTION_RING,
|
||||||
event->pad_ring.ring_number,
|
event->pad_ring.ring_number,
|
||||||
direction,
|
|
||||||
event->pad_ring.mode);
|
event->pad_ring.mode);
|
||||||
case CLUTTER_PAD_STRIP:
|
case CLUTTER_PAD_STRIP:
|
||||||
if (!meta_pad_action_mapper_get_action_direction (mapper,
|
return meta_pad_action_mapper_handle_action (mapper, pad, event,
|
||||||
event, &direction))
|
|
||||||
return FALSE;
|
|
||||||
return meta_pad_action_mapper_handle_action (mapper, pad,
|
|
||||||
META_PAD_ACTION_STRIP,
|
META_PAD_ACTION_STRIP,
|
||||||
event->pad_strip.strip_number,
|
event->pad_strip.strip_number,
|
||||||
direction,
|
|
||||||
event->pad_strip.mode);
|
event->pad_strip.mode);
|
||||||
default:
|
default:
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user