Index: ash/shelf/shelf_layout_manager.cc |
diff --git a/ash/shelf/shelf_layout_manager.cc b/ash/shelf/shelf_layout_manager.cc |
index a441ab3d1a3ff03c01888a4d925a310ab340ca7c..6d2916ad97cb092d62797551ee92d636540f3bcb 100644 |
--- a/ash/shelf/shelf_layout_manager.cc |
+++ b/ash/shelf/shelf_layout_manager.cc |
@@ -296,21 +296,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 (IsInImmersiveMode()) { |
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()); |
@@ -440,17 +434,20 @@ void ShelfLayoutManager::CompleteGestureDrag(const ui::GestureEvent& gesture) { |
CancelGestureDrag(); |
return; |
} |
- |
- 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(); |
James Cook
2013/05/22 12:04:22
Won't this line crash is shelf_ is NULL? Either y
rharrison
2013/05/22 20:20:02
Done.
|
+ gesture_drag_auto_hide_state_ = |
+ gesture_drag_auto_hide_state_ == SHELF_AUTO_HIDE_SHOWN ? |
+ SHELF_AUTO_HIDE_HIDDEN : SHELF_AUTO_HIDE_SHOWN; |
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 (!IsInImmersiveMode()) { |
+ 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; |
@@ -960,5 +957,18 @@ gfx::Insets ShelfLayoutManager::GetInsetsForAlignment(int distance) const { |
return gfx::Insets(); |
} |
+bool ShelfLayoutManager::IsInImmersiveMode() 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; |
+} |
+ |
+ |
} // namespace internal |
} // namespace ash |