Skip to content

Commit 225b463

Browse files
KeavonTrueDoctor
andcommitted
Hook up layer tree structure with frontend (#372)
* Hook up layer tree structure with frontend (decoding and Vue are WIP) * Fix off by one error * Avoid leaking memory * Parse layer structure into list of layers * Fix thumbnail updates * Correctly popagate deletions * Fix selection state in layer tree * Respect expansion during root serialization * Allow expanding of subfolders * Fix arrow direction Co-authored-by: Dennis Kobert <[email protected]>
1 parent c5f44a8 commit 225b463

File tree

19 files changed

+15777
-336
lines changed

19 files changed

+15777
-336
lines changed

editor/src/communication/dispatcher.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ const GROUP_MESSAGES: &[MessageDiscriminant] = &[
2121
MessageDiscriminant::Documents(DocumentsMessageDiscriminant::Document(DocumentMessageDiscriminant::RenderDocument)),
2222
MessageDiscriminant::Documents(DocumentsMessageDiscriminant::Document(DocumentMessageDiscriminant::FolderChanged)),
2323
MessageDiscriminant::Frontend(FrontendMessageDiscriminant::UpdateLayer),
24-
MessageDiscriminant::Frontend(FrontendMessageDiscriminant::ExpandFolder),
24+
MessageDiscriminant::Frontend(FrontendMessageDiscriminant::DisplayFolderTreeStructure),
2525
MessageDiscriminant::Tool(ToolMessageDiscriminant::SelectedLayersChanged),
2626
];
2727

@@ -124,10 +124,10 @@ mod test {
124124
init_logger();
125125
let mut editor = create_editor_with_three_layers();
126126

127-
let document_before_copy = editor.dispatcher.documents_message_handler.active_document().document.clone();
127+
let document_before_copy = editor.dispatcher.documents_message_handler.active_document().graphene_document.clone();
128128
editor.handle_message(DocumentsMessage::Copy);
129129
editor.handle_message(DocumentsMessage::PasteIntoFolder { path: vec![], insert_index: -1 });
130-
let document_after_copy = editor.dispatcher.documents_message_handler.active_document().document.clone();
130+
let document_after_copy = editor.dispatcher.documents_message_handler.active_document().graphene_document.clone();
131131

132132
let layers_before_copy = document_before_copy.root.as_folder().unwrap().layers();
133133
let layers_after_copy = document_after_copy.root.as_folder().unwrap().layers();
@@ -154,14 +154,14 @@ mod test {
154154
init_logger();
155155
let mut editor = create_editor_with_three_layers();
156156

157-
let document_before_copy = editor.dispatcher.documents_message_handler.active_document().document.clone();
157+
let document_before_copy = editor.dispatcher.documents_message_handler.active_document().graphene_document.clone();
158158
let shape_id = document_before_copy.root.as_folder().unwrap().layer_ids[1];
159159

160160
editor.handle_message(DocumentMessage::SetSelectedLayers(vec![vec![shape_id]]));
161161
editor.handle_message(DocumentsMessage::Copy);
162162
editor.handle_message(DocumentsMessage::PasteIntoFolder { path: vec![], insert_index: -1 });
163163

164-
let document_after_copy = editor.dispatcher.documents_message_handler.active_document().document.clone();
164+
let document_after_copy = editor.dispatcher.documents_message_handler.active_document().graphene_document.clone();
165165

166166
let layers_before_copy = document_before_copy.root.as_folder().unwrap().layers();
167167
let layers_after_copy = document_after_copy.root.as_folder().unwrap().layers();
@@ -193,7 +193,7 @@ mod test {
193193

194194
editor.handle_message(DocumentMessage::CreateFolder(vec![]));
195195

196-
let document_before_added_shapes = editor.dispatcher.documents_message_handler.active_document().document.clone();
196+
let document_before_added_shapes = editor.dispatcher.documents_message_handler.active_document().graphene_document.clone();
197197
let folder_id = document_before_added_shapes.root.as_folder().unwrap().layer_ids[FOLDER_INDEX];
198198

199199
// TODO: This adding of a Line and Pen should be rewritten using the corresponding functions in EditorTestUtils.
@@ -215,14 +215,14 @@ mod test {
215215

216216
editor.handle_message(DocumentMessage::SetSelectedLayers(vec![vec![folder_id]]));
217217

218-
let document_before_copy = editor.dispatcher.documents_message_handler.active_document().document.clone();
218+
let document_before_copy = editor.dispatcher.documents_message_handler.active_document().graphene_document.clone();
219219

220220
editor.handle_message(DocumentsMessage::Copy);
221221
editor.handle_message(DocumentMessage::DeleteSelectedLayers);
222222
editor.handle_message(DocumentsMessage::PasteIntoFolder { path: vec![], insert_index: -1 });
223223
editor.handle_message(DocumentsMessage::PasteIntoFolder { path: vec![], insert_index: -1 });
224224

225-
let document_after_copy = editor.dispatcher.documents_message_handler.active_document().document.clone();
225+
let document_after_copy = editor.dispatcher.documents_message_handler.active_document().graphene_document.clone();
226226

227227
let layers_before_copy = document_before_copy.root.as_folder().unwrap().layers();
228228
let layers_after_copy = document_after_copy.root.as_folder().unwrap().layers();
@@ -273,7 +273,7 @@ mod test {
273273
const SHAPE_INDEX: usize = 1;
274274
const RECT_INDEX: usize = 0;
275275

276-
let document_before_copy = editor.dispatcher.documents_message_handler.active_document().document.clone();
276+
let document_before_copy = editor.dispatcher.documents_message_handler.active_document().graphene_document.clone();
277277
let rect_id = document_before_copy.root.as_folder().unwrap().layer_ids[RECT_INDEX];
278278
let ellipse_id = document_before_copy.root.as_folder().unwrap().layer_ids[ELLIPSE_INDEX];
279279

@@ -284,7 +284,7 @@ mod test {
284284
editor.handle_message(DocumentsMessage::PasteIntoFolder { path: vec![], insert_index: -1 });
285285
editor.handle_message(DocumentsMessage::PasteIntoFolder { path: vec![], insert_index: -1 });
286286

287-
let document_after_copy = editor.dispatcher.documents_message_handler.active_document().document.clone();
287+
let document_after_copy = editor.dispatcher.documents_message_handler.active_document().graphene_document.clone();
288288

289289
let layers_before_copy = document_before_copy.root.as_folder().unwrap().layers();
290290
let layers_after_copy = document_after_copy.root.as_folder().unwrap().layers();

0 commit comments

Comments
 (0)