From 4f4c69578749503d8a1b4106f6a7c4c672fc9aca Mon Sep 17 00:00:00 2001 From: Jing Yigang Date: Tue, 28 Aug 2012 11:15:43 +0800 Subject: [PATCH] Fix P120821-4699[Settings/About phone][Function][EXP] 'Tap to instert' text overlaps with typed characters. Change-Id: I1890356d3be8f17170577cb4a96dfe3bd6294762 --- setting-about/src/setting-about-main.c | 25 +++++++++++------------- setting-common/src/setting-common-draw-genlist.c | 22 ++++++++++++++++++++- 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/setting-about/src/setting-about-main.c b/setting-about/src/setting-about-main.c index 5c00d7a..b1613c2 100755 --- a/setting-about/src/setting-about-main.c +++ b/setting-about/src/setting-about-main.c @@ -590,6 +590,8 @@ static void __entry_key_down_cb(void *data, Evas *e, Evas_Object *obj, void *eve Evas_Event_Key_Down *ev = (Evas_Event_Key_Down *)event_info; SETTING_TRACE_DEBUG("ev->key : %s", ev->key); + SETTING_TRACE("ad->item_dev_name->eo_check:%p", ad->item_dev_name->eo_check); + SETTING_TRACE("obj:%p, %s", obj, elm_entry_entry_get(obj)); if(safeStrCmp(ev->key, "Return") == 0) { // if entry has 1 char at list, hide ime. @@ -606,21 +608,17 @@ static void __entry_key_down_cb(void *data, Evas *e, Evas_Object *obj, void *eve ad->popup = setting_create_popup_without_btn(ad, ad->win_get, NULL, _(EMPTY_LIMITATION_STR), __about_popup_rsp_cb, POPUP_INTERVAL, FALSE, FALSE); } + } else { + Evas_Object *entry_container = elm_object_parent_widget_get(obj); + if(safeStrLen(elm_entry_entry_get(obj)) > 0) { + elm_object_signal_emit(entry_container, "elm,state,guidetext,hide", "elm"); + } else { + //elm_object_part_text_set(entry_container, "elm.guidetext", _("IDS_ST_BODY_TAP_TO_INSERT")); + elm_object_signal_emit(entry_container, "elm,state,guidetext,show", "elm"); + } } } -static Eina_Bool __add_event_on_idler(void *data) -{ - retv_if(data==NULL, FALSE); - - SettingAboutUG *ad = (SettingAboutUG*)data; - - if(ad->item_dev_name) - evas_object_event_callback_add(ad->item_dev_name->eo_check, EVAS_CALLBACK_KEY_DOWN, __entry_key_down_cb, ad); - - return ECORE_CALLBACK_CANCEL; -} - int setting_about_generate_genlist(void *data) { @@ -674,6 +672,7 @@ int setting_about_generate_genlist(void *data) if (ad->item_dev_name) { ad->item_dev_name->userdata = ad; ad->item_dev_name->isSinglelineFlag = 1; + ad->item_dev_name->start_change_cb = (setting_call_back_func)__entry_key_down_cb; ad->item_dev_name->stop_change_cb = __entry_unfocus_cb; ad->item_dev_name->limit_filter_data = calloc(1, sizeof(Elm_Entry_Filter_Accept_Set)); @@ -851,8 +850,6 @@ int setting_about_generate_genlist(void *data) ad->update_timer = ecore_timer_add(2, (Ecore_Task_Cb) __timer_update_cb, ad); - ecore_idler_add(__add_event_on_idler, ad); - return SETTING_RETURN_SUCCESS; } diff --git a/setting-common/src/setting-common-draw-genlist.c b/setting-common/src/setting-common-draw-genlist.c index 0899e6c..b9353c2 100755 --- a/setting-common/src/setting-common-draw-genlist.c +++ b/setting-common/src/setting-common-draw-genlist.c @@ -203,7 +203,21 @@ static void __max_len_reached(void *data, Evas_Object *obj, void *event_info) } } - +static void __entry_keydown(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + ret_if(event_info == NULL); + Evas_Event_Key_Down *ev = (Evas_Event_Key_Down *)event_info; + SETTING_TRACE_DEBUG("ev->key : %s", ev->key); + SETTING_TRACE("obj:%p, %s", obj, elm_entry_entry_get(obj)); + + Evas_Object *entry_container = elm_object_parent_widget_get(obj); + if(safeStrLen(elm_entry_entry_get(obj)) > 0) { + elm_object_signal_emit(entry_container, "elm,state,guidetext,hide", "elm"); + } else { + //elm_object_part_text_set(entry_container, "elm.guidetext", _("IDS_ST_BODY_TAP_TO_INSERT")); + elm_object_signal_emit(entry_container, "elm,state,guidetext,show", "elm"); + } +} /** * Do process when clicking radio in subitem of expandable item @@ -515,6 +529,12 @@ static Evas_Object *__add_entry(Setting_GenGroupItem_Data *item_data, Evas_Objec evas_object_smart_callback_add(entry, "focused", __entry_focused, ed_name); elm_object_signal_callback_add(ed_name, "elm,eraser,clicked", "elm", __eraser_clicked, entry); + Evas_Object_Event_Cb key_down_cb = __entry_keydown; + if (item_data->start_change_cb) { + key_down_cb = (Evas_Object_Event_Cb)(item_data->start_change_cb); + } + evas_object_event_callback_add(entry, EVAS_CALLBACK_KEY_DOWN, key_down_cb, item_data->userdata); + if (item_data->input_panel_disable_flag) { elm_entry_input_panel_enabled_set(entry, EINA_FALSE); } -- 2.7.4