From a506a6e47d532dfe070fbbe0b0ff87a61691de57 Mon Sep 17 00:00:00 2001 From: haikalvidya Date: Mon, 1 Apr 2024 19:58:29 +0700 Subject: [PATCH] Updated from master --- editor/src/messages/input_mapper/default_mapping.rs | 1 + .../portfolio/document/document_message_handler.rs | 6 +++--- .../document/node_graph/node_graph_message_handler.rs | 9 +++++++-- frontend/assets/icon-16px-solid/lock.svg | 4 ---- frontend/assets/icon-16px-solid/unlock.svg | 3 --- frontend/src/components/panels/Layers.svelte | 9 +-------- frontend/src/utility-functions/icons.ts | 2 -- frontend/src/wasm-communication/messages.ts | 2 +- 8 files changed, 13 insertions(+), 23 deletions(-) delete mode 100644 frontend/assets/icon-16px-solid/lock.svg delete mode 100644 frontend/assets/icon-16px-solid/unlock.svg diff --git a/editor/src/messages/input_mapper/default_mapping.rs b/editor/src/messages/input_mapper/default_mapping.rs index 4920f8d72a..eec0b96e95 100644 --- a/editor/src/messages/input_mapper/default_mapping.rs +++ b/editor/src/messages/input_mapper/default_mapping.rs @@ -58,6 +58,7 @@ pub fn default_mapping() -> Mapping { entry!(KeyDown(KeyC); modifiers=[Accel], action_dispatch=NodeGraphMessage::Copy), entry!(KeyDown(KeyD); modifiers=[Accel], action_dispatch=NodeGraphMessage::DuplicateSelectedNodes), entry!(KeyDown(KeyH); modifiers=[Accel], action_dispatch=NodeGraphMessage::ToggleSelectedVisibility), + entry!(KeyDown(KeyL); modifiers=[Accel], action_dispatch=NodeGraphMessage::ToggleSelectedLocked), // // TransformLayerMessage entry!(KeyDown(Enter); action_dispatch=TransformLayerMessage::ApplyTransformOperation), diff --git a/editor/src/messages/portfolio/document/document_message_handler.rs b/editor/src/messages/portfolio/document/document_message_handler.rs index fb8e99688b..3e21c61c10 100644 --- a/editor/src/messages/portfolio/document/document_message_handler.rs +++ b/editor/src/messages/portfolio/document/document_message_handler.rs @@ -1363,7 +1363,7 @@ impl DocumentMessageHandler { let has_selection = self.selected_nodes.selected_layers(self.metadata()).next().is_some(); let selection_all_visible = self.selected_nodes.selected_layers(self.metadata()).all(|layer| self.metadata().node_is_visible(layer.to_node())); - let selection_all_locked = false; // TODO: Implement + let selection_all_locked = self.selected_nodes.selected_layers(self.metadata()).all(|layer| self.metadata().node_is_locked(layer.to_node())); let layers_panel_options_bar = WidgetLayout::new(vec![LayoutGroup::Row { widgets: vec![ @@ -1417,8 +1417,8 @@ impl DocumentMessageHandler { IconButton::new(if selection_all_locked { "PadlockLocked" } else { "PadlockUnlocked" }, 24) .hover_icon(Some((if selection_all_locked { "PadlockUnlocked" } else { "PadlockLocked" }).into())) .tooltip(if selection_all_locked { "Unlock Selected" } else { "Lock Selected" }) - .tooltip_shortcut(action_keys!(DialogMessageDiscriminant::RequestComingSoonDialog)) - .on_update(|_| DialogMessage::RequestComingSoonDialog { issue: Some(1127) }.into()) + .tooltip_shortcut(action_keys!(NodeGraphMessageDiscriminant::ToggleSelectedLocked)) + .on_update(|_| NodeGraphMessage::ToggleSelectedLocked.into()) .disabled(!has_selection) .widget_holder(), IconButton::new(if selection_all_visible { "EyeVisible" } else { "EyeHidden" }, 24) diff --git a/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler.rs b/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler.rs index 1f7f605d5a..c03c91a964 100644 --- a/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler.rs +++ b/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler.rs @@ -830,6 +830,11 @@ impl NodeGraphMessageHandler { .filter(|&ancestor| ancestor != layer) .all(|layer| network.nodes.get(&layer.to_node()).map(|node| node.visible).unwrap_or_default()); + let parents_unlocked = layer + .ancestors(metadata) + .filter(|&ancestor| ancestor != layer) + .all(|layer| network.nodes.get(&layer.to_node()).map(|node| !node.locked).unwrap_or_default()); + let data = LayerPanelEntry { id: node_id, layer_classification, @@ -841,8 +846,8 @@ impl NodeGraphMessageHandler { tooltip: if cfg!(debug_assertions) { format!("Layer ID: {node_id}") } else { "".into() }, visible: node.visible, parents_visible, - unlocked: true, - parents_unlocked: true, + unlocked: !node.locked, + parents_unlocked, }; responses.add(FrontendMessage::UpdateDocumentLayerDetails { data }); } diff --git a/frontend/assets/icon-16px-solid/lock.svg b/frontend/assets/icon-16px-solid/lock.svg deleted file mode 100644 index 6fbb87df15..0000000000 --- a/frontend/assets/icon-16px-solid/lock.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/frontend/assets/icon-16px-solid/unlock.svg b/frontend/assets/icon-16px-solid/unlock.svg deleted file mode 100644 index 960def4e9b..0000000000 --- a/frontend/assets/icon-16px-solid/unlock.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/frontend/src/components/panels/Layers.svelte b/frontend/src/components/panels/Layers.svelte index aecfe9d282..4b9f325af2 100644 --- a/frontend/src/components/panels/Layers.svelte +++ b/frontend/src/components/panels/Layers.svelte @@ -428,7 +428,7 @@ (toggleLayerVisibility(listing.entry.id), e?.stopPropagation())} + action={(e) => (toggleLayerLock(listing.entry.id), e?.stopPropagation())} size={24} icon={listing.entry.parentsUnlocked ? "PadlockLocked" : "PadlockUnlocked"} hoverIcon={listing.entry.parentsUnlocked ? "PadlockUnlocked" : "PadlockLocked"} @@ -444,13 +444,6 @@ hoverIcon={listing.entry.visible ? "EyeHide" : "EyeShow"} tooltip={listing.entry.visible ? "Hide" : "Show"} /> - (toggleLayerLock(listing.entry.id), e?.stopPropagation())} - size={24} - icon={listing.entry.locked ? "Lock" : "Unlock"} - tooltip={listing.entry.locked ? "Locked" : "Unlocked"} - /> {/each} diff --git a/frontend/src/utility-functions/icons.ts b/frontend/src/utility-functions/icons.ts index d58b15545c..6820676312 100644 --- a/frontend/src/utility-functions/icons.ts +++ b/frontend/src/utility-functions/icons.ts @@ -145,7 +145,6 @@ import Rescale from "@graphite-frontend/assets/icon-16px-solid/rescale.svg"; import Reset from "@graphite-frontend/assets/icon-16px-solid/reset.svg"; import Settings from "@graphite-frontend/assets/icon-16px-solid/settings.svg"; import Trash from "@graphite-frontend/assets/icon-16px-solid/trash.svg"; -import Unlock from "@graphite-frontend/assets/icon-16px-solid/unlock.svg"; import ViewModeNormal from "@graphite-frontend/assets/icon-16px-solid/view-mode-normal.svg"; import ViewModeOutline from "@graphite-frontend/assets/icon-16px-solid/view-mode-outline.svg"; import ViewModePixels from "@graphite-frontend/assets/icon-16px-solid/view-mode-pixels.svg"; @@ -219,7 +218,6 @@ const SOLID_16PX = { Reset: { svg: Reset, size: 16 }, Settings: { svg: Settings, size: 16 }, Trash: { svg: Trash, size: 16 }, - Unlock: { svg: Unlock, size: 16 }, ViewModeNormal: { svg: ViewModeNormal, size: 16 }, ViewModeOutline: { svg: ViewModeOutline, size: 16 }, ViewModePixels: { svg: ViewModePixels, size: 16 }, diff --git a/frontend/src/wasm-communication/messages.ts b/frontend/src/wasm-communication/messages.ts index 95d8be992b..cf1367cc3f 100644 --- a/frontend/src/wasm-communication/messages.ts +++ b/frontend/src/wasm-communication/messages.ts @@ -126,7 +126,7 @@ export class FrontendNode { readonly visible!: boolean; - readonly locked!: boolean; + readonly unlocked!: boolean; readonly errors!: string | undefined; }