[mutter] clutter/input-device: Make clutter_input_device_get_actor() public
- From: verdre <jonasd src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] clutter/input-device: Make clutter_input_device_get_actor() public
- Date: Tue, 16 Jun 2020 11:00:31 +0000 (UTC)
commit 7539de2320b930b6b57ecbfdfd5b004f2066d4f8
Author: Jonas Dreßler <verdre v0yd nl>
Date: Tue Mar 3 12:02:29 2020 +0100
clutter/input-device: Make clutter_input_device_get_actor() public
Make the clutter_input_device_get_actor() API public and remove
clutter_input_device_get_pointer_actor() in favour of the new function.
This allows also getting the "pointer" actor for a given touch sequence,
not only for real pointer input devices like mice.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1275
clutter/clutter/clutter-input-device.c | 43 ++++++++++++++++------------------
clutter/clutter/clutter-input-device.h | 3 ++-
src/core/window.c | 2 +-
src/wayland/meta-wayland-pointer.c | 2 +-
4 files changed, 24 insertions(+), 26 deletions(-)
---
diff --git a/clutter/clutter/clutter-input-device.c b/clutter/clutter/clutter-input-device.c
index e7b5bff967..11e717ba91 100644
--- a/clutter/clutter/clutter-input-device.c
+++ b/clutter/clutter/clutter-input-device.c
@@ -692,20 +692,6 @@ _clutter_input_device_free_touch_info (gpointer data)
g_slice_free (ClutterTouchInfo, data);
}
-static ClutterActor *
-_clutter_input_device_get_actor (ClutterInputDevice *device,
- ClutterEventSequence *sequence)
-{
- ClutterTouchInfo *info;
-
- if (sequence == NULL)
- return device->cursor_actor;
-
- info = g_hash_table_lookup (device->touch_sequences_info, sequence);
-
- return info->actor;
-}
-
static void
_clutter_input_device_associate_actor (ClutterInputDevice *device,
ClutterEventSequence *sequence,
@@ -815,7 +801,7 @@ _clutter_input_device_set_actor (ClutterInputDevice *device,
ClutterActor *actor,
gboolean emit_crossing)
{
- ClutterActor *old_actor = _clutter_input_device_get_actor (device, sequence);
+ ClutterActor *old_actor = clutter_input_device_get_actor (device, sequence);
if (old_actor == actor)
return;
@@ -850,7 +836,7 @@ _clutter_input_device_set_actor (ClutterInputDevice *device,
}
/* processing the event might have destroyed the actor */
- tmp_old_actor = _clutter_input_device_get_actor (device, sequence);
+ tmp_old_actor = clutter_input_device_get_actor (device, sequence);
_clutter_input_device_unassociate_actor (device,
old_actor,
tmp_old_actor == NULL);
@@ -1054,7 +1040,7 @@ clutter_input_device_update (ClutterInputDevice *device,
clutter_input_device_get_coords (device, sequence, &point);
- old_cursor_actor = _clutter_input_device_get_actor (device, sequence);
+ old_cursor_actor = clutter_input_device_get_actor (device, sequence);
new_cursor_actor =
_clutter_stage_do_pick (stage, point.x, point.y, CLUTTER_PICK_REACTIVE);
@@ -1085,22 +1071,33 @@ clutter_input_device_update (ClutterInputDevice *device,
}
/**
- * clutter_input_device_get_pointer_actor:
- * @device: a #ClutterInputDevice of type %CLUTTER_POINTER_DEVICE
+ * clutter_input_device_get_actor:
+ * @device: a #ClutterInputDevice
+ * @sequence: (allow-none): an optional #ClutterEventSequence
*
- * Retrieves the #ClutterActor underneath the pointer of @device
+ * Retrieves the #ClutterActor underneath the pointer or touchpoint
+ * of @device and @sequence.
*
* Return value: (transfer none): a pointer to the #ClutterActor or %NULL
*
* Since: 1.2
*/
ClutterActor *
-clutter_input_device_get_pointer_actor (ClutterInputDevice *device)
+clutter_input_device_get_actor (ClutterInputDevice *device,
+ ClutterEventSequence *sequence)
{
+ ClutterTouchInfo *info;
+
g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE (device), NULL);
- g_return_val_if_fail (device->device_type == CLUTTER_POINTER_DEVICE, NULL);
- return device->cursor_actor;
+ if (sequence == NULL)
+ return device->cursor_actor;
+
+ info = g_hash_table_lookup (device->touch_sequences_info, sequence);
+
+ g_return_val_if_fail (info != NULL, NULL);
+
+ return info->actor;
}
/**
diff --git a/clutter/clutter/clutter-input-device.h b/clutter/clutter/clutter-input-device.h
index 68b74ced8a..889cf727a4 100644
--- a/clutter/clutter/clutter-input-device.h
+++ b/clutter/clutter/clutter-input-device.h
@@ -92,7 +92,8 @@ gboolean clutter_input_device_get_coords (ClutterInputDevi
CLUTTER_EXPORT
ClutterModifierType clutter_input_device_get_modifier_state (ClutterInputDevice *device);
CLUTTER_EXPORT
-ClutterActor * clutter_input_device_get_pointer_actor (ClutterInputDevice *device);
+ClutterActor * clutter_input_device_get_actor (ClutterInputDevice *device,
+ ClutterEventSequence *sequence);
CLUTTER_EXPORT
ClutterStage * clutter_input_device_get_pointer_stage (ClutterInputDevice *device);
CLUTTER_EXPORT
diff --git a/src/core/window.c b/src/core/window.c
index 24403b79fa..c660a3b0c0 100644
--- a/src/core/window.c
+++ b/src/core/window.c
@@ -8135,7 +8135,7 @@ window_has_pointer_wayland (MetaWindow *window)
seat = clutter_backend_get_default_seat (clutter_get_default_backend ());
dev = clutter_seat_get_pointer (seat);
- pointer_actor = clutter_input_device_get_pointer_actor (dev);
+ pointer_actor = clutter_input_device_get_actor (dev, NULL);
window_actor = CLUTTER_ACTOR (meta_window_get_compositor_private (window));
return pointer_actor && clutter_actor_contains (window_actor, pointer_actor);
diff --git a/src/wayland/meta-wayland-pointer.c b/src/wayland/meta-wayland-pointer.c
index d300852023..ab2ae9315e 100644
--- a/src/wayland/meta-wayland-pointer.c
+++ b/src/wayland/meta-wayland-pointer.c
@@ -621,7 +621,7 @@ repick_for_event (MetaWaylandPointer *pointer,
if (for_event)
actor = clutter_event_get_source (for_event);
else
- actor = clutter_input_device_get_pointer_actor (pointer->device);
+ actor = clutter_input_device_get_actor (pointer->device, NULL);
if (META_IS_SURFACE_ACTOR_WAYLAND (actor))
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]