summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-10 01:55:04 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-10 01:55:04 +0000
commitc6839877bdbf53f97fec94d6a9c046a7974c1ce1 (patch)
treeaf0f069e22a51e1e71cd2d293bb1818e86b505b6
parent5ec41b8410e776699defd61afe439a7b8938fb03 (diff)
downloadchromium_src-c6839877bdbf53f97fec94d6a9c046a7974c1ce1.zip
chromium_src-c6839877bdbf53f97fec94d6a9c046a7974c1ce1.tar.gz
chromium_src-c6839877bdbf53f97fec94d6a9c046a7974c1ce1.tar.bz2
Send mouse events to the renderer before changing mouse capture, so that the mousecapturelost arrives after mouseup.
Review URL: http://codereview.chromium.org/743003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41113 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/renderer_host/render_widget_host_view_win.cc7
-rw-r--r--webkit/tools/test_shell/webwidget_host_win.cc2
2 files changed, 6 insertions, 3 deletions
diff --git a/chrome/browser/renderer_host/render_widget_host_view_win.cc b/chrome/browser/renderer_host/render_widget_host_view_win.cc
index 780b555..f2125ff 100644
--- a/chrome/browser/renderer_host/render_widget_host_view_win.cc
+++ b/chrome/browser/renderer_host/render_widget_host_view_win.cc
@@ -1557,6 +1557,11 @@ void RenderWidgetHostViewWin::ForwardMouseEventToRenderer(UINT message,
WebMouseEvent event(
WebInputEventFactory::mouseEvent(m_hWnd, message, wparam, lparam));
+
+ // Send the event to the renderer before changing mouse capture, so that the
+ // capturelost event arrives after mouseup.
+ render_widget_host_->ForwardMouseEvent(event);
+
switch (event.type) {
case WebInputEvent::MouseMove:
TrackMouseLeave(true);
@@ -1573,8 +1578,6 @@ void RenderWidgetHostViewWin::ForwardMouseEventToRenderer(UINT message,
break;
}
- render_widget_host_->ForwardMouseEvent(event);
-
if (activatable_ && event.type == WebInputEvent::MouseDown) {
// This is a temporary workaround for bug 765011 to get focus when the
// mouse is clicked. This happens after the mouse down event is sent to
diff --git a/webkit/tools/test_shell/webwidget_host_win.cc b/webkit/tools/test_shell/webwidget_host_win.cc
index 59794d0..6ecfcee 100644
--- a/webkit/tools/test_shell/webwidget_host_win.cc
+++ b/webkit/tools/test_shell/webwidget_host_win.cc
@@ -291,6 +291,7 @@ void WebWidgetHost::Resize(LPARAM lparam) {
void WebWidgetHost::MouseEvent(UINT message, WPARAM wparam, LPARAM lparam) {
const WebMouseEvent& event = WebInputEventFactory::mouseEvent(
view_, message, wparam, lparam);
+ webwidget_->handleInputEvent(event);
switch (event.type) {
case WebInputEvent::MouseMove:
TrackMouseLeave(true);
@@ -311,7 +312,6 @@ void WebWidgetHost::MouseEvent(UINT message, WPARAM wparam, LPARAM lparam) {
ReleaseCapture();
break;
}
- webwidget_->handleInputEvent(event);
}
void WebWidgetHost::WheelEvent(WPARAM wparam, LPARAM lparam) {