From cc1c5179e0f9e4b2383b8064f7dc76118b3f1ac6 Mon Sep 17 00:00:00 2001 From: Hatton Date: Mon, 20 Jul 2026 13:36:19 -0600 Subject: [PATCH] Fix split-pane pageXof/pageYof crash on 0-coordinate / native event (BL-16584) pageXof/pageYof used `event.pageX || event.originalEvent.pageX`, which treats a legitimate 0 coordinate (dragging a splitter to the page edge) as missing and falls through to `event.originalEvent`, which is undefined for native (non-jQuery) events - crashing the drag. Check for null/undefined instead of falsiness, guard originalEvent before dereferencing, and fall back to 0 rather than throwing. Fixes Sentry BLOOM-DESKTOP-FJ0, -FPW, -DTS. Co-Authored-By: Claude Opus 4.8 (1M context) --- src/BloomBrowserUI/lib/split-pane/split-pane.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/BloomBrowserUI/lib/split-pane/split-pane.ts b/src/BloomBrowserUI/lib/split-pane/split-pane.ts index 662b3d0c2436..f5e28e2371c5 100644 --- a/src/BloomBrowserUI/lib/split-pane/split-pane.ts +++ b/src/BloomBrowserUI/lib/split-pane/split-pane.ts @@ -949,12 +949,22 @@ export function splitPane($splitPanes: JQuery): void { return [snapped, dividerPositionForDisplay(snapped, true) + "%", false]; } + // event.pageX/pageY can legitimately be 0 (dragging to the very edge), so check for + // null/undefined rather than falsiness — otherwise a 0 wrongly falls through. And + // event.originalEvent is undefined for a native (non-jQuery) event, so guard it before + // dereferencing instead of crashing the drag (Sentry BLOOM-DESKTOP-FPW/FJ0/DTS). function pageXof(event) { - return event.pageX || event.originalEvent.pageX; + if (event.pageX != null) return event.pageX; + if (event.originalEvent && event.originalEvent.pageX != null) + return event.originalEvent.pageX; + return 0; } function pageYof(event) { - return event.pageY || event.originalEvent.pageY; + if (event.pageY != null) return event.pageY; + if (event.originalEvent && event.originalEvent.pageY != null) + return event.originalEvent.pageY; + return 0; } function minHeight(element) {