]> Pileus Git - ~andy/gtk/commitdiff
Bug #571001. Set the cell's showing state based on bin_window coordinates.
authorLi Yuan <li.yuan@sun.com>
Wed, 25 Feb 2009 08:41:49 +0000 (08:41 +0000)
committerLi Yuan <liyuan@src.gnome.org>
Wed, 25 Feb 2009 08:41:49 +0000 (08:41 +0000)
2009-02-25  Li Yuan  <li.yuan@sun.com>

        * gailtreeview.c: (is_cell_showing):
        Bug #571001. Set the cell's showing state based on bin_window
        coordinates.

svn path=/trunk/; revision=22403

modules/other/gail/ChangeLog
modules/other/gail/gailtreeview.c

index 19321b128071e3a0a01b8b4eedec9f782199d95d..6b69abacc1c068384c4f73b4a3282995233650e1 100644 (file)
@@ -1,3 +1,9 @@
+2009-02-25  Li Yuan  <li.yuan@sun.com>
+
+       * gailtreeview.c: (is_cell_showing):
+       Bug #571001. Set the cell's showing state based on bin_window
+       coordinates.
+
 2009-02-17  Matthias Clasen  <mclasen@redhat.com>
 
        * === Released 2.15.4 ===
index 6a8edb4555c7695e43c2fda903d34e4073975e2a..0604ecec560465ace8b64c446ea80c314255fedb 100644 (file)
@@ -3075,6 +3075,7 @@ is_cell_showing (GtkTreeView   *tree_view,
 {
   GdkRectangle rect, *visible_rect;
   GdkRectangle rect1, *tree_cell_rect;
+  gint bx, by;
   gboolean is_showing;
  /*
   * A cell is considered "SHOWING" if any part of the cell is in the visible 
@@ -3088,18 +3089,18 @@ is_cell_showing (GtkTreeView   *tree_view,
   visible_rect = &rect;
   tree_cell_rect = &rect1;
   tree_cell_rect->x = cell_rect->x;
+  tree_cell_rect->y = cell_rect->y;
   tree_cell_rect->width = cell_rect->width;
   tree_cell_rect->height = cell_rect->height;
 
   gtk_tree_view_get_visible_rect (tree_view, visible_rect);
-  gtk_tree_view_convert_widget_to_bin_window_coords (tree_view,
-                                                     cell_rect->x, cell_rect->y,
-                                                     NULL, &(rect1.y));
-
-  if (((tree_cell_rect->x + tree_cell_rect->width) < visible_rect->x) ||
-     ((tree_cell_rect->y + tree_cell_rect->height) < (visible_rect->y)) ||
-     (tree_cell_rect->x > (visible_rect->x + visible_rect->width)) ||
-     (tree_cell_rect->y > (visible_rect->y + visible_rect->height)))
+  gtk_tree_view_convert_tree_to_bin_window_coords (tree_view, visible_rect->x, 
+                                                   visible_rect->y, &bx, &by);
+
+  if (((tree_cell_rect->x + tree_cell_rect->width) < bx) ||
+     ((tree_cell_rect->y + tree_cell_rect->height) < by) ||
+     (tree_cell_rect->x > (bx + visible_rect->width)) ||
+     (tree_cell_rect->y > (by + visible_rect->height)))
     is_showing =  FALSE;
   else
     is_showing = TRUE;