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

Side by Side Diff: ash/system/tray/tray_background_view.cc

Issue 98373006: Animating docked background in sync with shelf (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Animating docked background in sync with shelf (corner) Created 7 years 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
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/system/tray/tray_background_view.h" 5 #include "ash/system/tray/tray_background_view.h"
6 6
7 #include "ash/ash_switches.h" 7 #include "ash/ash_switches.h"
8 #include "ash/root_window_controller.h" 8 #include "ash/root_window_controller.h"
9 #include "ash/screen_ash.h" 9 #include "ash/screen_ash.h"
10 #include "ash/shelf/shelf_layout_manager.h" 10 #include "ash/shelf/shelf_layout_manager.h"
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 background_(NULL), 326 background_(NULL),
327 hide_background_animator_(this, 0, kTrayBackgroundAlpha), 327 hide_background_animator_(this, 0, kTrayBackgroundAlpha),
328 hover_background_animator_( 328 hover_background_animator_(
329 this, 0, kTrayBackgroundHoverAlpha - kTrayBackgroundAlpha), 329 this, 0, kTrayBackgroundHoverAlpha - kTrayBackgroundAlpha),
330 hovered_(false), 330 hovered_(false),
331 draw_background_as_active_(false), 331 draw_background_as_active_(false),
332 widget_observer_(new TrayWidgetObserver(this)) { 332 widget_observer_(new TrayWidgetObserver(this)) {
333 set_notify_enter_exit_on_child(true); 333 set_notify_enter_exit_on_child(true);
334 334
335 // Initially we want to paint the background, but without the hover effect. 335 // Initially we want to paint the background, but without the hover effect.
336 hide_background_animator_.SetPaintsBackground(true, 336 hide_background_animator_.SetPaintsBackground(true, CHANGE_IMMEDIATE);
337 internal::BackgroundAnimator::CHANGE_IMMEDIATE); 337 hover_background_animator_.SetPaintsBackground(false, CHANGE_IMMEDIATE);
338 hover_background_animator_.SetPaintsBackground(false,
339 internal::BackgroundAnimator::CHANGE_IMMEDIATE);
340 338
341 tray_container_ = new TrayContainer(shelf_alignment_); 339 tray_container_ = new TrayContainer(shelf_alignment_);
342 SetContents(tray_container_); 340 SetContents(tray_container_);
343 tray_event_filter_.reset(new TrayEventFilter); 341 tray_event_filter_.reset(new TrayEventFilter);
344 } 342 }
345 343
346 TrayBackgroundView::~TrayBackgroundView() { 344 TrayBackgroundView::~TrayBackgroundView() {
347 if (GetWidget()) 345 if (GetWidget())
348 GetWidget()->RemoveObserver(widget_observer_.get()); 346 GetWidget()->RemoveObserver(widget_observer_.get());
349 } 347 }
350 348
351 void TrayBackgroundView::Initialize() { 349 void TrayBackgroundView::Initialize() {
352 GetWidget()->AddObserver(widget_observer_.get()); 350 GetWidget()->AddObserver(widget_observer_.get());
353 SetBorder(); 351 SetBorder();
354 } 352 }
355 353
356 const char* TrayBackgroundView::GetClassName() const { 354 const char* TrayBackgroundView::GetClassName() const {
357 return kViewClassName; 355 return kViewClassName;
358 } 356 }
359 357
360 void TrayBackgroundView::OnMouseEntered(const ui::MouseEvent& event) { 358 void TrayBackgroundView::OnMouseEntered(const ui::MouseEvent& event) {
361 hovered_ = true; 359 hovered_ = true;
362 if (!background_ || draw_background_as_active_ || 360 if (!background_ || draw_background_as_active_ ||
363 ash::switches::UseAlternateShelfLayout()) 361 ash::switches::UseAlternateShelfLayout())
364 return; 362 return;
365 hover_background_animator_.SetPaintsBackground(true, 363 hover_background_animator_.SetPaintsBackground(true, CHANGE_ANIMATE);
366 internal::BackgroundAnimator::CHANGE_ANIMATE);
367 } 364 }
368 365
369 void TrayBackgroundView::OnMouseExited(const ui::MouseEvent& event) { 366 void TrayBackgroundView::OnMouseExited(const ui::MouseEvent& event) {
370 hovered_ = false; 367 hovered_ = false;
371 if (!background_ || draw_background_as_active_ || 368 if (!background_ || draw_background_as_active_ ||
372 ash::switches::UseAlternateShelfLayout()) 369 ash::switches::UseAlternateShelfLayout())
373 return; 370 return;
374 hover_background_animator_.SetPaintsBackground(false, 371 hover_background_animator_.SetPaintsBackground(false, CHANGE_ANIMATE);
375 internal::BackgroundAnimator::CHANGE_ANIMATE);
376 } 372 }
377 373
378 void TrayBackgroundView::ChildPreferredSizeChanged(views::View* child) { 374 void TrayBackgroundView::ChildPreferredSizeChanged(views::View* child) {
379 PreferredSizeChanged(); 375 PreferredSizeChanged();
380 } 376 }
381 377
382 void TrayBackgroundView::OnPaintFocusBorder(gfx::Canvas* canvas) { 378 void TrayBackgroundView::OnPaintFocusBorder(gfx::Canvas* canvas) {
383 // The tray itself expands to the right and bottom edge of the screen to make 379 // The tray itself expands to the right and bottom edge of the screen to make
384 // sure clicking on the edges brings up the popup. However, the focus border 380 // sure clicking on the edges brings up the popup. However, the focus border
385 // should be only around the container. 381 // should be only around the container.
(...skipping 26 matching lines...) Expand all
412 hover_background_animator_.alpha()); 408 hover_background_animator_.alpha());
413 SchedulePaint(); 409 SchedulePaint();
414 } 410 }
415 411
416 void TrayBackgroundView::SetContents(views::View* contents) { 412 void TrayBackgroundView::SetContents(views::View* contents) {
417 SetLayoutManager(new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 0)); 413 SetLayoutManager(new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 0));
418 AddChildView(contents); 414 AddChildView(contents);
419 } 415 }
420 416
421 void TrayBackgroundView::SetPaintsBackground( 417 void TrayBackgroundView::SetPaintsBackground(
422 bool value, 418 bool value, BackgroundAnimatorChangeType change_type) {
423 internal::BackgroundAnimator::ChangeType change_type) {
424 DCHECK(!ash::switches::UseAlternateShelfLayout()); 419 DCHECK(!ash::switches::UseAlternateShelfLayout());
425 hide_background_animator_.SetPaintsBackground(value, change_type); 420 hide_background_animator_.SetPaintsBackground(value, change_type);
426 } 421 }
427 422
428 void TrayBackgroundView::SetContentsBackground() { 423 void TrayBackgroundView::SetContentsBackground() {
429 background_ = new internal::TrayBackground(this); 424 background_ = new internal::TrayBackground(this);
430 tray_container_->set_background(background_); 425 tray_container_->set_background(background_);
431 } 426 }
432 427
433 ShelfLayoutManager* TrayBackgroundView::GetShelfLayoutManager() { 428 ShelfLayoutManager* TrayBackgroundView::GetShelfLayoutManager() {
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
627 ash::internal::ShelfLayoutManager* shelf = 622 ash::internal::ShelfLayoutManager* shelf =
628 ShelfLayoutManager::ForLauncher(root_window); 623 ShelfLayoutManager::ForLauncher(root_window);
629 bubble_view->SetArrowPaintType( 624 bubble_view->SetArrowPaintType(
630 (shelf && shelf->IsVisible()) ? 625 (shelf && shelf->IsVisible()) ?
631 views::BubbleBorder::PAINT_NORMAL : 626 views::BubbleBorder::PAINT_NORMAL :
632 views::BubbleBorder::PAINT_TRANSPARENT); 627 views::BubbleBorder::PAINT_TRANSPARENT);
633 } 628 }
634 629
635 } // namespace internal 630 } // namespace internal
636 } // namespace ash 631 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698