Index: content/renderer/render_view_impl.cc |
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc |
index 98c2b6928ac1d3531cf872de15dab108a3866f0b..63721dac14a42b40f146def6bc95076099a418e2 100644 |
--- a/content/renderer/render_view_impl.cc |
+++ b/content/renderer/render_view_impl.cc |
@@ -1710,6 +1710,8 @@ void RenderViewImpl::OnSetName(const std::string& name) { |
void RenderViewImpl::OnSetEditableSelectionOffsets(int start, int end) { |
base::AutoReset<bool> handling_select_range(&handling_select_range_, true); |
+ if (RenderWidget::HasOutstandingImeEventAcknowledgements()) |
aurimas (slooooooooow)
2013/07/08 16:04:49
Maybe we should create a call shouldProcessImeEven
nyquist
2013/07/09 07:47:36
Done.
|
+ return; |
ImeEventGuard guard(this); |
webview()->setEditableSelectionOffsets(start, end); |
} |
@@ -1719,6 +1721,8 @@ void RenderViewImpl::OnSetCompositionFromExistingText( |
const std::vector<WebKit::WebCompositionUnderline>& underlines) { |
if (!webview()) |
return; |
+ if (RenderWidget::HasOutstandingImeEventAcknowledgements()) |
+ return; |
ImeEventGuard guard(this); |
webview()->setCompositionFromExistingText(start, end, underlines); |
} |
@@ -1726,6 +1730,8 @@ void RenderViewImpl::OnSetCompositionFromExistingText( |
void RenderViewImpl::OnExtendSelectionAndDelete(int before, int after) { |
if (!webview()) |
return; |
+ if (RenderWidget::HasOutstandingImeEventAcknowledgements()) |
+ return; |
ImeEventGuard guard(this); |
webview()->extendSelectionAndDelete(before, after); |
} |
@@ -2320,8 +2326,10 @@ void RenderViewImpl::didCancelCompositionOnSelectionChange() { |
} |
void RenderViewImpl::didChangeSelection(bool is_empty_selection) { |
- if (!handling_input_event_ && !handling_select_range_) |
+ if (!handling_input_event_ && !handling_select_range_ && |
+ !RenderWidget::has_strict_ime_processing()) { |
return; |
+ } |
if (is_empty_selection) |
selection_text_.clear(); |