Index: ui/aura/desktop/desktop_cursor_client.cc |
diff --git a/ui/aura/desktop/desktop_cursor_client.cc b/ui/aura/desktop/desktop_cursor_client.cc |
index 7077483f3657a83ed9ce0d01dd7f48c09b607fed..3086afb1920609b84b2418fdf657458d2d8d8c3d 100644 |
--- a/ui/aura/desktop/desktop_cursor_client.cc |
+++ b/ui/aura/desktop/desktop_cursor_client.cc |
@@ -11,23 +11,34 @@ namespace aura { |
DesktopCursorClient::DesktopCursorClient(aura::RootWindow* window) |
: root_window_(window), |
- cursor_loader_(ui::CursorLoader::Create()) { |
+ cursor_loader_(ui::CursorLoader::Create()), |
+ current_cursor_(ui::kCursorNone), |
+ cursor_visible_(true) { |
} |
DesktopCursorClient::~DesktopCursorClient() { |
} |
void DesktopCursorClient::SetCursor(gfx::NativeCursor cursor) { |
- cursor_loader_->SetPlatformCursor(&cursor); |
- root_window_->SetCursor(cursor); |
+ current_cursor_ = cursor; |
+ cursor_loader_->SetPlatformCursor(¤t_cursor_); |
+ if (cursor_visible_) |
+ root_window_->SetCursor(current_cursor_); |
} |
void DesktopCursorClient::ShowCursor(bool show) { |
- root_window_->ShowCursor(show); |
+ if (cursor_visible_ == show) |
+ return; |
+ cursor_visible_ = show; |
+ if (cursor_visible_) |
+ root_window_->SetCursor(current_cursor_); |
+ else |
+ root_window_->SetCursor(ui::kCursorNone); |
+ root_window_->OnCursorVisibilityChanged(cursor_visible_); |
} |
bool DesktopCursorClient::IsCursorVisible() const { |
- return root_window_->cursor_shown(); |
+ return cursor_visible_; |
} |
void DesktopCursorClient::SetDeviceScaleFactor(float device_scale_factor) { |