[gtk/textview-im-surrounding] textview: Provide more context to input methods




commit 165efd80429c314768051013e95183f8ae208669
Author: Matthias Clasen <mclasen redhat com>
Date:   Wed Dec 1 22:38:19 2021 -0500

    textview: Provide more context to input methods
    
    When returning surrounding context to input methods,
    include at least 2 words before and after the insertion
    point.

 gtk/gtktextview.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)
---
diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c
index c1b83eb9b3..65a59c98c0 100644
--- a/gtk/gtktextview.c
+++ b/gtk/gtktextview.c
@@ -8566,6 +8566,8 @@ gtk_text_view_retrieve_surrounding_handler (GtkIMContext  *context,
   GtkTextIter end;
   GtkTextIter start1;
   GtkTextIter end1;
+  GtkTextIter start2;
+  GtkTextIter end2;
   int cursor_pos;
   int anchor_pos;
   char *text;
@@ -8589,6 +8591,16 @@ gtk_text_view_retrieve_surrounding_handler (GtkIMContext  *context,
   gtk_text_iter_set_line_offset (&start1, 0);
   gtk_text_iter_forward_to_line_end (&end1);
 
+  start2 = start;
+  gtk_text_iter_backward_word_starts (&start2, 3);
+  if (gtk_text_iter_compare (&start2, &start1) < 0)
+    start1 = start2;
+
+  end2 = end;
+  gtk_text_iter_forward_word_ends (&end2, 3);
+  if (gtk_text_iter_compare (&end2, &end1) > 0)
+    end1 = end2;
+
   pre = gtk_text_iter_get_slice (&start1, &start);
   sel = gtk_text_iter_get_slice (&start, &end);
   post = gtk_text_iter_get_slice (&end, &end1);
@@ -8606,6 +8618,8 @@ gtk_text_view_retrieve_surrounding_handler (GtkIMContext  *context,
 
   text = g_strconcat (pre, sel, post, NULL);
 
+  g_print ("surrounding: %s\n", text);
+
   g_free (pre);
   g_free (sel);
   g_free (post);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]