cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=0088189eee8baf87070f1924a1e657164f9b2962

commit 0088189eee8baf87070f1924a1e657164f9b2962
Author: Woochan Lee <wc0917....@samsung.com>
Date:   Mon Apr 9 10:27:57 2018 -0700

    elementary: add new config value to handle tap finger size.
    
    Summary:
    The tap_finger_size value of the concept is different from the finger_size 
value used in the past.
    
    We need a minimum value for recognize the gesture as a tap or not.
    
    Since the actual screen has different screen sizes, there is a problem that 
the recognition rate of tap is lowered when using the existing 
value(finger_size)
    
    Test Plan: elementary_test -> gesture sample.
    
    Reviewers: cedric, woohyun, Jaehyun_Cho, herb, id213sin
    
    Subscribers: cedric
    
    Differential Revision: https://phab.enlightenment.org/D5842
    
    Reviewed-by: Cedric BAIL <ced...@osg.samsung.com>
    Signed-off-by: Cedric BAIL <ced...@osg.samsung.com>
---
 config/default/base.src.in             |  1 +
 config/mobile/base.src.in              |  1 +
 config/standard/base.src.in            |  1 +
 src/lib/elementary/elm_config.c        |  6 ++++++
 src/lib/elementary/elm_gesture_layer.c | 32 +++++++++++++++-----------------
 src/lib/elementary/elm_priv.h          |  2 ++
 6 files changed, 26 insertions(+), 17 deletions(-)

