]> git.lyx.org Git - features.git/commitdiff
let's always repaint the row with the cursor in it
authorMartin Vermeer <martin.vermeer@hut.fi>
Sun, 1 Jan 2006 23:06:23 +0000 (23:06 +0000)
committerMartin Vermeer <martin.vermeer@hut.fi>
Sun, 1 Jan 2006 23:06:23 +0000 (23:06 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@10696 a592a061-630c-0410-9148-cb99ea01b6c8

src/ChangeLog
src/rowpainter.C

index e182b015e2fc5fc625e4d97fde0a0609b1e2ee83..018768bfd4221e8b11b650284608f794b3f750ac 100644 (file)
@@ -1,3 +1,8 @@
+2006-01-01  Martin Vermeer  <martin.vermeer@hut.fi>
+
+       * rowpainter.C (paintPar): always repaint the row with the
+       cursor in it
+
 2006-01-01  Lars Gullik Bjønnes <larsbj@gullik.net>
 
        * MenuBackend.h: 
index 91543fa30e2d46ba72df6284420c25433d366116..104e434b03970af2ba5c0f9597c8c60d5a99b840 100644 (file)
@@ -729,17 +729,14 @@ lyx::size_type calculateRowSignature(Row const & row, Paragraph const & par)
 }
 
 
-bool isCursorInInsetInRow(PainterInfo & pi, RowList::const_iterator rit, 
-               Paragraph const & par)
+bool isCursorOnRow(PainterInfo & pi, pit_type pit, RowList::const_iterator rit)
 {
-       InsetList::const_iterator ii = par.insetlist.begin();
-       InsetList::const_iterator iend = par.insetlist.end();
-       for ( ; ii != iend; ++ii) {
-               if (ii->pos >= rit->pos() && ii->pos < rit->endpos()
-                   && ii->inset->isTextInset() 
-                   && pi.base.bv->cursor().isInside(ii->inset))
-                       return true;
-       }
+       LCursor & cur = pi.base.bv->cursor();
+       for (lyx::size_type d = 0; d < cur.depth(); d++)
+               if (cur[d].pit() == pit
+                   && cur[d].pos() >= rit->pos()
+                   && cur[d].pos() < rit->endpos())
+                       return true;
        return false;
 }
 
@@ -767,15 +764,13 @@ void paintPar
                // Row signature; has row changed since last paint?
                lyx::size_type const row_sig = calculateRowSignature(*rit, par);
 
-               // The following code figures out if the cursor is inside
-               // an inset _on this row_.
-               bool cur_in_inset_in_row = isCursorInInsetInRow(pi, rit, par);
-
+               bool cursor_on_row = isCursorOnRow(pi, pit, rit);
+               
                // If selection is on, the current row signature differs from
                // from cache, or cursor is inside an inset _on this row_, 
                // then paint the row
-               if (repaintAll || par.rowSignature()[rowno] != row_sig 
-                          || cur_in_inset_in_row) {
+               if (repaintAll || par.rowSignature()[rowno] != row_sig
+                           || cursor_on_row) {
                        // Add to row signature cache
                        par.rowSignature()[rowno] = row_sig;