]> git.lyx.org Git - features.git/commitdiff
Unbreak completion in text mode
authorJean-Marc Lasgouttes <lasgouttes@lyx.org>
Fri, 8 Jun 2018 08:32:47 +0000 (10:32 +0200)
committerJean-Marc Lasgouttes <lasgouttes@lyx.org>
Fri, 8 Jun 2018 08:32:47 +0000 (10:32 +0200)
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

index c90520dc92d8f1ddd7f9b93d2bef62fc26eefc54..e29bfdab874dc3decb3b24d4369fc28ae48b15ee 100644 (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);
 }