Index: ui/views/widget/desktop_aura/desktop_cursor_client.cc |
diff --git a/ui/views/widget/desktop_aura/desktop_cursor_client.cc b/ui/views/widget/desktop_aura/desktop_cursor_client.cc |
index b027e74b62ce17aed6933f22d7ca759ea56ba179..fa88ab50fcf2f7025004da206e7f56c504f2120e 100644 |
--- a/ui/views/widget/desktop_aura/desktop_cursor_client.cc |
+++ b/ui/views/widget/desktop_aura/desktop_cursor_client.cc |
@@ -11,70 +11,52 @@ namespace views { |
DesktopCursorClient::DesktopCursorClient(aura::RootWindow* window) |
: root_window_(window), |
- cursor_loader_(ui::CursorLoader::Create()), |
- current_cursor_(ui::kCursorNone), |
- cursor_visible_(true) { |
+ cursor_loader_(ui::CursorLoader::Create()) { |
} |
DesktopCursorClient::~DesktopCursorClient() { |
} |
-void DesktopCursorClient::SetCursor(gfx::NativeCursor cursor) { |
- current_cursor_ = cursor; |
- cursor_loader_->SetPlatformCursor(¤t_cursor_); |
- if (cursor_visible_) |
- root_window_->SetCursor(current_cursor_); |
-} |
+void DesktopCursorClient::SetDeviceScaleFactor(float device_scale_factor) { |
+ cursor_loader_->UnloadAll(); |
+ cursor_loader_->set_device_scale_factor(device_scale_factor); |
-void DesktopCursorClient::ShowCursor() { |
- SetCursorVisibility(true); |
+ DLOG(ERROR) << "Make sure the SetDeviceScaleFactor doesn't spin!"; |
+ SetCursorInternal(GetCurrentCursor()); |
} |
-void DesktopCursorClient::HideCursor() { |
- SetCursorVisibility(false); |
-} |
+void DesktopCursorClient::SetCursorInternal(gfx::NativeCursor cursor) { |
+ gfx::NativeCursor new_cursor = cursor; |
+ cursor_loader_->SetPlatformCursor(&new_cursor); |
+ CursorController::SetCursorInternal(new_cursor); |
-bool DesktopCursorClient::IsCursorVisible() const { |
- return cursor_visible_; |
+ if (IsCursorVisible()) |
+ root_window_->SetCursor(new_cursor); |
} |
-void DesktopCursorClient::EnableMouseEvents() { |
- // TODO(mazda): Implement this. |
- NOTIMPLEMENTED(); |
-} |
+void DesktopCursorClient::SetCursorVisibility(bool visible) { |
+ CursorController::SetCursorVisibility(visible); |
-void DesktopCursorClient::DisableMouseEvents() { |
- // TODO(mazda): Implement this. |
- NOTIMPLEMENTED(); |
-} |
+ if (visible) { |
+ SetCursorInternal(GetCurrentCursor()); |
+ } else { |
+ gfx::NativeCursor invisible_cursor(ui::kCursorNone); |
+ cursor_loader_->SetPlatformCursor(&invisible_cursor); |
+ root_window_->SetCursor(invisible_cursor); |
+ } |
-bool DesktopCursorClient::IsMouseEventsEnabled() const { |
- // TODO(mazda): Implement this. |
- NOTIMPLEMENTED(); |
- return true; |
+ root_window_->OnCursorVisibilityChanged(visible); |
} |
-void DesktopCursorClient::SetDeviceScaleFactor(float device_scale_factor) { |
- cursor_loader_->UnloadAll(); |
- cursor_loader_->set_device_scale_factor(device_scale_factor); |
-} |
+void DesktopCursorClient::SetMouseEventsEnabled(bool enabled) { |
+ CursorController::SetMouseEventsEnabled(enabled); |
-void DesktopCursorClient::LockCursor() { |
- // TODO(mazda): Implement this. |
- NOTIMPLEMENTED(); |
-} |
+ // TODO(erg): In the ash version, we set the last mouse location on Env. I'm |
+ // not sure this concept makes sense on the desktop. |
-void DesktopCursorClient::UnlockCursor() { |
- // TODO(mazda): Implement this. |
- NOTIMPLEMENTED(); |
-} |
+ SetCursorVisibility(IsCursorVisible()); |
-void DesktopCursorClient::SetCursorVisibility(bool visible) { |
- if (cursor_visible_ == visible) |
- return; |
- cursor_visible_ = visible; |
- root_window_->SetCursor(current_cursor_); |
- root_window_->OnCursorVisibilityChanged(visible); |
+ root_window_->OnMouseEventsEnableStateChanged(enabled); |
} |
} // namespace views |