mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-16 23:08:05 +08:00
Migrate the Text tool to the document graph (#1435)
* Update text tool to document graph * Fix selection issue * Log graph reruns and text node evals * Hash to set node * Fix let node crash * Fix loading document with fonts * Allow pressing enter to edit * Cleanup * Code review nits --------- Co-authored-by: Keavon Chambers <keavon@keavon.com>
This commit is contained in:
@@ -41,6 +41,9 @@ pub struct DocumentNode {
|
||||
pub metadata: DocumentNodeMetadata,
|
||||
#[serde(default)]
|
||||
pub skip_deduplication: bool,
|
||||
/// Used as a hash of the graph input where applicable. This ensures that protonodes that depend on the graph's input are always regenerated.
|
||||
#[serde(default)]
|
||||
pub hash: u64,
|
||||
pub path: Option<Vec<NodeId>>,
|
||||
}
|
||||
|
||||
@@ -103,6 +106,7 @@ impl DocumentNode {
|
||||
construction_args: args,
|
||||
document_node_path: self.path.unwrap_or(Vec::new()),
|
||||
skip_deduplication: self.skip_deduplication,
|
||||
hash: self.hash,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -197,6 +197,7 @@ pub struct ProtoNode {
|
||||
pub identifier: NodeIdentifier,
|
||||
pub document_node_path: Vec<NodeId>,
|
||||
pub skip_deduplication: bool,
|
||||
pub hash: u64,
|
||||
}
|
||||
|
||||
/// A ProtoNodeInput represents the input of a node in a ProtoNetwork.
|
||||
@@ -235,6 +236,7 @@ impl ProtoNode {
|
||||
if self.skip_deduplication {
|
||||
self.document_node_path.hash(&mut hasher);
|
||||
}
|
||||
self.hash.hash(&mut hasher);
|
||||
std::mem::discriminant(&self.input).hash(&mut hasher);
|
||||
match self.input {
|
||||
ProtoNodeInput::None => (),
|
||||
@@ -256,6 +258,7 @@ impl ProtoNode {
|
||||
input: ProtoNodeInput::None,
|
||||
document_node_path: path,
|
||||
skip_deduplication: false,
|
||||
hash: 0,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -361,6 +364,7 @@ impl ProtoNetwork {
|
||||
input,
|
||||
document_node_path: path,
|
||||
skip_deduplication: false,
|
||||
hash: 0,
|
||||
},
|
||||
));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user