Index: content/browser/renderer_host/render_widget_host_view_mac.mm |
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm |
index b060993bc86b60f4deef82fbd628feecf78464c1..7144d9a80315c1470773f41e6b558b30e44d28e4 100644 |
--- a/content/browser/renderer_host/render_widget_host_view_mac.mm |
+++ b/content/browser/renderer_host/render_widget_host_view_mac.mm |
@@ -2101,6 +2101,7 @@ void RenderWidgetHostViewMac::OnDisplayMetricsChanged( |
// Clear them here so that we can know whether they have changed afterwards. |
textToBeInserted_.clear(); |
markedText_.clear(); |
+ markedTextSelectedRange_ = NSMakeRange(NSNotFound, 0); |
underlines_.clear(); |
unmarkTextCalled_ = NO; |
hasEditCommands_ = NO; |
@@ -2184,11 +2185,11 @@ void RenderWidgetHostViewMac::OnDisplayMetricsChanged( |
if (hasMarkedText_ && markedText_.length()) { |
// Sends the updated marked text to the renderer so it can update the |
// composition node in WebKit. |
- // When marked text is available, |selectedRange_| will be the range being |
- // selected inside the marked text. |
+ // When marked text is available, |markedTextSelectedRange_| will be the |
+ // range being selected inside the marked text. |
widgetHost->ImeSetComposition(markedText_, underlines_, |
- selectedRange_.location, |
- NSMaxRange(selectedRange_)); |
+ markedTextSelectedRange_.location, |
+ NSMaxRange(markedTextSelectedRange_)); |
} else if (oldHasMarkedText && !hasMarkedText_ && !textInserted) { |
if (unmarkTextCalled_) { |
widgetHost->ImeConfirmComposition( |
@@ -2863,6 +2864,13 @@ extern NSString *NSTextInputReplacementRangeAttributeName; |
return rect; |
} |
+- (NSRange)selectedRange { |
+ if (hasMarkedText_) |
+ return NSMakeRange(NSMaxRange(markedRange_), 0); |
James Su
2015/07/17 03:47:37
I'm not sure if this logic is necessary. The devel
Andre
2015/07/17 18:05:44
Thanks James.
This is actually the main fix for th
James Su
2015/07/18 02:26:33
Can you investigate the root cause of this issue?
|
+ |
+ return selectedRange_; |
+} |
+ |
- (NSRange)markedRange { |
// An input method calls this method to check if an application really has |
// a text being composed when hasMarkedText call returns true. |
@@ -2922,6 +2930,7 @@ extern NSString *NSTextInputReplacementRangeAttributeName; |
// input method calls this method. |
hasMarkedText_ = NO; |
markedText_.clear(); |
+ markedTextSelectedRange_ = NSMakeRange(NSNotFound, 0); |
underlines_.clear(); |
// If we are handling a key down event, then ConfirmComposition() will be |
@@ -2946,7 +2955,7 @@ extern NSString *NSTextInputReplacementRangeAttributeName; |
int length = [im_text length]; |
// |markedRange_| will get set on a callback from ImeSetComposition(). |
- selectedRange_ = newSelRange; |
+ markedTextSelectedRange_ = newSelRange; |
markedText_ = base::SysNSStringToUTF16(im_text); |
hasMarkedText_ = (length > 0); |