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)); |
} |
} |