Added attach input context handler
authorJi-hoon Lee <dalton.lee@samsung.com>
Tue, 30 Apr 2013 07:48:16 +0000 (16:48 +0900)
committerJi-hoon Lee <dalton.lee@samsung.com>
Tue, 30 Apr 2013 07:48:16 +0000 (16:48 +0900)
packaging/ise-default.spec
src/common.cpp
src/include/common.h
src/include/ise.h
src/ise.cpp
src/main.cpp

index df6bdbc..0a79be6 100644 (file)
@@ -1,6 +1,6 @@
 Name:       ise-default
 Summary:    Tizen keyboard
-Version:    0.8.4
+Version:    0.8.5
 Release:    1
 Group:      TO BE / FILLED IN
 License:    TO BE / FILLED IN
index a40a8f2..b169fb0 100644 (file)
@@ -564,7 +564,7 @@ void slot_attach_input_context (const scim::HelperAgent *agent, int ic, const sc
     if (impl) {
         IISECommonEventCallback *callback = impl->get_core_event_callback();
         if (callback) {
-            //callback->attach_input_context(ic, ic_uuid.c_str());
+            callback->attach_input_context(ic, ic_uuid.c_str());
         }
     }
 }
@@ -574,7 +574,7 @@ void slot_detach_input_context (const scim::HelperAgent *agent, int ic, const sc
     if (impl) {
         IISECommonEventCallback *callback = impl->get_core_event_callback();
         if (callback) {
-            //callback->detach_input_context(ic, ic_uuid.c_str());
+            callback->detach_input_context(ic, ic_uuid.c_str());
         }
     }
 }
index f0a5ab9..fef3b14 100644 (file)
@@ -36,6 +36,8 @@
 struct IISECommonEventCallback {
     virtual void init () {}
     virtual void exit (sclint ic, const sclchar *ic_uuid) {}
+    virtual void attach_input_context(sclint ic, const sclchar *ic_uuid) {}
+    virtual void detach_input_context(sclint ic, const sclchar *ic_uuid) {}
     virtual void reload_config (sclint ic, const sclchar *ic_uuid) {}
     virtual void update_spot_location (sclint ic, const sclchar *ic_uuid, sclint x, sclint y) {}
     virtual void update_cursor_position (sclint ic, const sclchar *ic_uuid, sclint cursor_pos) {}
index 842b7e7..ad89991 100644 (file)
@@ -29,7 +29,7 @@
 
 #include "languages.h"
 
-#define ISE_VERSION "0.8.4-1"
+#define ISE_VERSION "0.8.5-1"
 #define LOCALEDIR "/usr/share/locale"
 
 #define PRIMARY_LATIN_LANGUAGE "English"
@@ -107,6 +107,8 @@ void ise_forward_key_event(sclulong key_event);
 
 void ise_focus_in(int ic);
 void ise_focus_out(int ic);
+void ise_attach_input_context(int ic);
+void ise_detach_input_context(int ic);
 void ise_show(int ic);
 void ise_hide();
 void ise_create();
index 29b076f..e8e0baf 100644 (file)
@@ -273,7 +273,8 @@ ise_reset_input_context()
 {
 }
 
-sclboolean check_ic_temporary(int ic)
+sclboolean
+check_ic_temporary(int ic)
 {
     if ((ic & 0xFFFF) == 0) {
         return TRUE;
@@ -284,6 +285,9 @@ sclboolean check_ic_temporary(int ic)
 void
 ise_focus_in(int ic)
 {
+    LOGD("ic : %d , %d , g_ic : %d , %d, g_focused_ic : %d , %d", ic, check_ic_temporary(ic),
+            g_keyboard_state.ic, check_ic_temporary(g_keyboard_state.ic),
+            g_keyboard_state.focused_ic, check_ic_temporary(g_keyboard_state.focused_ic));
     if (check_ic_temporary(g_keyboard_state.ic) && !check_ic_temporary(ic)) {
         g_keyboard_state.ic = ic;
     }
@@ -308,7 +312,22 @@ ise_focus_out(int ic)
     g_keyboard_state.focused_ic = 0;
 }
 
-void ise_show(int ic)
+void
+ise_attach_input_context(int ic)
+{
+    LOGD("attaching, ic : %d , %d , g_ic : %d , %d, g_focused_ic : %d , %d", ic, check_ic_temporary(ic),
+            g_keyboard_state.ic, check_ic_temporary(g_keyboard_state.ic),
+            g_keyboard_state.focused_ic, check_ic_temporary(g_keyboard_state.focused_ic));
+    ise_focus_in(ic);
+}
+void
+ise_detach_input_context(int ic)
+{
+    ise_focus_out(ic);
+}
+
+void
+ise_show(int ic)
 {
     sclboolean reset_inputmode = FALSE;
     if (gSCLUI && g_ise_common) {
@@ -317,9 +336,15 @@ void ise_show(int ic)
 
         _language_manager.set_enabled_languages(g_config_values.enabled_languages);
 
+    LOGD("ic : %d , %d , g_ic : %d , %d, g_focused_ic : %d , %d", ic, check_ic_temporary(ic),
+            g_keyboard_state.ic, check_ic_temporary(g_keyboard_state.ic),
+            g_keyboard_state.focused_ic, check_ic_temporary(g_keyboard_state.focused_ic));
         if (check_ic_temporary(ic) && !check_ic_temporary(g_keyboard_state.focused_ic)) {
             ic = g_keyboard_state.focused_ic;
         }
+        if (!check_ic_temporary(ic) && check_ic_temporary(g_keyboard_state.focused_ic)) {
+            g_keyboard_state.focused_ic = ic;
+        }
         if (ic == g_keyboard_state.focused_ic) {
             if (g_keyboard_state.layout == ISE_LAYOUT_STYLE_PHONENUMBER ||
                     g_keyboard_state.layout == ISE_LAYOUT_STYLE_IP ||
index e843eb3..dea6ffc 100644 (file)
@@ -41,6 +41,9 @@ class CCoreEventCallback : public IISECommonEventCallback
     void init();
     void exit(sclint ic, const sclchar *ic_uuid);
 
+    void attach_input_context(sclint ic, const sclchar *ic_uuid);
+    void detach_input_context(sclint ic, const sclchar *ic_uuid);
+
     void focus_out (sclint ic, const sclchar *ic_uuid);
     void focus_in (sclint ic, const sclchar *ic_uuid);
 
@@ -71,14 +74,24 @@ void CCoreEventCallback::exit(sclint ic, const sclchar *ic_uuid)
     ::ise_hide();
 }
 
+void CCoreEventCallback::attach_input_context(sclint ic, const sclchar *ic_uuid)
+{
+    ise_attach_input_context(ic);
+}
+
+void CCoreEventCallback::detach_input_context(sclint ic, const sclchar *ic_uuid)
+{
+    ise_detach_input_context(ic);
+}
+
 void CCoreEventCallback::focus_in(sclint ic, const sclchar *ic_uuid)
 {
-    ::ise_focus_in(ic);
+    ise_focus_in(ic);
 }
 
 void CCoreEventCallback::focus_out(sclint ic, const sclchar *ic_uuid)
 {
-    ::ise_focus_out(ic);
+    ise_focus_out(ic);
 }
 
 void CCoreEventCallback::ise_show(sclint ic, const sclint degree, Ise_Context context)