diff options
author | Milan Crha <mcrha@redhat.com> | 2008-07-21 01:02:33 +0800 |
---|---|---|
committer | Bharath Acharya <abharath@src.gnome.org> | 2008-07-21 01:02:33 +0800 |
commit | 9e2412ce340e7e39a1fe6532151afd4fdbe8bb37 (patch) | |
tree | dc3d5d334db47477f652ce95b49c72e232b48bb9 /widgets/table/e-table-item.c | |
parent | 3e0962231032ae53af4310b43dbced810cdc6100 (diff) | |
download | gsoc2013-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.c | 36 |
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, |