1.8 KiB
Plan: fix tray menu grey bar
Root cause
Column (a QML positioner) lays out children using their height property.
implicitHeight is advisory — layouts like ColumnLayout use it, but plain
Column does not. The delegate Items in TrayMenu.qml set implicitHeight
but leave height at its default of 0, so every row collapses. The only
visible pixels are the Column's topPadding + bottomPadding = 8 px — the grey
bar.
The same mistake applies to implicitWidth on the delegate items and the back
button; the width happens to work because the children use anchors relative to
parent which already has width: 220 from the Column, but it is still wrong
and should be fixed for clarity.
Fix — TrayMenu.qml only, two places
1. Back button Item (line ~108)
// before
implicitWidth: page.implicitWidth
implicitHeight: 28
// after
width: page.width
height: 28
2. Repeater delegate Item (line ~142)
// before
implicitWidth: page.implicitWidth
implicitHeight: modelData.isSeparator ? 9 : 28
// after
width: page.width
height: modelData.isSeparator ? 9 : 28
Also check: StackView height binding
The StackView currently binds:
height: currentItem ? currentItem.implicitHeight : 0
Column.implicitHeight is computed from children's implicitHeight (not
height), so it should be correct in principle — but once the delegate items
have a real height, Column.implicitHeight will equal Column.height
anyway. Worth verifying that currentItem.implicitHeight and
currentItem.height agree after the fix; if not, switch to currentItem.height.
Expected result
Each menu row is 28 px tall (9 px for separators). The panel Rectangle sizes correctly. The dismiss MouseArea still works. No other files need changing.