fix crashing multivalue of files widget

This commit is contained in:
Jakub Trllo 2022-10-04 17:39:07 +02:00
parent b7bd66eedc
commit 08e9262b0f

View file

@ -283,6 +283,15 @@ class FilesModel(QtGui.QStandardItemModel):
if not items:
return
if self._multivalue:
_items = []
for item in items:
if isinstance(item, (tuple, list, set)):
_items.extend(item)
else:
_items.append(item)
items = _items
file_items = FileDefItem.from_value(items, self._allow_sequences)
if not file_items:
return
@ -615,6 +624,7 @@ class FilesView(QtWidgets.QListView):
self.customContextMenuRequested.connect(self._on_context_menu_request)
self._remove_btn = remove_btn
self._multivalue = False
def setSelectionModel(self, *args, **kwargs):
"""Catch selection model set to register signal callback.
@ -629,12 +639,13 @@ class FilesView(QtWidgets.QListView):
def set_multivalue(self, multivalue):
"""Disable remove button on multivalue."""
self._multivalue = multivalue
self._remove_btn.setVisible(not multivalue)
def update_remove_btn_visibility(self):
model = self.model()
visible = False
if model:
if not self._multivalue and model:
visible = model.rowCount() > 0
self._remove_btn.setVisible(visible)
@ -749,12 +760,13 @@ class FilesWidget(QtWidgets.QFrame):
self._layout = layout
def _set_multivalue(self, multivalue):
if self._multivalue == multivalue:
if self._multivalue is multivalue:
return
self._multivalue = multivalue
self._files_view.set_multivalue(multivalue)
self._files_model.set_multivalue(multivalue)
self._files_proxy_model.set_multivalue(multivalue)
self.setEnabled(not multivalue)
def set_value(self, value, multivalue):
self._in_set_value = True