]> git.lyx.org Git - features.git/commitdiff
remove LyXCursor::row_ member
authorAndré Pönitz <poenitz@gmx.net>
Fri, 27 Jun 2003 08:38:41 +0000 (08:38 +0000)
committerAndré Pönitz <poenitz@gmx.net>
Fri, 27 Jun 2003 08:38:41 +0000 (08:38 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@7214 a592a061-630c-0410-9148-cb99ea01b6c8

16 files changed:
src/BufferView_pimpl.C
src/ChangeLog
src/bufferview_funcs.C
src/frontends/ChangeLog
src/frontends/screen.C
src/frontends/screen.h
src/insets/ChangeLog
src/insets/insettext.C
src/lyxcursor.C
src/lyxcursor.h
src/lyxfunc.C
src/lyxtext.h
src/rowpainter.C
src/text.C
src/text2.C
src/text3.C

index be1cea275f09d5c462bef46fe7b97f43b238296d..b5e6a52038c52254b42780d0cce0401b8f7dff3b 100644 (file)
@@ -258,7 +258,7 @@ void BufferView::Pimpl::buffer(Buffer * b)
                }
 
                // FIXME: needed when ?
-               bv_->text->top_y(screen().topCursorVisible(bv_->text->cursor, bv_->text->top_y()));
+               bv_->text->top_y(screen().topCursorVisible(bv_->text));
 
                // Buffer-dependent dialogs should be updated or
                // hidden. This should go here because some dialogs (eg ToC)
@@ -409,7 +409,7 @@ int BufferView::Pimpl::resizeCurrentBuffer()
                bv_->theLockingInset(the_locking_inset);
        }
 
-       bv_->text->top_y(screen().topCursorVisible(bv_->text->cursor, bv_->text->top_y()));
+       bv_->text->top_y(screen().topCursorVisible(bv_->text));
 
        switchKeyMap();
        owner_->busy(false);
index 6697d026c6e53c2037404ecb2a84c4da0eedcc2f..11a0a61570208e0f27bc474e59502ad56bf55c9c 100644 (file)
@@ -1,4 +1,17 @@
 
+2003-06-27  André Pönitz  <poenitz@gmx.net>
+
+       * BufferView_pimpl.C:
+       * bufferview_funcs.C:
+       * lyxcursor.C:
+       * lyxcursor.h:
+       * lyxfunc.C:
+       * lyxtext.h:
+       * rowpainter.C:
+       * text.C:
+       * text2.C:
+       * text3.C: remove LyXCursor::row_ member
+
 2003-06-26  Alfredo Brauntein  <abraunst@lyx.org>
 
        * lyx_main.C (LyX): get full path of document loaded on the 
