pidgin/gtkconv.c

branch
soc.2013.gobjectification.plugins
changeset 36972
dfe5c47d56a9
parent 36971
602023a35d92
parent 35134
aaaed688e5be
child 36975
b683d24ef1d7
equal deleted inserted replaced
36971:602023a35d92 36972:dfe5c47d56a9
4373 GList **matches, const char *name) 4373 GList **matches, const char *name)
4374 { 4374 {
4375 char *nick_partial; 4375 char *nick_partial;
4376 gsize name_len = g_utf8_strlen(name, -1); 4376 gsize name_len = g_utf8_strlen(name, -1);
4377 4377
4378 if ((glong)entered_chars > name_len) 4378 if (entered_chars > name_len)
4379 return; 4379 return;
4380 4380
4381 nick_partial = g_utf8_substring(name, 0, entered_chars); 4381 nick_partial = g_utf8_substring(name, 0, entered_chars);
4382 if (purple_utf8_strcasecmp(nick_partial, entered)) { 4382 if (purple_utf8_strcasecmp(nick_partial, entered)) {
4383 g_free(nick_partial); 4383 g_free(nick_partial);
4472 if (caret >= 2) { 4472 if (caret >= 2) {
4473 ch = g_utf8_offset_to_pointer(content, caret - 2); 4473 ch = g_utf8_offset_to_pointer(content, caret - 2);
4474 ch2 = g_utf8_find_next_char(ch, NULL); 4474 ch2 = g_utf8_find_next_char(ch, NULL);
4475 } 4475 }
4476 4476
4477 if (caret >= 2 && *ch == ':' && (*ch2 == ' ' || g_utf8_get_char(ch2) == 0xA0)) 4477 if (caret >= 2 && *ch == ':' && g_unichar_isspace(g_utf8_get_char(ch2)))
4478 colon = 2; 4478 colon = 2;
4479 else if (caret >= 1 && content[caret - 1] == ':') 4479 else if (caret >= 1 && content[caret - 1] == ':')
4480 colon = 1; 4480 colon = 1;
4481 4481
4482 caret -= colon; 4482 caret -= colon;
4483 word_start = caret; 4483 word_start = caret;
4484 4484
4485 /* find the start of the word that we're tabbing. */ 4485 /* find the start of the word that we're tabbing. */
4486 ch = g_utf8_offset_to_pointer(content, caret); 4486 ch = g_utf8_offset_to_pointer(content, caret);
4487 while ((ch = g_utf8_find_prev_char(content, ch))) { 4487 while ((ch = g_utf8_find_prev_char(content, ch))) {
4488 if (*ch != ' ' && g_utf8_get_char(ch) != 0xA0) 4488 if (!g_unichar_isspace(g_utf8_get_char(ch)))
4489 --word_start; 4489 --word_start;
4490 else 4490 else
4491 break; 4491 break;
4492 } 4492 }
4493 4493
4573 if (!colon && !word_start && is_first_container(container)) { 4573 if (!colon && !word_start && is_first_container(container)) {
4574 char *tmp = NULL; 4574 char *tmp = NULL;
4575 if (caret < content_len) { 4575 if (caret < content_len) {
4576 tmp = g_strdup_printf("%s: ", (char *)matches->data); 4576 tmp = g_strdup_printf("%s: ", (char *)matches->data);
4577 } else { 4577 } else {
4578 char utf[6] = {0}; 4578 char nbsp[6] = {0};
4579 g_unichar_to_utf8(0xA0, utf); 4579 g_unichar_to_utf8(0xA0, nbsp);
4580 tmp = g_strdup_printf("%s:%s", (char *)matches->data, utf); 4580 tmp = g_strdup_printf("%s:%s", (char *)matches->data, nbsp);
4581 } 4581 }
4582 4582
4583 modified = g_strdup_printf("%s%s", tmp, sub2); 4583 modified = g_strdup_printf("%s%s", tmp, sub2);
4584 webkit_dom_node_set_node_value(container, modified, NULL); 4584 webkit_dom_node_set_node_value(container, modified, NULL);
4585 gtk_webview_set_caret(GTK_WEBVIEW(gtkconv->entry), container, 4585 gtk_webview_set_caret(GTK_WEBVIEW(gtkconv->entry), container,
5655 G_CALLBACK(entry_stop_rclick_cb), NULL); 5655 G_CALLBACK(entry_stop_rclick_cb), NULL);
5656 #endif 5656 #endif
5657 5657
5658 if (!chat) { 5658 if (!chat) {
5659 /* For sending typing notifications for IMs */ 5659 /* For sending typing notifications for IMs */
5660 #if 0
5661 /* TODO WebKit */
5662 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "insert_text",
5663 G_CALLBACK(insert_text_cb), gtkconv);
5664 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "delete_range",
5665 G_CALLBACK(delete_text_cb), gtkconv);
5666 #endif
5667 gtkconv->u.im->typing_timer = 0; 5660 gtkconv->u.im->typing_timer = 0;
5668 gtkconv->u.im->animate = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/im/animate_buddy_icons"); 5661 gtkconv->u.im->animate = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/im/animate_buddy_icons");
5669 gtkconv->u.im->show_icon = TRUE; 5662 gtkconv->u.im->show_icon = TRUE;
5670 } 5663 }
5671 5664

mercurial