move ctrl+0,1,2... before imf processing so it works with imf on.

This commit is contained in:
Carsten Haitzler 2013-05-08 12:23:33 +09:00
parent 229b92f72f
commit dd23ed64be
1 changed files with 35 additions and 29 deletions

View File

@ -1899,39 +1899,12 @@ _smart_cb_key_down(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__,
sd = evas_object_smart_data_get(data); sd = evas_object_smart_data_get(data);
if (!sd) return; if (!sd) return;
if (sd->imf) // handle ctrl+1,2,3...9,0 specially before imf filtering
{
// EXCEPTION. Don't filter modifiers alt+shift -> breaks emacs
// and jed (alt+shift+5 for search/replace for example)
// Don't filter modifiers alt, is used by shells
if (!evas_key_modifier_is_set(ev->modifiers, "Alt"))
{
Ecore_IMF_Event_Key_Down imf_ev;
ecore_imf_evas_event_key_down_wrap(ev, &imf_ev);
if (!sd->composing)
{
if (ecore_imf_context_filter_event
(sd->imf, ECORE_IMF_EVENT_KEY_DOWN, (Ecore_IMF_Event *)&imf_ev))
goto end;
}
}
}
if ((!evas_key_modifier_is_set(ev->modifiers, "Alt")) && if ((!evas_key_modifier_is_set(ev->modifiers, "Alt")) &&
(evas_key_modifier_is_set(ev->modifiers, "Control")) && (evas_key_modifier_is_set(ev->modifiers, "Control")) &&
(!evas_key_modifier_is_set(ev->modifiers, "Shift"))) (!evas_key_modifier_is_set(ev->modifiers, "Shift")))
{ {
if (!strcmp(ev->keyname, "Prior")) if (!strcmp(ev->keyname, "1"))
{
evas_object_smart_callback_call(data, "prev", NULL);
goto end;
}
else if (!strcmp(ev->keyname, "Next"))
{
evas_object_smart_callback_call(data, "next", NULL);
goto end;
}
else if (!strcmp(ev->keyname, "1"))
{ {
_compose_seq_reset(sd); _compose_seq_reset(sd);
evas_object_smart_callback_call(data, "tab,1", NULL); evas_object_smart_callback_call(data, "tab,1", NULL);
@ -1992,6 +1965,39 @@ _smart_cb_key_down(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__,
goto end; goto end;
} }
} }
if (sd->imf)
{
// EXCEPTION. Don't filter modifiers alt+shift -> breaks emacs
// and jed (alt+shift+5 for search/replace for example)
// Don't filter modifiers alt, is used by shells
if (!evas_key_modifier_is_set(ev->modifiers, "Alt"))
{
Ecore_IMF_Event_Key_Down imf_ev;
ecore_imf_evas_event_key_down_wrap(ev, &imf_ev);
if (!sd->composing)
{
if (ecore_imf_context_filter_event
(sd->imf, ECORE_IMF_EVENT_KEY_DOWN, (Ecore_IMF_Event *)&imf_ev))
goto end;
}
}
}
if ((!evas_key_modifier_is_set(ev->modifiers, "Alt")) &&
(evas_key_modifier_is_set(ev->modifiers, "Control")) &&
(!evas_key_modifier_is_set(ev->modifiers, "Shift")))
{
if (!strcmp(ev->keyname, "Prior"))
{
evas_object_smart_callback_call(data, "prev", NULL);
goto end;
}
else if (!strcmp(ev->keyname, "Next"))
{
evas_object_smart_callback_call(data, "next", NULL);
goto end;
}
}
if ((!evas_key_modifier_is_set(ev->modifiers, "Alt")) && if ((!evas_key_modifier_is_set(ev->modifiers, "Alt")) &&
(evas_key_modifier_is_set(ev->modifiers, "Control")) && (evas_key_modifier_is_set(ev->modifiers, "Control")) &&
(evas_key_modifier_is_set(ev->modifiers, "Shift"))) (evas_key_modifier_is_set(ev->modifiers, "Shift")))