Merge: stop a subject's name from setting the width of the develop column
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -137,10 +137,18 @@ component MaskEntry inherits Rectangle {
|
|||||||
alignment: center;
|
alignment: center;
|
||||||
spacing: 0px;
|
spacing: 0px;
|
||||||
|
|
||||||
|
// Both lines below are bounded for the reason the subject
|
||||||
|
// row is: a mask's label and kind come from the model, and an
|
||||||
|
// unbounded `Text` asks for its whole string at layout time
|
||||||
|
// even when `elide` means it will never draw it. A mask *is* a
|
||||||
|
// segmentation result, so without this the column moved when a
|
||||||
|
// subject was clicked as well as when one was found.
|
||||||
Label {
|
Label {
|
||||||
text: root.data.label;
|
text: root.data.label;
|
||||||
emphasised: root.data.selected || touch.has-hover;
|
emphasised: root.data.selected || touch.has-hover;
|
||||||
overflow: elide;
|
overflow: elide;
|
||||||
|
min-width: 0px;
|
||||||
|
max-width: 160px;
|
||||||
}
|
}
|
||||||
|
|
||||||
Caption {
|
Caption {
|
||||||
@@ -148,6 +156,8 @@ component MaskEntry inherits Rectangle {
|
|||||||
// targets in a row, and wrapping would give the rows of a
|
// targets in a row, and wrapping would give the rows of a
|
||||||
// stack different heights for no gain.
|
// stack different heights for no gain.
|
||||||
overflow: elide;
|
overflow: elide;
|
||||||
|
min-width: 0px;
|
||||||
|
max-width: 160px;
|
||||||
// Three states worth distinguishing, and each has a
|
// Three states worth distinguishing, and each has a
|
||||||
// different remedy: stale needs the segmentation re-run,
|
// different remedy: stale needs the segmentation re-run,
|
||||||
// unadjusted needs a slider moved, and the ordinary case
|
// unadjusted needs a slider moved, and the ordinary case
|
||||||
@@ -418,6 +428,30 @@ export component MaskPanel inherits Rectangle {
|
|||||||
emphasised: subject-row.has-hover;
|
emphasised: subject-row.has-hover;
|
||||||
horizontal-stretch: 1;
|
horizontal-stretch: 1;
|
||||||
overflow: elide;
|
overflow: elide;
|
||||||
|
// **`elide` is a paint-time behaviour, and this is a
|
||||||
|
// layout-time problem.** A `Text` asks for the width of
|
||||||
|
// its whole string whether or not it will draw all of
|
||||||
|
// it, so without a stated maximum this row asked for
|
||||||
|
// whatever the model happened to return, that became
|
||||||
|
// `layout.preferred-width`, the panel publishes that as
|
||||||
|
// its `min-width`, and the develop column takes the
|
||||||
|
// widest minimum any panel declares. The column
|
||||||
|
// therefore moved the instant segmentation finished —
|
||||||
|
// a photograph the user was looking at, jumping
|
||||||
|
// sideways because a label said "traffic light".
|
||||||
|
//
|
||||||
|
// Stated as a maximum for the reason `ChipGrid`
|
||||||
|
// declares its width from its column count rather than
|
||||||
|
// from its options: what a panel asks for must follow
|
||||||
|
// from its structure, never from its data. Past this
|
||||||
|
// the row elides, which is what `elide` was for.
|
||||||
|
//
|
||||||
|
// 160px is the same judgement as `ChipGrid`'s 88px
|
||||||
|
// chip — comfortable for the class names this model
|
||||||
|
// returns, and narrow enough that a subject list
|
||||||
|
// cannot be what sets the column.
|
||||||
|
min-width: 0px;
|
||||||
|
max-width: 160px;
|
||||||
}
|
}
|
||||||
Value { text: round(subject.score * 100) + "%"; }
|
Value { text: round(subject.score * 100) + "%"; }
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user