Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1134)

Side by Side Diff: ui/aura/root_window.cc

Issue 10919135: Move ash specific cursor code to CursorManager. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ui/aura/root_window.h ('k') | ui/aura/root_window_host_linux.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "ui/aura/root_window.h" 5 #include "ui/aura/root_window.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/command_line.h" 11 #include "base/command_line.h"
12 #include "base/debug/trace_event.h" 12 #include "base/debug/trace_event.h"
13 #include "base/logging.h" 13 #include "base/logging.h"
14 #include "base/message_loop.h" 14 #include "base/message_loop.h"
15 #include "ui/aura/aura_switches.h" 15 #include "ui/aura/aura_switches.h"
16 #include "ui/aura/client/activation_client.h" 16 #include "ui/aura/client/activation_client.h"
17 #include "ui/aura/client/capture_client.h" 17 #include "ui/aura/client/capture_client.h"
18 #include "ui/aura/client/drag_drop_client.h" 18 #include "ui/aura/client/cursor_client.h"
19 #include "ui/aura/client/event_client.h" 19 #include "ui/aura/client/event_client.h"
20 #include "ui/aura/client/screen_position_client.h" 20 #include "ui/aura/client/screen_position_client.h"
21 #include "ui/aura/display_manager.h" 21 #include "ui/aura/display_manager.h"
22 #include "ui/aura/env.h" 22 #include "ui/aura/env.h"
23 #include "ui/aura/event_filter.h" 23 #include "ui/aura/event_filter.h"
24 #include "ui/aura/focus_manager.h" 24 #include "ui/aura/focus_manager.h"
25 #include "ui/aura/root_window_host.h" 25 #include "ui/aura/root_window_host.h"
26 #include "ui/aura/root_window_observer.h" 26 #include "ui/aura/root_window_observer.h"
27 #include "ui/aura/window.h" 27 #include "ui/aura/window.h"
28 #include "ui/aura/window_delegate.h" 28 #include "ui/aura/window_delegate.h"
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 CancelLock(); 103 CancelLock();
104 } 104 }
105 105
106 void CompositorLock::CancelLock() { 106 void CompositorLock::CancelLock() {
107 if (!root_window_) 107 if (!root_window_)
108 return; 108 return;
109 root_window_->UnlockCompositor(); 109 root_window_->UnlockCompositor();
110 root_window_ = NULL; 110 root_window_ = NULL;
111 } 111 }
112 112
113 bool RootWindow::hide_host_cursor_ = false;
114
115 RootWindow::CreateParams::CreateParams(const gfx::Rect& a_initial_bounds) 113 RootWindow::CreateParams::CreateParams(const gfx::Rect& a_initial_bounds)
116 : initial_bounds(a_initial_bounds), 114 : initial_bounds(a_initial_bounds),
117 host(NULL) { 115 host(NULL) {
118 } 116 }
119 117
120 //////////////////////////////////////////////////////////////////////////////// 118 ////////////////////////////////////////////////////////////////////////////////
121 // RootWindow, public: 119 // RootWindow, public:
122 120
123 RootWindow::RootWindow(const CreateParams& params) 121 RootWindow::RootWindow(const CreateParams& params)
124 : Window(NULL), 122 : Window(NULL),
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 SetLastMouseLocation(this, ui::ConvertPointToDIP(layer(), point)); 237 SetLastMouseLocation(this, ui::ConvertPointToDIP(layer(), point));
240 238
241 synthesize_mouse_move_ = false; 239 synthesize_mouse_move_ = false;
242 } 240 }
243 241
244 gfx::Point RootWindow::GetHostOrigin() const { 242 gfx::Point RootWindow::GetHostOrigin() const {
245 return host_->GetBounds().origin(); 243 return host_->GetBounds().origin();
246 } 244 }
247 245
248 void RootWindow::SetCursor(gfx::NativeCursor cursor) { 246 void RootWindow::SetCursor(gfx::NativeCursor cursor) {
249 // If a drag is in progress, the DragDropClient should override the cursor.
250 client::DragDropClient* dnd_client = client::GetDragDropClient(this);
251 if (dnd_client && dnd_client->IsDragDropInProgress())
252 cursor = dnd_client->GetDragCursor();
253
254 last_cursor_ = cursor; 247 last_cursor_ = cursor;
255 // A lot of code seems to depend on NULL cursors actually showing an arrow, 248 // A lot of code seems to depend on NULL cursors actually showing an arrow,
256 // so just pass everything along to the host. 249 // so just pass everything along to the host.
257 host_->SetCursor(cursor); 250 host_->SetCursor(cursor);
258 } 251 }
259 252
260 void RootWindow::ShowCursor(bool show) { 253 void RootWindow::ShowCursor(bool show) {
261 // Send entered / exited so that visual state can be updated to match 254 // Send entered / exited so that visual state can be updated to match
262 // cursor state. 255 // cursor state.
263 if (show != cursor_shown_) { 256 if (show != cursor_shown_) {
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 } 515 }
523 516
524 void RootWindow::OnCompositingAborted(ui::Compositor*) { 517 void RootWindow::OnCompositingAborted(ui::Compositor*) {
525 } 518 }
526 519
527 //////////////////////////////////////////////////////////////////////////////// 520 ////////////////////////////////////////////////////////////////////////////////
528 // RootWindow, ui::LayerDelegate implementation: 521 // RootWindow, ui::LayerDelegate implementation:
529 522
530 void RootWindow::OnDeviceScaleFactorChanged( 523 void RootWindow::OnDeviceScaleFactorChanged(
531 float device_scale_factor) { 524 float device_scale_factor) {
532 if (cursor_shown_) 525 const bool cursor_is_in_bounds =
526 GetBoundsInScreen().Contains(Env::GetInstance()->last_mouse_location());
527 if (cursor_is_in_bounds && cursor_shown_)
533 ShowCursor(false); 528 ShowCursor(false);
534 host_->OnDeviceScaleFactorChanged(device_scale_factor); 529 host_->OnDeviceScaleFactorChanged(device_scale_factor);
535 Window::OnDeviceScaleFactorChanged(device_scale_factor); 530 Window::OnDeviceScaleFactorChanged(device_scale_factor);
536 if (cursor_shown_) 531 // Update the device scale factor of the cursor client only when the last
532 // mouse location is on this root window.
533 if (cursor_is_in_bounds) {
534 client::CursorClient* cursor_client = client::GetCursorClient(this);
535 if (cursor_client)
536 cursor_client->SetDeviceScaleFactor(device_scale_factor);
537 }
538 if (cursor_is_in_bounds && cursor_shown_)
537 ShowCursor(true); 539 ShowCursor(true);
538 } 540 }
539 541
540 //////////////////////////////////////////////////////////////////////////////// 542 ////////////////////////////////////////////////////////////////////////////////
541 // RootWindow, overridden from aura::Window: 543 // RootWindow, overridden from aura::Window:
542 544
543 bool RootWindow::CanFocus() const { 545 bool RootWindow::CanFocus() const {
544 return IsVisible(); 546 return IsVisible();
545 } 547 }
546 548
(...skipping 546 matching lines...) Expand 10 before | Expand all | Expand 10 after
1093 void RootWindow::UnlockCompositor() { 1095 void RootWindow::UnlockCompositor() {
1094 DCHECK(compositor_lock_); 1096 DCHECK(compositor_lock_);
1095 compositor_lock_ = NULL; 1097 compositor_lock_ = NULL;
1096 if (draw_on_compositor_unlock_) { 1098 if (draw_on_compositor_unlock_) {
1097 draw_on_compositor_unlock_ = false; 1099 draw_on_compositor_unlock_ = false;
1098 ScheduleDraw(); 1100 ScheduleDraw();
1099 } 1101 }
1100 } 1102 }
1101 1103
1102 } // namespace aura 1104 } // namespace aura
OLDNEW
« no previous file with comments | « ui/aura/root_window.h ('k') | ui/aura/root_window_host_linux.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698