Index: gtk/gtkconv.c =================================================================== --- gtk/gtkconv.c (revision 16896) +++ gtk/gtkconv.c (working copy) @@ -4600,6 +4600,22 @@ return buddytag; } +static GtkTextTag *get_div_tag(GaimConversation *conv) { + GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); + GtkTextTag *divtag; + divtag = gtk_text_tag_table_lookup( + gtk_text_buffer_get_tag_table( + GTK_IMHTML(gtkconv->imhtml)->text_buffer), "tag_div"); + if (divtag == NULL) { + divtag = gtk_text_buffer_create_tag( + GTK_IMHTML(gtkconv->imhtml)->text_buffer, "tag_div", + "left-margin", 10, + "left-margin-set", TRUE, + NULL); + } + return divtag; +} + static void gaim_gtkconv_write_conv(GaimConversation *conv, const char *name, const char *alias, const char *message, GaimMessageFlags flags, @@ -4624,6 +4640,7 @@ GaimConversationType type; char *displaying; gboolean plugin_return; + char *last_name; g_return_if_fail(conv != NULL); gtkconv = GAIM_GTK_CONVERSATION(conv); @@ -4846,6 +4863,14 @@ g_free(alias_escaped); + last_name = g_object_get_data(G_OBJECT(gtkconv->imhtml), "last_name"); + if(str != NULL) { + if(last_name == NULL || strcmp(last_name, str)) { + g_object_set_data_full(G_OBJECT(gtkconv->imhtml), "last_name", g_strdup(str), g_free); + } else + goto old_name; + } + /* Are we in a chat where we can tell which users are buddies? */ if (!(prpl_info->options & OPT_PROTO_UNIQUE_CHATNAME) && gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT) { @@ -4898,6 +4923,10 @@ buddytag, &start, &end); } + gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), "
", + gtk_font_options_all); + +old_name: g_free(str); if(gc){ @@ -4918,9 +4947,29 @@ else with_font_tag = g_memdup(new_message, length); - gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), - with_font_tag, gtk_font_options | gtk_font_options_all); + { + GtkTextIter start, end; + GtkTextTag *divtag = get_div_tag(conv); + int line; + gtk_text_buffer_get_end_iter( + GTK_IMHTML(gtkconv->imhtml)->text_buffer, + &start); + line = gtk_text_iter_get_line(&start); + gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), with_font_tag, + gtk_font_options | gtk_font_options_all); + gtk_text_buffer_get_end_iter( + GTK_IMHTML(gtkconv->imhtml)->text_buffer, + &end); + gtk_text_buffer_get_iter_at_line( + GTK_IMHTML(gtkconv->imhtml)->text_buffer, + &start, + line+1); + gtk_text_buffer_apply_tag( + GTK_IMHTML(gtkconv->imhtml)->text_buffer, + divtag, &start, &end); + } + if (flags & GAIM_MESSAGE_SEND) { /* Restore the smiley-data */