Unbreak completion in text mode

Completion uses a complicated async scheme based on timers to update
itself. This is probably not necessary anymore and is fragile to
event order changes.

This is what happens with the new painting scheme. Therefore the
asyncHideXXX() methods have to be made more robust and detect whether
completion state has changed by the time they are triggered.

(cherry picked from commit f1ea7fee5c)
This commit is contained in:
Jean-Marc Lasgouttes 2018-06-08 10:32:47 +02:00
parent 97fe69426d
commit 00ec2dd106

View File

@ -538,7 +538,9 @@ void GuiCompleter::showPopup(Cursor const & cur)
void GuiCompleter::asyncHidePopup()
{
popup()->hide();
if (!inlineVisible())
// do not clear model if it has been set by an event before the
// timeout got triggered.
if (!modelActive_ && !inlineVisible())
model_->setList(0);
}
@ -573,7 +575,9 @@ void GuiCompleter::hideInline(Cursor const & cur)
void GuiCompleter::asyncHideInline()
{
if (!popupVisible())
// do not clear model if it has been set by an event before the
// timeout got triggered.
if (!modelActive_ && !popupVisible())
model_->setList(0);
}