From fb86320038231ff9af04800284a97c83ab0c6234 Mon Sep 17 00:00:00 2001 From: RumovZ Date: Mon, 29 Mar 2021 11:54:35 +0200 Subject: [PATCH] Fix state toggling when current is deleted --- qt/aqt/table.py | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/qt/aqt/table.py b/qt/aqt/table.py index af80022fb..fbb8561a8 100644 --- a/qt/aqt/table.py +++ b/qt/aqt/table.py @@ -432,7 +432,7 @@ class Table: if rows: if len(rows) < self.SELECTION_LIMIT: return rows - if current in rows: + if current and current in rows: return [current] return rows[0:1] return [current if current else 0] @@ -454,9 +454,10 @@ class Table: selected_rows = self._model.get_item_rows( self._state.get_new_items(self._selected_items) ) - current_row = self._current_item and self._model.get_item_row( - self._state.get_new_item(self._current_item) - ) + current_row = None + if self._current_item: + if new_current := self._state.get_new_items([self._current_item]): + current_row = self._model.get_item_row(new_current[0]) return selected_rows, current_row # Move @@ -607,15 +608,9 @@ class ItemState(ABC): def toggle_state(self) -> ItemState: """Return an instance of the other state.""" - @abstractmethod - def get_new_item(self, old_item: ItemId) -> ItemId: - """Given an id from the other state, return the corresponding id for - this state.""" - @abstractmethod def get_new_items(self, old_items: Sequence[ItemId]) -> ItemList: - """Given a list of ids from the other state, return the corresponding - ids for this state.""" + """Given a list of ids from the other state, return the corresponding ids for this state.""" class CardState(ItemState): @@ -707,9 +702,6 @@ class CardState(ItemState): def toggle_state(self) -> NoteState: return NoteState(self.col) - def get_new_item(self, old_item: ItemId) -> CardId: - return super().card_ids_from_note_ids([old_item])[0] - def get_new_items(self, old_items: Sequence[ItemId]) -> Sequence[CardId]: return super().card_ids_from_note_ids(old_items) @@ -795,9 +787,6 @@ class NoteState(ItemState): def toggle_state(self) -> CardState: return CardState(self.col) - def get_new_item(self, old_item: ItemId) -> NoteId: - return super().note_ids_from_card_ids([old_item])[0] - def get_new_items(self, old_items: Sequence[ItemId]) -> Sequence[NoteId]: return super().note_ids_from_card_ids(old_items)