[gtk+/wip/carlosg/event-delivery: 99/104] gtktreeview: Fix invalidation coordinates



commit ace686dba90ba734daf11d07c25612a8656953b7
Author: Carlos Garnacho <carlosg gnome org>
Date:   Wed May 24 18:30:35 2017 +0200

    gtktreeview: Fix invalidation coordinates
    
    We must account for the widget allocation now that there is no view_window.

 gtk/gtktreeview.c |   15 ++++++++++-----
 1 files changed, 10 insertions(+), 5 deletions(-)
---
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c
index 2519010..a8a500f 100644
--- a/gtk/gtktreeview.c
+++ b/gtk/gtktreeview.c
@@ -4372,14 +4372,17 @@ static void
 gtk_tree_view_invalidate_bin_region (GtkTreeView    *tree_view,
                                      cairo_region_t *region)
 {
+  GtkAllocation allocation;
+
   cairo_region_intersect_rectangle (region,
                                     &(GdkRectangle) { 0, 0,
                                                       gdk_window_get_width (tree_view->priv->bin_window),
                                                       gdk_window_get_height (tree_view->priv->bin_window)});
 
+  gtk_widget_get_allocation (GTK_WIDGET (tree_view), &allocation);
   cairo_region_translate (region,
-                          - (gint) gtk_adjustment_get_value (tree_view->priv->hadjustment),
-                          gtk_tree_view_get_effective_header_height (tree_view));
+                          allocation.x - (gint) gtk_adjustment_get_value (tree_view->priv->hadjustment),
+                          allocation.y + gtk_tree_view_get_effective_header_height (tree_view));
 
   gtk_widget_queue_draw_region (GTK_WIDGET (tree_view), region);
 
@@ -10982,11 +10985,13 @@ gtk_tree_view_adjustment_changed (GtkAdjustment *adjustment,
 {
   if (gtk_widget_get_realized (GTK_WIDGET (tree_view)))
     {
+      GtkAllocation allocation;
       gint dy;
-       
+
+      gtk_widget_get_allocation (GTK_WIDGET (tree_view), &allocation);
       gdk_window_move (tree_view->priv->bin_window,
-                      - gtk_adjustment_get_value (tree_view->priv->hadjustment),
-                      gtk_tree_view_get_effective_header_height (tree_view));
+                      allocation.x - gtk_adjustment_get_value (tree_view->priv->hadjustment),
+                      allocation.y + gtk_tree_view_get_effective_header_height (tree_view));
       dy = tree_view->priv->dy - (int) gtk_adjustment_get_value (tree_view->priv->vadjustment);
       tree_view->priv->in_scroll = TRUE;
       gdk_window_scroll (tree_view->priv->bin_window, 0, dy);


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