Commit 3f488080 authored by hshi's avatar hshi Committed by Commit bot

ash::CursorWindowController: handle ui::kCursorNone

Setting cursor type to ui::kCursorNone is treated the same as setting
visibility to false.

However note that it is necessary to track the last requested cursor
visibility separately.

BUG=chrome-os-partner:30313
TEST=verify that large cursor disappears in Youtube full-screen mode

Review URL: https://codereview.chromium.org/980453002

Cr-Commit-Position: refs/heads/master@{#319018}
parent d87b7836
...@@ -93,6 +93,7 @@ CursorWindowController::CursorWindowController() ...@@ -93,6 +93,7 @@ CursorWindowController::CursorWindowController()
: is_cursor_compositing_enabled_(false), : is_cursor_compositing_enabled_(false),
container_(NULL), container_(NULL),
cursor_type_(ui::kCursorNone), cursor_type_(ui::kCursorNone),
visible_(true),
cursor_set_(ui::CURSOR_SET_NORMAL), cursor_set_(ui::CURSOR_SET_NORMAL),
cursor_rotation_(gfx::Display::ROTATE_0), cursor_rotation_(gfx::Display::ROTATE_0),
delegate_(new CursorWindowDelegate()) { delegate_(new CursorWindowDelegate()) {
...@@ -169,6 +170,7 @@ void CursorWindowController::SetCursor(gfx::NativeCursor cursor) { ...@@ -169,6 +170,7 @@ void CursorWindowController::SetCursor(gfx::NativeCursor cursor) {
cursor_type_ = cursor.native_type(); cursor_type_ = cursor.native_type();
cursor_rotation_ = display_.rotation(); cursor_rotation_ = display_.rotation();
UpdateCursorImage(); UpdateCursorImage();
UpdateCursorVisibility();
} }
void CursorWindowController::SetCursorSet(ui::CursorSetType cursor_set) { void CursorWindowController::SetCursorSet(ui::CursorSetType cursor_set) {
...@@ -179,10 +181,8 @@ void CursorWindowController::SetCursorSet(ui::CursorSetType cursor_set) { ...@@ -179,10 +181,8 @@ void CursorWindowController::SetCursorSet(ui::CursorSetType cursor_set) {
void CursorWindowController::SetVisibility(bool visible) { void CursorWindowController::SetVisibility(bool visible) {
if (!cursor_window_) if (!cursor_window_)
return; return;
if (visible) visible_ = visible;
cursor_window_->Show(); UpdateCursorVisibility();
else
cursor_window_->Hide();
} }
void CursorWindowController::SetContainer(aura::Window* container) { void CursorWindowController::SetContainer(aura::Window* container) {
...@@ -204,7 +204,7 @@ void CursorWindowController::SetContainer(aura::Window* container) { ...@@ -204,7 +204,7 @@ void CursorWindowController::SetContainer(aura::Window* container) {
UpdateCursorImage(); UpdateCursorImage();
container->AddChild(cursor_window_.get()); container->AddChild(cursor_window_.get());
cursor_window_->Show(); UpdateCursorVisibility();
SetBoundsInScreen(container->bounds()); SetBoundsInScreen(container->bounds());
} }
...@@ -265,4 +265,14 @@ void CursorWindowController::UpdateCursorImage() { ...@@ -265,4 +265,14 @@ void CursorWindowController::UpdateCursorImage() {
} }
} }
void CursorWindowController::UpdateCursorVisibility() {
if (!cursor_window_)
return;
bool visible = (visible_ && cursor_type_ != ui::kCursorNone);
if (visible)
cursor_window_->Show();
else
cursor_window_->Hide();
}
} // namespace ash } // namespace ash
...@@ -60,6 +60,9 @@ class ASH_EXPORT CursorWindowController { ...@@ -60,6 +60,9 @@ class ASH_EXPORT CursorWindowController {
// Updates cursor image based on current cursor state. // Updates cursor image based on current cursor state.
void UpdateCursorImage(); void UpdateCursorImage();
// Hides/shows cursor window based on current cursor state.
void UpdateCursorVisibility();
bool is_cursor_compositing_enabled_; bool is_cursor_compositing_enabled_;
aura::Window* container_; aura::Window* container_;
...@@ -69,6 +72,9 @@ class ASH_EXPORT CursorWindowController { ...@@ -69,6 +72,9 @@ class ASH_EXPORT CursorWindowController {
// The native_type of the cursor, see definitions in cursor.h // The native_type of the cursor, see definitions in cursor.h
int cursor_type_; int cursor_type_;
// The last requested cursor visibility.
bool visible_;
ui::CursorSetType cursor_set_; ui::CursorSetType cursor_set_;
gfx::Display::Rotation cursor_rotation_; gfx::Display::Rotation cursor_rotation_;
gfx::Point hot_point_; gfx::Point hot_point_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment