mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-04-23 10:01:14 +00:00
fix NSLayoutManager issue when selection overlaps replaced range in an unusual way
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/branches/gnustep_testplant_branch@38981 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
d3da9b523e
commit
e8f9310fd1
2 changed files with 13 additions and 3 deletions
|
@ -1,3 +1,9 @@
|
|||
2015-09-10 Doug Simons <doug.simons@testplant.com> and Paul Landers <paul.landers@testplant.com>
|
||||
|
||||
* Source/NSLayoutManager.m: Fix a bug that would try to adjust
|
||||
the length of the selected range to a negative number, leading
|
||||
to an exception and eventual crashes.
|
||||
|
||||
2015-09-08 Doug Simons <doug.simons@testplant.com>
|
||||
|
||||
* Source/NSOutlineView.m: Update expandItem:expandChildren:
|
||||
|
|
|
@ -2639,7 +2639,7 @@ this file describes this.
|
|||
|
||||
if (!layout_char)
|
||||
new_last_glyph = 0;
|
||||
else if (layout_char >= [_textStorage length])
|
||||
else if (layout_char == [_textStorage length])
|
||||
new_last_glyph = [self numberOfGlyphs];
|
||||
else
|
||||
new_last_glyph = [self glyphRangeForCharacterRange: NSMakeRange(layout_char, 1)
|
||||
|
@ -2917,7 +2917,7 @@ no_soft_invalidation:
|
|||
(of selection, wrt range, before change)
|
||||
--------------------------
|
||||
after after location += lengthChange;
|
||||
in after length = NSMaxRange(sel)-NSMaxRange(range)-lengthChange; location=NSMaxRange(range);
|
||||
in after length = NSMaxRange(sel)-(NSMaxRange(range)-lengthChange); location=NSMaxRange(range);
|
||||
in in length = 0; location=NSMaxRange(range);
|
||||
before after length += lengthChange;
|
||||
before in length = range.location-location;
|
||||
|
@ -2939,7 +2939,7 @@ no_soft_invalidation:
|
|||
{
|
||||
if (NSMaxRange(_selected_range) > NSMaxRange(range) - lengthChange)
|
||||
{ /* in after */
|
||||
newRange.length = NSMaxRange(_selected_range) - NSMaxRange(range) - lengthChange;
|
||||
newRange.length = NSMaxRange(_selected_range) - (NSMaxRange(range) - lengthChange);
|
||||
newRange.location = NSMaxRange(range);
|
||||
}
|
||||
else
|
||||
|
@ -2959,6 +2959,10 @@ no_soft_invalidation:
|
|||
else
|
||||
{ /* before before */
|
||||
}
|
||||
/* sanity check */
|
||||
if (NSMaxRange(newRange) > [_textStorage length])
|
||||
newRange = NSMakeRange(MIN(range.location, [_textStorage length]), 0);
|
||||
|
||||
|
||||
/* If there are text views attached to us, let them handle the
|
||||
change. */
|
||||
|
|
Loading…
Reference in a new issue