diff options
Diffstat (limited to 'cocoa/ScintillaView.mm')
-rw-r--r-- | cocoa/ScintillaView.mm | 36 |
1 files changed, 17 insertions, 19 deletions
diff --git a/cocoa/ScintillaView.mm b/cocoa/ScintillaView.mm index 2db8fae12..97bc0edfe 100644 --- a/cocoa/ScintillaView.mm +++ b/cocoa/ScintillaView.mm @@ -383,13 +383,7 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor) // Its replacing a non-existent position so do nothing. return; - if (replacementRange.length > 0) - { - [ScintillaView directCall: mOwner - message: SCI_DELETERANGE - wParam: replacementRange.location - lParam: replacementRange.length]; - } + [mOwner deleteRange: replacementRange]; NSString* newText = @""; if ([aString isKindOfClass:[NSString class]]) @@ -459,13 +453,7 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor) mOwner.backend->SelectOnlyMainSelection(); } - if (replacementRange.length > 0) - { - [ScintillaView directCall: mOwner - message: SCI_DELETERANGE - wParam: replacementRange.location - lParam: replacementRange.length]; - } + [mOwner deleteRange: replacementRange]; // Note: Scintilla internally works almost always with bytes instead chars, so we need to take // this into account when determining selection ranges and such. @@ -532,11 +520,8 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor) if (mMarkedTextRange.length > 0) { // We have already marked text. Replace that. - [mOwner setGeneralProperty: SCI_SETSELECTIONSTART - value: mMarkedTextRange.location]; - [mOwner setGeneralProperty: SCI_SETSELECTIONEND - value: mMarkedTextRange.location + mMarkedTextRange.length]; - mOwner.backend->InsertText(@""); + [mOwner deleteRange: mMarkedTextRange]; + mMarkedTextRange = NSMakeRange(NSNotFound, 0); // Reenable undo action collection, after we are done with text composition. @@ -1254,6 +1239,19 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor) //-------------------------------------------------------------------------------------------------- /** + * Delete a range from the document. + */ +- (void) deleteRange: (NSRange) aRange +{ + if (aRange.length > 0) + { + [self message: SCI_DELETERANGE wParam: aRange.location lParam: aRange.length]; + } +} + +//-------------------------------------------------------------------------------------------------- + +/** * Getter for the current text in raw form (no formatting information included). * If there is no text available an empty string is returned. */ |