From b61691684ec4f3a6c2f4682dd087bcd142a2bd63 Mon Sep 17 00:00:00 2001 From: Ryan Roden-Corrent Date: Sat, 22 Jul 2017 18:06:16 -0400 Subject: [PATCH] Clear selection when setting completion pattern. It doesn't make sense to have an active selection while you are filtering by entering text. You should be in one of two states: 1. Tabbing through completions (valid selection) 2. Entering a filter pattern (invalid selection) Fixes #2843, where a crash would occur after the following: 1. tab to an item other than the first 2. 3. re-type last character 4. This would try to delete an out of range index. --- qutebrowser/completion/completionwidget.py | 1 + tests/unit/completion/test_completionwidget.py | 1 + 2 files changed, 2 insertions(+) diff --git a/qutebrowser/completion/completionwidget.py b/qutebrowser/completion/completionwidget.py index 6e1e51680..39fe16e86 100644 --- a/qutebrowser/completion/completionwidget.py +++ b/qutebrowser/completion/completionwidget.py @@ -297,6 +297,7 @@ class CompletionView(QTreeView): self.pattern = pattern with debug.log_time(log.completion, 'Set pattern {}'.format(pattern)): self.model().set_pattern(pattern) + self.selectionModel().clear() self._maybe_update_geometry() self._maybe_show() diff --git a/tests/unit/completion/test_completionwidget.py b/tests/unit/completion/test_completionwidget.py index 207e557a8..22d150fd8 100644 --- a/tests/unit/completion/test_completionwidget.py +++ b/tests/unit/completion/test_completionwidget.py @@ -87,6 +87,7 @@ def test_set_pattern(completionview): completionview.set_model(model) completionview.set_pattern('foo') model.set_pattern.assert_called_with('foo') + assert not completionview.selectionModel().currentIndex().isValid() def test_set_pattern_no_model(completionview):