X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2FInsetMathColor.cpp;h=e3be8ff9bf9bf22efd0b8b389159f70bac59ba29;hb=4ed0312c51704780af1c452d3a82a84171b3725a;hp=94a6c42e642c9dbc774bf84379e51505c1a2eed5;hpb=7441172d4d9a26eb4824bb8bee003f457ef34f1c;p=lyx.git diff --git a/src/mathed/InsetMathColor.cpp b/src/mathed/InsetMathColor.cpp index 94a6c42e64..e3be8ff9bf 100644 --- a/src/mathed/InsetMathColor.cpp +++ b/src/mathed/InsetMathColor.cpp @@ -30,13 +30,15 @@ namespace lyx { InsetMathColor::InsetMathColor(Buffer * buf, bool oldstyle, ColorCode color) : InsetMathNest(buf, 1), oldstyle_(oldstyle), - color_(from_utf8(lcolor.getLaTeXName(color))) + color_(from_utf8(lcolor.getLaTeXName(color))), + current_mode_(UNDECIDED_MODE) {} InsetMathColor::InsetMathColor(Buffer * buf, bool oldstyle, docstring const & color) - : InsetMathNest(buf, 1), oldstyle_(oldstyle), color_(color) + : InsetMathNest(buf, 1), oldstyle_(oldstyle), color_(color), + current_mode_(UNDECIDED_MODE) {} @@ -48,12 +50,18 @@ Inset * InsetMathColor::clone() const void InsetMathColor::metrics(MetricsInfo & mi, Dimension & dim) const { + current_mode_ = isTextFont(mi.base.fontname) ? TEXT_MODE : MATH_MODE; + Changer dummy = mi.base.changeEnsureMath(current_mode_); + cell(0).metrics(mi, dim); } void InsetMathColor::draw(PainterInfo & pi, int x, int y) const { + current_mode_ = isTextFont(pi.base.fontname) ? TEXT_MODE : MATH_MODE; + Changer dummy = pi.base.changeEnsureMath(current_mode_); + ColorCode origcol = pi.base.font.color(); pi.base.font.setColor(lcolor.getFromLaTeXName(to_utf8(color_))); cell(0).draw(pi, x, y); @@ -94,16 +102,12 @@ void InsetMathColor::validate(LaTeXFeatures & features) const } -void InsetMathColor::write(WriteStream & os) const +void InsetMathColor::write(TeXMathStream & os) const { // We have to ensure correct spacing when the front and/or back // atoms are not ordinary ones (bug 11827). - docstring const frontclass = - cell(0).size() ? class_to_string(cell(0).front()->mathClass()) - : from_ascii("mathord"); - docstring const backclass = - cell(0).size() ? class_to_string(cell(0).back()->mathClass()) - : from_ascii("mathord"); + docstring const frontclass = class_to_string(cell(0).firstMathClass()); + docstring const backclass = class_to_string(cell(0).lastMathClass()); bool adjchk = os.latex() && !os.inMathClass() && (normalcolor(color_) || oldstyle_); bool adjust_front = frontclass != "mathord" && adjchk; bool adjust_back = backclass != "mathord" && adjchk;