mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2025-08-02 23:14:49 +08:00
feat: shortcuts for zoom in/out (#3410)
* feat: shortcuts for zoom in/out * feat: pen support for canvas zoom ctrl + LMB + vertical drag * Ctrl+LMB+Drag -> ctrl+Shift+LMB+Drag --------- Co-authored-by: Lt.Dr.Data <lt.dr.data@gmail.com>
This commit is contained in:
@@ -953,6 +953,12 @@ export class ComfyApp {
|
||||
|
||||
const origProcessMouseDown = LGraphCanvas.prototype.processMouseDown;
|
||||
LGraphCanvas.prototype.processMouseDown = function(e) {
|
||||
// prepare for ctrl+shift drag: zoom start
|
||||
if(e.ctrlKey && e.shiftKey && e.buttons) {
|
||||
self.zoom_drag_start = [e.x, e.y, this.ds.scale];
|
||||
return;
|
||||
}
|
||||
|
||||
const res = origProcessMouseDown.apply(this, arguments);
|
||||
|
||||
this.selected_group_moving = false;
|
||||
@@ -973,6 +979,26 @@ export class ComfyApp {
|
||||
|
||||
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, [this.ds.element.width/2, this.ds.element.height/2]);
|
||||
this.graph.change();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
const orig_selected_group = this.selected_group;
|
||||
|
||||
if (this.selected_group && !this.selected_group_resizing && !this.selected_group_moving) {
|
||||
@@ -1059,6 +1085,20 @@ export class ComfyApp {
|
||||
// Trigger onPaste
|
||||
return true;
|
||||
}
|
||||
|
||||
if((e.key === '+') && e.altKey) {
|
||||
block_default = true;
|
||||
let scale = this.ds.scale * 1.1;
|
||||
this.ds.changeScale(scale, [this.ds.element.width/2, this.ds.element.height/2]);
|
||||
this.graph.change();
|
||||
}
|
||||
|
||||
if((e.key === '-') && e.altKey) {
|
||||
block_default = true;
|
||||
let scale = this.ds.scale * 1 / 1.1;
|
||||
this.ds.changeScale(scale, [this.ds.element.width/2, this.ds.element.height/2]);
|
||||
this.graph.change();
|
||||
}
|
||||
}
|
||||
|
||||
this.graph.change();
|
||||
|
Reference in New Issue
Block a user