From 7484bb9e078296ab77c862b9b54be2dfb1a05837 Mon Sep 17 00:00:00 2001 From: leokun Date: Sat, 5 Sep 2026 00:36:11 +0800 Subject: [PATCH] fix(desktop): improve ad marquee and hide windows consoles --- apps/desktop/src/shell/ads/AdMenu.tsx | 43 +++++++++++++++------- apps/desktop/src/shell/ads/Ads.module.scss | 21 +++++++++++ server/src/local_app/process.rs | 16 +++++++- 3 files changed, 65 insertions(+), 15 deletions(-) diff --git a/apps/desktop/src/shell/ads/AdMenu.tsx b/apps/desktop/src/shell/ads/AdMenu.tsx index 1d0ca4e..9c1fbe6 100644 --- a/apps/desktop/src/shell/ads/AdMenu.tsx +++ b/apps/desktop/src/shell/ads/AdMenu.tsx @@ -21,24 +21,41 @@ type OverflowTextProps = { }; function OverflowText({ children, className }: OverflowTextProps) { + const container = useRef(null); const text = useRef(null); const [overflowing, setOverflowing] = useState(false); useLayoutEffect(() => { - const element = text.current; - if (!element) return; - const update = () => setOverflowing(element.scrollWidth > element.clientWidth + 1); + const viewport = container.current; + if (!viewport) return; + + const update = () => { + const element = text.current; + if (!element) return; + setOverflowing(element.scrollWidth > viewport.clientWidth + 1); + }; + update(); const observer = new ResizeObserver(update); - observer.observe(element); - if (element.parentElement) observer.observe(element.parentElement); - return () => observer.disconnect(); - }, [children]); + observer.observe(viewport); + if (text.current) observer.observe(text.current); + let disposed = false; + void document.fonts?.ready.then(() => { + if (!disposed) update(); + }); + return () => { + disposed = true; + observer.disconnect(); + }; + }, [children, overflowing]); - if (!overflowing) return {children}; - return - {children} - ; + return
+ {overflowing + ? + {children} + + : {children}} +
; } export function AdMenu({ ads, activeAdId, dismissingAdId, readAdIds, triggerRefs, onOpen, onDismiss }: AdMenuProps) { @@ -60,10 +77,10 @@ export function AdMenu({ ads, activeAdId, dismissingAdId, readAdIds, triggerRefs > {!readAdIds.has(ad.id) &&