Following up on #18474 (the QDialog fix for focus escaping into a fullscreen-detached child). That PR's own "Not verified" section says explicitly:
QMenu / QPopupProxy. Unchanged by this PR and still exhibits its own, different fullscreen failure (the popup closes outright). Not fixed, not attempted.
I couldn't find a separate issue tracking that specific symptom, so filing it here so it doesn't get lost now that #18474 merged and closed #13395 for the QDialog side.
I read through use-fullscreen.js to get a sense of the likely mechanism, since the PR doesn't spell it out (it explicitly didn't attempt this one). setFullscreen() does:
proxy.$el.replaceWith(fullscreenFillerNode)
document.body.append(proxy.$el)
which detaches the component's root node from the DOM and re-appends it under <body>. If a QMenu or QPopupProxy is open and anchored to (or nested inside) the element going fullscreen, that detach+reattach looks like exactly the kind of DOM mutation that would trip a "click outside" / anchor-visibility check and close the popup. I haven't traced QMenu's own close logic far enough to point at the exact line responsible, so treat that part as a hypothesis, not a confirmed root cause the way the QDialog fix had.
Repro: open a QSelect (or any QMenu-based component) inside a component that then goes fullscreen via useFullscreen() / the fullscreen mixin while the menu is open. The menu closes as soon as fullscreen is entered, unlike the dialog case which #18474 now keeps working correctly.
I didn't build my own MRE for this one. If it helps, I'm happy to adapt evnchn's self-verdicting HTML repro style from #18474 to this case.
Following up on #18474 (the QDialog fix for focus escaping into a fullscreen-detached child). That PR's own "Not verified" section says explicitly:
I couldn't find a separate issue tracking that specific symptom, so filing it here so it doesn't get lost now that #18474 merged and closed #13395 for the QDialog side.
I read through
use-fullscreen.jsto get a sense of the likely mechanism, since the PR doesn't spell it out (it explicitly didn't attempt this one).setFullscreen()does:which detaches the component's root node from the DOM and re-appends it under
<body>. If a QMenu or QPopupProxy is open and anchored to (or nested inside) the element going fullscreen, that detach+reattach looks like exactly the kind of DOM mutation that would trip a "click outside" / anchor-visibility check and close the popup. I haven't traced QMenu's own close logic far enough to point at the exact line responsible, so treat that part as a hypothesis, not a confirmed root cause the way the QDialog fix had.Repro: open a QSelect (or any QMenu-based component) inside a component that then goes fullscreen via
useFullscreen()/ the fullscreen mixin while the menu is open. The menu closes as soon as fullscreen is entered, unlike the dialog case which #18474 now keeps working correctly.I didn't build my own MRE for this one. If it helps, I'm happy to adapt evnchn's self-verdicting HTML repro style from #18474 to this case.