[mutter/wip/carlosg/clutter-text-preedit: 18/19] clutter: Refactor ClutterText IM focus in into separate function
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/wip/carlosg/clutter-text-preedit: 18/19] clutter: Refactor ClutterText IM focus in into separate function
- Date: Thu, 23 Aug 2018 20:04:06 +0000 (UTC)
commit fa8930817eaf8e97acc6c98fc431ea12ee05141f
Author: Carlos Garnacho <carlosg gnome org>
Date: Wed Aug 15 16:33:05 2018 +0200
clutter: Refactor ClutterText IM focus in into separate function
A just focused ClutterInputFocus must set itself up correctly on
all situations. Refactor this into a function, so it can be used
for the case where a ClutterText gets editable while focused.
clutter/clutter/clutter-text.c | 33 +++++++++++++++++++++------------
1 file changed, 21 insertions(+), 12 deletions(-)
---
diff --git a/clutter/clutter/clutter-text.c b/clutter/clutter/clutter-text.c
index e186417a2..539bc5928 100644
--- a/clutter/clutter/clutter-text.c
+++ b/clutter/clutter/clutter-text.c
@@ -2815,21 +2815,30 @@ clutter_text_has_overlaps (ClutterActor *self)
}
static void
-clutter_text_key_focus_in (ClutterActor *actor)
+clutter_text_im_focus (ClutterText *text)
{
- ClutterTextPrivate *priv = CLUTTER_TEXT (actor)->priv;
+ ClutterTextPrivate *priv = text->priv;
ClutterBackend *backend = clutter_get_default_backend ();
ClutterInputMethod *method = clutter_backend_get_input_method (backend);
- if (method && priv->editable)
- {
- clutter_input_method_focus_in (method, priv->input_focus);
- clutter_input_focus_set_content_purpose (priv->input_focus,
- priv->input_purpose);
- clutter_input_focus_set_content_hints (priv->input_focus,
- priv->input_hints);
- update_cursor_location (CLUTTER_TEXT (actor));
- }
+ if (!method)
+ return;
+
+ clutter_input_method_focus_in (method, priv->input_focus);
+ clutter_input_focus_set_content_purpose (priv->input_focus,
+ priv->input_purpose);
+ clutter_input_focus_set_content_hints (priv->input_focus,
+ priv->input_hints);
+ update_cursor_location (text);
+}
+
+static void
+clutter_text_key_focus_in (ClutterActor *actor)
+{
+ ClutterTextPrivate *priv = CLUTTER_TEXT (actor)->priv;
+
+ if (priv->editable)
+ clutter_text_im_focus (CLUTTER_TEXT (actor));
priv->has_focus = TRUE;
@@ -4689,7 +4698,7 @@ clutter_text_set_editable (ClutterText *self,
if (!priv->editable && clutter_input_focus_is_focused (priv->input_focus))
clutter_input_method_focus_out (method);
else if (priv->has_focus)
- clutter_input_method_focus_in (method, priv->input_focus);
+ clutter_text_im_focus (self);
}
clutter_text_queue_redraw (CLUTTER_ACTOR (self));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]