Index: ash/shelf/shelf_layout_manager.cc |
diff --git a/ash/shelf/shelf_layout_manager.cc b/ash/shelf/shelf_layout_manager.cc |
index 0bcbf0a752423279f3a7340eb0257939b8f205bb..cf3e9b3af311d655e13463e352ec482d084d9474 100644 |
--- a/ash/shelf/shelf_layout_manager.cc |
+++ b/ash/shelf/shelf_layout_manager.cc |
@@ -294,21 +294,15 @@ void ShelfLayoutManager::UpdateVisibilityState() { |
WorkspaceWindowState window_state(workspace_controller_->GetWindowState()); |
switch (window_state) { |
case WORKSPACE_WINDOW_STATE_FULL_SCREEN: |
- { |
- aura::Window* fullscreen_window = |
- GetRootWindowController(root_window_)->GetFullscreenWindow(); |
- if (fullscreen_window->GetProperty(kFullscreenUsesMinimalChromeKey)) { |
- DCHECK_NE(auto_hide_behavior_, SHELF_AUTO_HIDE_ALWAYS_HIDDEN); |
+ if (FullscreenWithMinimalChrome()) { |
SetState(SHELF_AUTO_HIDE); |
} else { |
SetState(SHELF_HIDDEN); |
} |
break; |
- } |
case WORKSPACE_WINDOW_STATE_MAXIMIZED: |
SetState(CalculateShelfVisibility()); |
break; |
- |
case WORKSPACE_WINDOW_STATE_WINDOW_OVERLAPS_SHELF: |
case WORKSPACE_WINDOW_STATE_DEFAULT: |
SetState(CalculateShelfVisibility()); |
@@ -438,17 +432,21 @@ void ShelfLayoutManager::CompleteGestureDrag(const ui::GestureEvent& gesture) { |
CancelGestureDrag(); |
return; |
} |
- |
+ if (shelf_) { |
+ shelf_->Deactivate(); |
+ shelf_->status_area_widget()->Deactivate(); |
+ } |
gesture_drag_auto_hide_state_ = |
gesture_drag_auto_hide_state_ == SHELF_AUTO_HIDE_SHOWN ? |
SHELF_AUTO_HIDE_HIDDEN : SHELF_AUTO_HIDE_SHOWN; |
- if (shelf_) |
- shelf_->Deactivate(); |
- shelf_->status_area_widget()->Deactivate(); |
if (gesture_drag_auto_hide_state_ == SHELF_AUTO_HIDE_HIDDEN && |
auto_hide_behavior_ != SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS) { |
gesture_drag_status_ = GESTURE_DRAG_NONE; |
- SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
+ if (!FullscreenWithMinimalChrome()) { |
+ SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
+ } else { |
+ UpdateVisibilityState(); |
+ } |
} else if (gesture_drag_auto_hide_state_ == SHELF_AUTO_HIDE_SHOWN && |
auto_hide_behavior_ != SHELF_AUTO_HIDE_BEHAVIOR_NEVER) { |
gesture_drag_status_ = GESTURE_DRAG_NONE; |
@@ -517,6 +515,18 @@ bool ShelfLayoutManager::IsHorizontalAlignment() const { |
alignment_ == SHELF_ALIGNMENT_TOP; |
} |
+bool ShelfLayoutManager::FullscreenWithMinimalChrome() const { |
+ RootWindowController* controller = GetRootWindowController(root_window_); |
+ if (!controller) |
+ return false; |
+ aura::Window* window = controller->GetFullscreenWindow(); |
+ if (!window) |
+ return false; |
+ if (!window->GetProperty(kFullscreenUsesMinimalChromeKey)) |
+ return false; |
+ return true; |
+} |
+ |
// static |
ShelfLayoutManager* ShelfLayoutManager::ForLauncher(aura::Window* window) { |
ShelfWidget* shelf = RootWindowController::ForLauncher(window)->shelf(); |