diff --git a/config/default/base.src.in b/config/default/base.src.in
index 7e9444c10c..853625d3b4 100644
--- a/config/default/base.src.in
+++ b/config/default/base.src.in
@@ -72,6 +72,7 @@ group "Elm_Config" struct {
   value "glayer_long_tap_start_timeout" double: 1.2; /* sec to start long-tap 
*/
   value "glayer_double_tap_timeout" double: 0.25; /* Timeout between two mouse 
dows when doing double click (and more). */
   value "glayer_continues_enable" uchar: 1;          /* Continues gesture 
enabled */
+  value "glayer_tap_finger_size" int: 10;
   value "week_start" int: 1;
   value "weekend_start" int: 6;
   value "weekend_len" int: 2;
diff --git a/config/mobile/base.src.in b/config/mobile/base.src.in
index 18d3612548..0fdb4f47ad 100644
--- a/config/mobile/base.src.in
+++ b/config/mobile/base.src.in
@@ -72,6 +72,7 @@ group "Elm_Config" struct {
   value "glayer_long_tap_start_timeout" double: 1.2; /* sec to start long-tap 
*/
   value "glayer_double_tap_timeout" double: 0.25; /* Timeout between two mouse 
dows when doing double click (and more). */
   value "glayer_continues_enable" uchar: 1;          /* Continues gesture 
enabled */
+  value "glayer_tap_finger_size" int: 10;
   value "week_start" int: 1;
   value "weekend_start" int: 6;
   value "weekend_len" int: 2;
diff --git a/config/standard/base.src.in b/config/standard/base.src.in
index 9781512539..a79b07ba04 100644
--- a/config/standard/base.src.in
+++ b/config/standard/base.src.in
@@ -73,6 +73,7 @@ group "Elm_Config" struct {
   value "glayer_long_tap_start_timeout" double: 1.2; /* sec to start long-tap 
*/
   value "glayer_double_tap_timeout" double: 0.25; /* Timeout between two mouse 
dows when doing double click (and more). */
   value "glayer_continues_enable" uchar: 1;          /* Continues gesture 
enabled */
+  value "glayer_tap_finger_size" int: 10;
   value "week_start" int: 1;
   value "weekend_start" int: 6;
   value "weekend_len" int: 2;
diff --git a/src/lib/elementary/elm_config.c b/src/lib/elementary/elm_config.c
index b2cbf99601..da29ddf0e7 100644
--- a/src/lib/elementary/elm_config.c
+++ b/src/lib/elementary/elm_config.c
@@ -461,6 +461,7 @@ _desc_init(void)
    ELM_CONFIG_VAL(D, T, glayer_flick_time_limit_ms, T_INT);
    ELM_CONFIG_VAL(D, T, glayer_long_tap_start_timeout, T_DOUBLE);
    ELM_CONFIG_VAL(D, T, glayer_double_tap_timeout, T_DOUBLE);
+   ELM_CONFIG_VAL(D, T, glayer_tap_finger_size, T_INT);
    ELM_CONFIG_VAL(D, T, access_mode, T_UCHAR);
    ELM_CONFIG_VAL(D, T, selection_clear_enable, T_UCHAR);
    ELM_CONFIG_VAL(D, T, glayer_continues_enable, T_UCHAR);
@@ -1796,6 +1797,7 @@ _config_load(void)
    _elm_config->glayer_long_tap_start_timeout = 1.2;   /* 1.2 second to start 
long-tap */
    _elm_config->glayer_double_tap_timeout = 0.25;   /* 0.25 seconds between 2 
mouse downs of a tap. */
    _elm_config->glayer_continues_enable = EINA_TRUE;      /* Continue gestures 
default */
+   _elm_config->glayer_tap_finger_size = 10;
    _elm_config->access_mode = ELM_ACCESS_MODE_OFF;
    _elm_config->selection_clear_enable = EINA_FALSE;
    _elm_config->week_start = 1; /* monday */
@@ -1955,6 +1957,7 @@ _elm_config_reload_do(void)
         KEEP_VAL(glayer_flick_time_limit_ms);
         KEEP_VAL(glayer_long_tap_start_timeout);
         KEEP_VAL(glayer_double_tap_timeout);
+        KEEP_VAL(glayer_tap_finger_size);
         KEEP_VAL(access_mode);
         KEEP_VAL(glayer_continues_enable);
         KEEP_VAL(week_start);
@@ -2813,6 +2816,9 @@ _env_get(void)
    s = getenv("ELM_POPUP_SCROLLABLE");
    if (s) _elm_config->popup_scrollable = atoi(s);
 
+   s = getenv("ELM_GLAYER_TAP_FINGER_SIZE");
+   if (s) _elm_config->glayer_tap_finger_size = atoi(s);
+
    s = getenv("EFL_UI_DND_DRAG_ANIM_DURATION");
    if (s) _elm_config->drag_anim_duration = _elm_atof(s);
 }
diff --git a/src/lib/elementary/elm_gesture_layer.c 
b/src/lib/elementary/elm_gesture_layer.c
index 0dec106de9..143ae645ca 100644
--- a/src/lib/elementary/elm_gesture_layer.c
+++ b/src/lib/elementary/elm_gesture_layer.c
@@ -1657,7 +1657,7 @@ _taps_rect_get(Eina_List *taps, int idx, Eina_Rectangle 
*r)
  * @ingroup Elm_Gesture_Layer
  */
 static Eina_Bool
-_tap_gesture_check_finish(Gesture_Info *gesture, Evas_Coord tap_finger_size)
+_tap_gesture_check_finish(Gesture_Info *gesture)
 {
    /* Here we check if taps-gesture was completed successfully */
    /* Count how many taps were received on each device then   */
@@ -1668,8 +1668,8 @@ _tap_gesture_check_finish(Gesture_Info *gesture, 
Evas_Coord tap_finger_size)
    Eina_List *pe_list;
    Eina_Rectangle base = {0, 0, 0, 0};
    Eina_Rectangle tmp = {0, 0, 0, 0};
-   if (!tap_finger_size)  /* Use system default if not set by user */
-     tap_finger_size = elm_config_finger_size_get();
+
+   ELM_GESTURE_LAYER_DATA_GET(gesture->obj, sd);
 
    if (!st->l) return EINA_FALSE;
    EINA_LIST_FOREACH(st->l, l, pe_list)
@@ -1690,16 +1690,16 @@ _tap_gesture_check_finish(Gesture_Info *gesture, 
Evas_Coord tap_finger_size)
      {  /* Compare all other rects to base, tolerance is finger size */
         if (_taps_rect_get(st->l, i, &tmp))
           {
-             if (abs(tmp.x - base.x) > tap_finger_size)
+             if (abs(tmp.x - base.x) > sd->tap_finger_size)
                return EINA_FALSE;
 
-             if (abs(tmp.y - base.y) > tap_finger_size)
+             if (abs(tmp.y - base.y) > sd->tap_finger_size)
                return EINA_FALSE;
 
-             if (abs((tmp.x + tmp.w) - (base.x + base.w)) > tap_finger_size)
+             if (abs((tmp.x + tmp.w) - (base.x + base.w)) > 
sd->tap_finger_size)
                return EINA_FALSE;
 
-             if (abs((tmp.y + tmp.h) - (base.y + base.h)) > tap_finger_size)
+             if (abs((tmp.y + tmp.h) - (base.y + base.h)) > 
sd->tap_finger_size)
                return EINA_FALSE;
           }
      }
@@ -1717,14 +1717,14 @@ _tap_gesture_check_finish(Gesture_Info *gesture, 
Evas_Coord tap_finger_size)
  * @ingroup Elm_Gesture_Layer
  */
 static void
-_tap_gesture_finish(void *data, Evas_Coord tap_finger_size)
+_tap_gesture_finish(void *data)
 {
    /* This function will test each tap gesture when timer expires */
    Elm_Gesture_State s = ELM_GESTURE_STATE_ABORT;
    Gesture_Info *gesture = data;
    Taps_Type *st = gesture->data;
 
-   if (_tap_gesture_check_finish(gesture, tap_finger_size))
+   if (_tap_gesture_check_finish(gesture))
      {
         s = ELM_GESTURE_STATE_END;
      }
@@ -1750,16 +1750,13 @@ _multi_tap_timeout(void *data)
    ELM_GESTURE_LAYER_DATA_GET(data, sd);
 
    if (IS_TESTED(ELM_GESTURE_N_TAPS))
-     _tap_gesture_finish(sd->gesture[ELM_GESTURE_N_TAPS],
-           sd->tap_finger_size);
+     _tap_gesture_finish(sd->gesture[ELM_GESTURE_N_TAPS]);
 
    if (IS_TESTED(ELM_GESTURE_N_DOUBLE_TAPS))
-     _tap_gesture_finish(sd->gesture[ELM_GESTURE_N_DOUBLE_TAPS],
-           sd->tap_finger_size);
+     _tap_gesture_finish(sd->gesture[ELM_GESTURE_N_DOUBLE_TAPS]);
 
    if (IS_TESTED(ELM_GESTURE_N_TRIPLE_TAPS))
-     _tap_gesture_finish(sd->gesture[ELM_GESTURE_N_TRIPLE_TAPS],
-           sd->tap_finger_size);
+     _tap_gesture_finish(sd->gesture[ELM_GESTURE_N_TRIPLE_TAPS]);
 
    _clear_if_finished(data);
    sd->gest_taps_timeout = NULL;
@@ -1950,9 +1947,9 @@ _tap_gesture_test(Evas_Object *obj,
                ((gesture->g_type == ELM_GESTURE_N_DOUBLE_TAPS) &&
                 !IS_TESTED(ELM_GESTURE_N_TRIPLE_TAPS)))
            {  /* Test for finish immediately, not waiting for timeout */
-              if (_tap_gesture_check_finish(gesture, sd->tap_finger_size))
+              if (_tap_gesture_check_finish(gesture))
                 {
-                   _tap_gesture_finish(gesture, sd->tap_finger_size);
+                   _tap_gesture_finish(gesture);
                    return;
                 }
            }
@@ -3772,6 +3769,7 @@ _elm_gesture_layer_efl_canvas_group_group_add(Eo *obj, 
Elm_Gesture_Layer_Data *p
    priv->long_tap_start_timeout = _elm_config->glayer_long_tap_start_timeout;
    priv->repeat_events = EINA_TRUE;
    priv->glayer_continues_enable = _elm_config->glayer_continues_enable;
+   priv->tap_finger_size = _elm_config->glayer_tap_finger_size;
 
    /* FIXME: Hack to get around old configs - if too small, enlarge. */
    if (_elm_config->glayer_double_tap_timeout < 0.00001)
diff --git a/src/lib/elementary/elm_priv.h b/src/lib/elementary/elm_priv.h
index fc67a74fc7..883833a1f6 100644
--- a/src/lib/elementary/elm_priv.h
+++ b/src/lib/elementary/elm_priv.h
@@ -290,6 +290,7 @@ struct _Elm_Config_Flags
    Eina_Bool glayer_flick_time_limit_ms : 1; // unused
    Eina_Bool glayer_long_tap_start_timeout : 1;
    Eina_Bool glayer_double_tap_timeout : 1;
+   Eina_Bool glayer_tap_finger_size : 1;
    Eina_Bool access_mode : 1;
    Eina_Bool glayer_continues_enable : 1; // unused
    Eina_Bool week_start : 1; // unused
@@ -425,6 +426,7 @@ struct _Elm_Config
    unsigned int  glayer_flick_time_limit_ms;
    double        glayer_long_tap_start_timeout;
    double        glayer_double_tap_timeout;
+   int           glayer_tap_finger_size;
    Eina_Bool     access_mode;
    unsigned char glayer_continues_enable;
    int           week_start;

-- 


Reply via email to