mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-22 05:16:21 +00:00
Fix crash when copying a macro with instant preview on
The MacroData pointer is updated by MathData::metrics() which is not called when selecting a math inset with instant preview for math on. Thus, we have to update it in the copy constructor otherwise a crash is almost assured when hitting Ctrl+C.
This commit is contained in:
parent
e4fada8c57
commit
f3b03699ef
@ -69,6 +69,8 @@ public:
|
||||
char const * MathMLtype() const;
|
||||
///
|
||||
void setSymbol(latexkeys const * sym) { sym_ = sym; }
|
||||
///
|
||||
DocIterator const & pos() { return pos_; }
|
||||
|
||||
/// lock while being drawn to avoid recursions
|
||||
int lock() const { return ++lockCount_; }
|
||||
|
@ -203,6 +203,14 @@ MathMacro::MathMacro(MathMacro const & that)
|
||||
: InsetMathNest(that), d(new Private(*that.d))
|
||||
{
|
||||
d->updateChildren(this);
|
||||
if (d->macro_ && lyxrc.preview == LyXRC::PREVIEW_ON) {
|
||||
// We need to update d->macro_ by ourselves because in this case
|
||||
// MathData::metrics() is not called when selecting a math inset
|
||||
DocIterator const & pos = d->macroBackup_.pos();
|
||||
d->macro_ = pos.buffer()->getMacro(name(), pos);
|
||||
if (!d->macro_)
|
||||
d->macro_ = &d->macroBackup_;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -213,6 +221,14 @@ MathMacro & MathMacro::operator=(MathMacro const & that)
|
||||
InsetMathNest::operator=(that);
|
||||
*d = *that.d;
|
||||
d->updateChildren(this);
|
||||
if (d->macro_ && lyxrc.preview == LyXRC::PREVIEW_ON) {
|
||||
// We need to update d->macro_ by ourselves because in this case
|
||||
// MathData::metrics() is not called when selecting a math inset
|
||||
DocIterator const & pos = d->macroBackup_.pos();
|
||||
d->macro_ = pos.buffer()->getMacro(name(), pos);
|
||||
if (!d->macro_)
|
||||
d->macro_ = &d->macroBackup_;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user