From 2d09d503eee82c8ae6bfbd31d34218d8357332ea Mon Sep 17 00:00:00 2001 From: Allan Odgaard Date: Thu, 24 Jul 2014 22:30:53 +0200 Subject: [PATCH] When clearing marked range, ensure pending range is also cleared MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This fixes an issue with complex input managers. Using Chinese pinyin input and entering ‘ci’ followed by ‘1’ to insert first glyph would insert the glyph (‘刺’) and then set the pending marked range (0-2), which would have caret end up in the middle of a multi-byte sequence. --- Frameworks/OakTextView/src/OakTextView.mm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Frameworks/OakTextView/src/OakTextView.mm b/Frameworks/OakTextView/src/OakTextView.mm index f6c5d236..d0fce4f8 100644 --- a/Frameworks/OakTextView/src/OakTextView.mm +++ b/Frameworks/OakTextView/src/OakTextView.mm @@ -1082,7 +1082,7 @@ doScroll: { D(DBF_OakTextView_TextInput, bug("\n");); AUTO_REFRESH; - markedRanges = ng::ranges_t(); + markedRanges = pendingMarkedRanges = ng::ranges_t(); } - (BOOL)hasMarkedText @@ -2045,6 +2045,7 @@ static void update_menu_key_equivalents (NSMenu* menu, action_to_key_t const& ac [self delete:nil]; markedRanges = ng::ranges_t(); } + pendingMarkedRanges = ng::ranges_t(); if(![aString isKindOfClass:[NSString class]]) {