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;