OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/renderer_host/render_widget_host_view_aura.h" | 5 #include "content/browser/renderer_host/render_widget_host_view_aura.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 | 8 |
9 #include "base/auto_reset.h" | 9 #include "base/auto_reset.h" |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
92 #include "ui/wm/public/transient_window_client.h" | 92 #include "ui/wm/public/transient_window_client.h" |
93 #include "ui/wm/public/window_types.h" | 93 #include "ui/wm/public/window_types.h" |
94 | 94 |
95 #if defined(OS_WIN) | 95 #if defined(OS_WIN) |
96 #include "content/browser/accessibility/browser_accessibility_manager_win.h" | 96 #include "content/browser/accessibility/browser_accessibility_manager_win.h" |
97 #include "content/browser/accessibility/browser_accessibility_win.h" | 97 #include "content/browser/accessibility/browser_accessibility_win.h" |
98 #include "content/browser/renderer_host/legacy_render_widget_host_win.h" | 98 #include "content/browser/renderer_host/legacy_render_widget_host_win.h" |
99 #include "content/common/plugin_constants_win.h" | 99 #include "content/common/plugin_constants_win.h" |
100 #include "ui/base/win/hidden_window.h" | 100 #include "ui/base/win/hidden_window.h" |
101 #include "ui/gfx/gdi_util.h" | 101 #include "ui/gfx/gdi_util.h" |
| 102 #include "ui/gfx/screen_win.h" |
102 #include "ui/gfx/win/dpi.h" | 103 #include "ui/gfx/win/dpi.h" |
103 #endif | 104 #endif |
104 | 105 |
105 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) | 106 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) |
106 #include "content/common/input_messages.h" | 107 #include "content/common/input_messages.h" |
107 #include "ui/events/linux/text_edit_command_auralinux.h" | 108 #include "ui/events/linux/text_edit_command_auralinux.h" |
108 #include "ui/events/linux/text_edit_key_bindings_delegate_auralinux.h" | 109 #include "ui/events/linux/text_edit_key_bindings_delegate_auralinux.h" |
109 #endif | 110 #endif |
110 | 111 |
111 using gfx::RectToSkIRect; | 112 using gfx::RectToSkIRect; |
(...skipping 2381 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2493 } | 2494 } |
2494 | 2495 |
2495 void RenderWidgetHostViewAura::UpdateCursorIfOverSelf() { | 2496 void RenderWidgetHostViewAura::UpdateCursorIfOverSelf() { |
2496 if (host_->GetProcess()->FastShutdownStarted()) | 2497 if (host_->GetProcess()->FastShutdownStarted()) |
2497 return; | 2498 return; |
2498 | 2499 |
2499 aura::Window* root_window = window_->GetRootWindow(); | 2500 aura::Window* root_window = window_->GetRootWindow(); |
2500 if (!root_window) | 2501 if (!root_window) |
2501 return; | 2502 return; |
2502 | 2503 |
2503 gfx::Point root_window_point = | 2504 gfx::Screen* screen = gfx::Screen::GetScreenFor(GetNativeView()); |
2504 gfx::Screen::GetScreenFor(GetNativeView())->GetCursorScreenPoint(); | 2505 DCHECK(screen); |
| 2506 |
| 2507 gfx::Point cursor_screen_point = screen->GetCursorScreenPoint(); |
| 2508 |
| 2509 #if !defined(OS_CHROMEOS) |
| 2510 // Ignore cursor update messages if the window under the cursor is not us. |
| 2511 aura::Window* window_at_screen_point = screen->GetWindowAtScreenPoint( |
| 2512 cursor_screen_point); |
| 2513 #if defined(OS_WIN) |
| 2514 // On Windows we may fail to retrieve the aura Window at the current cursor |
| 2515 // position. This is because the WindowFromPoint API may return the legacy |
| 2516 // window which is not associated with an aura Window. In this case we need |
| 2517 // to get the aura window for the parent of the legacy window. |
| 2518 if (!window_at_screen_point && legacy_render_widget_host_HWND_) { |
| 2519 HWND hwnd_at_point = ::WindowFromPoint(cursor_screen_point.ToPOINT()); |
| 2520 |
| 2521 if (hwnd_at_point == legacy_render_widget_host_HWND_->hwnd()) |
| 2522 hwnd_at_point = legacy_render_widget_host_HWND_->GetParent(); |
| 2523 |
| 2524 gfx::ScreenWin* screen_win = static_cast<gfx::ScreenWin*>(screen); |
| 2525 DCHECK(screen_win); |
| 2526 window_at_screen_point = screen_win->GetNativeWindowFromHWND( |
| 2527 hwnd_at_point); |
| 2528 } |
| 2529 #endif |
| 2530 if (!window_at_screen_point || |
| 2531 (window_at_screen_point->GetRootWindow() != root_window)) { |
| 2532 return; |
| 2533 } |
| 2534 #endif |
| 2535 |
| 2536 gfx::Point root_window_point = cursor_screen_point; |
2505 aura::client::ScreenPositionClient* screen_position_client = | 2537 aura::client::ScreenPositionClient* screen_position_client = |
2506 aura::client::GetScreenPositionClient(root_window); | 2538 aura::client::GetScreenPositionClient(root_window); |
2507 if (screen_position_client) { | 2539 if (screen_position_client) { |
2508 screen_position_client->ConvertPointFromScreen( | 2540 screen_position_client->ConvertPointFromScreen( |
2509 root_window, &root_window_point); | 2541 root_window, &root_window_point); |
2510 } | 2542 } |
2511 | 2543 |
2512 if (root_window->GetEventHandlerForPoint(root_window_point) != window_) | 2544 if (root_window->GetEventHandlerForPoint(root_window_point) != window_) |
2513 return; | 2545 return; |
2514 | 2546 |
(...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2942 | 2974 |
2943 //////////////////////////////////////////////////////////////////////////////// | 2975 //////////////////////////////////////////////////////////////////////////////// |
2944 // RenderWidgetHostViewBase, public: | 2976 // RenderWidgetHostViewBase, public: |
2945 | 2977 |
2946 // static | 2978 // static |
2947 void RenderWidgetHostViewBase::GetDefaultScreenInfo(WebScreenInfo* results) { | 2979 void RenderWidgetHostViewBase::GetDefaultScreenInfo(WebScreenInfo* results) { |
2948 GetScreenInfoForWindow(results, NULL); | 2980 GetScreenInfoForWindow(results, NULL); |
2949 } | 2981 } |
2950 | 2982 |
2951 } // namespace content | 2983 } // namespace content |
OLD | NEW |