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 18dcf46ae16625f71ab8488c275e21f62b1aa4f4..8a3376f0766893a0cfc44a235ca79349dbbde5f0 100644 |
| --- a/content/browser/renderer_host/render_widget_host_view_mac.mm |
| +++ b/content/browser/renderer_host/render_widget_host_view_mac.mm |
| @@ -2150,6 +2150,7 @@ void RenderWidgetHostViewMac::OnDisplayMetricsChanged( |
| markedText_.clear(); |
| markedTextSelectedRange_ = NSMakeRange(NSNotFound, 0); |
| underlines_.clear(); |
| + setMarkedTextReplacementRange_ = gfx::Range::InvalidRange(); |
| unmarkTextCalled_ = NO; |
| hasEditCommands_ = NO; |
| editCommands_.clear(); |
| @@ -2235,6 +2236,7 @@ void RenderWidgetHostViewMac::OnDisplayMetricsChanged( |
| // When marked text is available, |markedTextSelectedRange_| will be the |
| // range being selected inside the marked text. |
| widgetHost->ImeSetComposition(markedText_, underlines_, |
| + setMarkedTextReplacementRange_, |
| markedTextSelectedRange_.location, |
| NSMaxRange(markedTextSelectedRange_)); |
| } else if (oldHasMarkedText && !hasMarkedText_ && !textInserted) { |
| @@ -2246,6 +2248,9 @@ void RenderWidgetHostViewMac::OnDisplayMetricsChanged( |
| } |
| } |
| + // Clear information got from |interpretKeyEvents:| |
|
erikchen
2016/01/26 18:25:01
s/got//
|
| + setMarkedTextReplacementRange_ = gfx::Range::InvalidRange(); |
| + |
| // If the key event was handled by the input method but it also generated some |
| // edit commands, then we need to send the real key event and corresponding |
| // edit commands here. This usually occurs when the input method wants to |
| @@ -3097,9 +3102,11 @@ extern NSString *NSTextInputReplacementRangeAttributeName; |
| // is empty to update the input method state. (Our input method backend can |
| // automatically cancels an ongoing composition when we send an empty text. |
| // So, it is OK to send an empty text to the renderer.) |
| - if (!handlingKeyDown_) { |
| + if (handlingKeyDown_) { |
| + setMarkedTextReplacementRange_ = gfx::Range(replacementRange); |
| + } else { |
| renderWidgetHostView_->render_widget_host_->ImeSetComposition( |
| - markedText_, underlines_, |
| + markedText_, underlines_, gfx::Range(replacementRange), |
| newSelRange.location, NSMaxRange(newSelRange)); |
| } |
| } |