| 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 #include <cstring> | 9 #include <cstring> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 523 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 534 aura::Window* gained_active, | 534 aura::Window* gained_active, |
| 535 aura::Window* lost_active) { | 535 aura::Window* lost_active) { |
| 536 UpdateAutoHideStateNow(); | 536 UpdateAutoHideStateNow(); |
| 537 } | 537 } |
| 538 | 538 |
| 539 bool ShelfLayoutManager::IsHorizontalAlignment() const { | 539 bool ShelfLayoutManager::IsHorizontalAlignment() const { |
| 540 return GetAlignment() == SHELF_ALIGNMENT_BOTTOM || | 540 return GetAlignment() == SHELF_ALIGNMENT_BOTTOM || |
| 541 GetAlignment() == SHELF_ALIGNMENT_TOP; | 541 GetAlignment() == SHELF_ALIGNMENT_TOP; |
| 542 } | 542 } |
| 543 | 543 |
| 544 gfx::Insets ShelfLayoutManager::GetWorkAreaInsets() const { |
| 545 return work_area_insets_; |
| 546 } |
| 547 |
| 544 // static | 548 // static |
| 545 ShelfLayoutManager* ShelfLayoutManager::ForShelf(aura::Window* window) { | 549 ShelfLayoutManager* ShelfLayoutManager::ForShelf(aura::Window* window) { |
| 546 ShelfWidget* shelf = RootWindowController::ForShelf(window)->shelf(); | 550 ShelfWidget* shelf = RootWindowController::ForShelf(window)->shelf(); |
| 547 return shelf ? shelf->shelf_layout_manager() : NULL; | 551 return shelf ? shelf->shelf_layout_manager() : NULL; |
| 548 } | 552 } |
| 549 | 553 |
| 550 //////////////////////////////////////////////////////////////////////////////// | 554 //////////////////////////////////////////////////////////////////////////////// |
| 551 // ShelfLayoutManager, private: | 555 // ShelfLayoutManager, private: |
| 552 | 556 |
| 553 ShelfLayoutManager::TargetBounds::TargetBounds() | 557 ShelfLayoutManager::TargetBounds::TargetBounds() |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 697 gfx::Rect status_bounds = target_bounds.status_bounds_in_shelf; | 701 gfx::Rect status_bounds = target_bounds.status_bounds_in_shelf; |
| 698 status_bounds.set_x(status_bounds.x() + | 702 status_bounds.set_x(status_bounds.x() + |
| 699 target_bounds.shelf_bounds_in_root.x()); | 703 target_bounds.shelf_bounds_in_root.x()); |
| 700 status_bounds.set_y(status_bounds.y() + | 704 status_bounds.set_y(status_bounds.y() + |
| 701 target_bounds.shelf_bounds_in_root.y()); | 705 target_bounds.shelf_bounds_in_root.y()); |
| 702 shelf_->status_area_widget()->SetBounds( | 706 shelf_->status_area_widget()->SetBounds( |
| 703 ScreenUtil::ConvertRectToScreen( | 707 ScreenUtil::ConvertRectToScreen( |
| 704 shelf_->status_area_widget()->GetNativeView()->parent(), | 708 shelf_->status_area_widget()->GetNativeView()->parent(), |
| 705 status_bounds)); | 709 status_bounds)); |
| 706 if (!state_.is_screen_locked) { | 710 if (!state_.is_screen_locked) { |
| 707 gfx::Insets insets; | |
| 708 // If user session is blocked (login to new user session or add user to | 711 // If user session is blocked (login to new user session or add user to |
| 709 // the existing session - multi-profile) then give 100% of work area only | 712 // the existing session - multi-profile) then give 100% of work area only |
| 710 // if keyboard is not shown. | 713 // if keyboard is not shown. |
| 711 if (!state_.is_adding_user_screen || !keyboard_bounds_.IsEmpty()) { | 714 if (!state_.is_adding_user_screen || !keyboard_bounds_.IsEmpty()) { |
| 712 insets = target_bounds.work_area_insets; | 715 work_area_insets_ = target_bounds.work_area_insets; |
| 716 } else { |
| 717 work_area_insets_ = gfx::Insets(); |
| 713 } | 718 } |
| 714 Shell::GetInstance()->SetDisplayWorkAreaInsets(root_window_, insets); | 719 Shell::GetInstance()->UpdateDisplayWorkAreaInsets(root_window_); |
| 715 } | 720 } |
| 716 } | 721 } |
| 717 | 722 |
| 718 // Setting visibility during an animation causes the visibility property to | 723 // Setting visibility during an animation causes the visibility property to |
| 719 // animate. Set the visibility property without an animation. | 724 // animate. Set the visibility property without an animation. |
| 720 if (target_bounds.status_opacity) | 725 if (target_bounds.status_opacity) |
| 721 shelf_->status_area_widget()->Show(); | 726 shelf_->status_area_widget()->Show(); |
| 722 } | 727 } |
| 723 | 728 |
| 724 void ShelfLayoutManager::StopAnimating() { | 729 void ShelfLayoutManager::StopAnimating() { |
| (...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1124 OnWindowResized(); | 1129 OnWindowResized(); |
| 1125 | 1130 |
| 1126 SessionStateDelegate* session_state_delegate = | 1131 SessionStateDelegate* session_state_delegate = |
| 1127 Shell::GetInstance()->session_state_delegate(); | 1132 Shell::GetInstance()->session_state_delegate(); |
| 1128 | 1133 |
| 1129 // On login screen if keyboard has been just hidden, update bounds just once | 1134 // On login screen if keyboard has been just hidden, update bounds just once |
| 1130 // but ignore target_bounds.work_area_insets since shelf overlaps with login | 1135 // but ignore target_bounds.work_area_insets since shelf overlaps with login |
| 1131 // window. | 1136 // window. |
| 1132 if (session_state_delegate->IsUserSessionBlocked() && | 1137 if (session_state_delegate->IsUserSessionBlocked() && |
| 1133 keyboard_is_about_to_hide) { | 1138 keyboard_is_about_to_hide) { |
| 1134 Shell::GetInstance()->SetDisplayWorkAreaInsets(root_window_, gfx::Insets()); | 1139 work_area_insets_ = gfx::Insets(); |
| 1140 Shell::GetInstance()->UpdateDisplayWorkAreaInsets(root_window_); |
| 1135 } | 1141 } |
| 1136 } | 1142 } |
| 1137 | 1143 |
| 1138 void ShelfLayoutManager::OnDockBoundsChanging( | 1144 void ShelfLayoutManager::OnDockBoundsChanging( |
| 1139 const gfx::Rect& dock_bounds, | 1145 const gfx::Rect& dock_bounds, |
| 1140 DockedWindowLayoutManagerObserver::Reason reason) { | 1146 DockedWindowLayoutManagerObserver::Reason reason) { |
| 1141 // Skip shelf layout in case docked notification originates from this class. | 1147 // Skip shelf layout in case docked notification originates from this class. |
| 1142 if (reason == DISPLAY_INSETS_CHANGED) | 1148 if (reason == DISPLAY_INSETS_CHANGED) |
| 1143 return; | 1149 return; |
| 1144 if (dock_bounds_ != dock_bounds) { | 1150 if (dock_bounds_ != dock_bounds) { |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1193 return false; | 1199 return false; |
| 1194 } | 1200 } |
| 1195 if (session_state_delegate->IsUserSessionBlocked() || | 1201 if (session_state_delegate->IsUserSessionBlocked() || |
| 1196 state_.is_adding_user_screen) { | 1202 state_.is_adding_user_screen) { |
| 1197 return true; | 1203 return true; |
| 1198 } | 1204 } |
| 1199 return false; | 1205 return false; |
| 1200 } | 1206 } |
| 1201 | 1207 |
| 1202 } // namespace ash | 1208 } // namespace ash |
| OLD | NEW |