aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/ecore/src/modules/immodules/xim/ecore_imf_xim.c
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/ecore/src/modules/immodules/xim/ecore_imf_xim.c')
-rw-r--r--libraries/ecore/src/modules/immodules/xim/ecore_imf_xim.c48
1 files changed, 46 insertions, 2 deletions
diff --git a/libraries/ecore/src/modules/immodules/xim/ecore_imf_xim.c b/libraries/ecore/src/modules/immodules/xim/ecore_imf_xim.c
index ea7ee7f..01a3576 100644
--- a/libraries/ecore/src/modules/immodules/xim/ecore_imf_xim.c
+++ b/libraries/ecore/src/modules/immodules/xim/ecore_imf_xim.c
@@ -294,6 +294,10 @@ _ecore_imf_context_xim_focus_in(Ecore_IMF_Context *ctx)
294 imf_context_data = ecore_imf_context_data_get(ctx); 294 imf_context_data = ecore_imf_context_data_get(ctx);
295 ic = imf_context_data->ic; 295 ic = imf_context_data->ic;
296 imf_context_data->has_focus = EINA_TRUE; 296 imf_context_data->has_focus = EINA_TRUE;
297
298 if (ecore_imf_context_input_panel_enabled_get(ctx))
299 ecore_imf_context_input_panel_show(ctx);
300
297 if (ic) 301 if (ic)
298 { 302 {
299 char *str; 303 char *str;
@@ -326,6 +330,9 @@ _ecore_imf_context_xim_focus_out(Ecore_IMF_Context *ctx)
326 ic = imf_context_data->ic; 330 ic = imf_context_data->ic;
327 if (ic) 331 if (ic)
328 XUnsetICFocus(ic); 332 XUnsetICFocus(ic);
333
334 if (ecore_imf_context_input_panel_enabled_get(ctx))
335 ecore_imf_context_input_panel_hide(ctx);
329 } 336 }
330#else 337#else
331 (void)ctx; 338 (void)ctx;
@@ -501,6 +508,38 @@ _ecore_imf_context_xim_cursor_location_set(Ecore_IMF_Context *ctx,
501 (void)(w); // yes w is unused, but only a bi-product of the algorithm 508 (void)(w); // yes w is unused, but only a bi-product of the algorithm
502} 509}
503 510
511static void
512_ecore_imf_context_xim_input_panel_show(Ecore_IMF_Context *ctx)
513{
514 EINA_LOG_DBG("%s in", __FUNCTION__);
515
516#ifdef ENABLE_XIM
517 Ecore_IMF_Context_Data *imf_context_data;
518 imf_context_data = ecore_imf_context_data_get(ctx);
519
520 ecore_x_e_virtual_keyboard_state_set
521 (imf_context_data->win, ECORE_X_VIRTUAL_KEYBOARD_STATE_ON);
522#else
523 (void)ctx;
524#endif
525}
526
527static void
528_ecore_imf_context_xim_input_panel_hide(Ecore_IMF_Context *ctx)
529{
530 EINA_LOG_DBG("%s in", __FUNCTION__);
531
532#ifdef ENABLE_XIM
533 Ecore_IMF_Context_Data *imf_context_data;
534 imf_context_data = ecore_imf_context_data_get(ctx);
535
536 ecore_x_e_virtual_keyboard_state_set
537 (imf_context_data->win, ECORE_X_VIRTUAL_KEYBOARD_STATE_OFF);
538#else
539 (void)ctx;
540#endif
541}
542
504#ifdef ENABLE_XIM 543#ifdef ENABLE_XIM
505static unsigned int 544static unsigned int
506_ecore_x_event_reverse_modifiers(unsigned int state) 545_ecore_x_event_reverse_modifiers(unsigned int state)
@@ -739,8 +778,8 @@ static Ecore_IMF_Context_Class xim_class = {
739 .del = _ecore_imf_context_xim_del, 778 .del = _ecore_imf_context_xim_del,
740 .client_window_set = _ecore_imf_context_xim_client_window_set, 779 .client_window_set = _ecore_imf_context_xim_client_window_set,
741 .client_canvas_set = NULL, 780 .client_canvas_set = NULL,
742 .show = NULL, 781 .show = _ecore_imf_context_xim_input_panel_show,
743 .hide = NULL, 782 .hide = _ecore_imf_context_xim_input_panel_hide,
744 .preedit_string_get = _ecore_imf_context_xim_preedit_string_get, 783 .preedit_string_get = _ecore_imf_context_xim_preedit_string_get,
745 .focus_in = _ecore_imf_context_xim_focus_in, 784 .focus_in = _ecore_imf_context_xim_focus_in,
746 .focus_out = _ecore_imf_context_xim_focus_out, 785 .focus_out = _ecore_imf_context_xim_focus_out,
@@ -759,6 +798,11 @@ static Ecore_IMF_Context_Class xim_class = {
759 .input_panel_language_set = NULL, 798 .input_panel_language_set = NULL,
760 .input_panel_language_get = NULL, 799 .input_panel_language_get = NULL,
761 .cursor_location_set = _ecore_imf_context_xim_cursor_location_set, 800 .cursor_location_set = _ecore_imf_context_xim_cursor_location_set,
801 .input_panel_imdata_set = NULL,
802 .input_panel_imdata_get = NULL,
803 .input_panel_return_key_type_set = NULL,
804 .input_panel_return_key_disabled_set = NULL,
805 .input_panel_caps_lock_mode_set = NULL
762}; 806};
763 807
764static Ecore_IMF_Context * 808static Ecore_IMF_Context *