mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-30 03:58:11 +08:00
persist data cleanup
This commit is contained in:
@@ -6,14 +6,13 @@ pub(crate) struct PersistentData {
|
|||||||
current_document: Option<DocumentId>,
|
current_document: Option<DocumentId>,
|
||||||
#[serde(skip)]
|
#[serde(skip)]
|
||||||
document_order: Option<Vec<DocumentId>>,
|
document_order: Option<Vec<DocumentId>>,
|
||||||
preferences: Option<Preferences>,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl PersistentData {
|
impl PersistentData {
|
||||||
pub(crate) fn write_document(&mut self, id: DocumentId, document: Document) {
|
pub(crate) fn write_document(&mut self, id: DocumentId, document: Document) {
|
||||||
self.documents.write(id, document);
|
self.documents.write(id, document);
|
||||||
if let Some(order) = &self.document_order {
|
if let Some(order) = &self.document_order {
|
||||||
self.documents.force_order(order.clone());
|
self.documents.force_order(order);
|
||||||
}
|
}
|
||||||
self.flush();
|
self.flush();
|
||||||
}
|
}
|
||||||
@@ -171,10 +170,10 @@ impl DocumentStore {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fn force_order(&mut self, desired_order: Vec<DocumentId>) {
|
fn force_order(&mut self, desired_order: &Vec<DocumentId>) {
|
||||||
let mut ordered_prefix_len = 0;
|
let mut ordered_prefix_len = 0;
|
||||||
for id in desired_order {
|
for id in desired_order {
|
||||||
if let Some(offset) = self.0[ordered_prefix_len..].iter().position(|meta| meta.id == id) {
|
if let Some(offset) = self.0[ordered_prefix_len..].iter().position(|meta| meta.id == *id) {
|
||||||
let found_index = ordered_prefix_len + offset;
|
let found_index = ordered_prefix_len + offset;
|
||||||
if found_index != ordered_prefix_len {
|
if found_index != ordered_prefix_len {
|
||||||
self.0[ordered_prefix_len..=found_index].rotate_right(1);
|
self.0[ordered_prefix_len..=found_index].rotate_right(1);
|
||||||
|
|||||||
Reference in New Issue
Block a user