Skip to content

Commit 2d2e297

Browse files
authored
Merge pull request #6441 from PrimozGodec/fix-list-view-selection
[FIX] ListView - empty variable when all values unselected
2 parents fbc9f11 + 0a6165d commit 2d2e297

File tree

2 files changed

+17
-8
lines changed

2 files changed

+17
-8
lines changed

Orange/widgets/gui.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -503,14 +503,14 @@ def __call__(self, *_):
503503
if isinstance(self.view.model(), QSortFilterProxyModel):
504504
selection = self.view.model().mapSelectionToSource(selection)
505505
values = [i.row() for i in selection.indexes()]
506-
if values:
507-
# FIXME: irrespective of PyListModel check, this might/should always
508-
# callback with values!
509-
if isinstance(self.model, PyListModel):
510-
values = [self.model[i] for i in values]
511-
if self.view.selectionMode() == self.view.SingleSelection:
512-
values = values[0]
513-
self.acyclic_setattr(values)
506+
507+
# set attribute's values
508+
if isinstance(self.model, PyListModel):
509+
values = [self.model[i] for i in values]
510+
if self.view.selectionMode() == self.view.SingleSelection:
511+
assert len(values) <= 1
512+
values = values[0] if values else None
513+
self.acyclic_setattr(values)
514514

515515

516516
class CallBackListBox:

Orange/widgets/tests/test_gui.py

+9
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import unittest
12
from unittest.mock import patch
23

34
import numpy as np
@@ -55,6 +56,10 @@ def test_select_callback(self):
5556
view.setCurrentIndex(self.attrs.index(1, 0))
5657
self.assertEqual(widget.foo, [b])
5758

59+
# unselect all
60+
sel_model.clear()
61+
self.assertEqual(widget.foo, [])
62+
5863
def test_select_callfront(self):
5964
widget = self.widget
6065
view = self.view
@@ -129,3 +134,7 @@ def test_argsort():
129134
test_array = np.array(["Bertha", "daniela", "ann", "Cecilia"])
130135
assert_equal(func(test_array, Qt.AscendingOrder), [2, 0, 3, 1])
131136
assert_equal(func(test_array, Qt.DescendingOrder), [1, 3, 0, 2])
137+
138+
139+
if __name__ == "__main__":
140+
unittest.main()

0 commit comments

Comments
 (0)