[demo] replace asynchronous event callback with synchronous callback 50/48550/1
authorJihoon Kim <jihoon48.kim@samsung.com>
Thu, 17 Sep 2015 10:18:12 +0000 (19:18 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Wed, 23 Sep 2015 01:59:06 +0000 (10:59 +0900)
Change-Id: I99ec3138cbfa680419108ffdd5e6467f957ea617

ism/demos/isf_entry_event_efl.cpp
ism/demos/isf_event_efl.cpp

index 71d4ee14c532f680dd6754893632fd308d311b65..4702e430b09feb8c3be3178d3df3db240fd4599c 100644 (file)
@@ -30,8 +30,6 @@ static Evas_Object * _entry2                 = NULL;
 static Evas_Object * _key_event_label        = NULL;
 static Evas_Object * _preedit_event_label    = NULL;
 static Evas_Object * _commit_event_label     = NULL;
-static Ecore_Event_Handler *_preedit_handler = NULL;
-static Ecore_Event_Handler *_commit_handler  = NULL;
 
 static void _input_panel_event_callback (void *data, Ecore_IMF_Context *ctx, int value)
 {
@@ -56,7 +54,7 @@ static void _evas_key_up_cb (void *data, Evas *e, Evas_Object *obj, void *event_
     }
 }
 
-static Eina_Bool _ecore_imf_event_changed_cb (void *data, int type, void *event)
+static void _ecore_imf_event_changed_cb (void *data, Ecore_IMF_Context *ctx, void *event)
 {
     int len;
     static char str [100];
@@ -74,23 +72,20 @@ static Eina_Bool _ecore_imf_event_changed_cb (void *data, int type, void *event)
         snprintf (str, sizeof (str), "entry 2 get preedit string: %s", preedit_string);
         elm_object_text_set (_preedit_event_label, str);
     }
-
-    return ECORE_CALLBACK_RENEW;
 }
 
-static Eina_Bool _ecore_imf_event_commit_cb (void *data, int type, void *event)
+static void _ecore_imf_event_commit_cb (void *data, Ecore_IMF_Context *ctx, void *event)
 {
     static char str [100];
-    Ecore_IMF_Event_Commit *ev = (Ecore_IMF_Event_Commit *) event;
+    char *commit_str = (char *)event;
 
     if (elm_object_focus_get (_entry1) == EINA_TRUE) {
-        snprintf (str, sizeof (str), "entry 1 get commit string: %s", (char *)(ev->str));
+        snprintf (str, sizeof (str), "entry 1 get commit string: %s", commit_str);
         elm_object_text_set (_commit_event_label, str);
     } else if (elm_object_focus_get (_entry2) == EINA_TRUE) {
-        snprintf (str, sizeof (str), "entry 2 get commit string: %s", (char *)(ev->str));
+        snprintf (str, sizeof (str), "entry 2 get commit string: %s", commit_str);
         elm_object_text_set (_commit_event_label, str);
     }
-    return ECORE_CALLBACK_RENEW;
 }
 
 void isf_entry_event_demo_bt (void *data, Evas_Object *obj, void *event_info)
@@ -103,9 +98,6 @@ void isf_entry_event_demo_bt (void *data, Evas_Object *obj, void *event_info)
     evas_object_size_hint_align_set (bx, EVAS_HINT_FILL, 0.0);
     evas_object_show (bx);
 
-    _preedit_handler = ecore_event_handler_add (ECORE_IMF_EVENT_PREEDIT_CHANGED, _ecore_imf_event_changed_cb, NULL);
-    _commit_handler  = ecore_event_handler_add (ECORE_IMF_EVENT_COMMIT, _ecore_imf_event_commit_cb, NULL);
-
     /* Entry 1 */
     _entry1 = elm_entry_add (bx);
     elm_entry_entry_set (_entry1, "ENTRY 1");
@@ -116,8 +108,11 @@ void isf_entry_event_demo_bt (void *data, Evas_Object *obj, void *event_info)
     elm_box_pack_end (bx, _entry1);
 
     ic = (Ecore_IMF_Context *)elm_entry_imf_context_get (_entry1);
-    if (ic != NULL)
+    if (ic != NULL) {
+        ecore_imf_context_event_callback_add(ic, ECORE_IMF_CALLBACK_COMMIT, _ecore_imf_event_commit_cb, NULL);
+        ecore_imf_context_event_callback_add(ic, ECORE_IMF_CALLBACK_PREEDIT_CHANGED, _ecore_imf_event_changed_cb, NULL);
         ecore_imf_context_input_panel_event_callback_add (ic, ECORE_IMF_INPUT_PANEL_STATE_EVENT, _input_panel_event_callback, NULL);
+    }
 
     /* Entry 2 */
     _entry2 = elm_entry_add (bx);
@@ -129,8 +124,11 @@ void isf_entry_event_demo_bt (void *data, Evas_Object *obj, void *event_info)
     elm_box_pack_end (bx, _entry2);
 
     ic = (Ecore_IMF_Context *)elm_entry_imf_context_get (_entry2);
-    if (ic != NULL)
+    if (ic != NULL) {
+        ecore_imf_context_event_callback_add(ic, ECORE_IMF_CALLBACK_COMMIT, _ecore_imf_event_commit_cb, NULL);
+        ecore_imf_context_event_callback_add(ic, ECORE_IMF_CALLBACK_PREEDIT_CHANGED, _ecore_imf_event_changed_cb, NULL);
         ecore_imf_context_input_panel_event_callback_add (ic, ECORE_IMF_INPUT_PANEL_STATE_EVENT, _input_panel_event_callback, NULL);
+    }
 
     /* key event */
     _key_event_label = create_button (bx, "KEY EVENT");
