fix bug candidate window disappears late 59/17659/1
authorJihoon Kim <jihoon48.kim@samsung.com>
Thu, 10 Oct 2013 06:26:26 +0000 (15:26 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Fri, 7 Mar 2014 09:37:46 +0000 (18:37 +0900)
Patched by Haifeng deng

Change-Id: I8e35a47f9edc45612cf6dcaa3fd8ab64eac02607

ism/extras/efl_immodule/isf_imf_context.cpp
ism/extras/efl_immodule/isf_imf_control_ui.cpp
ism/extras/efl_immodule/isf_imf_control_ui.h
ism/extras/efl_panel/isf_panel_efl.cpp

index 8099629..caa106e 100644 (file)
@@ -1315,6 +1315,9 @@ isf_imf_context_focus_in (Ecore_IMF_Context *ctx)
         ecore_imf_context_input_panel_show (ctx);
     else
         LOGD ("ctx : %p input panel enable : FALSE\n", ctx);
+
+    if (hw_keyboard_num_get () > 0)
+        clear_hide_request ();
 }
 
 /**
index c8174ba..6ca2319 100644 (file)
@@ -207,6 +207,14 @@ void save_current_xid (Ecore_IMF_Context *ctx)
     ecore_x_sync ();
 }
 
+void clear_hide_request ()
+{
+    if (_clear_hide_timer ()) {
+        hide_req_ic = NULL;
+    }
+    will_hide = EINA_FALSE;
+}
+
 static void _event_callback_call (Ecore_IMF_Input_Panel_Event type, int value)
 {
     Ecore_IMF_Context *using_ic = get_using_ic (type, value);
index 1c5b589..8125605 100644 (file)
@@ -36,6 +36,7 @@ extern "C"
     bool process_update_input_context (int type, int value);
     Ecore_IMF_Context *get_using_ic (Ecore_IMF_Input_Panel_Event type, int value);
     void save_current_xid (Ecore_IMF_Context *ctx);
+    void clear_hide_request ();
 
     void isf_imf_input_panel_init ();
     void isf_imf_input_panel_shutdown ();
index 9adfd55..81b5922 100644 (file)
@@ -3864,6 +3864,12 @@ static void slot_hide_ise (void)
         _ise_state = WINDOW_STATE_WILL_HIDE;
     }
     _window_angle = -1;
+
+    if (_candidate_window) {
+        int hw_kbd_detect = _config->read (ISF_CONFIG_HARDWARE_KEYBOARD_DETECT, 0);
+        if (hw_kbd_detect)
+            ui_candidate_hide (true, true, true);
+    }
 }
 
 static void slot_will_hide_ack (void)