imwayland: Return limited preedit attributes
authorMatthias Clasen <mclasen@redhat.com>
Thu, 18 Feb 2021 03:57:41 +0000 (22:57 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 18 Feb 2021 03:57:41 +0000 (22:57 -0500)
It should not matter, but it is the right thing to
do to limit the preedit attributes to the length
of the preedit text.

gtk/gtkimcontextwayland.c

index c5e0093584282803b8804ec51aa2f91ba4be90dd..915ad9e854686445d5c657cfae13f187314bca5f 100644 (file)
@@ -606,13 +606,23 @@ gtk_im_context_wayland_get_preedit_string (GtkIMContext   *context,
 
   if (attrs)
     {
+      PangoAttribute *attr;
+      guint len = strlen (preedit_str);
+
       if (!*attrs)
         *attrs = pango_attr_list_new ();
-      pango_attr_list_insert (*attrs,
-                              pango_attr_underline_new (PANGO_UNDERLINE_SINGLE));
+
+      attr = pango_attr_underline_new (PANGO_UNDERLINE_SINGLE);
+      attr->start_index = 0;
+      attr->end_index = len;
+      pango_attr_list_insert (*attrs, attr);
+
       /* enable fallback, since IBus will send us things like ⎄ */
-      pango_attr_list_insert (*attrs,
-                              pango_attr_fallback_new (TRUE));
+      attr = pango_attr_fallback_new (TRUE);
+      attr->start_index = 0;
+      attr->end_index = len;
+      pango_attr_list_insert (*attrs, attr);
+
       if (context_wayland->current_preedit.cursor_begin
           != context_wayland->current_preedit.cursor_end)
         {