Skip to content

Commit

Permalink
Setting for saving and restoring canvas position and zoom level (#3437)
Browse files Browse the repository at this point in the history
  • Loading branch information
pythongosssss committed May 10, 2024
1 parent 0fecfd2 commit f374ea7
Showing 1 changed file with 35 additions and 0 deletions.
35 changes: 35 additions & 0 deletions web/scripts/app.js
Expand Up @@ -262,6 +262,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
Expand Down Expand Up @@ -1505,6 +1535,7 @@ export class ComfyApp {
this.#addProcessKeyHandler();
this.#addConfigureHandler();
this.#addApiUpdateHandlers();
this.#addRestoreWorkflowView();

this.graph = new LGraph();

Expand Down Expand Up @@ -1805,6 +1836,10 @@ export class ComfyApp {

try {
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) {
let errorHint = [];
// Try extracting filename to see if it was caused by an extension script
Expand Down

0 comments on commit f374ea7

Please sign in to comment.