AccountSwitcher in ui/mailbox/FolderDrawer.kt (~lines 121-157) renders a TextButton (the
trigger, showing the current account's email) and a DropdownMenu (~lines 141-156) as siblings
inside the drawer's outer Column — they are not wrapped together in their own Box. Compose
Material3's DropdownMenu is a Popup that anchors relative to the layout node it's composed
within; without a shared Box scoping it to the TextButton specifically, it ends up anchored to
the enclosing Column — the full-height drawer sheet — instead of the button itself. That matches
exactly what the ticket describes: the dropdown appears "at the bottom left roughly" instead of
directly below the account switcher near the top.
Scope
Wrap the TextButton and its DropdownMenu in AccountSwitcher (FolderDrawer.kt, ~lines
121-157) in a shared Box, the standard Compose pattern for anchoring a DropdownMenu to a
specific trigger rather than its whole parent.
Verify the dropdown now opens directly below the account-switcher row regardless of how many
folders are listed below it or the drawer's scroll position.
Acceptance criteria
Tapping the account switcher opens the dropdown anchored immediately below/near the switcher
row, not at the bottom of the drawer.
No change to the switcher's own appearance or the folder list below it.
Relevant files
ui/mailbox/FolderDrawer.kt (~lines 121-157).
## Context
`AccountSwitcher` in `ui/mailbox/FolderDrawer.kt` (~lines 121-157) renders a `TextButton` (the
trigger, showing the current account's email) and a `DropdownMenu` (~lines 141-156) as **siblings**
inside the drawer's outer `Column` — they are not wrapped together in their own `Box`. Compose
Material3's `DropdownMenu` is a `Popup` that anchors relative to the layout node it's composed
within; without a shared `Box` scoping it to the `TextButton` specifically, it ends up anchored to
the enclosing `Column` — the full-height drawer sheet — instead of the button itself. That matches
exactly what the ticket describes: the dropdown appears "at the bottom left roughly" instead of
directly below the account switcher near the top.
## Scope
- [ ] Wrap the `TextButton` and its `DropdownMenu` in `AccountSwitcher` (`FolderDrawer.kt`, ~lines
121-157) in a shared `Box`, the standard Compose pattern for anchoring a `DropdownMenu` to a
specific trigger rather than its whole parent.
- [ ] Verify the dropdown now opens directly below the account-switcher row regardless of how many
folders are listed below it or the drawer's scroll position.
## Acceptance criteria
- Tapping the account switcher opens the dropdown anchored immediately below/near the switcher
row, not at the bottom of the drawer.
- No change to the switcher's own appearance or the folder list below it.
## Relevant files
- `ui/mailbox/FolderDrawer.kt` (~lines 121-157).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Context
AccountSwitcherinui/mailbox/FolderDrawer.kt(~lines 121-157) renders aTextButton(thetrigger, showing the current account's email) and a
DropdownMenu(~lines 141-156) as siblingsinside the drawer's outer
Column— they are not wrapped together in their ownBox. ComposeMaterial3's
DropdownMenuis aPopupthat anchors relative to the layout node it's composedwithin; without a shared
Boxscoping it to theTextButtonspecifically, it ends up anchored tothe enclosing
Column— the full-height drawer sheet — instead of the button itself. That matchesexactly what the ticket describes: the dropdown appears "at the bottom left roughly" instead of
directly below the account switcher near the top.
Scope
TextButtonand itsDropdownMenuinAccountSwitcher(FolderDrawer.kt, ~lines121-157) in a shared
Box, the standard Compose pattern for anchoring aDropdownMenuto aspecific trigger rather than its whole parent.
folders are listed below it or the drawer's scroll position.
Acceptance criteria
row, not at the bottom of the drawer.
Relevant files
ui/mailbox/FolderDrawer.kt(~lines 121-157).