In general, the metrics() functions should not change the Buffer; we have updateBuffer/updateMacros for that purpose. --- src/mathed/MathMacroTemplate.cpp | 8 ++------ src/mathed/MathMacroTemplate.h | 4 ++-- 2 files changed, 4 insertions(+), 8 deletions(-)
diff --git a/src/mathed/MathMacroTemplate.cpp b/src/mathed/MathMacroTemplate.cpp index e82de01..62c681b 100644 --- a/src/mathed/MathMacroTemplate.cpp +++ b/src/mathed/MathMacroTemplate.cpp @@ -465,7 +465,7 @@ docstring MathMacroTemplate::name() const } -void MathMacroTemplate::updateToContext(MacroContext const & mc) const +void MathMacroTemplate::updateToContext(MacroContext const & mc) { redefinition_ = mc.get(name()) != 0; } @@ -551,13 +551,9 @@ void MathMacroTemplate::metrics(MetricsInfo & mi, Dimension & dim) const // valid macro? MacroData const * macro = 0; - if (validName()) { + if (validName()) macro = mi.macrocontext.get(name()); - // updateToContext() - avoids another lookup - redefinition_ = macro != 0; - } - // update look? int argsInDef = maxArgumentInDefinition(); if (lookOutdated_ || argsInDef != argsInLook_) { diff --git a/src/mathed/MathMacroTemplate.h b/src/mathed/MathMacroTemplate.h index 61f82e9..0bb3d4d 100644 --- a/src/mathed/MathMacroTemplate.h +++ b/src/mathed/MathMacroTemplate.h @@ -87,7 +87,7 @@ public: virtual void validate(LaTeXFeatures &) const; /// decide whether its a redefinition - void updateToContext(MacroContext const & mc) const; + void updateToContext(MacroContext const & mc); /// void draw(PainterInfo & pi, int x, int y) const; @@ -164,7 +164,7 @@ private: /// (re)newcommand or def mutable MacroType type_; /// defined before already? - mutable bool redefinition_; + bool redefinition_; /// void createLook(int args) const; /// -- 1.7.9.5