+ /* Scroll past text already read by user. This is automatic scrolling, so disable the pager_ajustment_handler
+ * first, that acts on the belief the scolling is performed by the user. */
+ GtkAdjustment *adj = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(win->frame));
+ g_signal_handler_block(adj, win->pager_adjustment_handler);
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(win->widget));
+ GtkTextMark *pager_position = gtk_text_buffer_get_mark(buffer, "pager_position");
+ gtk_text_view_scroll_to_mark(GTK_TEXT_VIEW(win->widget), pager_position, 0.0, TRUE, 0.0, 0.0);
+ g_signal_handler_unblock(adj, win->pager_adjustment_handler);
+
+ if(!win->currently_paging) {
+ if(scroll_distance > view_height) {
+ start_paging(win);
+ /* Seriously... */
+ /* COMPAT: */
+#if GTK_CHECK_VERSION(2,14,0)
+ gdk_window_invalidate_rect(gtk_widget_get_window(win->widget), NULL, TRUE);
+#else
+ gdk_window_invalidate_rect(win->widget->window, NULL, TRUE);
+#endif
+ }
+ }
+ gdk_threads_leave();
+
+ /* Returning FALSE to prevent this function from being called multiple times */
+ return FALSE;