MT#65609 Fix Firefox popup positioning race in CscMoreMenu

Quasar's position-engine gives up permanently if a popup measures
zero size within 50ms of being shown. Firefox uniquely collapses
visibility:collapse flex-context elements to zero size, so popups
built on QMenu/QPopupProxy (e.g. CscMoreMenu's three-dot menu)
could get stuck invisible in Firefox while working fine elsewhere.

Backport the upstream fix (not yet released in Quasar 2.21.2 or
2.23.3) by overriding .q-position-engine to use visibility:hidden
instead of visibility:collapse.

Change-Id: Ia6a99d2ea6361fb8d05fe445c4f79b3913a90b09
(cherry picked from commit 9968fde680)
mr12.5
Debora Crescenzo 2 weeks ago committed by Crescenzo Debora
parent dc2889ceb2
commit 62ac59db55

@ -37,3 +37,19 @@ body.body--dark
.half-screen-width
width: 50vw
// Before showing a popup (QMenu/QPopupProxy, e.g. CscMoreMenu), Quasar hides it
// briefly to measure its size, then reveals it in the right position. Firefox
// has a quirk where it treats that hidden state as zero-sized, so the size
// check never succeeds and the popup is left hidden forever - the menu never
// opens. Other browsers don't have this quirk.
//
// This is a known Quasar bug: https://github.com/quasarframework/quasar/issues/16167
// Upstream fixed it in https://github.com/quasarframework/quasar/pull/18468, by
// hiding popups a different way that Firefox doesn't miscalculate as zero-sized.
// That fix hasn't been released yet (still missing as of the latest published
// version, 2.23.3, i.e. bumping our Quasar dependency will NOT fix this on its
// own) so we apply the same one-line change ourselves here in the meantime.
// Once a released Quasar version includes the fix, remove this override.
.q-position-engine
visibility: hidden

Loading…
Cancel
Save