]> git.lyx.org Git - lyx.git/blobdiff - src/Changes.cpp
Fix bug #12772
[lyx.git] / src / Changes.cpp
index f7167a2ba9efb3158077976c3ed6e28ee3502398..16bbb2fdd64452f0bbe789cda3097fff50a86bb0 100644 (file)
@@ -17,8 +17,8 @@
 #include "Author.h"
 #include "Buffer.h"
 #include "BufferParams.h"
+#include "Color.h"
 #include "Encoding.h"
-#include "LaTeXFeatures.h"
 #include "LyXRC.h"
 #include "MetricsInfo.h"
 #include "OutputParams.h"
@@ -71,26 +71,29 @@ bool Change::isSimilarTo(Change const & change) const
 Color Change::color() const
 {
        Color color = Color_none;
-       switch (author % 5) {
-               case 0:
-                       color = Color_addedtextauthor1;
-                       break;
-               case 1:
-                       color = Color_addedtextauthor2;
-                       break;
-               case 2:
-                       color = Color_addedtextauthor3;
-                       break;
-               case 3:
-                       color = Color_addedtextauthor4;
-                       break;
-               case 4:
-                       color = Color_addedtextauthor5;
-                       break;
+       if (author == 0)
+               color = Color_changedtext_workarea_author1;
+       else if (author == 1)
+               color = Color_changedtext_workarea_comparison;
+       else {
+               switch ((author - 2) % 4) {
+                       case 0:
+                               color = Color_changedtext_workarea_author2;
+                               break;
+                       case 1:
+                               color = Color_changedtext_workarea_author3;
+                               break;
+                       case 2:
+                               color = Color_changedtext_workarea_author4;
+                               break;
+                       case 3:
+                               color = Color_changedtext_workarea_author5;
+                               break;
+               }
        }
 
        if (deleted())
-               color.mergeColor = Color_deletedtextmodifier;
+               color.mergeColor = Color_deletedtext_workarea_modifier;
 
        return color;
 }
@@ -380,7 +383,7 @@ docstring getLaTeXMarkup(docstring const & macro, Author const & author,
                                          "Choose an appropriate document encoding (such as utf8)\n"
                                          "or change the author initials."),
                                        uncodable_initials, author_initials_latexed.second));
-                               warned_author_initials.insert(uncodable_author);
+                               warned_author_initials.insert(uncodable_initials);
                        }
                }
        }
@@ -429,16 +432,14 @@ int Changes::latexMarkChange(otexstream & os, BufferParams const & bparams,
 
        int column = 0;
 
-       bool const dvipost = LaTeXFeatures::isAvailable("dvipost") &&
-                       (runparams.flavor == OutputParams::LATEX
-                        || runparams.flavor == OutputParams::DVILUATEX);
-
        if (oldChange.type != Change::UNCHANGED) {
-               // close \lyxadded or \lyxdeleted
-               os << '}';
-               column++;
+               if (oldChange.type != Change::DELETED || runparams.ctObject != CtObject::OmitObject) {
+                       // close \lyxadded or \lyxdeleted
+                       os << '}';
+                       column++;
+               }
                if (oldChange.type == Change::DELETED
-                   && !runparams.wasDisplayMath && !dvipost)
+                   && !runparams.wasDisplayMath)
                        --runparams.inulemcmd;
        }
 
@@ -449,9 +450,19 @@ int Changes::latexMarkChange(otexstream & os, BufferParams const & bparams,
 
        docstring macro_beg;
        if (change.type == Change::DELETED) {
-               macro_beg = from_ascii("\\lyxdeleted");
-               if (!runparams.inDisplayMath && !dvipost)
-                       ++runparams.inulemcmd;
+               if (runparams.ctObject == CtObject::OmitObject)
+                       return 0;
+               else if (runparams.ctObject == CtObject::Object)
+                       macro_beg = from_ascii("\\lyxobjdeleted");
+               else if (runparams.ctObject == CtObject::DisplayObject)
+                       macro_beg = from_ascii("\\lyxdisplayobjdeleted");
+               else if (runparams.ctObject == CtObject::UDisplayObject)
+                       macro_beg = from_ascii("\\lyxudisplayobjdeleted");
+               else {
+                       macro_beg = from_ascii("\\lyxdeleted");
+                       if (!runparams.inDisplayMath)
+                               ++runparams.inulemcmd;
+               }
        }
        else if (change.type == Change::INSERTED)
                macro_beg = from_ascii("\\lyxadded");
@@ -460,15 +471,6 @@ int Changes::latexMarkChange(otexstream & os, BufferParams const & bparams,
                                       bparams.authors().get(change.author),
                                       chgTime, runparams);
 
-       // signature needed by \lyxsout to correctly strike out display math
-       if (change.type == Change::DELETED && runparams.inDisplayMath
-           && !dvipost) {
-               if (os.blankLine())
-                       str += from_ascii("\\\\\\noindent\n");
-               else
-                       str += from_ascii("\\\\\\\\\n");
-       }
-
        os << str;
        column += str.size();
 
@@ -504,7 +506,7 @@ void Changes::lyxMarkChange(ostream & os, BufferParams const & bparams, int & co
 }
 
 
-void Changes::checkAuthors(AuthorList const & authorList)
+void Changes::checkAuthors(AuthorList const & authorList) const
 {
        for (ChangeRange const & cr : table_)
                if (cr.change.type != Change::UNCHANGED)
@@ -558,14 +560,6 @@ void Changes::addToToc(DocIterator const & cdit, Buffer const & buffer,
 }
 
 
-void Changes::updateBuffer(Buffer const & buf)
-{
-       bool const changed = isChanged();
-       buf.setChangesPresent(buf.areChangesPresent() || changed);
-       previously_changed_ = changed;
-}
-
-
 void Change::paintCue(PainterInfo & pi, double const x1, double const y,
                       double const x2, FontInfo const & font) const
 {
@@ -597,7 +591,7 @@ void Change::paintCue(PainterInfo & pi, double const x1, double const y1,
                return;
        case INSERTED: {
                if (!lyxrc.ct_additions_underlined)
-                       break;
+                       return;
                pi.pain.line(int(x1), int(y2) + 1, int(x2), int(y2) + 1,
                             color(), Painter::line_solid,
                             pi.base.solidLineThickness());