Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(50)

Side by Side Diff: ash/wm/shelf_layout_manager.cc

Issue 11017079: Remove Shell::shelf()|status_area_widget()|launcher() (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/wm/shelf_layout_manager.h" 5 #include "ash/wm/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"
11 #include "ash/launcher/launcher.h" 11 #include "ash/launcher/launcher.h"
12 #include "ash/root_window_controller.h"
12 #include "ash/screen_ash.h" 13 #include "ash/screen_ash.h"
13 #include "ash/shell.h" 14 #include "ash/shell.h"
14 #include "ash/shell_delegate.h" 15 #include "ash/shell_delegate.h"
15 #include "ash/shell_window_ids.h" 16 #include "ash/shell_window_ids.h"
16 #include "ash/system/status_area_widget.h" 17 #include "ash/system/status_area_widget.h"
17 #include "ash/wm/workspace_controller.h" 18 #include "ash/wm/workspace_controller.h"
18 #include "ash/wm/workspace/workspace_animations.h" 19 #include "ash/wm/workspace/workspace_animations.h"
19 #include "base/auto_reset.h" 20 #include "base/auto_reset.h"
20 #include "base/command_line.h" 21 #include "base/command_line.h"
21 #include "base/i18n/rtl.h" 22 #include "base/i18n/rtl.h"
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 LayoutShelf(); 224 LayoutShelf();
224 } 225 }
225 226
226 bool ShelfLayoutManager::SetAlignment(ShelfAlignment alignment) { 227 bool ShelfLayoutManager::SetAlignment(ShelfAlignment alignment) {
227 if (alignment_ == alignment) 228 if (alignment_ == alignment)
228 return false; 229 return false;
229 230
230 alignment_ = alignment; 231 alignment_ = alignment;
231 if (launcher_) 232 if (launcher_)
232 launcher_->SetAlignment(alignment); 233 launcher_->SetAlignment(alignment);
233 StatusAreaWidget* status_area_widget = 234 StatusAreaWidget* status_area_widget =
sky 2012/10/17 16:25:20 Change this class to take the statusareawidget as
oshima 2012/10/17 17:49:43 Done.
234 Shell::GetInstance()->status_area_widget(); 235 RootWindowController::ForLauncher(root_window_)->status_area_widget();
235 if (status_area_widget) 236 if (status_area_widget)
236 Shell::GetInstance()->status_area_widget()->SetShelfAlignment(alignment); 237 status_area_widget->SetShelfAlignment(alignment);
237 LayoutShelf(); 238 LayoutShelf();
238 return true; 239 return true;
239 } 240 }
240 241
241 gfx::Rect ShelfLayoutManager::GetIdealBounds() { 242 gfx::Rect ShelfLayoutManager::GetIdealBounds() {
242 // TODO(oshima): this is wrong. Figure out what display shelf is on 243 // TODO(oshima): this is wrong. Figure out what display shelf is on
243 // and everything should be based on it. 244 // and everything should be based on it.
244 gfx::Rect bounds(ScreenAsh::GetDisplayBoundsInParent( 245 gfx::Rect bounds(ScreenAsh::GetDisplayBoundsInParent(
245 status_->GetNativeView())); 246 status_->GetNativeView()));
246 int width = 0, height = 0; 247 int width = 0, height = 0;
(...skipping 563 matching lines...) Expand 10 before | Expand all | Expand 10 after
810 } 811 }
811 812
812 void ShelfLayoutManager::UpdateShelfBackground( 813 void ShelfLayoutManager::UpdateShelfBackground(
813 BackgroundAnimator::ChangeType type) { 814 BackgroundAnimator::ChangeType type) {
814 bool launcher_paints = GetLauncherPaintsBackground(); 815 bool launcher_paints = GetLauncherPaintsBackground();
815 if (launcher_) 816 if (launcher_)
816 launcher_->SetPaintsBackground(launcher_paints, type); 817 launcher_->SetPaintsBackground(launcher_paints, type);
817 // The status area normally draws a background, but we don't want it to draw a 818 // The status area normally draws a background, but we don't want it to draw a
818 // background when the launcher does or when we're at login/lock screen. 819 // background when the launcher does or when we're at login/lock screen.
819 StatusAreaWidget* status_area_widget = 820 StatusAreaWidget* status_area_widget =
820 Shell::GetInstance()->status_area_widget(); 821 RootWindowController::ForLauncher(root_window_)->status_area_widget();
821 if (status_area_widget) { 822 if (status_area_widget) {
822 ShellDelegate* delegate = Shell::GetInstance()->delegate(); 823 ShellDelegate* delegate = Shell::GetInstance()->delegate();
823 bool delegate_allows_tray_bg = !delegate || 824 bool delegate_allows_tray_bg = !delegate ||
824 (delegate->IsUserLoggedIn() && !delegate->IsScreenLocked()); 825 (delegate->IsUserLoggedIn() && !delegate->IsScreenLocked());
825 bool status_area_paints = !launcher_paints && delegate_allows_tray_bg; 826 bool status_area_paints = !launcher_paints && delegate_allows_tray_bg;
826 status_area_widget->SetPaintsBackground(status_area_paints, type); 827 status_area_widget->SetPaintsBackground(status_area_paints, type);
827 } 828 }
828 } 829 }
829 830
830 bool ShelfLayoutManager::GetLauncherPaintsBackground() const { 831 bool ShelfLayoutManager::GetLauncherPaintsBackground() const {
(...skipping 11 matching lines...) Expand all
842 if (visibility_state != AUTO_HIDE || !launcher_widget()) 843 if (visibility_state != AUTO_HIDE || !launcher_widget())
843 return AUTO_HIDE_HIDDEN; 844 return AUTO_HIDE_HIDDEN;
844 845
845 if (gesture_drag_status_ == GESTURE_DRAG_COMPLETE_IN_PROGRESS) 846 if (gesture_drag_status_ == GESTURE_DRAG_COMPLETE_IN_PROGRESS)
846 return gesture_drag_auto_hide_state_; 847 return gesture_drag_auto_hide_state_;
847 848
848 Shell* shell = Shell::GetInstance(); 849 Shell* shell = Shell::GetInstance();
849 if (shell->GetAppListTargetVisibility()) 850 if (shell->GetAppListTargetVisibility())
850 return AUTO_HIDE_SHOWN; 851 return AUTO_HIDE_SHOWN;
851 852
852 if (shell->status_area_widget() && 853 StatusAreaWidget* status_area_widget =
853 shell->status_area_widget()->ShouldShowLauncher()) 854 RootWindowController::ForLauncher(root_window_)->status_area_widget();
855
856 if (status_area_widget && status_area_widget->ShouldShowLauncher())
854 return AUTO_HIDE_SHOWN; 857 return AUTO_HIDE_SHOWN;
855 858
856 if (launcher_ && launcher_->IsShowingMenu()) 859 if (launcher_ && launcher_->IsShowingMenu())
857 return AUTO_HIDE_SHOWN; 860 return AUTO_HIDE_SHOWN;
858 861
859 if (launcher_ && launcher_->IsShowingOverflowBubble()) 862 if (launcher_ && launcher_->IsShowingOverflowBubble())
860 return AUTO_HIDE_SHOWN; 863 return AUTO_HIDE_SHOWN;
861 864
862 if (launcher_widget()->IsActive() || status_->IsActive()) 865 if (launcher_widget()->IsActive() || status_->IsActive())
863 return AUTO_HIDE_SHOWN; 866 return AUTO_HIDE_SHOWN;
864 867
865 // Don't show if the user is dragging the mouse. 868 // Don't show if the user is dragging the mouse.
866 if (event_filter_.get() && event_filter_->in_mouse_drag()) 869 if (event_filter_.get() && event_filter_->in_mouse_drag())
867 return AUTO_HIDE_HIDDEN; 870 return AUTO_HIDE_HIDDEN;
868 871
869 gfx::Rect shelf_region = launcher_widget()->GetWindowBoundsInScreen(); 872 gfx::Rect shelf_region = launcher_widget()->GetWindowBoundsInScreen();
870 if (shell->status_area_widget() && 873 if (status_area_widget &&
871 shell->status_area_widget()->IsMessageBubbleShown() && 874 status_area_widget->IsMessageBubbleShown() &&
872 IsVisible()) { 875 IsVisible()) {
873 // Increase the the hit test area to prevent the shelf from disappearing 876 // Increase the the hit test area to prevent the shelf from disappearing
874 // when the mouse is over the bubble gap. 877 // when the mouse is over the bubble gap.
875 shelf_region.Inset(alignment_ == SHELF_ALIGNMENT_RIGHT ? 878 shelf_region.Inset(alignment_ == SHELF_ALIGNMENT_RIGHT ?
876 -kNotificationBubbleGapHeight : 0, 879 -kNotificationBubbleGapHeight : 0,
877 alignment_ == SHELF_ALIGNMENT_BOTTOM ? 880 alignment_ == SHELF_ALIGNMENT_BOTTOM ?
878 -kNotificationBubbleGapHeight : 0, 881 -kNotificationBubbleGapHeight : 0,
879 alignment_ == SHELF_ALIGNMENT_LEFT ? 882 alignment_ == SHELF_ALIGNMENT_LEFT ?
880 -kNotificationBubbleGapHeight : 0, 883 -kNotificationBubbleGapHeight : 0,
881 0); 884 0);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
921 int ShelfLayoutManager::GetWorkAreaSize(const State& state, int size) const { 924 int ShelfLayoutManager::GetWorkAreaSize(const State& state, int size) const {
922 if (state.visibility_state == VISIBLE) 925 if (state.visibility_state == VISIBLE)
923 return size; 926 return size;
924 if (state.visibility_state == AUTO_HIDE) 927 if (state.visibility_state == AUTO_HIDE)
925 return kAutoHideSize; 928 return kAutoHideSize;
926 return 0; 929 return 0;
927 } 930 }
928 931
929 } // namespace internal 932 } // namespace internal
930 } // namespace ash 933 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698