| 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 9da28aa7d28c30409d895ebee210f9a7a99e5e28..b6bd563b3e1211450d526bc87da35a88c3996db4 100644
|
| --- a/content/browser/renderer_host/render_widget_host_view_aura.cc
|
| +++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
|
| @@ -231,10 +231,13 @@ BOOL CALLBACK DismissOwnedPopups(HWND window, LPARAM arg) {
|
| }
|
| #endif
|
|
|
| -bool CanRendererHandleEvent(const ui::MouseEvent* event) {
|
| +bool CanRendererHandleEvent(const ui::MouseEvent* event, bool mouse_locked) {
|
| if (event->type() == ui::ET_MOUSE_CAPTURE_CHANGED)
|
| return false;
|
|
|
| + if (mouse_locked && (event->type() == ui::ET_MOUSE_EXITED))
|
| + return false;
|
| +
|
| #if defined(OS_WIN)
|
| // Renderer cannot handle WM_XBUTTON or NC events.
|
| switch (event->native_event().message) {
|
| @@ -1040,7 +1043,8 @@ void RenderWidgetHostViewAura::UpdateConstrainedWindowRects(
|
| void RenderWidgetHostViewAura::UpdateMouseLockRegion() {
|
| // Clip the cursor if chrome is running on regular desktop.
|
| if (gfx::Screen::GetScreenFor(window_) == gfx::Screen::GetNativeScreen()) {
|
| - RECT window_rect = window_->GetBoundsInScreen().ToRECT();
|
| + RECT window_rect =
|
| + gfx::win::DIPToScreenRect(window_->GetBoundsInScreen()).ToRECT();
|
| ::ClipCursor(&window_rect);
|
| }
|
| }
|
| @@ -1932,7 +1936,7 @@ void RenderWidgetHostViewAura::OnMouseEvent(ui::MouseEvent* event) {
|
| window_->MoveCursorTo(center);
|
| }
|
| // Forward event to renderer.
|
| - if (CanRendererHandleEvent(event) &&
|
| + if (CanRendererHandleEvent(event, mouse_locked_) &&
|
| !(event->flags() & ui::EF_FROM_TOUCH)) {
|
| host_->ForwardMouseEvent(mouse_event);
|
| // Ensure that we get keyboard focus on mouse down as a plugin window
|
| @@ -1982,7 +1986,7 @@ void RenderWidgetHostViewAura::OnMouseEvent(ui::MouseEvent* event) {
|
| MakeWebMouseWheelEvent(static_cast<ui::MouseWheelEvent&>(*event));
|
| if (mouse_wheel_event.deltaX != 0 || mouse_wheel_event.deltaY != 0)
|
| host_->ForwardWheelEvent(mouse_wheel_event);
|
| - } else if (CanRendererHandleEvent(event) &&
|
| + } else if (CanRendererHandleEvent(event, mouse_locked_) &&
|
| !(event->flags() & ui::EF_FROM_TOUCH)) {
|
| // Confirm existing composition text on mouse press, to make sure
|
| // the input caret won't be moved with an ongoing composition text.
|
|
|