Skip to content

Commit bf2774a

Browse files
committed
Resizing refactor #2
- Fix constraints for freeform resizing.
1 parent 11d46bc commit bf2774a

File tree

1 file changed

+32
-7
lines changed

1 file changed

+32
-7
lines changed

packages/box_transform/lib/src/transformer.dart

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,9 @@ class BoxTransformer {
242242
rect: rect,
243243
clampingRect: clampingRect,
244244
handle: handle,
245+
constraints: constraints,
246+
initialRect: initialBox,
247+
flip: flip,
245248
);
246249
break;
247250
case ResizeMode.symmetric:
@@ -327,15 +330,37 @@ class BoxTransformer {
327330
required Box rect,
328331
required Box clampingRect,
329332
required HandlePosition handle,
333+
required Constraints constraints,
334+
required Box initialRect,
335+
required Flip flip,
330336
}) {
337+
338+
Box effectiveInitialRect = flipBox(initialRect, flip, handle);
339+
340+
Box newRect = Box.fromLTRB(
341+
max(rect.left, clampingRect.left),
342+
max(rect.top, clampingRect.top),
343+
min(rect.right, clampingRect.right),
344+
min(rect.bottom, clampingRect.bottom),
345+
);
346+
347+
if(!constraints.isUnconstrained) {
348+
final maxWidth =
349+
newRect.width.clamp(constraints.minWidth, constraints.maxWidth);
350+
final maxHeight =
351+
newRect.height.clamp(constraints.minHeight, constraints.maxHeight);
352+
353+
newRect = Box.fromHandle(
354+
handle.flip(flip).anchor(effectiveInitialRect),
355+
handle.flip(flip),
356+
maxWidth,
357+
maxHeight,
358+
);
359+
}
360+
331361
return InternalResizeResult(
332-
rect: Box.fromLTRB(
333-
max(rect.left, clampingRect.left),
334-
max(rect.top, clampingRect.top),
335-
min(rect.right, clampingRect.right),
336-
min(rect.bottom, clampingRect.bottom),
337-
),
338-
largest: clampingRect,
362+
rect: newRect,
363+
largest: effectiveInitialRect,
339364
);
340365
}
341366

0 commit comments

Comments
 (0)