raster pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=cafda5928f9bf8116564219dc03d12c3a6e131b3

commit cafda5928f9bf8116564219dc03d12c3a6e131b3
Author: Vaibhav Gupta <g.vaibh...@samsung.com>
Date:   Fri Dec 11 15:49:27 2015 +0900

    Entry: Context Menu is now configurable
    
    Summary:
    Added a config variable Context_Menu_Disabled to make the appearance
    of the context menu configurable.
    
    @feature
    
    Signed-off-by: Vaibhav Gupta <g.vaibh...@samsung.com>
    
    Reviewers: Hermet, SanghyeonLee, raster, singh.amitesh
    
    Subscribers: stefan_schmidt, alok25, cedric, thiepha, sachin.dev
    
    Differential Revision: https://phab.enlightenment.org/D2463
---
 config/default/base.src.in  |  1 +
 config/mobile/base.src.in   |  1 +
 config/standard/base.src.in |  1 +
 src/bin/test_entry.c        | 17 ++++++++++++++++-
 src/lib/elm_config.c        | 17 +++++++++++++++++
 src/lib/elm_config.h        | 20 ++++++++++++++++++++
 src/lib/elm_entry.c         | 39 +++++++++++++++++++++++++++++----------
 src/lib/elm_priv.h          |  1 +
 8 files changed, 86 insertions(+), 11 deletions(-)

