--- a/src/gtkimhtml.c Fri Apr 08 23:26:11 2005 -0400
+++ b/src/gtkimhtml.c Sat Apr 09 10:02:59 2005 -0400
@@ -953,6 +953,9 @@
+ if (imhtml->scroll_src) + g_source_remove(imhtml->scroll_src); g_hash_table_destroy(imhtml->smiley_data);
gtk_smiley_tree_destroy(imhtml->default_smilies);
gdk_cursor_unref(imhtml->hand_cursor);
@@ -2016,20 +2019,23 @@
+gboolean scroll_idle_cb(gpointer data) + GtkTextView *imhtml = data; + gaim_debug_info("gtkimhtml", "in scroll_idle_cb\n"); + adj = GTK_TEXT_VIEW(imhtml)->vadjustment; + gtk_adjustment_set_value(adj, adj->upper - adj->page_size); void gtk_imhtml_scroll_to_end(GtkIMHtml *imhtml)
- /* If this seems backwards at first glance, well it's not.
- * It means scroll such that the mark is closest to the top,
- * and closest to the right as possible. Remember kids, you have
- * to scroll left to move a given spot closest to the right,
- * and scroll down to move a spot closest to the top.
- gtk_text_buffer_get_end_iter(imhtml->text_buffer, &iter);
- gtk_text_iter_set_line_offset(&iter, 0);
- gtk_text_buffer_move_mark(imhtml->text_buffer, imhtml->scrollpoint, &iter);
- gtk_text_view_scroll_to_mark(GTK_TEXT_VIEW(imhtml), imhtml->scrollpoint,
+ if (imhtml->scroll_src) + g_source_remove(imhtml->scroll_src); + imhtml->scroll_src = g_idle_add_full(GTK_TEXT_VIEW_PRIORITY_VALIDATE + 10, scroll_idle_cb, imhtml, NULL); void gtk_imhtml_insert_html_at_iter(GtkIMHtml *imhtml,
--- a/src/gtkimhtml.h Fri Apr 08 23:26:11 2005 -0400
+++ b/src/gtkimhtml.h Sat Apr 09 10:02:59 2005 -0400
@@ -122,6 +122,7 @@