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

Side by Side Diff: ash/app_list/app_list_presenter_delegate.cc

Issue 2272793005: ash: Move alignment and autohide behavior from Shelf to WmShelf (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review comments Created 4 years, 3 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
« no previous file with comments | « no previous file | ash/common/shelf/shelf.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/app_list/app_list_presenter_delegate.h" 5 #include "ash/app_list/app_list_presenter_delegate.h"
6 6
7 #include "ash/aura/wm_window_aura.h" 7 #include "ash/aura/wm_window_aura.h"
8 #include "ash/common/ash_switches.h" 8 #include "ash/common/ash_switches.h"
9 #include "ash/common/shelf/app_list_button.h" 9 #include "ash/common/shelf/app_list_button.h"
10 #include "ash/common/shelf/shelf.h" 10 #include "ash/common/shelf/shelf.h"
(...skipping 26 matching lines...) Expand all
37 namespace { 37 namespace {
38 38
39 // The minimal anchor position offset to make sure that the bubble is still on 39 // The minimal anchor position offset to make sure that the bubble is still on
40 // the screen with 8 pixels spacing on the left / right. This constant is a 40 // the screen with 8 pixels spacing on the left / right. This constant is a
41 // result of minimal bubble arrow sizes and offsets. 41 // result of minimal bubble arrow sizes and offsets.
42 const int kMinimalAnchorPositionOffset = 57; 42 const int kMinimalAnchorPositionOffset = 57;
43 43
44 // Gets arrow location based on shelf alignment. 44 // Gets arrow location based on shelf alignment.
45 views::BubbleBorder::Arrow GetBubbleArrow(aura::Window* window) { 45 views::BubbleBorder::Arrow GetBubbleArrow(aura::Window* window) {
46 DCHECK(Shell::HasInstance()); 46 DCHECK(Shell::HasInstance());
47 switch (Shelf::ForWindow(WmWindowAura::Get(window))->alignment()) { 47 WmShelf* shelf = Shelf::ForWindow(WmWindowAura::Get(window))->wm_shelf();
48 switch (shelf->alignment()) {
48 case SHELF_ALIGNMENT_BOTTOM: 49 case SHELF_ALIGNMENT_BOTTOM:
49 case SHELF_ALIGNMENT_BOTTOM_LOCKED: 50 case SHELF_ALIGNMENT_BOTTOM_LOCKED:
50 return views::BubbleBorder::BOTTOM_CENTER; 51 return views::BubbleBorder::BOTTOM_CENTER;
51 case SHELF_ALIGNMENT_LEFT: 52 case SHELF_ALIGNMENT_LEFT:
52 return views::BubbleBorder::LEFT_CENTER; 53 return views::BubbleBorder::LEFT_CENTER;
53 case SHELF_ALIGNMENT_RIGHT: 54 case SHELF_ALIGNMENT_RIGHT:
54 return views::BubbleBorder::RIGHT_CENTER; 55 return views::BubbleBorder::RIGHT_CENTER;
55 } 56 }
56 NOTREACHED(); 57 NOTREACHED();
57 return views::BubbleBorder::BOTTOM_CENTER; 58 return views::BubbleBorder::BOTTOM_CENTER;
58 } 59 }
59 60
60 // Using |button_bounds|, determine the anchor offset so that the bubble gets 61 // Using |button_bounds|, determine the anchor offset so that the bubble gets
61 // shown above the shelf (used for the alternate shelf theme). 62 // shown above the shelf (used for the alternate shelf theme).
62 gfx::Vector2d GetAnchorPositionOffsetToShelf(const gfx::Rect& button_bounds, 63 gfx::Vector2d GetAnchorPositionOffsetToShelf(const gfx::Rect& button_bounds,
63 views::Widget* widget) { 64 views::Widget* widget) {
64 DCHECK(Shell::HasInstance()); 65 DCHECK(Shell::HasInstance());
65 ShelfAlignment shelf_alignment = 66 ShelfAlignment shelf_alignment =
66 Shelf::ForWindow(WmLookup::Get()->GetWindowForWidget(widget)) 67 Shelf::ForWindow(WmLookup::Get()->GetWindowForWidget(widget))
68 ->wm_shelf()
67 ->alignment(); 69 ->alignment();
68 gfx::Point anchor(button_bounds.CenterPoint()); 70 gfx::Point anchor(button_bounds.CenterPoint());
69 switch (shelf_alignment) { 71 switch (shelf_alignment) {
70 case SHELF_ALIGNMENT_BOTTOM: 72 case SHELF_ALIGNMENT_BOTTOM:
71 case SHELF_ALIGNMENT_BOTTOM_LOCKED: 73 case SHELF_ALIGNMENT_BOTTOM_LOCKED:
72 if (base::i18n::IsRTL()) { 74 if (base::i18n::IsRTL()) {
73 int screen_width = widget->GetWorkAreaBoundsInScreen().width(); 75 int screen_width = widget->GetWorkAreaBoundsInScreen().width();
74 return gfx::Vector2d( 76 return gfx::Vector2d(
75 std::min(screen_width - kMinimalAnchorPositionOffset - anchor.x(), 77 std::min(screen_width - kMinimalAnchorPositionOffset - anchor.x(),
76 0), 78 0),
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 254
253 gfx::Vector2d AppListPresenterDelegate::GetVisibilityAnimationOffset( 255 gfx::Vector2d AppListPresenterDelegate::GetVisibilityAnimationOffset(
254 aura::Window* root_window) { 256 aura::Window* root_window) {
255 DCHECK(Shell::HasInstance()); 257 DCHECK(Shell::HasInstance());
256 258
257 // App list needs to know the new shelf layout in order to calculate its 259 // App list needs to know the new shelf layout in order to calculate its
258 // UI layout when AppListView visibility changes. 260 // UI layout when AppListView visibility changes.
259 Shelf* shelf = Shelf::ForWindow(WmWindowAura::Get(root_window)); 261 Shelf* shelf = Shelf::ForWindow(WmWindowAura::Get(root_window));
260 shelf->shelf_layout_manager()->UpdateAutoHideState(); 262 shelf->shelf_layout_manager()->UpdateAutoHideState();
261 263
262 switch (shelf->alignment()) { 264 switch (shelf->wm_shelf()->alignment()) {
263 case SHELF_ALIGNMENT_BOTTOM: 265 case SHELF_ALIGNMENT_BOTTOM:
264 case SHELF_ALIGNMENT_BOTTOM_LOCKED: 266 case SHELF_ALIGNMENT_BOTTOM_LOCKED:
265 return gfx::Vector2d(0, kAnimationOffset); 267 return gfx::Vector2d(0, kAnimationOffset);
266 case SHELF_ALIGNMENT_LEFT: 268 case SHELF_ALIGNMENT_LEFT:
267 return gfx::Vector2d(-kAnimationOffset, 0); 269 return gfx::Vector2d(-kAnimationOffset, 0);
268 case SHELF_ALIGNMENT_RIGHT: 270 case SHELF_ALIGNMENT_RIGHT:
269 return gfx::Vector2d(kAnimationOffset, 0); 271 return gfx::Vector2d(kAnimationOffset, 0);
270 } 272 }
271 NOTREACHED(); 273 NOTREACHED();
272 return gfx::Vector2d(); 274 return gfx::Vector2d();
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 } 357 }
356 358
357 //////////////////////////////////////////////////////////////////////////////// 359 ////////////////////////////////////////////////////////////////////////////////
358 // AppListPresenterDelegate, WmShelfObserver implementation: 360 // AppListPresenterDelegate, WmShelfObserver implementation:
359 361
360 void AppListPresenterDelegate::OnShelfIconPositionsChanged() { 362 void AppListPresenterDelegate::OnShelfIconPositionsChanged() {
361 UpdateBounds(); 363 UpdateBounds();
362 } 364 }
363 365
364 } // namespace ash 366 } // namespace ash
OLDNEW
« no previous file with comments | « no previous file | ash/common/shelf/shelf.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698