Fix state toggling when current is deleted

This commit is contained in:
RumovZ 2021-03-29 11:54:35 +02:00
parent d6bac20c58
commit fb86320038

View file

@ -432,7 +432,7 @@ class Table:
if rows: if rows:
if len(rows) < self.SELECTION_LIMIT: if len(rows) < self.SELECTION_LIMIT:
return rows return rows
if current in rows: if current and current in rows:
return [current] return [current]
return rows[0:1] return rows[0:1]
return [current if current else 0] return [current if current else 0]
@ -454,9 +454,10 @@ class Table:
selected_rows = self._model.get_item_rows( selected_rows = self._model.get_item_rows(
self._state.get_new_items(self._selected_items) self._state.get_new_items(self._selected_items)
) )
current_row = self._current_item and self._model.get_item_row( current_row = None
self._state.get_new_item(self._current_item) 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 return selected_rows, current_row
# Move # Move
@ -607,15 +608,9 @@ class ItemState(ABC):
def toggle_state(self) -> ItemState: def toggle_state(self) -> ItemState:
"""Return an instance of the other state.""" """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 @abstractmethod
def get_new_items(self, old_items: Sequence[ItemId]) -> ItemList: def get_new_items(self, old_items: Sequence[ItemId]) -> ItemList:
"""Given a list of ids from the other state, return the corresponding """Given a list of ids from the other state, return the corresponding ids for this state."""
ids for this state."""
class CardState(ItemState): class CardState(ItemState):
@ -707,9 +702,6 @@ class CardState(ItemState):
def toggle_state(self) -> NoteState: def toggle_state(self) -> NoteState:
return NoteState(self.col) 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]: def get_new_items(self, old_items: Sequence[ItemId]) -> Sequence[CardId]:
return super().card_ids_from_note_ids(old_items) return super().card_ids_from_note_ids(old_items)
@ -795,9 +787,6 @@ class NoteState(ItemState):
def toggle_state(self) -> CardState: def toggle_state(self) -> CardState:
return CardState(self.col) 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]: def get_new_items(self, old_items: Sequence[ItemId]) -> Sequence[NoteId]:
return super().note_ids_from_card_ids(old_items) return super().note_ids_from_card_ids(old_items)