Merge remote-tracking branch 'origin/pr/3249'
This commit is contained in:
commit
29cbf75615
@ -377,3 +377,17 @@ class CompletionView(QTreeView):
|
|||||||
if not index.isValid():
|
if not index.isValid():
|
||||||
raise cmdexc.CommandError("No item selected!")
|
raise cmdexc.CommandError("No item selected!")
|
||||||
self.model().delete_cur_item(index)
|
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)
|
||||||
|
@ -2263,6 +2263,8 @@ bindings.default:
|
|||||||
<Ctrl-Shift-Tab>: completion-item-focus prev-category
|
<Ctrl-Shift-Tab>: completion-item-focus prev-category
|
||||||
<Ctrl-D>: completion-item-del
|
<Ctrl-D>: completion-item-del
|
||||||
<Shift-Delete>: completion-item-del
|
<Shift-Delete>: completion-item-del
|
||||||
|
<Ctrl-C>: completion-item-yank
|
||||||
|
<Ctrl-Shift-C>: completion-item-yank --sel
|
||||||
<Return>: command-accept
|
<Return>: command-accept
|
||||||
<Ctrl-B>: rl-backward-char
|
<Ctrl-B>: rl-backward-char
|
||||||
<Ctrl-F>: rl-forward-char
|
<Ctrl-F>: rl-forward-char
|
||||||
|
@ -245,6 +245,23 @@ def test_completion_item_del_no_selection(completionview):
|
|||||||
func.assert_not_called()
|
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):
|
def test_resize_no_model(completionview, qtbot):
|
||||||
"""Ensure no crash if resizeEvent is triggered with no model (#2854)."""
|
"""Ensure no crash if resizeEvent is triggered with no model (#2854)."""
|
||||||
completionview.resizeEvent(None)
|
completionview.resizeEvent(None)
|
||||||
|
Loading…
Reference in New Issue
Block a user