X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2FInsetMathChar.cpp;h=14060f37ac53094d270fa4a8927475f1100eaa25;hb=e54ae72e5fac6f750c3f7972c74bb42b57f3a049;hp=5e523c88a229003cc55e4805d801fcee791a4fcc;hpb=32871c1284f15265f652ff01c438e539a7c8181f;p=lyx.git diff --git a/src/mathed/InsetMathChar.cpp b/src/mathed/InsetMathChar.cpp index 5e523c88a2..14060f37ac 100644 --- a/src/mathed/InsetMathChar.cpp +++ b/src/mathed/InsetMathChar.cpp @@ -17,9 +17,10 @@ #include "debug.h" #include "Dimension.h" -#include "support/lstrings.h" #include "TextPainter.h" +#include "support/lstrings.h" + #include "frontends/FontMetrics.h" @@ -59,12 +60,6 @@ auto_ptr InsetMathChar::doClone() const bool InsetMathChar::metrics(MetricsInfo & mi, Dimension & dim) const { - if (mi.base.font == font_cache_) { - dim = dim_; - return false; - } - font_cache_ = mi.base.font; - #if 1 if (char_ == '=' && has_math_fonts) { FontSetChanger dummy(mi.base, "cmr"); @@ -73,7 +68,7 @@ bool InsetMathChar::metrics(MetricsInfo & mi, Dimension & dim) const FontSetChanger dummy(mi.base, "cmm"); dim = theFontMetrics(mi.base.font).dimension(char_); } else if (!slanted(char_) && mi.base.fontname == "mathnormal") { - ShapeChanger dummy(mi.base.font, LyXFont::UP_SHAPE); + ShapeChanger dummy(mi.base.font, Font::UP_SHAPE); dim = theFontMetrics(mi.base.font).dimension(char_); } else { frontend::FontMetrics const & fm = theFontMetrics(mi.base.font); @@ -92,6 +87,10 @@ bool InsetMathChar::metrics(MetricsInfo & mi, Dimension & dim) const dim.wid += 2 * theFontMetrics(font_).width(' '); lyxerr << "InsetMathChar::metrics: " << dim << endl; #endif + + if (dim_ == dim) + return false; + dim_ = dim; return true; } @@ -113,7 +112,7 @@ void InsetMathChar::draw(PainterInfo & pi, int x, int y) const FontSetChanger dummy(pi.base, "cmm"); pi.draw(x, y, char_); } else if (!slanted(char_) && pi.base.fontname == "mathnormal") { - ShapeChanger dummy(pi.base.font, LyXFont::UP_SHAPE); + ShapeChanger dummy(pi.base.font, Font::UP_SHAPE); pi.draw(x, y, char_); } else { pi.draw(x, y, char_);