Correctly classify macros

Some macros defined in the lib/symbols file are classified are texmode.
But the MathMacro class was missing a currentMode method for returning
this information.
This commit is contained in:
Enrico Forestieri 2016-09-25 01:11:16 +02:00
parent 3bc08a76c4
commit 314e30d5fd
2 changed files with 14 additions and 3 deletions

View File

@ -614,9 +614,7 @@ void MathMacro::draw(PainterInfo & pi, int x, int y) const
drawMarkers2(pi, expx, expy); drawMarkers2(pi, expx, expy);
} else { } else {
bool drawBox = lyxrc.macro_edit_style == LyXRC::MACRO_EDIT_INLINE_BOX; bool drawBox = lyxrc.macro_edit_style == LyXRC::MACRO_EDIT_INLINE_BOX;
bool user_macro = !MacroTable::globalMacros().get(name()); bool upshape = currentMode() == TEXT_MODE;
bool upshape = user_macro ? false : d->macro_ && d->macro_->symbol()
&& d->macro_->symbol()->extra == "textmode";
Changer dummy = pi.base.font.changeShape(upshape ? UP_SHAPE Changer dummy = pi.base.font.changeShape(upshape ? UP_SHAPE
: pi.base.font.shape()); : pi.base.font.shape());
@ -753,6 +751,17 @@ size_t MathMacro::appetite() const
} }
InsetMath::mode_type MathMacro::currentMode() const
{
// User defined macros are always assumed to be mathmode macros.
// Only the global macros defined in lib/symbols may be textmode.
MacroData const * data = MacroTable::globalMacros().get(name());
bool textmode = data && data->symbol() && data->symbol()->extra == "textmode";
return textmode ? TEXT_MODE : MATH_MODE;
}
void MathMacro::validate(LaTeXFeatures & features) const void MathMacro::validate(LaTeXFeatures & features) const
{ {
// Immediately after a document is loaded, in some cases the MacroData // Immediately after a document is loaded, in some cases the MacroData

View File

@ -70,6 +70,8 @@ public:
/// ///
void validate(LaTeXFeatures &) const; void validate(LaTeXFeatures &) const;
///
mode_type currentMode() const;
/// ///
void write(WriteStream & os) const; void write(WriteStream & os) const;