X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2FInsetMathScript.cpp;h=b5e70fd6313a8eb2600135f16200c01f22ccb2c6;hb=1f352b390c897d583bffaad695c04b613b88a139;hp=8098a1a2d8d67cf7a4078648fce6505b6b7fa42b;hpb=361bd53bc36da61c6abfc2e0b7b7c7294800bbd9;p=lyx.git diff --git a/src/mathed/InsetMathScript.cpp b/src/mathed/InsetMathScript.cpp index 8098a1a2d8..b5e70fd631 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; @@ -333,12 +337,12 @@ void InsetMathScript::metrics(MetricsInfo & mi, Dimension & dim) const dim.des = max(nd, des); } else dim.des = nd; - metricsMarkers(dim); } 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); @@ -352,7 +356,6 @@ void InsetMathScript::draw(PainterInfo & pi, int x, int y) const up().draw(pi, x + dx1(bv), y - dy1(bv)); if (hasDown()) down().draw(pi, x + dx0(bv), y + dy0(bv)); - drawMarkers(pi, x, y); }