Skip to content

Commit 01d8d48

Browse files
committed
Update upstream thumbnail changes
1 parent e471f2f commit 01d8d48

File tree

2 files changed

+25
-33
lines changed

2 files changed

+25
-33
lines changed

frontend/src/components/panels/LayerTree.vue

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,6 @@ export default defineComponent({
312312
registerResponseHandler(ResponseType.ExpandFolder, (responseData: Response) => {
313313
const expandData = responseData as ExpandFolder;
314314
if (expandData) {
315-
console.log("ExpandFolder:", expandData);
316315
const responsePath = expandData.path;
317316
const responseLayers = expandData.children as Array<LayerPanelEntry>;
318317
if (responseLayers.length === 0) return;
@@ -336,24 +335,6 @@ export default defineComponent({
336335
}
337336
});
338337
};
339-
/* if (responsePath.length === 0) {
340-
responseLayers.forEach((nlayer) => {
341-
let lastInsertion = -1;
342-
const index = this.layers.findIndex((layer: LayerPanelEntry) => {
343-
const pathLengthsEqual = nlayer.path.length === layer.path.length;
344-
return pathLengthsEqual && nlayer.path.every((layerId, i) => layerId === layer.path[i]);
345-
});
346-
if (index >= 0) {lastInsertion = index; this.layers[index] = nlayer;}
347-
else this.layers.splice(++lastInsertion, 0, nlayer);
348-
})
349-
} else {
350-
const index = this.layers.findIndex((layer: LayerPanelEntry) => {
351-
const pathLengthsEqual = responsePath.length === layer.path.length;
352-
return pathLengthsEqual && responsePath.every((layerId, i) => layerId === layer.path[i]);
353-
});
354-
if (index >= 0) this.layers.splice(index, 0, ...responseLayers);
355-
356-
} */
357338
merge_into_existing(responseLayers, this.layers);
358339
const newLayers: Array<LayerPanelEntry> = [];
359340
this.layers.forEach((layer) => {

graphene/src/document.rs

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,6 @@ impl Default for Document {
2525
}
2626
}
2727

28-
fn split_path(path: &[LayerId]) -> Result<(&[LayerId], LayerId), DocumentError> {
29-
let (id, path) = path.split_last().ok_or(DocumentError::InvalidPath)?;
30-
Ok((path, *id))
31-
}
32-
3328
impl Document {
3429
/// Wrapper around render, that returns the whole document as a Response.
3530
pub fn render_root(&mut self) -> String {
@@ -356,53 +351,53 @@ impl Document {
356351
let transform = DAffine2::from_cols_array(transform);
357352
self.apply_transform_relative_to_viewport(path, transform)?;
358353
self.mark_as_dirty(path)?;
359-
Some(vec![DocumentResponse::DocumentChanged, DocumentResponse::LayerChanged { path: path.clone() }])
354+
Some([vec![DocumentResponse::DocumentChanged], update_thumbnails_upstream(path)].concat())
360355
}
361356
Operation::SetLayerTransformInViewport { path, transform } => {
362357
let transform = DAffine2::from_cols_array(transform);
363358
self.set_transform_relative_to_viewport(path, transform)?;
364359
self.mark_as_dirty(path)?;
365-
Some(vec![DocumentResponse::DocumentChanged, DocumentResponse::LayerChanged { path: path.clone() }])
360+
Some([vec![DocumentResponse::DocumentChanged], update_thumbnails_upstream(path)].concat())
366361
}
367362
Operation::TransformLayerInScope { path, transform, scope } => {
368363
let transform = DAffine2::from_cols_array(transform);
369364
let scope = DAffine2::from_cols_array(scope);
370365
self.transform_relative_to_scope(path, Some(scope), transform)?;
371366
self.mark_as_dirty(path)?;
372-
Some(vec![DocumentResponse::DocumentChanged, DocumentResponse::LayerChanged { path: path.clone() }])
367+
Some([vec![DocumentResponse::DocumentChanged], update_thumbnails_upstream(path)].concat())
373368
}
374369
Operation::SetLayerTransformInScope { path, transform, scope } => {
375370
let transform = DAffine2::from_cols_array(transform);
376371
let scope = DAffine2::from_cols_array(scope);
377372
self.set_transform_relative_to_scope(path, Some(scope), transform)?;
378373
self.mark_as_dirty(path)?;
379-
Some(vec![DocumentResponse::DocumentChanged, DocumentResponse::LayerChanged { path: path.clone() }])
374+
Some([vec![DocumentResponse::DocumentChanged], update_thumbnails_upstream(path)].concat())
380375
}
381376
Operation::SetLayerTransform { path, transform } => {
382377
let transform = DAffine2::from_cols_array(transform);
383378
let layer = self.layer_mut(path)?;
384379
layer.transform = transform;
385380
self.mark_as_dirty(path)?;
386-
Some(vec![DocumentResponse::DocumentChanged, DocumentResponse::LayerChanged { path: path.clone() }])
381+
Some([vec![DocumentResponse::DocumentChanged], update_thumbnails_upstream(path)].concat())
387382
}
388383
Operation::ToggleVisibility { path } => {
389384
self.mark_as_dirty(path)?;
390385
if let Ok(layer) = self.layer_mut(path) {
391386
layer.visible = !layer.visible;
392387
}
393-
Some(vec![DocumentResponse::DocumentChanged, DocumentResponse::LayerChanged { path: path.clone() }])
388+
Some([vec![DocumentResponse::DocumentChanged], update_thumbnails_upstream(path)].concat())
394389
}
395390
Operation::SetLayerBlendMode { path, blend_mode } => {
396391
self.mark_as_dirty(path)?;
397392
self.layer_mut(path)?.blend_mode = *blend_mode;
398393

399-
Some(vec![DocumentResponse::DocumentChanged, DocumentResponse::LayerChanged { path: path.clone() }])
394+
Some([vec![DocumentResponse::DocumentChanged], update_thumbnails_upstream(path)].concat())
400395
}
401396
Operation::SetLayerOpacity { path, opacity } => {
402397
self.mark_as_dirty(path)?;
403398
self.layer_mut(path)?.opacity = *opacity;
404399

405-
Some(vec![DocumentResponse::DocumentChanged, DocumentResponse::LayerChanged { path: path.clone() }])
400+
Some([vec![DocumentResponse::DocumentChanged], update_thumbnails_upstream(path)].concat())
406401
}
407402
Operation::FillLayer { path, color } => {
408403
let layer = self.layer_mut(path)?;
@@ -411,9 +406,25 @@ impl Document {
411406
_ => return Err(DocumentError::NotAShape),
412407
}
413408
self.mark_as_dirty(path)?;
414-
Some(vec![DocumentResponse::DocumentChanged, DocumentResponse::LayerChanged { path: path.clone() }])
409+
Some([vec![DocumentResponse::DocumentChanged], update_thumbnails_upstream(path)].concat())
415410
}
416411
};
417412
Ok(responses)
418413
}
419414
}
415+
416+
fn split_path(path: &[LayerId]) -> Result<(&[LayerId], LayerId), DocumentError> {
417+
let (id, path) = path.split_last().ok_or(DocumentError::InvalidPath)?;
418+
Ok((path, *id))
419+
}
420+
421+
fn update_thumbnails_upstream(path: &[LayerId]) -> Vec<DocumentResponse> {
422+
let length = path.len();
423+
let mut responses = Vec::with_capacity(length);
424+
for i in 0..length {
425+
responses.push(DocumentResponse::LayerChanged {
426+
path: path[(length - i)..length].to_vec(),
427+
});
428+
}
429+
responses
430+
}

0 commit comments

Comments
 (0)