Chromium Code Reviews| OLD | NEW |
|---|---|
| 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/ash_switches.h" | 10 #include "ash/ash_switches.h" |
| (...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 435 overflow_button_->OnShelfAlignmentChanged(); | 435 overflow_button_->OnShelfAlignmentChanged(); |
| 436 LayoutToIdealBounds(); | 436 LayoutToIdealBounds(); |
| 437 for (int i = 0; i < view_model_->view_size(); ++i) { | 437 for (int i = 0; i < view_model_->view_size(); ++i) { |
| 438 if (i >= first_visible_index_ && i <= last_visible_index_) | 438 if (i >= first_visible_index_ && i <= last_visible_index_) |
| 439 view_model_->view_at(i)->Layout(); | 439 view_model_->view_at(i)->Layout(); |
| 440 } | 440 } |
| 441 tooltip_.Close(); | 441 tooltip_.Close(); |
| 442 if (overflow_bubble_) | 442 if (overflow_bubble_) |
| 443 overflow_bubble_->Hide(); | 443 overflow_bubble_->Hide(); |
| 444 // For crbug.com/587931, because AppListButton layout logic is in OnPaint. | 444 // For crbug.com/587931, because AppListButton layout logic is in OnPaint. |
| 445 views::View* app_list_button = GetAppListButtonView(); | 445 AppListButton* app_list_button = GetAppListButton(); |
| 446 if (app_list_button) | 446 if (app_list_button) |
| 447 app_list_button->SchedulePaint(); | 447 app_list_button->SchedulePaint(); |
| 448 } | 448 } |
| 449 | 449 |
| 450 void ShelfView::SchedulePaintForAllButtons() { | 450 void ShelfView::SchedulePaintForAllButtons() { |
| 451 for (int i = 0; i < view_model_->view_size(); ++i) { | 451 for (int i = 0; i < view_model_->view_size(); ++i) { |
| 452 if (i >= first_visible_index_ && i <= last_visible_index_) | 452 if (i >= first_visible_index_ && i <= last_visible_index_) |
| 453 view_model_->view_at(i)->SchedulePaint(); | 453 view_model_->view_at(i)->SchedulePaint(); |
| 454 } | 454 } |
| 455 if (overflow_button_ && overflow_button_->visible()) | 455 if (overflow_button_ && overflow_button_->visible()) |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 511 } | 511 } |
| 512 | 512 |
| 513 bool ShelfView::IsShowingMenu() const { | 513 bool ShelfView::IsShowingMenu() const { |
| 514 return launcher_menu_runner_.get() && launcher_menu_runner_->IsRunning(); | 514 return launcher_menu_runner_.get() && launcher_menu_runner_->IsRunning(); |
| 515 } | 515 } |
| 516 | 516 |
| 517 bool ShelfView::IsShowingOverflowBubble() const { | 517 bool ShelfView::IsShowingOverflowBubble() const { |
| 518 return overflow_bubble_.get() && overflow_bubble_->IsShowing(); | 518 return overflow_bubble_.get() && overflow_bubble_->IsShowing(); |
| 519 } | 519 } |
| 520 | 520 |
| 521 views::View* ShelfView::GetAppListButtonView() const { | 521 AppListButton* ShelfView::GetAppListButton() const { |
| 522 for (int i = 0; i < model_->item_count(); ++i) { | 522 for (int i = 0; i < model_->item_count(); ++i) { |
| 523 if (model_->items()[i].type == TYPE_APP_LIST) | 523 if (model_->items()[i].type == TYPE_APP_LIST) { |
| 524 return view_model_->view_at(i); | 524 views::View* view = view_model_->view_at(i); |
| 525 CHECK_EQ(AppListButton::kViewClassName, view->GetClassName()); | |
| 526 return static_cast<AppListButton*>(view); | |
| 527 } | |
| 525 } | 528 } |
| 526 | 529 |
| 527 NOTREACHED() << "Applist button not found"; | 530 NOTREACHED() << "Applist button not found"; |
| 528 return nullptr; | 531 return nullptr; |
| 529 } | 532 } |
| 530 | 533 |
| 531 bool ShelfView::ShouldHideTooltip(const gfx::Point& cursor_location) const { | 534 bool ShelfView::ShouldHideTooltip(const gfx::Point& cursor_location) const { |
| 532 gfx::Rect tooltip_bounds; | 535 gfx::Rect tooltip_bounds; |
| 533 for (int i = 0; i < child_count(); ++i) { | 536 for (int i = 0; i < child_count(); ++i) { |
| 534 const views::View* child = child_at(i); | 537 const views::View* child = child_at(i); |
| 535 if (child != overflow_button_ && ShouldShowTooltipForView(child)) | 538 if (child != overflow_button_ && ShouldShowTooltipForView(child)) |
| 536 tooltip_bounds.Union(child->GetMirroredBounds()); | 539 tooltip_bounds.Union(child->GetMirroredBounds()); |
| 537 } | 540 } |
| 538 return !tooltip_bounds.Contains(cursor_location); | 541 return !tooltip_bounds.Contains(cursor_location); |
| 539 } | 542 } |
| 540 | 543 |
| 541 bool ShelfView::ShouldShowTooltipForView(const views::View* view) const { | 544 bool ShelfView::ShouldShowTooltipForView(const views::View* view) const { |
| 542 if (view == GetAppListButtonView() && | 545 if (view == GetAppListButton() && |
| 543 Shell::GetInstance()->GetAppListTargetVisibility()) { | 546 Shell::GetInstance()->GetAppListTargetVisibility()) { |
| 544 return false; | 547 return false; |
| 545 } | 548 } |
| 546 const ShelfItem* item = ShelfItemForView(view); | 549 const ShelfItem* item = ShelfItemForView(view); |
| 547 if (!item) | 550 if (!item) |
| 548 return false; | 551 return false; |
| 549 return item_manager_->GetShelfItemDelegate(item->id)->ShouldShowTooltip(); | 552 return item_manager_->GetShelfItemDelegate(item->id)->ShouldShowTooltip(); |
| 550 } | 553 } |
| 551 | 554 |
| 552 base::string16 ShelfView::GetTitleForView(const views::View* view) const { | 555 base::string16 ShelfView::GetTitleForView(const views::View* view) const { |
| (...skipping 1202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1755 | 1758 |
| 1756 ShelfItemDelegate::PerformedAction performed_action = | 1759 ShelfItemDelegate::PerformedAction performed_action = |
| 1757 item_manager_ | 1760 item_manager_ |
| 1758 ->GetShelfItemDelegate(model_->items()[last_pressed_index_].id) | 1761 ->GetShelfItemDelegate(model_->items()[last_pressed_index_].id) |
| 1759 ->ItemSelected(event); | 1762 ->ItemSelected(event); |
| 1760 | 1763 |
| 1761 shelf_button_pressed_metric_tracker_.ButtonPressed(event, sender, | 1764 shelf_button_pressed_metric_tracker_.ButtonPressed(event, sender, |
| 1762 performed_action); | 1765 performed_action); |
| 1763 | 1766 |
| 1764 if (performed_action == ShelfItemDelegate::kNewWindowCreated || | 1767 if (performed_action == ShelfItemDelegate::kNewWindowCreated || |
| 1765 !ShowListMenuForView(model_->items()[last_pressed_index_], sender, | 1768 (performed_action != ShelfItemDelegate::kAppListMenuShown && |
|
bruthig
2016/06/17 17:58:45
A doc saying the AppListButton handles the ink dro
mohsen
2016/06/18 06:25:15
Added a comment.
| |
| 1766 event, ink_drop)) { | 1769 !ShowListMenuForView(model_->items()[last_pressed_index_], sender, |
| 1770 event, ink_drop))) { | |
| 1767 ink_drop->AnimateToState(views::InkDropState::ACTION_TRIGGERED); | 1771 ink_drop->AnimateToState(views::InkDropState::ACTION_TRIGGERED); |
| 1768 } | 1772 } |
| 1769 } | 1773 } |
| 1770 } | 1774 } |
| 1771 | 1775 |
| 1772 bool ShelfView::ShowListMenuForView(const ShelfItem& item, | 1776 bool ShelfView::ShowListMenuForView(const ShelfItem& item, |
| 1773 views::View* source, | 1777 views::View* source, |
| 1774 const ui::Event& event, | 1778 const ui::Event& event, |
| 1775 views::InkDrop* ink_drop) { | 1779 views::InkDrop* ink_drop) { |
| 1776 ShelfItemDelegate* item_delegate = | 1780 ShelfItemDelegate* item_delegate = |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1919 | 1923 |
| 1920 int ShelfView::CalculateShelfDistance(const gfx::Point& coordinate) const { | 1924 int ShelfView::CalculateShelfDistance(const gfx::Point& coordinate) const { |
| 1921 const gfx::Rect bounds = GetBoundsInScreen(); | 1925 const gfx::Rect bounds = GetBoundsInScreen(); |
| 1922 int distance = shelf_->SelectValueForShelfAlignment( | 1926 int distance = shelf_->SelectValueForShelfAlignment( |
| 1923 bounds.y() - coordinate.y(), coordinate.x() - bounds.right(), | 1927 bounds.y() - coordinate.y(), coordinate.x() - bounds.right(), |
| 1924 bounds.x() - coordinate.x()); | 1928 bounds.x() - coordinate.x()); |
| 1925 return distance > 0 ? distance : 0; | 1929 return distance > 0 ? distance : 0; |
| 1926 } | 1930 } |
| 1927 | 1931 |
| 1928 } // namespace ash | 1932 } // namespace ash |
| OLD | NEW |