mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-27 21:48:12 +08:00
Updated from master
This commit is contained in:
@@ -58,6 +58,7 @@ pub fn default_mapping() -> Mapping {
|
|||||||
entry!(KeyDown(KeyC); modifiers=[Accel], action_dispatch=NodeGraphMessage::Copy),
|
entry!(KeyDown(KeyC); modifiers=[Accel], action_dispatch=NodeGraphMessage::Copy),
|
||||||
entry!(KeyDown(KeyD); modifiers=[Accel], action_dispatch=NodeGraphMessage::DuplicateSelectedNodes),
|
entry!(KeyDown(KeyD); modifiers=[Accel], action_dispatch=NodeGraphMessage::DuplicateSelectedNodes),
|
||||||
entry!(KeyDown(KeyH); modifiers=[Accel], action_dispatch=NodeGraphMessage::ToggleSelectedVisibility),
|
entry!(KeyDown(KeyH); modifiers=[Accel], action_dispatch=NodeGraphMessage::ToggleSelectedVisibility),
|
||||||
|
entry!(KeyDown(KeyL); modifiers=[Accel], action_dispatch=NodeGraphMessage::ToggleSelectedLocked),
|
||||||
//
|
//
|
||||||
// TransformLayerMessage
|
// TransformLayerMessage
|
||||||
entry!(KeyDown(Enter); action_dispatch=TransformLayerMessage::ApplyTransformOperation),
|
entry!(KeyDown(Enter); action_dispatch=TransformLayerMessage::ApplyTransformOperation),
|
||||||
|
|||||||
@@ -1363,7 +1363,7 @@ impl DocumentMessageHandler {
|
|||||||
|
|
||||||
let has_selection = self.selected_nodes.selected_layers(self.metadata()).next().is_some();
|
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_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 {
|
let layers_panel_options_bar = WidgetLayout::new(vec![LayoutGroup::Row {
|
||||||
widgets: vec![
|
widgets: vec![
|
||||||
@@ -1417,8 +1417,8 @@ impl DocumentMessageHandler {
|
|||||||
IconButton::new(if selection_all_locked { "PadlockLocked" } else { "PadlockUnlocked" }, 24)
|
IconButton::new(if selection_all_locked { "PadlockLocked" } else { "PadlockUnlocked" }, 24)
|
||||||
.hover_icon(Some((if selection_all_locked { "PadlockUnlocked" } else { "PadlockLocked" }).into()))
|
.hover_icon(Some((if selection_all_locked { "PadlockUnlocked" } else { "PadlockLocked" }).into()))
|
||||||
.tooltip(if selection_all_locked { "Unlock Selected" } else { "Lock Selected" })
|
.tooltip(if selection_all_locked { "Unlock Selected" } else { "Lock Selected" })
|
||||||
.tooltip_shortcut(action_keys!(DialogMessageDiscriminant::RequestComingSoonDialog))
|
.tooltip_shortcut(action_keys!(NodeGraphMessageDiscriminant::ToggleSelectedLocked))
|
||||||
.on_update(|_| DialogMessage::RequestComingSoonDialog { issue: Some(1127) }.into())
|
.on_update(|_| NodeGraphMessage::ToggleSelectedLocked.into())
|
||||||
.disabled(!has_selection)
|
.disabled(!has_selection)
|
||||||
.widget_holder(),
|
.widget_holder(),
|
||||||
IconButton::new(if selection_all_visible { "EyeVisible" } else { "EyeHidden" }, 24)
|
IconButton::new(if selection_all_visible { "EyeVisible" } else { "EyeHidden" }, 24)
|
||||||
|
|||||||
@@ -830,6 +830,11 @@ impl NodeGraphMessageHandler {
|
|||||||
.filter(|&ancestor| ancestor != layer)
|
.filter(|&ancestor| ancestor != layer)
|
||||||
.all(|layer| network.nodes.get(&layer.to_node()).map(|node| node.visible).unwrap_or_default());
|
.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 {
|
let data = LayerPanelEntry {
|
||||||
id: node_id,
|
id: node_id,
|
||||||
layer_classification,
|
layer_classification,
|
||||||
@@ -841,8 +846,8 @@ impl NodeGraphMessageHandler {
|
|||||||
tooltip: if cfg!(debug_assertions) { format!("Layer ID: {node_id}") } else { "".into() },
|
tooltip: if cfg!(debug_assertions) { format!("Layer ID: {node_id}") } else { "".into() },
|
||||||
visible: node.visible,
|
visible: node.visible,
|
||||||
parents_visible,
|
parents_visible,
|
||||||
unlocked: true,
|
unlocked: !node.locked,
|
||||||
parents_unlocked: true,
|
parents_unlocked,
|
||||||
};
|
};
|
||||||
responses.add(FrontendMessage::UpdateDocumentLayerDetails { data });
|
responses.add(FrontendMessage::UpdateDocumentLayerDetails { data });
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
|
|
||||||
<path d="M8,3C3,3,0,8,0,8s3,5,8,5s8-5,8-5S13,3,8,3z M8,12c-2.2,0-4-1.8-4-4s1.8-4,4-4s4,1.8,4,4S10.2,12,8,12z" />
|
|
||||||
<circle cx="9" cy="7" r="1.2" />
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 216 B |
@@ -1,3 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
|
|
||||||
<path d="M8,4c3.5,0,5.9,2.8,6.8,4c-0.9,1.2-3.3,4-6.8,4S2.1,9.2,1.2,8C2.1,6.8,4.5,4,8,4 M8,3C3,3,0,8,0,8s3,5,8,5s8-5,8-5S13,3,8,3L8,3z" />
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 207 B |
@@ -428,7 +428,7 @@
|
|||||||
<IconButton
|
<IconButton
|
||||||
class={"status-toggle"}
|
class={"status-toggle"}
|
||||||
classes={{ inactive: !listing.entry.parentsUnlocked }}
|
classes={{ inactive: !listing.entry.parentsUnlocked }}
|
||||||
action={(e) => (toggleLayerVisibility(listing.entry.id), e?.stopPropagation())}
|
action={(e) => (toggleLayerLock(listing.entry.id), e?.stopPropagation())}
|
||||||
size={24}
|
size={24}
|
||||||
icon={listing.entry.parentsUnlocked ? "PadlockLocked" : "PadlockUnlocked"}
|
icon={listing.entry.parentsUnlocked ? "PadlockLocked" : "PadlockUnlocked"}
|
||||||
hoverIcon={listing.entry.parentsUnlocked ? "PadlockUnlocked" : "PadlockLocked"}
|
hoverIcon={listing.entry.parentsUnlocked ? "PadlockUnlocked" : "PadlockLocked"}
|
||||||
@@ -444,13 +444,6 @@
|
|||||||
hoverIcon={listing.entry.visible ? "EyeHide" : "EyeShow"}
|
hoverIcon={listing.entry.visible ? "EyeHide" : "EyeShow"}
|
||||||
tooltip={listing.entry.visible ? "Hide" : "Show"}
|
tooltip={listing.entry.visible ? "Hide" : "Show"}
|
||||||
/>
|
/>
|
||||||
<IconButton
|
|
||||||
class={"visibility"}
|
|
||||||
action={(e) => (toggleLayerLock(listing.entry.id), e?.stopPropagation())}
|
|
||||||
size={24}
|
|
||||||
icon={listing.entry.locked ? "Lock" : "Unlock"}
|
|
||||||
tooltip={listing.entry.locked ? "Locked" : "Unlocked"}
|
|
||||||
/>
|
|
||||||
</LayoutRow>
|
</LayoutRow>
|
||||||
{/each}
|
{/each}
|
||||||
</LayoutCol>
|
</LayoutCol>
|
||||||
|
|||||||
@@ -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 Reset from "@graphite-frontend/assets/icon-16px-solid/reset.svg";
|
||||||
import Settings from "@graphite-frontend/assets/icon-16px-solid/settings.svg";
|
import Settings from "@graphite-frontend/assets/icon-16px-solid/settings.svg";
|
||||||
import Trash from "@graphite-frontend/assets/icon-16px-solid/trash.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 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 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";
|
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 },
|
Reset: { svg: Reset, size: 16 },
|
||||||
Settings: { svg: Settings, size: 16 },
|
Settings: { svg: Settings, size: 16 },
|
||||||
Trash: { svg: Trash, size: 16 },
|
Trash: { svg: Trash, size: 16 },
|
||||||
Unlock: { svg: Unlock, size: 16 },
|
|
||||||
ViewModeNormal: { svg: ViewModeNormal, size: 16 },
|
ViewModeNormal: { svg: ViewModeNormal, size: 16 },
|
||||||
ViewModeOutline: { svg: ViewModeOutline, size: 16 },
|
ViewModeOutline: { svg: ViewModeOutline, size: 16 },
|
||||||
ViewModePixels: { svg: ViewModePixels, size: 16 },
|
ViewModePixels: { svg: ViewModePixels, size: 16 },
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ export class FrontendNode {
|
|||||||
|
|
||||||
readonly visible!: boolean;
|
readonly visible!: boolean;
|
||||||
|
|
||||||
readonly locked!: boolean;
|
readonly unlocked!: boolean;
|
||||||
|
|
||||||
readonly errors!: string | undefined;
|
readonly errors!: string | undefined;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user