| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ash/shelf/shelf_layout_manager.h" | 5 #include "ash/shelf/shelf_layout_manager.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <cmath> | 8 #include <cmath> |
| 9 | 9 |
| 10 #include "ash/ash_switches.h" | 10 #include "ash/ash_switches.h" |
| (...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 287 if (Shell::GetInstance()->session_state_delegate()->IsScreenLocked()) { | 287 if (Shell::GetInstance()->session_state_delegate()->IsScreenLocked()) { |
| 288 SetState(SHELF_VISIBLE); | 288 SetState(SHELF_VISIBLE); |
| 289 } else if (gesture_drag_status_ == GESTURE_DRAG_COMPLETE_IN_PROGRESS) { | 289 } else if (gesture_drag_status_ == GESTURE_DRAG_COMPLETE_IN_PROGRESS) { |
| 290 // TODO(zelidrag): Verify shelf drag animation still shows on the device | 290 // TODO(zelidrag): Verify shelf drag animation still shows on the device |
| 291 // when we are in SHELF_AUTO_HIDE_ALWAYS_HIDDEN. | 291 // when we are in SHELF_AUTO_HIDE_ALWAYS_HIDDEN. |
| 292 SetState(CalculateShelfVisibilityWhileDragging()); | 292 SetState(CalculateShelfVisibilityWhileDragging()); |
| 293 } else { | 293 } else { |
| 294 WorkspaceWindowState window_state(workspace_controller_->GetWindowState()); | 294 WorkspaceWindowState window_state(workspace_controller_->GetWindowState()); |
| 295 switch (window_state) { | 295 switch (window_state) { |
| 296 case WORKSPACE_WINDOW_STATE_FULL_SCREEN: | 296 case WORKSPACE_WINDOW_STATE_FULL_SCREEN: |
| 297 { | 297 if (FullscreenWithMinimalChrome()) { |
| 298 aura::Window* fullscreen_window = | |
| 299 GetRootWindowController(root_window_)->GetFullscreenWindow(); | |
| 300 if (fullscreen_window->GetProperty(kFullscreenUsesMinimalChromeKey)) { | |
| 301 DCHECK_NE(auto_hide_behavior_, SHELF_AUTO_HIDE_ALWAYS_HIDDEN); | |
| 302 SetState(SHELF_AUTO_HIDE); | 298 SetState(SHELF_AUTO_HIDE); |
| 303 } else { | 299 } else { |
| 304 SetState(SHELF_HIDDEN); | 300 SetState(SHELF_HIDDEN); |
| 305 } | 301 } |
| 306 break; | 302 break; |
| 307 } | |
| 308 case WORKSPACE_WINDOW_STATE_MAXIMIZED: | 303 case WORKSPACE_WINDOW_STATE_MAXIMIZED: |
| 309 SetState(CalculateShelfVisibility()); | 304 SetState(CalculateShelfVisibility()); |
| 310 break; | 305 break; |
| 311 | |
| 312 case WORKSPACE_WINDOW_STATE_WINDOW_OVERLAPS_SHELF: | 306 case WORKSPACE_WINDOW_STATE_WINDOW_OVERLAPS_SHELF: |
| 313 case WORKSPACE_WINDOW_STATE_DEFAULT: | 307 case WORKSPACE_WINDOW_STATE_DEFAULT: |
| 314 SetState(CalculateShelfVisibility()); | 308 SetState(CalculateShelfVisibility()); |
| 315 SetWindowOverlapsShelf(window_state == | 309 SetWindowOverlapsShelf(window_state == |
| 316 WORKSPACE_WINDOW_STATE_WINDOW_OVERLAPS_SHELF); | 310 WORKSPACE_WINDOW_STATE_WINDOW_OVERLAPS_SHELF); |
| 317 break; | 311 break; |
| 318 } | 312 } |
| 319 } | 313 } |
| 320 } | 314 } |
| 321 | 315 |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 431 gesture.details().velocity_y() > 0); | 425 gesture.details().velocity_y() > 0); |
| 432 } | 426 } |
| 433 } else { | 427 } else { |
| 434 NOTREACHED(); | 428 NOTREACHED(); |
| 435 } | 429 } |
| 436 | 430 |
| 437 if (!should_change) { | 431 if (!should_change) { |
| 438 CancelGestureDrag(); | 432 CancelGestureDrag(); |
| 439 return; | 433 return; |
| 440 } | 434 } |
| 441 | 435 if (shelf_) { |
| 436 shelf_->Deactivate(); |
| 437 shelf_->status_area_widget()->Deactivate(); |
| 438 } |
| 442 gesture_drag_auto_hide_state_ = | 439 gesture_drag_auto_hide_state_ = |
| 443 gesture_drag_auto_hide_state_ == SHELF_AUTO_HIDE_SHOWN ? | 440 gesture_drag_auto_hide_state_ == SHELF_AUTO_HIDE_SHOWN ? |
| 444 SHELF_AUTO_HIDE_HIDDEN : SHELF_AUTO_HIDE_SHOWN; | 441 SHELF_AUTO_HIDE_HIDDEN : SHELF_AUTO_HIDE_SHOWN; |
| 445 if (shelf_) | |
| 446 shelf_->Deactivate(); | |
| 447 shelf_->status_area_widget()->Deactivate(); | |
| 448 if (gesture_drag_auto_hide_state_ == SHELF_AUTO_HIDE_HIDDEN && | 442 if (gesture_drag_auto_hide_state_ == SHELF_AUTO_HIDE_HIDDEN && |
| 449 auto_hide_behavior_ != SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS) { | 443 auto_hide_behavior_ != SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS) { |
| 450 gesture_drag_status_ = GESTURE_DRAG_NONE; | 444 gesture_drag_status_ = GESTURE_DRAG_NONE; |
| 451 SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); | 445 if (!FullscreenWithMinimalChrome()) { |
| 446 SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
| 447 } else { |
| 448 UpdateVisibilityState(); |
| 449 } |
| 452 } else if (gesture_drag_auto_hide_state_ == SHELF_AUTO_HIDE_SHOWN && | 450 } else if (gesture_drag_auto_hide_state_ == SHELF_AUTO_HIDE_SHOWN && |
| 453 auto_hide_behavior_ != SHELF_AUTO_HIDE_BEHAVIOR_NEVER) { | 451 auto_hide_behavior_ != SHELF_AUTO_HIDE_BEHAVIOR_NEVER) { |
| 454 gesture_drag_status_ = GESTURE_DRAG_NONE; | 452 gesture_drag_status_ = GESTURE_DRAG_NONE; |
| 455 SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); | 453 SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); |
| 456 } else { | 454 } else { |
| 457 gesture_drag_status_ = GESTURE_DRAG_COMPLETE_IN_PROGRESS; | 455 gesture_drag_status_ = GESTURE_DRAG_COMPLETE_IN_PROGRESS; |
| 458 UpdateVisibilityState(); | 456 UpdateVisibilityState(); |
| 459 gesture_drag_status_ = GESTURE_DRAG_NONE; | 457 gesture_drag_status_ = GESTURE_DRAG_NONE; |
| 460 } | 458 } |
| 461 LayoutShelf(); | 459 LayoutShelf(); |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 510 void ShelfLayoutManager::OnWindowActivated(aura::Window* gained_active, | 508 void ShelfLayoutManager::OnWindowActivated(aura::Window* gained_active, |
| 511 aura::Window* lost_active) { | 509 aura::Window* lost_active) { |
| 512 UpdateAutoHideStateNow(); | 510 UpdateAutoHideStateNow(); |
| 513 } | 511 } |
| 514 | 512 |
| 515 bool ShelfLayoutManager::IsHorizontalAlignment() const { | 513 bool ShelfLayoutManager::IsHorizontalAlignment() const { |
| 516 return alignment_ == SHELF_ALIGNMENT_BOTTOM || | 514 return alignment_ == SHELF_ALIGNMENT_BOTTOM || |
| 517 alignment_ == SHELF_ALIGNMENT_TOP; | 515 alignment_ == SHELF_ALIGNMENT_TOP; |
| 518 } | 516 } |
| 519 | 517 |
| 518 bool ShelfLayoutManager::FullscreenWithMinimalChrome() const { |
| 519 RootWindowController* controller = GetRootWindowController(root_window_); |
| 520 if (!controller) |
| 521 return false; |
| 522 aura::Window* window = controller->GetFullscreenWindow(); |
| 523 if (!window) |
| 524 return false; |
| 525 if (!window->GetProperty(kFullscreenUsesMinimalChromeKey)) |
| 526 return false; |
| 527 return true; |
| 528 } |
| 529 |
| 520 // static | 530 // static |
| 521 ShelfLayoutManager* ShelfLayoutManager::ForLauncher(aura::Window* window) { | 531 ShelfLayoutManager* ShelfLayoutManager::ForLauncher(aura::Window* window) { |
| 522 ShelfWidget* shelf = RootWindowController::ForLauncher(window)->shelf(); | 532 ShelfWidget* shelf = RootWindowController::ForLauncher(window)->shelf(); |
| 523 return shelf ? shelf->shelf_layout_manager() : NULL; | 533 return shelf ? shelf->shelf_layout_manager() : NULL; |
| 524 } | 534 } |
| 525 | 535 |
| 526 //////////////////////////////////////////////////////////////////////////////// | 536 //////////////////////////////////////////////////////////////////////////////// |
| 527 // ShelfLayoutManager, private: | 537 // ShelfLayoutManager, private: |
| 528 | 538 |
| 529 ShelfLayoutManager::TargetBounds::TargetBounds() : opacity(0.0f) {} | 539 ShelfLayoutManager::TargetBounds::TargetBounds() : opacity(0.0f) {} |
| (...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 959 return gfx::Insets(0, distance, 0, 0); | 969 return gfx::Insets(0, distance, 0, 0); |
| 960 case SHELF_ALIGNMENT_TOP: | 970 case SHELF_ALIGNMENT_TOP: |
| 961 return gfx::Insets(0, 0, distance, 0); | 971 return gfx::Insets(0, 0, distance, 0); |
| 962 } | 972 } |
| 963 NOTREACHED(); | 973 NOTREACHED(); |
| 964 return gfx::Insets(); | 974 return gfx::Insets(); |
| 965 } | 975 } |
| 966 | 976 |
| 967 } // namespace internal | 977 } // namespace internal |
| 968 } // namespace ash | 978 } // namespace ash |
| OLD | NEW |