Merge pull request #3241 from daboe01/setBoundsSize-fix

Fixed: scale accumulation in scaleUnitSquareToSize: when setting bounds size
This commit is contained in:
daboe01
2026-08-27 22:37:45 +02:00
committed by GitHub
+19 -2
View File
@@ -1474,6 +1474,24 @@ var CPViewHighDPIDrawingEnabled = YES;
origin.y *= size.height / frameSize.height;
}
var newScaleSize;
if (size && size.width !== 0 && size.height !== 0 && frameSize)
newScaleSize = CGSizeMake(frameSize.width / size.width, frameSize.height / size.height);
else
newScaleSize = CGSizeMake(1.0, 1.0);
// Only update and propagate if the scale factor has actually changed
if (!CGSizeEqualToSize(_scaleSize, newScaleSize))
{
[self willChangeValueForKey:@"scaleSize"];
_scaleSize = newScaleSize;
_isScaled = (_scaleSize.width !== 1.0 || _scaleSize.height !== 1.0);
[self didChangeValueForKey:@"scaleSize"];
[self _scaleSizeUnitSquareToSize:CGSizeMake(1.0, 1.0)];
}
if (_layer)
[_layer _owningViewBoundsChanged];
@@ -1487,7 +1505,6 @@ var CPViewHighDPIDrawingEnabled = YES;
[self _updateTrackingAreasWithRecursion:YES];
}
/*!
Notifies subviews that the superview changed size.
@param aSize the size of the old superview
@@ -2606,7 +2623,7 @@ setBoundsOrigin:
*/
- (void)_scaleSizeUnitSquareToSize:(CGSize)aSize
{
_hierarchyScaleSize = CGSizeMakeCopy([_superview _hierarchyScaleSize]);
_hierarchyScaleSize = _superview ? CGSizeMakeCopy([_superview _hierarchyScaleSize]) : CGSizeMake(1.0, 1.0);
if (_isScaled)
{