| 3390 gtk_text_buffer_get_iter_at_mark(buffer, &start, stmark); |
3390 gtk_text_buffer_get_iter_at_mark(buffer, &start, stmark); |
| 3391 gtk_text_buffer_get_iter_at_mark(buffer, &end, enmark); |
3391 gtk_text_buffer_get_iter_at_mark(buffer, &end, enmark); |
| 3392 gtk_text_buffer_delete_mark(buffer, stmark); |
3392 gtk_text_buffer_delete_mark(buffer, stmark); |
| 3393 gtk_text_buffer_delete_mark(buffer, enmark); |
3393 gtk_text_buffer_delete_mark(buffer, enmark); |
| 3394 gtk_text_buffer_delete(buffer, &start, &end); |
3394 gtk_text_buffer_delete(buffer, &start, &end); |
| 3395 } |
3395 } else if (message && *message == '\n' && !*(message + 1)) |
| |
3396 message = NULL; |
| 3396 |
3397 |
| 3397 if (message) { |
3398 if (message) { |
| 3398 GtkTextIter iter; |
3399 GtkTextIter iter; |
| 3399 gtk_text_buffer_get_end_iter(buffer, &iter); |
3400 gtk_text_buffer_get_end_iter(buffer, &iter); |
| 3400 gtk_text_buffer_create_mark(buffer, "typing-notification-start", &iter, TRUE); |
3401 gtk_text_buffer_create_mark(buffer, "typing-notification-start", &iter, TRUE); |
| 3429 if (purple_conv_im_get_typing_state(im) == PURPLE_NOT_TYPING) { |
3430 if (purple_conv_im_get_typing_state(im) == PURPLE_NOT_TYPING) { |
| 3430 if (gtkconv->u.im->typing_timer != 0) { |
3431 if (gtkconv->u.im->typing_timer != 0) { |
| 3431 g_source_remove(gtkconv->u.im->typing_timer); |
3432 g_source_remove(gtkconv->u.im->typing_timer); |
| 3432 gtkconv->u.im->typing_timer = 0; |
3433 gtkconv->u.im->typing_timer = 0; |
| 3433 } |
3434 } |
| 3434 update_typing_message(gtkconv, NULL); |
3435 update_typing_message(gtkconv, "\n"); |
| 3435 return; |
3436 return; |
| 3436 } |
3437 } |
| 3437 |
3438 |
| 3438 if (purple_conv_im_get_typing_state(im) == PURPLE_TYPING) { |
3439 if (purple_conv_im_get_typing_state(im) == PURPLE_TYPING) { |
| 3439 if (gtkconv->u.im->typing_timer == 0) { |
3440 if (gtkconv->u.im->typing_timer == 0) { |
| 5066 G_CALLBACK(conv_dnd_recv), gtkconv); |
5067 G_CALLBACK(conv_dnd_recv), gtkconv); |
| 5067 |
5068 |
| 5068 gtk_text_buffer_create_tag(GTK_IMHTML(gtkconv->imhtml)->text_buffer, "TYPING-NOTIFICATION", |
5069 gtk_text_buffer_create_tag(GTK_IMHTML(gtkconv->imhtml)->text_buffer, "TYPING-NOTIFICATION", |
| 5069 "foreground", "#888888", |
5070 "foreground", "#888888", |
| 5070 "justification", GTK_JUSTIFY_LEFT, /* XXX: RTL'ify */ |
5071 "justification", GTK_JUSTIFY_LEFT, /* XXX: RTL'ify */ |
| 5071 "weight", PANGO_WEIGHT_BOLD, NULL); |
5072 "weight", PANGO_WEIGHT_BOLD, |
| |
5073 "scale", PANGO_SCALE_SMALL, |
| |
5074 NULL); |
| 5072 |
5075 |
| 5073 /* Setup the container for the tab. */ |
5076 /* Setup the container for the tab. */ |
| 5074 gtkconv->tab_cont = tab_cont = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); |
5077 gtkconv->tab_cont = tab_cont = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); |
| 5075 g_object_set_data(G_OBJECT(tab_cont), "PidginConversation", gtkconv); |
5078 g_object_set_data(G_OBJECT(tab_cont), "PidginConversation", gtkconv); |
| 5076 gtk_container_set_border_width(GTK_CONTAINER(tab_cont), PIDGIN_HIG_BOX_SPACE); |
5079 gtk_container_set_border_width(GTK_CONTAINER(tab_cont), PIDGIN_HIG_BOX_SPACE); |
| 5838 |
5841 |
| 5839 purple_signal_emit(pidgin_conversations_get_handle(), |
5842 purple_signal_emit(pidgin_conversations_get_handle(), |
| 5840 (type == PURPLE_CONV_TYPE_IM ? "displayed-im-msg" : "displayed-chat-msg"), |
5843 (type == PURPLE_CONV_TYPE_IM ? "displayed-im-msg" : "displayed-chat-msg"), |
| 5841 account, name, displaying, conv, flags); |
5844 account, name, displaying, conv, flags); |
| 5842 g_free(displaying); |
5845 g_free(displaying); |
| |
5846 update_typing_message(gtkconv, NULL); |
| 5843 } |
5847 } |
| 5844 |
5848 |
| 5845 static void |
5849 static void |
| 5846 pidgin_conv_chat_add_users(PurpleConversation *conv, GList *cbuddies, gboolean new_arrivals) |
5850 pidgin_conv_chat_add_users(PurpleConversation *conv, GList *cbuddies, gboolean new_arrivals) |
| 5847 { |
5851 { |