Layout.fillWidth inside plain Row is a silent no-op (status row spacing broken) #18

Closed
opened 2026-05-19 04:12:36 +00:00 by vybe · 7 comments
Collaborator

Problem

In statusRow (a plain Row from QtQuick, not RowLayout):

Item {
    width: 1; height: 1
    Layout.fillWidth: true
}

Layout.fillWidth is an attached property that only works inside RowLayout, ColumnLayout, or GridLayout. Inside a plain Row it is a silent no-op. The spacer never expands, so the exit-node text is not pushed to the right as intended.

Impact

The status row appears crowded with no visual gap between IP and exit-node text. The intended right-alignment silently fails with no warning or error.

## Problem In `statusRow` (a plain `Row` from QtQuick, not `RowLayout`): ```qml Item { width: 1; height: 1 Layout.fillWidth: true } ``` `Layout.fillWidth` is an attached property that only works inside `RowLayout`, `ColumnLayout`, or `GridLayout`. Inside a plain `Row` it is a silent no-op. The spacer never expands, so the exit-node text is not pushed to the right as intended. ## Impact The status row appears crowded with no visual gap between IP and exit-node text. The intended right-alignment silently fails with no warning or error.
Author
Collaborator

FYI from cross-model audit (claude-sonnet-4-6):

statusRow mixes anchors.left/right with an explicit y: Theme.spacingM. While currently functional, this mixed positioning model (anchor-based horizontal + absolute vertical) is fragile. Any future change of the parent to a RowLayout/ColumnLayout would silently override the y binding.

FYI from cross-model audit (claude-sonnet-4-6): `statusRow` mixes `anchors.left/right` with an explicit `y: Theme.spacingM`. While currently functional, this mixed positioning model (anchor-based horizontal + absolute vertical) is fragile. Any future change of the parent to a `RowLayout`/`ColumnLayout` would silently override the `y` binding.
Author
Collaborator

See also #19 (conflicting anchors.fill + anchors.verticalCenter on peer-list delegate Row).

See also #19 (conflicting anchors.fill + anchors.verticalCenter on peer-list delegate Row).
Author
Collaborator

See also new issue #32 (Inverted MouseArea + manual size binding anti-pattern in peer list delegate) for another instance of QML layout fragility in the same widget.

See also new issue #32 (Inverted MouseArea + manual size binding anti-pattern in peer list delegate) for another instance of QML layout fragility in the same widget.
Author
Collaborator

FYI from cross-model audit (claude-sonnet-4-6):

statusRow mixes anchors.left/right with an explicit y: Theme.spacingM. While currently functional, this mixed positioning model (anchor-based horizontal + absolute vertical) is fragile. Any future change of the parent to a RowLayout/ColumnLayout would silently override the y binding.

FYI from cross-model audit (claude-sonnet-4-6): `statusRow` mixes `anchors.left/right` with an explicit `y: Theme.spacingM`. While currently functional, this mixed positioning model (anchor-based horizontal + absolute vertical) is fragile. Any future change of the parent to a `RowLayout`/`ColumnLayout` would silently override the `y` binding.
Author
Collaborator

See also #19, #23, #32 — related QML layout/MouseArea fragility.

See also #19, #23, #32 — related QML layout/MouseArea fragility.
Author
Collaborator

Layout.fillWidth in Row is no-op; removed or replaced with proper spacing. Merged to vibes.

Layout.fillWidth in Row is no-op; removed or replaced with proper spacing. Merged to vibes.
Author
Collaborator

Resolved via merge 07982c2. The plugin is confirmed working by @jtmorris. Human code review required before merging to testing.

Resolved via merge 07982c2. The plugin is confirmed working by @jtmorris. Human code review required before merging to testing.
vybe closed this issue 2026-05-21 07:16:48 +00:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: jtmorris/dms_tailscalectl#18
No description provided.