void CSCLCoreUIEFL::process_keyboard_ui_state_change(KEYBOARD_UI_STATE state)
{
#ifdef WAYLAND
- static Evas_Object *force_update_helper_obj = NULL;
- static int force_update_num = 0;
-
if (state == KEYBOARD_UI_STATE_WILL_SHOW) {
evas_event_callback_add(evas_object_evas_get(NATIVE_WINDOW_CAST(m_main_window)),
EVAS_CALLBACK_RENDER_PRE, _render_pre_cb, (void*)m_main_window);
_render_pre_timer = ecore_timer_add(RENDER_PRE_TIMEOUT, _render_pre_timeout, (void*)m_main_window);
LOGD("Registered RENDER_PRE callback, _render_pre_cb() and a timer callback");
} else if (state == KEYBOARD_UI_STATE_DID_SHOW) {
- LOGD("Forcing keyboard window to render : %d", force_update_num);
-
- /* Since the ISE is waiting for RENDER_PRE event, we need to make sure the render event is
- * occured on our ISE window. Since right now there is no proper way to trigger render event
- * manually, we are creating a half transparent box above the keyboard window. Need to find
- * more appropriate way to generate render event */
- if (force_update_helper_obj) evas_object_del(force_update_helper_obj);
- force_update_helper_obj = elm_bg_add(NATIVE_WINDOW_CAST(m_main_window));
- evas_object_color_set(force_update_helper_obj, 255, 255, 255, 1);
- evas_object_resize(force_update_helper_obj, 1, 1);
- evas_object_move(force_update_helper_obj, force_update_num % 100, 0);
- evas_object_layer_set(force_update_helper_obj, EVAS_LAYER_MAX);
- evas_object_show(force_update_helper_obj);
- force_update_num++;
- } else if (state == KEYBOARD_UI_STATE_WILL_HIDE) {
- if (force_update_helper_obj) evas_object_del(force_update_helper_obj);
- force_update_helper_obj = NULL;
+ LOGD("Forcing keyboard window to render");
+ evas_render(evas_object_evas_get(NATIVE_WINDOW_CAST(m_main_window)));
}
#endif
}