| // Copyright 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "ash/shelf/overflow_button.h" |
| |
| #include <memory> |
| |
| #include "ash/resources/vector_icons/vector_icons.h" |
| #include "ash/shelf/shelf.h" |
| #include "ash/shelf/shelf_constants.h" |
| #include "ash/shelf/shelf_view.h" |
| #include "ash/strings/grit/ash_strings.h" |
| #include "chromeos/constants/chromeos_switches.h" |
| #include "ui/base/l10n/l10n_util.h" |
| #include "ui/gfx/canvas.h" |
| #include "ui/gfx/image/image_skia_operations.h" |
| #include "ui/gfx/paint_vector_icon.h" |
| #include "ui/gfx/skbitmap_operations.h" |
| #include "ui/views/controls/image_view.h" |
| #include "ui/views/layout/fill_layout.h" |
| |
| namespace ash { |
| |
| OverflowButton::OverflowButton(ShelfView* shelf_view, Shelf* shelf) |
| : ShelfControlButton(shelf_view) { |
| SetAccessibleName(l10n_util::GetStringUTF16(IDS_ASH_SHELF_OVERFLOW_NAME)); |
| |
| horizontal_dots_image_view_ = new views::ImageView(); |
| horizontal_dots_image_view_->SetImage( |
| gfx::CreateVectorIcon(kShelfOverflowHorizontalDotsIcon, kShelfIconColor)); |
| SetLayoutManager(std::make_unique<views::FillLayout>()); |
| AddChildView(horizontal_dots_image_view_); |
| } |
| |
| OverflowButton::~OverflowButton() = default; |
| |
| bool OverflowButton::ShouldEnterPushedState(const ui::Event& event) { |
| if (shelf_view()->IsShowingOverflowBubble()) |
| return false; |
| |
| // We bypass out direct superclass on purpose here. |
| return Button::ShouldEnterPushedState(event); |
| } |
| |
| void OverflowButton::NotifyClick(const ui::Event& event) { |
| // For this button, do not call the superclass's handler. |
| shelf_view()->ButtonPressed(this, event, nullptr); |
| } |
| |
| const char* OverflowButton::GetClassName() const { |
| return "ash/OverflowButton"; |
| } |
| |
| } // namespace ash |