]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetBranch.cpp
Remove all BufferParam arguments in InsetXXX methods (since insets know about their...
[lyx.git] / src / insets / InsetBranch.cpp
index 649fcf603a5242cfc53a9852392ff65ac3964846..1e09c9c7a30c1685c8833233459ad291b2b70924 100644 (file)
@@ -29,6 +29,7 @@
 
 #include "support/debug.h"
 #include "support/gettext.h"
+#include "support/lstrings.h"
 
 #include "frontends/Application.h"
 
@@ -70,9 +71,17 @@ void InsetBranch::read(Lexer & lex)
 }
 
 
-docstring InsetBranch::toolTip(BufferView const &, int, int) const
+docstring InsetBranch::toolTip(BufferView const & bv, int x, int y) const
 {
-       return _("Branch: ") + params_.branch;
+       docstring const status = isBranchSelected() ? 
+               _("active") : _("non-active");
+       docstring const heading = 
+               support::bformat(_("Branch (%1$s): %2$s"), status, params_.branch);
+       docstring const contents = InsetCollapsable::toolTip(bv, x, y);
+       if (isOpen(bv) || contents.empty())
+               return heading;
+       else
+               return heading + from_ascii("\n") + contents;
 }
 
 
@@ -81,8 +90,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));
@@ -124,17 +136,10 @@ void InsetBranch::doDispatch(Cursor & cur, FuncRequest & cmd)
                InsetBranchParams params;
                InsetBranch::string2params(to_utf8(cmd.argument()), params);
                params_.branch = params.branch;
-               setLayout(cur.buffer()->params());
+               setLayout();
                break;
        }
 
-       case LFUN_MOUSE_PRESS:
-               if (cmd.button() != mouse_button::button3)
-                       InsetCollapsable::doDispatch(cur, cmd);
-               else
-                       cur.undispatched();
-               break;
-
        case LFUN_INSET_DIALOG_UPDATE:
                cur.bv().updateDialog("branch", params2string(params()));
                break;
@@ -142,12 +147,16 @@ void InsetBranch::doDispatch(Cursor & cur, FuncRequest & cmd)
        case LFUN_BRANCH_ACTIVATE:
        case LFUN_BRANCH_DEACTIVATE: {
                // FIXME: I do not like this cast, but have no other idea...
-               Buffer * realbuffer = const_cast<Buffer *>(buffer().masterBuffer());
-               BranchList & branchlist = realbuffer->params().branchlist();
-               Branch * ourBranch = branchlist.find(params_.branch);
-               if (!ourBranch)
-                       break;
-               ourBranch->setSelected(cmd.action == LFUN_BRANCH_ACTIVATE);
+               Buffer const * buf = buffer().masterBuffer();
+               BranchList const & branchlist = buf->params().branchlist();
+               Branch * our_branch = const_cast<Branch *>(branchlist.find(params_.branch));
+               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;
        }
 
@@ -171,7 +180,6 @@ bool InsetBranch::getStatus(Cursor & cur, FuncRequest const & cmd,
        switch (cmd.action) {
        case LFUN_INSET_MODIFY:
        case LFUN_INSET_DIALOG_UPDATE:
-       case LFUN_INSET_SETTINGS:
                flag.setEnabled(true);
                break;
 
@@ -201,8 +209,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();
 }
 
@@ -234,6 +247,14 @@ int InsetBranch::docbook(odocstream & os,
 }
 
 
+docstring InsetBranch::xhtml(odocstream & os, OutputParams const & rp) const
+{
+       if (isBranchSelected())
+                return InsetText::xhtml(os, rp);
+       return docstring();
+}
+
+
 void InsetBranch::tocString(odocstream & os) const
 {
        if (isBranchSelected())