]> git.lyx.org Git - lyx.git/blobdiff - src/insets/insetbranch.C
The speed patch: redraw only rows that have changed
[lyx.git] / src / insets / insetbranch.C
index e1f551517fdf6c0945b7816c7e622b5d8e60b16c..a18bf41d4f8693cc3b5aeefbd99dc70c628cc570 100644 (file)
@@ -95,12 +95,17 @@ void InsetBranch::setButtonLabel()
        font.decSize();
 
        string s = _("Branch: ") + params_.branch;
-       setLabel(isOpen() ? s : getNewLabel(s) );
        font.setColor(LColor::foreground);
-       if (!params_.branch.empty())
-               setBackgroundColor(lcolor.getFromLyXName(params_.branch));
-       else
+       if (!params_.branch.empty()) {
+               LColor_color c = lcolor.getFromLyXName(params_.branch);
+               if (c == LColor::none) {
+                       c = LColor::error;
+                       s = _("Undef: ") + s;
+               }
+               setBackgroundColor(c);
+       } else
                setBackgroundColor(LColor::background);
+       setLabel(isOpen() ? s : getNewLabel(s) );
        setLabelFont(font);
 }
 
@@ -145,9 +150,7 @@ void InsetBranch::doDispatch(LCursor & cur, FuncRequest & cmd)
        case LFUN_INSET_TOGGLE:
                if (cmd.argument == "assign" || cmd.argument.empty()) {
                        // The branch inset uses "assign".
-                       BranchList const & branchlist =
-                               cur.buffer().params().branchlist();
-                       if (isBranchSelected(branchlist)) {
+                       if (isBranchSelected(cur.buffer())) {
                                if (status() != Open)
                                        setStatus(cur, Open);
                                else
@@ -185,9 +188,7 @@ bool InsetBranch::getStatus(LCursor & cur, FuncRequest const & cmd,
                        flag.enabled(true);
                else if (cmd.argument == "assign"
                           || cmd.argument.empty()) {
-                       BranchList const & branchlist =
-                               cur.buffer().params().branchlist();
-                       if (isBranchSelected(branchlist))
+                       if (isBranchSelected(cur.buffer()))
                                flag.enabled(status() != Open);
                        else
                                flag.enabled(status() != Collapsed);
@@ -202,8 +203,10 @@ bool InsetBranch::getStatus(LCursor & cur, FuncRequest const & cmd,
 }
 
 
-bool InsetBranch::isBranchSelected(BranchList const & branchlist) const
+bool InsetBranch::isBranchSelected(Buffer const & buffer) const
 {
+       Buffer const & realbuffer = *buffer.getMasterBuffer();
+       BranchList const & branchlist = realbuffer.params().branchlist();
        BranchList::const_iterator const end = branchlist.end();
        BranchList::const_iterator it =
                std::find_if(branchlist.begin(), end,
@@ -217,7 +220,7 @@ bool InsetBranch::isBranchSelected(BranchList const & branchlist) const
 int InsetBranch::latex(Buffer const & buf, ostream & os,
                       OutputParams const & runparams) const
 {
-       return isBranchSelected(buf.params().branchlist()) ?
+       return isBranchSelected(buf) ?
                InsetText::latex(buf, os, runparams) : 0;
 }
 
@@ -225,7 +228,7 @@ int InsetBranch::latex(Buffer const & buf, ostream & os,
 int InsetBranch::linuxdoc(Buffer const & buf, std::ostream & os,
                          OutputParams const & runparams) const
 {
-       return isBranchSelected(buf.params().branchlist()) ?
+       return isBranchSelected(buf) ?
                InsetText::linuxdoc(buf, os, runparams) : 0;
 }
 
@@ -233,7 +236,7 @@ int InsetBranch::linuxdoc(Buffer const & buf, std::ostream & os,
 int InsetBranch::docbook(Buffer const & buf, std::ostream & os,
                         OutputParams const & runparams) const
 {
-       return isBranchSelected(buf.params().branchlist()) ?
+       return isBranchSelected(buf) ?
                InsetText::docbook(buf, os, runparams) : 0;
 }
 
@@ -241,7 +244,7 @@ int InsetBranch::docbook(Buffer const & buf, std::ostream & os,
 int InsetBranch::plaintext(Buffer const & buf, std::ostream & os,
                           OutputParams const & runparams) const
 {
-       return isBranchSelected(buf.params().branchlist()) ?
+       return isBranchSelected(buf) ?
                InsetText::plaintext(buf, os, runparams): 0;
 }