A demoted widget's popover opens inside the ⋯ menu, not through it - #291
Merged
Conversation
Opening Share from ⋯ on a narrow window drew the popover interleaved with the properties panel: rows cut off down their left edge, panel labels showing through the gap. .ed-topbar.ed-bar-fold .ed-menu carries max-height + overflow-y:auto so a menu that can outgrow the screen scrolls. But overflow-y cannot be had on its own — a browser computes overflow-x to auto as well — so that menu is a CLIPPING BOX for anything positioned inside it. Phone chrome demotes the whole Share dropdown into ⋯, and .ed-share-pop is a 250px popover anchored to its parent's end, so inside the 200px menu it hung off both edges. Measured at 660px: menu 454..654 x 54..650 share pop 399..649 x 239..719 55px off the left, 69px below Both overhangs were clipped away, and the properties panel sits under exactly that strip, so the panel showed through where the popover had been cut. A floating child cannot escape a scroll container, so it stops floating. Inside ⋯ a nested menu renders position:static — a section of the list, taking its width and scrolling with it. Nothing overhangs, so nothing can be clipped. After, at the same 660px: Share 443..649 inside menu 438..654, 0 of 7 rows escaping; Language likewise, 0 of 10. Desktop is untouched — the fold class is absent, so the popover is still absolute, 250px, shadowed and fully on screen.
nyblnet
added a commit
that referenced
this pull request
Aug 15, 2026
#291 and #297 merged without entries. Both are user-visible, so both need one — and on this release in particular, because the first six bold lead-ins become the `notes` inside the signed manifest and are all a reader sees in the About dialog. Four entries now, ordered so that list reads sensibly: the security fix leads, the Tray change follows, then the two fixes, cosmetic last. The Share entry says what the reader saw (a popover sliced down its left edge with the properties panel showing through) before it says why, and keeps the cause to one plain sentence: a box that scrolls in one direction clips the other whether you asked for it or not. The stripe entry is short because the change is small; what makes it worth an entry at all is that the hard-coded peach stayed peach in dark mode. Neither is a regression. Both reproduce on 1.0.17 and earlier.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Reported against 1.0.17: opening Share from ⋯ on a narrow window with the properties panel open draws the popover interleaved with the panel — rows cut off down their left edge, panel labels showing through the gap.
Not a stacking bug this time (that was #286). This one is clipping.
Cause
.ed-topbar.ed-bar-fold .ed-menucarriesmax-height+overflow-y: autoso a ⋯ menu that can outgrow the screen scrolls — correct, and well argued in the comment above it.But
overflow-y: autocannot be had on its own. Set either axis to a non-visiblevalue and the browser computes the other toauto. So that menu quietly became a clipping box for everything positioned inside it.Phone chrome demotes whole dropdown widgets (Share, Language) into ⋯, and
.ed-share-popis a 250px popover anchored to its parent's end (inset-inline-end: 0). Inside the 200px menu it hangs off both edges. Measured at a 660px viewport:55px off the left, 69px below the bottom — both clipped away. The properties panel sits under exactly that strip, which is why the panel showed through where the popover had been cut.
Fix
A floating child can never escape a scroll container, so it stops floating. Inside ⋯, a nested menu renders
position: static— a section of the list, taking its width and scrolling with it. Nothing overhangs, so nothing can be clipped, and it works the same on a phone where a 250px popover had nowhere to go anyway.Verified
At the same 660px viewport:
absolutestatic, in the scroll flowDesktop unaffected — at 1400px the fold class is absent, so the popover is still
absolute,min-width: 250px, shadowed, and fully on screen. Screenshot of the fixed narrow layout shows Share expanding cleanly as a section of the ⋯ list.Adds the
overflow-ytrap to CLAUDE.md's hard-won list — it is invisible at desktop widths and the obvious reading of the CSS is wrong.Not for 1.0.17 (already released); this is for the next one.