Oops we're in a feature freeze and stabilization period. This needs to be reverted. https://phab.enlightenment.org/w/efl_and_elementary_1_9/
Thanks. Daniel Juyung seo (SeoZ) On Fri, Jan 3, 2014 at 6:55 PM, Jihoon Kim <imfin...@gmail.com> wrote: > jihoon pushed a commit to branch master. > > > http://git.enlightenment.org/core/elementary.git/commit/?id=c8f021ba302279a91666ddda04f0247b3a2931f6 > > commit c8f021ba302279a91666ddda04f0247b3a2931f6 > Author: Jihoon Kim <jihoon48....@samsung.com> > Date: Fri Jan 3 18:51:38 2014 +0900 > > entry: Add elm_entry_input_panel_show_on_demand_set/get API > > This API sets 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. > --- > 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 + > 4 files changed, 115 insertions(+), 1 deletion(-) > > diff --git a/src/lib/elm_entry.c b/src/lib/elm_entry.c > index 81a35db..cc155c3 100644 > --- a/src/lib/elm_entry.c > +++ b/src/lib/elm_entry.c > @@ -594,6 +594,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); > > // elm_entry_cursor_pos_set -> cursor,changed -> widget_show_region_set > // -> smart_objects_calculate will call all smart calculate functions, > @@ -918,7 +920,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); > @@ -1576,6 +1578,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); > > @@ -1588,6 +1592,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)) > { > @@ -5600,6 +5617,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; > + > + if (ret) *ret = sd->input_panel_show_on_demand; > +} > + > EAPI void * > elm_entry_imf_context_get(Evas_Object *obj) > { > @@ -5868,6 +5923,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); > @@ -5965,6 +6022,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 62da6a1..e168ce5 100644 > --- a/src/lib/elm_entry_eo.h > +++ b/src/lib/elm_entry_eo.h > @@ -95,6 +95,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 > }; > > @@ -1271,6 +1273,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.9 > + * > + * 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.9 > + * > + * 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 40d1e47..b3f5506 100644 > --- a/src/lib/elm_entry_legacy.h > +++ b/src/lib/elm_entry_legacy.h > @@ -1191,3 +1191,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.9 > + * > + * @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.9 > + * > + * @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 4e37a10..dc2b96d 100644 > --- a/src/lib/elm_widget_entry.h > +++ b/src/lib/elm_widget_entry.h > @@ -102,6 +102,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; > > -- > > > ------------------------------------------------------------------------------ Rapidly troubleshoot problems before they affect your business. Most IT organizations don't have a clear picture of how application performance affects their revenue. With AppDynamics, you get 100% visibility into your Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro! http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel