[empathy] Fix autocompletion for non-alphanumeric nicknames



commit 35c99e3a75272c03b71e04c3e1bf1944167295ee
Author: Thomas Meire <blackskad gmail com>
Date:   Wed Jan 6 11:03:23 2010 +0000

    Fix autocompletion for non-alphanumeric nicknames
    
    This bug is caused by the behaviour of gtk_text_iter_backward_word_start. It
    searches the text for delimiters, based on languages in pango. Numbers and
    characters as | and [ are not considered to be part of a word in most
    languages, while they are a part of nicknames. Therefore, empathy fails to get
    the typed part of the nickname.
    The attached patch will instead search backwards for a space character. The
    text that needs to be completed, is the text between the caret and the first
    space before that. (#554767)

 libempathy-gtk/empathy-chat.c |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)
---
diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c
index 3e56558..61a6f53 100644
--- a/libempathy-gtk/empathy-chat.c
+++ b/libempathy-gtk/empathy-chat.c
@@ -1271,6 +1271,13 @@ chat_input_text_buffer_changed_cb (GtkTextBuffer *buffer,
 }
 
 static gboolean
+empathy_isspace_cb (gunichar c,
+		 gpointer data)
+{
+	return g_unichar_isspace (c);
+}
+
+static gboolean
 chat_input_key_press_event_cb (GtkWidget   *widget,
 			       GdkEventKey *event,
 			       EmpathyChat *chat)
@@ -1364,7 +1371,9 @@ chat_input_key_press_event_cb (GtkWidget   *widget,
 
 		/* Get the start of the nick to complete. */
 		gtk_text_buffer_get_iter_at_mark (buffer, &start, gtk_text_buffer_get_insert (buffer));
-		gtk_text_iter_backward_word_start (&start);
+		if (gtk_text_iter_backward_find_char (&start, &empathy_isspace_cb, NULL, NULL)) {
+			gtk_text_iter_set_offset (&start, gtk_text_iter_get_offset (&start) + 1);
+		}
 		is_start_of_buffer = gtk_text_iter_is_start (&start);
 
 		list = empathy_contact_list_get_members (EMPATHY_CONTACT_LIST (priv->tp_chat));



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