Bug report 1.0.8



While SCROLLING through my spread sheet to check that my formulas spanned
the correct cells.  I noticed that the red cursor did not cover all the
cells in the equation ( sum ). It only covered the cells that were visible
at the time the cell was selected for editing.

I've created a patch that removes the clipping to the visible region of the
item cursor, and let the canvas clip the item.  I haven't noticed a speed
decrease by doing this, but I am guessing that this was put in place for a
reason? That said, you may or may not like to fix it this way:

--- gnumeric-1.0.8/src/item-cursor.c    Mon Apr 29 22:43:18 2002
+++ gnumeric-1.0.8.fixed/src/item-cursor.c      Tue Jul  9 08:51:42 2002
@@ -206,23 +206,17 @@
 
        int x, y, w, h, extra;
 
-       /* Clip the bounds of the cursor to the visible region of cells */
-       int const left = MAX (gcanvas->first.col-1, ic->pos.start.col);
-       int const right = MIN (gcanvas->last_visible.col+1,
ic->pos.end.col);
-       int const top = MAX (gcanvas->first.row-1, ic->pos.start.row);
-       int const bottom = MIN (gcanvas->last_visible.row+1,
ic->pos.end.row);
-
        /* Erase the old cursor */
        item_cursor_request_redraw (ic);
 
        ic->cached_x = x =
                gcanvas->first_offset.col +
-               scg_colrow_distance_get (scg, TRUE, gcanvas->first.col,
left);
+               scg_colrow_distance_get (scg, TRUE, gcanvas->first.col,
ic->pos.start.col);
        ic->cached_y = y =
                gcanvas->first_offset.row +
-               scg_colrow_distance_get (scg, FALSE, gcanvas->first.row,
top);
-       ic->cached_w = w = scg_colrow_distance_get (scg, TRUE, left,
right+1);
-       ic->cached_h = h = scg_colrow_distance_get (scg, FALSE,top,
bottom+1);
+               scg_colrow_distance_get (scg, FALSE, gcanvas->first.row,
ic->pos.start.row);
+       ic->cached_w = w = scg_colrow_distance_get (scg, TRUE,
ic->pos.start.col, ic->pos.end.col+1);
+       ic->cached_h = h = scg_colrow_distance_get (scg,
FALSE,ic->pos.start.row, ic->pos.end.row+1);
 
        item->x1 = x - 1;
        item->y1 = y - 1;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]