@@ -126,46 +126,58 @@ function split(layout::Union{Horizontal,Vertical}, area::Rect)
126
126
add_constraint (s, variables[i]. h <= area. height)
127
127
if c isa Auto
128
128
if orientation == :horizontal
129
- add_constraint (s, KiwiConstraintSolver . Constraint ( variables[i]. w - c. value, KiwiConstraintSolver. STRONG, :( == )) )
129
+ add_constraint (s, @constraint variables[i]. w == c. value - 1 strength = KiwiConstraintSolver. STRONG)
130
130
else
131
- add_constraint (s, KiwiConstraintSolver . Constraint ( variables[i]. h - c. value, KiwiConstraintSolver. STRONG, :( == )) )
131
+ add_constraint (s, @constraint variables[i]. h == c. value - 1 strength = KiwiConstraintSolver. STRONG)
132
132
end
133
133
elseif c isa Percent
134
134
if orientation == :horizontal
135
135
add_constraint (
136
136
s,
137
- KiwiConstraintSolver . Constraint ( variables[i]. w - (c. value ÷ width (area)), KiwiConstraintSolver. MEDIUM, :( == )),
137
+ @constraint variables[i]. w == (c. value * width (area) ÷ 100 ) - 1 strength = KiwiConstraintSolver. MEDIUM
138
138
)
139
139
else
140
140
add_constraint (
141
141
s,
142
- KiwiConstraintSolver. Constraint (
143
- variables[i]. h - (c. value ÷ height (area)),
144
- KiwiConstraintSolver. MEDIUM,
145
- :(== ),
146
- ),
142
+ @constraint variables[i]. h == (c. value * height (area) ÷ 100 ) - 1 strength = KiwiConstraintSolver. MEDIUM
147
143
)
148
144
end
149
145
elseif c isa Fixed
150
146
if orientation == :horizontal
151
- add_constraint (s, variables[i]. w == c. value)
147
+ add_constraint (s, variables[i]. w == c. value - 1 )
152
148
else
153
- add_constraint (s, variables[i]. h == c. value)
149
+ add_constraint (s, variables[i]. h == c. value - 1 )
154
150
end
155
151
elseif c isa Min
156
152
if orientation == :horizontal
157
- add_constraint (s, variables[i]. w >= c. value)
153
+ add_constraint (s, variables[i]. w >= c. value - 1 )
158
154
else
159
- add_constraint (s, variables[i]. h >= c. value)
155
+ add_constraint (s, variables[i]. h >= c. value - 1 )
160
156
end
161
157
elseif c isa Max
162
158
if orientation == :horizontal
163
- add_constraint (s, variables[i]. w <= c. value)
159
+ add_constraint (s, variables[i]. w <= c. value - 1 )
164
160
else
165
- add_constraint (s, variables[i]. h <= c. value)
161
+ add_constraint (s, variables[i]. h <= c. value - 1 )
166
162
end
167
163
end
168
164
end
165
+ for (i, c) in enumerate (layout. constraints)
166
+ if i == 1
167
+ continue
168
+ end
169
+ if orientation == :horizontal
170
+ add_constraint (
171
+ s,
172
+ @constraint variables[i]. x == variables[i- 1 ]. x + variables[i- 1 ]. w + 1 strength = KiwiConstraintSolver. MEDIUM
173
+ )
174
+ else
175
+ add_constraint (
176
+ s,
177
+ @constraint variables[i]. y == variables[i- 1 ]. y + variables[i- 1 ]. h + 1 strength = KiwiConstraintSolver. MEDIUM
178
+ )
179
+ end
180
+ end
169
181
if orientation == :horizontal
170
182
add_constraint (s, sum (variables[i]. w for (i, c) in enumerate (layout. constraints)) == area. width)
171
183
else
0 commit comments