[mutter/wip/carlosg/grabs-pt3: 2/5] clutter: Remove input device grabs
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/wip/carlosg/grabs-pt3: 2/5] clutter: Remove input device grabs
- Date: Sat, 29 Jan 2022 10:23:21 +0000 (UTC)
commit ac4face82acffb27c638ad9a78fd74adfc1fb56d
Author: Carlos Garnacho <carlosg gnome org>
Date: Fri Nov 19 16:45:17 2021 +0100
clutter: Remove input device grabs
Both device-global and input-sequence-local. These are no longer used,
in favor of ClutterGrab.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2100>
clutter/clutter/clutter-input-device-private.h | 6 -
clutter/clutter/clutter-input-device.c | 297 -------------------------
clutter/clutter/clutter-input-device.h | 19 --
clutter/clutter/clutter-main.c | 48 +---
4 files changed, 4 insertions(+), 366 deletions(-)
---
diff --git a/clutter/clutter/clutter-input-device-private.h b/clutter/clutter/clutter-input-device-private.h
index 91f6e8e1c0..26dd2f11b0 100644
--- a/clutter/clutter/clutter-input-device-private.h
+++ b/clutter/clutter/clutter-input-device-private.h
@@ -53,12 +53,6 @@ struct _ClutterInputDevice
{
GObject parent_instance;
- /* the actor that has a grab in place for the device */
- ClutterActor *pointer_grab_actor;
- ClutterActor *keyboard_grab_actor;
- GHashTable *sequence_grab_actors;
- GHashTable *inv_sequence_grab_actors;
-
/* Accessiblity */
ClutterVirtualInputDevice *accessibility_virtual_device;
ClutterPtrA11yData *ptr_a11y_data;
diff --git a/clutter/clutter/clutter-input-device.c b/clutter/clutter/clutter-input-device.c
index 5a496f09c7..a37886e46a 100644
--- a/clutter/clutter/clutter-input-device.c
+++ b/clutter/clutter/clutter-input-device.c
@@ -518,303 +518,6 @@ clutter_input_device_get_device_mode (ClutterInputDevice *device)
return priv->device_mode;
}
-static void
-on_grab_actor_destroy (ClutterActor *actor,
- ClutterInputDevice *device)
-{
- ClutterInputDevicePrivate *priv =
- clutter_input_device_get_instance_private (device);
-
- switch (priv->device_type)
- {
- case CLUTTER_POINTER_DEVICE:
- case CLUTTER_TABLET_DEVICE:
- device->pointer_grab_actor = NULL;
- break;
-
- case CLUTTER_KEYBOARD_DEVICE:
- device->keyboard_grab_actor = NULL;
- break;
-
- default:
- g_assert_not_reached ();
- }
-}
-
-/**
- * clutter_input_device_grab:
- * @device: a #ClutterInputDevice
- * @actor: a #ClutterActor
- *
- * Acquires a grab on @actor for the given @device.
- *
- * Any event coming from @device will be delivered to @actor, bypassing
- * the usual event delivery mechanism, until the grab is released by
- * calling clutter_input_device_ungrab().
- *
- * The grab is client-side: even if the windowing system used by the Clutter
- * backend has the concept of "device grabs", Clutter will not use them.
- *
- * Only #ClutterInputDevice of types %CLUTTER_POINTER_DEVICE,
- * %CLUTTER_TABLET_DEVICE and %CLUTTER_KEYBOARD_DEVICE can hold a grab.
- *
- * Since: 1.10
- */
-void
-clutter_input_device_grab (ClutterInputDevice *device,
- ClutterActor *actor)
-{
- ClutterActor **grab_actor;
- ClutterInputDevicePrivate *priv =
- clutter_input_device_get_instance_private (device);
-
- g_return_if_fail (CLUTTER_IS_INPUT_DEVICE (device));
- g_return_if_fail (CLUTTER_IS_ACTOR (actor));
-
- switch (priv->device_type)
- {
- case CLUTTER_POINTER_DEVICE:
- case CLUTTER_TABLET_DEVICE:
- grab_actor = &device->pointer_grab_actor;
- break;
-
- case CLUTTER_KEYBOARD_DEVICE:
- grab_actor = &device->keyboard_grab_actor;
- break;
-
- default:
- g_critical ("Only pointer and keyboard devices can grab an actor");
- return;
- }
-
- if (*grab_actor != NULL)
- {
- g_signal_handlers_disconnect_by_func (*grab_actor,
- G_CALLBACK (on_grab_actor_destroy),
- device);
- }
-
- *grab_actor = actor;
-
- g_signal_connect (*grab_actor,
- "destroy",
- G_CALLBACK (on_grab_actor_destroy),
- device);
-}
-
-/**
- * clutter_input_device_ungrab:
- * @device: a #ClutterInputDevice
- *
- * Releases the grab on the @device, if one is in place.
- *
- * Since: 1.10
- */
-void
-clutter_input_device_ungrab (ClutterInputDevice *device)
-{
- ClutterActor **grab_actor;
- ClutterInputDevicePrivate *priv =
- clutter_input_device_get_instance_private (device);
-
- g_return_if_fail (CLUTTER_IS_INPUT_DEVICE (device));
-
- switch (priv->device_type)
- {
- case CLUTTER_POINTER_DEVICE:
- case CLUTTER_TABLET_DEVICE:
- grab_actor = &device->pointer_grab_actor;
- break;
-
- case CLUTTER_KEYBOARD_DEVICE:
- grab_actor = &device->keyboard_grab_actor;
- break;
-
- default:
- return;
- }
-
- if (*grab_actor == NULL)
- return;
-
- g_signal_handlers_disconnect_by_func (*grab_actor,
- G_CALLBACK (on_grab_actor_destroy),
- device);
-
- *grab_actor = NULL;
-}
-
-/**
- * clutter_input_device_get_grabbed_actor:
- * @device: a #ClutterInputDevice
- *
- * Retrieves a pointer to the #ClutterActor currently grabbing all
- * the events coming from @device.
- *
- * Return value: (transfer none): a #ClutterActor, or %NULL
- *
- * Since: 1.10
- */
-ClutterActor *
-clutter_input_device_get_grabbed_actor (ClutterInputDevice *device)
-{
- ClutterInputDevicePrivate *priv =
- clutter_input_device_get_instance_private (device);
-
- g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE (device), NULL);
-
- switch (priv->device_type)
- {
- case CLUTTER_POINTER_DEVICE:
- case CLUTTER_TABLET_DEVICE:
- return device->pointer_grab_actor;
-
- case CLUTTER_KEYBOARD_DEVICE:
- return device->keyboard_grab_actor;
-
- default:
- g_critical ("Only pointer and keyboard devices can grab an actor");
- }
-
- return NULL;
-}
-
-static void
-on_grab_sequence_actor_destroy (ClutterActor *actor,
- ClutterInputDevice *device)
-{
- ClutterEventSequence *sequence =
- g_hash_table_lookup (device->inv_sequence_grab_actors, actor);
-
- if (sequence != NULL)
- {
- g_hash_table_remove (device->sequence_grab_actors, sequence);
- g_hash_table_remove (device->inv_sequence_grab_actors, actor);
- }
-}
-
-/**
- * clutter_input_device_sequence_grab:
- * @device: a #ClutterInputDevice
- * @sequence: a #ClutterEventSequence
- * @actor: a #ClutterActor
- *
- * Acquires a grab on @actor for the given @device and the given touch
- * @sequence.
- *
- * Any touch event coming from @device and from @sequence will be
- * delivered to @actor, bypassing the usual event delivery mechanism,
- * until the grab is released by calling
- * clutter_input_device_sequence_ungrab().
- *
- * The grab is client-side: even if the windowing system used by the Clutter
- * backend has the concept of "device grabs", Clutter will not use them.
- *
- * Since: 1.12
- */
-void
-clutter_input_device_sequence_grab (ClutterInputDevice *device,
- ClutterEventSequence *sequence,
- ClutterActor *actor)
-{
- ClutterActor *grab_actor;
-
- g_return_if_fail (CLUTTER_IS_INPUT_DEVICE (device));
- g_return_if_fail (CLUTTER_IS_ACTOR (actor));
-
- if (device->sequence_grab_actors == NULL)
- {
- grab_actor = NULL;
- device->sequence_grab_actors = g_hash_table_new (NULL, NULL);
- device->inv_sequence_grab_actors = g_hash_table_new (NULL, NULL);
- }
- else
- {
- grab_actor = g_hash_table_lookup (device->sequence_grab_actors, sequence);
- }
-
- if (grab_actor != NULL)
- {
- g_signal_handlers_disconnect_by_func (grab_actor,
- G_CALLBACK (on_grab_sequence_actor_destroy),
- device);
- g_hash_table_remove (device->sequence_grab_actors, sequence);
- g_hash_table_remove (device->inv_sequence_grab_actors, grab_actor);
- }
-
- g_hash_table_insert (device->sequence_grab_actors, sequence, actor);
- g_hash_table_insert (device->inv_sequence_grab_actors, actor, sequence);
- g_signal_connect (actor,
- "destroy",
- G_CALLBACK (on_grab_sequence_actor_destroy),
- device);
-}
-
-/**
- * clutter_input_device_sequence_ungrab:
- * @device: a #ClutterInputDevice
- * @sequence: a #ClutterEventSequence
- *
- * Releases the grab on the @device for the given @sequence, if one is
- * in place.
- *
- * Since: 1.12
- */
-void
-clutter_input_device_sequence_ungrab (ClutterInputDevice *device,
- ClutterEventSequence *sequence)
-{
- ClutterActor *grab_actor;
-
- g_return_if_fail (CLUTTER_IS_INPUT_DEVICE (device));
-
- if (device->sequence_grab_actors == NULL)
- return;
-
- grab_actor = g_hash_table_lookup (device->sequence_grab_actors, sequence);
-
- if (grab_actor == NULL)
- return;
-
- g_signal_handlers_disconnect_by_func (grab_actor,
- G_CALLBACK (on_grab_sequence_actor_destroy),
- device);
- g_hash_table_remove (device->sequence_grab_actors, sequence);
- g_hash_table_remove (device->inv_sequence_grab_actors, grab_actor);
-
- if (g_hash_table_size (device->sequence_grab_actors) == 0)
- {
- g_hash_table_destroy (device->sequence_grab_actors);
- device->sequence_grab_actors = NULL;
- g_hash_table_destroy (device->inv_sequence_grab_actors);
- device->inv_sequence_grab_actors = NULL;
- }
-}
-
-/**
- * clutter_input_device_sequence_get_grabbed_actor:
- * @device: a #ClutterInputDevice
- * @sequence: a #ClutterEventSequence
- *
- * Retrieves a pointer to the #ClutterActor currently grabbing the
- * touch events coming from @device given the @sequence.
- *
- * Return value: (transfer none): a #ClutterActor, or %NULL
- *
- * Since: 1.12
- */
-ClutterActor *
-clutter_input_device_sequence_get_grabbed_actor (ClutterInputDevice *device,
- ClutterEventSequence *sequence)
-{
- g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE (device), NULL);
-
- if (device->sequence_grab_actors == NULL)
- return NULL;
-
- return g_hash_table_lookup (device->sequence_grab_actors, sequence);
-}
-
/**
* clutter_input_device_get_vendor_id:
* @device: a physical #ClutterInputDevice
diff --git a/clutter/clutter/clutter-input-device.h b/clutter/clutter/clutter-input-device.h
index 0a6a1c0eda..1a82ac9af6 100644
--- a/clutter/clutter/clutter-input-device.h
+++ b/clutter/clutter/clutter-input-device.h
@@ -80,25 +80,6 @@ ClutterInputMode clutter_input_device_get_device_mode (ClutterInputDev
CLUTTER_EXPORT
gboolean clutter_input_device_get_has_cursor (ClutterInputDevice *device);
-CLUTTER_EXPORT
-void clutter_input_device_grab (ClutterInputDevice *device,
- ClutterActor *actor);
-CLUTTER_EXPORT
-void clutter_input_device_ungrab (ClutterInputDevice *device);
-CLUTTER_EXPORT
-ClutterActor * clutter_input_device_get_grabbed_actor (ClutterInputDevice *device);
-
-CLUTTER_EXPORT
-void clutter_input_device_sequence_grab (ClutterInputDevice *device,
- ClutterEventSequence *sequence,
- ClutterActor *actor);
-CLUTTER_EXPORT
-void clutter_input_device_sequence_ungrab (ClutterInputDevice *device,
- ClutterEventSequence *sequence);
-CLUTTER_EXPORT
-ClutterActor * clutter_input_device_sequence_get_grabbed_actor (ClutterInputDevice *device,
- ClutterEventSequence *sequence);
-
CLUTTER_EXPORT
const gchar * clutter_input_device_get_vendor_id (ClutterInputDevice *device);
CLUTTER_EXPORT
diff --git a/clutter/clutter/clutter-main.c b/clutter/clutter/clutter-main.c
index 4188b94c6a..d6540a7e08 100644
--- a/clutter/clutter/clutter-main.c
+++ b/clutter/clutter/clutter-main.c
@@ -697,58 +697,21 @@ static inline void
emit_pointer_event (ClutterEvent *event,
ClutterInputDevice *device)
{
- if (device != NULL && device->pointer_grab_actor != NULL)
- clutter_actor_event (device->pointer_grab_actor, event, FALSE);
- else
- emit_event_chain (event);
+ emit_event_chain (event);
}
static inline void
emit_crossing_event (ClutterEvent *event,
ClutterInputDevice *device)
{
- ClutterEventSequence *sequence = clutter_event_get_event_sequence (event);
- ClutterActor *grab_actor = NULL;
-
- if (sequence)
- {
- if (device->sequence_grab_actors != NULL)
- grab_actor = g_hash_table_lookup (device->sequence_grab_actors, sequence);
- }
- else
- {
- if (device != NULL && device->pointer_grab_actor != NULL)
- grab_actor = device->pointer_grab_actor;
- }
-
- if (grab_actor != NULL)
- clutter_actor_event (grab_actor, event, FALSE);
- else
- emit_event_chain (event);
+ emit_event_chain (event);
}
static inline void
emit_touch_event (ClutterEvent *event,
ClutterInputDevice *device)
{
- ClutterActor *grab_actor = NULL;
-
- if (device->sequence_grab_actors != NULL)
- {
- grab_actor = g_hash_table_lookup (device->sequence_grab_actors,
- event->touch.sequence);
- }
-
- if (grab_actor != NULL)
- {
- /* per-device sequence grab */
- clutter_actor_event (grab_actor, event, FALSE);
- }
- else
- {
- /* no grab, time to capture and bubble */
- emit_event_chain (event);
- }
+ emit_event_chain (event);
}
static inline void
@@ -757,10 +720,7 @@ process_key_event (ClutterEvent *event,
{
cally_snoop_key_event ((ClutterKeyEvent *) event);
- if (device != NULL && device->keyboard_grab_actor != NULL)
- clutter_actor_event (device->keyboard_grab_actor, event, FALSE);
- else
- emit_event_chain (event);
+ emit_event_chain (event);
}
static ClutterActor *
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]