|
42 | 42 | is_macstyle |
43 | 43 | ) |
44 | 44 | from orangewidget.utils.itemmodels import PyTableModel |
| 45 | +from orangewidget.utils.listview import ListViewFilter |
45 | 46 |
|
46 | 47 | try: |
47 | 48 | # Some Orange widgets might expect this here |
@@ -192,13 +193,15 @@ def listView(widget, master, value=None, model=None, box=None, callback=None, |
192 | 193 | else: |
193 | 194 | bg = widget |
194 | 195 | view = viewType(preferred_size=sizeHint) |
195 | | - if isinstance(view.model(), QSortFilterProxyModel): |
| 196 | + if isinstance(view, ListViewFilter): |
196 | 197 | view.model().setSourceModel(model) |
| 198 | + signal = view.sigSelectionChanged |
197 | 199 | else: |
198 | 200 | view.setModel(model) |
| 201 | + signal = view.selectionModel().selectionChanged |
199 | 202 | if value is not None: |
200 | 203 | connectControl(master, value, callback, |
201 | | - view.selectionModel().selectionChanged, |
| 204 | + signal, |
202 | 205 | CallFrontListView(view), |
203 | 206 | CallBackListView(model, view, master, value)) |
204 | 207 | misc.setdefault('uniformItemSizes', True) |
@@ -500,8 +503,8 @@ def __call__(self, *_): |
500 | 503 | from Orange.widgets.utils.itemmodels import PyListModel |
501 | 504 |
|
502 | 505 | selection = self.view.selectionModel().selection() |
503 | | - if isinstance(self.view.model(), QSortFilterProxyModel): |
504 | | - selection = self.view.model().mapSelectionToSource(selection) |
| 506 | + if isinstance(self.view, ListViewFilter): |
| 507 | + selection = self.view.selection |
505 | 508 | values = [i.row() for i in selection.indexes()] |
506 | 509 |
|
507 | 510 | # set attribute's values |
|
0 commit comments