]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetBranch.cpp
New DocBook support
[lyx.git] / src / insets / InsetBranch.cpp
index 88d00e641e486a7b76507d0ae40ee652badf9844..a70ff27463c6db5003efc637d6e33315d02aff80 100644 (file)
@@ -24,6 +24,7 @@
 #include "Lexer.h"
 #include "LyX.h"
 #include "OutputParams.h"
+#include "output_docbook.h"
 #include "output_xhtml.h"
 #include "TextClass.h"
 #include "TocBackend.h"
@@ -190,6 +191,21 @@ void InsetBranch::doDispatch(Cursor & cur, FuncRequest & cmd)
                        // cur.forceBufferUpdate() is not enough
                        buf->updateBuffer();
                }
+
+               // if branch exists in a descendant, update previews.
+               // TODO: only needed if "Show preview" is enabled in the included inset.
+               bool exists_in_desc = false;
+               for (auto const & it : buf->getDescendants()) {
+                       if (it->params().branchlist().find(params_.branch))
+                               exists_in_desc = true;
+               }
+               if (exists_in_desc) {
+                       // TODO: ideally we would only update the previews of the
+                       // specific children that have this branch directly or
+                       // in one of their descendants
+                       buf->removePreviews();
+                       buf->updatePreviews();
+               }
                break;
        }
        case LFUN_BRANCH_INVERT:
@@ -296,6 +312,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;
        }
 }
 
@@ -311,14 +330,18 @@ 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);
+       }
 }
 
 
-docstring InsetBranch::xhtml(XHTMLStream & xs, OutputParams const & rp) const
+docstring InsetBranch::xhtml(XMLStream & xs, OutputParams const & rp) const
 {
        if (producesOutput()) {
                OutputParams newrp = rp;
@@ -387,10 +410,10 @@ void InsetBranch::string2params(string const & in, InsetBranchParams & params)
 }
 
 
-void InsetBranch::updateBuffer(ParIterator const & it, UpdateType utype)
+void InsetBranch::updateBuffer(ParIterator const & it, UpdateType utype, bool const deleted)
 {
        setLabel(params_.branch + (params_.inverted ? " (-)" : ""));
-       InsetCollapsible::updateBuffer(it, utype);
+       InsetCollapsible::updateBuffer(it, utype, deleted);
 }