]> Pileus Git - ~andy/gtk/commitdiff
fixup adjustments and top_row if the current dy + page_size exceeds the
authorKristian Rietveld <kris@gtk.org>
Sat, 14 Jan 2006 19:41:07 +0000 (19:41 +0000)
committerKristian Rietveld <kristian@src.gnome.org>
Sat, 14 Jan 2006 19:41:07 +0000 (19:41 +0000)
2006-01-14  Kristian Rietveld  <kris@gtk.org>

* 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
ChangeLog.pre-2-10
gtk/gtktreeview.c

index 432652f6f3daa7bcee8cbcd47c1073f3026172c0..28ce0593e4e4e962f6416e70c26b1676d3002660 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2006-01-14  Kristian Rietveld  <kris@gtk.org>
+
+       * 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  <mclasen@redhat.com>
 
        * */abicheck.sh: Make this work on more platforms.
index 432652f6f3daa7bcee8cbcd47c1073f3026172c0..28ce0593e4e4e962f6416e70c26b1676d3002660 100644 (file)
@@ -1,3 +1,10 @@
+2006-01-14  Kristian Rietveld  <kris@gtk.org>
+
+       * 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  <mclasen@redhat.com>
 
        * */abicheck.sh: Make this work on more platforms.
index d9587bc281fcbcd29dad4f01bc7c22287321c912..afa17e54bd9ae9ccedd9e6fd37d39803988ae818 100644 (file)
@@ -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);