gtk+ r19335 - in branches/gtk-2-12: . gtk



Author: kristian
Date: Thu Jan 10 10:38:40 2008
New Revision: 19335
URL: http://svn.gnome.org/viewvc/gtk+?rev=19335&view=rev

Log:
2008-01-10  Kristian Rietveld  <kris imendio com>

	Merge from trunk (omitted unit test updates):

	Fix #477175, reported by Juri Pakaste.

	* gtk/gtktreeprivate.h:
	* gtk/gtktreeview.c (gtk_tree_view_top_row_to_dy): do not set
	tree_view->priv->dy here directly, just calculate the new value
	and set it on the adjustment,
	(gtk_tree_view_adjustment_changed): add guards to not call
	gtk_tree_view_dy_to_top_row() if we are currently in
	gtk_tree_view_top_row_to_dy(),
	(gtk_tree_view_put): fix coordinate annotation: these are bin_window
	coordinates, not tree coordinates,
	(gtk_tree_view_real_start_editing): add cast.



Modified:
   branches/gtk-2-12/ChangeLog
   branches/gtk-2-12/gtk/gtktreeprivate.h
   branches/gtk-2-12/gtk/gtktreeview.c

Modified: branches/gtk-2-12/gtk/gtktreeprivate.h
==============================================================================
--- branches/gtk-2-12/gtk/gtktreeprivate.h	(original)
+++ branches/gtk-2-12/gtk/gtktreeprivate.h	Thu Jan 10 10:38:40 2008
@@ -221,6 +221,8 @@
 
   guint init_hadjust_value : 1;
 
+  guint in_top_row_to_dy : 1;
+
   /* interactive search */
   guint enable_search : 1;
   guint disable_popdown : 1;

Modified: branches/gtk-2-12/gtk/gtktreeview.c
==============================================================================
--- branches/gtk-2-12/gtk/gtktreeview.c	(original)
+++ branches/gtk-2-12/gtk/gtktreeview.c	Thu Jan 10 10:38:40 2008
@@ -6367,6 +6367,7 @@
   GtkTreePath *path;
   GtkRBTree *tree;
   GtkRBNode *node;
+  int new_dy;
 
   if (tree_view->priv->top_row)
     path = gtk_tree_row_reference_get_path (tree_view->priv->top_row);
@@ -6400,16 +6401,17 @@
       return;
     }
 
-  tree_view->priv->dy = _gtk_rbtree_node_find_offset (tree, node);
-  tree_view->priv->dy += tree_view->priv->top_row_dy;
+  new_dy = _gtk_rbtree_node_find_offset (tree, node);
+  new_dy += tree_view->priv->top_row_dy;
 
-  if (tree_view->priv->dy + tree_view->priv->vadjustment->page_size > tree_view->priv->height)
-    tree_view->priv->dy = tree_view->priv->height - tree_view->priv->vadjustment->page_size;
+  if (new_dy + tree_view->priv->vadjustment->page_size > tree_view->priv->height)
+    new_dy = tree_view->priv->height - tree_view->priv->vadjustment->page_size;
 
-  tree_view->priv->dy = MAX (0, tree_view->priv->dy);
+  new_dy = MAX (0, new_dy);
 
-  gtk_adjustment_set_value (tree_view->priv->vadjustment,
-			    (gdouble)tree_view->priv->dy);
+  tree_view->priv->in_top_row_to_dy = TRUE;
+  gtk_adjustment_set_value (tree_view->priv->vadjustment, (gdouble)new_dy);
+  tree_view->priv->in_top_row_to_dy = FALSE;
 }
 
 
@@ -8081,7 +8083,7 @@
 static void
 gtk_tree_view_put (GtkTreeView *tree_view,
 		   GtkWidget   *child_widget,
-		   /* in tree coordinates */
+		   /* in bin_window coordinates */
 		   gint         x,
 		   gint         y,
 		   gint         width,
@@ -10613,7 +10615,9 @@
         {
           /* update our dy and top_row */
           tree_view->priv->dy = (int) tree_view->priv->vadjustment->value;
-          gtk_tree_view_dy_to_top_row (tree_view);
+
+          if (!tree_view->priv->in_top_row_to_dy)
+            gtk_tree_view_dy_to_top_row (tree_view);
 	}
     }
 }
@@ -14792,8 +14796,7 @@
   _gtk_tree_view_column_start_editing (column, GTK_CELL_EDITABLE (cell_editable));
 
   gtk_tree_view_real_set_cursor (tree_view, path, FALSE, TRUE);
-
-  cell_area->y += pre_val - tree_view->priv->vadjustment->value;
+  cell_area->y += pre_val - (int)tree_view->priv->vadjustment->value;
 
   gtk_widget_size_request (GTK_WIDGET (cell_editable), &requisition);
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]