@@ -39,13 +39,18 @@ def flex_layout(context, box, max_position_y, skip_stack, containing_block,
39
39
else :
40
40
axis , cross = 'height' , 'width'
41
41
42
+ margin_left = 0 if box .margin_left == 'auto' else box .margin_left
43
+ margin_right = 0 if box .margin_right == 'auto' else box .margin_right
44
+ margin_top = 0 if box .margin_top == 'auto' else box .margin_top
45
+ margin_bottom = 0 if box .margin_bottom == 'auto' else box .margin_bottom
46
+
42
47
if getattr (box , axis ) != 'auto' :
43
48
available_main_space = getattr (box , axis )
44
49
else :
45
50
if axis == 'width' :
46
51
available_main_space = (
47
52
containing_block .width -
48
- box . margin_left - box . margin_right -
53
+ margin_left - margin_right -
49
54
box .padding_left - box .padding_right -
50
55
box .border_left_width - box .border_right_width )
51
56
else :
@@ -58,7 +63,7 @@ def flex_layout(context, box, max_position_y, skip_stack, containing_block,
58
63
main_space = min (main_space , containing_block .height )
59
64
available_main_space = (
60
65
main_space -
61
- box . margin_top - box . margin_bottom -
66
+ margin_top - margin_bottom -
62
67
box .padding_top - box .padding_bottom -
63
68
box .border_top_width - box .border_bottom_width )
64
69
@@ -75,24 +80,28 @@ def flex_layout(context, box, max_position_y, skip_stack, containing_block,
75
80
main_space = min (main_space , containing_block .height )
76
81
available_cross_space = (
77
82
main_space -
78
- box . margin_top - box . margin_bottom -
83
+ margin_top - margin_bottom -
79
84
box .padding_top - box .padding_bottom -
80
85
box .border_top_width - box .border_bottom_width )
81
86
else :
82
87
available_cross_space = (
83
88
containing_block .width -
84
- box . margin_left - box . margin_right -
89
+ margin_left - margin_right -
85
90
box .padding_left - box .padding_right -
86
91
box .border_left_width - box .border_right_width )
87
92
88
93
# Step 3
89
94
children = box .children
90
- resolve_percentages (box , containing_block )
91
- if box .margin_top == 'auto' :
95
+ parent_box = box .copy_with_children (children )
96
+ resolve_percentages (parent_box , containing_block )
97
+ if parent_box .margin_top == 'auto' :
92
98
box .margin_top = 0
93
- if box .margin_bottom == 'auto' :
99
+ if parent_box .margin_bottom == 'auto' :
94
100
box .margin_bottom = 0
95
- parent_box = box .copy_with_children (children )
101
+ if parent_box .margin_left == 'auto' :
102
+ box .margin_left = 0
103
+ if parent_box .margin_right == 'auto' :
104
+ box .margin_right = 0
96
105
if isinstance (parent_box , boxes .FlexBox ):
97
106
blocks .block_level_width (parent_box , containing_block )
98
107
else :
0 commit comments