The notification menu learns what every other popover already knew

Popover's container is a plain Item and never measures its children, so
the three-dots menu on a notification card opened as a 240x28 sliver
with its one row clipped out of existence. TrayMenu and AgentUsagePanel
both carry the antidote — implicit sizes on the Popover itself, taken
from the content column — and now the notification settings menu does
too, with rows filling the window width so the hover reaches the edges.

Claude-Session: https://claude.ai/code/session_01W8icivxZcmFTR2g6DkYhjT
This commit is contained in:
Gabriel Brown
2026-08-26 19:50:31 -04:00
parent 5f09c5ee38
commit 54dfa977ee
@@ -177,12 +177,20 @@ Rectangle {
id: settingsMenu id: settingsMenu
anchorItem: settingsMenuButton anchorItem: settingsMenuButton
// A Column already measures itself from its children, and in Qt 6 both // Popover's container is a plain Item and does not size itself from its
// implicit sizes are read-only on a positioner -- assigning them makes // children, so the window dimensions come from the column's implicit
// the whole shell fail to load rather than just this menu. // size — the same pattern TrayMenu uses. Rows take their *actual* width
// from the window in the other direction; the two chains are
// independent, so there is no binding loop.
implicitWidth: Math.max(menuBody.implicitWidth + contentPadding * 2, 200)
implicitHeight: menuBody.implicitHeight + contentPadding * 2
Column { Column {
id: menuBody
width: parent.width
TrayMenuRow { TrayMenuRow {
id: notificationSettings width: parent.width
label: "Notification settings" label: "Notification settings"
onActivated: { onActivated: {
ShellState.openSettings("notifications"); ShellState.openSettings("notifications");