@@ -186,32 +186,41 @@ BlFrameLayout >> measureParentNode: aParentNode [
186186{ #category : #private }
187187BlFrameLayout >> measurementSpecFor: aChildNode parentExtent: aParentExtent [
188188
189- | aParentWidth aParentHeight childWidthMeasureSpec childHeightMeasureSpec |
189+ | aParentWidth aParentHeight childWidthMeasureSpec childHeightMeasureSpec aParentPadding aParentWidthSpec aParentHeightSpec |
190190 aParentWidth := aParentExtent x.
191191 aParentHeight := aParentExtent y.
192+ aParentPadding := aChildNode parent
193+ ifNil: [ BlInsets empty ]
194+ ifNotNil: [ :p | p padding ].
195+ aParentWidthSpec := aChildNode parent
196+ ifNil: [ BlMeasurementSpec unspecified ]
197+ ifNotNil: [ :p | p widthSpec ].
198+ aParentHeightSpec := aChildNode parent
199+ ifNil: [ BlMeasurementSpec unspecified ]
200+ ifNotNil: [ :p | p heightSpec ].
192201
193202 aChildNode isHorizontalMatchParent
194203 ifTrue: [
195204 | weight width |
196205 weight := (aChildNode constraints frame horizontal weight max: 0.0 ).
197- width := ((aParentWidth - aChildNode parent padding width - aChildNode margin width) * weight) max: aChildNode constraints minWidth.
206+ width := ((aParentWidth - aParentPadding width - aChildNode margin width) * weight) max: aChildNode constraints minWidth.
198207 childWidthMeasureSpec := BlMeasurementSpec exact: width ]
199208 ifFalse: [
200209 childWidthMeasureSpec := self
201- measurementSpecFor: aChildNode parent widthSpec
202- usedSize: aChildNode parent padding width + aChildNode padding width
210+ measurementSpecFor: aParentWidthSpec
211+ usedSize: aParentPadding width + aChildNode padding width
203212 resizer: aChildNode horizontalResizer ].
204213
205214 aChildNode isVerticalMatchParent
206215 ifTrue: [
207216 | weight height |
208217 weight := (aChildNode constraints frame vertical weight max: 0.0 ).
209- height := ((aParentHeight - aChildNode parent padding height - aChildNode margin height) * weight) max: aChildNode constraints minHeight.
218+ height := ((aParentHeight - aParentPadding height - aChildNode margin height) * weight) max: aChildNode constraints minHeight.
210219 childHeightMeasureSpec := BlMeasurementSpec exact: height ]
211220 ifFalse: [
212221 childHeightMeasureSpec := self
213- measurementSpecFor: aChildNode parent heightSpec
214- usedSize: aChildNode parent padding height + aChildNode margin height
222+ measurementSpecFor: aParentHeightSpec
223+ usedSize: aParentPadding height + aChildNode margin height
215224 resizer: aChildNode verticalResizer ].
216225
217226 ^ childWidthMeasureSpec @ childHeightMeasureSpec
0 commit comments