mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-25 19:07:45 +00:00
Make the export of macros thread-safer
When we export the file to latex, we use the redefinition_ variable to check whether we should output newcommand or renewcommand. This variable was set by the MathMacroTemplate::metrics() function, and this caused problem when the export is running in a different thread as the GUI. In general, the metrics() functions should not change the Buffer; we have updateBuffer/updateMacros for that purpose.
This commit is contained in:
parent
9680f392b0
commit
6ed292122d
@ -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;
|
redefinition_ = mc.get(name()) != 0;
|
||||||
}
|
}
|
||||||
@ -551,13 +551,9 @@ void MathMacroTemplate::metrics(MetricsInfo & mi, Dimension & dim) const
|
|||||||
|
|
||||||
// valid macro?
|
// valid macro?
|
||||||
MacroData const * macro = 0;
|
MacroData const * macro = 0;
|
||||||
if (validName()) {
|
if (validName())
|
||||||
macro = mi.macrocontext.get(name());
|
macro = mi.macrocontext.get(name());
|
||||||
|
|
||||||
// updateToContext() - avoids another lookup
|
|
||||||
redefinition_ = macro != 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// update look?
|
// update look?
|
||||||
int argsInDef = maxArgumentInDefinition();
|
int argsInDef = maxArgumentInDefinition();
|
||||||
if (lookOutdated_ || argsInDef != argsInLook_) {
|
if (lookOutdated_ || argsInDef != argsInLook_) {
|
||||||
|
@ -87,7 +87,7 @@ public:
|
|||||||
virtual void validate(LaTeXFeatures &) const;
|
virtual void validate(LaTeXFeatures &) const;
|
||||||
|
|
||||||
/// decide whether its a redefinition
|
/// 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;
|
void draw(PainterInfo & pi, int x, int y) const;
|
||||||
@ -164,7 +164,7 @@ private:
|
|||||||
/// (re)newcommand or def
|
/// (re)newcommand or def
|
||||||
mutable MacroType type_;
|
mutable MacroType type_;
|
||||||
/// defined before already?
|
/// defined before already?
|
||||||
mutable bool redefinition_;
|
bool redefinition_;
|
||||||
///
|
///
|
||||||
void createLook(int args) const;
|
void createLook(int args) const;
|
||||||
///
|
///
|
||||||
|
Loading…
Reference in New Issue
Block a user