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

This commit is contained in:
Florian Bruhin 2017-11-15 07:31:10 +01:00
commit 404f9ea1d0
2 changed files with 30 additions and 6 deletions

View File

@ -28,7 +28,7 @@ from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt, QItemSelectionModel, QSize
from qutebrowser.config import config
from qutebrowser.completion import completiondelegate
from qutebrowser.utils import utils, usertypes, debug, log
from qutebrowser.utils import utils, usertypes, debug, log, objreg
from qutebrowser.commands import cmdexc, cmdutils
@ -386,8 +386,12 @@ class CompletionView(QTreeView):
Args:
sel: 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)
status = objreg.get('status-command', scope='window',
window=self._win_id)
text = status.selectedText()
if not text:
index = self.currentIndex()
if not index.isValid():
raise cmdexc.CommandError("No item selected!")
text = self.model().data(index)
utils.set_clipboard(text, selection=sel)

View File

@ -262,6 +262,26 @@ def test_completion_item_yank(completionview, mocker, sel):
m.set_clipboard.assert_called_once_with('foo', sel)
@pytest.mark.parametrize('sel', [True, False])
def test_completion_item_yank_selected(completionview, status_command_stub,
mocker, sel):
"""Test that completion_item_yank yanks selected text."""
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')
status_command_stub.selectedText = mock.Mock(return_value='something')
completionview.completion_item_yank(sel)
m.set_clipboard.assert_called_once_with('something', sel)
def test_resize_no_model(completionview, qtbot):
"""Ensure no crash if resizeEvent is triggered with no model (#2854)."""
completionview.resizeEvent(None)