From 6336e980828688deca8c027ea1759a909bfbad2f Mon Sep 17 00:00:00 2001 From: Li Yuan Date: Wed, 25 Feb 2009 08:41:49 +0000 Subject: [PATCH] Bug #571001. Set the cell's showing state based on bin_window coordinates. 2009-02-25 Li Yuan * 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 | 6 ++++++ modules/other/gail/gailtreeview.c | 15 ++++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/modules/other/gail/ChangeLog b/modules/other/gail/ChangeLog index 19321b1280..6b69abacc1 100644 --- a/modules/other/gail/ChangeLog +++ b/modules/other/gail/ChangeLog @@ -1,3 +1,9 @@ +2009-02-25 Li Yuan + + * gailtreeview.c: (is_cell_showing): + Bug #571001. Set the cell's showing state based on bin_window + coordinates. + 2009-02-17 Matthias Clasen * === Released 2.15.4 === diff --git a/modules/other/gail/gailtreeview.c b/modules/other/gail/gailtreeview.c index 6a8edb4555..0604ecec56 100644 --- a/modules/other/gail/gailtreeview.c +++ b/modules/other/gail/gailtreeview.c @@ -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 = ▭ 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)); + 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) < 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))) + 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;