Fix N_SE-11079(When clicking '<-' of 'Keyboard settings', user shouldn't see the...
authorKairong Yin <kairong78.yin@samsung.com>
Sun, 14 Oct 2012 12:20:20 +0000 (05:20 -0700)
committerKairong Yin <kairong78.yin@samsung.com>
Fri, 12 Oct 2012 05:34:39 +0000 (22:34 -0700)
Change-Id: I4ca637e43074218d842c26bbe00d194ba00ac9c5

setting-about/include/setting-about.h
setting-about/src/setting-about-main.c
setting-about/src/setting-about.c
setting-common/src/setting-common-draw-genlist.c

index ab7a65b..10b0d8b 100755 (executable)
@@ -57,6 +57,7 @@ struct _SettingAboutUG {
        ui_gadget_h ug;
        TapiHandle *handle;
        bool tapi_responsed;
+       bool pause_flag;
 
        setting_view *view_to_load;
 
index c2c0e9a..f3fc968 100755 (executable)
@@ -1031,6 +1031,17 @@ static void __top_back_cb(void *data, Evas_Object *obj,
        SETTING_TRACE_END;
 }
 
+static Eina_Bool __delay_remove(void *data)
+{
+       SETTING_TRACE_BEGIN;
+       SettingAboutUG *ad = data;
+       if (ad->popup)
+       {
+               evas_object_del(ad->popup);
+               ad->popup = NULL;
+       }
+       return FALSE;
+}
 static void _input_panel_event_cb(void *data, Ecore_IMF_Context *ctx, int value)
 {
        SETTING_TRACE_BEGIN;
@@ -1062,7 +1073,10 @@ static void _input_panel_event_cb(void *data, Ecore_IMF_Context *ctx, int value)
 
                if (ad->item_dev_name) {
                        elm_object_focus_set(ad->item_dev_name->eo_check, EINA_FALSE);
-               }
+               }//if Setting is overlapped by other app,the entry will lost its focus,
+               //the input pannel will be hided and any popup should be removed to fix blinking issue.
+               if (ad->pause_flag)
+                       ecore_idler_add(__delay_remove, ad);
        }
 }
 
index 5e060d0..b2daa92 100755 (executable)
@@ -126,6 +126,9 @@ static void setting_about_ug_on_start(ui_gadget_h ug, service_h service,
 static void setting_about_ug_on_pause(ui_gadget_h ug, service_h service,
                                      void *priv)
 {
+       SETTING_TRACE_BEGIN;
+       SettingAboutUG *SettingAboutUG = priv;
+       SettingAboutUG->pause_flag = TRUE;
 }
 
 static void setting_about_ug_on_resume(ui_gadget_h ug, service_h service,
@@ -134,6 +137,7 @@ static void setting_about_ug_on_resume(ui_gadget_h ug, service_h service,
        SETTING_TRACE_BEGIN;
        setting_retm_if((!priv), "!priv");
        SettingAboutUG *aboutUG = priv;
+       aboutUG->pause_flag = FALSE;
 
        char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO] = { 0, };
 
index ab4e57f..0d09d64 100755 (executable)
@@ -161,6 +161,9 @@ static void __entry_focused(void *data, Evas_Object *obj, void *event_info) // F
        if (!elm_entry_is_empty(obj))
                elm_object_signal_emit(entry_container, "elm,state,eraser,show", "elm");
        elm_object_signal_emit(entry_container, "elm,state,guidetext,hide", "elm");
+
+       Ecore_IMF_Context *imf_context = (Ecore_IMF_Context *)elm_entry_imf_context_get(obj);
+       if (imf_context) ecore_imf_context_input_panel_show(imf_context);
 }
 static void __eraser_clicked(void *data, Evas_Object *obj, const char *emission, const char *source) // When X marked button is clicked, empty entry's contents.
 {