mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-10-06 17:12:50 +00:00
fix of resizing regression
This commit is contained in:
1 parent
66c6938df0
commit
1af7d01d96
2 files changed
+13
-5
No files matched your search
@@ -80,6 +80,7 @@ CPLineMovesUp = 4;
|
||||
CGSize _size @accessors(property=containerSize)
|
||||
CPLayoutManager _layoutManager @accessors(property=layoutManager);
|
||||
CPTextView _textView @accessors(property=textView);
|
||||
BOOL _inResizing;
|
||||
}
|
||||
|
||||
|
||||
@@ -115,12 +116,14 @@ CPLineMovesUp = 4;
|
||||
|
||||
if (oldSize.width != _size.width)
|
||||
{
|
||||
_inResizing = YES;
|
||||
[_layoutManager invalidateLayoutForCharacterRange:CPMakeRange(0, [[_layoutManager textStorage] length])
|
||||
isSoft:NO
|
||||
actualCharacterRange:NULL];
|
||||
|
||||
[_layoutManager _validateLayoutAndGlyphs];
|
||||
[_textView sizeToFit]; // this is necessary to adopt the height of CPTextView in case of rewrapping
|
||||
_inResizing = NO;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -70,6 +70,7 @@ function _widthOfStringForFont(aString, aFont)
|
||||
_measuringContextFont = aFont;
|
||||
_measuringContext.font = [aFont cssString];
|
||||
}
|
||||
|
||||
return _measuringContext.measureText(aString);
|
||||
}
|
||||
|
||||
@@ -188,12 +189,13 @@ var CPSystemTypesetterFactory;
|
||||
|
||||
- (BOOL)_flushRange:(CPRange)lineRange
|
||||
lineOrigin:(CGPoint)lineOrigin
|
||||
currentContainerSize:(CGSize)containerSize
|
||||
currentContainer:(CPTextContainer)aContainer
|
||||
advancements:(CPArray)advancements
|
||||
lineCount:(unsigned)lineCount
|
||||
{
|
||||
var myX = 0,
|
||||
rect = CGRectMake(lineOrigin.x, lineOrigin.y, _lineWidth, _lineHeight);
|
||||
rect = CGRectMake(lineOrigin.x, lineOrigin.y, _lineWidth, _lineHeight),
|
||||
containerSize=aContainer._size;
|
||||
|
||||
[_layoutManager setTextContainer:_currentTextContainer forGlyphRange:lineRange]; // creates a new lineFragment
|
||||
[_layoutManager setLineFragmentRect:rect forGlyphRange:lineRange usedRect:rect];
|
||||
@@ -220,6 +222,9 @@ var CPSystemTypesetterFactory;
|
||||
if (!lineCount) // do not rescue on first line
|
||||
return NO;
|
||||
|
||||
if (aContainer._inResizing)
|
||||
return NO;
|
||||
|
||||
return ([_layoutManager _rescuingInvalidFragmentsWasPossibleForGlyphRange:lineRange]);
|
||||
}
|
||||
|
||||
@@ -370,7 +375,7 @@ var CPSystemTypesetterFactory;
|
||||
|
||||
if (isNewline || isTabStop)
|
||||
{
|
||||
if ([self _flushRange:lineRange lineOrigin:lineOrigin currentContainerSize:containerSize advancements:advancements lineCount:numLines])
|
||||
if ([self _flushRange:lineRange lineOrigin:lineOrigin currentContainer:_currentTextContainer advancements:advancements lineCount:numLines])
|
||||
return;
|
||||
|
||||
if (isTabStop)
|
||||
@@ -396,7 +401,7 @@ var CPSystemTypesetterFactory;
|
||||
{
|
||||
_indexOfCurrentContainer++;
|
||||
_indexOfCurrentContainer = MAX(_indexOfCurrentContainer, [[_layoutManager textContainers] count] - 1);
|
||||
_currentTextContainer = [[_layoutManager textContainers] objectAtIndex: _indexOfCurrentContainer];
|
||||
_currentTextContainer = [[_layoutManager textContainers] objectAtIndex:_indexOfCurrentContainer];
|
||||
}
|
||||
|
||||
lineOrigin.x = 0;
|
||||
@@ -422,7 +427,7 @@ var CPSystemTypesetterFactory;
|
||||
// this is to "flush" the remaining characters
|
||||
if (lineRange.length)
|
||||
{
|
||||
[self _flushRange:lineRange lineOrigin:lineOrigin currentContainerSize:containerSize advancements:advancements lineCount:numLines];
|
||||
[self _flushRange:lineRange lineOrigin:lineOrigin currentContainer:_currentTextContainer advancements:advancements lineCount:numLines];
|
||||
[self _fixupLineFragmentsOfCurrentLine]
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user