]> git.lyx.org Git - features.git/blobdiff - src/insets/InsetBranch.cpp
DocBook, InsetFloat: avoid a potential nullptr dereference when detecting the type...
[features.git] / src / insets / InsetBranch.cpp
index 6d87af7fae15de858004f596e6af7dc75745a5f6..be8e5517472da67010b95ee6b54d66b45d918137 100644 (file)
 #include "FuncStatus.h"
 #include "Lexer.h"
 #include "LyX.h"
-#include "OutputParams.h"
+#include "output_docbook.h"
 #include "output_xhtml.h"
 #include "TextClass.h"
 #include "TocBackend.h"
 
+#include "support/convert.h"
 #include "support/debug.h"
 #include "support/gettext.h"
 #include "support/lstrings.h"
@@ -111,8 +112,10 @@ docstring const InsetBranch::buttonLabel(BufferView const &) const
        if (inchild && master_selected != child_selected)
                symb += (child_selected ? tick : cross);
 
-       if (decoration() == InsetLayout::MINIMALISTIC)
-               return symb + params_.branch;
+    docstring inv_symb = from_ascii(params_.inverted ? "~" : "");
+
+       if (decoration() == InsetDecoration::MINIMALISTIC)
+               return symb + inv_symb + params_.branch;
 
        docstring s;
        if (inmaster && inchild)
@@ -123,7 +126,7 @@ docstring const InsetBranch::buttonLabel(BufferView const &) const
                s = _("Branch (master): ");
        else // !inmaster && !inchild
                s = _("Branch (undefined): ");
-       s += params_.branch;
+       s += inv_symb + params_.branch;
 
        return symb + s;
 }
@@ -133,8 +136,12 @@ ColorCode InsetBranch::backgroundColor(PainterInfo const & pi) const
 {
        if (params_.branch.empty())
                return Inset::backgroundColor(pi);
+       string const branch_id = (buffer().masterParams().branchlist().find(params_.branch))
+                       ? convert<string>(buffer().masterParams().branchlist().id())
+                       : convert<string>(buffer().params().branchlist().id());
        // FIXME UNICODE
-       ColorCode c = lcolor.getFromLyXName(to_utf8(params_.branch));
+       string const branchcol = "branch" + branch_id + to_utf8(params_.branch);
+       ColorCode c = lcolor.getFromLyXName(branchcol);
        if (c == Color_none)
                c = Color_error;
        return c;
@@ -311,6 +318,9 @@ void InsetBranch::latex(otexstream & os, OutputParams const & runparams) const
                OutputParams rp = runparams;
                rp.inbranch = true;
                InsetText::latex(os, rp);
+               // These need to be passed upstream
+               runparams.need_maketitle = rp.need_maketitle;
+               runparams.have_maketitle = rp.have_maketitle;
        }
 }
 
@@ -326,10 +336,14 @@ int InsetBranch::plaintext(odocstringstream & os,
 }
 
 
-int InsetBranch::docbook(odocstream & os,
-                        OutputParams const & runparams) const
+void InsetBranch::docbook(XMLStream & xs, OutputParams const & runparams) const
 {
-       return producesOutput() ?  InsetText::docbook(os, runparams) : 0;
+       if (producesOutput()) {
+               OutputParams rp = runparams;
+               rp.par_begin = 0;
+               rp.par_end = text().paragraphs().size();
+               docbookParagraphs(text(), buffer(), xs, rp);
+       }
 }