Size: +nnn Feste Größe, HARD -nnn Wunschgröße, SOFT => stretchable 0 nur area: wrap childs Layout: Hor - Vert - Layer Scroll: Normal - Scrollend minSize: (bei Area: in Layoutrichtung) hard: size soft: !Area: widget-spezifisch Area: !childs: 0 Layer: visible_child.minSize !Layer: scroll: max(childs.minSize) !scroll: Summe(childs.minSize) optSize: (bei Area: in Layoutrichtung) hard -> size soft -> !Area -> size Area -> !childs: 0 Layer: visible_child.optSize !Layer: scroll -> max(size,max(childs.optSize)) !scroll -> Summe(childs.optSize) Layout der Childs in Area: Layer: visible_child hard: child.optSize; wird ggf. abgeschnitten oder es bleibt rand visible_child soft: max(area.size, child.minSize) !Layer: scroll: child.optSize !scroll: child[i] hard: child.optSize child[i] soft: Platz passt exakt: child.optSize Zu wenig Platz: Restraum = area.size - Summe(hard_sized_childs.optSize) - Summe(soft_sized_childs.minSize) Restraum ≤ 0: child.minSize Restraum > 0: child.minSize + proportionaler Anteil am Restraum ggf. läuft der Inhalt unten (rechts) über