]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/InsetMathHull.cpp
Another warning.
[lyx.git] / src / mathed / InsetMathHull.cpp
index 1c3eb533704e6d2bbcb0a4f0a58554b236525f52..6bbd83a931653a17a0522ab6f105c0840b8f41d5 100644 (file)
@@ -141,7 +141,7 @@ docstring hullName(HullType type)
 static InsetLabel * dummy_pointer = 0;
 
 InsetMathHull::InsetMathHull(Buffer * buf)
-       : InsetMathGrid(buf, 1, 1), type_(hullNone), nonum_(1, false),
+       : InsetMathGrid(buf, 1, 1), type_(hullNone), numbered_(1, true),
          label_(1, dummy_pointer), preview_(new RenderPreview(this))
 {
        //lyxerr << "sizeof InsetMath: " << sizeof(InsetMath) << endl;
@@ -155,7 +155,7 @@ InsetMathHull::InsetMathHull(Buffer * buf)
 
 
 InsetMathHull::InsetMathHull(Buffer * buf, HullType type)
-       : InsetMathGrid(buf, getCols(type), 1), type_(type), nonum_(1, false),
+       : InsetMathGrid(buf, getCols(type), 1), type_(type), numbered_(1, true),
          label_(1, dummy_pointer), preview_(new RenderPreview(this))
 {
        buffer_ = buf;
@@ -189,7 +189,7 @@ InsetMathHull & InsetMathHull::operator=(InsetMathHull const & other)
                return *this;
        InsetMathGrid::operator=(other);
        type_  = other.type_;
-       nonum_ = other.nonum_;
+       numbered_ = other.numbered_;
        buffer_ = other.buffer_;
        for (size_t i = 0; i < label_.size(); ++i)
                delete label_[i];
@@ -244,7 +244,7 @@ void InsetMathHull::addToToc(DocIterator const & pit)
        Toc & toc = buffer().tocBackend().toc("equation");
 
        for (row_type row = 0; row != nrows(); ++row) {
-               if (nonum_[row])
+               if (!numbered_[row])
                        continue;
                if (label_[row])
                        label_[row]->addToToc(pit);
@@ -433,8 +433,10 @@ void InsetMathHull::draw(PainterInfo & pi, int x, int y) const
                return;
        }
 
+       ColorCode color = pi.selected && lyxrc.use_system_colors
+                               ? Color_selectiontext : standardColor();
        bool const really_change_color = pi.base.font.color() == Color_none;
-       ColorChanger dummy0(pi.base.font, standardColor(), really_change_color);
+       ColorChanger dummy0(pi.base.font, color, really_change_color);
        FontSetChanger dummy1(pi.base, standardFont());
        StyleChanger dummy2(pi.base, display() ? LM_ST_DISPLAY : LM_ST_TEXT);
 
@@ -603,8 +605,8 @@ void InsetMathHull::label(row_type row, docstring const & label)
 
 void InsetMathHull::numbered(row_type row, bool num)
 {
-       nonum_[row] = !num;
-       if (nonum_[row] && label_[row]) {
+       numbered_[row] = num;
+       if (!numbered_[row] && label_[row]) {
                delete label_[row];
                label_[row] = 0;
        }
@@ -613,7 +615,7 @@ void InsetMathHull::numbered(row_type row, bool num)
 
 bool InsetMathHull::numbered(row_type row) const
 {
-       return !nonum_[row];
+       return numbered_[row];
 }
 
 
@@ -647,7 +649,7 @@ bool InsetMathHull::numberedType() const
        if (type_ == hullRegexp)
                return false;
        for (row_type row = 0; row < nrows(); ++row)
-               if (!nonum_[row])
+               if (numbered_[row])
                        return true;
        return false;
 }
@@ -735,7 +737,7 @@ void InsetMathHull::header_write(WriteStream & os) const
                break;
 
        default:
-               os << "\\begin{unknown" << star(n) << '}';
+               os << "\\begin{unknown" << star(n) << "}\n";
                break;
        }
 }
@@ -756,9 +758,9 @@ void InsetMathHull::footer_write(WriteStream & os) const
 
        case hullEquation:
                if (n)
-                       os << "\\end{equation" << star(n) << "}\n";
+                       os << "\n\\end{equation" << star(n) << "}\n";
                else
-                       os << "\\]\n";
+                       os << "\n\\]\n";
                break;
 
        case hullEqnArray:
@@ -768,11 +770,11 @@ void InsetMathHull::footer_write(WriteStream & os) const
        case hullXAlignAt:
        case hullGather:
        case hullMultline:
-               os << "\\end{" << hullName(type_) << star(n) << "}\n";
+               os << "\n\\end{" << hullName(type_) << star(n) << "}\n";
                break;
 
        case hullXXAlignAt:
-               os << "\\end{" << hullName(type_) << "}\n";
+               os << "\n\\end{" << hullName(type_) << "}\n";
                break;
 
        case hullRegexp:
@@ -780,7 +782,7 @@ void InsetMathHull::footer_write(WriteStream & os) const
                break;
 
        default:
-               os << "\\end{unknown" << star(n) << '}';
+               os << "\n\\end{unknown" << star(n) << "}\n";
                break;
        }
 }
