From 8685af2bb1fe1365e10d7310355f441176899367 Mon Sep 17 00:00:00 2001 From: Cahit Guerguec Date: Tue, 7 Jul 2026 11:36:04 +0200 Subject: [PATCH] fix(ui5-table): ignore 1px scrollWidth/clientWidth diff to prevent stuck popin on Safari Safari can report scrollWidth 1px greater than clientWidth during zoom transitions due to subpixel rounding. The previous strict `scrollWidth > clientWidth` check treated this as real overflow and triggered spurious popin cycles that corrupted `_containerWidth`, leaving columns stuck in the popin area even after zooming back out. Treat differences of 1px as no overflow. Real overflows (>= 2px) still trigger popin as before. Fixes: #12812 --- packages/main/src/Table.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/main/src/Table.ts b/packages/main/src/Table.ts index 809fc5292120..bcd4782878ad 100644 --- a/packages/main/src/Table.ts +++ b/packages/main/src/Table.ts @@ -523,10 +523,12 @@ class Table extends UI5Element { _onResize() { const { clientWidth, scrollWidth } = this._tableElement; + // Safari can report scrollWidth 1px greater than clientWidth during zoom transitions + // due to subpixel rounding, so a strict > check triggers spurious popin cycles. + const overflow = scrollWidth - clientWidth; - if (scrollWidth > clientWidth) { + if (overflow > 1) { // Overflow Handling: Move columns into the popin until overflow is resolved - const overflow = scrollWidth - clientWidth; const headers = this._getPopinOrderedColumns(false); const poppedInWidth = headers.reduce((totalPoppedInWidth, headerCell) => { if (totalPoppedInWidth < overflow && !headerCell._popin) {