From 0f9127f03efb21140ea0d60ecb9c48d10d1a3f3b Mon Sep 17 00:00:00 2001 From: Haifeng Deng Date: Wed, 4 Sep 2013 14:32:03 +0800 Subject: [PATCH] Add SCIM_IME_SUPPORT_LANGUAGE_TOGGLE_KEY option for keyboard ISE Change-Id: I9f400c19ec2753e550b7b24d02555ef0e7dfa151 --- ism/extras/efl_immodule/isf_imf_context.cpp | 17 +++++++++++------ ism/src/scim_imengine.h | 1 + 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/ism/extras/efl_immodule/isf_imf_context.cpp b/ism/extras/efl_immodule/isf_imf_context.cpp index 3c0332a..0fd5773 100644 --- a/ism/extras/efl_immodule/isf_imf_context.cpp +++ b/ism/extras/efl_immodule/isf_imf_context.cpp @@ -2585,13 +2585,18 @@ filter_hotkeys (EcoreIMFContextISF *ic, const KeyEvent &key) FrontEndHotkeyAction hotkey_action = _frontend_hotkey_matcher.get_match_result (); if (hotkey_action == SCIM_FRONTEND_HOTKEY_TRIGGER) { - if (!ic->impl->is_on) - turn_on_ic (ic); - else - turn_off_ic (ic); + IMEngineFactoryPointer sf = _backend->get_factory (ic->impl->si->get_factory_uuid ()); + if (sf && (sf->get_option () & SCIM_IME_SUPPORT_LANGUAGE_TOGGLE_KEY)) { + ret = false; + } else { + if (!ic->impl->is_on) + turn_on_ic (ic); + else + turn_off_ic (ic); - _display_input_language (ic); - ret = true; + _display_input_language (ic); + ret = true; + } } else if (hotkey_action == SCIM_FRONTEND_HOTKEY_ON) { if (!ic->impl->is_on) { turn_on_ic (ic); diff --git a/ism/src/scim_imengine.h b/ism/src/scim_imengine.h index bebaa89..97e5982 100644 --- a/ism/src/scim_imengine.h +++ b/ism/src/scim_imengine.h @@ -80,6 +80,7 @@ enum ClientCapability enum IMEngineOption { SCIM_IME_NOT_SUPPORT_HARDWARE_KEYBOARD = (1 << 0), /**< This option indicates IME could not support hardware keyboard */ + SCIM_IME_SUPPORT_LANGUAGE_TOGGLE_KEY = (1 << 1), /**< This option indicates IME could support language toggle key */ }; /** -- 2.7.4