diff -u -p -r1.498 gtktreeview.c --- gtk+-2.8.9/gtk/gtktreeview.c 22 Oct 2005 21:08:23 -0000 1.498 +++ gtk+-2.8.9/gtk/gtktreeview.c 24 Oct 2005 22:30:27 -0000 @@ -2098,6 +2098,9 @@ gtk_tree_view_size_allocate (GtkWidget /* now the adjustments and window sizes are in sync, we can sync toprow/dy again */ if (tree_view->priv->height <= tree_view->priv->vadjustment->page_size) gtk_adjustment_set_value (GTK_ADJUSTMENT (tree_view->priv->vadjustment), 0); + else if (tree_view->priv->vadjustment->value + tree_view->priv->vadjustment->page_size > tree_view->priv->height) + gtk_adjustment_set_value (GTK_ADJUSTMENT (tree_view->priv->vadjustment), + tree_view->priv->height - tree_view->priv->vadjustment->page_size); else if (gtk_tree_row_reference_valid (tree_view->priv->top_row)) gtk_tree_view_top_row_to_dy (tree_view); else @ -5031,6 +5034,11 @@ validate_visible_area (GtkTreeView *tree * else than zero. we update top_row to be in sync with dy = 0. */ gtk_adjustment_set_value (GTK_ADJUSTMENT (tree_view->priv->vadjustment), 0); + gtk_tree_view_dy_to_top_row (tree_view); + } + else if (tree_view->priv->vadjustment->value + tree_view->priv->vadjustment->page_size > tree_view->priv->height) + { + gtk_adjustment_set_value (GTK_ADJUSTMENT (tree_view->priv->vadjustment), tree_view->priv->height - tree_view->priv->vadjustment->page_size); gtk_tree_view_dy_to_top_row (tree_view); } else