mirror of
https://github.com/coteditor/CotEditor.git
synced 2024-10-26 19:10:11 +03:00
Fix text selection after line moving
This commit is contained in:
parent
e111b4a8ee
commit
18b03804ae
@ -16,7 +16,8 @@ develop
|
|||||||
|
|
||||||
### Fixes
|
### Fixes
|
||||||
|
|
||||||
- Fix an issue where window title bar was dyed in the editor's background color on El Capitan.
|
- Fix an issue where window title bar was dyed in the editor's background color on El Capitan.
|
||||||
|
- Fix an issue where text selection after move multiple lines was broken.
|
||||||
- Fix an issue where `$` or `^` anchors in the regular expression via AppleScript didn't work with document that has non-LF line endings.
|
- Fix an issue where `$` or `^` anchors in the regular expression via AppleScript didn't work with document that has non-LF line endings.
|
||||||
- Fix an issue where syntax highlighting indicator became occasionally unclosable under the specific condition on document opening.
|
- Fix an issue where syntax highlighting indicator became occasionally unclosable under the specific condition on document opening.
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@
|
|||||||
// register redo for text selection
|
// register redo for text selection
|
||||||
[[[self undoManager] prepareWithInvocationTarget:self] setSelectedRangesWithUndo:[self selectedRanges]];
|
[[[self undoManager] prepareWithInvocationTarget:self] setSelectedRangesWithUndo:[self selectedRanges]];
|
||||||
|
|
||||||
NSMutableArray<NSValue *> *newSelectedRanges = [NSMutableArray arrayWithCapacity:[selectedRanges count]];
|
NSMutableArray<NSValue *> *newSelectedRanges = [NSMutableArray arrayWithCapacity:[lineRanges count]];
|
||||||
|
|
||||||
// swap lines
|
// swap lines
|
||||||
[textStorage beginEditing];
|
[textStorage beginEditing];
|
||||||
@ -80,12 +80,11 @@
|
|||||||
// move selected ranges in the line to move
|
// move selected ranges in the line to move
|
||||||
for (NSValue *selectedRangeValue in selectedRanges) {
|
for (NSValue *selectedRangeValue in selectedRanges) {
|
||||||
NSRange selectedRange = [selectedRangeValue rangeValue];
|
NSRange selectedRange = [selectedRangeValue rangeValue];
|
||||||
|
NSRange intersectionRange = NSIntersectionRange(selectedRange, editRange);
|
||||||
|
|
||||||
if ((selectedRange.location > lineRange.location) ||
|
if (intersectionRange.length > 0) {
|
||||||
(selectedRange.location <= NSMaxRange(lineRange)))
|
intersectionRange.location -= upperLineRange.length;
|
||||||
{
|
[newSelectedRanges addObject:[NSValue valueWithRange:intersectionRange]];
|
||||||
selectedRange.location -= upperLineRange.length;
|
|
||||||
[newSelectedRanges addObject:[NSValue valueWithRange:selectedRange]];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -119,7 +118,7 @@
|
|||||||
// register redo for text selection
|
// register redo for text selection
|
||||||
[[[self undoManager] prepareWithInvocationTarget:self] setSelectedRangesWithUndo:[self selectedRanges]];
|
[[[self undoManager] prepareWithInvocationTarget:self] setSelectedRangesWithUndo:[self selectedRanges]];
|
||||||
|
|
||||||
NSMutableArray<NSValue *> *newSelectedRanges = [NSMutableArray arrayWithCapacity:[selectedRanges count]];
|
NSMutableArray<NSValue *> *newSelectedRanges = [NSMutableArray arrayWithCapacity:[lineRanges count]];
|
||||||
|
|
||||||
// swap lines
|
// swap lines
|
||||||
[textStorage beginEditing];
|
[textStorage beginEditing];
|
||||||
@ -147,12 +146,11 @@
|
|||||||
// move selected ranges in the line to move
|
// move selected ranges in the line to move
|
||||||
for (NSValue *selectedRangeValue in selectedRanges) {
|
for (NSValue *selectedRangeValue in selectedRanges) {
|
||||||
NSRange selectedRange = [selectedRangeValue rangeValue];
|
NSRange selectedRange = [selectedRangeValue rangeValue];
|
||||||
|
NSRange intersectionRange = NSIntersectionRange(selectedRange, editRange);
|
||||||
|
|
||||||
if ((selectedRange.location > lineRange.location) ||
|
if (intersectionRange.length > 0) {
|
||||||
(selectedRange.location <= NSMaxRange(lineRange)))
|
intersectionRange.location += lowerLineRange.length;
|
||||||
{
|
[newSelectedRanges addObject:[NSValue valueWithRange:intersectionRange]];
|
||||||
selectedRange.location += lowerLineRange.length;
|
|
||||||
[newSelectedRanges addObject:[NSValue valueWithRange:selectedRange]];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user