index 8c914f816944c4f28a710660acc6f0c2dd72b53e..c8f042b45de1f73f0cde0fb480677c123e916f3f 100644 (file)
@@ -34,8 +34,6 @@ static Evas_Object *_commit_event_label  = NULL;
 static Evas_Object *_set_focus_button1   = NULL;
 static Evas_Object *_set_focus_button2   = NULL;
 static Evas_Object *_ise_show_button     = NULL;
-static Ecore_Event_Handler *_preedit_handler = NULL;
-static Ecore_Event_Handler *_commit_handler  = NULL;
 static int focus_label_idx = 1;
 
 extern void isf_entry_event_demo_bt (void *data, Evas_Object *obj, void *event_info);
@@ -86,7 +84,7 @@ static void _key_down_cb (void *data, Evas *e, Evas_Object *obj, void *event_inf
     }
 }
 
-static Eina_Bool _ecore_imf_event_changed_cb (void *data, int type, void *event)
+static void _ecore_imf_event_changed_cb (void *data, Ecore_IMF_Context *ctx, void *event)
 {
     static char str [100];
 
@@ -98,7 +96,7 @@ static Eina_Bool _ecore_imf_event_changed_cb (void *data, int type, void *event)
         ecore_imf_context_preedit_string_get (_imf_context[focus_label_idx-1], &preedit_string, &cursor_pos);
 
     if (preedit_string == NULL)
-        return ECORE_CALLBACK_CANCEL;
+        return;
 
     snprintf (str, sizeof (str), "label %d get preedit string: %s", focus_label_idx, preedit_string);
 
@@ -106,18 +104,15 @@ static Eina_Bool _ecore_imf_event_changed_cb (void *data, int type, void *event)
 
     if (_preedit_event_label)
         elm_object_text_set (_preedit_event_label, str);
-
-    return ECORE_CALLBACK_CANCEL;
 }
 
-static Eina_Bool _ecore_imf_event_commit_cb (void *data, int type, void *event)
+static void _ecore_imf_event_commit_cb (void *data, Ecore_IMF_Context *ctx, void *event)
 {
     static char str [100];
-    Ecore_IMF_Event_Commit *ev = (Ecore_IMF_Event_Commit *) event;
+    char *commit_str = (char *)event;
 
-    snprintf (str, sizeof (str), "label %d get commit string: %s", focus_label_idx, (char *)(ev->str));
+    snprintf (str, sizeof (str), "label %d get commit string: %s", focus_label_idx, commit_str);
     elm_object_text_set (_commit_event_label, str);
-    return ECORE_CALLBACK_CANCEL;
 }
 
 static Eina_Bool _nf_back_event_cb (void *data, Elm_Object_Item *it)
@@ -135,16 +130,6 @@ static Eina_Bool _nf_back_event_cb (void *data, Elm_Object_Item *it)
         }
     }
 
-    if (_preedit_handler != NULL) {
-        ecore_event_handler_del (_preedit_handler);
-        _preedit_handler = NULL;
-    }
-
-    if (_commit_handler != NULL) {
-        ecore_event_handler_del (_commit_handler);
-        _commit_handler = NULL;
-    }
-
     return EINA_TRUE;
 }
 
@@ -165,11 +150,6 @@ static void isf_label_event_demo_bt (void *data, Evas_Object *obj, void *event_i
 
     const char *ctx_id = ecore_imf_context_default_id_get ();
 
-    /* register preedit (composing) event handler */
-    _preedit_handler = ecore_event_handler_add (ECORE_IMF_EVENT_PREEDIT_CHANGED, _ecore_imf_event_changed_cb, NULL);
-    /* register commit event handler */
-    _commit_handler = ecore_event_handler_add (ECORE_IMF_EVENT_COMMIT, _ecore_imf_event_commit_cb, NULL);
-
     /* create label1 */
     _label1 = elm_label_add (bx);
     elm_object_text_set (_label1, "LABEL 1");
@@ -184,6 +164,9 @@ static void isf_label_event_demo_bt (void *data, Evas_Object *obj, void *event_i
     _imf_context[0] = ecore_imf_context_add (ctx_id);
     if (_imf_context[0]) {
         ecore_imf_context_client_canvas_set (_imf_context[0], evas_object_evas_get (_label1));
+        ecore_imf_context_event_callback_add(_imf_context[0], ECORE_IMF_CALLBACK_COMMIT, _ecore_imf_event_commit_cb, NULL);
+        ecore_imf_context_event_callback_add(_imf_context[0], ECORE_IMF_CALLBACK_PREEDIT_CHANGED, _ecore_imf_event_changed_cb, NULL);
+
         ecore_imf_context_focus_in (_imf_context[0]);
     }
 
@@ -200,8 +183,10 @@ static void isf_label_event_demo_bt (void *data, Evas_Object *obj, void *event_i
     /* create input context for label2 */
     _imf_context[1] = ecore_imf_context_add (ctx_id);
     if (_imf_context[1]) {
-        ecore_imf_context_client_window_set (_imf_context[1], (void *)ecore_win);
         ecore_imf_context_client_canvas_set (_imf_context[1], evas_object_evas_get (_label2));
+
+        ecore_imf_context_event_callback_add(_imf_context[1], ECORE_IMF_CALLBACK_COMMIT, _ecore_imf_event_commit_cb, NULL);
+        ecore_imf_context_event_callback_add(_imf_context[1], ECORE_IMF_CALLBACK_PREEDIT_CHANGED, _ecore_imf_event_changed_cb, NULL);
     }
 
     _key_event_label = create_button (bx, "KEY EVENT");