Eina_Bool has_conformant;
char *prediction_hint;
char *mime_type;
+
+ struct
+ {
+ int x;
+ int y;
+ } input_panel_position;
//
};
if (imcontext->mime_type)
wl_text_input_set_mime_type(imcontext->text_input, imcontext->mime_type);
+ if (imcontext->input_panel_position.x >= 0 && imcontext->input_panel_position.y >= 0)
+ wl_text_input_set_input_panel_position(imcontext->text_input,
+ imcontext->input_panel_position.x, imcontext->input_panel_position.y);
+
SECURE_LOGD ("ctx : %p, layout : %d, layout variation : %d\n", ctx,
layout, layout_variation);
SECURE_LOGD ("language : %d, cursor position : %d, input hint : %#x, bidi direction : %d\n",
ecore_imf_context_client_window_get (ctx),
(imcontext->content_hint & WL_TEXT_INPUT_CONTENT_HINT_SENSITIVE_DATA) ? 1 : 0,
ecore_imf_context_prediction_allow_get (ctx));
+ SECURE_LOGD ("mime_type : %s, input panel position x : %d, y : %d\n",
+ imcontext->mime_type, imcontext->input_panel_position.x, imcontext->input_panel_position.y);
if (_active_context_canvas && !evas_focus_state_get (_active_context_canvas)) {
LOGW ("Canvas does not have focus!\n");
imcontext->caps_mask = MOD_CAPS_MASK;
imcontext->num_mask = MOD_NUM_MASK;
+ imcontext->input_panel_position.x = -1;
+ imcontext->input_panel_position.y = -1;
+
imcontext->text_input =
wl_text_input_manager_create_text_input(imcontext->text_input_manager);
if (imcontext->mime_type)
wl_text_input_set_mime_type(imcontext->text_input, imcontext->mime_type);
+
+ if (imcontext->input_panel_position.x >= 0 && imcontext->input_panel_position.y >= 0)
+ wl_text_input_set_input_panel_position(imcontext->text_input,
+ imcontext->input_panel_position.x, imcontext->input_panel_position.y);
}
if (ecore_imf_context_input_panel_enabled_get(ctx))
}
}
+void
+wayland_im_context_input_panel_position_set (Ecore_IMF_Context *ctx, int x, int y)
+{
+ WaylandIMContext *imcontext = (WaylandIMContext *)ecore_imf_context_data_get(ctx);
+ if (!imcontext) return;
+
+ if ((imcontext->input_panel_position.x != x) || (imcontext->input_panel_position.y != y)) {
+ imcontext->input_panel_position.x = x;
+ imcontext->input_panel_position.y = y;
+ }
+
+ if (imcontext->input && imcontext->text_input) {
+ LOGD ("ctx : %p, x = %d, y = %d\n", ctx, x, y);
+ wl_text_input_set_input_panel_position(imcontext->text_input,
+ imcontext->input_panel_position.x, imcontext->input_panel_position.y);
+ }
+}
+
WaylandIMContext *wayland_im_context_new (struct wl_text_input_manager *text_input_manager)
{
WaylandIMContext *context = calloc(1, sizeof(WaylandIMContext));