Refold updated patch only if the patch was already folded (#19462)

Release Notes:

- N/A
This commit is contained in:
Antonio Scandurra 2024-10-19 17:10:50 +02:00 committed by GitHub
parent 781fff220c
commit e8207288e5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -2219,6 +2219,7 @@ impl ContextEditor {
merge_adjacent: false,
};
let should_refold;
if let Some(state) = self.patches.get_mut(&range) {
replaced_blocks.insert(state.footer_block_id, render_block);
if let Some(editor_state) = &state.editor {
@ -2233,6 +2234,9 @@ impl ContextEditor {
});
}
}
should_refold =
snapshot.intersects_fold(patch_start.to_offset(&snapshot.buffer_snapshot));
} else {
let block_ids = editor.insert_blocks(
[BlockProperties {
@ -2266,10 +2270,14 @@ impl ContextEditor {
update_task: None,
},
);
should_refold = true;
}
editor.unfold_ranges([patch_start..patch_end], true, false, cx);
editor.fold_ranges([(patch_start..patch_end, header_placeholder)], false, cx);
if should_refold {
editor.unfold_ranges([patch_start..patch_end], true, false, cx);
editor.fold_ranges([(patch_start..patch_end, header_placeholder)], false, cx);
}
}
editor.remove_creases(removed_crease_ids, cx);