]> git.lyx.org Git - features.git/commitdiff
remove Last when NEW_INSETS is defined
authorLars Gullik Bjønnes <larsbj@gullik.org>
Sun, 11 Mar 2001 00:21:13 +0000 (00:21 +0000)
committerLars Gullik Bjønnes <larsbj@gullik.org>
Sun, 11 Mar 2001 00:21:13 +0000 (00:21 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@1730 a592a061-630c-0410-9148-cb99ea01b6c8

15 files changed:
src/BufferView2.C
src/BufferView_pimpl.C
src/ChangeLog
src/CutAndPaste.C
src/ShareContainer.h
src/frontends/Dialogs.h
src/insets/insetbib.C
src/insets/insettext.C
src/lyx_cb.C
src/lyxfind.C
src/lyxparagraph.h
src/paragraph.C
src/tabular.C
src/text.C
src/text2.C

index 710b034ec3102f103f76bc9746fdc94056a45983..9c26846fb469c97e47d636532f000f2361c22a8c 100644 (file)
@@ -120,6 +120,10 @@ bool BufferView::removeAutoInsets()
                }
                par = par->next_;
        }
+
+       // avoid forbidden cursor positions caused by error removing
+       if (tmpcursor.pos() > tmpcursor.par()->Last())
+               tmpcursor.pos(tmpcursor.par()->Last());
 #else
        while (par) {
                // this has to be done before the delete
@@ -132,11 +136,11 @@ bool BufferView::removeAutoInsets()
                }
                par = par->next();
        }
-#endif
 
        // avoid forbidden cursor positions caused by error removing
-       if (tmpcursor.pos() > tmpcursor.par()->Last())
-               tmpcursor.pos(tmpcursor.par()->Last());
+       if (tmpcursor.pos() > tmpcursor.par()->size())
+               tmpcursor.pos(tmpcursor.par()->size());
+#endif
        text->SetCursorIntern(this, tmpcursor.par(), tmpcursor.pos());
 
        return a;
