mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-02-03 22:59:14 +00:00
Fix/vue nodes auto scale (#6664)
## Summary **Problem:** ensureCorrectLayoutScale scales up LG -> Vue. But doesn't scale down from Vue -> LG. **Solution:** Bi directional scaling. **Bonus:** fix edge cases such as subgraphs, groups, and reroutes. Also, set auto scale: true now that we 'preserve' LG scale. **IMPORTANT:** useVueNodeResizeTracking.ts sets vue node height - Litegraph.NODE_TITLE_HEIGHT on workflow load using a resize observer. Reloading the page (loading a workflow) in Vue mode, will subtract height each time. This can look like a problem caused by ensureCorrectLayoutScale. It is not. Need to fix. Here was an attempt by [removing the Litegraph.NODE_TITLE_HEIGHT entirely](https://github.com/Comfy-Org/ComfyUI_frontend/pull/6643). ## Review Focus Full lifecycle of loading workflows and switching between vue and lg. Race conditions could be present. For example switching the mode using keybind very fast. ## Screenshots (if applicable) https://github.com/user-attachments/assets/5576b760-13a8-45b9-b8f7-64e1caf443c1 https://github.com/user-attachments/assets/46d6f870-df76-4084-968a-53cb629fc123 --------- Co-authored-by: github-actions <github-actions@github.com>
This commit is contained in:
@@ -825,6 +825,23 @@ export class ComfyApp {
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
// Ensure subgraphs are scaled when entering them
|
||||
this.canvas.canvas.addEventListener<'litegraph:set-graph'>(
|
||||
'litegraph:set-graph',
|
||||
(e) => {
|
||||
const { newGraph, oldGraph } = e.detail
|
||||
// Only scale when switching between graphs (not during initial setup)
|
||||
// oldGraph is null/undefined during initial setup, so skip scaling then
|
||||
if (oldGraph) {
|
||||
ensureCorrectLayoutScale(
|
||||
newGraph.extra.workflowRendererVersion,
|
||||
newGraph
|
||||
)
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
registerProxyWidgets(this.canvas)
|
||||
|
||||
this.graph.start()
|
||||
@@ -1177,7 +1194,20 @@ export class ComfyApp {
|
||||
// @ts-expect-error Discrepancies between zod and litegraph - in progress
|
||||
this.graph.configure(graphData)
|
||||
|
||||
ensureCorrectLayoutScale()
|
||||
// Save original renderer version before scaling (it gets modified during scaling)
|
||||
const originalMainGraphRenderer = this.graph.extra.workflowRendererVersion
|
||||
|
||||
// Scale main graph
|
||||
ensureCorrectLayoutScale(originalMainGraphRenderer)
|
||||
|
||||
// Scale all subgraphs that were loaded with the workflow
|
||||
// Use original main graph renderer as fallback (not the modified one)
|
||||
for (const subgraph of this.graph.subgraphs.values()) {
|
||||
ensureCorrectLayoutScale(
|
||||
subgraph.extra.workflowRendererVersion || originalMainGraphRenderer,
|
||||
subgraph
|
||||
)
|
||||
}
|
||||
|
||||
if (
|
||||
restore_view &&
|
||||
|
||||
Reference in New Issue
Block a user