]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/MathMacroTemplate.cpp
Limit multirow to 100 columns in mathed
[lyx.git] / src / mathed / MathMacroTemplate.cpp
index 31250e29df547156c91d650e72659e832fe95ad9..d4cf4cfa560bbf830c9b982564ac9fb0aa7c35f8 100644 (file)
@@ -269,14 +269,12 @@ Inset * InsetMathWrapper::clone() const
 void InsetMathWrapper::metrics(MetricsInfo & mi, Dimension & dim) const
 {
        value_->metrics(mi, dim);
-       //metricsMarkers2(dim);
 }
 
 
 void InsetMathWrapper::draw(PainterInfo & pi, int x, int y) const
 {
        value_->draw(pi, x, y);
-       //drawMarkers(pi, x, y);
 }
 
 
@@ -369,6 +367,7 @@ Inset * InsetNameWrapper::clone() const
 
 void InsetNameWrapper::metrics(MetricsInfo & mi, Dimension & dim) const
 {
+       Changer dummy = mi.base.changeFontSet("textit");
        InsetMathWrapper::metrics(mi, dim);
        dim.wid += mathed_string_width(mi.base.font, from_ascii("\\"));
 }
@@ -376,19 +375,17 @@ void InsetNameWrapper::metrics(MetricsInfo & mi, Dimension & dim) const
 
 void InsetNameWrapper::draw(PainterInfo & pi, int x, int y) const
 {
-       // create fonts
-       PainterInfo namepi = pi;
-       if (parent_.validMacro())
-               namepi.base.font.setColor(Color_latex);
-       else
-               namepi.base.font.setColor(Color_error);
+       ColorCode const color = parent_.validMacro() ? Color_latex : Color_error;
+
+       Changer dummy = pi.base.changeFontSet("textit");
+       Changer dummy2 = pi.base.font.changeColor(color);
 
        // draw backslash
-       pi.pain.text(x, y, from_ascii("\\"), namepi.base.font);
-       x += mathed_string_width(namepi.base.font, from_ascii("\\"));
+       pi.pain.text(x, y, from_ascii("\\"), pi.base.font);
+       x += mathed_string_width(pi.base.font, from_ascii("\\"));
 
        // draw name
-       InsetMathWrapper::draw(namepi, x, y);
+       InsetMathWrapper::draw(pi, x, y);
 }
 
 
@@ -544,7 +541,7 @@ void MathMacroTemplate::createLook(int args) const
 void MathMacroTemplate::metrics(MetricsInfo & mi, Dimension & dim) const
 {
        Changer dummy1 = mi.base.changeFontSet("mathnormal");
-       Changer dummy2 = mi.base.changeStyle(LM_ST_TEXT);
+       Changer dummy2 = mi.base.font.changeStyle(LM_ST_TEXT);
 
        // valid macro?
        MacroData const * macro = 0;
@@ -578,8 +575,6 @@ void MathMacroTemplate::metrics(MetricsInfo & mi, Dimension & dim) const
        dim.wid += 6;
        dim.des += 2;
        dim.asc += 2;
-
-       setDimCache(mi, dim);
 }
 
 
@@ -588,16 +583,15 @@ void MathMacroTemplate::draw(PainterInfo & pi, int x, int y) const
        // FIXME: Calling Changer on the same object repeatedly is inefficient.
        Changer dummy0 = pi.base.font.changeColor(Color_math);
        Changer dummy1 = pi.base.changeFontSet("mathnormal");
-       Changer dummy2 = pi.base.changeStyle(LM_ST_TEXT);
+       Changer dummy2 = pi.base.font.changeStyle(LM_ST_TEXT);
 
-       setPosCache(pi, x, y);
        Dimension const dim = dimension(*pi.base.bv);
 
        // draw outer frame
        int const a = y - dim.asc + 1;
        int const w = dim.wid - 2;
        int const h = dim.height() - 2;
-       pi.pain.rectangle(x, a, w, h, Color_mathframe);
+       pi.pain.rectangle(x + 1, a, w, h, Color_mathframe);
 
        // just to be sure: set some dummy values for coord cache
        for (idx_type i = 0; i < nargs(); ++i)
@@ -1172,7 +1166,7 @@ void MathMacroTemplate::read(Lexer & lex)
 void MathMacroTemplate::write(ostream & os) const
 {
        odocstringstream oss;
-       otexrowstream ots(oss, false);
+       otexrowstream ots(oss);
        WriteStream wi(ots, false, false, WriteStream::wsDefault);
        oss << "FormulaMacro\n";
        write(wi);
@@ -1389,16 +1383,18 @@ string MathMacroTemplate::contextMenuName() const
        return "context-math-macro-definition";
 }
 
+
 void MathMacroTemplate::addToToc(DocIterator const & pit, bool output_active,
-                                                                UpdateType) const
+                                                                UpdateType, TocBackend & backend) const
 {
-       shared_ptr<Toc> toc = buffer().tocBackend().toc("math-macro");
        docstring str;
        if (!validMacro())
                str = bformat(_("Invalid macro! \\%1$s"), name());
        else
                str = "\\" + name();
-       toc->push_back(TocItem(pit, 0, str, output_active));
+       TocBuilder & b = backend.builder("math-macro");
+       b.pushItem(pit, str, output_active);
+       b.pop();
 }