| | import { app } from "../../../scripts/app.js"; |
| |
|
| | let setting; |
| | const id = "pysssss.SnapToGrid"; |
| | const ext = { |
| | name: id, |
| | init() { |
| | setting = app.ui.settings.addSetting({ |
| | id, |
| | name: "🐍 Always snap to grid", |
| | defaultValue: false, |
| | type: "boolean", |
| | onChange(value) { |
| | app.canvas.align_to_grid = value; |
| | }, |
| | }); |
| |
|
| | |
| | |
| | const configure = LGraph.prototype.configure; |
| | LGraph.prototype.configure = function () { |
| | |
| | const drawNode = LGraphCanvas.prototype.drawNode; |
| | LGraphCanvas.prototype.drawNode = function () { |
| | if (setting?.value) { |
| | const shift = app.shiftDown; |
| | app.shiftDown = true; |
| | const r = drawNode.apply(this, arguments); |
| | app.shiftDown = shift; |
| | return r; |
| | } |
| | return drawNode.apply(this, arguments); |
| | }; |
| |
|
| | |
| | const onNodeAdded = app.graph.onNodeAdded; |
| | app.graph.onNodeAdded = function (node) { |
| | const r = onNodeAdded?.apply(this, arguments); |
| | const onResize = node.onResize; |
| | node.onResize = function () { |
| | if (setting?.value) { |
| | const shift = app.shiftDown; |
| | app.shiftDown = true; |
| | const r = onResize?.apply(this, arguments); |
| | app.shiftDown = shift; |
| | return r; |
| | } |
| | return onResize?.apply(this, arguments); |
| | }; |
| | return r; |
| | }; |
| |
|
| | return configure.apply(this, arguments); |
| | }; |
| | }, |
| | }; |
| |
|
| | app.registerExtension(ext); |
| |
|