From 315fc21ecae55a5e94c20c3a2a370aeeb4c7254e Mon Sep 17 00:00:00 2001 From: daboe01 Date: Fri, 9 Sep 2016 21:00:22 +0200 Subject: [PATCH] fixed: setFrameSize: was iterating every character --- AppKit/CPTextView/CPTextView.j | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/AppKit/CPTextView/CPTextView.j b/AppKit/CPTextView/CPTextView.j index 01383e604..6712582e0 100644 --- a/AppKit/CPTextView/CPTextView.j +++ b/AppKit/CPTextView/CPTextView.j @@ -1717,8 +1717,9 @@ var kDelegateRespondsTo_textShouldBeginEditing { var minSize = [self minSize], maxSize = [self maxSize], - desiredSize = aSize, - rect = [_layoutManager boundingRectForGlyphRange:CPMakeRange(0, MAX(0, [_layoutManager numberOfCharacters] - 1)) inTextContainer:_textContainer], + desiredSize = CGSizeCreateCopy(aSize), + rect = CGRectUnion([_layoutManager boundingRectForGlyphRange:CPMakeRange(0, 1) inTextContainer:_textContainer], + [_layoutManager boundingRectForGlyphRange:CPMakeRange(MAX(0, [_layoutManager numberOfCharacters] - 2), 1) inTextContainer:_textContainer]), myClipviewSize = nil; if ([[self superview] isKindOfClass:[CPClipView class]]) @@ -1730,6 +1731,8 @@ var kDelegateRespondsTo_textShouldBeginEditing if (_isHorizontallyResizable) { + rect = [_layoutManager boundingRectForGlyphRange:CPMakeRange(0, MAX(0, [_layoutManager numberOfCharacters] - 1)) inTextContainer:_textContainer]; // needs expensive "deep" recalculation + desiredSize.width = rect.size.width + 2 * _textContainerInset.width; if (desiredSize.width < minSize.width)