]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetBranch.cpp
Restore XHTML output for InsetListings.
[lyx.git] / src / insets / InsetBranch.cpp
index f3dd34f5a536384973e1be3ce5d27900168e20c1..24cc7c92361aaffb32dae951703a92f2b9e7b2b1 100644 (file)
@@ -24,6 +24,7 @@
 #include "FuncStatus.h"
 #include "Lexer.h"
 #include "OutputParams.h"
+#include "output_xhtml.h"
 #include "TextClass.h"
 #include "TocBackend.h"
 
@@ -40,7 +41,7 @@ using namespace std;
 
 namespace lyx {
 
-InsetBranch::InsetBranch(Buffer const & buf, InsetBranchParams const & params)
+InsetBranch::InsetBranch(Buffer * buf, InsetBranchParams const & params)
        : InsetCollapsable(buf, InsetText::DefaultLayout), params_(params)
 {}
 
@@ -51,12 +52,6 @@ InsetBranch::~InsetBranch()
 }
 
 
-docstring InsetBranch::editMessage() const
-{
-       return _("Opened Branch Inset");
-}
-
-
 void InsetBranch::write(ostream & os) const
 {
        params_.write(os);
@@ -90,8 +85,11 @@ docstring const InsetBranch::buttonLabel(BufferView const & bv) const
        docstring s = _("Branch: ") + params_.branch;
        Buffer const & realbuffer = *buffer().masterBuffer();
        BranchList const & branchlist = realbuffer.params().branchlist();
-       if (!branchlist.find(params_.branch))
+       if (!branchlist.find(params_.branch)
+           && buffer().params().branchlist().find(params_.branch))
                s = _("Branch (child only): ") + params_.branch;
+       else if (!branchlist.find(params_.branch))
+               s = _("Branch (undefined): ") + params_.branch;
        if (!params_.branch.empty()) {
                // FIXME UNICODE
                ColorCode c = lcolor.getFromLyXName(to_utf8(params_.branch));
@@ -133,7 +131,6 @@ void InsetBranch::doDispatch(Cursor & cur, FuncRequest & cmd)
                InsetBranchParams params;
                InsetBranch::string2params(to_utf8(cmd.argument()), params);
                params_.branch = params.branch;
-               setLayout(cur.buffer()->params());
                break;
        }
 
@@ -147,8 +144,12 @@ void InsetBranch::doDispatch(Cursor & cur, FuncRequest & cmd)
                Buffer const * buf = buffer().masterBuffer();
                BranchList const & branchlist = buf->params().branchlist();
                Branch * our_branch = const_cast<Branch *>(branchlist.find(params_.branch));
-               if (!our_branch)
-                       break;
+               if (!our_branch) {
+                       // child only?
+                       our_branch = buffer().params().branchlist().find(params_.branch);
+                       if (!our_branch)
+                               break;
+               }
                our_branch->setSelected(cmd.action == LFUN_BRANCH_ACTIVATE);
                break;
        }
@@ -202,8 +203,13 @@ bool InsetBranch::isBranchSelected() const
        Buffer const & realbuffer = *buffer().masterBuffer();
        BranchList const & branchlist = realbuffer.params().branchlist();
        Branch const * ourBranch = branchlist.find(params_.branch);
-       if (!ourBranch)
-               return false;
+
+       if (!ourBranch) {
+               // this branch is defined in child only
+               ourBranch = buffer().params().branchlist().find(params_.branch);
+               if (!ourBranch)
+                       return false;
+       }
        return ourBranch->isSelected();
 }
 
@@ -235,10 +241,11 @@ int InsetBranch::docbook(odocstream & os,
 }
 
 
-int InsetBranch::xhtml(odocstream & os,
-                        OutputParams const & runparams) const
+docstring InsetBranch::xhtml(XHTMLStream & xs, OutputParams const & rp) const
 {
-       return isBranchSelected() ?  InsetText::xhtml(os, runparams) : 0;
+       if (isBranchSelected())
+                return InsetText::xhtml(xs, rp);
+       return docstring();
 }