Setting for saving and restoring canvas position and zoom level (#3437)
This commit is contained in:
parent
0fecfd2b1a
commit
f374ea714d
|
@ -263,6 +263,36 @@ export class ComfyApp {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#addRestoreWorkflowView() {
|
||||||
|
const serialize = LGraph.prototype.serialize;
|
||||||
|
const self = this;
|
||||||
|
LGraph.prototype.serialize = function() {
|
||||||
|
const workflow = serialize.apply(this, arguments);
|
||||||
|
|
||||||
|
// Store the drag & scale info in the serialized workflow if the setting is enabled
|
||||||
|
if (self.enableWorkflowViewRestore.value) {
|
||||||
|
if (!workflow.extra) {
|
||||||
|
workflow.extra = {};
|
||||||
|
}
|
||||||
|
workflow.extra.ds = {
|
||||||
|
scale: self.canvas.ds.scale,
|
||||||
|
offset: self.canvas.ds.offset,
|
||||||
|
};
|
||||||
|
} else if (workflow.extra?.ds) {
|
||||||
|
// Clear any old view data
|
||||||
|
delete workflow.extra.ds;
|
||||||
|
}
|
||||||
|
|
||||||
|
return workflow;
|
||||||
|
}
|
||||||
|
this.enableWorkflowViewRestore = this.ui.settings.addSetting({
|
||||||
|
id: "Comfy.EnableWorkflowViewRestore",
|
||||||
|
name: "Save and restore canvas position and zoom level in workflows",
|
||||||
|
type: "boolean",
|
||||||
|
defaultValue: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds special context menu handling for nodes
|
* Adds special context menu handling for nodes
|
||||||
* e.g. this adds Open Image functionality for nodes that show images
|
* e.g. this adds Open Image functionality for nodes that show images
|
||||||
|
@ -1505,6 +1535,7 @@ export class ComfyApp {
|
||||||
this.#addProcessKeyHandler();
|
this.#addProcessKeyHandler();
|
||||||
this.#addConfigureHandler();
|
this.#addConfigureHandler();
|
||||||
this.#addApiUpdateHandlers();
|
this.#addApiUpdateHandlers();
|
||||||
|
this.#addRestoreWorkflowView();
|
||||||
|
|
||||||
this.graph = new LGraph();
|
this.graph = new LGraph();
|
||||||
|
|
||||||
|
@ -1805,6 +1836,10 @@ export class ComfyApp {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
this.graph.configure(graphData);
|
this.graph.configure(graphData);
|
||||||
|
if (this.enableWorkflowViewRestore.value && graphData.extra?.ds) {
|
||||||
|
this.canvas.ds.offset = graphData.extra.ds.offset;
|
||||||
|
this.canvas.ds.scale = graphData.extra.ds.scale;
|
||||||
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
let errorHint = [];
|
let errorHint = [];
|
||||||
// Try extracting filename to see if it was caused by an extension script
|
// Try extracting filename to see if it was caused by an extension script
|
||||||
|
|
Loading…
Reference in New Issue