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;
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);
up().draw(pi, x + dx1(bv), y - dy1(bv));
if (hasDown())
down().draw(pi, x + dx0(bv), y + dy0(bv));
- drawMarkers(pi, x, y);
}