@@ -813,13 +815,13 @@ void InsetMathHull::addRow(row_type row)
        docstring lab;
        if (type_ == hullMultline) {
                if (row + 1 == nrows())  {
-                       nonum_[row] = true;
+                       numbered_[row] = false;
                        lab = label(row);
                } else
                        numbered = false;
        }
 
-       nonum_.insert(nonum_.begin() + row + 1, !numbered);
+       numbered_.insert(numbered_.begin() + row + 1, numbered);
        label_.insert(label_.begin() + row + 1, dummy_pointer);
        if (!lab.empty())
                label(row + 1, lab);
@@ -836,11 +838,11 @@ void InsetMathHull::swapRow(row_type row)
        // gcc implements the standard std::vector<bool> which is *not* a container:
        //   http://www.gotw.ca/publications/N1185.pdf
        // As a results, it doesn't like this:
-       //      swap(nonum_[row], nonum_[row + 1]);
+       //      swap(numbered_[row], numbered_[row + 1]);
        // so we do it manually:
-       bool const b = nonum_[row];
-       nonum_[row] = nonum_[row + 1];
-       nonum_[row + 1] = b;
+       bool const b = numbered_[row];
+       numbered_[row] = numbered_[row + 1];
+       numbered_[row + 1] = b;
        swap(label_[row], label_[row + 1]);
        InsetMathGrid::swapRow(row);
 }
@@ -851,9 +853,9 @@ void InsetMathHull::delRow(row_type row)
        if (nrows() <= 1 || !rowChangeOK())
                return;
        if (row + 1 == nrows() && type_ == hullMultline) {
-               bool const b = nonum_[row - 1];
-               nonum_[row - 1] = nonum_[row];
-               nonum_[row] = b;
+               bool const b = numbered_[row - 1];
+               numbered_[row - 1] = numbered_[row];
+               numbered_[row] = b;
                swap(label_[row - 1], label_[row]);
                InsetMathGrid::delRow(row);
                return;
@@ -863,7 +865,7 @@ void InsetMathHull::delRow(row_type row)
        // Test nrows() + 1 because we have already erased the row.
        if (row == nrows() + 1)
                row--;
-       nonum_.erase(nonum_.begin() + row);
+       numbered_.erase(numbered_.begin() + row);
        delete label_[row];
        label_.erase(label_.begin() + row);
 }
@@ -887,7 +889,7 @@ void InsetMathHull::delCol(col_type col)
 
 docstring InsetMathHull::nicelabel(row_type row) const
 {
-       if (nonum_[row])
+       if (!numbered_[row])
                return docstring();
        if (!label_[row])
                return from_ascii("(#)");
@@ -912,8 +914,7 @@ void InsetMathHull::glueall(HullType type)
                }
        }
        *this = InsetMathHull(buffer_, hullSimple);
-       if (label)
-               label_[0] = label;
+       label_[0] = label;
        cell(0) = ar;
        setDefaults();
 }
