Merge pull request #8200 from qutebrowser/feat/7901_handle_no_selectionmodel_on_clear_selection

Handle no selectionmodel on clear selection
This commit is contained in:
toofar 2024-05-21 07:43:56 +12:00 committed by GitHub
commit c0d883849d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 21 additions and 2 deletions

View File

@ -53,6 +53,8 @@ Fixed
Python upgrade) should now not crash anymore.
- When the QtWebEngine resources dir couldn't be found, qutebrowser now doesn't
crash anymore (but QtWebEngine still might).
- Fixed a rare crash in the completion widget when there was no selection model
when we went to clear that, probably when leaving a mode. (#7901)
[[v3.1.1]]
v3.1.1 (unreleased)

View File

@ -414,7 +414,7 @@ class CompletionView(QTreeView):
def on_clear_completion_selection(self):
"""Clear the selection model when an item is activated."""
self.hide()
selmod = self._selection_model()
selmod = self.selectionModel()
if selmod is not None:
selmod.clearSelection()
selmod.clearCurrentIndex()

View File

@ -7,7 +7,7 @@
from unittest import mock
import pytest
from qutebrowser.qt.core import QRect
from qutebrowser.qt.core import QRect, QItemSelectionModel
from qutebrowser.completion import completionwidget
from qutebrowser.completion.models import completionmodel, listcategory
@ -285,6 +285,23 @@ def test_completion_show(show, rows, quick_complete, completionview, model,
assert not completionview.isVisible()
def test_completion_selection_clear_no_model(completionview):
completionview.show()
completionview.on_clear_completion_selection()
assert completionview.isVisible() is False
def test_completion_selection_clear_with_model(completionview, mocker):
selmod = mock.Mock(spec=QItemSelectionModel)
mocker.patch.object(completionview, "selectionModel", return_value=selmod)
completionview.show()
completionview.on_clear_completion_selection()
assert completionview.isVisible() is False
selmod.clearSelection.assert_called_once()
selmod.clearCurrentIndex.assert_called_once()
def test_completion_item_del(completionview, model):
"""Test that completion_item_del invokes delete_cur_item in the model."""
func = mock.Mock(spec=[])