index 4914580145fe12d65499f698adb994a3d9653c02..c1747beb64a62663838deceaf77f480033af3f5f 100644 (file)
@@ -391,7 +391,7 @@ void toggleAndShow(BufferView * bv, LyXFont const & font, bool toggleall)
        if (font.language() != ignore_language ||
            font.number() != LyXFont::IGNORE) {
                LyXCursor & cursor = text->cursor;
-               text->computeBidiTables(bv->buffer(), cursor.row());
+               text->computeBidiTables(bv->buffer(), text->cursorRow());
                if (cursor.boundary() !=
                    text->isBoundary(bv->buffer(), *cursor.par(), cursor.pos(),
                                     text->real_current_font))
index 745330c6a02fff647211017ee28830cf39525ee4..9d37cd80922eb8cb022e1e2b65bdcb8c87a0baf6 100644 (file)
@@ -1,3 +1,8 @@
+
+2003-06-27  André Pönitz  <poenitz@gmx.net>
+
+       * screen.[Ch]: take care of removed LyXCursor::row_ member
+
 2003-06-19  Angus Leeming  <leeming@lyx.org>
 
        * Dialogs.h: (showTexinfo):
index 14baa80f9cc1e670fbee37a50272485ade00c510..8fb9f8e6441f286f6d2a1e6b7d6b2c2a964eff20 100644 (file)
@@ -243,12 +243,14 @@ bool LyXScreen::fitManualCursor(BufferView * bv, LyXText * text,
 }
 
 
-unsigned int LyXScreen::topCursorVisible(LyXCursor const & cursor, int top_y)
+unsigned int LyXScreen::topCursorVisible(LyXText * text)
 {
-       int const vheight = workarea().workHeight();
+       LyXCursor const & cursor = text->cursor;
+       int top_y = text->top_y();
        int newtop = top_y;
+       int const vheight = workarea().workHeight();
 
-       RowList::iterator row = cursor.row();
+       RowList::iterator row = text->cursorRow();
 
 #warning SUPER HACK DISABLED (Lgb)
 #if 0
@@ -263,9 +265,8 @@ unsigned int LyXScreen::topCursorVisible(LyXCursor const & cursor, int top_y)
                                + row->height()
                                - row->baseline() - vheight;
                } else {
-                       // scroll down
-                       newtop = cursor.y()
-                               - vheight / 2;   /* the scroll region must be so big!! */
+                       // scroll down, the scroll region must be so big!!
+                       newtop = cursor.y() - vheight / 2; 
                }
 
        } else if (static_cast<int>((cursor.y()) - row->baseline()) <
@@ -289,7 +290,7 @@ unsigned int LyXScreen::topCursorVisible(LyXCursor const & cursor, int top_y)
 bool LyXScreen::fitCursor(LyXText * text, BufferView * bv)
 {
        // Is a change necessary?
-       int const newtop = topCursorVisible(text->cursor, text->top_y());
+       int const newtop = topCursorVisible(text);
        bool const result = (newtop != text->top_y());
        if (result) {
                draw(text, bv, newtop);
@@ -348,13 +349,13 @@ void LyXScreen::toggleSelection(LyXText * text, BufferView * bv,
 
        int const bottom = min(
                max(static_cast<int>(text->selection.end.y()
-                                    - text->selection.end.row()->baseline()
-                                    + text->selection.end.row()->height()),
+                                    - text->getRow(text->selection.end)->baseline()
+                                    + text->getRow(text->selection.end)->height()),
                    text->top_y()),
                static_cast<int>(text->top_y() + workarea().workHeight()));
        int const top = min(
                max(static_cast<int>(text->selection.start.y() -
-                                    text->selection.start.row()->baseline()),
+                                    text->getRow(text->selection.start)->baseline()),
                    text->top_y()),
                static_cast<int>(text->top_y() + workarea().workHeight()));
 
@@ -381,10 +382,10 @@ void LyXScreen::toggleToggle(LyXText * text, BufferView * bv,
                return;
 
        int const top_tmp = text->toggle_cursor.y()
-               - text->toggle_cursor.row()->baseline();
+               - text->getRow(text->toggle_cursor)->baseline();
        int const bottom_tmp = text->toggle_end_cursor.y()
-               - text->toggle_end_cursor.row()->baseline()
-               + text->toggle_end_cursor.row()->height();
+               - text->getRow(text->toggle_end_cursor)->baseline()
+               + text->getRow(text->toggle_end_cursor)->height();
 
        int const offset = yo < 0 ? yo : 0;
        int const bottom = min(max(bottom_tmp, text->top_y()),
index 282dfc474691eede5a390270f7762725d5b168f0..fd1b229e3a1f830291f32cc563c34965c63f8da3 100644 (file)
@@ -65,14 +65,13 @@ public:
 
        /**
         * topCursorVisible - get a new "top" to make the cursor visible
-        * @param c the cursor
-        * @param top_y the current y location of the containing region
+        * in a LyXText
         *
         * This helper function calculates a new y co-ordinate for
         * the top of the containing region such that the cursor contained
         * within the LyXText is "nicely" visible.
         */
-       virtual unsigned int topCursorVisible(LyXCursor const & c, int top_y);
+       virtual unsigned int topCursorVisible(LyXText *);
 
        /**
         * fitCursor - fit the cursor onto the work area
index 8a16ff1635d25faa8822897e198a9e0fa2883670..bdf67505716fae176fd8b1ace93abb0dba881650 100644 (file)
@@ -1,3 +1,8 @@
+
+2003-06-27  André Pönitz  <poenitz@gmx.net>
+
+       * insettext.C: take care of removed LyXCursor::row_ member
+
 2003-06-21  Alfredo Braunstein  <abraunst@libero.it>
 
        * inseterror.[Ch]: removed 
index a5ff6909ad4d724964fa68e6b21d978c9406eded..634855a0dcba3a211b604040364e2d41f7db90e7 100644 (file)
@@ -2077,7 +2077,7 @@ bool InsetText::cboundary(BufferView * bv) const
 
 RowList::iterator InsetText::crow(BufferView * bv) const
 {
-       return getLyXText(bv)->cursor.row();
+       return getLyXText(bv)->cursorRow();
 }
 
 
@@ -2213,7 +2213,7 @@ void InsetText::resizeLyXText(BufferView * bv, bool force) const
                inset_y = ciy(bv) + drawTextYOffset;
        }
 
-       t->top_y(bv->screen().topCursorVisible(t->cursor, t->top_y()));
+       t->top_y(bv->screen().topCursorVisible(t));
        if (!owner()) {
                const_cast<InsetText*>(this)->updateLocal(bv, FULL, false);
                // this will scroll the screen such that the cursor becomes visible
@@ -2252,7 +2252,7 @@ void InsetText::reinitLyXText() const
                        inset_x = cix(bv) - top_x + drawTextXOffset;
                        inset_y = ciy(bv) + drawTextYOffset;
                }
-               t->top_y(bv->screen().topCursorVisible(t->cursor, t->top_y()));
+               t->top_y(bv->screen().topCursorVisible(t));
                if (!owner()) {
                        const_cast<InsetText*>(this)->updateLocal(bv, FULL, false);
                        // this will scroll the screen such that the cursor becomes visible
index 2ec6731cc9565815b57a86a3e7a7d9d0ac191093..1e16cba9bd7f68c0593c818bbaf979dcae8faa67 100644 (file)
@@ -13,7 +13,7 @@
 
 LyXCursor::LyXCursor()
        : par_(), pos_(0), boundary_(false),
-         x_(0), ix_(0), x_fix_(0), y_(0), iy_(0), row_(0)
+         x_(0), ix_(0), x_fix_(0), y_(0), iy_(0)
 {}
 
 
@@ -111,18 +111,6 @@ int LyXCursor::iy() const
 }
 
 
-void LyXCursor::row(RowList::iterator r)
-{
-       row_ = r;
-}
-
-
-RowList::iterator LyXCursor::row() const
-{
-       return row_;
-}
-
-
 void LyXCursor::irow(RowList::iterator r)
 {
        irow_ = r;
index 32a2540579230b6ace5aad0dc130efb5ca410ead..c098d6e472002ed472d64e1a0ff580546e9606a3 100644 (file)
@@ -79,10 +79,6 @@ public:
         * FIXME: explain why we need this ? especially for y...
         */
        int iy() const;
-       /// set the row of the paragraph the cursor is in
-       void row(RowList::iterator r);
-       /// return the row of the paragraph this cursor is in
-       RowList::iterator row() const;
        /// set the stored next row
        void irow(RowList::iterator r);
        /**
@@ -124,8 +120,6 @@ private:
        int y_;
        /// the stored next-row y position
        int iy_;
-       /// the containing row
-       RowList::iterator row_;
        /// the containing row for the next line
        RowList::iterator irow_;
 };
index 6799685caf4d0baf867b5a07ab1ba018603de3d8..7a2d17d98de0e28f578f3e0f390066c188c89560 100644 (file)
@@ -948,7 +948,7 @@ void LyXFunc::dispatch(FuncRequest const & ev, bool verbose)
                                        }
                                        goto exit_with_message;
                                case LFUN_DOWN:
-                                       if (boost::next(TEXT()->cursor.row()) != TEXT()->rows().end())
+                                       if (boost::next(TEXT()->cursorRow()) != TEXT()->rows().end())
                                                TEXT()->cursorDown(view());
                                        else
                                                TEXT()->cursorRight(view());
index 6aa0bdc3b16d96db610add00a78d9392bd20c518..0f53ba0b90d27597c7cccc5ac8f775fe8f4451d2 100644 (file)
@@ -235,7 +235,15 @@ private:
        /// only the top-level LyXText has this non-zero
        BufferView * bv_owner;
 
+       /// returns a pointer to a specified row.
+       RowList::iterator
+       getRow(ParagraphList::iterator pit, lyx::pos_type pos) const;
 public:
+       /// returns a pointer cursor row
+       RowList::iterator getRow(LyXCursor const & cursor) const;
+       /// convenience
+       RowList::iterator cursorRow() const;
+       
        /** returns a pointer to the row near the specified y-coordinate
          (relative to the whole text). y is set to the real beginning
          of this row
index 718a1f7ac9900995c7a092f31eb37c66e1c4dc63..500c2293fc747793eb87fde2a73947670317a266 100644 (file)
@@ -314,8 +314,8 @@ void RowPainter::paintSelection()
        int const endx = text_.selection.end.x();
        int const starty = text_.selection.start.y();
        int const endy = text_.selection.end.y();
-       RowList::iterator startrow = text_.selection.start.row();
-       RowList::iterator endrow = text_.selection.end.row();
+       RowList::iterator startrow = text_.getRow(text_.selection.start);
+       RowList::iterator endrow = text_.getRow(text_.selection.end);
 
        if (text_.bidi_same_direction) {
                int x;
index ead3e5231dbcbd196f6c822d0b4eb4be5305f38f..4396e1989459bf91eaa2ddc0f26d4b09b5df8591 100644 (file)
@@ -1503,17 +1503,17 @@ void LyXText::breakParagraph(ParagraphList & paragraphs, char keep_layout)
        // move one row up!
        // This touches only the screen-update. Otherwise we would may have
        // an empty row on the screen
-       if (cursor.pos() && cursor.row()->pos() == cursor.pos()
-           && !cursor.row()->par()->isNewline(cursor.pos() - 1))
+       if (cursor.pos() && cursorRow()->pos() == cursor.pos()
+           && !cursorRow()->par()->isNewline(cursor.pos() - 1))
        {
                cursorLeft(bv());
        }
 
-       int y = cursor.y() - cursor.row()->baseline();
+       int y = cursor.y() - cursorRow()->baseline();
 
        // Do not forget the special right address boxes
        if (layout->margintype == MARGIN_RIGHT_ADDRESS_BOX) {
-               RowList::iterator r = cursor.row();
+               RowList::iterator r = cursorRow();
                RowList::iterator beg = rows().begin();
 
                while (r != beg && boost::prior(r)->par() == r->par()) {
@@ -1524,12 +1524,12 @@ void LyXText::breakParagraph(ParagraphList & paragraphs, char keep_layout)
 
        postPaint(y);
 
-       removeParagraph(cursor.row());
+       removeParagraph(cursorRow());
 
        // set the dimensions of the cursor row
-       cursor.row()->fill(fill(cursor.row(), workWidth()));
+       cursorRow()->fill(fill(cursorRow(), workWidth()));
 
-       setHeightOfRow(cursor.row());
+       setHeightOfRow(cursorRow());
 
 #warning Trouble Point! (Lgb)
        // When ::breakParagraph is called from within an inset we must
@@ -1540,7 +1540,7 @@ void LyXText::breakParagraph(ParagraphList & paragraphs, char keep_layout)
        while (!next_par->empty() && next_par->isNewline(0))
                next_par->erase(0);
 
-       insertParagraph(next_par, boost::next(cursor.row()));
+       insertParagraph(next_par, boost::next(cursorRow()));
        updateCounters();
 
        // This check is necessary. Otherwise the new empty paragraph will
@@ -1550,8 +1550,8 @@ void LyXText::breakParagraph(ParagraphList & paragraphs, char keep_layout)
        else
                setCursor(cursor.par(), 0);
 
-       if (boost::next(cursor.row()) != rows().end())
-               breakAgain(boost::next(cursor.row()));
+       if (boost::next(cursorRow()) != rows().end())
+               breakAgain(boost::next(cursorRow()));
 
        need_break_row = rows().end();
 }
@@ -1575,8 +1575,8 @@ void LyXText::insertChar(char c)
        // When the free-spacing option is set for the current layout,
        // disable the double-space checking
 
-       bool const freeSpacing = cursor.row()->par()->layout()->free_spacing ||
-               cursor.row()->par()->isFreeSpacing();
+       bool const freeSpacing = cursorRow()->par()->layout()->free_spacing ||
+               cursorRow()->par()->isFreeSpacing();
 
        if (lyxrc.auto_number) {
                static string const number_operators = "+-/*";
@@ -1670,17 +1670,17 @@ void LyXText::insertChar(char c)
        }
 
        // the display inset stuff
-       if (cursor.row()->pos() < cursor.row()->par()->size()
-           && cursor.row()->par()->isInset(cursor.row()->pos())) {
-               Inset * inset = cursor.row()->par()->getInset(cursor.row()->pos());
+       if (cursorRow()->pos() < cursorRow()->par()->size()
+           && cursorRow()->par()->isInset(cursorRow()->pos())) {
+               Inset * inset = cursorRow()->par()->getInset(cursorRow()->pos());
                if (inset && (inset->display() || inset->needFullRow())) {
                        // force a new break
-                       cursor.row()->fill(-1); // to force a new break
+                       cursorRow()->fill(-1); // to force a new break
                }
        }
 
        // get the cursor row fist
-       RowList::iterator row = cursor.row();
+       RowList::iterator row = cursorRow();
        int y = cursor.y() - row->baseline();
        if (c != Paragraph::META_INSET) {
                // Here case LyXText::InsertInset  already insertet the character
@@ -1705,7 +1705,7 @@ void LyXText::insertChar(char c)
                || cursor.par()->isNewline(cursor.pos())
                || ((cursor.pos() + 1 < cursor.par()->size()) &&
                    cursor.par()->isInset(cursor.pos() + 1))
-               || cursor.row()->fill() == -1))
+               || cursorRow()->fill() == -1))
        {
                pos_type z = rowBreakPoint(*boost::prior(row));
 
@@ -2290,7 +2290,6 @@ void LyXText::deleteWordForward()
                cursorRight(bv());
        else {
                LyXCursor tmpcursor = cursor;
-               tmpcursor.row(0); // ??
                selection.set(true); // to avoid deletion
                cursorRightOneWord();
                setCursor(tmpcursor, tmpcursor.par(), tmpcursor.pos());
@@ -2311,7 +2310,6 @@ void LyXText::deleteWordBackward()
                cursorLeft(bv());
        else {
                LyXCursor tmpcursor = cursor;
-               tmpcursor.row(0); // ??
                selection.set(true); // to avoid deletion
                cursorLeftOneWord();
                setCursor(tmpcursor, tmpcursor.par(), tmpcursor.pos());
@@ -2333,7 +2331,6 @@ void LyXText::deleteLineForward()
                LyXCursor tmpcursor = cursor;
                // We can't store the row over a regular setCursor
                // so we set it to 0 and reset it afterwards.
-               tmpcursor.row(0); // ??
                selection.set(true); // to avoid deletion
                cursorEnd();
                setCursor(tmpcursor, tmpcursor.par(), tmpcursor.pos());
@@ -2397,8 +2394,8 @@ void LyXText::changeCase(LyXText::TextCase action)
                ++pos;
        }
 
-       if (to.row() != from.row())
-               postPaint(from.y() - from.row()->baseline());
+       if (getRow(to) != getRow(from))
+               postPaint(from.y() - getRow(from)->baseline());
 }
 
 
@@ -2480,10 +2477,10 @@ void LyXText::backspace()
                                cursorLeft(bv());
 
                                // the layout things can change the height of a row !
-                               int const tmpheight = cursor.row()->height();
-                               setHeightOfRow(cursor.row());
-                               if (cursor.row()->height() != tmpheight) {
-                                       postPaint(cursor.y() - cursor.row()->baseline());
+                               int const tmpheight = cursorRow()->height();
+                               setHeightOfRow(cursorRow());
+                               if (cursorRow()->height() != tmpheight) {
+                                       postPaint(cursor.y() - cursorRow()->baseline());
                                }
                                return;
                        }
@@ -2496,7 +2493,7 @@ void LyXText::backspace()
                }
 
                ParagraphList::iterator tmppit = cursor.par();
-               RowList::iterator tmprow = cursor.row();
+               RowList::iterator tmprow = cursorRow();
 
                // We used to do cursorLeftIntern() here, but it is
                // not a good idea since it triggers the auto-delete
@@ -2538,7 +2535,7 @@ void LyXText::backspace()
                                if (cursor.pos())
                                        cursor.pos(cursor.pos() - 1);
 
-                       postPaint(cursor.y() - cursor.row()->baseline());
+                       postPaint(cursor.y() - cursorRow()->baseline());
 
                        // remove the lost paragraph
                        // This one is not safe, since the paragraph that the tmprow and the
@@ -2549,7 +2546,7 @@ void LyXText::backspace()
                        //RemoveRow(tmprow);
 
                        // This rebuilds the rows.
-                       appendParagraph(cursor.row());
+                       appendParagraph(cursorRow());
                        updateCounters();
 
                        // the row may have changed, block, hfills etc.
@@ -2577,7 +2574,7 @@ void LyXText::backspace()
                        }
                }
 
-               RowList::iterator row = cursor.row();
+               RowList::iterator row = cursorRow();
                int y = cursor.y() - row->baseline();
                pos_type z;
                // remember that a space at the end of a row doesnt count
@@ -2756,6 +2753,42 @@ void LyXText::backspace()
 }
 
 
+RowList::iterator LyXText::cursorRow() const
+{
+       return getRow(cursor.par(), cursor.pos());
+}
+
+
+RowList::iterator LyXText::getRow(LyXCursor const & cur) const
+{
+       return getRow(cur.par(), cur.pos());
+}
+
+
+RowList::iterator
+LyXText::getRow(ParagraphList::iterator pit, pos_type pos) const
+{
+       if (rows().empty())
+               return rowlist_.end();
+
+       // find the first row of the specified paragraph
+       RowList::iterator rit = rowlist_.begin();
+       RowList::iterator end = rowlist_.end();
+       while (boost::next(rit) != end && rit->par() != pit) {
+               ++rit;
+       }
+
+       // now find the wanted row
+       while (rit->pos() < pos
+              && boost::next(rit) != end
+              && boost::next(rit)->par() == pit
+              && boost::next(rit)->pos() <= pos) {
+               ++rit;
+       }
+
+       return rit;
+}
+
 // returns pointer to a specified row
 RowList::iterator
 LyXText::getRow(ParagraphList::iterator pit, pos_type pos, int & y) const
index 94ce377a9f581d99c539ee41442d3ddc5b0a8c23..4fef3bdb4ee855d1e086b4be3cd94ef138dfb20a 100644 (file)
@@ -623,7 +623,7 @@ void LyXText::setFont(LyXFont const & font, bool toggleall)
 
 void LyXText::redoHeightOfParagraph()
 {
-       RowList::iterator tmprow = cursor.row();
+       RowList::iterator tmprow = cursorRow();
        int y = cursor.y() - tmprow->baseline();
 
        setHeightOfRow(tmprow);
@@ -643,7 +643,7 @@ void LyXText::redoHeightOfParagraph()
 
 void LyXText::redoDrawingOfParagraph(LyXCursor const & cur)
 {
-       RowList::iterator tmprow = cur.row();
+       RowList::iterator tmprow = getRow(cur);
 
        int y = cur.y() - tmprow->baseline();
        setHeightOfRow(tmprow);
@@ -665,7 +665,7 @@ void LyXText::redoDrawingOfParagraph(LyXCursor const & cur)
 void LyXText::redoParagraphs(LyXCursor const & cur,
                             ParagraphList::iterator endpit)
 {
-       RowList::iterator tmprit = cur.row();
+       RowList::iterator tmprit = getRow(cur);
        int y = cur.y() - tmprit->baseline();
 
        ParagraphList::iterator first_phys_pit;
@@ -849,7 +849,7 @@ void LyXText::clearSelection()
 
 void LyXText::cursorHome()
 {
-       setCursor(cursor.par(), cursor.row()->pos());
+       setCursor(cursor.par(), cursorRow()->pos());
 }
 
 
@@ -858,7 +858,7 @@ void LyXText::cursorEnd()
        if (cursor.par()->empty())
                return;
 
-       RowList::iterator rit = cursor.row();
+       RowList::iterator rit = cursorRow();
        RowList::iterator next_rit = boost::next(rit);
        ParagraphList::iterator pit = rit->par();
        pos_type last_pos = lastPos(*this, rit);
@@ -996,7 +996,7 @@ void LyXText::setParagraph(bool line_top, bool line_bottom,
 
        while (tmppit != boost::prior(selection.start.par())) {
                setCursor(tmppit, 0);
-               postPaint(cursor.y() - cursor.row()->baseline());
+               postPaint(cursor.y() - cursorRow()->baseline());
 
                ParagraphList::iterator pit = cursor.par();
                ParagraphParameters & params = pit->params();
@@ -1567,7 +1567,6 @@ void LyXText::checkParagraph(ParagraphList::iterator pit, pos_type pos)
        // check the special right address boxes
        if (pit->layout()->margintype == MARGIN_RIGHT_ADDRESS_BOX) {
                tmpcursor.par(pit);
-               tmpcursor.row(row);
                tmpcursor.y(y);
                tmpcursor.x(0);
                tmpcursor.x_fix(0);
@@ -1670,7 +1669,6 @@ void LyXText::setCursor(LyXCursor & cur, ParagraphList::iterator pit,
                }
        }
 
-       cur.row(row);
        // y is now the beginning of the cursor row
        y += row->baseline();
        // y is now the cursor baseline
@@ -1827,7 +1825,7 @@ void LyXText::setCurrentFont()
                        --pos;
                else // potentional bug... BUG (Lgb)
                        if (pit->isSeparator(pos)) {
-                               if (pos > cursor.row()->pos() &&
+                               if (pos > cursorRow()->pos() &&
                                    bidi_level(pos) % 2 ==
                                    bidi_level(pos - 1) % 2)
                                        --pos;
@@ -1989,7 +1987,7 @@ namespace {
         */
        bool beforeFullRowInset(LyXText & lt, LyXCursor const & cur)
        {
-               RowList::iterator row = cur.row();
+               RowList::iterator row = lt.getRow(cur);
                if (boost::next(row) == lt.rows().end())
                        return false;
 
@@ -2022,7 +2020,6 @@ void LyXText::setCursorFromCoordinates(LyXCursor & cur, int x, int y)
        cur.pos(row->pos() + column);
        cur.x(x);
        cur.y(y + row->baseline());
-       cur.row(row);
 
        if (beforeFullRowInset(*this, cur)) {
                pos_type const last = lastPrintablePos(*this, row);
@@ -2078,7 +2075,7 @@ void LyXText::cursorUp(bool selecting)
 {
 #if 1
        int x = cursor.x_fix();
-       int y = cursor.y() - cursor.row()->baseline() - 1;
+       int y = cursor.y() - cursorRow()->baseline() - 1;
        setCursorFromCoordinates(x, y);
        if (!selecting) {
                int topy = top_y();
@@ -2093,7 +2090,7 @@ void LyXText::cursorUp(bool selecting)
        }
 #else
        setCursorFromCoordinates(bv(), cursor.x_fix(),
-                                cursor.y() - cursor.row()->baseline() - 1);
+                                cursor.y() - cursorRow()->baseline() - 1);
 #endif
 }
 
@@ -2102,10 +2099,10 @@ void LyXText::cursorDown(bool selecting)
 {
 #if 1
        int x = cursor.x_fix();
-       int y = cursor.y() - cursor.row()->baseline() +
-               cursor.row()->height() + 1;
+       int y = cursor.y() - cursorRow()->baseline() +
+               cursorRow()->height() + 1;
        setCursorFromCoordinates(x, y);
-       if (!selecting && cursor.row() == cursor.irow()) {
+       if (!selecting && cursorRow() == cursor.irow()) {
                int topy = top_y();
                int y1 = cursor.iy() - topy;
                int y2 = y1;
@@ -2118,8 +2115,8 @@ void LyXText::cursorDown(bool selecting)
        }
 #else
        setCursorFromCoordinates(bv(), cursor.x_fix(),
-                                cursor.y() - cursor.row()->baseline()
-                                + cursor.row()->height() + 1);
+                                cursor.y() - cursorRow()->baseline()
+                                + cursorRow()->height() + 1);
 #endif
 }
 
@@ -2269,10 +2266,10 @@ bool LyXText::deleteEmptyParagraphMechanism(LyXCursor const & old_cursor)
                        selection.cursor.par()  == old_cursor.par()
                        && selection.cursor.pos() == old_cursor.pos());
 
-               if (old_cursor.row() != rows().begin()) {
+               if (getRow(old_cursor) != rows().begin()) {
                        RowList::iterator
-                               prevrow = boost::prior(old_cursor.row());
-                       const_cast<LyXText *>(this)->postPaint(old_cursor.y() - old_cursor.row()->baseline() - prevrow->height());
+                               prevrow = boost::prior(getRow(old_cursor));
+                       postPaint(old_cursor.y() - getRow(old_cursor)->baseline() - prevrow->height());
                        tmpcursor = cursor;
                        cursor = old_cursor; // that undo can restore the right cursor position
                        #warning FIXME. --end() iterator is usable here
@@ -2287,7 +2284,7 @@ bool LyXText::deleteEmptyParagraphMechanism(LyXCursor const & old_cursor)
                        cursor = tmpcursor;
 
                        // delete old row
-                       removeRow(old_cursor.row());
+                       removeRow(getRow(old_cursor));
                        // delete old par
                        ownerParagraphs().erase(old_cursor.par());
 
@@ -2302,9 +2299,8 @@ bool LyXText::deleteEmptyParagraphMechanism(LyXCursor const & old_cursor)
                        }
                        setHeightOfRow(prevrow);
                } else {
-                       RowList::iterator nextrow = boost::next(old_cursor.row());
-                       const_cast<LyXText *>(this)->postPaint(
-                               old_cursor.y() - old_cursor.row()->baseline());
+                       RowList::iterator nextrow = boost::next(getRow(old_cursor));
+                       postPaint(old_cursor.y() - getRow(old_cursor)->baseline());
 
                        tmpcursor = cursor;
                        cursor = old_cursor; // that undo can restore the right cursor position
@@ -2319,7 +2315,7 @@ bool LyXText::deleteEmptyParagraphMechanism(LyXCursor const & old_cursor)
                        cursor = tmpcursor;
 
                        // delete old row
-                       removeRow(old_cursor.row());
+                       removeRow(getRow(old_cursor));
                        // delete old par
                        ownerParagraphs().erase(old_cursor.par());
 
@@ -2394,7 +2390,7 @@ void LyXText::postPaint(int start_y)
        // We are an inset's lyxtext. Tell the top-level lyxtext
        // it needs to update the row we're in.
        LyXText * t = bv()->text;
-       t->postRowPaint(t->cursor.row(), t->cursor.y() - t->cursor.row()->baseline());
+       t->postRowPaint(t->cursorRow(), t->cursor.y() - t->cursorRow()->baseline());
 }
 
 
@@ -2421,7 +2417,7 @@ void LyXText::postRowPaint(RowList::iterator rit, int start_y)
        // We are an inset's lyxtext. Tell the top-level lyxtext
        // it needs to update the row we're in.
        LyXText * t = bv()->text;
-       t->postRowPaint(t->cursor.row(), t->cursor.y() - t->cursor.row()->baseline());
+       t->postRowPaint(t->cursorRow(), t->cursor.y() - t->cursorRow()->baseline());
 }
 
 
index 8ded18b4d1ba5ae66e988253ddcbd4e0c1717398..c1117c6f95ccc4769112793faae0f3149a774786 100644 (file)
@@ -243,7 +243,7 @@ void LyXText::cursorPrevious()
 {
        int y = top_y();
 
-       if (cursor.row() == rows().begin()) {
+       if (cursorRow() == rows().begin()) {
                if (y > 0) {
                        int new_y = bv()->text->top_y() - bv()->workHeight();
                        bv()->screen().draw(bv()->text, bv(), new_y < 0 ? 0 : new_y);
@@ -252,13 +252,13 @@ void LyXText::cursorPrevious()
                return;
        }
 
-       RowList::iterator cursorrow = cursor.row();
+       RowList::iterator cursorrow = cursorRow();
 
        setCursorFromCoordinates(cursor.x_fix(), y);
        finishUndo();
 
        int new_y;
-       if (cursorrow == bv()->text->cursor.row()) {
+       if (cursorrow == bv()->text->cursorRow()) {
                // we have a row which is taller than the workarea. The
                // simplest solution is to move to the previous row instead.
                cursorUp(true);
@@ -272,20 +272,20 @@ void LyXText::cursorPrevious()
                if (inset_owner) {
                        new_y = bv()->text->cursor.iy()
                                + bv()->theLockingInset()->insetInInsetY() + y
-                               + cursor.row()->height()
+                               + cursorRow()->height()
                                - bv()->workHeight() + 1;
                } else {
                        new_y = cursor.y()
-                               - cursor.row()->baseline()
-                               + cursor.row()->height()
+                               - cursorRow()->baseline()
+                               + cursorRow()->height()
                                - bv()->workHeight() + 1;
                }
        }
        bv()->screen().draw(bv()->text, bv(), new_y < 0 ? 0 : new_y);
-       if (cursor.row() != rows().begin()) {
+       if (cursorRow() != rows().begin()) {
                LyXCursor cur;
-               setCursor(cur, boost::prior(cursor.row())->par(),
-                         boost::prior(cursor.row())->pos(), false);
+               setCursor(cur, boost::prior(cursorRow())->par(),
+                         boost::prior(cursorRow())->pos(), false);
                if (cur.y() > top_y()) {
                        cursorUp(true);
                }
@@ -298,9 +298,9 @@ void LyXText::cursorNext()
 {
        int topy = top_y();
 
-       if (boost::next(cursor.row()) == rows().end()) {
-               int y = cursor.y() - cursor.row()->baseline() +
-                       cursor.row()->height();
+       if (boost::next(cursorRow()) == rows().end()) {
+               int y = cursor.y() - cursorRow()->baseline() +
+                       cursorRow()->height();
                if (y > topy + bv()->workHeight()) {
                        bv()->screen().draw(bv()->text, bv(), bv()->text->top_y() + bv()->workHeight());
                        bv()->updateScrollbar();
@@ -317,13 +317,13 @@ void LyXText::cursorNext()
 
        getRowNearY(y);
 
-       RowList::iterator cursorrow = cursor.row();
+       RowList::iterator cursorrow = cursorRow();
        setCursorFromCoordinates(cursor.x_fix(), y);
        // + bv->workHeight());
        finishUndo();
 
        int new_y;
-       if (cursorrow == bv()->text->cursor.row()) {
+       if (cursorrow == bv()->text->cursorRow()) {
                // we have a row which is taller than the workarea. The
                // simplest solution is to move to the next row instead.
                cursorDown(true);
@@ -337,14 +337,14 @@ void LyXText::cursorNext()
                if (inset_owner) {
                        new_y = bv()->text->cursor.iy()
                                + bv()->theLockingInset()->insetInInsetY()
-                               + y - cursor.row()->baseline();
+                               + y - cursorRow()->baseline();
                } else {
-                       new_y =  cursor.y() - cursor.row()->baseline();
+                       new_y =  cursor.y() - cursorRow()->baseline();
                }
        }
        bv()->screen().draw(bv()->text, bv(), new_y);
 
-       RowList::iterator next_row = boost::next(cursor.row());
+       RowList::iterator next_row = boost::next(cursorRow());
        if (next_row != rows().end()) {
                LyXCursor cur;
                setCursor(cur, next_row->par(), next_row->pos(), false);
@@ -1311,7 +1311,7 @@ Inset::RESULT LyXText::dispatch(FuncRequest const & cmd)
                        break;
                }
 
-               RowList::iterator cursorrow = bv->text->cursor.row();
+               RowList::iterator cursorrow = bv->text->cursorRow();
                bv->text->setCursorFromCoordinates(cmd.x, cmd.y + bv->text->top_y());
        #if 0
                // sorry for this but I have a strange error that the y value jumps at
@@ -1323,7 +1323,7 @@ Inset::RESULT LyXText::dispatch(FuncRequest const & cmd)
                               << bv->text->cursor.y() << endl;
        #endif
                // This is to allow jumping over large insets
-               if (cursorrow == bv->text->cursor.row()) {
+               if (cursorrow == bv->text->cursorRow()) {
                        if (cmd.y >= bv->workHeight())
                                bv->text->cursorDown(false);
                        else if (cmd.y < 0)