# HG changeset patch # User Daniel Atallah # Date 1185924056 0 # Node ID bf47d0401a96dc47fbcc6ac88867472dfbfc4b7a # Parent c3d48512c58a504a34f91fce5a60816b1038d639 Eliminate some unnecessary scrolling activity. diff -r c3d48512c58a -r bf47d0401a96 pidgin/gtkconv.c --- a/pidgin/gtkconv.c Tue Jul 31 21:41:48 2007 +0000 +++ b/pidgin/gtkconv.c Tue Jul 31 23:20:56 2007 +0000 @@ -5290,7 +5290,7 @@ gtk_font_options_all |= GTK_IMHTML_USE_SMOOTHSCROLLING; if (gtk_text_buffer_get_char_count(gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->imhtml)))) - gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), "
", gtk_font_options_all); + gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), "
", gtk_font_options_all | GTK_IMHTML_NO_SCROLL); /* First message in a conversation. */ if (gtkconv->newday == 0) @@ -5478,7 +5478,7 @@ color, sml_attrib ? sml_attrib : "", mdate, str); } - gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), buf2, gtk_font_options_all); + gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), buf2, gtk_font_options_all | GTK_IMHTML_NO_SCROLL); if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT && !(flags & PURPLE_MESSAGE_SEND)) { diff -r c3d48512c58a -r bf47d0401a96 pidgin/gtkimhtml.c --- a/pidgin/gtkimhtml.c Tue Jul 31 21:41:48 2007 +0000 +++ b/pidgin/gtkimhtml.c Tue Jul 31 23:20:56 2007 +0000 @@ -2270,10 +2270,11 @@ GtkIMHtml *imhtml = data; GtkAdjustment *adj = GTK_TEXT_VIEW(imhtml)->vadjustment; gdouble max_val = adj->upper - adj->page_size; + gdouble scroll_val = gtk_adjustment_get_value(adj) + ((max_val - gtk_adjustment_get_value(adj)) / 3); g_return_val_if_fail(imhtml->scroll_time != NULL, FALSE); - if (g_timer_elapsed(imhtml->scroll_time, NULL) > MAX_SCROLL_TIME) { + if (g_timer_elapsed(imhtml->scroll_time, NULL) > MAX_SCROLL_TIME || scroll_val >= max_val) { /* time's up. jump to the end and kill the timer */ gtk_adjustment_set_value(adj, max_val); g_timer_destroy(imhtml->scroll_time); @@ -2282,7 +2283,7 @@ } /* scroll by 1/3rd the remaining distance */ - gtk_adjustment_set_value(adj, gtk_adjustment_get_value(adj) + ((max_val - gtk_adjustment_get_value(adj)) / 3)); + gtk_adjustment_set_value(adj, scroll_val); return TRUE; }