diff --git a/desktop/src/app.rs b/desktop/src/app.rs index c413e6ad9a..78dfe4e7c2 100644 --- a/desktop/src/app.rs +++ b/desktop/src/app.rs @@ -294,7 +294,7 @@ impl App { self.persistent_data.set_current_document(id); } DesktopFrontendMessage::PersistenceUpdateDocumentsList { ids } => { - self.persistent_data.set_document_order(ids); + self.persistent_data.force_document_order(ids); } DesktopFrontendMessage::PersistenceWritePreferences { preferences } => { preferences::write(preferences); diff --git a/desktop/src/persist.rs b/desktop/src/persist.rs index eafed1722b..bed6cc2dcc 100644 --- a/desktop/src/persist.rs +++ b/desktop/src/persist.rs @@ -67,8 +67,9 @@ impl PersistentData { self.flush(); } - pub(crate) fn set_document_order(&mut self, order: Vec) { + pub(crate) fn force_document_order(&mut self, order: Vec) { self.document_order = Some(order); + self.documents.force_order(self.document_order.as_ref().unwrap()); self.flush(); } @@ -148,7 +149,7 @@ impl DocumentStore { }) } - fn force_order(&mut self, desired_order: &Vec) { + fn force_order(&mut self, desired_order: &[DocumentId]) { let mut ordered_prefix_len = 0; for id in desired_order { if let Some(offset) = self.0[ordered_prefix_len..].iter().position(|meta| meta.id == *id) { @@ -159,7 +160,6 @@ impl DocumentStore { ordered_prefix_len += 1; } } - self.0.truncate(ordered_prefix_len); } fn document_ids(&self) -> Vec {