[gtk+/wip/simple-draw3] GtkTreeView: Fix pixel cache redraws
- From: Alexander Larsson <alexl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/simple-draw3] GtkTreeView: Fix pixel cache redraws
- Date: Thu, 2 May 2013 13:56:48 +0000 (UTC)
commit 30b10fe78b68e191c5098dbec173461a74401d82
Author: Alexander Larsson <alexl redhat com>
Date: Thu May 2 11:48:50 2013 +0200
GtkTreeView: Fix pixel cache redraws
Don't redraw everything on scroll, and don't clip to bin window
when drawing to pixel cache.
gtk/gtktreeview.c | 11 +++++++++--
1 files changed, 9 insertions(+), 2 deletions(-)
---
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c
index 2d31ed2..5a26f5c 100644
--- a/gtk/gtktreeview.c
+++ b/gtk/gtktreeview.c
@@ -495,6 +495,8 @@ struct _GtkTreeViewPrivate
guint in_grab : 1;
+ guint in_scroll : 1;
+
/* Whether our key press handler is to avoid sending an unhandled binding to the search entry */
guint search_entry_avoid_unhandled_binding : 1;
@@ -2240,6 +2242,11 @@ gtk_tree_view_bin_window_invalidate_handler (GdkWindow *window,
gdk_window_get_user_data (window, &widget);
tree_view = GTK_TREE_VIEW (widget);
+ /* Scrolling will invalidate everything in the bin window,
+ but we already have it in the cache, so we can ignore that */
+ if (tree_view->priv->in_scroll)
+ return;
+
y = gtk_adjustment_get_value (tree_view->priv->vadjustment);
cairo_region_translate (region,
0, y);
@@ -4819,8 +4826,6 @@ gtk_tree_view_bin_draw (GtkWidget *widget,
bin_window_width = gdk_window_get_width (tree_view->priv->bin_window);
bin_window_height = gdk_window_get_height (tree_view->priv->bin_window);
- cairo_rectangle (cr, 0, 0, bin_window_width, bin_window_height);
- cairo_clip (cr);
if (!gdk_cairo_get_clip_rectangle (cr, &clip))
return TRUE;
@@ -11309,7 +11314,9 @@ gtk_tree_view_adjustment_changed (GtkAdjustment *adjustment,
}
}
}
+ tree_view->priv->in_scroll = TRUE;
gdk_window_scroll (tree_view->priv->bin_window, 0, dy);
+ tree_view->priv->in_scroll = FALSE;
if (tree_view->priv->dy != (int) gtk_adjustment_get_value (tree_view->priv->vadjustment))
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]