From f1ea7fee5cda3fbbeb9fdbb8bec2bd91c0745e56 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Fri, 8 Jun 2018 10:32:47 +0200 Subject: [PATCH] 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. --- src/frontends/qt4/GuiCompleter.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/frontends/qt4/GuiCompleter.cpp b/src/frontends/qt4/GuiCompleter.cpp index c90520dc92..e29bfdab87 100644 --- a/src/frontends/qt4/GuiCompleter.cpp +++ b/src/frontends/qt4/GuiCompleter.cpp @@ -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); } -- 2.39.2