diff --git a/qt/aqt/operations/deck.py b/qt/aqt/operations/deck.py index 518beafaf..5c2300f3e 100644 --- a/qt/aqt/operations/deck.py +++ b/qt/aqt/operations/deck.py @@ -35,9 +35,8 @@ def reparent_decks( return CollectionOp( parent, lambda col: col.decks.reparent(deck_ids=deck_ids, new_parent=new_parent) ).success( - lambda out: tooltip( - tr.browsing_reparented_decks(count=out.count), parent=parent - ) + lambda out: out.count > 0 + and tooltip(tr.browsing_reparented_decks(count=out.count), parent=parent) ) diff --git a/rslib/src/decks/reparent.rs b/rslib/src/decks/reparent.rs index a9fcd318f..a30b1a181 100644 --- a/rslib/src/decks/reparent.rs +++ b/rslib/src/decks/reparent.rs @@ -20,22 +20,33 @@ impl Collection { new_parent: Option, ) -> Result { let usn = self.usn()?; - let target_deck; + let mut target_deck = None; let mut target_name = None; if let Some(target) = new_parent { if let Some(target) = self.storage.get_deck(target)? { if target.is_filtered() { return Err(FilteredDeckError::MustBeLeafNode.into()); } - target_deck = target; - target_name = Some(&target_deck.name); + target_deck = Some(target); + target_name = Some(target_deck.as_ref().unwrap().name.clone()); } } let mut count = 0; for deck in deck_ids { if let Some(mut deck) = self.storage.get_deck(*deck)? { - if let Some(new_name) = deck.name.reparented_name(target_name) { + if let Some(new_name) = deck.name.reparented_name(target_name.as_ref()) { + + let parent_decks = self.storage.parent_decks(&deck).unwrap(); + match target_deck { + Some(ref target) => if parent_decks.contains(&target) { + continue; + } + None => if parent_decks.is_empty() { + continue; + } + } + count += 1; let orig = deck.clone();