]> git.lyx.org Git - lyx.git/blobdiff - src/paragraph_funcs.cpp
Comment.
[lyx.git] / src / paragraph_funcs.cpp
index 7514a1a436dfa971411d2d29013da0cff17f62a7..625d258d7d7271e3ac5c82d4107f00d1864a5006 100644 (file)
 #include "paragraph_funcs.h"
 
 #include "BufferParams.h"
-#include "debug.h"
+#include "Changes.h"
+#include "InsetList.h"
 #include "Layout.h"
-#include "Text.h"
 #include "Paragraph.h"
 #include "ParagraphParameters.h"
+#include "Text.h"
+#include "TextClass.h"
+
+#include "support/debug.h"
 
 #include <boost/next_prior.hpp>
 
+using namespace std;
 
 namespace lyx {
 
-using std::endl;
-
-
 static bool moveItem(Paragraph & fromPar, pos_type fromPos,
        Paragraph & toPar, pos_type toPos, BufferParams const & params)
 {
        // Note: moveItem() does not honour change tracking!
        // Therefore, it should only be used for breaking and merging paragraphs
 
-       Paragraph::value_type const tmpChar = fromPar.getChar(fromPos);
+       char_type const tmpChar = fromPar.getChar(fromPos);
        Font const tmpFont = fromPar.getFontSettings(params, fromPos);
        Change const tmpChange = fromPar.lookupChange(fromPos);
 
-       if (tmpChar == Paragraph::META_INSET) {
+       if (fromPar.isInset(fromPos)) {
                Inset * tmpInset = 0;
                if (fromPar.getInset(fromPos)) {
                        // the inset is not in the paragraph any more
-                       tmpInset = fromPar.insetlist.release(fromPos);
+                       tmpInset = fromPar.releaseInset(fromPos);
                }
 
-               fromPar.eraseChar(fromPos, false);
-
                if (!toPar.insetAllowed(tmpInset->lyxCode())) {
                        delete tmpInset;
                        return false;
@@ -62,7 +62,8 @@ static bool moveItem(Paragraph & fromPar, pos_type fromPos,
 
 
 void breakParagraph(BufferParams const & bparams,
-       ParagraphList & pars, pit_type par_offset, pos_type pos, int flag)
+                   ParagraphList & pars, pit_type par_offset, pos_type pos, 
+                   bool keep_layout)
 {
        // create a new paragraph, and insert into the list
        ParagraphList::iterator tmp =
@@ -71,20 +72,20 @@ void breakParagraph(BufferParams const & bparams,
 
        Paragraph & par = pars[par_offset];
 
-       // without doing that we get a crash when typing <Return> at the
-       // end of a paragraph
-       tmp->layout(bparams.getTextClass().defaultLayout());
        // remember to set the inset_owner
        tmp->setInsetOwner(par.inInset());
+       // without doing that we get a crash when typing <Return> at the
+       // end of a paragraph
+       tmp->setEmptyOrDefaultLayout(bparams.documentClass());
 
        // layout stays the same with latex-environments
-       if (flag) {
-               tmp->layout(par.layout());
+       if (keep_layout) {
+               tmp->setLayout(par.layout());
                tmp->setLabelWidthString(par.params().labelWidthString());
                tmp->params().depth(par.params().depth());
        } else if (par.params().depth() > 0) {
                Paragraph const & hook = pars[outerHook(par_offset, pars)];
-               tmp->layout(hook.layout());
+               tmp->setLayout(hook.layout());
                // not sure the line below is useful
                tmp->setLabelWidthString(par.params().labelWidthString());
                tmp->params().depth(hook.params().depth());
@@ -92,8 +93,8 @@ void breakParagraph(BufferParams const & bparams,
 
        bool const isempty = (par.allowEmpty() && par.empty());
 
-       if (!isempty && (par.size() > pos || par.empty() || flag == 2)) {
-               tmp->layout(par.layout());
+       if (!isempty && (par.size() > pos || par.empty())) {
+               tmp->setLayout(par.layout());
                tmp->params().align(par.params().align());
                tmp->setLabelWidthString(par.params().labelWidthString());
 
@@ -140,12 +141,12 @@ void breakParagraph(BufferParams const & bparams,
                par.params().clear();
                // do not lose start of appendix marker (bug 4212)
                par.params().startOfAppendix(soa);
-               par.layout(bparams.getTextClass().defaultLayout());
+               par.setEmptyOrDefaultLayout(bparams.documentClass());
        }
 
        // layout stays the same with latex-environments
-       if (flag) {
-               par.layout(tmp->layout());
+       if (keep_layout) {
+               par.setLayout(tmp->layout());
                par.setLabelWidthString(tmp->params().labelWidthString());
                par.params().depth(tmp->params().depth());
        }
@@ -194,8 +195,8 @@ void mergeParagraph(BufferParams const & bparams,
        // marked as unmodified. Otherwise, its change is adopted by the first
        // character of the next paragraph.
        if (par.lookupChange(par.size()).type != Change::UNCHANGED) {
-               LYXERR(Debug::CHANGES) <<
-                  "merging par with inserted/deleted end-of-par character" << endl;
+               LYXERR(Debug::CHANGES,
+                  "merging par with inserted/deleted end-of-par character");
                par.setChange(par.size(), Change(Change::UNCHANGED));
        }
 
@@ -263,8 +264,8 @@ int getEndLabel(pit_type p, ParagraphList const & pars)
        pit_type pit = p;
        depth_type par_depth = pars[p].getDepth();
        while (pit != pit_type(pars.size())) {
-               LayoutPtr const & layout = pars[pit].layout();
-               int const endlabeltype = layout->endlabeltype;
+               Layout const & layout = pars[pit].layout();
+               int const endlabeltype = layout.endlabeltype;
 
                if (endlabeltype != END_LABEL_NO_LABEL) {
                        if (p + 1 == pit_type(pars.size()))
@@ -290,7 +291,7 @@ int getEndLabel(pit_type p, ParagraphList const & pars)
 Font const outerFont(pit_type par_offset, ParagraphList const & pars)
 {
        depth_type par_depth = pars[par_offset].getDepth();
-       Font tmpfont(Font::ALL_INHERIT);
+       FontInfo tmpfont = inherit_font;
 
        // Resolve against environment font information
        while (par_offset != pit_type(pars.size())
@@ -298,27 +299,12 @@ Font const outerFont(pit_type par_offset, ParagraphList const & pars)
               && !tmpfont.resolved()) {
                par_offset = outerHook(par_offset, pars);
                if (par_offset != pit_type(pars.size())) {
-                       tmpfont.realize(pars[par_offset].layout()->font);
+                       tmpfont.realize(pars[par_offset].layout().font);
                        par_depth = pars[par_offset].getDepth();
                }
        }
 
-       return tmpfont;
-}
-
-
-/// return the number of InsetOptArg in a paragraph
-int numberOfOptArgs(Paragraph const & par)
-{
-       int num = 0;
-
-       InsetList::const_iterator it = par.insetlist.begin();
-       InsetList::const_iterator end = par.insetlist.end();
-       for (; it != end ; ++it) {
-               if (it->inset->lyxCode() == Inset::OPTARG_CODE)
-                       ++num;
-       }
-       return num;
+       return Font(tmpfont);
 }