[gtk+/wip/simple-draw3] GtkTreeView: Invalidate cache for gtk_tree_view_node_queue_redraw



commit 958df1c4bffc843377088fe0f60bf337360470f7
Author: Alexander Larsson <alexl redhat com>
Date:   Thu May 2 11:11:29 2013 +0200

    GtkTreeView: Invalidate cache for gtk_tree_view_node_queue_redraw
    
    When a row changes we invalidate only the right area in the
    bin_window. This means we also invalidate the right area
    of the pixel cache.

 gtk/gtktreeview.c |   19 +++++++++----------
 1 files changed, 9 insertions(+), 10 deletions(-)
---
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c
index eb3493b..0389b0a 100644
--- a/gtk/gtktreeview.c
+++ b/gtk/gtktreeview.c
@@ -6028,18 +6028,17 @@ gtk_tree_view_node_queue_redraw (GtkTreeView *tree_view,
                                 GtkRBTree   *tree,
                                 GtkRBNode   *node)
 {
-  GtkAllocation allocation;
-  gint y;
-
-  y = _gtk_rbtree_node_find_offset (tree, node)
-    - gtk_adjustment_get_value (tree_view->priv->vadjustment)
-    + gtk_tree_view_get_effective_header_height (tree_view);
+  GdkRectangle rect;
 
-  gtk_widget_get_allocation (GTK_WIDGET (tree_view), &allocation);
-  gtk_widget_queue_draw_area (GTK_WIDGET (tree_view),
-                             0, y,
-                              allocation.width,
-                             GTK_RBNODE_GET_HEIGHT (node));
+  rect.x = 0;
+  rect.y =
+    _gtk_rbtree_node_find_offset (tree, node)
+    - gtk_adjustment_get_value (tree_view->priv->vadjustment);
+  rect.width = gtk_widget_get_allocated_width (GTK_WIDGET (tree_view));
+  rect.height = GTK_RBNODE_GET_HEIGHT (node);
+
+  gdk_window_invalidate_rect (tree_view->priv->bin_window,
+                             &rect, TRUE);
 }
 
 static gboolean


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