summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJihoon Kim <jihoon48.kim@samsung.com>2015-05-27 14:39:37 +0900
committerJihoon Kim <jihoon48.kim@samsung.com>2015-05-27 14:52:47 +0900
commitb6577b2efbc1ad89badc9436a1f9ef302323b49e (patch)
tree542df85db5bf1b3908547f01c3bca0ba3cff783a
parent22af0e4145fb9fdf67977ac16a0d5d9239ee3c4f (diff)
downloadefl-b6577b2efbc1ad89badc9436a1f9ef302323b49e.tar.gz
ecore_imf/wayland: support autocapital mode in wayland text input
@feature Change-Id: Iba85168256dc018ddcfbc3c5c28cf7d1484871c8
-rw-r--r--src/modules/ecore_imf/wayland/wayland_imcontext.c20
-rw-r--r--src/modules/ecore_imf/wayland/wayland_imcontext.h3
-rw-r--r--src/modules/ecore_imf/wayland/wayland_module.c2
3 files changed, 23 insertions, 2 deletions
diff --git a/src/modules/ecore_imf/wayland/wayland_imcontext.c b/src/modules/ecore_imf/wayland/wayland_imcontext.c
index adb2438f6a..6d5a17dd6b 100644
--- a/src/modules/ecore_imf/wayland/wayland_imcontext.c
+++ b/src/modules/ecore_imf/wayland/wayland_imcontext.c
@@ -76,6 +76,7 @@ struct _WaylandIMContext
uint32_t serial;
uint32_t reset_serial;
uint32_t content_purpose;
+ uint32_t content_hint;
};
static unsigned int
@@ -646,7 +647,7 @@ wayland_im_context_focus_in(Ecore_IMF_Context *ctx)
ecore_wl_window_surface_get(imcontext->window));
wl_text_input_set_content_type(imcontext->text_input,
- WL_TEXT_INPUT_CONTENT_HINT_NONE,
+ imcontext->content_hint,
imcontext->content_purpose);
}
}
@@ -818,6 +819,23 @@ wayland_im_context_cursor_location_set(Ecore_IMF_Context *ctx, int x, int y, int
}
}
+EAPI void wayland_im_context_autocapital_type_set(Ecore_IMF_Context *ctx,
+ Ecore_IMF_Autocapital_Type autocapital_type)
+{
+ WaylandIMContext *imcontext = (WaylandIMContext *)ecore_imf_context_data_get(ctx);
+
+ imcontext->content_hint &= ~(WL_TEXT_INPUT_CONTENT_HINT_AUTO_CAPITALIZATION |
+ WL_TEXT_INPUT_CONTENT_HINT_UPPERCASE |
+ WL_TEXT_INPUT_CONTENT_HINT_LOWERCASE);
+
+ if (autocapital_type == ECORE_IMF_AUTOCAPITAL_TYPE_SENTENCE)
+ imcontext->content_hint |= WL_TEXT_INPUT_CONTENT_HINT_AUTO_CAPITALIZATION;
+ else if (autocapital_type == ECORE_IMF_AUTOCAPITAL_TYPE_ALLCHARACTER)
+ imcontext->content_hint |= WL_TEXT_INPUT_CONTENT_HINT_UPPERCASE;
+ else
+ imcontext->content_hint |= WL_TEXT_INPUT_CONTENT_HINT_LOWERCASE;
+}
+
EAPI void
wayland_im_context_input_panel_layout_set(Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Layout layout)
{
diff --git a/src/modules/ecore_imf/wayland/wayland_imcontext.h b/src/modules/ecore_imf/wayland/wayland_imcontext.h
index 111dd5f010..9ec9f30bc2 100644
--- a/src/modules/ecore_imf/wayland/wayland_imcontext.h
+++ b/src/modules/ecore_imf/wayland/wayland_imcontext.h
@@ -60,6 +60,9 @@ EAPI void wayland_im_context_cursor_location_set(Ecore_IMF_Context *ctx,
int width,
int height);
+EAPI void wayland_im_context_autocapital_type_set(Ecore_IMF_Context *ctx,
+ Ecore_IMF_Autocapital_Type autocapital_type);
+
EAPI void wayland_im_context_input_panel_layout_set(Ecore_IMF_Context *ctx,
Ecore_IMF_Input_Panel_Layout layout);
diff --git a/src/modules/ecore_imf/wayland/wayland_module.c b/src/modules/ecore_imf/wayland/wayland_module.c
index d4e1ba5a97..eb31e906ea 100644
--- a/src/modules/ecore_imf/wayland/wayland_module.c
+++ b/src/modules/ecore_imf/wayland/wayland_module.c
@@ -61,7 +61,7 @@ static Ecore_IMF_Context_Class wayland_imf_class =
wayland_im_context_filter_event, /* filter_event */
wayland_im_context_preedit_string_with_attributes_get, /* preedit_string_with_attribute_get */
NULL, /* prediction_allow_set */
- NULL, /* autocapital_type_set */
+ wayland_im_context_autocapital_type_set, /* autocapital_type_set */
NULL, /* control panel show */
NULL, /* control panel hide */
wayland_im_context_input_panel_layout_set, /* input_panel_layout_set */