X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2FInsetMathScript.cpp;h=a4ffd576b03bea104467d878bba6cfdc7543550a;hb=5fdc577badb1cb133d6a0dc7d831bb1f82576adb;hp=7363c885545aebd68a0271fe462265ac17e3e395;hpb=9a9a6a8c8f12cb8b0e713a9a1ed3c5763fa25c66;p=lyx.git diff --git a/src/mathed/InsetMathScript.cpp b/src/mathed/InsetMathScript.cpp index 7363c88554..a4ffd576b0 100644 --- a/src/mathed/InsetMathScript.cpp +++ b/src/mathed/InsetMathScript.cpp @@ -276,18 +276,22 @@ int InsetMathScript::nker(BufferView const * bv) const MathClass InsetMathScript::mathClass() const { // FIXME: this is a hack, since the class will not be correct if - // the nucleus has several elements. + // the nucleus has several elements or if the last element is a math macro + // or a macro argument proxy. // The correct implementation would require to linearize the nucleus. if (nuc().empty()) return MC_ORD; - else + else { // return the class of last element since this is the one that counts. - return nuc().back()->mathClass(); + MathClass mc = nuc().back()->mathClass(); + return (mc == MC_UNKNOWN) ? MC_ORD : mc; + } } void InsetMathScript::metrics(MetricsInfo & mi, Dimension & dim) const { + Changer dummy2 = mi.base.changeEnsureMath(); Dimension dim0; Dimension dim1; Dimension dim2; @@ -339,6 +343,7 @@ void InsetMathScript::metrics(MetricsInfo & mi, Dimension & dim) const void InsetMathScript::draw(PainterInfo & pi, int x, int y) const { + Changer dummy2 = pi.base.changeEnsureMath(); BufferView & bv = *pi.base.bv; if (!nuc().empty()) nuc().draw(pi, x + dxx(bv), y);