Chromium Code Reviews| 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); |