From f396a237dddcda8b85147f2bf4eb0fd8df994bc3 Mon Sep 17 00:00:00 2001 From: Kristian Rietveld Date: Sat, 14 Jan 2006 19:41:07 +0000 Subject: [PATCH] fixup adjustments and top_row if the current dy + page_size exceeds the 2006-01-14 Kristian Rietveld * gtk/gtktreeview.c (gtk_tree_view_size_allocate), (validate_visible_area): fixup adjustments and top_row if the current dy + page_size exceeds the new tree view height. (Fixes #316689, reported by Chris Lord). --- ChangeLog | 7 +++++++ ChangeLog.pre-2-10 | 7 +++++++ gtk/gtktreeview.c | 8 ++++++++ 3 files changed, 22 insertions(+) diff --git a/ChangeLog b/ChangeLog index 432652f6f3..28ce0593e4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-01-14 Kristian Rietveld + + * gtk/gtktreeview.c (gtk_tree_view_size_allocate), + (validate_visible_area): fixup adjustments and top_row if the + current dy + page_size exceeds the new tree view height. (Fixes + #316689, reported by Chris Lord). + 2006-01-13 Matthias Clasen * */abicheck.sh: Make this work on more platforms. diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 432652f6f3..28ce0593e4 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,10 @@ +2006-01-14 Kristian Rietveld + + * gtk/gtktreeview.c (gtk_tree_view_size_allocate), + (validate_visible_area): fixup adjustments and top_row if the + current dy + page_size exceeds the new tree view height. (Fixes + #316689, reported by Chris Lord). + 2006-01-13 Matthias Clasen * */abicheck.sh: Make this work on more platforms. diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index d9587bc281..afa17e54bd 100644 --- a/gtk/gtktreeview.c +++ b/gtk/gtktreeview.c @@ -2129,6 +2129,9 @@ gtk_tree_view_size_allocate (GtkWidget *widget, /* 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 @@ -5067,6 +5070,11 @@ validate_visible_area (GtkTreeView *tree_view) 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 gtk_tree_view_top_row_to_dy (tree_view);