From 26ecba8de1f5205c8a8f577c4ebce687ac23be84 Mon Sep 17 00:00:00 2001 From: Anthony Kim Date: Mon, 8 Sep 2025 21:03:05 -0700 Subject: [PATCH] Fix sluggish mouse problem. Now similar to trackpad --- src/browser/CoreBrowserTerminal.ts | 4 ++-- src/common/TestUtils.test.ts | 2 +- src/common/services/CoreMouseService.ts | 5 +++-- src/common/services/Services.ts | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/browser/CoreBrowserTerminal.ts b/src/browser/CoreBrowserTerminal.ts index bd513573..c9349760 100644 --- a/src/browser/CoreBrowserTerminal.ts +++ b/src/browser/CoreBrowserTerminal.ts @@ -646,7 +646,7 @@ export class CoreBrowserTerminal extends CoreTerminal implements ITerminal { if (deltaY === 0) { return false; } - const lines = self.coreMouseService.consumeWhellEvent( + const lines = self.coreMouseService.consumeWheelEvent( ev as WheelEvent, self._renderService?.dimensions?.device?.cell?.height, self._coreBrowserService?.dpr @@ -825,7 +825,7 @@ export class CoreBrowserTerminal extends CoreTerminal implements ITerminal { return false; } - const lines = self.coreMouseService.consumeWhellEvent( + const lines = self.coreMouseService.consumeWheelEvent( ev as WheelEvent, self._renderService?.dimensions?.device?.cell?.height, self._coreBrowserService?.dpr diff --git a/src/common/TestUtils.test.ts b/src/common/TestUtils.test.ts index b25a2182..1ee79e75 100644 --- a/src/common/TestUtils.test.ts +++ b/src/common/TestUtils.test.ts @@ -66,7 +66,7 @@ export class MockCoreMouseService implements ICoreMouseService { public explainEvents(events: CoreMouseEventType): { [event: string]: boolean } { throw new Error('Method not implemented.'); } - public consumeWhellEvent(ev: WheelEvent, cellHeight: number, dpr: number): number { + public consumeWheelEvent(ev: WheelEvent, cellHeight: number, dpr: number): number { return 1; // Return a simple mock value } } diff --git a/src/common/services/CoreMouseService.ts b/src/common/services/CoreMouseService.ts index a1135a8a..7f3d5f39 100644 --- a/src/common/services/CoreMouseService.ts +++ b/src/common/services/CoreMouseService.ts @@ -237,7 +237,7 @@ export class CoreMouseService extends Disposable implements ICoreMouseService { * Processes a wheel event, accounting for partial scrolls for trackpad, mouse scrolls. * This prevents hyper-sensitive scrolling in alt buffer. */ - public consumeWhellEvent(ev: WheelEvent, cellHeight?: number, dpr?: number): number { + public consumeWheelEvent(ev: WheelEvent, cellHeight?: number, dpr?: number): number { // Do nothing if it's not a vertical scroll event if (ev.deltaY === 0 || ev.shiftKey) { return 0; @@ -251,7 +251,8 @@ export class CoreMouseService extends Disposable implements ICoreMouseService { const targetWheelEventPixels = cellHeight / dpr; let amount = 1; if (ev.deltaMode === WheelEvent.DOM_DELTA_PIXEL) { - amount /= targetWheelEventPixels + 0.0; // Prevent integer division + const pixelAmount = ev.deltaY; + amount = pixelAmount / (targetWheelEventPixels + 0.0); // Prevent integer division this._wheelPartialScroll += amount; amount = Math.floor(Math.abs(this._wheelPartialScroll)) * (this._wheelPartialScroll > 0 ? 1 : -1); this._wheelPartialScroll %= 1; diff --git a/src/common/services/Services.ts b/src/common/services/Services.ts index e7ccc241..d47c3bbc 100644 --- a/src/common/services/Services.ts +++ b/src/common/services/Services.ts @@ -62,7 +62,7 @@ export interface ICoreMouseService { /** * Process wheel event taking partial scroll into account. */ - consumeWhellEvent(ev: WheelEvent, cellHeight?: number, dpr?: number): number; + consumeWheelEvent(ev: WheelEvent, cellHeight?: number, dpr?: number): number; } export const ICoreService = createDecorator('CoreService');