]> git.lyx.org Git - lyx.git/blobdiff - src/paragraph_funcs.C
Almost fix 'make check'. The only remaining problem is an undefined
[lyx.git] / src / paragraph_funcs.C
index f1af41bf81722557fb91c7ca04b25f9bfbc30eb1..4ec57ef3eed6e957a8e90b7da21ed677d4460512 100644 (file)
 #include "bufferparams.h"
 #include "lyxtext.h"
 #include "paragraph_pimpl.h"
+#include "debug.h"
 
 
 namespace lyx {
 
 using std::string;
+using std::endl;
 
 
 static bool moveItem(Paragraph & fromPar, pos_type fromPos,
@@ -66,9 +68,6 @@ void breakParagraph(BufferParams const & bparams,
 
        Paragraph & par = pars[par_offset];
 
-       // we will invalidate the row cache
-       par.rows().clear();
-
        // without doing that we get a crash when typing <Return> at the
        // end of a paragraph
        tmp->layout(bparams.getLyXTextClass().defaultLayout());
@@ -185,22 +184,25 @@ void mergeParagraph(BufferParams const & bparams,
        pos_type pos_end = next.size() - 1;
        pos_type pos_insert = par.size();
 
-       // The imaginary end-of-paragraph character (at par.size()) has to be
+       // the imaginary end-of-paragraph character (at par.size()) has to be
        // marked as unmodified. Otherwise, its change is adopted by the first
        // character of the next paragraph.
-       
-       // FIXME: change tracking (MG)
-       par.setChange(par.size(), Change(Change::UNCHANGED));
+       if (par.lookupChange(par.size()).type != Change::UNCHANGED) {
+               lyxerr[Debug::CHANGES] <<
+                  "merging par with inserted/deleted end-of-par character" << endl;
+               par.setChange(par.size(), Change(Change::UNCHANGED));
+       }
 
        Change change = next.lookupChange(next.size());
-       // ok, now copy the paragraph
+
+       // move the content of the second paragraph to the end of the first one
        for (pos_type i = 0, j = pos_insert; i <= pos_end; ++i) {
                if (moveItem(next, 0, par, j, bparams)) {
                        ++j;
                }
        }
-       // Move the change of the end-of-paragraph character
-       // FIXME: change tracking (MG)
+
+       // move the change of the end-of-paragraph character
        par.setChange(par.size(), change);
 
        pars.erase(boost::next(pars.begin(), par_offset + 1));
@@ -240,10 +242,12 @@ bool isFirstInSequence(pit_type par_offset, ParagraphList const & pars)
 
        pit_type dhook_offset = depthHook(par_offset, pars, par.getDepth());
 
+       if (dhook_offset == par_offset)
+               return true;
+
        Paragraph const & dhook = pars[dhook_offset];
 
-       return dhook_offset == par_offset
-               || dhook.layout() != par.layout()
+       return dhook.layout() != par.layout()
                || dhook.getDepth() != par.getDepth();
 }