@@ -1024,6 +1025,7 @@ void InsetMathHull::mutate(HullType newtype)
                        numbered(0, false);
                } else {
                        setType(hullEquation);
+                       numbered(0, label_[0] ? true : false);
                        mutate(newtype);
                }
        }
@@ -1118,19 +1120,23 @@ void InsetMathHull::mutate(HullType newtype)
 }
 
 
-docstring InsetMathHull::eolString(row_type row, bool fragile, bool last_eoln) const
+docstring InsetMathHull::eolString(row_type row, bool fragile, bool latex,
+               bool last_eoln) const
 {
        docstring res;
        if (numberedType()) {
-               if (label_[row] && !nonum_[row])
-                       res += "\\label{" +
-                           escape(label_[row]->getParam("name")) + '}';
-               if (nonum_[row] && (type_ != hullMultline))
+               if (label_[row] && numbered_[row]) {
+                       docstring const name =
+                               latex ? escape(label_[row]->getParam("name"))
+                                     : label_[row]->getParam("name");
+                       res += "\\label{" + name + '}';
+               }
+               if (!numbered_[row] && (type_ != hullMultline))
                        res += "\\nonumber ";
        }
        // Never add \\ on the last empty line of eqnarray and friends
        last_eoln = false;
-       return res + InsetMathGrid::eolString(row, fragile, last_eoln);
+       return res + InsetMathGrid::eolString(row, fragile, latex, last_eoln);
 }
 
 
@@ -1165,7 +1171,7 @@ void InsetMathHull::infoize(odocstream & os) const
 
 void InsetMathHull::check() const
 {
-       LASSERT(nonum_.size() == nrows(), /**/);
+       LASSERT(numbered_.size() == nrows(), /**/);
        LASSERT(label_.size() == nrows(), /**/);
 }
 
@@ -1316,7 +1322,7 @@ void InsetMathHull::doDispatch(Cursor & cur, FuncRequest & cmd)
 
                InsetCommandParams p(LABEL_CODE);
                p["name"] = cmd.argument().empty() ? old_label : cmd.argument();
-               string const data = InsetCommand::params2string("label", p);
+               string const data = InsetCommand::params2string(p);
 
                if (cmd.argument().empty())
                        cur.bv().showDialog("label", data);
@@ -1337,7 +1343,7 @@ void InsetMathHull::doDispatch(Cursor & cur, FuncRequest & cmd)
                        // if there is an argument, find the corresponding label, else
                        // check whether there is at least one label.
                        for (row = 0; row != nrows(); ++row)
-                               if (!nonum_[row] && label_[row]
+                               if (numbered_[row] && label_[row]
                                          && (cmd.argument().empty() || label(row) == cmd.argument()))
                                        break;
                }
@@ -1380,7 +1386,7 @@ void InsetMathHull::doDispatch(Cursor & cur, FuncRequest & cmd)
                string const name = cmd.getArg(0);
                if (name == "label") {
                        InsetCommandParams p(LABEL_CODE);
-                       InsetCommand::string2params(name, to_utf8(cmd.argument()), p);
+                       InsetCommand::string2params(to_utf8(cmd.argument()), p);
                        docstring str = p["name"];
                        cur.recordUndoInset();
                        row_type const r = (type_ == hullMultline) ? nrows() - 1 : cur.row();
@@ -1501,12 +1507,12 @@ bool InsetMathHull::getStatus(Cursor & cur, FuncRequest const & cmd,
                        // if there is no argument and we're inside math, we retrieve
                        // the row number from the cursor position.
                        row = (type_ == hullMultline) ? nrows() - 1 : cur.row();
-                       enabled = numberedType() && label_[row] && !nonum_[row];
+                       enabled = numberedType() && label_[row] && numbered_[row];
                } else {
                        // if there is an argument, find the corresponding label, else
                        // check whether there is at least one label.
                        for (row_type row = 0; row != nrows(); ++row) {
-                               if (!nonum_[row] && label_[row] && 
+                               if (numbered_[row] && label_[row] && 
                                        (cmd.argument().empty() || label(row) == cmd.argument())) {
                                                enabled = true;
                                                break;