jihoon pushed a commit to branch master.

commit 3fc38ccc41d9b61efb4b5a8db08ea8290182bb7a
Author: Jihoon Kim <[email protected]>
Date:   Wed Aug 14 18:32:42 2013 +0900

    Add elm_entry_input_panel_show_on_demand_set/get()
---
 ChangeLog                  |  4 +++
 NEWS                       |  1 +
 src/lib/elm_entry.c        | 61 +++++++++++++++++++++++++++++++++++++++++++++-
 src/lib/elm_entry_eo.h     | 30 +++++++++++++++++++++++
 src/lib/elm_entry_legacy.h | 24 ++++++++++++++++++
 src/lib/elm_widget_entry.h |  1 +
 6 files changed, 120 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index b424df7..bafc366 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1558,3 +1558,7 @@
 
         * Mapbuf: Ensure that content size calculation is correctly finished
         because the mapbuf is willing to block the size calculation forcely.
+
+2013-08-14  Jihoon Kim (jihoon)
+
+        * Entry: Add elm_entry_input_panel_show_on_demand_set/get().
diff --git a/NEWS b/NEWS
index 7a95670..8eda4a0 100644
--- a/NEWS
+++ b/NEWS
@@ -83,6 +83,7 @@ Additions:
    * File Selector : Support elm_object_part_text_set() for the ok, cancel 
part to change the OK, Cancel button label.
    * Add _elm_access_object_get, deprecate _elm_access_info_get
    * Add elm_win_focus_highlight_animate_set/get().
+   * Add elm_entry_input_panel_show_on_demand_set/get().
 
 Improvements:
 
diff --git a/src/lib/elm_entry.c b/src/lib/elm_entry.c
index 3bad6f7..e6bd510 100644
--- a/src/lib/elm_entry.c
+++ b/src/lib/elm_entry.c
@@ -519,6 +519,8 @@ _elm_entry_smart_theme(Eo *obj, void *_pd, va_list *list)
      (sd->entry_edje, "elm.text", 
(Edje_Input_Panel_Return_Key_Type)sd->input_panel_return_key_type);
    edje_object_part_text_input_panel_return_key_disabled_set
      (sd->entry_edje, "elm.text", sd->input_panel_return_key_disabled);
+   edje_object_part_text_input_panel_show_on_demand_set
+     (sd->entry_edje, "elm.text", sd->input_panel_show_on_demand);
 
    if (sd->cursor_pos != 0)
      elm_entry_cursor_pos_set(obj, sd->cursor_pos);
