From 35c99e3a75272c03b71e04c3e1bf1944167295ee Mon Sep 17 00:00:00 2001 From: Thomas Meire Date: Wed, 6 Jan 2010 11:03:23 +0000 Subject: 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 file changed, 10 insertions(+), 1 deletion(-) (limited to 'libempathy-gtk/empathy-chat.c') diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c index 3e565585b..61a6f53ba 100644 --- a/libempathy-gtk/empathy-chat.c +++ b/libempathy-gtk/empathy-chat.c @@ -1270,6 +1270,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, @@ -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)); -- cgit v1.2.3