From 46e198ef10c6657371e32eea53345add4f7fa522 Mon Sep 17 00:00:00 2001 From: chenjunjie <617947173@qq.com> Date: Mon, 13 Oct 2025 17:04:15 +0800 Subject: [PATCH] Scroll mode optimization --- .../sprotty/src/features/viewport/zoom.ts | 29 ++++++++++++++----- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/packages/sprotty/src/features/viewport/zoom.ts b/packages/sprotty/src/features/viewport/zoom.ts index 45851147..debf6cd7 100644 --- a/packages/sprotty/src/features/viewport/zoom.ts +++ b/packages/sprotty/src/features/viewport/zoom.ts @@ -56,14 +56,29 @@ export class ZoomMouseListener extends MouseListener { return event.altKey; } + protected isShift(event: WheelEvent) { + return event.shiftKey; + } + protected processScroll(viewport: Viewport, event: WheelEvent): Viewport { - return { - scroll: { - x: viewport.scroll.x + event.deltaX, - y: viewport.scroll.y + event.deltaY - }, - zoom: viewport.zoom - }; + if (this.isShift(event)) { + return { + scroll: { + // when the user holds down the Shift key and uses the mouse side scroll wheel, the viewport also moves horizontally. + x: viewport.scroll.x + event.deltaX + event.deltaY, + y: viewport.scroll.y, + }, + zoom: viewport.zoom, + }; + } else { + return { + scroll: { + x: viewport.scroll.x + event.deltaX, + y: viewport.scroll.y + event.deltaY + }, + zoom: viewport.zoom + }; + } } protected processZoom(viewport: Viewport, target: SModelElementImpl, event: WheelEvent): Viewport | undefined {