From: Jihoon Kim Date: Thu, 14 Feb 2013 08:03:52 +0000 (+0000) Subject: edje entry : Fix bug candidate word couldn't be selected with up/down key in the... X-Git-Tag: submit/devel/efl/20131022.203902~1828 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=01a61472886531601b2101e118ccd6387c4ebea0;p=platform%2Fupstream%2Fefl.git edje entry : Fix bug candidate word couldn't be selected with up/down key in the preedit status SVN revision: 83882 --- diff --git a/ChangeLog b/ChangeLog index 7d02b33..269375c 100644 --- 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 --- 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 diff --git a/src/lib/edje/edje_entry.c b/src/lib/edje/edje_entry.c index 52aa3b0..23711d4 100644 --- a/src/lib/edje/edje_entry.c +++ b/src/lib/edje/edje_entry.c @@ -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; } }