| 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 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
| (...skipping 2399 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2410 | 2410 |
| 2411 aura::Window* root_window = window_->GetRootWindow(); | 2411 aura::Window* root_window = window_->GetRootWindow(); |
| 2412 if (!root_window) | 2412 if (!root_window) |
| 2413 return; | 2413 return; |
| 2414 | 2414 |
| 2415 display::Screen* screen = display::Screen::GetScreen(); | 2415 display::Screen* screen = display::Screen::GetScreen(); |
| 2416 DCHECK(screen); | 2416 DCHECK(screen); |
| 2417 | 2417 |
| 2418 gfx::Point cursor_screen_point = screen->GetCursorScreenPoint(); | 2418 gfx::Point cursor_screen_point = screen->GetCursorScreenPoint(); |
| 2419 | 2419 |
| 2420 #if !defined(OS_CHROMEOS) | 2420 #if defined(OS_WIN) |
| 2421 // Ignore cursor update messages if the window under the cursor is not us. | 2421 // Ignore cursor update messages if the window under the cursor is not us. |
| 2422 aura::Window* window_at_screen_point = screen->GetWindowAtScreenPoint( | 2422 aura::Window* window_at_screen_point = screen->GetWindowAtScreenPoint( |
| 2423 cursor_screen_point); | 2423 cursor_screen_point); |
| 2424 #if defined(OS_WIN) | 2424 |
| 2425 // On Windows we may fail to retrieve the aura Window at the current cursor | 2425 // On Windows we may fail to retrieve the aura Window at the current cursor |
| 2426 // position. This is because the WindowFromPoint API may return the legacy | 2426 // position. This is because the WindowFromPoint API may return the legacy |
| 2427 // window which is not associated with an aura Window. In this case we need | 2427 // window which is not associated with an aura Window. In this case we need |
| 2428 // to get the aura window for the parent of the legacy window. | 2428 // to get the aura window for the parent of the legacy window. |
| 2429 if (!window_at_screen_point && legacy_render_widget_host_HWND_) { | 2429 if (!window_at_screen_point && legacy_render_widget_host_HWND_) { |
| 2430 HWND hwnd_at_point = ::WindowFromPoint(cursor_screen_point.ToPOINT()); | 2430 HWND hwnd_at_point = ::WindowFromPoint(cursor_screen_point.ToPOINT()); |
| 2431 | 2431 |
| 2432 if (hwnd_at_point == legacy_render_widget_host_HWND_->hwnd()) | 2432 if (hwnd_at_point == legacy_render_widget_host_HWND_->hwnd()) |
| 2433 hwnd_at_point = legacy_render_widget_host_HWND_->GetParent(); | 2433 hwnd_at_point = legacy_render_widget_host_HWND_->GetParent(); |
| 2434 | 2434 |
| 2435 display::win::ScreenWin* screen_win = | 2435 display::win::ScreenWin* screen_win = |
| 2436 static_cast<display::win::ScreenWin*>(screen); | 2436 static_cast<display::win::ScreenWin*>(screen); |
| 2437 window_at_screen_point = screen_win->GetNativeWindowFromHWND( | 2437 window_at_screen_point = screen_win->GetNativeWindowFromHWND( |
| 2438 hwnd_at_point); | 2438 hwnd_at_point); |
| 2439 } | 2439 } |
| 2440 #endif | 2440 |
| 2441 if (!window_at_screen_point || | 2441 if (!window_at_screen_point || |
| 2442 (window_at_screen_point->GetRootWindow() != root_window)) { | 2442 (window_at_screen_point->GetRootWindow() != root_window)) { |
| 2443 return; | 2443 return; |
| 2444 } | 2444 } |
| 2445 #elif !defined(OS_CHROMEOS) |
| 2446 if (!screen->IsWindowUnderCursor(window_)) |
| 2447 return; |
| 2445 #endif | 2448 #endif |
| 2446 | 2449 |
| 2447 gfx::Point root_window_point = cursor_screen_point; | 2450 gfx::Point root_window_point = cursor_screen_point; |
| 2448 aura::client::ScreenPositionClient* screen_position_client = | 2451 aura::client::ScreenPositionClient* screen_position_client = |
| 2449 aura::client::GetScreenPositionClient(root_window); | 2452 aura::client::GetScreenPositionClient(root_window); |
| 2450 if (screen_position_client) { | 2453 if (screen_position_client) { |
| 2451 screen_position_client->ConvertPointFromScreen( | 2454 screen_position_client->ConvertPointFromScreen( |
| 2452 root_window, &root_window_point); | 2455 root_window, &root_window_point); |
| 2453 } | 2456 } |
| 2454 | 2457 |
| (...skipping 500 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2955 | 2958 |
| 2956 //////////////////////////////////////////////////////////////////////////////// | 2959 //////////////////////////////////////////////////////////////////////////////// |
| 2957 // RenderWidgetHostViewBase, public: | 2960 // RenderWidgetHostViewBase, public: |
| 2958 | 2961 |
| 2959 // static | 2962 // static |
| 2960 void RenderWidgetHostViewBase::GetDefaultScreenInfo(WebScreenInfo* results) { | 2963 void RenderWidgetHostViewBase::GetDefaultScreenInfo(WebScreenInfo* results) { |
| 2961 GetScreenInfoForWindow(results, NULL); | 2964 GetScreenInfoForWindow(results, NULL); |
| 2962 } | 2965 } |
| 2963 | 2966 |
| 2964 } // namespace content | 2967 } // namespace content |
| OLD | NEW |