edje entry : Fix bug candidate word couldn't be selected with up/down key in the...
authorJihoon Kim <imfine98@gmail.com>
Thu, 14 Feb 2013 08:03:52 +0000 (08:03 +0000)
committerJihoon Kim <imfine98@gmail.com>
Thu, 14 Feb 2013 08:03:52 +0000 (08:03 +0000)
SVN revision: 83882

ChangeLog
NEWS
src/lib/edje/edje_entry.c

index 7d02b33..269375c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,6 +5,7 @@
 2013-02-14  Jihoon Kim (jihoon)
 
         * edje entry : fix bug not to display preedit string with PREEDIT_TYPE_NONE style
+        * edje entry : Fix bug candidate word couldn't be selected with up/down key in the preedit status
 
 2013-02-11  Stefan Schmidt
 
diff --git a/NEWS b/NEWS
index 5c06cf4..33e9d8f 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -165,3 +165,4 @@ Fixes:
     * Evas textblock: Fixed a selection issue with different scripts and bidi.
     * Fix memory leak in error case in ethumb.
     * fix bug not to display preedit string with PREEDIT_TYPE_NONE style
+    * Fix bug candidate word couldn't be selected with up/down key in the preedit status
index 52aa3b0..23711d4 100644 (file)
@@ -1215,12 +1215,24 @@ _edje_key_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
    if (en->imf_context)
      {
         Ecore_IMF_Event_Key_Down ecore_ev;
+        Eina_Bool filter_ret;
         ecore_imf_evas_event_key_down_wrap(ev, &ecore_ev);
         if (!en->composing)
           {
-             if (ecore_imf_context_filter_event(en->imf_context,
-                                                ECORE_IMF_EVENT_KEY_DOWN,
-                                                (Ecore_IMF_Event *)&ecore_ev))
+             filter_ret = ecore_imf_context_filter_event(en->imf_context,
+                                                         ECORE_IMF_EVENT_KEY_DOWN,
+                                                         (Ecore_IMF_Event *)&ecore_ev);
+
+             if (!strcmp(ev->keyname, "Down") ||
+                 (!strcmp(ev->keyname, "KP_Down") && !ev->string) ||
+                 !strcmp(ev->keyname, "Up") ||
+                 (!strcmp(ev->keyname, "KP_Up") && !ev->string))
+               {
+                  if (en->have_preedit)
+                    ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
+               }
+
+             if (filter_ret)
                return;
           }
      }