forked from M-Labs/artiq
gui/models: handle Qt calling DictSyncTreeSepModel.index with garbage inputs. Closes #388
This commit is contained in:
parent
e7d448efd3
commit
936190033e
|
@ -252,13 +252,24 @@ class DictSyncTreeSepModel(QtCore.QAbstractItemModel):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def index(self, row, column, parent):
|
def index(self, row, column, parent):
|
||||||
|
if column >= len(self.headers):
|
||||||
|
return QtCore.QModelIndex()
|
||||||
if parent.isValid():
|
if parent.isValid():
|
||||||
parent_item = parent.internalPointer()
|
parent_item = parent.internalPointer()
|
||||||
return self.createIndex(row, column,
|
try:
|
||||||
parent_item.children_by_row[row])
|
child = parent_item.children_by_row[row]
|
||||||
|
except IndexError:
|
||||||
|
# This can happen when the last row is selected
|
||||||
|
# and then deleted; Qt will attempt to select
|
||||||
|
# the non-existent next one.
|
||||||
|
return QtCore.QModelIndex()
|
||||||
|
return self.createIndex(row, column, child)
|
||||||
else:
|
else:
|
||||||
return self.createIndex(row, column,
|
try:
|
||||||
self.children_by_row[row])
|
child = self.children_by_row[row]
|
||||||
|
except IndexError:
|
||||||
|
return QtCore.QModelIndex()
|
||||||
|
return self.createIndex(row, column, child)
|
||||||
|
|
||||||
def _index_item(self, item):
|
def _index_item(self, item):
|
||||||
if item is self:
|
if item is self:
|
||||||
|
|
Loading…
Reference in New Issue