[mutter/wip/carlosg/grabs-pt2: 67/68] clutter: Use ClutterGrab for ClutterText implicit grab
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/wip/carlosg/grabs-pt2: 67/68] clutter: Use ClutterGrab for ClutterText implicit grab
- Date: Tue, 11 Jan 2022 17:26:06 +0000 (UTC)
commit 98e4238bed78a205a336e7a3f8c4317f0dc5482f
Author: Carlos Garnacho <carlosg gnome org>
Date: Wed Nov 17 23:27:47 2021 +0100
clutter: Use ClutterGrab for ClutterText implicit grab
This is used to temporarily redirect input to the entry, while
text is being selected.
clutter/clutter/clutter-text.c | 32 ++++++++++++++------------------
1 file changed, 14 insertions(+), 18 deletions(-)
---
diff --git a/clutter/clutter/clutter-text.c b/clutter/clutter/clutter-text.c
index 9244fc415b..432ddbae66 100644
--- a/clutter/clutter/clutter-text.c
+++ b/clutter/clutter/clutter-text.c
@@ -187,6 +187,8 @@ struct _ClutterTextPrivate
ClutterInputContentHintFlags input_hints;
ClutterInputContentPurpose input_purpose;
+ ClutterGrab *grab;
+
float last_click_x;
float last_click_y;
uint32_t last_click_time_ms;
@@ -2208,6 +2210,7 @@ clutter_text_press (ClutterActor *actor,
ClutterText *self = CLUTTER_TEXT (actor);
ClutterTextPrivate *priv = self->priv;
ClutterEventType type = clutter_event_type (event);
+ ClutterActor *stage;
gboolean res = FALSE;
gfloat x, y;
gint index_;
@@ -2288,18 +2291,11 @@ clutter_text_press (ClutterActor *actor,
/* grab the pointer */
priv->in_select_drag = TRUE;
- if (type == CLUTTER_BUTTON_PRESS)
- {
- clutter_input_device_grab (clutter_event_get_device (event),
- actor);
- }
- else
- {
- clutter_input_device_sequence_grab (clutter_event_get_device (event),
- clutter_event_get_event_sequence (event),
- actor);
- priv->in_select_touch = TRUE;
- }
+ stage = clutter_actor_get_stage (actor);
+ priv->grab = clutter_stage_grab (CLUTTER_STAGE (stage), actor);
+
+ if (type != CLUTTER_BUTTON_PRESS)
+ priv->in_select_touch = TRUE;
return CLUTTER_EVENT_STOP;
}
@@ -2346,11 +2342,16 @@ clutter_text_release (ClutterActor *actor,
if (priv->in_select_drag)
{
+ if (priv->grab)
+ {
+ clutter_grab_dismiss (priv->grab);
+ g_clear_pointer (&priv->grab, clutter_grab_unref);
+ }
+
if (type == CLUTTER_BUTTON_RELEASE)
{
if (!priv->in_select_touch)
{
- clutter_input_device_ungrab (clutter_event_get_device (event));
priv->in_select_drag = FALSE;
return CLUTTER_EVENT_STOP;
@@ -2360,11 +2361,6 @@ clutter_text_release (ClutterActor *actor,
{
if (priv->in_select_touch)
{
- ClutterInputDevice *device = clutter_event_get_device (event);
- ClutterEventSequence *sequence =
- clutter_event_get_event_sequence (event);
-
- clutter_input_device_sequence_ungrab (device, sequence);
priv->in_select_touch = FALSE;
priv->in_select_drag = FALSE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]