mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-11 19:14:51 +00:00
Fix bug #11007
The math color inset inherits the mode of the containing inset. This mode is inferred by the kind of font in effect. Setting the right mode allows to insert spaces where these should be allowed. Another small glitch was that the selection was always parsed in math mode, so that any space was swallowed, even if the inset would allow them.
This commit is contained in:
parent
51ec16b6c7
commit
9a831200a4
@ -1556,8 +1556,11 @@ docstring Cursor::macroName()
|
|||||||
void Cursor::handleNest(MathAtom const & a, int c)
|
void Cursor::handleNest(MathAtom const & a, int c)
|
||||||
{
|
{
|
||||||
//lyxerr << "Cursor::handleNest: " << c << endl;
|
//lyxerr << "Cursor::handleNest: " << c << endl;
|
||||||
|
InsetMath const * im = selectionBegin().inset().asInsetMath();
|
||||||
|
Parse::flags const f = im && im->currentMode() != InsetMath::MATH_MODE
|
||||||
|
? Parse::TEXTMODE : Parse::NORMAL;
|
||||||
MathAtom t = a;
|
MathAtom t = a;
|
||||||
asArray(cap::grabAndEraseSelection(*this), t.nucleus()->cell(c));
|
asArray(cap::grabAndEraseSelection(*this), t.nucleus()->cell(c), f);
|
||||||
insert(t);
|
insert(t);
|
||||||
posBackward();
|
posBackward();
|
||||||
pushBackward(*nextInset());
|
pushBackward(*nextInset());
|
||||||
|
@ -36,7 +36,8 @@ InsetMathColor::InsetMathColor(Buffer * buf, bool oldstyle, ColorCode color)
|
|||||||
|
|
||||||
InsetMathColor::InsetMathColor(Buffer * buf, bool oldstyle,
|
InsetMathColor::InsetMathColor(Buffer * buf, bool oldstyle,
|
||||||
docstring const & color)
|
docstring const & color)
|
||||||
: InsetMathNest(buf, 1), oldstyle_(oldstyle), color_(color)
|
: InsetMathNest(buf, 1), oldstyle_(oldstyle), color_(color),
|
||||||
|
current_mode_(UNDECIDED_MODE)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
@ -48,12 +49,18 @@ Inset * InsetMathColor::clone() const
|
|||||||
|
|
||||||
void InsetMathColor::metrics(MetricsInfo & mi, Dimension & dim) const
|
void InsetMathColor::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||||
{
|
{
|
||||||
|
current_mode_ = isTextFont(mi.base.fontname) ? TEXT_MODE : MATH_MODE;
|
||||||
|
Changer dummy = mi.base.changeEnsureMath(current_mode_);
|
||||||
|
|
||||||
cell(0).metrics(mi, dim);
|
cell(0).metrics(mi, dim);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void InsetMathColor::draw(PainterInfo & pi, int x, int y) const
|
void InsetMathColor::draw(PainterInfo & pi, int x, int y) const
|
||||||
{
|
{
|
||||||
|
current_mode_ = isTextFont(pi.base.fontname) ? TEXT_MODE : MATH_MODE;
|
||||||
|
Changer dummy = pi.base.changeEnsureMath(current_mode_);
|
||||||
|
|
||||||
ColorCode origcol = pi.base.font.color();
|
ColorCode origcol = pi.base.font.color();
|
||||||
pi.base.font.setColor(lcolor.getFromLaTeXName(to_utf8(color_)));
|
pi.base.font.setColor(lcolor.getFromLaTeXName(to_utf8(color_)));
|
||||||
cell(0).draw(pi, x, y);
|
cell(0).draw(pi, x, y);
|
||||||
|
@ -34,6 +34,8 @@ public:
|
|||||||
void draw(PainterInfo & pi, int x, int y) const;
|
void draw(PainterInfo & pi, int x, int y) const;
|
||||||
/// we need package color
|
/// we need package color
|
||||||
void validate(LaTeXFeatures & features) const;
|
void validate(LaTeXFeatures & features) const;
|
||||||
|
/// we inherit the mode
|
||||||
|
mode_type currentMode() const override { return current_mode_; }
|
||||||
///
|
///
|
||||||
void write(WriteStream & os) const;
|
void write(WriteStream & os) const;
|
||||||
/// FIXME XHTML For now, we do nothing with color.
|
/// FIXME XHTML For now, we do nothing with color.
|
||||||
@ -53,6 +55,8 @@ private:
|
|||||||
bool oldstyle_;
|
bool oldstyle_;
|
||||||
/// Our color. Only valid LaTeX colors are allowed.
|
/// Our color. Only valid LaTeX colors are allowed.
|
||||||
docstring color_;
|
docstring color_;
|
||||||
|
/// the inherited mode
|
||||||
|
mutable mode_type current_mode_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -90,6 +90,8 @@ What's new
|
|||||||
|
|
||||||
- On screen, show upper case greek letters in \mathbf as bold (bug 3751).
|
- On screen, show upper case greek letters in \mathbf as bold (bug 3751).
|
||||||
|
|
||||||
|
- Fix coloring of text-mode material in math equations (bug 11007).
|
||||||
|
|
||||||
|
|
||||||
* INTERNALS
|
* INTERNALS
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user