Lay the develop view out by coordinate, so the column can sit below

Slint cannot turn a layout on its side, and that is what D-N7 asks for. So
the HorizontalLayout holding the rail, the canvas and the develop column
becomes a plain Rectangle and each of the three states its own x, y, width
and height. With `column-below` false those come out where the layout put
them to the pixel — a HorizontalLayout has no spacing or padding of its own,
the rail and the column took their declared widths at the two edges, and the
canvas was the only child that stretched.

The alternative was the column subtree declared twice under two `if`s, which
is four hundred lines of bindings copied, in a file whose own notes record a
conditional child in a layout as the shape that has produced binding loops
here before.

The column is the same column either way: the same contents, the same
Flickable, the same toggle. `panel-visible` collapses the dock's height
exactly as it collapsed the column's width, so `column-width` and
`dock-height` are each zero unless the column is both open and on that axis,
and the canvas can subtract both without asking which case it is in. The
stack inside stretches to the dock's width on its own — a layout that is the
direct child of a Rectangle fills it, and the Flickable's viewport was
already bound to its own width. Nothing is reflowed; N9 does that.

`dock-height` is mandated in style.yaml for the reason `panel-width` beside
it is, on the other axis: a dock that sizes itself to its contents is a
photograph that changes height when a caption wraps. 480 until N6 measures
the device.

The seam follows the column round: a hairline down its left edge beside the
photograph, along its top edge under it, so it stays between the two.
This commit is contained in:
2026-09-06 20:00:37 +02:00
parent 0e065389db
commit 04d8090729
2 changed files with 111 additions and 17 deletions
+19
View File
@@ -235,6 +235,25 @@ lengths:
`column.min-width` and read it off the running app; there is no way to
get the number out of the layout engine short of asking it.
dock-height:
value: 480
doc: |
The same column, docked under the photograph on a tall window (D-N7).
Mandated for the reason `panel-width` above is, on the other axis: a dock
that sizes itself to its contents is a photograph that changes height
when a caption wraps, and the photograph is the thing being judged.
480 is room for the pinned instruments — about 260 of histogram and
capture metadata, per N4 — with a group of sliders under them, chosen
against what has to fit *above* it: a 3:2 frame across a 900px dock is
600 tall, and 480 below it still leaves that frame its height on the
tablet at either of the two scale factors Android might report.
Provisional until N6 measures the device. Every figure behind it was
computed at a guessed density, and the guess moves the available height
by 200px.
_roll:
section: the photo roll