Merge pull request #2853 from rcorre/fix-completionview
Expand history completion results if on last index.
This commit is contained in:
commit
8f63bb1edc
@ -255,6 +255,10 @@ class CompletionView(QTreeView):
|
|||||||
selmodel.setCurrentIndex(
|
selmodel.setCurrentIndex(
|
||||||
idx, QItemSelectionModel.ClearAndSelect | QItemSelectionModel.Rows)
|
idx, QItemSelectionModel.ClearAndSelect | QItemSelectionModel.Rows)
|
||||||
|
|
||||||
|
# if the last item is focused, try to fetch more
|
||||||
|
if idx.row() == self.model().rowCount(idx.parent()) - 1:
|
||||||
|
self.expandAll()
|
||||||
|
|
||||||
count = self.model().count()
|
count = self.model().count()
|
||||||
if count == 0:
|
if count == 0:
|
||||||
self.hide()
|
self.hide()
|
||||||
|
@ -65,6 +65,9 @@ def completionview(qtbot, status_command_stub, config_stub, win_registry,
|
|||||||
}
|
}
|
||||||
# mock the Completer that the widget creates in its constructor
|
# mock the Completer that the widget creates in its constructor
|
||||||
mocker.patch('qutebrowser.completion.completer.Completer', autospec=True)
|
mocker.patch('qutebrowser.completion.completer.Completer', autospec=True)
|
||||||
|
mocker.patch(
|
||||||
|
'qutebrowser.completion.completiondelegate.CompletionItemDelegate',
|
||||||
|
new=lambda *_: None)
|
||||||
view = completionwidget.CompletionView(win_id=0)
|
view = completionwidget.CompletionView(win_id=0)
|
||||||
qtbot.addWidget(view)
|
qtbot.addWidget(view)
|
||||||
return view
|
return view
|
||||||
@ -186,6 +189,37 @@ def test_completion_item_focus_no_model(which, completionview, qtbot):
|
|||||||
completionview.completion_item_focus(which)
|
completionview.completion_item_focus(which)
|
||||||
|
|
||||||
|
|
||||||
|
def test_completion_item_focus_fetch(completionview, qtbot):
|
||||||
|
"""Test that on_next_prev_item moves the selection properly.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
which: the direction in which to move the selection.
|
||||||
|
tree: Each list represents a completion category, with each string
|
||||||
|
being an item under that category.
|
||||||
|
expected: expected argument from on_selection_changed for each
|
||||||
|
successive movement. None implies no signal should be
|
||||||
|
emitted.
|
||||||
|
"""
|
||||||
|
model = completionmodel.CompletionModel()
|
||||||
|
cat = mock.Mock(spec=['layoutChanged', 'layoutAboutToBeChanged',
|
||||||
|
'canFetchMore', 'fetchMore', 'rowCount', 'index', 'data'])
|
||||||
|
cat.canFetchMore = lambda *_: True
|
||||||
|
cat.rowCount = lambda *_: 2
|
||||||
|
cat.fetchMore = mock.Mock()
|
||||||
|
model.add_category(cat)
|
||||||
|
completionview.set_model(model)
|
||||||
|
# clear the fetchMore call that happens on set_model
|
||||||
|
cat.reset_mock()
|
||||||
|
|
||||||
|
# not at end, fetchMore shouldn't be called
|
||||||
|
completionview.completion_item_focus('next')
|
||||||
|
assert not cat.fetchMore.called
|
||||||
|
|
||||||
|
# at end, fetchMore should be called
|
||||||
|
completionview.completion_item_focus('next')
|
||||||
|
assert cat.fetchMore.called
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('show', ['always', 'auto', 'never'])
|
@pytest.mark.parametrize('show', ['always', 'auto', 'never'])
|
||||||
@pytest.mark.parametrize('rows', [[], ['Aa'], ['Aa', 'Bb']])
|
@pytest.mark.parametrize('rows', [[], ['Aa'], ['Aa', 'Bb']])
|
||||||
@pytest.mark.parametrize('quick_complete', [True, False])
|
@pytest.mark.parametrize('quick_complete', [True, False])
|
||||||
|
Loading…
Reference in New Issue
Block a user