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

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

Issue 2070143003: Add MD ink drop ripple to app list button (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@b612539_shelf_button_ripple
Patch Set: Changed SetHasInkDrop to SetInkDropMode Created 4 years, 5 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
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/shelf/shelf_view.h" 5 #include "ash/shelf/shelf_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <memory> 8 #include <memory>
9 9
10 #include "ash/aura/wm_window_aura.h" 10 #include "ash/aura/wm_window_aura.h"
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after
431 overflow_button_->OnShelfAlignmentChanged(); 431 overflow_button_->OnShelfAlignmentChanged();
432 LayoutToIdealBounds(); 432 LayoutToIdealBounds();
433 for (int i = 0; i < view_model_->view_size(); ++i) { 433 for (int i = 0; i < view_model_->view_size(); ++i) {
434 if (i >= first_visible_index_ && i <= last_visible_index_) 434 if (i >= first_visible_index_ && i <= last_visible_index_)
435 view_model_->view_at(i)->Layout(); 435 view_model_->view_at(i)->Layout();
436 } 436 }
437 tooltip_.Close(); 437 tooltip_.Close();
438 if (overflow_bubble_) 438 if (overflow_bubble_)
439 overflow_bubble_->Hide(); 439 overflow_bubble_->Hide();
440 // For crbug.com/587931, because AppListButton layout logic is in OnPaint. 440 // For crbug.com/587931, because AppListButton layout logic is in OnPaint.
441 views::View* app_list_button = GetAppListButtonView(); 441 AppListButton* app_list_button = GetAppListButton();
442 if (app_list_button) 442 if (app_list_button)
443 app_list_button->SchedulePaint(); 443 app_list_button->SchedulePaint();
444 } 444 }
445 445
446 void ShelfView::SchedulePaintForAllButtons() { 446 void ShelfView::SchedulePaintForAllButtons() {
447 for (int i = 0; i < view_model_->view_size(); ++i) { 447 for (int i = 0; i < view_model_->view_size(); ++i) {
448 if (i >= first_visible_index_ && i <= last_visible_index_) 448 if (i >= first_visible_index_ && i <= last_visible_index_)
449 view_model_->view_at(i)->SchedulePaint(); 449 view_model_->view_at(i)->SchedulePaint();
450 } 450 }
451 if (overflow_button_ && overflow_button_->visible()) 451 if (overflow_button_ && overflow_button_->visible())
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 } 505 }
506 506
507 bool ShelfView::IsShowingMenu() const { 507 bool ShelfView::IsShowingMenu() const {
508 return launcher_menu_runner_.get() && launcher_menu_runner_->IsRunning(); 508 return launcher_menu_runner_.get() && launcher_menu_runner_->IsRunning();
509 } 509 }
510 510
511 bool ShelfView::IsShowingOverflowBubble() const { 511 bool ShelfView::IsShowingOverflowBubble() const {
512 return overflow_bubble_.get() && overflow_bubble_->IsShowing(); 512 return overflow_bubble_.get() && overflow_bubble_->IsShowing();
513 } 513 }
514 514
515 views::View* ShelfView::GetAppListButtonView() const { 515 AppListButton* ShelfView::GetAppListButton() const {
516 for (int i = 0; i < model_->item_count(); ++i) { 516 for (int i = 0; i < model_->item_count(); ++i) {
517 if (model_->items()[i].type == TYPE_APP_LIST) 517 if (model_->items()[i].type == TYPE_APP_LIST) {
518 return view_model_->view_at(i); 518 views::View* view = view_model_->view_at(i);
519 CHECK_EQ(AppListButton::kViewClassName, view->GetClassName());
520 return static_cast<AppListButton*>(view);
521 }
519 } 522 }
520 523
521 NOTREACHED() << "Applist button not found"; 524 NOTREACHED() << "Applist button not found";
522 return nullptr; 525 return nullptr;
523 } 526 }
524 527
525 bool ShelfView::ShouldHideTooltip(const gfx::Point& cursor_location) const { 528 bool ShelfView::ShouldHideTooltip(const gfx::Point& cursor_location) const {
526 gfx::Rect tooltip_bounds; 529 gfx::Rect tooltip_bounds;
527 for (int i = 0; i < child_count(); ++i) { 530 for (int i = 0; i < child_count(); ++i) {
528 const views::View* child = child_at(i); 531 const views::View* child = child_at(i);
529 if (child != overflow_button_ && ShouldShowTooltipForView(child)) 532 if (child != overflow_button_ && ShouldShowTooltipForView(child))
530 tooltip_bounds.Union(child->GetMirroredBounds()); 533 tooltip_bounds.Union(child->GetMirroredBounds());
531 } 534 }
532 return !tooltip_bounds.Contains(cursor_location); 535 return !tooltip_bounds.Contains(cursor_location);
533 } 536 }
534 537
535 bool ShelfView::ShouldShowTooltipForView(const views::View* view) const { 538 bool ShelfView::ShouldShowTooltipForView(const views::View* view) const {
536 if (view == GetAppListButtonView() && 539 if (view == GetAppListButton() &&
537 Shell::GetInstance()->GetAppListTargetVisibility()) { 540 Shell::GetInstance()->GetAppListTargetVisibility()) {
538 return false; 541 return false;
539 } 542 }
540 const ShelfItem* item = ShelfItemForView(view); 543 const ShelfItem* item = ShelfItemForView(view);
541 if (!item) 544 if (!item)
542 return false; 545 return false;
543 return item_manager_->GetShelfItemDelegate(item->id)->ShouldShowTooltip(); 546 return item_manager_->GetShelfItemDelegate(item->id)->ShouldShowTooltip();
544 } 547 }
545 548
546 base::string16 ShelfView::GetTitleForView(const views::View* view) const { 549 base::string16 ShelfView::GetTitleForView(const views::View* view) const {
(...skipping 1190 matching lines...) Expand 10 before | Expand all | Expand 10 after
1737 } 1740 }
1738 1741
1739 ShelfItemDelegate::PerformedAction performed_action = 1742 ShelfItemDelegate::PerformedAction performed_action =
1740 item_manager_ 1743 item_manager_
1741 ->GetShelfItemDelegate(model_->items()[last_pressed_index_].id) 1744 ->GetShelfItemDelegate(model_->items()[last_pressed_index_].id)
1742 ->ItemSelected(event); 1745 ->ItemSelected(event);
1743 1746
1744 shelf_button_pressed_metric_tracker_.ButtonPressed(event, sender, 1747 shelf_button_pressed_metric_tracker_.ButtonPressed(event, sender,
1745 performed_action); 1748 performed_action);
1746 1749
1750 // For the app list menu no TRIGGERED ink drop effect is needed and it
1751 // handles its own ACTIVATED/DEACTIVATED states.
1747 if (performed_action == ShelfItemDelegate::kNewWindowCreated || 1752 if (performed_action == ShelfItemDelegate::kNewWindowCreated ||
1748 !ShowListMenuForView(model_->items()[last_pressed_index_], sender, 1753 (performed_action != ShelfItemDelegate::kAppListMenuShown &&
1749 event, ink_drop)) { 1754 !ShowListMenuForView(model_->items()[last_pressed_index_], sender,
1755 event, ink_drop))) {
1750 ink_drop->AnimateToState(views::InkDropState::ACTION_TRIGGERED); 1756 ink_drop->AnimateToState(views::InkDropState::ACTION_TRIGGERED);
1751 } 1757 }
1752 } 1758 }
1753 } 1759 }
1754 1760
1755 bool ShelfView::ShowListMenuForView(const ShelfItem& item, 1761 bool ShelfView::ShowListMenuForView(const ShelfItem& item,
1756 views::View* source, 1762 views::View* source,
1757 const ui::Event& event, 1763 const ui::Event& event,
1758 views::InkDrop* ink_drop) { 1764 views::InkDrop* ink_drop) {
1759 ShelfItemDelegate* item_delegate = 1765 ShelfItemDelegate* item_delegate =
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
1901 1907
1902 int ShelfView::CalculateShelfDistance(const gfx::Point& coordinate) const { 1908 int ShelfView::CalculateShelfDistance(const gfx::Point& coordinate) const {
1903 const gfx::Rect bounds = GetBoundsInScreen(); 1909 const gfx::Rect bounds = GetBoundsInScreen();
1904 int distance = shelf_->SelectValueForShelfAlignment( 1910 int distance = shelf_->SelectValueForShelfAlignment(
1905 bounds.y() - coordinate.y(), coordinate.x() - bounds.right(), 1911 bounds.y() - coordinate.y(), coordinate.x() - bounds.right(),
1906 bounds.x() - coordinate.x()); 1912 bounds.x() - coordinate.x());
1907 return distance > 0 ? distance : 0; 1913 return distance > 0 ? distance : 0;
1908 } 1914 }
1909 1915
1910 } // namespace ash 1916 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698