aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/table/e-table-item.c
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2008-07-21 01:02:33 +0800
committerBharath Acharya <abharath@src.gnome.org>2008-07-21 01:02:33 +0800
commit9e2412ce340e7e39a1fe6532151afd4fdbe8bb37 (patch)
treedc3d5d334db47477f652ce95b49c72e232b48bb9 /widgets/table/e-table-item.c
parent3e0962231032ae53af4310b43dbced810cdc6100 (diff)
downloadgsoc2013-evolution-9e2412ce340e7e39a1fe6532151afd4fdbe8bb37.tar
gsoc2013-evolution-9e2412ce340e7e39a1fe6532151afd4fdbe8bb37.tar.gz
gsoc2013-evolution-9e2412ce340e7e39a1fe6532151afd4fdbe8bb37.tar.bz2
gsoc2013-evolution-9e2412ce340e7e39a1fe6532151afd4fdbe8bb37.tar.lz
gsoc2013-evolution-9e2412ce340e7e39a1fe6532151afd4fdbe8bb37.tar.xz
gsoc2013-evolution-9e2412ce340e7e39a1fe6532151afd4fdbe8bb37.tar.zst
gsoc2013-evolution-9e2412ce340e7e39a1fe6532151afd4fdbe8bb37.zip
Committing on behalf of Milan Crha <mcrha@redhat.com>
2008-07-15 Milan Crha <mcrha@redhat.com> ** Part of fix for bug #329821 * e-table-item.c: (find_cell): Do not consider last row's height till the bottom. * e-table-item.h: (e_table_item_compute_mouse_over): * e-table-item.c: (e_table_item_compute_mouse_over): * e-table-group-container.c: (etgc_compute_mouse_over), (etgc_class_init): * e-table-group-leaf.c: (etgl_compute_mouse_over), (etgl_class_init): * e-table.h: (e_table_get_mouse_over_cell): * e-table.c: (e_table_get_mouse_over_cell): * e-table-group.h: (struct ETableGroupClass), (e_table_group_compute_mouse_over): * e-table-group.c: (e_table_group_compute_mouse_over), (etg_class_init): Be able to calculate mouse-over position correctly, relatively to the ETableItem. svn path=/trunk/; revision=35778
Diffstat (limited to 'widgets/table/e-table-item.c')
-rw-r--r--widgets/table/e-table-item.c36
1 files changed, 35 insertions, 1 deletions
diff --git a/widgets/table/e-table-item.c b/widgets/table/e-table-item.c
index 3e29680574..a4ec641cc0 100644
--- a/widgets/table/e-table-item.c
+++ b/widgets/table/e-table-item.c
@@ -2171,12 +2171,15 @@ find_cell (ETableItem *eti, double x, double y, int *view_col_res, int *view_row
y1 = y2 = height_extra;
if (y < height_extra)
return FALSE;
- for (row = 0; row < rows - 1; row++, y1 = y2){
+ for (row = 0; row < rows; row++, y1 = y2) {
y2 += ETI_ROW_HEIGHT (eti, row) + height_extra;
if (y <= y2)
break;
}
+
+ if (row == rows)
+ return FALSE;
}
*view_col_res = col;
if (x1_res)
@@ -3442,6 +3445,37 @@ e_table_item_compute_location (ETableItem *eti,
eti->grabbed_row = grabbed_row;
}
+/**
+ * e_table_item_compute_mouse_over:
+ * Similar to e_table_item_compute_location, only here recalculating
+ * the position inside the item too.
+ **/
+void
+e_table_item_compute_mouse_over (ETableItem *eti,
+ int x,
+ int y,
+ int *row,
+ int *col)
+{
+ double realx, realy;
+ /* Save the grabbed row but make sure that we don't get flawed
+ results because the cursor is grabbed. */
+ int grabbed_row = eti->grabbed_row;
+ eti->grabbed_row = -1;
+
+ realx = x;
+ realy = y;
+
+ gnome_canvas_item_w2i (GNOME_CANVAS_ITEM (eti), &realx, &realy);
+
+ if (!find_cell (eti, (int)realx, (int)realy, col, row, NULL, NULL)) {
+ *row = -1;
+ *col = -1;
+ }
+
+ eti->grabbed_row = grabbed_row;
+}
+
void
e_table_item_get_cell_geometry (ETableItem *eti,
int *row,