]> git.lyx.org Git - features.git/blobdiff - src/insets/insetbranch.C
change "support/std_sstream.h" to <sstream>
[features.git] / src / insets / insetbranch.C
index 40003e9687fb868ae5b045da23045238f2c81c1e..1485bb8f053bdaec9c12845a3b9269b8838ed633 100644 (file)
@@ -23,7 +23,7 @@
 #include "lyxlex.h"
 #include "paragraph.h"
 
-#include "support/std_sstream.h"
+#include <sstream>
 
 using std::string;
 using std::auto_ptr;
@@ -93,7 +93,8 @@ void InsetBranch::setButtonLabel()
        font.decSize();
        font.decSize();
 
-       setLabel("Branch: " + params_.branch);
+       string s = "Branch: " + params_.branch;
+       setLabel(isOpen() ? s : getNewLabel(s) );
        font.setColor(LColor::foreground);
        if (!params_.branch.empty())
                setBackgroundColor(lcolor.getFromLyXName(params_.branch));
@@ -110,8 +111,7 @@ bool InsetBranch::showInsetDialog(BufferView * bv) const
 }
 
 
-DispatchResult
-InsetBranch::priv_dispatch(LCursor & cur, FuncRequest const & cmd)
+void InsetBranch::priv_dispatch(LCursor & cur, FuncRequest & cmd)
 {
        switch (cmd.action) {
        case LFUN_INSET_MODIFY: {
@@ -119,27 +119,67 @@ InsetBranch::priv_dispatch(LCursor & cur, FuncRequest const & cmd)
                InsetBranchMailer::string2params(cmd.argument, params);
                params_.branch = params.branch;
                setButtonLabel();
-               return DispatchResult(true, true);
+               break;
        }
 
        case LFUN_MOUSE_PRESS:
                if (cmd.button() != mouse_button::button3)
-                       return InsetCollapsable::priv_dispatch(cur, cmd);
-               return DispatchResult(false);
+                       InsetCollapsable::priv_dispatch(cur, cmd);
+               else
+                       cur.undispatched();
+               break;
 
        case LFUN_INSET_DIALOG_UPDATE:
                InsetBranchMailer(*this).updateDialog(&cur.bv());
-               return DispatchResult(true);
+               break;
 
        case LFUN_MOUSE_RELEASE:
-               if (cmd.button() == mouse_button::button3 && hitButton(cmd)) {
+               if (cmd.button() == mouse_button::button3 && hitButton(cmd))
                        InsetBranchMailer(*this).showDialog(&cur.bv());
-                       return DispatchResult(true);
+               else
+                       InsetCollapsable::priv_dispatch(cur, cmd);
+               break;
+
+
+       case LFUN_INSET_TOGGLE:
+               // We assume that this lfun is indeed going to be dispatched.
+               cur.dispatched();
+
+               if (cmd.argument == "open")
+                       setStatus(Open);
+               else if (cmd.argument == "close") {
+                       setStatus(Collapsed);
+                       leaveInset(cur, *this);
+        } else if (cmd.argument == "toggle") {
+                       if (isOpen()) {
+                               setStatus(Collapsed);
+                               leaveInset(cur, *this);
+                       } else
+                       setStatus(Open);
+
+               // The branch inset uses "assign".
+               } else if (cmd.argument == "assign"
+                          || cmd.argument.empty()) {
+                       BranchList const & branchlist =
+                               cur.buffer().params().branchlist();
+                       if (isBranchSelected(branchlist)) {
+                               if (status() != Open)
+                                       setStatus(Open);
+                               else
+                                       cur.undispatched();
+                       } else {
+                               if (status() != Collapsed) {
+                                       setStatus(Collapsed);
+                                       leaveInset(cur, *this);
+                               } else
+                                       cur.undispatched();
+                       }
                }
-               return InsetCollapsable::priv_dispatch(cur, cmd);
+               break;
 
        default:
-               return InsetCollapsable::priv_dispatch(cur, cmd);
+               InsetCollapsable::priv_dispatch(cur, cmd);
+               break;
        }
 }
 
@@ -160,7 +200,7 @@ int InsetBranch::latex(Buffer const & buf, ostream & os,
                       OutputParams const & runparams) const
 {
        return isBranchSelected(buf.params().branchlist()) ?
-               inset.latex(buf, os, runparams) : 0;
+               InsetText::latex(buf, os, runparams) : 0;
 }
 
 
@@ -168,7 +208,7 @@ int InsetBranch::linuxdoc(Buffer const & buf, std::ostream & os,
                          OutputParams const & runparams) const
 {
        return isBranchSelected(buf.params().branchlist()) ?
-               inset.linuxdoc(buf, os, runparams) : 0;
+               InsetText::linuxdoc(buf, os, runparams) : 0;
 }
 
 
@@ -176,7 +216,7 @@ int InsetBranch::docbook(Buffer const & buf, std::ostream & os,
                         OutputParams const & runparams) const
 {
        return isBranchSelected(buf.params().branchlist()) ?
-               inset.docbook(buf, os, runparams) : 0;
+               InsetText::docbook(buf, os, runparams) : 0;
 }
 
 
@@ -184,18 +224,18 @@ int InsetBranch::plaintext(Buffer const & buf, std::ostream & os,
                           OutputParams const & runparams) const
 {
        return isBranchSelected(buf.params().branchlist()) ?
-               inset.plaintext(buf, os, runparams): 0;
+               InsetText::plaintext(buf, os, runparams): 0;
 }
 
 
 void InsetBranch::validate(LaTeXFeatures & features) const
 {
-       inset.validate(features);
+       InsetText::validate(features);
 }
 
 
 
-string const InsetBranchMailer:: name_("branch");
+string const InsetBranchMailer::name_("branch");
 
 InsetBranchMailer::InsetBranchMailer(InsetBranch & inset)
        : inset_(inset)