diff --git a/AppKit/CPTextView/CPLayoutManager.j b/AppKit/CPTextView/CPLayoutManager.j index e53669aa6..6ce30bb19 100644 --- a/AppKit/CPTextView/CPLayoutManager.j +++ b/AppKit/CPTextView/CPLayoutManager.j @@ -636,17 +636,18 @@ _oncontextmenuhandler = function () { return false; }; // FIXME } +- (void)_appendNewLineFragmentInTextContainer:(CPTextContainer)aTextContainer forGlyphRange:(CPRange)glyphRange +{ + _lineFragments.push([[_lineFragmentFactory alloc] initWithRange:glyphRange textContainer:aTextContainer textStorage:_textStorage]); +} + - (void)setTextContainer:(CPTextContainer)aTextContainer forGlyphRange:(CPRange)glyphRange { var fragments = _objectsInRange(_lineFragments, glyphRange), l = fragments.length; for (var i = 0; i < l; i++) - [fragments[i] invalidate]; - - var lineFragment = [[_lineFragmentFactory alloc] initWithRange:glyphRange textContainer:aTextContainer textStorage:_textStorage]; - - _lineFragments.push(lineFragment); + fragments[i]._textContainer = aTextContainer; } - (id)_lineFragmentForLocation:(unsigned) aLoc diff --git a/AppKit/CPTextView/CPTypesetter.j b/AppKit/CPTextView/CPTypesetter.j index d67b2d1ac..e0df49016 100644 --- a/AppKit/CPTextView/CPTypesetter.j +++ b/AppKit/CPTextView/CPTypesetter.j @@ -177,7 +177,7 @@ var CPSystemTypesetterFactory, rect = CGRectMake(lineOrigin.x, lineOrigin.y, _lineWidth, _lineHeight), containerSize = aContainer._size; - [_layoutManager setTextContainer:_currentTextContainer forGlyphRange:lineRange]; // creates a new lineFragment + [_layoutManager _appendNewLineFragmentInTextContainer:_currentTextContainer forGlyphRange:lineRange] var fragment = [_layoutManager._lineFragments lastObject]; fragment._isLast = !sameLine;