OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "ui/views/event_utils.h" | 5 #include "ui/views/event_utils.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "ui/aura/client/screen_position_client.h" | 9 #include "ui/aura/client/screen_position_client.h" |
10 #include "ui/aura/root_window.h" | 10 #include "ui/aura/root_window.h" |
11 #include "ui/events/event.h" | 11 #include "ui/events/event.h" |
12 #include "ui/gfx/point.h" | 12 #include "ui/gfx/point.h" |
| 13 #include "ui/views/views_delegate.h" |
13 | 14 |
14 using aura::client::ScreenPositionClient; | 15 using aura::client::ScreenPositionClient; |
15 | 16 |
16 namespace views { | 17 namespace views { |
17 | 18 |
18 bool RepostLocatedEvent(gfx::NativeWindow window, | 19 bool RepostLocatedEvent(gfx::NativeWindow window, |
19 const ui::LocatedEvent& event) { | 20 const ui::LocatedEvent& event) { |
20 if (!window) | 21 if (!window) |
21 return false; | 22 return false; |
22 | 23 |
| 24 #if defined(OS_WIN) |
| 25 if (ViewsDelegate::views_delegate && |
| 26 !ViewsDelegate::views_delegate->IsWindowInMetro(window)) { |
| 27 return RepostLocatedEventWin( |
| 28 window->GetDispatcher()->host()->GetAcceleratedWidget(), event); |
| 29 } |
| 30 #endif |
23 aura::Window* root_window = window->GetRootWindow(); | 31 aura::Window* root_window = window->GetRootWindow(); |
24 | 32 |
25 gfx::Point root_loc(event.location()); | 33 gfx::Point root_loc(event.location()); |
26 ScreenPositionClient* spc = | 34 ScreenPositionClient* spc = |
27 aura::client::GetScreenPositionClient(root_window); | 35 aura::client::GetScreenPositionClient(root_window); |
28 if (!spc) | 36 if (!spc) |
29 return false; | 37 return false; |
30 | 38 |
31 spc->ConvertPointFromScreen(root_window, &root_loc); | 39 spc->ConvertPointFromScreen(root_window, &root_loc); |
32 | 40 |
(...skipping 10 matching lines...) Expand all Loading... |
43 return false; | 51 return false; |
44 } | 52 } |
45 relocated->set_location(root_loc); | 53 relocated->set_location(root_loc); |
46 relocated->set_root_location(root_loc); | 54 relocated->set_root_location(root_loc); |
47 | 55 |
48 root_window->GetDispatcher()->RepostEvent(*relocated); | 56 root_window->GetDispatcher()->RepostEvent(*relocated); |
49 return true; | 57 return true; |
50 } | 58 } |
51 | 59 |
52 } // namespace views | 60 } // namespace views |
OLD | NEW |