forked from AuroraMiddleware/gtk
imwayland: Be careful about cursor positions
We don't want to hand out cursor positions based on the original preedit text and then tweak the text to be different.
This commit is contained in:
parent
784b236964
commit
1282cac99d
@ -523,7 +523,7 @@ gtk_im_context_wayland_get_preedit_string (GtkIMContext *context,
|
|||||||
gint *cursor_pos)
|
gint *cursor_pos)
|
||||||
{
|
{
|
||||||
GtkIMContextWayland *context_wayland = GTK_IM_CONTEXT_WAYLAND (context);
|
GtkIMContextWayland *context_wayland = GTK_IM_CONTEXT_WAYLAND (context);
|
||||||
gchar *preedit_str;
|
char *preedit_str;
|
||||||
|
|
||||||
if (attrs)
|
if (attrs)
|
||||||
*attrs = NULL;
|
*attrs = NULL;
|
||||||
@ -542,10 +542,8 @@ gtk_im_context_wayland_get_preedit_string (GtkIMContext *context,
|
|||||||
}
|
}
|
||||||
|
|
||||||
preedit_str =
|
preedit_str =
|
||||||
context_wayland->current_preedit.text ? context_wayland->current_preedit.text : "";
|
tweak_preedit (context_wayland->current_preedit.text ? context_wayland->current_preedit.text : "");
|
||||||
|
|
||||||
if (str)
|
|
||||||
*str = tweak_preedit (preedit_str);
|
|
||||||
if (cursor_pos)
|
if (cursor_pos)
|
||||||
*cursor_pos = g_utf8_strlen (preedit_str,
|
*cursor_pos = g_utf8_strlen (preedit_str,
|
||||||
context_wayland->current_preedit.cursor_begin);
|
context_wayland->current_preedit.cursor_begin);
|
||||||
@ -566,6 +564,11 @@ gtk_im_context_wayland_get_preedit_string (GtkIMContext *context,
|
|||||||
pango_attr_list_insert (*attrs, cursor);
|
pango_attr_list_insert (*attrs, cursor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (str)
|
||||||
|
*str = preedit_str;
|
||||||
|
else
|
||||||
|
g_free (preedit_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
|
Loading…
Reference in New Issue
Block a user