@@ -831,7 +833,7 @@ _elm_entry_smart_on_focus(Eo *obj, void *_pd EINA_UNUSED, 
va_list *list)
      {
         evas_object_focus_set(sd->entry_edje, EINA_TRUE);
         edje_object_signal_emit(sd->entry_edje, "elm,action,focus", "elm");
-        if (top && top_is_win && sd->input_panel_enable &&
+        if (top && top_is_win && sd->input_panel_enable && 
!sd->input_panel_show_on_demand &&
             !edje_object_part_text_imf_context_get(sd->entry_edje, "elm.text"))
           elm_win_keyboard_mode_set(top, ELM_WIN_KEYBOARD_ON);
         evas_object_smart_callback_call(obj, SIG_FOCUSED, NULL);
@@ -1540,6 +1542,8 @@ _mouse_up_cb(void *data,
              void *event_info)
 {
    Evas_Event_Mouse_Up *ev = event_info;
+   Eina_Bool top_is_win = EINA_FALSE;
+   Evas_Object *top;
 
    ELM_ENTRY_DATA_GET(data, sd);
 
@@ -1552,6 +1556,19 @@ _mouse_up_cb(void *data,
              _magnifier_hide(data);
              _menu_call(data);
           }
+        else
+          {
+             top = elm_widget_top_get(data);
+             if (top)
+               {
+                  if (!strcmp(evas_object_type_get(top), "elm_win"))
+                    top_is_win = EINA_TRUE;
+
+                  if (top_is_win && sd->input_panel_enable && 
sd->input_panel_show_on_demand &&
+                      !edje_object_part_text_imf_context_get(sd->entry_edje, 
"elm.text"))
+                    elm_win_keyboard_mode_set(top, ELM_WIN_KEYBOARD_ON);
+               }
+          }
      }
    else if ((ev->button == 3) && (!_elm_config->desktop_entry))
      {
@@ -5337,6 +5354,44 @@ _input_panel_return_key_autoenabled_set(Eo *obj, void 
*_pd, va_list *list)
    _return_key_enabled_check(obj);
 }
 
+EAPI void
+elm_entry_input_panel_show_on_demand_set(Evas_Object *obj,
+                                         Eina_Bool ondemand)
+{
+   ELM_ENTRY_CHECK(obj);
+   eo_do(obj, elm_obj_entry_input_panel_show_on_demand_set(ondemand));
+}
+
+static void
+_input_panel_show_on_demand_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+{
+   Eina_Bool ondemand = va_arg(*list, int);
+   Elm_Entry_Smart_Data *sd = _pd;
+
+   sd->input_panel_show_on_demand = ondemand;
+
+   edje_object_part_text_input_panel_show_on_demand_set
+     (sd->entry_edje, "elm.text", ondemand);
+}
+
+EAPI Eina_Bool
+elm_entry_input_panel_show_on_demand_get(const Evas_Object *obj)
+{
+   ELM_ENTRY_CHECK(obj) EINA_FALSE;
+   Eina_Bool ret = EINA_FALSE;
+   eo_do((Eo *) obj, elm_obj_entry_input_panel_show_on_demand_get(&ret));
+   return ret;
+}
+
+static void
+_input_panel_show_on_demand_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+{
+   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
+   Elm_Entry_Smart_Data *sd = _pd;
+
+   *ret = sd->input_panel_show_on_demand;
+}
+
 EAPI void *
 elm_entry_imf_context_get(Evas_Object *obj)
 {
@@ -5601,6 +5656,8 @@ _class_constructor(Eo_Class *klass)
         EO_OP_FUNC(ELM_OBJ_ENTRY_ID(ELM_OBJ_ENTRY_SUB_ID_ANCHOR_HOVER_END), 
_anchor_hover_end),
         
EO_OP_FUNC(ELM_OBJ_ENTRY_ID(ELM_OBJ_ENTRY_SUB_ID_INPUT_PANEL_LAYOUT_VARIATION_SET),
 _input_panel_layout_variation_set),
         
EO_OP_FUNC(ELM_OBJ_ENTRY_ID(ELM_OBJ_ENTRY_SUB_ID_INPUT_PANEL_LAYOUT_VARIATION_GET),
 _input_panel_layout_variation_get),
+        
EO_OP_FUNC(ELM_OBJ_ENTRY_ID(ELM_OBJ_ENTRY_SUB_ID_INPUT_PANEL_SHOW_ON_DEMAND_SET),
 _input_panel_show_on_demand_set),
+        
EO_OP_FUNC(ELM_OBJ_ENTRY_ID(ELM_OBJ_ENTRY_SUB_ID_INPUT_PANEL_SHOW_ON_DEMAND_GET),
 _input_panel_show_on_demand_get),
         EO_OP_FUNC_SENTINEL
    };
    eo_class_funcs_set(klass, func_desc);
@@ -5696,6 +5753,8 @@ static const Eo_Op_Description op_desc[] = {
      EO_OP_DESCRIPTION(ELM_OBJ_ENTRY_SUB_ID_ANCHOR_HOVER_END, "Ends the hover 
popup in the entry."),
      EO_OP_DESCRIPTION(ELM_OBJ_ENTRY_SUB_ID_INPUT_PANEL_LAYOUT_VARIATION_SET, 
"Set the input panel layout variation of the entry."),
      EO_OP_DESCRIPTION(ELM_OBJ_ENTRY_SUB_ID_INPUT_PANEL_LAYOUT_VARIATION_GET, 
"Get the input panel layout variation of the entry."),
+     EO_OP_DESCRIPTION(ELM_OBJ_ENTRY_SUB_ID_INPUT_PANEL_SHOW_ON_DEMAND_SET, 
"Set the attribute to show the input panel in case of only an user's explicit 
Mouse Up event."),
+     EO_OP_DESCRIPTION(ELM_OBJ_ENTRY_SUB_ID_INPUT_PANEL_SHOW_ON_DEMAND_GET, 
"Get the attribute to show the input panel in case of only an user's explicit 
Mouse Up event."),
      EO_OP_DESCRIPTION_SENTINEL
 };
 
diff --git a/src/lib/elm_entry_eo.h b/src/lib/elm_entry_eo.h
index 47fdbd6..216145e 100644
--- a/src/lib/elm_entry_eo.h
+++ b/src/lib/elm_entry_eo.h
@@ -93,6 +93,8 @@ enum
    ELM_OBJ_ENTRY_SUB_ID_ANCHOR_HOVER_END,
    ELM_OBJ_ENTRY_SUB_ID_INPUT_PANEL_LAYOUT_VARIATION_SET,
    ELM_OBJ_ENTRY_SUB_ID_INPUT_PANEL_LAYOUT_VARIATION_GET,
+   ELM_OBJ_ENTRY_SUB_ID_INPUT_PANEL_SHOW_ON_DEMAND_SET,
+   ELM_OBJ_ENTRY_SUB_ID_INPUT_PANEL_SHOW_ON_DEMAND_GET,
    ELM_OBJ_ENTRY_SUB_ID_LAST
 };
 
@@ -1240,6 +1242,34 @@ enum
 #define elm_obj_entry_input_panel_return_key_autoenabled_set(enabled) 
ELM_OBJ_ENTRY_ID(ELM_OBJ_ENTRY_SUB_ID_INPUT_PANEL_RETURN_KEY_AUTOENABLED_SET), 
EO_TYPECHECK(Eina_Bool, enabled)
 
 /**
+ * @def elm_obj_entry_input_panel_show_on_demand_set
+ * @since 1.8
+ *
+ * Set the attribute to show the input panel in case of only an user's 
explicit Mouse Up event.
+ *
+ * @param[in] ondemand
+ *
+ * @see elm_entry_input_panel_show_on_demand_set
+ *
+ * @ingroup Entry
+ */
+#define elm_obj_entry_input_panel_show_on_demand_set(ondemand) 
ELM_OBJ_ENTRY_ID(ELM_OBJ_ENTRY_SUB_ID_INPUT_PANEL_SHOW_ON_DEMAND_SET), 
EO_TYPECHECK(Eina_Bool, ondemand)
+
+/**
+ * @def elm_obj_entry_input_panel_show_on_demand_get
+ * @since 1.8
+ *
+ * Get the attribute to show the input panel in case of only an user's 
explicit Mouse Up event.
+ *
+ * @param[out] ret
+ *
+ * @see elm_entry_input_panel_show_on_demand_get
+ *
+ * @ingroup Entry
+ */
+#define elm_obj_entry_input_panel_show_on_demand_get(ret) 
ELM_OBJ_ENTRY_ID(ELM_OBJ_ENTRY_SUB_ID_INPUT_PANEL_SHOW_ON_DEMAND_GET), 
EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
  * @def elm_obj_entry_imf_context_get
  * @since 1.8
  *
diff --git a/src/lib/elm_entry_legacy.h b/src/lib/elm_entry_legacy.h
index 90c6264..24aa4cf 100644
--- a/src/lib/elm_entry_legacy.h
+++ b/src/lib/elm_entry_legacy.h
@@ -1170,3 +1170,27 @@ EAPI void                   
elm_entry_input_panel_layout_variation_set(Evas_Obje
  * @since 1.8
  */
 EAPI int                    elm_entry_input_panel_layout_variation_get(const 
Evas_Object *obj);
+
+/**
+ * Set the attribute to show the input panel in case of only an user's 
explicit Mouse Up event.
+ * It doesn't request to show the input panel even though it has focus.
+ *
+ * @param obj The entry object
+ * @param ondemand If true, the input panel will be shown in case of only 
Mouse up event.
+ *                 (Focus event will be ignored.)
+ * @since 1.8
+ *
+ * @ingroup Entry
+ */
+EAPI void                   
elm_entry_input_panel_show_on_demand_set(Evas_Object *obj, Eina_Bool ondemand);
+
+/**
+ * Get the attribute to show the input panel in case of only an user's 
explicit Mouse Up event.
+ *
+ * @param obj The entry object
+ * @return @c EINA_TRUE if the input panel will be shown in case of only Mouse 
up event.
+ * @since 1.8
+ *
+ * @ingroup Entry
+ */
+EAPI Eina_Bool              elm_entry_input_panel_show_on_demand_get(const 
Evas_Object *obj);
diff --git a/src/lib/elm_widget_entry.h b/src/lib/elm_widget_entry.h
index 4ca6bdf..2c37e88 100644
--- a/src/lib/elm_widget_entry.h
+++ b/src/lib/elm_widget_entry.h
@@ -95,6 +95,7 @@ struct _Elm_Entry_Smart_Data
    Eina_Bool                             sel_mode : 1;
    Eina_Bool                             changed : 1;
    Eina_Bool                             scroll : 1;
+   Eina_Bool                             input_panel_show_on_demand : 1;
 };
 
 typedef struct _Elm_Entry_Item_Provider     Elm_Entry_Item_Provider;

-- 

------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite!
It's a free troubleshooting tool designed for production.
Get down to code-level detail for bottlenecks, with <2% overhead. 
Download for free and get started troubleshooting in minutes. 
http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk

Reply via email to