blob: c62097f0cad3d3880f2283a9d574f478da3e61a2 [file] [log] [blame]
// Copyright (c) 2012 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 "ui/views/controls/button/menu_button.h"
#include <memory>
#include <utility>
#include "ui/events/event.h"
#include "ui/views/controls/button/button_controller_delegate.h"
#include "ui/views/controls/button/menu_button_controller.h"
namespace views {
MenuButton::MenuButton(const base::string16& text,
ButtonListener* button_listener,
int button_context)
: LabelButton(nullptr, text, button_context) {
SetHorizontalAlignment(gfx::ALIGN_LEFT);
std::unique_ptr<MenuButtonController> menu_button_controller =
std::make_unique<MenuButtonController>(
this, button_listener,
std::make_unique<Button::DefaultButtonControllerDelegate>(this));
menu_button_controller_ = menu_button_controller.get();
SetButtonController(std::move(menu_button_controller));
}
MenuButton::~MenuButton() = default;
bool MenuButton::Activate(const ui::Event* event) {
return button_controller()->Activate(event);
}
void MenuButton::NotifyClick(const ui::Event& event) {
// Notify ButtonListener via MenuButtonController, instead of
// ButtonListener::ButtonPressed.
button_controller()->Activate(&event);
}
BEGIN_METADATA(MenuButton)
METADATA_PARENT_CLASS(LabelButton)
END_METADATA()
} // namespace views