From 13276aee8255ea809a975dc70808af08273773f2 Mon Sep 17 00:00:00 2001 From: Slone <50995948+Slone123c@users.noreply.github.com> Date: Mon, 19 Jan 2026 18:32:41 +0800 Subject: [PATCH] fix(desktop): apply getComputedStyle polyfill on all platforms (#9369) --- packages/desktop/src/index.tsx | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/packages/desktop/src/index.tsx b/packages/desktop/src/index.tsx index 0d9e38379..6cd77d7d5 100644 --- a/packages/desktop/src/index.tsx +++ b/packages/desktop/src/index.tsx @@ -26,17 +26,16 @@ if (import.meta.env.DEV && !(root instanceof HTMLElement)) { ) } -const isWindows = ostype() === "windows" -if (isWindows) { - const originalGetComputedStyle = window.getComputedStyle - window.getComputedStyle = ((elt: Element, pseudoElt?: string | null) => { - if (!(elt instanceof Element)) { - // WebView2 can call into Floating UI with non-elements; fall back to a safe element. - return originalGetComputedStyle(document.documentElement, pseudoElt ?? undefined) - } - return originalGetComputedStyle(elt, pseudoElt ?? undefined) - }) as typeof window.getComputedStyle -} +// Floating UI can call getComputedStyle with non-elements (e.g., null refs, virtual elements). +// This happens on all platforms (WebView2 on Windows, WKWebView on macOS), not just Windows. +const originalGetComputedStyle = window.getComputedStyle +window.getComputedStyle = ((elt: Element, pseudoElt?: string | null) => { + if (!(elt instanceof Element)) { + // Fall back to a safe element when a non-element is passed. + return originalGetComputedStyle(document.documentElement, pseudoElt ?? undefined) + } + return originalGetComputedStyle(elt, pseudoElt ?? undefined) +}) as typeof window.getComputedStyle let update: Update | null = null