Ignore completion updates while completing

This commit is contained in:
Florian Bruhin 2014-06-02 16:12:03 +02:00
parent 1928add992
commit 749e330383
2 changed files with 8 additions and 1 deletions

View File

@ -52,6 +52,7 @@ class CompletionView(QTreeView):
COLUMN_WIDTHS: A list of column widths, in percent.
Attributes:
_ignore_change: Whether to ignore the next completion update.
_model: The currently active filter model.
_lastmodel: The model set in the last iteration.
_models: dict of available completion models.
@ -104,6 +105,7 @@ class CompletionView(QTreeView):
def __init__(self, parent=None):
super().__init__(parent)
self._enabled = config.get('completion', 'show')
self._ignore_change = False
self._model = None
self._lastmodel = None
self._models = {
@ -292,6 +294,10 @@ class CompletionView(QTreeView):
text: The new text
cursor_part: The part the cursor is currently over.
"""
if self._ignore_change:
logger.debug("Ignoring completion update")
return
if prefix != ':':
# This is a search or gibberish, so we don't need to complete
# anything (yet)
@ -361,7 +367,9 @@ class CompletionView(QTreeView):
if indexes:
data = self._model.data(indexes[0])
if data is not None:
self._ignore_change = True
self.change_completed_part.emit(data)
self._ignore_change = False
super().selectionChanged(selected, deselected)
def resizeEvent(self, e):

View File

@ -115,7 +115,6 @@ class Command(MinimalLineEdit):
# foo| bar
self.cursor_part = i
if old_cursor_part != i:
# FIXME do we really want to emit this here?
self.update_completion.emit(self.prefix, self.parts,
self.cursor_part)
return