diff --git a/src/View/WeatherParameters/Window.py b/src/View/WeatherParameters/Window.py index 9fac4eba..a8f8474a 100644 --- a/src/View/WeatherParameters/Window.py +++ b/src/View/WeatherParameters/Window.py @@ -148,6 +148,7 @@ class WeatherParametersWindow(PamhyrWindow): self.table_default.setModel(self._table) self.table_default.setSelectionBehavior(QAbstractItemView.SelectRows) + self.table_default.setSelectionMode(QAbstractItemView.SingleSelection) self.table_default.horizontalHeader().setSectionResizeMode( QHeaderView.Stretch ) @@ -211,21 +212,31 @@ class WeatherParametersWindow(PamhyrWindow): ) self.table_spec.scrollTo(index) - default_selection = self.table_default.selectionModel() - default_index = self.table_default.model().index(0, 0) - default_selection.select( - default_index, + self._selected_default_row_index = 0 + self.select_table_default_row(0) + + def select_table_default_row(self, row): + model = self.table_default.model() + if model is None or model.rowCount() == 0: + return + + row = max(0, min(row, model.rowCount() - 1)) + index = model.index(row, 0) + + self.table_default.setCurrentIndex(index) + self.table_default.selectionModel().select( + index, QItemSelectionModel.Rows | QItemSelectionModel.ClearAndSelect | QItemSelectionModel.Select ) - self.table_default.scrollTo(default_index) + self.table_default.scrollTo(index) def on_table_default_selection_changed(self, selected, deselected): rows = self.table_default.selectionModel().selectedRows() if len(rows) == 0: - self._selected_default_row_index = None - return None + self.select_table_default_row(self._selected_default_row_index) + return self._selected_default_row_index self._selected_default_row_index = rows[0].row()