Merge remote-tracking branch 'origin/pr/3249'

This commit is contained in:
Florian Bruhin 2017-11-06 13:46:24 +01:00
commit 29cbf75615
3 changed files with 33 additions and 0 deletions

View File

@ -377,3 +377,17 @@ class CompletionView(QTreeView):
if not index.isValid():
raise cmdexc.CommandError("No item selected!")
self.model().delete_cur_item(index)
@cmdutils.register(instance='completion', hide=True,
modes=[usertypes.KeyMode.command], scope='window')
def completion_item_yank(self, sel=False):
"""Yank the current completion item onto the clipboard.
Args:
sel: True to use the primary selection instead of the clipboard.
"""
index = self.currentIndex()
if not index.isValid():
raise cmdexc.CommandError("No item selected!")
data = self.model().data(index)
utils.set_clipboard(data, selection=sel)

View File

@ -2263,6 +2263,8 @@ bindings.default:
<Ctrl-Shift-Tab>: completion-item-focus prev-category
<Ctrl-D>: completion-item-del
<Shift-Delete>: completion-item-del
<Ctrl-C>: completion-item-yank
<Ctrl-Shift-C>: completion-item-yank --sel
<Return>: command-accept
<Ctrl-B>: rl-backward-char
<Ctrl-F>: rl-forward-char

View File

@ -245,6 +245,23 @@ def test_completion_item_del_no_selection(completionview):
func.assert_not_called()
@pytest.mark.parametrize('sel', [True, False])
def test_completion_item_yank(completionview, mocker, sel):
"""Test that completion_item_yank invokes delete_cur_item in the model."""
m = mocker.patch(
'qutebrowser.completion.completionwidget.utils',
autospec=True)
model = completionmodel.CompletionModel()
cat = listcategory.ListCategory('', [('foo', 'bar')])
model.add_category(cat)
completionview.set_model(model)
completionview.completion_item_focus('next')
completionview.completion_item_yank(sel)
m.set_clipboard.assert_called_once_with('foo', sel)
def test_resize_no_model(completionview, qtbot):
"""Ensure no crash if resizeEvent is triggered with no model (#2854)."""
completionview.resizeEvent(None)