From 2c02e355bf0631c0bec3496fab67f45710c5cd21 Mon Sep 17 00:00:00 2001 From: Grace Kloba Date: Wed, 23 Sep 2009 17:31:16 -0700 Subject: [PATCH] When mouse down or plugin handles touch down, set the plugin to be the focus of the document so that it can receive key events. This has the same logic as in PluginViewMac.cpp's handleMouseEvent(). --- WebCore/plugins/android/PluginViewAndroid.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/WebCore/plugins/android/PluginViewAndroid.cpp b/WebCore/plugins/android/PluginViewAndroid.cpp index d98ccef04..7d10993fe 100644 --- a/WebCore/plugins/android/PluginViewAndroid.cpp +++ b/WebCore/plugins/android/PluginViewAndroid.cpp @@ -31,6 +31,7 @@ #include "Document.h" #include "Element.h" #include "EventNames.h" +#include "FocusController.h" #include "FrameLoader.h" #include "FrameLoadRequest.h" #include "FrameTree.h" @@ -243,6 +244,12 @@ void PluginView::handleTouchEvent(TouchEvent* event) evt.data.touch.y = event->pageY() - m_npWindow.y; if (m_plugin->pluginFuncs()->event(m_instance, &evt)) { + // The plugin needs focus to receive keyboard events + if (evt.data.touch.action == kDown_ANPTouchAction) { + if (Page* page = m_parentFrame->page()) + page->focusController()->setFocusedFrame(m_parentFrame); + m_parentFrame->document()->setFocusedNode(m_element); + } event->setDefaultPrevented(true); } } @@ -264,6 +271,12 @@ void PluginView::handleMouseEvent(MouseEvent* event) // coordinates despite their misleading name. evt.data.mouse.x = event->pageX() - m_npWindow.x; evt.data.mouse.y = event->pageY() - m_npWindow.y; + if (isDown) { + // The plugin needs focus to receive keyboard events + if (Page* page = m_parentFrame->page()) + page->focusController()->setFocusedFrame(m_parentFrame); + m_parentFrame->document()->setFocusedNode(m_element); + } } else { return; -- 2.11.0