mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-21 23:09:40 +00:00
Fix another crash due to BufferView::last_inset_ being an invalid pointer.
Now, we only want to let the last_inset_ pointer point at insets that accept the mouse_hover setting. Otherwise, the pointer is not cleared on deletion of the inset. See also r33908, r34117, r34348, r34353 and bug #3900. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34354 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
9c8e7429fa
commit
750620765f
@ -1895,18 +1895,22 @@ void BufferView::updateHoveredInset() const
|
||||
return;
|
||||
|
||||
bool need_redraw = false;
|
||||
if (d->last_inset_)
|
||||
if (d->last_inset_) {
|
||||
// Remove the hint on the last hovered inset (if any).
|
||||
need_redraw |= d->last_inset_->setMouseHover(this, false);
|
||||
d->last_inset_ = 0;
|
||||
}
|
||||
|
||||
// const_cast because of setMouseHover().
|
||||
Inset * inset = const_cast<Inset *>(covering_inset);
|
||||
if (inset)
|
||||
// Highlight the newly hovered inset (if any).
|
||||
need_redraw |= inset->setMouseHover(this, true);
|
||||
if (inset && inset->setMouseHover(this, true)) {
|
||||
need_redraw = true;
|
||||
// Only the insets that accept the hover state, do
|
||||
// clear the last_inset_, so only set the last_inset_
|
||||
// member if the hovered setting is accepted.
|
||||
d->last_inset_ = inset;
|
||||
}
|
||||
|
||||
d->last_inset_ = inset;
|
||||
|
||||
if (need_redraw) {
|
||||
LYXERR(Debug::PAINTING, "Mouse hover detected at: ("
|
||||
<< d->mouse_position_cache_.x_ << ", "
|
||||
|
Loading…
x
Reference in New Issue
Block a user