Eina_List *keysym_list;
uint32_t reset_serial;
+
+ Eina_Bool has_conformant;
//
};
static Eina_Bool reset_conformant_area(Ecore_IMF_Context *ctx)
{
Eina_Bool reset = EINA_FALSE;
+ Eina_Bool has_conformant = EINA_FALSE;
Ecore_Wl_Window *window = NULL;
if (!ctx) return EINA_FALSE;
WaylandIMContext *imcontext = (WaylandIMContext *)ecore_imf_context_data_get(ctx);
- if (imcontext) window = imcontext->window;
+ if (imcontext) {
+ window = imcontext->window;
+ has_conformant = imcontext->has_conformant;
+ }
if (window) {
int x = 0, y = 0, w = 0, h = 0;
Eina_Bool result = ecore_wl_window_keyboard_geometry_get(window, &x, &y, &w, &h);
if (result) {
- if (ecore_imf_context_client_canvas_get(ctx) && ecore_wl_window_conformant_get(window) &&
- (w != 0 || h != 0)) {
+ if (ecore_imf_context_client_canvas_get(ctx) && has_conformant && (w != 0 || h != 0)) {
reset = EINA_TRUE;
_conformant_area_backup.x = x;
_conformant_area_backup.y = y;
static void restore_conformant_area(Ecore_IMF_Context *ctx)
{
Eina_Bool restore = EINA_FALSE;
+ Eina_Bool has_conformant = EINA_FALSE;
Ecore_Wl_Window *window = NULL;
if (!ctx) return;
WaylandIMContext *imcontext = (WaylandIMContext *)ecore_imf_context_data_get(ctx);
- if (imcontext) window = imcontext->window;
+ if (imcontext) {
+ window = imcontext->window;
+ has_conformant = imcontext->has_conformant;
+ }
if (window) {
int x = 0, y = 0, w = 0, h = 0;
Eina_Bool result = ecore_wl_window_keyboard_geometry_get(window, &x, &y, &w, &h);
if (result) {
- if (ecore_imf_context_client_canvas_get(ctx) && ecore_wl_window_conformant_get(window) &&
- (w == 0 || h == 0)) {
+ if (ecore_imf_context_client_canvas_get(ctx) && has_conformant && (w == 0 || h == 0)) {
restore = EINA_TRUE;
}
}
static void send_will_hide_ack(Ecore_IMF_Context *ctx)
{
Eina_Bool need_temporary_context = EINA_FALSE;
+ Eina_Bool has_conformant = EINA_FALSE;
WaylandIMContext *imcontext = NULL;
if (!ctx) {
if (!imcontext) {
LOGD("imcontext is NULL :%p\n", ctx);
need_temporary_context = EINA_TRUE;
+ } else {
+ has_conformant = imcontext->has_conformant;
}
}
}
if (ctx && imcontext) {
- if (ecore_imf_context_client_canvas_get(ctx) && ecore_wl_window_conformant_get(imcontext->window)) {
+ if (ecore_imf_context_client_canvas_get(ctx) && has_conformant) {
if (_conformant_reset_done && _received_will_hide_event) {
LOGD("Send will hide ack, _conformant_reset_done = 1, received_will_hide_event = 1\n");
_send_will_hide_ack(imcontext);
}
} else {
LOGD("Send will hide ack right away, since there is no conformant available : %p %d\n",
- ecore_imf_context_client_canvas_get(ctx), ecore_wl_window_conformant_get(imcontext->window));
+ ecore_imf_context_client_canvas_get(ctx), has_conformant);
_send_will_hide_ack (imcontext);
}
}
_input_panel_ctx = ctx;
_active_context_canvas = ecore_imf_context_client_canvas_get(ctx);
- if (imcontext->window)
+ if (imcontext->window) {
_active_context_window_id = ecore_wl_window_id_get(imcontext->window);
+ imcontext->has_conformant = ecore_wl_window_conformant_get(imcontext->window);
+ } else {
+ imcontext->has_conformant = EINA_FALSE;
+ }
//
// TIZEN_ONLY(20150715): Support input_panel_state_get