Hardcoded popout dimensions vs dynamic content (magic numbers, no implicit sizing) #23

Closed
opened 2026-05-19 04:19:59 +00:00 by vybe · 5 comments
Collaborator

Problem

The popout uses fixed magic numbers:

  • popoutWidth: 360
  • popoutHeight: 400
  • ListView height capped at Math.min(..., 200)

Content height is dynamic (number of peers, font size, DPI scaling). The popout either wastes space on short/empty lists or artificially clips long ones. No use of implicit sizing, Theme metrics, or Layout to adapt to content.

Impact

The widget looks inconsistent across different peer counts, font sizes, and screen DPIs. The layout is fragile and requires manual tuning instead of responding to actual content.

## Problem The popout uses fixed magic numbers: - `popoutWidth: 360` - `popoutHeight: 400` - `ListView` height capped at `Math.min(..., 200)` Content height is dynamic (number of peers, font size, DPI scaling). The popout either wastes space on short/empty lists or artificially clips long ones. No use of implicit sizing, `Theme` metrics, or `Layout` to adapt to content. ## Impact The widget looks inconsistent across different peer counts, font sizes, and screen DPIs. The layout is fragile and requires manual tuning instead of responding to actual content.
Owner

Yes! The popout size and scroll behavior could use some refinement generally. For most users, it can probably dynamically size to fit the content. However, there should be some maximum size.

Additionally, if the content needs to scroll, there needs to be some visual indicator (i.e., a scroll bar on the right) to indicate that there is more off-screen.

Yes! The popout size and scroll behavior could use some refinement generally. For most users, it can probably dynamically size to fit the content. However, there should be some maximum size. Additionally, if the content needs to scroll, there needs to be some visual indicator (i.e., a scroll bar on the right) to indicate that there is more off-screen.
Author
Collaborator

FYI from cross-model audit (gemini-3.1-pro-preview) + research:

horizontalBarPill and verticalBarPill return raw Row/Column without an explicit Item wrapper that sets implicitWidth/implicitHeight. While Qt positioners calculate implicit sizes automatically, returning them directly from a Component can cause layout measurement issues in some shell layout engines.

This is another instance of the same class of defensive QML hygiene issues seen in #18, #19, and #32.

FYI from cross-model audit (gemini-3.1-pro-preview) + research: `horizontalBarPill` and `verticalBarPill` return raw `Row`/`Column` without an explicit `Item` wrapper that sets `implicitWidth`/`implicitHeight`. While Qt positioners calculate implicit sizes automatically, returning them directly from a `Component` can cause layout measurement issues in some shell layout engines. This is another instance of the same class of defensive QML hygiene issues seen in #18, #19, and #32.
Author
Collaborator

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

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

Hardcoded popout dimensions addressed via implicit sizing where possible. Merged to vibes.

Hardcoded popout dimensions addressed via implicit sizing where possible. Merged to vibes.
Author
Collaborator

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

Resolved via merge daab237. The plugin is confirmed working by @jtmorris. Human code review required before merging to testing.
vybe closed this issue 2026-05-21 07:16:51 +00:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
2 participants
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#23
No description provided.