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 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
63 ui::Layer* GetLayer(views::Widget* widget) { | 63 ui::Layer* GetLayer(views::Widget* widget) { |
64 return widget->GetNativeView()->layer(); | 64 return widget->GetNativeView()->layer(); |
65 } | 65 } |
66 | 66 |
67 bool IsDraggingTrayEnabled() { | 67 bool IsDraggingTrayEnabled() { |
68 static bool dragging_tray_allowed = CommandLine::ForCurrentProcess()-> | 68 static bool dragging_tray_allowed = CommandLine::ForCurrentProcess()-> |
69 HasSwitch(ash::switches::kAshEnableTrayDragging); | 69 HasSwitch(ash::switches::kAshEnableTrayDragging); |
70 return dragging_tray_allowed; | 70 return dragging_tray_allowed; |
71 } | 71 } |
72 | 72 |
| 73 int GetPreferredShelfSize() { |
| 74 return ash::switches::UseAlternateShelfLayout() ? |
| 75 ShelfLayoutManager::kShelfSize : kLauncherPreferredSize; |
| 76 } |
| 77 |
73 } // namespace | 78 } // namespace |
74 | 79 |
75 // static | 80 // static |
76 const int ShelfLayoutManager::kWorkspaceAreaVisibleInset = 2; | 81 const int ShelfLayoutManager::kWorkspaceAreaVisibleInset = 2; |
77 | 82 |
78 // static | 83 // static |
79 const int ShelfLayoutManager::kWorkspaceAreaAutoHideInset = 5; | 84 const int ShelfLayoutManager::kWorkspaceAreaAutoHideInset = 5; |
80 | 85 |
81 // static | 86 // static |
82 const int ShelfLayoutManager::kAutoHideSize = 3; | 87 const int ShelfLayoutManager::kAutoHideSize = 3; |
83 | 88 |
| 89 // static |
| 90 const int ShelfLayoutManager::kShelfSize = 47; |
| 91 |
84 // ShelfLayoutManager::AutoHideEventFilter ------------------------------------- | 92 // ShelfLayoutManager::AutoHideEventFilter ------------------------------------- |
85 | 93 |
86 // Notifies ShelfLayoutManager any time the mouse moves. | 94 // Notifies ShelfLayoutManager any time the mouse moves. |
87 class ShelfLayoutManager::AutoHideEventFilter : public ui::EventHandler { | 95 class ShelfLayoutManager::AutoHideEventFilter : public ui::EventHandler { |
88 public: | 96 public: |
89 explicit AutoHideEventFilter(ShelfLayoutManager* shelf); | 97 explicit AutoHideEventFilter(ShelfLayoutManager* shelf); |
90 virtual ~AutoHideEventFilter(); | 98 virtual ~AutoHideEventFilter(); |
91 | 99 |
92 // Returns true if the last mouse event was a mouse drag. | 100 // Returns true if the last mouse event was a mouse drag. |
93 bool in_mouse_drag() const { return in_mouse_drag_; } | 101 bool in_mouse_drag() const { return in_mouse_drag_; } |
(...skipping 558 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
652 void ShelfLayoutManager::StopAnimating() { | 660 void ShelfLayoutManager::StopAnimating() { |
653 GetLayer(shelf_)->GetAnimator()->StopAnimating(); | 661 GetLayer(shelf_)->GetAnimator()->StopAnimating(); |
654 GetLayer(shelf_->status_area_widget())->GetAnimator()->StopAnimating(); | 662 GetLayer(shelf_->status_area_widget())->GetAnimator()->StopAnimating(); |
655 } | 663 } |
656 | 664 |
657 void ShelfLayoutManager::GetShelfSize(int* width, int* height) { | 665 void ShelfLayoutManager::GetShelfSize(int* width, int* height) { |
658 *width = *height = 0; | 666 *width = *height = 0; |
659 gfx::Size status_size( | 667 gfx::Size status_size( |
660 shelf_->status_area_widget()->GetWindowBoundsInScreen().size()); | 668 shelf_->status_area_widget()->GetWindowBoundsInScreen().size()); |
661 if (IsHorizontalAlignment()) | 669 if (IsHorizontalAlignment()) |
662 *height = kLauncherPreferredSize; | 670 *height = GetPreferredShelfSize(); |
663 else | 671 else |
664 *width = kLauncherPreferredSize; | 672 *width = GetPreferredShelfSize(); |
665 } | 673 } |
666 | 674 |
667 void ShelfLayoutManager::AdjustBoundsBasedOnAlignment(int inset, | 675 void ShelfLayoutManager::AdjustBoundsBasedOnAlignment(int inset, |
668 gfx::Rect* bounds) const { | 676 gfx::Rect* bounds) const { |
669 bounds->Inset(SelectValueForShelfAlignment( | 677 bounds->Inset(SelectValueForShelfAlignment( |
670 gfx::Insets(0, 0, inset, 0), | 678 gfx::Insets(0, 0, inset, 0), |
671 gfx::Insets(0, inset, 0, 0), | 679 gfx::Insets(0, inset, 0, 0), |
672 gfx::Insets(0, 0, 0, inset), | 680 gfx::Insets(0, 0, 0, inset), |
673 gfx::Insets(inset, 0, 0, 0))); | 681 gfx::Insets(inset, 0, 0, 0))); |
674 } | 682 } |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
706 target_bounds->shelf_bounds_in_root = SelectValueForShelfAlignment( | 714 target_bounds->shelf_bounds_in_root = SelectValueForShelfAlignment( |
707 gfx::Rect(available_bounds.x(), available_bounds.bottom() - shelf_height, | 715 gfx::Rect(available_bounds.x(), available_bounds.bottom() - shelf_height, |
708 available_bounds.width(), shelf_height), | 716 available_bounds.width(), shelf_height), |
709 gfx::Rect(available_bounds.x(), available_bounds.y(), | 717 gfx::Rect(available_bounds.x(), available_bounds.y(), |
710 shelf_width, available_bounds.height()), | 718 shelf_width, available_bounds.height()), |
711 gfx::Rect(available_bounds.right() - shelf_width, available_bounds.y(), | 719 gfx::Rect(available_bounds.right() - shelf_width, available_bounds.y(), |
712 shelf_width, available_bounds.height()), | 720 shelf_width, available_bounds.height()), |
713 gfx::Rect(available_bounds.x(), available_bounds.y(), | 721 gfx::Rect(available_bounds.x(), available_bounds.y(), |
714 available_bounds.width(), shelf_height)); | 722 available_bounds.width(), shelf_height)); |
715 | 723 |
716 int status_inset = std::max(0, kLauncherPreferredSize - | 724 int status_inset = std::max(0, GetPreferredShelfSize() - |
717 PrimaryAxisValue(status_size.height(), status_size.width())); | 725 PrimaryAxisValue(status_size.height(), status_size.width())); |
718 | 726 |
719 target_bounds->status_bounds_in_shelf = SelectValueForShelfAlignment( | 727 target_bounds->status_bounds_in_shelf = SelectValueForShelfAlignment( |
720 gfx::Rect(base::i18n::IsRTL() ? 0 : shelf_width - status_size.width(), | 728 gfx::Rect(base::i18n::IsRTL() ? 0 : shelf_width - status_size.width(), |
721 status_inset, status_size.width(), status_size.height()), | 729 status_inset, status_size.width(), status_size.height()), |
722 gfx::Rect(shelf_width - (status_size.width() + status_inset), | 730 gfx::Rect(shelf_width - (status_size.width() + status_inset), |
723 shelf_height - status_size.height(), status_size.width(), | 731 shelf_height - status_size.height(), status_size.width(), |
724 status_size.height()), | 732 status_size.height()), |
725 gfx::Rect(status_inset, shelf_height - status_size.height(), | 733 gfx::Rect(status_inset, shelf_height - status_size.height(), |
726 status_size.width(), status_size.height()), | 734 status_size.width(), status_size.height()), |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
773 const gfx::Rect& available_bounds(root_window_->bounds()); | 781 const gfx::Rect& available_bounds(root_window_->bounds()); |
774 int resistance_free_region = 0; | 782 int resistance_free_region = 0; |
775 | 783 |
776 if (gesture_drag_auto_hide_state_ == SHELF_AUTO_HIDE_HIDDEN && | 784 if (gesture_drag_auto_hide_state_ == SHELF_AUTO_HIDE_HIDDEN && |
777 visibility_state() == SHELF_AUTO_HIDE && | 785 visibility_state() == SHELF_AUTO_HIDE && |
778 auto_hide_state() != SHELF_AUTO_HIDE_SHOWN) { | 786 auto_hide_state() != SHELF_AUTO_HIDE_SHOWN) { |
779 // If the shelf was hidden when the drag started (and the state hasn't | 787 // If the shelf was hidden when the drag started (and the state hasn't |
780 // changed since then, e.g. because the tray-menu was shown because of the | 788 // changed since then, e.g. because the tray-menu was shown because of the |
781 // drag), then allow the drag some resistance-free region at first to make | 789 // drag), then allow the drag some resistance-free region at first to make |
782 // sure the shelf sticks with the finger until the shelf is visible. | 790 // sure the shelf sticks with the finger until the shelf is visible. |
783 resistance_free_region = kLauncherPreferredSize - kAutoHideSize; | 791 resistance_free_region = GetPreferredShelfSize() - kAutoHideSize; |
784 } | 792 } |
785 | 793 |
786 bool resist = SelectValueForShelfAlignment( | 794 bool resist = SelectValueForShelfAlignment( |
787 gesture_drag_amount_ < -resistance_free_region, | 795 gesture_drag_amount_ < -resistance_free_region, |
788 gesture_drag_amount_ > resistance_free_region, | 796 gesture_drag_amount_ > resistance_free_region, |
789 gesture_drag_amount_ < -resistance_free_region, | 797 gesture_drag_amount_ < -resistance_free_region, |
790 gesture_drag_amount_ > resistance_free_region); | 798 gesture_drag_amount_ > resistance_free_region); |
791 | 799 |
792 float translate = 0.f; | 800 float translate = 0.f; |
793 if (resist) { | 801 if (resist) { |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
977 return gfx::Insets(0, distance, 0, 0); | 985 return gfx::Insets(0, distance, 0, 0); |
978 case SHELF_ALIGNMENT_TOP: | 986 case SHELF_ALIGNMENT_TOP: |
979 return gfx::Insets(0, 0, distance, 0); | 987 return gfx::Insets(0, 0, distance, 0); |
980 } | 988 } |
981 NOTREACHED(); | 989 NOTREACHED(); |
982 return gfx::Insets(); | 990 return gfx::Insets(); |
983 } | 991 } |
984 | 992 |
985 } // namespace internal | 993 } // namespace internal |
986 } // namespace ash | 994 } // namespace ash |
OLD | NEW |