diff --git a/ftl/core/errors.ftl b/ftl/core/errors.ftl index 23a8cc7a3..cc3b138d0 100644 --- a/ftl/core/errors.ftl +++ b/ftl/core/errors.ftl @@ -1,4 +1,4 @@ errors-invalid-input-empty = Invalid input. errors-invalid-input-details = Invalid input: { $details } errors-parse-number-fail = A number was invalid or out of range. -errors-filtered-parent-deck = Invalid deck name: Filtered decks cannot be parent decks. +errors-filtered-parent-deck = Filtered decks can not have child decks. diff --git a/qt/aqt/deckbrowser.py b/qt/aqt/deckbrowser.py index 9b788bafb..3977edf7b 100644 --- a/qt/aqt/deckbrowser.py +++ b/qt/aqt/deckbrowser.py @@ -287,7 +287,11 @@ class DeckBrowser: self._renderPage(reuse=True) def _handle_drag_and_drop(self, source: int, target: int) -> None: - self.mw.col.decks.drag_drop_decks([source], target) + try: + self.mw.col.decks.drag_drop_decks([source], target) + except Exception as e: + showWarning(str(e)) + return gui_hooks.sidebar_should_refresh_decks() self.show() diff --git a/qt/aqt/sidebar.py b/qt/aqt/sidebar.py index ca2e26e79..513144057 100644 --- a/qt/aqt/sidebar.py +++ b/qt/aqt/sidebar.py @@ -472,7 +472,11 @@ class SidebarTreeView(QTreeView): def on_done(fut: Future) -> None: self.browser.model.endReset() - fut.result() + try: + fut.result() + except Exception as e: + showWarning(str(e)) + return self.refresh() self.mw.deckBrowser.refresh() diff --git a/rslib/src/decks/mod.rs b/rslib/src/decks/mod.rs index 9c69af06d..9ade97912 100644 --- a/rslib/src/decks/mod.rs +++ b/rslib/src/decks/mod.rs @@ -605,6 +605,9 @@ impl Collection { let mut target_name = None; if let Some(target) = target { if let Some(target) = col.storage.get_deck(target)? { + if target.is_filtered() { + return Err(AnkiError::DeckIsFiltered); + } target_deck = target; target_name = Some(target_deck.name.as_str()); }