Desktop: Fix document tab reorder not being persisted (#4002)

* Desktop: Fix reorder not beeing persisted

* Desktop: Use rfd fork to support starting_directory with zenity dialog backend
This commit is contained in:
Timon
2026-04-08 01:13:30 +02:00
committed by GitHub
parent 1d0337285a
commit 211111a01f
4 changed files with 14 additions and 445 deletions
+1 -1
View File
@@ -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);
+3 -3
View File
@@ -67,8 +67,9 @@ impl PersistentData {
self.flush();
}
pub(crate) fn set_document_order(&mut self, order: Vec<DocumentId>) {
pub(crate) fn force_document_order(&mut self, order: Vec<DocumentId>) {
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<DocumentId>) {
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<DocumentId> {