aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--cocoa/ScintillaCocoa.h1
-rw-r--r--cocoa/ScintillaCocoa.mm15
-rw-r--r--src/Editor.h2
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);