Index: content/browser/renderer_host/render_widget_host_view_aura.cc |
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc |
index 074a309e045a43ef514afa1c672bd7bb5a927292..37f3648fcac218e3ba43790eb914a7480c49bfd7 100644 |
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc |
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc |
@@ -1227,6 +1227,14 @@ gfx::GLSurfaceHandle RenderWidgetHostViewAura::GetCompositingSurface() { |
void RenderWidgetHostViewAura::ShowDisambiguationPopup( |
const gfx::Rect& rect_pixels, |
const SkBitmap& zoomed_bitmap) { |
+ RenderViewHostDelegate* delegate = NULL; |
+ if (host_->IsRenderView()) |
+ delegate = RenderViewHost::From(host_)->GetDelegate(); |
+ // Suppress the link disambiguation popup if the virtual keyboard is currently |
+ // requested, as it doesn't interact well with the keyboard. |
+ if (delegate && delegate->IsVirtualKeyboardRequested()) |
+ return; |
+ |
// |target_rect| is provided in pixels, not DIPs. So we convert it to DIPs |
// by scaling it by the inverse of the device scale factor. |
gfx::RectF screen_target_rect_f(rect_pixels); |
@@ -1258,13 +1266,16 @@ void RenderWidgetHostViewAura::DisambiguationPopupRendered( |
return; |
// Use RenderViewHostDelegate to get to the WebContentsViewAura, which will |
- // actually show the delegate. |
+ // actually show the disambiguation popup. |
RenderViewHostDelegate* delegate = NULL; |
if (host_->IsRenderView()) |
delegate = RenderViewHost::From(host_)->GetDelegate(); |
RenderViewHostDelegateView* delegate_view = NULL; |
- if (delegate) |
+ if (delegate) { |
delegate_view = delegate->GetDelegateView(); |
+ if (delegate->IsVirtualKeyboardRequested()) |
+ return; |
+ } |
if (delegate_view) { |
delegate_view->ShowDisambiguationPopup( |
disambiguation_target_rect_, |