From ddbaa0fb94a226c83759b30f9002f111c8723037 Mon Sep 17 00:00:00 2001 From: Dylan Jeannin Date: Fri, 22 May 2026 10:53:07 +0200 Subject: [PATCH] Pollutants: Fixed pollutant deletion removing the absolute index instead of the relative index --- src/View/Pollutants/Table.py | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/View/Pollutants/Table.py b/src/View/Pollutants/Table.py index 0ba3c493..57cd9bc9 100644 --- a/src/View/Pollutants/Table.py +++ b/src/View/Pollutants/Table.py @@ -48,7 +48,12 @@ _translate = QCoreApplication.translate class TableModel(PamhyrTableModel): def _setup_lst(self): - self._lst = self._data._Pollutants + self._lst = list( + filter( + lambda dif: dif._deleted is False, + self._data._Pollutants._lst + ) + ) def rowCount(self, parent): return len(self._lst) @@ -61,7 +66,7 @@ class TableModel(PamhyrTableModel): column = index.column() if self._headers[column] == "name": - return self._lst.get(row).name + return self._lst[row].name return QVariant() @@ -91,29 +96,36 @@ class TableModel(PamhyrTableModel): self._undo.push( AddCommand( - self._lst, row, self._data.ic_adists + self._data._Pollutants, row, self._data.ic_adists ) ) + self._setup_lst() self.endInsertRows() self.layoutChanged.emit() def delete(self, rows, parent=QModelIndex()): self.beginRemoveRows(parent, rows[0], rows[-1]) + data_rows = { + id(pol): i for i, pol in enumerate(self._data._Pollutants._lst) + } self._undo.push( DelCommand( - self._lst, rows, self._data.ic_adists + self._data._Pollutants, + [data_rows[id(self._lst[row])] for row in rows + if 0 <= row < len(self._lst)], + self._data.ic_adists ) ) - + self._setup_lst() self.endRemoveRows() self.layoutChanged.emit() def enabled(self, row, enabled, parent=QModelIndex()): self._undo.push( SetEnabledCommand( - self._lst, row, enabled + self._data._Pollutants, row, enabled ) ) self.layoutChanged.emit()