mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-09 18:31:04 +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
939dc4076f
commit
52ce0ff49a
@ -1712,8 +1712,11 @@ void Cursor::handleNest(MathAtom const & a)
|
||||
{
|
||||
idx_type const idx = a.nucleus()->asNestInset()->firstIdx();
|
||||
//lyxerr << "Cursor::handleNest: " << idx << endl;
|
||||
InsetMath const * im = selectionBegin().inset().asInsetMath();
|
||||
Parse::flags const f = im && im->currentMode() != InsetMath::MATH_MODE
|
||||
? Parse::TEXTMODE : Parse::NORMAL;
|
||||
MathAtom t = a;
|
||||
asArray(cap::grabAndEraseSelection(*this), t.nucleus()->cell(idx));
|
||||
asArray(cap::grabAndEraseSelection(*this), t.nucleus()->cell(idx), f);
|
||||
insert(t);
|
||||
editInsertedInset();
|
||||
}
|
||||
|
@ -36,7 +36,8 @@ InsetMathColor::InsetMathColor(Buffer * buf, bool oldstyle, ColorCode color)
|
||||
|
||||
InsetMathColor::InsetMathColor(Buffer * buf, bool oldstyle,
|
||||
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
|
||||
{
|
||||
current_mode_ = isTextFont(mi.base.fontname) ? TEXT_MODE : MATH_MODE;
|
||||
Changer dummy = mi.base.changeEnsureMath(current_mode_);
|
||||
|
||||
cell(0).metrics(mi, dim);
|
||||
}
|
||||
|
||||
|
||||
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();
|
||||
pi.base.font.setColor(lcolor.getFromLaTeXName(to_utf8(color_)));
|
||||
cell(0).draw(pi, x, y);
|
||||
|
@ -34,6 +34,8 @@ public:
|
||||
void draw(PainterInfo & pi, int x, int y) const override;
|
||||
/// we need package color
|
||||
void validate(LaTeXFeatures & features) const override;
|
||||
/// we inherit the mode
|
||||
mode_type currentMode() const override { return current_mode_; }
|
||||
///
|
||||
void write(TeXMathStream & os) const override;
|
||||
/// FIXME XHTML For now, we do nothing with color.
|
||||
@ -53,6 +55,8 @@ private:
|
||||
bool oldstyle_;
|
||||
/// Our color. Only valid LaTeX colors are allowed.
|
||||
docstring color_;
|
||||
/// the inherited mode
|
||||
mutable mode_type current_mode_;
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user