#include "debug.h"
#include "Dimension.h"
-#include "support/lstrings.h"
#include "TextPainter.h"
+#include "support/lstrings.h"
+
#include "frontends/FontMetrics.h"
-auto_ptr<InsetBase> InsetMathChar::doClone() const
+auto_ptr<Inset> InsetMathChar::doClone() const
{
- return auto_ptr<InsetBase>(new InsetMathChar(*this));
+ return auto_ptr<Inset>(new InsetMathChar(*this));
}
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");
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);
dim.wid += 2 * theFontMetrics(font_).width(' ');
lyxerr << "InsetMathChar::metrics: " << dim << endl;
#endif
+
+ if (dim_ == dim)
+ return false;
+
dim_ = dim;
return true;
}
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_);