Merge branch 'fix/7947_clean_up_selection_models'

This commit is contained in:
toofar 2024-06-22 16:31:22 +12:00
commit f14f2afd10
3 changed files with 17 additions and 3 deletions

View File

@ -72,6 +72,10 @@ qt_log_ignore =
^[^ ]*qtwebengine_dictionaries'$
# Qt 5 on Archlinux
^QSslSocket: cannot resolve .*
# Seems to happen after we try to complete immediately after clearing a
# model, for example, when no completion function is available for the
# current text pattern.
QItemSelectionModel: Selecting when no model has been set will result in a no-op.
xfail_strict = true
filterwarnings =
error

View File

@ -364,15 +364,13 @@ class CompletionView(QTreeView):
old_model = self.model()
if old_model is not None and model is not old_model:
old_model.deleteLater()
self._selection_model().deleteLater()
self.setModel(model)
if model is None:
self._active = False
self.hide()
return
self.setModel(model)
model.setParent(self)
self._active = True
self.pattern = None

View File

@ -146,6 +146,18 @@ def test_completion_item_focus_no_model(which, completionview, model, qtbot):
completionview.completion_item_focus(which)
def test_models_deleted_on_clear(completionview, model, qtbot):
"""Ensure set_model(None) deleted the model and selmodel."""
completionview.set_model(model)
selmod = completionview._selection_model()
completionview.set_model(None)
with qtbot.wait_signal(model.destroyed):
pass
with qtbot.wait_signal(selmod.destroyed):
pass
@pytest.mark.skip("Seems to disagree with reality, see #5897")
def test_completion_item_focus_fetch(completionview, model, qtbot):
"""Test that on_next_prev_item moves the selection properly."""