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

Side by Side Diff: ash/shelf/shelf_widget.cc

Issue 2095193002: clang-format all of //ash (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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 | « ash/shelf/shelf_view_unittest.cc ('k') | ash/shelf/shelf_widget_unittest.cc » ('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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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_widget.h" 5 #include "ash/shelf/shelf_widget.h"
6 6
7 #include "ash/aura/wm_shelf_aura.h" 7 #include "ash/aura/wm_shelf_aura.h"
8 #include "ash/aura/wm_window_aura.h" 8 #include "ash/aura/wm_window_aura.h"
9 #include "ash/common/ash_switches.h" 9 #include "ash/common/ash_switches.h"
10 #include "ash/common/focus_cycler.h" 10 #include "ash/common/focus_cycler.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 48
49 namespace ash { 49 namespace ash {
50 50
51 namespace { 51 namespace {
52 // Size of black border at bottom (or side) of shelf. 52 // Size of black border at bottom (or side) of shelf.
53 const int kNumBlackPixels = 3; 53 const int kNumBlackPixels = 3;
54 // Alpha to paint dimming image with. 54 // Alpha to paint dimming image with.
55 const int kDimAlpha = 128; 55 const int kDimAlpha = 128;
56 56
57 // The time to dim and un-dim. 57 // The time to dim and un-dim.
58 const int kTimeToDimMs = 3000; // Slow in dimming. 58 const int kTimeToDimMs = 3000; // Slow in dimming.
59 const int kTimeToUnDimMs = 200; // Fast in activating. 59 const int kTimeToUnDimMs = 200; // Fast in activating.
60 60
61 // Class used to slightly dim shelf items when maximized and visible. 61 // Class used to slightly dim shelf items when maximized and visible.
62 class DimmerView : public views::View, 62 class DimmerView : public views::View,
63 public views::WidgetDelegate, 63 public views::WidgetDelegate,
64 BackgroundAnimatorDelegate { 64 BackgroundAnimatorDelegate {
65 public: 65 public:
66 // If |disable_dimming_animations_for_test| is set, all alpha animations will 66 // If |disable_dimming_animations_for_test| is set, all alpha animations will
67 // be performed instantly. 67 // be performed instantly.
68 DimmerView(ShelfWidget* shelf_widget, 68 DimmerView(ShelfWidget* shelf_widget,
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 force_hovered_(false), 147 force_hovered_(false),
148 disable_dimming_animations_for_test_(disable_dimming_animations_for_test), 148 disable_dimming_animations_for_test_(disable_dimming_animations_for_test),
149 background_animator_(this, 0, kDimAlpha) { 149 background_animator_(this, 0, kDimAlpha) {
150 event_filter_.reset(new DimmerEventFilter(this)); 150 event_filter_.reset(new DimmerEventFilter(this));
151 // Make sure it is undimmed at the beginning and then fire off the dimming 151 // Make sure it is undimmed at the beginning and then fire off the dimming
152 // animation. 152 // animation.
153 background_animator_.SetPaintsBackground(false, BACKGROUND_CHANGE_IMMEDIATE); 153 background_animator_.SetPaintsBackground(false, BACKGROUND_CHANGE_IMMEDIATE);
154 SetHovered(false); 154 SetHovered(false);
155 } 155 }
156 156
157 DimmerView::~DimmerView() { 157 DimmerView::~DimmerView() {}
158 }
159 158
160 void DimmerView::SetHovered(bool hovered) { 159 void DimmerView::SetHovered(bool hovered) {
161 // Remember the hovered state so that we can correct the state once a 160 // Remember the hovered state so that we can correct the state once a
162 // possible force state has disappeared. 161 // possible force state has disappeared.
163 is_hovered_ = hovered; 162 is_hovered_ = hovered;
164 // Undimm also if we were forced to by e.g. an open menu. 163 // Undimm also if we were forced to by e.g. an open menu.
165 hovered |= force_hovered_; 164 hovered |= force_hovered_;
166 background_animator_.SetDuration(hovered ? kTimeToUnDimMs : kTimeToDimMs); 165 background_animator_.SetDuration(hovered ? kTimeToUnDimMs : kTimeToDimMs);
167 background_animator_.SetPaintsBackground(!hovered, 166 background_animator_.SetPaintsBackground(!hovered,
168 disable_dimming_animations_for_test_ 167 disable_dimming_animations_for_test_
(...skipping 21 matching lines...) Expand all
190 ? SkBitmapOperations::ROTATION_90_CW 189 ? SkBitmapOperations::ROTATION_90_CW
191 : SkBitmapOperations::ROTATION_270_CW); 190 : SkBitmapOperations::ROTATION_270_CW);
192 } 191 }
193 paint.setAlpha(alpha_); 192 paint.setAlpha(alpha_);
194 canvas->DrawImageInt(shelf_background, 0, 0, shelf_background.width(), 193 canvas->DrawImageInt(shelf_background, 0, 0, shelf_background.width(),
195 shelf_background.height(), 0, 0, width(), height(), 194 shelf_background.height(), 0, 0, width(), height(),
196 false, paint); 195 false, paint);
197 } 196 }
198 197
199 DimmerView::DimmerEventFilter::DimmerEventFilter(DimmerView* owner) 198 DimmerView::DimmerEventFilter::DimmerEventFilter(DimmerView* owner)
200 : owner_(owner), 199 : owner_(owner), mouse_inside_(false), touch_inside_(false) {
201 mouse_inside_(false),
202 touch_inside_(false) {
203 Shell::GetInstance()->AddPreTargetHandler(this); 200 Shell::GetInstance()->AddPreTargetHandler(this);
204 } 201 }
205 202
206 DimmerView::DimmerEventFilter::~DimmerEventFilter() { 203 DimmerView::DimmerEventFilter::~DimmerEventFilter() {
207 Shell::GetInstance()->RemovePreTargetHandler(this); 204 Shell::GetInstance()->RemovePreTargetHandler(this);
208 } 205 }
209 206
210 void DimmerView::DimmerEventFilter::OnMouseEvent(ui::MouseEvent* event) { 207 void DimmerView::DimmerEventFilter::OnMouseEvent(ui::MouseEvent* event) {
211 if (event->type() != ui::ET_MOUSE_MOVED && 208 if (event->type() != ui::ET_MOUSE_MOVED &&
212 event->type() != ui::ET_MOUSE_DRAGGED) 209 event->type() != ui::ET_MOUSE_DRAGGED)
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
475 if (horizontal && dock_bounds.width() > 0) { 472 if (horizontal && dock_bounds.width() > 0) {
476 // The part of the shelf background that is in the corner below the docked 473 // The part of the shelf background that is in the corner below the docked
477 // windows close to the work area is an arched gradient that blends 474 // windows close to the work area is an arched gradient that blends
478 // vertically oriented docked background and horizontal shelf. 475 // vertically oriented docked background and horizontal shelf.
479 gfx::ImageSkia shelf_corner = 476 gfx::ImageSkia shelf_corner =
480 *rb->GetImageSkiaNamed(IDR_ASH_SHELF_CORNER); 477 *rb->GetImageSkiaNamed(IDR_ASH_SHELF_CORNER);
481 if (dock_bounds.x() == 0) { 478 if (dock_bounds.x() == 0) {
482 shelf_corner = gfx::ImageSkiaOperations::CreateRotatedImage( 479 shelf_corner = gfx::ImageSkiaOperations::CreateRotatedImage(
483 shelf_corner, SkBitmapOperations::ROTATION_90_CW); 480 shelf_corner, SkBitmapOperations::ROTATION_90_CW);
484 } 481 }
485 canvas->DrawImageInt( 482 canvas->DrawImageInt(shelf_corner, 0, 0, shelf_corner.width(),
486 shelf_corner, 0, 0, shelf_corner.width(), shelf_corner.height(), 483 shelf_corner.height(),
487 dock_bounds.x() > 0 484 dock_bounds.x() > 0 ? dock_bounds.x()
488 ? dock_bounds.x() 485 : dock_bounds.width() - height(),
489 : dock_bounds.width() - height(), 486 0, height(), height(), false, paint);
490 0, height(), height(), false, paint);
491 // The part of the shelf background that is just below the docked windows 487 // The part of the shelf background that is just below the docked windows
492 // is drawn using the last (lowest) 1-pixel tall strip of the image asset. 488 // is drawn using the last (lowest) 1-pixel tall strip of the image asset.
493 // This avoids showing the border 3D shadow between the shelf and the 489 // This avoids showing the border 3D shadow between the shelf and the
494 // dock. 490 // dock.
495 canvas->DrawImageInt(shelf_background, 0, shelf_background.height() - 1, 491 canvas->DrawImageInt(shelf_background, 0, shelf_background.height() - 1,
496 shelf_background.width(), 1, 492 shelf_background.width(), 1,
497 dock_bounds.x() > 0 ? dock_bounds.x() + height() : 0, 493 dock_bounds.x() > 0 ? dock_bounds.x() + height() : 0,
498 0, dock_bounds.width() - height(), height(), false, 494 0, dock_bounds.width() - height(), height(), false,
499 paint); 495 paint);
500 } 496 }
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
561 void ShelfWidget::DelegateView::UpdateBackground(int alpha) { 557 void ShelfWidget::DelegateView::UpdateBackground(int alpha) {
562 alpha_ = alpha; 558 alpha_ = alpha;
563 SchedulePaint(); 559 SchedulePaint();
564 } 560 }
565 561
566 ShelfWidget::ShelfWidget(WmWindow* wm_shelf_container, 562 ShelfWidget::ShelfWidget(WmWindow* wm_shelf_container,
567 WmWindow* wm_status_container, 563 WmWindow* wm_status_container,
568 WmShelfAura* wm_shelf_aura, 564 WmShelfAura* wm_shelf_aura,
569 WorkspaceController* workspace_controller) 565 WorkspaceController* workspace_controller)
570 : delegate_view_(new DelegateView(this)), 566 : delegate_view_(new DelegateView(this)),
571 background_animator_( 567 background_animator_(delegate_view_,
572 delegate_view_, 0, GetShelfConstant(SHELF_BACKGROUND_ALPHA)), 568 0,
569 GetShelfConstant(SHELF_BACKGROUND_ALPHA)),
573 activating_as_fallback_(false) { 570 activating_as_fallback_(false) {
574 views::Widget::InitParams params( 571 views::Widget::InitParams params(
575 views::Widget::InitParams::TYPE_WINDOW_FRAMELESS); 572 views::Widget::InitParams::TYPE_WINDOW_FRAMELESS);
576 params.opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW; 573 params.opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW;
577 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; 574 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
578 params.delegate = delegate_view_; 575 params.delegate = delegate_view_;
579 wm_shelf_container->GetRootWindowController() 576 wm_shelf_container->GetRootWindowController()
580 ->ConfigureWidgetInitParamsForContainer( 577 ->ConfigureWidgetInitParamsForContainer(
581 this, wm_shelf_container->GetShellWindowId(), &params); 578 this, wm_shelf_container->GetShellWindowId(), &params);
582 Init(params); 579 Init(params);
583 580
584 // The shelf should not take focus when initially shown. 581 // The shelf should not take focus when initially shown.
585 set_focus_on_creation(false); 582 set_focus_on_creation(false);
586 SetContentsView(delegate_view_); 583 SetContentsView(delegate_view_);
587 delegate_view_->SetParentLayer(GetLayer()); 584 delegate_view_->SetParentLayer(GetLayer());
588 585
589 shelf_layout_manager_ = new ShelfLayoutManager(this); 586 shelf_layout_manager_ = new ShelfLayoutManager(this);
590 shelf_layout_manager_->AddObserver(this); 587 shelf_layout_manager_->AddObserver(this);
591 aura::Window* shelf_container = 588 aura::Window* shelf_container =
592 WmWindowAura::GetAuraWindow(wm_shelf_container); 589 WmWindowAura::GetAuraWindow(wm_shelf_container);
593 shelf_container->SetLayoutManager(shelf_layout_manager_); 590 shelf_container->SetLayoutManager(shelf_layout_manager_);
594 shelf_layout_manager_->set_workspace_controller(workspace_controller); 591 shelf_layout_manager_->set_workspace_controller(workspace_controller);
595 workspace_controller->SetShelf(shelf_layout_manager_); 592 workspace_controller->SetShelf(shelf_layout_manager_);
596 wm_shelf_aura->SetShelfLayoutManager(shelf_layout_manager_); 593 wm_shelf_aura->SetShelfLayoutManager(shelf_layout_manager_);
597 594
598 // TODO(jamescook): Move ownership to RootWindowController. 595 // TODO(jamescook): Move ownership to RootWindowController.
599 status_area_widget_ = 596 status_area_widget_ =
600 new StatusAreaWidget(wm_status_container, wm_shelf_aura); 597 new StatusAreaWidget(wm_status_container, wm_shelf_aura);
601 status_area_widget_->CreateTrayViews(); 598 status_area_widget_->CreateTrayViews();
602 if (Shell::GetInstance()->session_state_delegate()-> 599 if (Shell::GetInstance()
603 IsActiveUserSessionStarted()) { 600 ->session_state_delegate()
601 ->IsActiveUserSessionStarted()) {
604 status_area_widget_->Show(); 602 status_area_widget_->Show();
605 } 603 }
606 WmShell::Get()->focus_cycler()->AddWidget(status_area_widget_); 604 WmShell::Get()->focus_cycler()->AddWidget(status_area_widget_);
607 605
608 aura::Window* status_container = 606 aura::Window* status_container =
609 WmWindowAura::GetAuraWindow(wm_status_container); 607 WmWindowAura::GetAuraWindow(wm_status_container);
610 status_container->SetLayoutManager( 608 status_container->SetLayoutManager(
611 new StatusAreaLayoutManager(status_container, this)); 609 new StatusAreaLayoutManager(status_container, this));
612 610
613 shelf_container->SetEventTargeter(std::unique_ptr<ui::EventTargeter>( 611 shelf_container->SetEventTargeter(std::unique_ptr<ui::EventTargeter>(
(...skipping 13 matching lines...) Expand all
627 } 625 }
628 626
629 void ShelfWidget::SetPaintsBackground( 627 void ShelfWidget::SetPaintsBackground(
630 ShelfBackgroundType background_type, 628 ShelfBackgroundType background_type,
631 BackgroundAnimatorChangeType change_type) { 629 BackgroundAnimatorChangeType change_type) {
632 ui::Layer* opaque_background = delegate_view_->opaque_background(); 630 ui::Layer* opaque_background = delegate_view_->opaque_background();
633 float target_opacity = 631 float target_opacity =
634 (background_type == SHELF_BACKGROUND_MAXIMIZED) ? 1.0f : 0.0f; 632 (background_type == SHELF_BACKGROUND_MAXIMIZED) ? 1.0f : 0.0f;
635 std::unique_ptr<ui::ScopedLayerAnimationSettings> opaque_background_animation; 633 std::unique_ptr<ui::ScopedLayerAnimationSettings> opaque_background_animation;
636 if (change_type != BACKGROUND_CHANGE_IMMEDIATE) { 634 if (change_type != BACKGROUND_CHANGE_IMMEDIATE) {
637 opaque_background_animation.reset(new ui::ScopedLayerAnimationSettings( 635 opaque_background_animation.reset(
638 opaque_background->GetAnimator())); 636 new ui::ScopedLayerAnimationSettings(opaque_background->GetAnimator()));
639 opaque_background_animation->SetTransitionDuration( 637 opaque_background_animation->SetTransitionDuration(
640 base::TimeDelta::FromMilliseconds(kTimeToSwitchBackgroundMs)); 638 base::TimeDelta::FromMilliseconds(kTimeToSwitchBackgroundMs));
641 } 639 }
642 opaque_background->SetOpacity(target_opacity); 640 opaque_background->SetOpacity(target_opacity);
643 641
644 // TODO(mukai): use ui::Layer on both opaque_background and normal background 642 // TODO(mukai): use ui::Layer on both opaque_background and normal background
645 // retire background_animator_ at all. It would be simpler. 643 // retire background_animator_ at all. It would be simpler.
646 // See also DockedBackgroundWidget::SetPaintsBackground. 644 // See also DockedBackgroundWidget::SetPaintsBackground.
647 background_animator_.SetPaintsBackground( 645 background_animator_.SetPaintsBackground(
648 background_type != SHELF_BACKGROUND_DEFAULT, change_type); 646 background_type != SHELF_BACKGROUND_DEFAULT, change_type);
649 } 647 }
650 648
651 ShelfBackgroundType ShelfWidget::GetBackgroundType() const { 649 ShelfBackgroundType ShelfWidget::GetBackgroundType() const {
652 if (delegate_view_->opaque_background()->GetTargetOpacity() == 1.0f) 650 if (delegate_view_->opaque_background()->GetTargetOpacity() == 1.0f)
653 return SHELF_BACKGROUND_MAXIMIZED; 651 return SHELF_BACKGROUND_MAXIMIZED;
654 if (background_animator_.paints_background()) 652 if (background_animator_.paints_background())
655 return SHELF_BACKGROUND_OVERLAP; 653 return SHELF_BACKGROUND_OVERLAP;
656 654
657 return SHELF_BACKGROUND_DEFAULT; 655 return SHELF_BACKGROUND_DEFAULT;
658 } 656 }
659 657
660 void ShelfWidget::HideShelfBehindBlackBar(bool hide, int animation_time_ms) { 658 void ShelfWidget::HideShelfBehindBlackBar(bool hide, int animation_time_ms) {
661 if (IsShelfHiddenBehindBlackBar() == hide) 659 if (IsShelfHiddenBehindBlackBar() == hide)
662 return; 660 return;
663 661
664 ui::Layer* opaque_foreground = delegate_view_->opaque_foreground(); 662 ui::Layer* opaque_foreground = delegate_view_->opaque_foreground();
665 float target_opacity = hide ? 1.0f : 0.0f; 663 float target_opacity = hide ? 1.0f : 0.0f;
666 std::unique_ptr<ui::ScopedLayerAnimationSettings> opaque_foreground_animation; 664 std::unique_ptr<ui::ScopedLayerAnimationSettings> opaque_foreground_animation;
667 opaque_foreground_animation.reset(new ui::ScopedLayerAnimationSettings( 665 opaque_foreground_animation.reset(
668 opaque_foreground->GetAnimator())); 666 new ui::ScopedLayerAnimationSettings(opaque_foreground->GetAnimator()));
669 opaque_foreground_animation->SetTransitionDuration( 667 opaque_foreground_animation->SetTransitionDuration(
670 base::TimeDelta::FromMilliseconds(animation_time_ms)); 668 base::TimeDelta::FromMilliseconds(animation_time_ms));
671 opaque_foreground_animation->SetPreemptionStrategy( 669 opaque_foreground_animation->SetPreemptionStrategy(
672 ui::LayerAnimator::REPLACE_QUEUED_ANIMATIONS); 670 ui::LayerAnimator::REPLACE_QUEUED_ANIMATIONS);
673 671
674 opaque_foreground->SetOpacity(target_opacity); 672 opaque_foreground->SetOpacity(target_opacity);
675 } 673 }
676 674
677 bool ShelfWidget::IsShelfHiddenBehindBlackBar() const { 675 bool ShelfWidget::IsShelfHiddenBehindBlackBar() const {
678 return delegate_view_->opaque_foreground()->GetTargetOpacity() != 0.0f; 676 return delegate_view_->opaque_foreground()->GetTargetOpacity() != 0.0f;
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
826 shelf_layout_manager_->UpdateAutoHideForMouseEvent(event); 824 shelf_layout_manager_->UpdateAutoHideForMouseEvent(event);
827 } 825 }
828 826
829 void ShelfWidget::OnGestureEvent(ui::GestureEvent* event) { 827 void ShelfWidget::OnGestureEvent(ui::GestureEvent* event) {
830 Widget::OnGestureEvent(event); 828 Widget::OnGestureEvent(event);
831 if (Shell::GetInstance()->in_mus() && shelf_layout_manager_) 829 if (Shell::GetInstance()->in_mus() && shelf_layout_manager_)
832 shelf_layout_manager_->UpdateAutoHideForGestureEvent(event); 830 shelf_layout_manager_->UpdateAutoHideForGestureEvent(event);
833 } 831 }
834 832
835 } // namespace ash 833 } // namespace ash
OLDNEW
« no previous file with comments | « ash/shelf/shelf_view_unittest.cc ('k') | ash/shelf/shelf_widget_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698