]> git.lyx.org Git - features.git/commitdiff
More debug mode work.
authorLars Gullik Bjønnes <larsbj@gullik.org>
Sat, 22 Nov 2003 15:51:12 +0000 (15:51 +0000)
committerLars Gullik Bjønnes <larsbj@gullik.org>
Sat, 22 Nov 2003 15:51:12 +0000 (15:51 +0000)
- some cursor movement
- selection

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@8122 a592a061-630c-0410-9148-cb99ea01b6c8

src/ChangeLog
src/rowpainter.C
src/text3.C

index 6e13fd6ebb82bcf8195c4144e909b9643d77d44b..ea2638efdff2dd1130c8610377f399fd8b87e084 100644 (file)
@@ -1,5 +1,12 @@
 2003-11-22  Lars Gullik Bjonnes  <larsbj@gullik.net>
 
+       * text3.C (cursorPrevious): make sure that we do not compare
+       iterators form different containers.
+       (cursorNext): ditto
+
+       * rowpainter.C (paintSelection): make sure that we do not compare
+       iterators from different containers.
+
        * text3.C (dispatch): [PRIOR] make sure that we do not compare
        iterators from different ParagraphList containers.
        [NEXT] ditto
index 1c63af6d4b1528a596b2d189831601cba3dea806..51c25a21b546ebbb268ea27271a08e72306e42bd 100644 (file)
@@ -389,12 +389,13 @@ void RowPainter::paintSelection()
        int const h = row_.height();
 
        int const row_y = pit_->y + row_.y_offset();
-       
+
        if (text_.bidi.same_direction()) {
                int x;
                int y = yo_;
                int w;
-               if (startrow == rit_ && endrow == rit_) {
+               if ((startpit == pit_ && startrow == rit_) &&
+                   (endpit == pit_ && endrow == rit_)) {
                        if (startx < endx) {
                                x = int(xo_) + startx;
                                w = endx - startx;
@@ -403,22 +404,23 @@ void RowPainter::paintSelection()
                                w = startx - endx;
                        }
                        pain_.fillRectangle(x, y, w, h, LColor::selection);
-               } else if (startrow == rit_) {
+               } else if (startpit == pit_ && startrow == rit_) {
                        int const x = is_rtl ? int(xo_) : int(xo_ + startx);
                        int const w = is_rtl ? startx : (width_ - startx);
                        pain_.fillRectangle(x, y, w, h, LColor::selection);
-               } else if (endrow == rit_) {
+               } else if (endpit == pit_ && endrow == rit_) {
                        int const x = is_rtl ? int(xo_ + endx) : int(xo_);
                        int const w = is_rtl ? (width_ - endx) : endx;
                        pain_.fillRectangle(x, y, w, h, LColor::selection);
                } else if (row_y > starty && row_y < endy) {
-               
+
                        pain_.fillRectangle(int(xo_), y, width_, h, LColor::selection);
                }
                return;
        }
 
-       if (startrow != rit_ && endrow != rit_) {
+       if ((startpit != pit_ && startrow != rit_) &&
+           (endpit != pit_ && endrow != rit_)) {
                if (y_ > starty && y_ < endy) {
                        int w = width_;
                        pain_.fillRectangle(int(xo_), yo_, w, h, LColor::selection);
@@ -426,7 +428,7 @@ void RowPainter::paintSelection()
                return;
        }
 
-       if ((startrow != rit_ && !is_rtl) || (endrow != rit_ && is_rtl))
+       if ((startpit != pit_ && startrow != rit_ && !is_rtl) || (endpit != pit_ && endrow != rit_ && is_rtl))
                pain_.fillRectangle(int(xo_), yo_,
                        int(x_), h, LColor::selection);
 
@@ -459,15 +461,16 @@ void RowPainter::paintSelection()
                                tmpx += separator_;
                }
 
-               if ((startrow != rit_ || text_.selection.start.pos() <= pos) &&
-                       (endrow != rit_ || pos < text_.selection.end.pos())) {
+               if (((startpit != pit_ && startrow != rit_) || text_.selection.start.pos() <= pos) &&
+                       ((endpit != pit_ && endrow != rit_) || pos < text_.selection.end.pos())) {
                        // Here we do not use x_ as xo_ was added to x_.
                        pain_.fillRectangle(int(old_tmpx), yo_,
                                int(tmpx - old_tmpx + 1), h, LColor::selection);
                }
        }
 
-       if ((startrow != rit_ && is_rtl) || (endrow != rit_ && !is_rtl)) {
+       if ((startpit != pit_ && startrow != rit_ && is_rtl) ||
+           (endpit != pit_ && endrow != rit_ && !is_rtl)) {
                pain_.fillRectangle(int(xo_ + tmpx),
                        yo_, int(bv_.workWidth() - tmpx), h, LColor::selection);
        }
index f3ba64efcd526d20fd4cb52cd61fe8cb911dcd39..f83af3e7ed532bb69c84a87018cc6e2f0846becc 100644 (file)
@@ -365,12 +365,13 @@ void LyXText::cursorPrevious()
 {
 
        RowList::iterator crit = cursorRow();
+       ParagraphList::iterator cpar = cursorPar();
 
        int x = bv()->x_target() - xo_;
        int y = bv()->top_y() - yo_;
        setCursorFromCoordinates(x, y);
 
-       if (crit == cursorRow()) {
+       if (cpar == cursorPar() && crit == cursorRow()) {
                // we have a row which is taller than the workarea. The
                // simplest solution is to move to the previous row instead.
                cursorUp(true);
@@ -384,12 +385,13 @@ void LyXText::cursorPrevious()
 void LyXText::cursorNext()
 {
        RowList::iterator crit = cursorRow();
+       ParagraphList::iterator cpar = cursorPar();
 
        int x = bv()->x_target() - xo_;
        int y = bv()->top_y() + bv()->workHeight() - yo_;
        setCursorFromCoordinates(x, y);
 
-       if (crit == cursorRow()) {
+       if (cpar == cursorPar() && crit == cursorRow()) {
                // we have a row which is taller than the workarea. The
                // simplest solution is to move to the next row instead.
                cursorDown(true);