diff --git a/config/default/base.src.in b/config/default/base.src.in
index 188f41f..7bf7713 100644
--- a/config/default/base.src.in
+++ b/config/default/base.src.in
@@ -54,6 +54,7 @@ group "Elm_Config" struct {
   value "longpress_timeout" double: 1.0;
   value "effect_enable" uchar: 1;
   value "desktop_entry" uchar: 0;
+  value "context_menu_disabled" uchar: 0;
   value "password_show_last" uchar: 0;
   value "password_show_last_timeout" double: 2.0;
   value "glayer_zoom_finger_enable" uchar: 1;
diff --git a/config/mobile/base.src.in b/config/mobile/base.src.in
index aea7ae2..44bfd67 100644
--- a/config/mobile/base.src.in
+++ b/config/mobile/base.src.in
@@ -54,6 +54,7 @@ group "Elm_Config" struct {
   value "longpress_timeout" double: 1.0;
   value "effect_enable" uchar: 1;
   value "desktop_entry" uchar: 0;
+  value "context_menu_disabled" uchar: 0;
   value "password_show_last" uchar: 1;
   value "password_show_last_timeout" double: 2.0;
   value "glayer_zoom_finger_enable" uchar: 1;
diff --git a/config/standard/base.src.in b/config/standard/base.src.in
index 2d87884..fd60d6a 100644
--- a/config/standard/base.src.in
+++ b/config/standard/base.src.in
@@ -55,6 +55,7 @@ group "Elm_Config" struct {
   value "longpress_timeout" double: 1.0;
   value "effect_enable" uchar: 1;
   value "desktop_entry" uchar: 1;
+  value "context_menu_disabled" uchar: 1;
   value "password_show_last" uchar: 0;
   value "password_show_last_timeout" double: 2.0;
   value "glayer_zoom_finger_enable" uchar: 1;
diff --git a/src/bin/test_entry.c b/src/bin/test_entry.c
index edc20ff..b679f3a 100644
--- a/src/bin/test_entry.c
+++ b/src/bin/test_entry.c
@@ -82,10 +82,19 @@ my_entry_bt_7(void *data, Evas_Object *obj EINA_UNUSED, 
void *event_info EINA_UN
    elm_entry_editable_set(en, !elm_entry_editable_get(en));
 }
 
+static void
+changed_cb1(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
+{
+   Evas_Object *ck = data;
+   printf("ck %p to %i\n", obj, elm_check_state_get(obj));
+   elm_config_context_menu_disabled_set(elm_check_state_get(obj));
+   printf("ck2 %p is now %i\n", ck, elm_check_state_get(ck));
+}
+
 void
 test_entry(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void 
*event_info EINA_UNUSED)
 {
-   Evas_Object *win, *bx, *bx2, *bt, *en;
+   Evas_Object *win, *bx, *bx2, *bt, *en, *ck;
    char buf[4096];
 
    win = elm_win_util_standard_add("entry", "Entry");
@@ -204,6 +213,12 @@ test_entry(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event_inf
    elm_object_focus_allow_set(bt, EINA_FALSE);
    evas_object_show(bt);
 
+   ck = elm_check_add(win);
+   elm_object_text_set(ck, "Context Menu Disable");
+   evas_object_smart_callback_add(ck, "changed", changed_cb1, ck);
+   elm_box_pack_end(bx, ck);
+   evas_object_show(ck);
+
    elm_box_pack_end(bx, bx2);
    evas_object_show(bx2);
 
diff --git a/src/lib/elm_config.c b/src/lib/elm_config.c
index 8e5320c..3c89162 100644
--- a/src/lib/elm_config.c
+++ b/src/lib/elm_config.c
@@ -375,6 +375,7 @@ _desc_init(void)
    ELM_CONFIG_VAL(D, T, focus_highlight_clip_disable, T_UCHAR);
    ELM_CONFIG_VAL(D, T, focus_move_policy, T_UCHAR);
    ELM_CONFIG_VAL(D, T, focus_autoscroll_mode, T_UCHAR);
+   ELM_CONFIG_VAL(D, T, context_menu_disabled, T_UCHAR);
    ELM_CONFIG_VAL(D, T, slider_indicator_visible_mode, T_INT);
    ELM_CONFIG_VAL(D, T, item_select_on_focus_disable, T_UCHAR);
    ELM_CONFIG_VAL(D, T, first_item_focus_on_first_focus_in, T_UCHAR);
@@ -1416,6 +1417,7 @@ _config_load(void)
    _elm_config->longpress_timeout = 1.0;
    _elm_config->effect_enable = EINA_TRUE;
    _elm_config->desktop_entry = EINA_FALSE;
+   _elm_config->context_menu_disabled = EINA_FALSE;
    _elm_config->is_mirrored = EINA_FALSE; /* Read sys value in env_get() */
    _elm_config->password_show_last = EINA_FALSE;
    _elm_config->password_show_last_timeout = 2.0;
@@ -2099,6 +2101,9 @@ _env_get(void)
    s = getenv("ELM_ICON_SIZE");
    if (s) _elm_config->icon_size = atoi(s);
 
+   s = getenv("ELM_CONTEXT_MENU_DISABLED");
+   if (s) _elm_config->context_menu_disabled = !!atoi(s);
+
    s = getenv("ELM_LONGPRESS_TIMEOUT");
    if (s) _elm_config->longpress_timeout = _elm_atof(s);
    if (_elm_config->longpress_timeout < 0.0)
@@ -2895,6 +2900,18 @@ 
elm_config_scroll_thumbscroll_sensitivity_friction_get(void)
    return _elm_config->thumbscroll_sensitivity_friction;
 }
 
+EAPI Eina_Bool
+elm_config_context_menu_disabled_get(void)
+{
+       return _elm_config->context_menu_disabled;
+}
+
+EAPI void
+elm_config_context_menu_disabled_set(Eina_Bool enabled)
+{
+       _elm_config->context_menu_disabled = !!enabled;
+}
+
 EAPI void
 elm_config_scroll_thumbscroll_sensitivity_friction_set(double friction)
 {
diff --git a/src/lib/elm_config.h b/src/lib/elm_config.h
index 350fdd3..e7bece0 100644
--- a/src/lib/elm_config.h
+++ b/src/lib/elm_config.h
@@ -216,6 +216,26 @@ EAPI double       
elm_config_scroll_page_scroll_friction_get(void);
 EAPI void         elm_config_scroll_page_scroll_friction_set(double friction);
 
 /**
+ * Get enable status of context menu disabled.
+ *
+ * @see elm_config_context_menu_disabled_set()
+ * @ingroup Entry
+ * @since 1.17
+ */
+EAPI Eina_Bool elm_config_context_menu_disabled_get(void);
+
+/**
+ * Set enable status of context menu disabled.
+ *
+ * @param enabled enable context menu if @c EINA_TRUE, disable otherwise
+ *
+ * @see elm_config_focus_auto_scroll_bring_in_enabled_get()
+ * @ingroup Entry
+ * @since 1.17
+ */
+EAPI void elm_config_context_menu_disabled_set(Eina_Bool enabled);
+
+/**
  * Get the amount of inertia a scroller will impose at region bring
  * animations.
  *
diff --git a/src/lib/elm_entry.c b/src/lib/elm_entry.c
index 923b3ad..ec6e502 100644
--- a/src/lib/elm_entry.c
+++ b/src/lib/elm_entry.c
@@ -1776,7 +1776,10 @@ _long_press_cb(void *data)
         _magnifier_show(data);
         _magnifier_move(data, sd->downx, sd->downy);
      }
-   else if (!_elm_config->desktop_entry)
+   /* Context menu will not appear if context menu disabled is set
+    * as false on a long press callback */
+   else if (!_elm_config->context_menu_disabled &&
+            (!_elm_config->desktop_entry))
      _menu_call(data);
 
    sd->long_pressed = EINA_TRUE;
@@ -1795,8 +1798,9 @@ _key_down_cb(void *data,
                void *event_info)
 {
    Evas_Event_Key_Down *ev = event_info;
-
-   if (!strcmp(ev->key, "Menu"))
+   /* First check if context menu disabled is false or not, and
+    * then check for key id */
+   if ((!_elm_config->context_menu_disabled) && !strcmp(ev->key, "Menu"))
      _menu_call(data);
 }
 
@@ -1822,7 +1826,9 @@ _mouse_down_cb(void *data,
          sd->longpress_timer = ecore_timer_add
            (_elm_config->longpress_timeout, _long_press_cb, data);
       }
-   else if (ev->button == 3)
+    /* If right button is pressed and context menu disabled is true,
+     * then only context menu will appear */
+   else if (ev->button == 3 && (!_elm_config->context_menu_disabled))
      {
         if (_elm_config->desktop_entry)
           {
@@ -1848,7 +1854,11 @@ _mouse_up_cb(void *data,
    if (ev->button == 1)
      {
         ELM_SAFE_FREE(sd->longpress_timer, ecore_timer_del);
-        if ((sd->long_pressed) && (_elm_config->magnifier_enable))
+        /* Since context menu disabled flag was checked at long press start 
while mouse
+         * down, hence the same should be checked at mouse up from a long press
+         * as well */
+        if ((sd->long_pressed) && (!_elm_config->context_menu_disabled) &&
+            (_elm_config->magnifier_enable))
           {
              _magnifier_hide(data);
              _menu_call(data);
@@ -1867,10 +1877,13 @@ _mouse_up_cb(void *data,
                }
           }
      }
-   else if ((ev->button == 3) && (!_elm_config->desktop_entry))
+  /* Since context menu disabled flag was checked at mouse right key down,
+   * hence the same should be stopped at mouse up of right key as well */
+   else if ((ev->button == 3) && (!_elm_config->context_menu_disabled) &&
+            (!_elm_config->desktop_entry))
      {
-        sd->use_down = 1;
-        _menu_call(data);
+         sd->use_down = 1;
+         _menu_call(data);
      }
 }
 
@@ -3254,7 +3267,10 @@ _start_handler_mouse_up_cb(void *data,
    sd->start_handler_down = EINA_FALSE;
    if (_elm_config->magnifier_enable)
      _magnifier_hide(data);
-   if ((!_elm_config->desktop_entry) && (sd->long_pressed))
+   /* Context menu should not appear, even in case of selector mode, if the
+    * flag is false (disabled) */
+   if ((!_elm_config->context_menu_disabled) &&
+       (!_elm_config->desktop_entry) && (sd->long_pressed))
      _menu_call(data);
 }
 
@@ -3353,7 +3369,10 @@ _end_handler_mouse_up_cb(void *data,
    sd->end_handler_down = EINA_FALSE;
    if (_elm_config->magnifier_enable)
      _magnifier_hide(data);
-   if ((!_elm_config->desktop_entry) && (sd->long_pressed))
+   /* Context menu appear was checked in case of selector start, and hence
+    * the same should be checked at selector end as well */
+   if ((!_elm_config->context_menu_disabled) &&
+       (!_elm_config->desktop_entry) && (sd->long_pressed))
      _menu_call(data);
 }
 
diff --git a/src/lib/elm_priv.h b/src/lib/elm_priv.h
index 6c26a03..4a89dbc 100644
--- a/src/lib/elm_priv.h
+++ b/src/lib/elm_priv.h
@@ -256,6 +256,7 @@ struct _Elm_Config
    double        longpress_timeout;
    unsigned char effect_enable;
    unsigned char desktop_entry;
+   unsigned char context_menu_disabled;
    unsigned char password_show_last;
    double        password_show_last_timeout;
    unsigned char glayer_zoom_finger_enable;

-- 


Reply via email to