From fbb68a961c0637ea0192b634722ca9fe50fddc00 Mon Sep 17 00:00:00 2001 From: labkey-tchad Date: Fri, 31 Jul 2026 16:16:47 -0700 Subject: [PATCH] Fix Impersonate Roles dialog rendering with a hugely oversized column The role grid's single flex column could be laid out before the containing window had a final, on-screen width, leaving the column (and its header) stuck at ExtJS's internal 20000px box-layout measurement placeholder instead of the real rendered width, which pushed the dialog's contents far outside the window frame. Force the grid to relayout once the window's `show` event fires, guaranteeing the flex column recalculates against the window's actual, final size. --- core/webapp/Impersonate.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/core/webapp/Impersonate.js b/core/webapp/Impersonate.js index c982bddf3ac..c4d8d5684dd 100644 --- a/core/webapp/Impersonate.js +++ b/core/webapp/Impersonate.js @@ -313,6 +313,13 @@ Ext4.define('LABKEY.Security.ImpersonateRoles', { this.items = [this.getPanel()]; + // The role grid's flex column can be laid out before this window has a final, on-screen width, leaving its + // width stuck at Ext's internal box-layout measurement value (a very large placeholder). Forcing a relayout + // once the window has actually been shown recalculates the column against the real, rendered width. + this.on('show', function() { + this.roleGrid.updateLayout(); + }, this); + this.callParent(); },