@@ -231,8 +235,12 @@ bool BufferView::insertInset(Inset * inset, string const & lout,
                update(text, BufferView::SELECT|BufferView::FITCUR);
                text->BreakParagraph(this);
                update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
-               
+
+#ifndef NEW_INSETS
                if (text->cursor.par()->Last()) {
+#else
+               if (text->cursor.par()->size()) {
+#endif
                        text->CursorLeft(this);
                        
                        text->BreakParagraph(this);
index 336870a8a22252ca70fa201453bb35b8c869c982..0dcb80950531a52493098736479926a1d7d4590c 100644 (file)
@@ -809,6 +809,7 @@ void BufferView::Pimpl::workAreaButtonRelease(int x, int y,
                return;
        }
 
+#ifndef NEW_INSETS
        // check whether we want to open a float
        if (bv_->text) {
                bool hit = false;
@@ -818,7 +819,6 @@ void BufferView::Pimpl::workAreaButtonRelease(int x, int y,
                        c = bv_->text->cursor.par()->
                                GetChar(bv_->text->cursor.pos());
                }
-#ifndef NEW_INSETS
               if(!bv_->text->selection)
                if (c == LyXParagraph::META_FOOTNOTE
                    || c == LyXParagraph::META_MARGIN
@@ -829,11 +829,9 @@ void BufferView::Pimpl::workAreaButtonRelease(int x, int y,
                     || c == LyXParagraph::META_ALGORITHM){
                        hit = true;
                } else
-#endif
                        if (bv_->text->cursor.pos() - 1 >= 0) {
                        c = bv_->text->cursor.par()->
                                GetChar(bv_->text->cursor.pos() - 1);
-#ifndef NEW_INSETS
                        if (c == LyXParagraph::META_FOOTNOTE
                            || c == LyXParagraph::META_MARGIN
                            || c == LyXParagraph::META_FIG
@@ -845,18 +843,13 @@ void BufferView::Pimpl::workAreaButtonRelease(int x, int y,
                                bv_->text->CursorLeft(bv_);
                                hit = true;
                        }
-#endif
                }
                if (hit == true) {
-#ifndef NEW_INSETS
                        bv_->toggleFloat();
-#endif
                        selection_possible = false;
                        return;
                }
        }
-
-#ifndef NEW_INSETS
        // Do we want to close a float? (click on the float-label)
        if (bv_->text->cursor.row()->par()->footnoteflag == 
            LyXParagraph::OPEN_FOOTNOTE
@@ -882,8 +875,26 @@ void BufferView::Pimpl::workAreaButtonRelease(int x, int y,
                        return;
                }
        }
+#else
+       // check whether we want to open a float
+       if (bv_->text) {
+               bool hit = false;
+               char c = ' ';
+               if (bv_->text->cursor.pos() <
+                   bv_->text->cursor.par()->size()) {
+                       c = bv_->text->cursor.par()->
+                               GetChar(bv_->text->cursor.pos());
+               }
+                       if (bv_->text->cursor.pos() - 1 >= 0) {
+                       c = bv_->text->cursor.par()->
+                               GetChar(bv_->text->cursor.pos() - 1);
+               }
+               if (hit == true) {
+                       selection_possible = false;
+                       return;
+               }
+       }
 #endif
-
        // Maybe we want to edit a bibitem ale970302
        if (bv_->text->cursor.par()->bibkey && x < 20 + 
            bibitemMaxWidth(bv_, textclasslist.
@@ -912,7 +923,11 @@ Inset * BufferView::Pimpl::checkInsetHit(LyXText * text, int & x, int & y,
        LyXCursor cursor;
        text->SetCursorFromCoordinates(bv_, cursor, x, y_tmp);
 
+#ifndef NEW_INSETS
        if (cursor.pos() < cursor.par()->Last()
+#else
+       if (cursor.pos() < cursor.par()->size()
+#endif
            && cursor.par()->GetChar(cursor.pos()) == LyXParagraph::META_INSET
            && cursor.par()->GetInset(cursor.pos())
            && cursor.par()->GetInset(cursor.pos())->Editable()) {
@@ -1225,8 +1240,13 @@ void BufferView::Pimpl::restorePosition(unsigned int i)
        if (!par)
                return;
 
+#ifndef NEW_INSETS
        bv_->text->SetCursor(bv_, par,
                             min(par->Last(), saved_positions[i].par_pos));
+#else
+       bv_->text->SetCursor(bv_, par,
+                            min(par->size(), saved_positions[i].par_pos));
+#endif
        update(bv_->text, BufferView::SELECT|BufferView::FITCUR);
        if (i > 0)
                owner_->getMiniBuffer()->Set(_("Moved to bookmark ") + tostr(i));
@@ -1811,7 +1831,11 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
                update(TEXT(bv_), BufferView::SELECT|BufferView::FITCUR);
                if (is_rtl)
                        TEXT(bv_)->CursorLeft(bv_, false);
+#ifndef NEW_INSETS
                if (TEXT(bv_)->cursor.pos() < TEXT(bv_)->cursor.par()->Last()
+#else
+               if (TEXT(bv_)->cursor.pos() < TEXT(bv_)->cursor.par()->size()
+#endif
                    && TEXT(bv_)->cursor.par()->GetChar(TEXT(bv_)->cursor.pos())
                    == LyXParagraph::META_INSET
                    && TEXT(bv_)->cursor.par()->GetInset(TEXT(bv_)->cursor.pos())
@@ -1849,7 +1873,11 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
                if (!is_rtl)
                        TEXT(bv_)->CursorLeft(bv_, false);
                if ((is_rtl || cur != TEXT(bv_)->cursor) && // only if really moved!
+#ifndef NEW_INSETS
                    TEXT(bv_)->cursor.pos() < TEXT(bv_)->cursor.par()->Last() &&
+#else
+                   TEXT(bv_)->cursor.pos() < TEXT(bv_)->cursor.par()->size() &&
+#endif
                    (TEXT(bv_)->cursor.par()->GetChar(TEXT(bv_)->cursor.pos()) ==
                     LyXParagraph::META_INSET) &&
                    TEXT(bv_)->cursor.par()->GetInset(TEXT(bv_)->cursor.pos()) &&
@@ -2220,7 +2248,11 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
                LyXCursor cursor = TEXT(bv_)->cursor;
 
                if (!TEXT(bv_)->selection) {
+#ifndef NEW_INSETS
                        if (cursor.pos() == cursor.par()->Last()) {
+#else
+                       if (cursor.pos() == cursor.par()->size()) {
+#endif
                                TEXT(bv_)->CursorRight(bv_);
                                cursor = TEXT(bv_)->cursor;
                                if (cursor.pos() == 0
index 61217f9ed73dd71ba4e5b5d111a7ee3f8d9cfa6d..2f08f88db427e0bb253cfd9653d3adedaaea6fb0 100644 (file)
@@ -1,3 +1,9 @@
+2001-03-11  Lars Gullik Bjønnes  <larsbj@trylle.birdstep.com>
+
+       * paragraph.C (Last): remove when NEW_INSETS is defined.
+
+       * other file: changes because of the above.
+
 2001-03-09  Lars Gullik Bjønnes  <larsbj@trylle.birdstep.com>
 
        * lyxparagraph.h: rename next to next_, previous to previous_,
index 75e89105f666cfccccdb6a7b2faea81777cc107b..6e0c7c117b14acb69750241b878dcebd6f4912c7 100644 (file)
@@ -75,8 +75,13 @@ void DeleteBuffer()
 bool CutAndPaste::cutSelection(LyXParagraph * startpar, LyXParagraph ** endpar,
                               int start, int & end, char tc, bool doclear)
 {
+#ifndef NEW_INSETS
     if (!startpar || (start > startpar->Last()))
        return false;
+#else
+    if (!startpar || (start > startpar->size()))
+       return false;
+#endif
 
     DeleteBuffer();
 
@@ -93,13 +98,22 @@ bool CutAndPaste::cutSelection(LyXParagraph * startpar, LyXParagraph ** endpar,
        // only within one paragraph
        buf = new LyXParagraph;
        LyXParagraph::size_type i = start;
+#ifndef NEW_INSETS
        if (end > startpar->Last())
            end = startpar->Last();
+#else
+       if (end > startpar->size())
+           end = startpar->size();
+#endif
        for (; i < end; ++i) {
            startpar->CopyIntoMinibuffer(*current_view->buffer(), start);
            startpar->Erase(start);
 
+#ifndef NEW_INSETS
            buf->InsertFromMinibuffer(buf->Last());
+#else
+           buf->InsertFromMinibuffer(buf->size());
+#endif
        }
        end = start-1;
     } else {
@@ -151,10 +165,11 @@ bool CutAndPaste::cutSelection(LyXParagraph * startpar, LyXParagraph ** endpar,
            startpar->next()->StripLeadingSpaces(textclass);
 #ifndef NEW_INSETS
        if (startpar->FirstPhysicalPar()->HasSameLayout(startpar->next()) ||
+           !startpar->next()->Last()) {
 #else
        if (startpar->HasSameLayout(startpar->next()) ||
+           !startpar->next()->size()) {
 #endif
-           !startpar->next()->Last()) {
 #ifndef NEW_INSETS
            startpar->ParFromPos(start)->PasteParagraph(current_view->buffer()->params);
 #else
@@ -170,8 +185,13 @@ bool CutAndPaste::cutSelection(LyXParagraph * startpar, LyXParagraph ** endpar,
 bool CutAndPaste::copySelection(LyXParagraph * startpar, LyXParagraph * endpar,
                                int start, int end, char tc)
 {
+#ifndef NEW_INSETS
     if (!startpar || (start > startpar->Last()))
        return false;
+#else
+    if (!startpar || (start > startpar->size()))
+       return false;
+#endif
 
     DeleteBuffer();
 
@@ -188,11 +208,20 @@ bool CutAndPaste::copySelection(LyXParagraph * startpar, LyXParagraph * endpar,
        // only within one paragraph
        buf = new LyXParagraph;
        LyXParagraph::size_type i = start;
+#ifndef NEW_INSETS
        if (end > startpar->Last())
            end = startpar->Last();
+#else
+       if (end > startpar->size())
+           end = startpar->size();
+#endif
        for (; i < end; ++i) {
            startpar->CopyIntoMinibuffer(*current_view->buffer(), i);
+#ifndef NEW_INSETS
            buf->InsertFromMinibuffer(buf->Last());
+#else
+           buf->InsertFromMinibuffer(buf->size());
+#endif
        }
     } else {
        // copy more than one paragraph
@@ -265,9 +294,14 @@ bool CutAndPaste::pasteSelection(LyXParagraph ** par, LyXParagraph ** endpar,
     if (!checkPastePossible(*par, pos))
        return false;
 
+#ifndef NEW_INSETS
     if (pos > (*par)->Last())
        pos = (*par)->Last();
-
+#else
+    if (pos > (*par)->size())
+       pos = (*par)->size();
+#endif
+    
     LyXParagraph * tmpbuf;
     LyXParagraph * tmppar = *par;
     int tmppos = pos;
@@ -348,6 +382,7 @@ bool CutAndPaste::pasteSelection(LyXParagraph ** par, LyXParagraph ** endpar,
        
        bool paste_the_end = false;
        
+#ifndef NEW_INSETS
        // open the paragraph for inserting the buf
        // if necessary
        if (((*par)->Last() > pos) || !(*par)->next()) {
@@ -355,9 +390,7 @@ bool CutAndPaste::pasteSelection(LyXParagraph ** par, LyXParagraph ** endpar,
                                               pos);
            paste_the_end = true;
        }
-       
        // set the end for redoing later
-#ifndef NEW_INSETS
        *endpar = (*par)->ParFromPos(pos)->next_->next();
        
        // paste it!
@@ -373,7 +406,34 @@ bool CutAndPaste::pasteSelection(LyXParagraph ** par, LyXParagraph ** endpar,
            lastbuffer = *par;
        
        (*par)->ParFromPos(pos)->PasteParagraph(current_view->buffer()->params);
+       // store the new cursor position
+       *par = lastbuffer;
+       pos = lastbuffer->Last();
+       // maybe some pasting
+       if (lastbuffer->next() && paste_the_end) {
+           if (lastbuffer->next()->HasSameLayout(lastbuffer)) {
+               lastbuffer->ParFromPos(lastbuffer->Last())->PasteParagraph(current_view->buffer()->params);
+           } else if (!lastbuffer->next()->Last()) {
+               lastbuffer->next()->MakeSameLayout(lastbuffer);
+               lastbuffer->ParFromPos(lastbuffer->Last())->PasteParagraph(current_view->buffer()->params);
+           } else if (!lastbuffer->Last()) {
+               lastbuffer->MakeSameLayout(lastbuffer->next_);
+               lastbuffer->ParFromPos(lastbuffer->Last())->PasteParagraph(current_view->buffer()->params);
+           } else
+               lastbuffer->next()->StripLeadingSpaces(tc);
+       }
+       // restore the simple cut buffer
+       buf = simple_cut_clone;
+    }
 #else
+       // open the paragraph for inserting the buf
+       // if necessary
+       if (((*par)->size() > pos) || !(*par)->next()) {
+           (*par)->BreakParagraphConservative(current_view->buffer()->params,
+                                              pos);
+           paste_the_end = true;
+       }
+       // set the end for redoing later
        *endpar = (*par)->next()->next();
        
        // paste it!
@@ -387,38 +447,26 @@ bool CutAndPaste::pasteSelection(LyXParagraph ** par, LyXParagraph ** endpar,
            lastbuffer = *par;
        
        (*par)->PasteParagraph(current_view->buffer()->params);
-#endif
        // store the new cursor position
        *par = lastbuffer;
-       pos = lastbuffer->Last();
-       
+       pos = lastbuffer->size();
        // maybe some pasting
        if (lastbuffer->next() && paste_the_end) {
-#ifndef NEW_INSETS
-           if (lastbuffer->next()->HasSameLayout(lastbuffer)) {
-               lastbuffer->ParFromPos(lastbuffer->Last())->PasteParagraph(current_view->buffer()->params);
-           } else if (!lastbuffer->next()->Last()) {
-               lastbuffer->next()->MakeSameLayout(lastbuffer);
-               lastbuffer->ParFromPos(lastbuffer->Last())->PasteParagraph(current_view->buffer()->params);
-           } else if (!lastbuffer->Last()) {
-               lastbuffer->MakeSameLayout(lastbuffer->next_);
-               lastbuffer->ParFromPos(lastbuffer->Last())->PasteParagraph(current_view->buffer()->params);
-#else
            if (lastbuffer->next()->HasSameLayout(lastbuffer)) {
                lastbuffer->PasteParagraph(current_view->buffer()->params);
-           } else if (!lastbuffer->next()->Last()) {
+           } else if (!lastbuffer->next()->size()) {
                lastbuffer->next()->MakeSameLayout(lastbuffer);
                lastbuffer->PasteParagraph(current_view->buffer()->params);
-           } else if (!lastbuffer->Last()) {
+           } else if (!lastbuffer->size()) {
                lastbuffer->MakeSameLayout(lastbuffer->next());
                lastbuffer->PasteParagraph(current_view->buffer()->params);
-#endif
            } else
                lastbuffer->next()->StripLeadingSpaces(tc);
        }
        // restore the simple cut buffer
        buf = simple_cut_clone;
     }
+#endif
 
     return true;
 }
index 2454e97f7a3235f428b62a85f4517fe9efb1f1ff..570f4110724b8e0806db21b4099d1ef3c2b57a1d 100644 (file)
@@ -21,18 +21,9 @@ public:
        value_type
        get(Share const & ps) const {
                // First see if we already have this ps in the container
-#if 0
-               Params::iterator it = params.begin();
-               Params::iterator end = params.end();
-               for (; it != end; ++it) {
-                       if (ps == *(*it).get())
-                               break;
-               }
-#else
                Params::iterator it = std::find_if(params.begin(),
-                                             params.end(),
-                                             isEqual(ps));
-#endif
+                                                  params.end(),
+                                                  isEqual(ps));
                value_type tmp;
                if (it == params.end()) {
                        // ok we don't have it so we should
@@ -43,10 +34,13 @@ public:
                        // some (one) unique elemements some times
                        // but we should gain a lot in speed.
                        clean();
-                       std::sort(params.rbegin(), params.rend(), comp());
+                       //std::sort(params.rbegin(), params.rend(), comp());
                } else {
                        // yes we have it already
                        tmp = *it;
+                       // move it forward
+                       if (it != params.begin())
+                               swap(*it, *(it - 1));
                }
                return tmp;
        }
@@ -61,19 +55,19 @@ private:
                Share const & p_;
        };
        ///
-       struct comp {
-               int operator()(value_type const & p1,
-                              value_type const & p2) const {
-                       return p1.use_count() < p2.use_count();
-               }
-       };
+       //struct comp {
+       //      int operator()(value_type const & p1,
+       //                     value_type const & p2) const {
+       //              return p1.use_count() < p2.use_count();
+       //      }
+       //};
        ///
        struct isUnique {
                bool operator()(value_type const & p) const {
                        return p.unique();
                }
        };
-
+       
        ///
        void clean() const {
                // Remove all unique items. (i.e. entries that only
index 472e959c8bcc5ce938e4dfad22d17d66f6957bf5..734976425bf89b6243568c297974c7fcd57ee658 100644 (file)
@@ -38,8 +38,6 @@ class InsetInfo;
 class InsetTabular;
 class InsetCommand;
 
-using std::vector;
-
 #ifdef SIGC_CXX_NAMESPACES
 using SigC::Signal0;
 using SigC::Signal1;
@@ -83,7 +81,7 @@ public:
           Put into some sort of alphabetical order */
        //@{
        /// Do we really have to push this?
-       Signal1<void, vector<string> const &> SetDocumentClassChoice;
+       Signal1<void, std::vector<string> const &> SetDocumentClassChoice;
        /// show the key and label of a bibliography entry
        Signal1<void, InsetCommand *> showBibitem;
        /// show the bibtex dialog
@@ -159,7 +157,7 @@ public:
        //@}
 private:
        ///
-       vector<DialogBase *> dialogs_;
+       std::vector<DialogBase *> dialogs_;
 };
 
 #endif
index 7f396772fd2e293ea7b99fb64bc7dc357929c991..3696dbbdf2c0b089401e30ef4d06f6e08d6c1b10 100644 (file)
@@ -290,7 +290,7 @@ string const bibitemWidest(Buffer const * buffer)
                                bkey = par->bibkey;
                        }
                }
-#ifndef NEW_INSETS#
+#ifndef NEW_INSETS
                par = par->next_;
 #else
                par = par->next();
index 9d414218ba572794709d44d5f915690177084739..5de207e79dc7ddb1f8b62ccf6ffa9b2cf469d801 100644 (file)
@@ -549,7 +549,7 @@ void InsetText::Edit(BufferView * bv, int x, int y, unsigned int button)
 #ifndef NEW_INSETS
     if (par->Last() == 0 && !par->next_) {
 #else#
-    if (par->Last() == 0 && !par->next()) {
+    if (par->size() == 0 && !par->next()) {
 #endif
        LyXFont font(LyXFont::ALL_IGNORE);
        font.setLanguage(bv->getParentLanguage(this));
@@ -1144,7 +1144,7 @@ InsetText::LocalDispatch(BufferView * bv,
 #ifndef NEW_INSETS
     if (par->Last() == 0 && !par->next_) {
 #else
-    if (par->Last() == 0 && !par->next()) {
+    if (par->size() == 0 && !par->next()) {
 #endif
        LyXFont font(LyXFont::ALL_IGNORE);
        font.setLanguage(bv->getParentLanguage(this));
@@ -1325,7 +1325,7 @@ InsetText::moveRightIntern(BufferView * bv, bool behind,
 #ifndef NEW_INSETS
     if (!cpar(bv)->next_ && (cpos(bv) >= cpar(bv)->Last()))
 #else
-    if (!cpar(bv)->next() && (cpos(bv) >= cpar(bv)->Last()))
+    if (!cpar(bv)->next() && (cpos(bv) >= cpar(bv)->size()))
 #endif
        return FINISHED;
     if (activate_inset && checkAndActivateInset(bv, behind))
@@ -1788,10 +1788,11 @@ void InsetText::removeNewlines()
 {
 #ifndef NEW_INSETS
     for (LyXParagraph * p = par; p; p = p->next_) {
+       for (int i = 0; i < p->Last(); ++i) {
 #else
     for (LyXParagraph * p = par; p; p = p->next()) {
+       for (int i = 0; i < p->size(); ++i) {
 #endif
-       for (int i = 0; i < p->Last(); ++i) {
            if (p->GetChar(i) == LyXParagraph::META_NEWLINE)
                p->Erase(i);
        }
index 24561bb68fee2d27845112e67caff6cbf9f72fc9..48eeb992926cddeabebc11ad45a06585e67ed460 100644 (file)
@@ -618,8 +618,12 @@ void FigureApplyCB(FL_OBJECT *, long)
 
        current_view->text->BreakParagraph(current_view);
        current_view->update(current_view->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
-      
+
+#ifndef NEW_INSETS
        if (current_view->text->cursor.par()->Last()) {
+#else
+       if (current_view->text->cursor.par()->size()) {
+#endif
                current_view->text->CursorLeft(current_view);
         
                current_view->text->BreakParagraph(current_view);
index 27b9a6a38882301a77857e98e6231e54d073e638..70c9de2c51b98763d5052204542ee52b7ed22ac0 100644 (file)
@@ -118,7 +118,11 @@ bool IsStringInText(LyXParagraph * par, LyXParagraph::size_type pos,
    
        string::size_type size = str.length();
        LyXParagraph::size_type i = 0;
+#ifndef NEW_INSETS
        while (((pos + i) < par->Last())
+#else
+       while (((pos + i) < par->size())
+#endif
               && (string::size_type(i) < size)
               && (cs ? (str[i] == par->GetChar(pos + i))
                   : (toupper(str[i]) == toupper(par->GetChar(pos + i)))))
@@ -129,7 +133,11 @@ bool IsStringInText(LyXParagraph * par, LyXParagraph::size_type pos,
          // if necessary, check whether string matches word
          if (!mw || 
              (mw && ((pos <= 0 || !IsLetterCharOrDigit(par->GetChar(pos - 1)))
+#ifndef NEW_INSETS
                      && (pos + size >= par->Last()
+#else
+                     && (pos + size >= par->size()
+#endif
                          || !IsLetterCharOrDigit(par->GetChar(pos + size))))
               )
              )
@@ -148,7 +156,11 @@ bool SearchForward(BufferView * bv, string const & str,
        LyXParagraph::size_type pos = bv->text->cursor.pos();
    
        while (par && !IsStringInText(par, pos, str, cs, mw)) {
+#ifndef NEW_INSETS
                if (pos < par->Last() - 1)
+#else
+               if (pos < par->size() - 1)
+#endif
                        ++pos;
                else {
                        pos = 0;
@@ -181,7 +193,11 @@ bool SearchBackward(BufferView * bv, string const & str,
                        do {
                                par = par->previous();
                                if (par)
+#ifndef NEW_INSETS
                                        pos = par->Last() - 1;
+#else
+                                       pos = par->size() - 1;
+#endif
                        } while (par && pos < 0);
                }
        } while (par && !IsStringInText(par, pos, str, cs, mw));
index 77df7ac4e990723e5c8b5bdeedaebc6da338e28e..03876ed56b169a6abc9bfa40fccc27438b143138 100644 (file)
@@ -338,8 +338,10 @@ public:
                           LyXTextClass::LayoutList::size_type new_layout);
        ///
        int GetFirstCounter(int i) const;
+#ifndef NEW_INSETS
        ///
        size_type Last() const;
+#endif
        ///
        void Erase(size_type pos);
        /** the flag determines wether the layout should be copied
index b342451b87b11db1f2915f563372a7c5421bb6ea..653a298d2b874c2891dce0883f6f567c768efd7d 100644 (file)
@@ -124,14 +124,9 @@ void LyXParagraph::writeFile(Buffer const * buf, ostream & os,
                             char footflag, char dth) const
 {
 #ifndef NEW_INSETS
-       if (
-               footnoteflag != LyXParagraph::NO_FOOTNOTE ||
+       if (footnoteflag != LyXParagraph::NO_FOOTNOTE ||
            !previous_
-           || previous_->footnoteflag == LyXParagraph::NO_FOOTNOTE
-               ) {
-#endif
-               
-#ifndef NEW_INSETS
+           || previous_->footnoteflag == LyXParagraph::NO_FOOTNOTE) {
                // The beginning or the end of a footnote environment?
                if (footflag != footnoteflag) {
                        footflag = footnoteflag;
@@ -1075,20 +1070,17 @@ string const LyXParagraph::GetWord(LyXParagraph::size_type & lastpos) const
 }
 
 
-#ifdef NEW_INSETS
-#warning Remember to get rid of this one. (Lgb)
-#endif
+#ifndef NEW_INSETS
 LyXParagraph::size_type LyXParagraph::Last() const
 {
-#ifndef NEW_INSETS
        if (next_ && next_->footnoteflag == LyXParagraph::CLOSED_FOOTNOTE)
                return text.size() + NextAfterFootnote()->Last() + 1;
        // the 1 is the symbol
        // for the footnote
        else
-#endif
                return text.size();
 }
+#endif
 
 
 #ifndef NEW_INSETS
@@ -1496,7 +1488,7 @@ void LyXParagraph::BreakParagraph(BufferParams const & bparams,
                tmp->params.depth(firstpar->params.depth());
                tmp->params.noindent(firstpar->params.noindent());
 #else
-       if (Last() > pos || !Last() || flag == 2) {
+       if (size() > pos || !size() || flag == 2) {
                tmp->SetOnlyLayout(bparams, layout);
                tmp->params.align(params.align());
                tmp->SetLabelWidthString(params.labelWidthString());
@@ -1624,8 +1616,10 @@ int LyXParagraph::StripLeadingSpaces(LyXTextClassList::size_type tclass)
        int i = 0;
 #ifndef NEW_INSETS
        if (!IsDummy()) {
-#endif
                while (Last()
+#else
+               while (size()
+#endif
                       && (IsNewline(0) || IsLineSeparator(0))){
                        Erase(0);
                        ++i;
@@ -1727,7 +1721,7 @@ void LyXParagraph::BreakParagraphConservative(BufferParams const & bparams,
 
        // When can pos > Last()?
        // I guess pos == Last() is possible.
-       if (Last() > pos) {
+       if (size() > pos) {
                // copy everything behind the break-position to the new
                // paragraph
                size_type pos_end = text.size() - 1;
@@ -1757,23 +1751,24 @@ void LyXParagraph::PasteParagraph(BufferParams const & bparams)
 {
        // copy the next paragraph to this one
        LyXParagraph * the_next = next();
-#ifndef NEW_INSETS   
-       LyXParagraph * firstpar = FirstPhysicalPar();
-#endif
    
        // first the DTP-stuff
 #ifndef NEW_INSETS
+       LyXParagraph * firstpar = FirstPhysicalPar();
        firstpar->params.lineBottom(the_next->params.lineBottom());
        firstpar->params.spaceBottom(the_next->params.spaceBottom());
        firstpar->params.pagebreakBottom(the_next->params.pagebreakBottom());
+
+       size_type pos_end = the_next->text.size() - 1;
+       size_type pos_insert = Last();
 #else
        params.lineBottom(the_next->params.lineBottom());
        params.spaceBottom(the_next->params.spaceBottom());
        params.pagebreakBottom(the_next->params.pagebreakBottom());
-#endif
 
        size_type pos_end = the_next->text.size() - 1;
-       size_type pos_insert = Last();
+       size_type pos_insert = size();
+#endif
 
        // ok, now copy the paragraph
        size_type i, j;
@@ -2385,7 +2380,11 @@ LyXParagraph * LyXParagraph::TeXOnePar(Buffer const * buf,
        // Is this really needed ? (Dekel)
        // We do not need to use to change the font for the last paragraph
        // or for a command.
+#ifndef NEW_INSETS
        LyXFont font = getFont(bparams, Last() - 1);
+#else
+       LyXFont font = getFont(bparams, size() - 1);
+#endif
        bool is_command = textclasslist.Style(bparams.textclass,
                                              GetLayout()).isCommand();
        if (style.resfont.size() != font.size() && next_ && !is_command) {
@@ -2438,7 +2437,13 @@ LyXParagraph * LyXParagraph::TeXOnePar(Buffer const * buf,
        
        further_blank_line = false;
        if (params.lineBottom()) {
-               os << "\\lyxline{\\" << getFont(bparams, Last() - 1).latexSize() << '}';
+#ifndef NEW_INSETS
+               os << "\\lyxline{\\" << getFont(bparams,
+                                               Last() - 1).latexSize() << '}';
+#else
+               os << "\\lyxline{\\" << getFont(bparams,
+                                               size() - 1).latexSize() << '}';
+#endif
                further_blank_line = true;
        }
 
index 02cbc7544ad35ad5fe5ceb34bb6877d7202e9021..0dc9287192a0eeb709d7b78e355105843d0ed0b3 100644 (file)
@@ -1530,7 +1530,11 @@ void LyXTabular::OldFormatRead(LyXLex & lex, string const & fl)
     InsetText * inset = GetCellInset(cell);
     int row;
 
+#ifndef NEW_INSETS
     for (int i = 0; i < par->Last(); ++i) {
+#else
+    for (int i = 0; i < par->size(); ++i) {
+#endif
        if (par->IsNewline(i)) {
            ++cell;
            if (cell > GetNumberOfCells()) {
@@ -1559,7 +1563,11 @@ void LyXTabular::OldFormatRead(LyXLex & lex, string const & fl)
            }
        }
        par->CopyIntoMinibuffer(*owner_->BufferOwner(), i);
+#ifndef NEW_INSETS
        inset->par->InsertFromMinibuffer(inset->par->Last());
+#else
+       inset->par->InsertFromMinibuffer(inset->par->size());
+#endif
     }
     delete par;
     Reinit();
@@ -2162,7 +2170,11 @@ int LyXTabular::Latex(Buffer const * buf,
            InsetText * inset = GetCellInset(cell);
 
            bool rtl = inset->par->isRightToLeftPar(buf->params) &&
+#ifndef NEW_INSETS
                    inset->par->Last() > 0 && GetPWidth(cell).empty();
+#else
+                   inset->par->size() > 0 && GetPWidth(cell).empty();
+#endif
            if (rtl)
                os << "\\R{";
            ret += inset->Latex(buf, os, fragile, fp);
@@ -2560,7 +2572,7 @@ LyXTabular::BoxType LyXTabular::UseParbox(int cell) const
     LyXParagraph * par = GetCellInset(cell)->par;
 
     for (; par; par = par->next()) {
-       for (int i = 0; i < par->Last(); ++i) {
+       for (int i = 0; i < par->size(); ++i) {
            if (par->GetChar(i) == LyXParagraph::META_NEWLINE)
                return BOX_PARBOX;
        }
index cedf1085b07ad8935c51322597180eb5195ca1af..36ba36c2e9460c0d1b8d69091061addd1fd946da 100644 (file)
@@ -74,7 +74,11 @@ unsigned char LyXText::TransformChar(unsigned char c, LyXParagraph * par,
 
        unsigned char const prev_char = pos > 0 ? par->GetChar(pos-1) : ' ';
        unsigned char next_char = ' ';
+#ifndef NEW_INSETS
        for (LyXParagraph::size_type i = pos+1; i < par->Last(); ++i)
+#else
+       for (LyXParagraph::size_type i = pos+1; i < par->size(); ++i)
+#endif
                if (!Encodings::IsComposeChar_arabic(par->GetChar(i))) {
                        next_char = par->GetChar(i);
                        break;
@@ -205,12 +209,21 @@ int LyXText::SingleWidth(BufferView * bview, LyXParagraph * par,
 // Returns the paragraph position of the last character in the specified row
 LyXParagraph::size_type LyXText::RowLast(Row const * row) const
 {
+#ifndef NEW_INSETS
        if (row->next() == 0)
                return row->par()->Last() - 1;
        else if (row->next()->par() != row->par()) 
                return row->par()->Last() - 1;
        else 
                return row->next()->pos() - 1;
+#else
+       if (row->next() == 0)
+               return row->par()->size() - 1;
+       else if (row->next()->par() != row->par()) 
+               return row->par()->size() - 1;
+       else 
+               return row->next()->pos() - 1;
+#endif
 }
 
 
@@ -719,7 +732,11 @@ int LyXText::LeftMargin(BufferView * bview, Row const * row) const
                               newpar->GetLayout()).isEnvironment()) {
                        Row dummyrow;
                        dummyrow.par(newpar);
+#ifndef NEW_INSETS
                        dummyrow.pos(newpar->Last());
+#else
+                       dummyrow.pos(newpar->size());
+#endif
                        x = LeftMargin(bview, &dummyrow);
                } else {
                        // this is no longer an error, because this function
@@ -981,7 +998,11 @@ int LyXText::LabelEnd(BufferView * bview, Row const * row) const
            == MARGIN_MANUAL) {
                Row tmprow;
                tmprow = *row;
+#ifndef NEW_INSETS
                tmprow.pos(row->par()->Last());
+#else
+               tmprow.pos(row->par()->size());
+#endif
                return LeftMargin(bview, &tmprow);  /* just the beginning 
                                                of the main body */
        } else
@@ -998,7 +1019,11 @@ LyXText::NextBreakPoint(BufferView * bview, Row const * row, int width) const
        LyXParagraph * par = row->par();
 
        if (width < 0)
+#ifndef NEW_INSETS
                return par->Last();
+#else
+               return par->size();
+#endif
 
        LyXParagraph::size_type const pos = row->pos();
 
@@ -1016,10 +1041,18 @@ LyXText::NextBreakPoint(BufferView * bview, Row const * row, int width) const
 
        if (layout.margintype == MARGIN_RIGHT_ADDRESS_BOX) {
                /* special code for right address boxes, only newlines count */
+#ifndef NEW_INSETS
                while (i < par->Last()) {
+#else
+               while (i < par->size()) {
+#endif
                        if (par->IsNewline(i)) {
                                last_separator = i;
+#ifndef NEW_INSETS
                                i = par->Last() - 1; // this means break
+#else
+                               i = par->size() - 1; // this means break
+#endif
                                //x = width;
                        } else if (par->GetChar(i) == LyXParagraph::META_INSET &&
                                   par->GetInset(i) && par->GetInset(i)->display()){
@@ -1029,8 +1062,13 @@ LyXText::NextBreakPoint(BufferView * bview, Row const * row, int width) const
                }
        } else {
                // Last position is an invariant
+#ifndef NEW_INSETS
                LyXParagraph::size_type const last = 
                        par->Last();
+#else
+               LyXParagraph::size_type const last = 
+                       par->size();
+#endif
                // this is the usual handling
                int x = LeftMargin(bview, row);
                bool doitonetime = true;
@@ -1332,8 +1370,12 @@ void LyXText::SetHeightOfRow(BufferView * bview, Row * row_ptr) const
    
    LyXLayout const & layout = textclasslist.Style(bview->buffer()->params.textclass,
                                                  firstpar->GetLayout());
-   
+
+#ifndef NEW_INSETS
    LyXFont font = GetFont(bview->buffer(), par, par->Last() - 1);
+#else
+   LyXFont font = GetFont(bview->buffer(), par, par->size() - 1);
+#endif
    LyXFont::FONT_SIZE const size = font.size();
    font = GetFont(bview->buffer(), par, -1);
    font.setSize(size);
@@ -1556,9 +1598,16 @@ void LyXText::SetHeightOfRow(BufferView * bview, Row * row_ptr) const
          
          /* do not forget the DTP-lines! 
           * there height depends on the font of the nearest character */
+#ifndef NEW_INSETS
          if (firstpar->params.lineBottom())
                  maxdesc += 2 * lyxfont::ascent('x', GetFont(bview->buffer(),
                                                              par, par->Last() - 1));
+#else
+         if (firstpar->params.lineBottom())
+                 maxdesc += 2 * lyxfont::ascent('x',
+                                                GetFont(bview->buffer(),
+                                                        par, par->size() - 1));
+#endif
          
          /* and now the pagebreaks */
          if (firstpar->params.pagebreakBottom())
@@ -1629,8 +1678,11 @@ void LyXText::AppendParagraph(BufferView * bview, Row * row) const
    
    // The last character position of a paragraph is an invariant so we can 
    // safely get it here. (Asger)
+#ifndef NEW_INSETS
    int const lastposition = row->par()->Last();
-
+#else
+   int const lastposition = row->par()->size();
+#endif
    do {
       // Get the next breakpoint
       int z = NextBreakPoint(bview, row, workWidth(bview));
@@ -1663,8 +1715,12 @@ void LyXText::BreakAgain(BufferView * bview, Row * row) const
       /* get the next breakpoint */
        LyXParagraph::size_type z = NextBreakPoint(bview, row, workWidth(bview));
       Row * tmprow = row;
-      
+
+#ifndef NEW_INSETS
       if (z < row->par()->Last()) {
+#else
+      if (z < row->par()->size()) {
+#endif
         if (!row->next() || (row->next() && row->next()->par() != row->par())) {
                 // insert a new row
            ++z;
@@ -1707,8 +1763,12 @@ void LyXText::BreakAgainOneRow(BufferView * bview, Row * row)
        // get the next breakpoint
        LyXParagraph::size_type z = NextBreakPoint(bview, row, workWidth(bview));
        Row * tmprow = row;
-       
+
+#ifndef NEW_INSETS
        if (z < row->par()->Last()) {
+#else
+       if (z < row->par()->size()) {
+#endif
                if (!row->next()
                    || (row->next() && row->next()->par() != row->par())) {
                        /* insert a new row */ 
@@ -1749,29 +1809,33 @@ void LyXText::BreakParagraph(BufferView * bview, char keep_layout)
                               cursor.par()->GetLayout());
 
    // this is only allowed, if the current paragraph is not empty or caption
-   if ((cursor.par()->Last() <= 0
 #ifndef NEW_INSETS
-       && !cursor.par()->IsDummy()
-#endif
-          )
-       && 
-       layout.labeltype!= LABEL_SENSITIVE)
-     return;
+   if ((cursor.par()->Last() <= 0
+       && !cursor.par()->IsDummy())
+       && layout.labeltype!= LABEL_SENSITIVE)
+          return;
 
    SetUndo(bview->buffer(), Undo::INSERT,
-#ifndef NEW_INSETS
           cursor.par()->ParFromPos(cursor.pos())->previous_, 
-          cursor.par()->ParFromPos(cursor.pos())->next_
+          cursor.par()->ParFromPos(cursor.pos())->next_); 
 #else
+   if ((cursor.par()->size() <= 0)
+       && layout.labeltype!= LABEL_SENSITIVE)
+          return;
+   
+   SetUndo(bview->buffer(), Undo::INSERT,
           cursor.par()->previous(), 
-          cursor.par()->next()
+          cursor.par()->next()); 
 #endif
-          ); 
 
    // Always break behind a space
    //
    // It is better to erase the space (Dekel)
+#ifndef NEW_INSETS
    if (cursor.pos() < cursor.par()->Last()
+#else
+   if (cursor.pos() < cursor.par()->size()
+#endif
        && cursor.par()->IsLineSeparator(cursor.pos()))
           cursor.par()->Erase(cursor.pos());
            // cursor.pos(cursor.pos() + 1);
@@ -1821,8 +1885,12 @@ void LyXText::BreakParagraph(BufferView * bview, char keep_layout)
    cursor.row()->fill(Fill(bview, cursor.row(), workWidth(bview)));
 
    SetHeightOfRow(bview, cursor.row());
-   
+
+#ifndef NEW_INSETS
    while (cursor.par()->next()->Last()
+#else
+   while (cursor.par()->next()->size()
+#endif
          && cursor.par()->next()->IsNewline(0))
           cursor.par()->next()->Erase(0);
    
@@ -2000,7 +2068,11 @@ void LyXText::InsertChar(BufferView * bview, char c)
                                     * current font */
 
        // Get the font that is used to calculate the baselineskip
+#ifndef NEW_INSETS
        LyXParagraph::size_type const lastpos = cursor.par()->Last();
+#else
+       LyXParagraph::size_type const lastpos = cursor.par()->size();
+#endif
        LyXFont rawparfont = cursor.par()->GetFontSettings(bview->buffer()->params,
                                                           lastpos - 1);
 
@@ -2038,8 +2110,12 @@ void LyXText::InsertChar(BufferView * bview, char c)
                /* No newline at first position 
                 * of a paragraph or behind labels. 
                 * TeX does not allow that. */
-               
+
+#ifndef NEW_INSETS
                if (cursor.pos() < cursor.par()->Last() &&
+#else
+               if (cursor.pos() < cursor.par()->size() &&
+#endif
                    cursor.par()->IsLineSeparator(cursor.pos()))
                        // newline always after a blank!
                        CursorRight(bview);
@@ -2106,8 +2182,12 @@ void LyXText::InsertChar(BufferView * bview, char c)
                        else
                                need_break_row = 0;
             
-                       // check, wether the last characters font has changed. 
+                       // check, wether the last characters font has changed.
+#ifndef NEW_INSETS
                        if (cursor.pos() && cursor.pos() == cursor.par()->Last()
+#else
+                       if (cursor.pos() && cursor.pos() == cursor.par()->size()
+#endif
                            && rawparfont != rawtmpfont)
                                RedoHeightOfParagraph(bview, cursor);
                        
@@ -2168,7 +2248,11 @@ void LyXText::InsertChar(BufferView * bview, char c)
        }
 
        // check, wether the last characters font has changed.
+#ifndef NEW_INSETS
        if (cursor.pos() && cursor.pos() == cursor.par()->Last()
+#else
+       if (cursor.pos() && cursor.pos() == cursor.par()->size()
+#endif
            && rawparfont != rawtmpfont) {
                RedoHeightOfParagraph(bview, cursor);
        } else {
@@ -2327,7 +2411,11 @@ void LyXText::CursorRightOneWord(BufferView * bview) const
        LyXCursor tmpcursor = cursor;
        // CHECK See comment on top of text.C
 
+#ifndef NEW_INSETS
        if (tmpcursor.pos() == tmpcursor.par()->Last()
+#else
+       if (tmpcursor.pos() == tmpcursor.par()->size()
+#endif
            && tmpcursor.par()->next()) {
                        tmpcursor.par(tmpcursor.par()->next());
                        tmpcursor.pos(0);
@@ -2335,7 +2423,11 @@ void LyXText::CursorRightOneWord(BufferView * bview) const
                int steps = 0;
 
                // Skip through initial nonword stuff.
+#ifndef NEW_INSETS
                while (tmpcursor.pos() < tmpcursor.par()->Last() &&
+#else
+               while (tmpcursor.pos() < tmpcursor.par()->size() &&
+#endif
                        ! tmpcursor.par()->IsWord( tmpcursor.pos() ) ) 
                {
                  //    printf("Current pos1 %d", tmpcursor.pos()) ;
@@ -2343,7 +2435,11 @@ void LyXText::CursorRightOneWord(BufferView * bview) const
                        ++steps;
                }
                // Advance through word.
+#ifndef NEW_INSETS
                while (tmpcursor.pos() < tmpcursor.par()->Last() &&
+#else
+               while (tmpcursor.pos() < tmpcursor.par()->size() &&
+#endif
                        tmpcursor.par()->IsWord( tmpcursor.pos() ) )
                {
                  //     printf("Current pos2 %d", tmpcursor.pos()) ;
@@ -2358,11 +2454,19 @@ void LyXText::CursorRightOneWord(BufferView * bview) const
 void LyXText::CursorTab(BufferView * bview) const
 {
     LyXCursor tmpcursor = cursor;
+#ifndef NEW_INSETS
     while (tmpcursor.pos() < tmpcursor.par()->Last()
+#else
+    while (tmpcursor.pos() < tmpcursor.par()->size()
+#endif
            && !tmpcursor.par()->IsNewline(tmpcursor.pos()))
         tmpcursor.pos(tmpcursor.pos() + 1);
-   
+
+#ifndef NEW_INSETS
     if (tmpcursor.pos() == tmpcursor.par()->Last()){
+#else
+    if (tmpcursor.pos() == tmpcursor.par()->size()){
+#endif
         if (tmpcursor.par()->next()) {
             tmpcursor.par(tmpcursor.par()->next());
             tmpcursor.pos(0);
@@ -2400,7 +2504,11 @@ void LyXText::CursorLeftOneWord(BufferView * bview)  const
        } else if (!tmpcursor.pos()) {
                if (tmpcursor.par()->previous()){
                        tmpcursor.par(tmpcursor.par()->previous());
+#ifndef NEW_INSETS
                        tmpcursor.pos(tmpcursor.par()->Last());
+#else
+                       tmpcursor.pos(tmpcursor.par()->size());
+#endif
                }
        } else {                // Here, tmpcursor != 0 
                while (tmpcursor.pos() > 0 &&
@@ -2424,7 +2532,11 @@ void LyXText::SelectWord(BufferView * bview)
        // set the sel cursor
        sel_cursor = cursor;
 
+#ifndef NEW_INSETS
        while (cursor.pos() < cursor.par()->Last()
+#else
+       while (cursor.pos() < cursor.par()->size()
+#endif
               && !cursor.par()->IsSeparator(cursor.pos())
               && !cursor.par()->IsKomma(cursor.pos()) )
                cursor.pos(cursor.pos() + 1);
@@ -2442,7 +2554,11 @@ void LyXText::SelectWord(BufferView * bview)
 bool LyXText::SelectWordWhenUnderCursor(BufferView * bview) 
 {
        if (!selection &&
+#ifndef NEW_INSETS
            cursor.pos() > 0 && cursor.pos() < cursor.par()->Last()
+#else
+           cursor.pos() > 0 && cursor.pos() < cursor.par()->size()
+#endif
            && !cursor.par()->IsSeparator(cursor.pos())
            && !cursor.par()->IsKomma(cursor.pos())
            && !cursor.par()->IsSeparator(cursor.pos() -1)
@@ -2472,20 +2588,32 @@ string const LyXText::SelectNextWord(BufferView * bview,
        }
 #else
        if (cursor.pos() || cursor.par()->previous()) {
-               while (cursor.pos() < cursor.par()->Last()
+               while (cursor.pos() < cursor.par()->size()
                       && cursor.par()->IsLetter(cursor.pos()))
                        cursor.pos(cursor.pos() + 1);
        }
 #endif
        
        // Now, skip until we have real text (will jump paragraphs)
+#ifndef NEW_INSETS
        while ((cursor.par()->Last() > cursor.pos()
+#else
+       while ((cursor.par()->size() > cursor.pos()
+#endif
                && (!cursor.par()->IsLetter(cursor.pos())
                    || cursor.par()->getFont(bview->buffer()->params, cursor.pos())
                    .latex() == LyXFont::ON))
-              || (cursor.par()->Last() == cursor.pos() 
+#ifndef NEW_INSETS
+              || (cursor.par()->Last() == cursor.pos()
+#else
+              || (cursor.par()->size() == cursor.pos()
+#endif
                   && cursor.par()->next())){
+#ifndef NEW_INSETS
                if (cursor.pos() == cursor.par()->Last()) {
+#else
+               if (cursor.pos() == cursor.par()->size()) {
+#endif
                        cursor.par(cursor.par()->next());
                        cursor.pos(0);
                } else
@@ -2505,7 +2633,11 @@ string const LyXText::SelectNextWord(BufferView * bview,
 
        // and find the end of the word 
        // (optional hyphens are part of a word)
+#ifndef NEW_INSETS
        while (cursor.pos() < cursor.par()->Last()
+#else
+       while (cursor.pos() < cursor.par()->size()
+#endif
               && (cursor.par()->IsLetter(cursor.pos())) 
                   || (cursor.par()->GetChar(cursor.pos()) == LyXParagraph::META_INSET
                       && cursor.par()->GetInset(cursor.pos()) != 0
@@ -2539,7 +2671,11 @@ void LyXText::SelectSelectedWord(BufferView * bview)
        std::ostringstream latex;
        
        // now find the end of the word
+#ifndef NEW_INSETS
        while (cursor.pos() < cursor.par()->Last()
+#else
+       while (cursor.pos() < cursor.par()->size()
+#endif
               && (cursor.par()->IsLetter(cursor.pos())
                   || (cursor.par()->GetChar(cursor.pos()) == LyXParagraph::META_INSET
                       && cursor.par()->GetInset(cursor.pos()) != 0
@@ -2558,7 +2694,11 @@ void LyXText::SelectSelectedWord(BufferView * bview)
 /* -------> Delete from cursor up to the end of the current or next word. */
 void LyXText::DeleteWordForward(BufferView * bview)
 {
+#ifndef NEW_INSETS
        if (!cursor.par()->Last())
+#else
+       if (!cursor.par()->size())
+#endif
                CursorRight(bview);
        else {
                LyXCursor tmpcursor = cursor;
@@ -2579,7 +2719,11 @@ void LyXText::DeleteWordForward(BufferView * bview)
 /* -------> Delete from cursor to start of current or prior word. */
 void LyXText::DeleteWordBackward(BufferView * bview)
 {
+#ifndef NEW_INSETS
        if (!cursor.par()->Last())
+#else
+       if (!cursor.par()->size())
+#endif
               CursorLeft(bview);
        else {
               LyXCursor tmpcursor = cursor;
@@ -2598,7 +2742,11 @@ void LyXText::DeleteWordBackward(BufferView * bview)
 /* -------> Kill to end of line. */
 void LyXText::DeleteLineForward(BufferView * bview)
 {
+#ifndef NEW_INSETS
        if (!cursor.par()->Last())
+#else
+       if (!cursor.par()->size())
+#endif
                // Paragraph is empty, so we just go to the right
                CursorRight(bview);
        else {
@@ -2731,7 +2879,11 @@ void LyXText::Delete(BufferView * bview)
 void LyXText::Backspace(BufferView * bview)
 {
        // Get the font that is used to calculate the baselineskip
+#ifndef NEW_INSETS
        LyXParagraph::size_type lastpos = cursor.par()->Last();
+#else
+       LyXParagraph::size_type lastpos = cursor.par()->size();
+#endif
        LyXFont rawparfont = cursor.par()->GetFontSettings(bview->buffer()->params,
                                                         lastpos - 1);
 
@@ -2810,8 +2962,14 @@ void LyXText::Backspace(BufferView * bview)
                // without the dreaded mechanism. (JMarc)
                if (cursor.par()->previous()) { 
                        // steps into the above paragraph.
+#ifndef NEW_INSETS
                        SetCursorIntern(bview, cursor.par()->previous(),
                                        cursor.par()->previous()->Last(), false);
+#else
+                       SetCursorIntern(bview, cursor.par()->previous(),
+                                       cursor.par()->previous()->size(),
+                                       false);
+#endif
                }
 
                /* Pasting is not allowed, if the paragraphs have different
@@ -2921,8 +3079,14 @@ void LyXText::Backspace(BufferView * bview)
                        }
                        if (cursor.par()->IsLineSeparator(cursor.pos() - 1))
                                cursor.pos(cursor.pos() - 1);
-                       
-                       if (cursor.pos() < cursor.par()->Last() && !cursor.par()->IsSeparator(cursor.pos())) {
+
+#ifndef NEW_INSETS
+                       if (cursor.pos() < cursor.par()->Last()
+                           && !cursor.par()->IsSeparator(cursor.pos())) {
+#else
+                       if (cursor.pos() < cursor.par()->size()
+                           && !cursor.par()->IsSeparator(cursor.pos())) {
+#endif
                                cursor.par()->InsertChar(cursor.pos(), ' ');
                                SetCharFont(bview->buffer(), cursor.par(), 
                                            cursor.pos(), current_font);
@@ -2945,7 +3109,11 @@ void LyXText::Backspace(BufferView * bview)
                        }
 
                        // delete newlines at the beginning of paragraphs
+#ifndef NEW_INSETS
                        while (cursor.par()->Last() &&
+#else
+                       while (cursor.par()->size() &&
+#endif
                               cursor.par()->IsNewline(cursor.pos()) &&
                               cursor.pos() == BeginningOfMainBody(bview->buffer(),
                                                                   cursor.par())) {
@@ -2970,7 +3138,11 @@ void LyXText::Backspace(BufferView * bview)
                                Row * tmprow = row->previous();
                                
                                // maybe the current row is now empty
+#ifndef NEW_INSETS
                                if (row->pos() >= row->par()->Last()) {
+#else
+                               if (row->pos() >= row->par()->size()) {
+#endif
                                        // remove it
                                        RemoveRow(row);
                                        need_break_row = 0;
@@ -2996,9 +3168,15 @@ void LyXText::Backspace(BufferView * bview)
                                //current_font = rawtmpfont;
                                //real_current_font = realtmpfont;
                                // check, whether the last character's font has changed.
+#ifndef NEW_INSETS
                                if (rawparfont !=
                                    cursor.par()->GetFontSettings(bview->buffer()->params,
                                                                  cursor.par()->Last() - 1))
+#else
+                               if (rawparfont !=
+                                   cursor.par()->GetFontSettings(bview->buffer()->params,
+                                                                 cursor.par()->size() - 1))
+#endif
                                        RedoHeightOfParagraph(bview, cursor);
                                return;
                        }
@@ -3006,14 +3184,22 @@ void LyXText::Backspace(BufferView * bview)
                
                // break the cursor row again
                if (row->next() && row->next()->par() == row->par() &&
+#ifndef NEW_INSETS
                    (RowLast(row) == row->par()->Last() - 1 ||
+#else
+                   (RowLast(row) == row->par()->size() - 1 ||
+#endif
                     NextBreakPoint(bview, row, workWidth(bview)) != RowLast(row))) {
                        
                        /* it can happen that a paragraph loses one row
                         * without a real breakup. This is when a word
                         * is to long to be broken. Well, I don t care this 
-                        * hack ;-) */ 
+                        * hack ;-) */
+#ifndef NEW_INSETS
                        if (RowLast(row) == row->par()->Last() - 1)
+#else
+                       if (RowLast(row) == row->par()->size() - 1)
+#endif
                                RemoveRow(row->next());
                        
                        refresh_y = y;
@@ -3057,7 +3243,11 @@ void LyXText::Backspace(BufferView * bview)
                SetCursor(bview, cursor.par(), cursor.pos(), false,
                          !cursor.boundary());
 
+#ifndef NEW_INSETS
        lastpos = cursor.par()->Last();
+#else
+       lastpos = cursor.par()->size();
+#endif
        if (cursor.pos() == lastpos)
                SetCurrentFont(bview);
        
@@ -3734,8 +3924,17 @@ void LyXText::GetVisibleRow(BufferView * bview, int y_offset, int x_offset,
                
                if (firstpar->params.lineBottom()) {
                        /* draw a bottom line */
-                       y_bottom -= lyxfont::ascent('x', GetFont(bview->buffer(),
-                                                                par, par->Last() - 1));
+#ifndef NEW_INSETS
+                       y_bottom -= lyxfont::ascent('x',
+                                                   GetFont(bview->buffer(),
+                                                           par,
+                                                           par->Last() - 1));
+#else
+                       y_bottom -= lyxfont::ascent('x',
+                                                   GetFont(bview->buffer(),
+                                                           par,
+                                                           par->size() - 1));
+#endif
                        int const w = (inset_owner ?
                                       inset_owner->width(bview, font) : ww);
                        int const xp = static_cast<int>(inset_owner ? x : 0);
@@ -3743,10 +3942,17 @@ void LyXText::GetVisibleRow(BufferView * bview, int y_offset, int x_offset,
                                  w, y_offset + y_bottom,
                                  LColor::topline, Painter::line_solid,
                                  Painter::line_thick);
+#ifndef NEW_INSETS
                        y_bottom -= lyxfont::ascent('x',
                                                    GetFont(bview->buffer(),
                                                            par,
                                                            par->Last() - 1));
+#else
+                       y_bottom -= lyxfont::ascent('x',
+                                                   GetFont(bview->buffer(),
+                                                           par,
+                                                           par->size() - 1));
+#endif
                }
 
                // draw an endlabel
index 77287dd1b2a47d70ebb49620ef502686678e60f6..c64bfdf1d0cf1c04c5e5a616c2bd4ef4f4e10ddf 100644 (file)
@@ -526,7 +526,11 @@ void LyXText::MakeFontEntriesLayoutSpecific(Buffer const * buf,
 
        LyXFont layoutfont, tmpfont;
        for (LyXParagraph::size_type pos = 0;
+#ifndef NEW_INSETS
             pos < par->Last(); ++pos) {
+#else
+            pos < par->size(); ++pos) {
+#endif
                if (pos < BeginningOfMainBody(buf, par))
                        layoutfont = layout.labelfont;
                else
@@ -905,10 +909,12 @@ void LyXText::SetFont(BufferView * bview, LyXFont const & font, bool toggleall)
 #endif
                cursor.pos() < sel_end_cursor.pos())) 
        {
-               if (cursor.pos() < cursor.par()->Last()
 #ifndef NEW_INSETS
+               if (cursor.pos() < cursor.par()->Last()
                    && cursor.par()->footnoteflag
                    == sel_start_cursor.par()->footnoteflag
+#else
+               if (cursor.pos() < cursor.par()->size()
 #endif
                        ) {
                        // an open footnote should behave
@@ -1188,16 +1194,27 @@ string const LyXText::selectionAsString(Buffer const * buffer) const
        // The selection spans more than one paragraph
 
        // First paragraph in selection
+#ifndef NEW_INSETS
        result += sel_start_cursor.par()->String(buffer,
                                                 sel_start_cursor.pos(),
                                                 sel_start_cursor.par()->Last())
                + "\n\n";
+#else
+       result += sel_start_cursor.par()->String(buffer,
+                                                sel_start_cursor.pos(),
+                                                sel_start_cursor.par()->size())
+               + "\n\n";
+#endif
        
        // The paragraphs in between (if any)
        LyXCursor tmpcur(sel_start_cursor);
        tmpcur.par(tmpcur.par()->next());
        while (tmpcur.par() != sel_end_cursor.par()) {
+#ifndef NEW_INSETS
                result += tmpcur.par()->String(buffer, 0, tmpcur.par()->Last()) + "\n\n";
+#else
+               result += tmpcur.par()->String(buffer, 0, tmpcur.par()->size()) + "\n\n";
+#endif
                tmpcur.par(tmpcur.par()->next()); // Or NextAfterFootnote??
        }
 
@@ -1226,7 +1243,11 @@ void LyXText::CursorEnd(BufferView * bview) const
        if (!cursor.row()->next() || cursor.row()->next()->par() != cursor.row()->par())
                SetCursor(bview, cursor.par(), RowLast(cursor.row()) + 1);
        else {
-               if (cursor.par()->Last() && 
+#ifndef NEW_INSETS
+               if (cursor.par()->Last() &&
+#else
+               if (cursor.par()->size() &&
+#endif
                    (cursor.par()->GetChar(RowLast(cursor.row())) == ' '
                     || cursor.par()->IsNewline(RowLast(cursor.row()))))
                        SetCursor(bview, cursor.par(), RowLast(cursor.row()));
@@ -1248,7 +1269,11 @@ void  LyXText::CursorBottom(BufferView * bview) const
 {
        while (cursor.par()->next())
                cursor.par(cursor.par()->next());
+#ifndef NEW_INSETS
        SetCursor(bview, cursor.par(), cursor.par()->Last());
+#else
+       SetCursor(bview, cursor.par(), cursor.par()->size());
+#endif
 }
    
    
@@ -2326,7 +2351,11 @@ void LyXText::CopySelection(BufferView * bview)
 #endif
    
        // copy behind a space if there is one
+#ifndef NEW_INSETS
        while (sel_start_cursor.par()->Last() > sel_start_cursor.pos()
+#else
+       while (sel_start_cursor.par()->size() > sel_start_cursor.pos()
+#endif
               && sel_start_cursor.par()->IsLineSeparator(sel_start_cursor.pos())
               && (sel_start_cursor.par() != sel_end_cursor.par()
                   || sel_start_cursor.pos() < sel_end_cursor.pos()))
@@ -2547,7 +2576,11 @@ bool LyXText::GotoNextInset(BufferView * bview,
        LyXCursor res = cursor;
        Inset * inset;
        do {
+#ifndef NEW_INSETS
                if (res.pos() < res.par()->Last() - 1) {
+#else
+               if (res.pos() < res.par()->size() - 1) {
+#endif
                        res.pos(res.pos() + 1);
                } else  {
                        res.par(res.par()->next());
@@ -2822,14 +2855,22 @@ void LyXText::SetCurrentFont(BufferView * bview) const
                --pos;
 
        if (pos > 0) {
+#ifndef NEW_INSETS
                if (pos == cursor.par()->Last())
+#else
+               if (pos == cursor.par()->size())
+#endif
                        --pos;
                else if (cursor.par()->IsSeparator(pos)) {
                        if (pos > cursor.row()->pos() &&
                            bidi_level(pos) % 2 == 
                            bidi_level(pos - 1) % 2)
                                --pos;
+#ifndef NEW_INSETS
                        else if (pos + 1 < cursor.par()->Last())
+#else
+                       else if (pos + 1 < cursor.par()->size())
+#endif
                                ++pos;
                }
        }
@@ -2838,7 +2879,11 @@ void LyXText::SetCurrentFont(BufferView * bview) const
                cursor.par()->GetFontSettings(bview->buffer()->params, pos);
        real_current_font = GetFont(bview->buffer(), cursor.par(), pos);
 
+#ifndef NEW_INSETS
        if (cursor.pos() == cursor.par()->Last() &&
+#else
+       if (cursor.pos() == cursor.par()->size() &&
+#endif
            IsBoundary(bview->buffer(), cursor.par(), cursor.pos()) &&
            !cursor.boundary()) {
                Language const * lang =
@@ -2900,7 +2945,11 @@ void LyXText::CursorLeft(BufferView * bview, bool internal) const
                        SetCursor(bview, cursor.par(), cursor.pos() + 1, true, true);
        } else if (cursor.par()->previous()) { // steps into the above paragraph.
                LyXParagraph * par = cursor.par()->previous();
+#ifndef NEW_INSETS
                SetCursor(bview, par, par->Last());
+#else
+               SetCursor(bview, par, par->size());
+#endif
        }
 }
 
@@ -2910,7 +2959,11 @@ void LyXText::CursorRight(BufferView * bview, bool internal) const
        if (!internal && cursor.boundary() &&
            !cursor.par()->IsNewline(cursor.pos()))
                SetCursor(bview, cursor.par(), cursor.pos(), true, false);
+#ifndef NEW_INSETS
        else if (cursor.pos() < cursor.par()->Last()) {
+#else
+       else if (cursor.pos() < cursor.par()->size()) {
+#endif
                SetCursor(bview, cursor.par(), cursor.pos() + 1, true, false);
                if (!internal &&
                    IsBoundary(bview->buffer(), cursor.par(), cursor.pos()))
@@ -2951,7 +3004,11 @@ void LyXText::CursorDownParagraph(BufferView * bview) const
        if (cursor.par()->next()) {
                SetCursor(bview, cursor.par()->next(), 0);
        } else {
+#ifndef NEW_INSETS
                SetCursor(bview, cursor.par(), cursor.par()->Last());
+#else
+               SetCursor(bview, cursor.par(), cursor.par()->size());
+#endif
        }
 }
 
@@ -2997,7 +3054,11 @@ void LyXText::DeleteEmptyParagraphMechanism(BufferView * bview,
                // Only if the cursor has really moved
                
                if (old_cursor.pos() > 0
+#ifndef NEW_INSETS
                    && old_cursor.pos() < old_cursor.par()->Last()
+#else
+                   && old_cursor.pos() < old_cursor.par()->size()
+#endif
                    && old_cursor.par()->IsLineSeparator(old_cursor.pos())
                    && old_cursor.par()->IsLineSeparator(old_cursor.pos() - 1)) {
                        old_cursor.par()->Erase(old_cursor.pos() - 1);
@@ -3021,13 +3082,18 @@ void LyXText::DeleteEmptyParagraphMechanism(BufferView * bview,
 
        LyXCursor tmpcursor;
 
+#ifndef NEW_INSETS
        if (old_cursor.par() != cursor.par()) {
                if ((old_cursor.par()->Last() == 0
                      || (old_cursor.par()->Last() == 1
                          && old_cursor.par()->IsLineSeparator(0)))
-#ifndef NEW_INSETS
                     && old_cursor.par()->FirstPhysicalPar()
                     == old_cursor.par()->LastPhysicalPar()
+#else
+       if (old_cursor.par() != cursor.par()) {
+               if ((old_cursor.par()->size() == 0
+                     || (old_cursor.par()->size() == 1
+                         && old_cursor.par()->IsLineSeparator(0)))
 #endif
                        ) {
                        // ok, we will delete anything