Skip to content

Commit

Permalink
[Refactor] Upstream drag zoom feature to litegraph
Browse files Browse the repository at this point in the history
  • Loading branch information
huchenlei committed Feb 6, 2025
1 parent 78e4161 commit 3ac926d
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 57 deletions.
8 changes: 4 additions & 4 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@
"dependencies": {
"@atlaskit/pragmatic-drag-and-drop": "^1.3.1",
"@comfyorg/comfyui-electron-types": "^0.4.16",
"@comfyorg/litegraph": "^0.8.68",
"@comfyorg/litegraph": "^0.8.69",
"@primevue/forms": "^4.2.5",
"@primevue/themes": "^4.2.5",
"@sentry/vue": "^8.48.0",
Expand Down
6 changes: 6 additions & 0 deletions src/components/graph/GraphCanvas.vue
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,12 @@ watchEffect(() => {
if (canvas) canvas.maximumFps = maximumFps
})
watchEffect(() => {
const dragZoomEnabled = settingStore.get('Comfy.Graph.CtrlShiftZoom')
const { canvas } = canvasStore
if (canvas) canvas.dragZoomEnabled = dragZoomEnabled
})
watchEffect(() => {
CanvasPointer.doubleClickTime = settingStore.get(
'Comfy.Pointer.DoubleClickTime'
Expand Down
52 changes: 0 additions & 52 deletions src/scripts/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,6 @@ export class ComfyApp {
canvas: LGraphCanvas
dragOverNode: LGraphNode | null
canvasEl: HTMLCanvasElement
// x, y, scale
zoom_drag_start: [number, number, number] | null
lastNodeErrors: any[] | null
/** @type {ExecutionErrorWsMessage} */
lastExecutionError: { node_id?: NodeId } | null
Expand Down Expand Up @@ -485,55 +483,6 @@ export class ComfyApp {
)
}

/**
* Handle mouse
*
* Move group by header
*/
#addProcessMouseHandler() {
const self = this

const origProcessMouseDown = LGraphCanvas.prototype.processMouseDown
LGraphCanvas.prototype.processMouseDown = function (e) {
// prepare for ctrl+shift drag: zoom start
const useFastZoom = useSettingStore().get('Comfy.Graph.CtrlShiftZoom')
if (useFastZoom && e.ctrlKey && e.shiftKey && !e.altKey && e.buttons) {
self.zoom_drag_start = [e.x, e.y, this.ds.scale]
return
}

const res = origProcessMouseDown.apply(this, arguments)
return res
}
const origProcessMouseMove = LGraphCanvas.prototype.processMouseMove
LGraphCanvas.prototype.processMouseMove = function (e) {
// handle ctrl+shift drag
if (e.ctrlKey && e.shiftKey && self.zoom_drag_start) {
// stop canvas zoom action
if (!e.buttons) {
self.zoom_drag_start = null
return
}

// calculate delta
let deltaY = e.y - self.zoom_drag_start[1]
let startScale = self.zoom_drag_start[2]

let scale = startScale - deltaY / 100

this.ds.changeScale(scale, [
self.zoom_drag_start[0],
self.zoom_drag_start[1]
])
this.graph.change()

return
}

return origProcessMouseMove.apply(this, arguments)
}
}

/**
* Handle keypress
*/
Expand Down Expand Up @@ -831,7 +780,6 @@ export class ComfyApp {
await useWorkspaceStore().workflow.syncWorkflows()
await useExtensionService().loadExtensions()

this.#addProcessMouseHandler()
this.#addProcessKeyHandler()
this.#addConfigureHandler()
this.#addApiUpdateHandlers()
Expand Down

0 comments on commit 3ac926d

Please sign in to comment.