diff options
-rw-r--r-- | cocoa/ScintillaCocoa.h | 1 | ||||
-rw-r--r-- | cocoa/ScintillaCocoa.mm | 15 | ||||
-rw-r--r-- | src/Editor.h | 2 |
3 files changed, 17 insertions, 1 deletions
diff --git a/cocoa/ScintillaCocoa.h b/cocoa/ScintillaCocoa.h index 5aaa386d2..7648b84d8 100644 --- a/cocoa/ScintillaCocoa.h +++ b/cocoa/ScintillaCocoa.h @@ -199,6 +199,7 @@ public: virtual void QueueIdleWork(WorkNeeded::workItems items, int upTo); int InsertText(NSString* input); void SelectOnlyMainSelection(); + virtual void SetDocPointer(Document *document); bool KeyboardInput(NSEvent* event); void MouseDown(NSEvent* event); diff --git a/cocoa/ScintillaCocoa.mm b/cocoa/ScintillaCocoa.mm index dfe2e47d1..d8dd6ae7b 100644 --- a/cocoa/ScintillaCocoa.mm +++ b/cocoa/ScintillaCocoa.mm @@ -1930,6 +1930,21 @@ void ScintillaCocoa::SelectOnlyMainSelection() } //-------------------------------------------------------------------------------------------------- +/** + * When switching documents discard any incomplete character composition state as otherwise tries to + * act on the new document. + */ +void ScintillaCocoa::SetDocPointer(Document *document) +{ + // Drop input composition. + NSTextInputContext *inctxt = [NSTextInputContext currentInputContext]; + [inctxt discardMarkedText]; + InnerView *inner = ContentView(); + [inner removeMarkedText]; + Editor::SetDocPointer(document); +} + +//-------------------------------------------------------------------------------------------------- /** * Called by the owning view when the mouse pointer enters the control. diff --git a/src/Editor.h b/src/Editor.h index f2b452a77..4e6c7aee9 100644 --- a/src/Editor.h +++ b/src/Editor.h @@ -565,7 +565,7 @@ protected: // ScintillaBase subclass needs access to much of Editor void SetBraceHighlight(Position pos0, Position pos1, int matchStyle); void SetAnnotationHeights(int start, int end); - void SetDocPointer(Document *document); + virtual void SetDocPointer(Document *document); void SetAnnotationVisible(int visible); |