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 "ash/wm/ash_native_cursor_manager.h" | 5 #include "ash/wm/ash_native_cursor_manager.h" |
6 | 6 |
7 #include "ash/display/cursor_window_controller.h" | 7 #include "ash/display/cursor_window_controller.h" |
8 #include "ash/display/display_controller.h" | 8 #include "ash/display/display_controller.h" |
9 #include "ash/shell.h" | 9 #include "ash/shell.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
11 #include "ui/aura/env.h" | 11 #include "ui/aura/env.h" |
12 #include "ui/aura/window_event_dispatcher.h" | 12 #include "ui/aura/window_event_dispatcher.h" |
13 #include "ui/aura/window_tree_host.h" | 13 #include "ui/aura/window_tree_host.h" |
14 #include "ui/base/cursor/cursor.h" | 14 #include "ui/base/cursor/cursor.h" |
15 #include "ui/base/cursor/image_cursors.h" | 15 #include "ui/base/cursor/image_cursors.h" |
| 16 #include "ui/base/layout.h" |
16 | 17 |
17 namespace ash { | 18 namespace ash { |
18 namespace { | 19 namespace { |
19 | 20 |
20 void SetCursorOnAllRootWindows(gfx::NativeCursor cursor) { | 21 void SetCursorOnAllRootWindows(gfx::NativeCursor cursor) { |
21 aura::Window::Windows root_windows = | 22 aura::Window::Windows root_windows = |
22 Shell::GetInstance()->GetAllRootWindows(); | 23 Shell::GetInstance()->GetAllRootWindows(); |
23 for (aura::Window::Windows::iterator iter = root_windows.begin(); | 24 for (aura::Window::Windows::iterator iter = root_windows.begin(); |
24 iter != root_windows.end(); ++iter) | 25 iter != root_windows.end(); ++iter) |
25 (*iter)->GetHost()->SetCursor(cursor); | 26 (*iter)->GetHost()->SetCursor(cursor); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
68 Shell::GetInstance()->cursor_manager(); | 69 Shell::GetInstance()->cursor_manager(); |
69 SetCursor(cursor_manager->GetCursor(), cursor_manager); | 70 SetCursor(cursor_manager->GetCursor(), cursor_manager); |
70 } | 71 } |
71 | 72 |
72 void AshNativeCursorManager::SetDisplay( | 73 void AshNativeCursorManager::SetDisplay( |
73 const gfx::Display& display, | 74 const gfx::Display& display, |
74 ::wm::NativeCursorManagerDelegate* delegate) { | 75 ::wm::NativeCursorManagerDelegate* delegate) { |
75 DCHECK(display.is_valid()); | 76 DCHECK(display.is_valid()); |
76 // Use the platform's device scale factor instead of the display's, which | 77 // Use the platform's device scale factor instead of the display's, which |
77 // might have been adjusted for the UI scale. | 78 // might have been adjusted for the UI scale. |
78 const float scale_factor = Shell::GetInstance()->display_manager()-> | 79 const float original_scale = Shell::GetInstance()->display_manager()-> |
79 GetDisplayInfo(display.id()).device_scale_factor(); | 80 GetDisplayInfo(display.id()).device_scale_factor(); |
80 if (image_cursors_->SetDisplay(display, scale_factor)) | 81 #if defined(OS_CHROMEOS) |
| 82 // And use the nearest resource scale factor. |
| 83 const float cursor_scale = ui::GetScaleForScaleFactor( |
| 84 ui::GetSupportedScaleFactor(original_scale)); |
| 85 #else |
| 86 // TODO(oshima): crbug.com/143619 |
| 87 const float cursor_scale = original_scale; |
| 88 #endif |
| 89 if (image_cursors_->SetDisplay(display, cursor_scale)) |
81 SetCursor(delegate->GetCursor(), delegate); | 90 SetCursor(delegate->GetCursor(), delegate); |
82 #if defined(OS_CHROMEOS) | 91 #if defined(OS_CHROMEOS) |
83 Shell::GetInstance()->display_controller()->cursor_window_controller()-> | 92 Shell::GetInstance()->display_controller()->cursor_window_controller()-> |
84 SetDisplay(display); | 93 SetDisplay(display); |
85 #endif | 94 #endif |
86 } | 95 } |
87 | 96 |
88 void AshNativeCursorManager::SetCursor( | 97 void AshNativeCursorManager::SetCursor( |
89 gfx::NativeCursor cursor, | 98 gfx::NativeCursor cursor, |
90 ::wm::NativeCursorManagerDelegate* delegate) { | 99 ::wm::NativeCursorManagerDelegate* delegate) { |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 disabled_cursor_location_); | 158 disabled_cursor_location_); |
150 } else { | 159 } else { |
151 disabled_cursor_location_ = aura::Env::GetInstance()->last_mouse_location(); | 160 disabled_cursor_location_ = aura::Env::GetInstance()->last_mouse_location(); |
152 } | 161 } |
153 | 162 |
154 SetVisibility(delegate->IsCursorVisible(), delegate); | 163 SetVisibility(delegate->IsCursorVisible(), delegate); |
155 NotifyMouseEventsEnableStateChange(enabled); | 164 NotifyMouseEventsEnableStateChange(enabled); |
156 } | 165 } |
157 | 166 |
158 } // namespace ash | 167 } // namespace ash |
OLD | NEW |