blob: 001aa54643e4eb0840f7d3b46909245a564f2f63 [file] [log] [blame]
// Copyright 2011 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef UI_VIEWS_CONTROLS_MENU_MENU_CONTROLLER_DELEGATE_H_
#define UI_VIEWS_CONTROLS_MENU_MENU_CONTROLLER_DELEGATE_H_
namespace views {
class MenuItemView;
// This is internal as there should be no need for usage of this class outside
// of views.
namespace internal {
// Used by MenuController to notify of interesting events that are intended for
// the class using MenuController. This is implemented by MenuRunnerImpl.
class MenuControllerDelegate {
public:
enum NotifyType { NOTIFY_DELEGATE, DONT_NOTIFY_DELEGATE };
// Invoked when MenuController closes. unless the owner deletes the
// MenuController during MenuDelegate::ExecuteCommand. |mouse_event_flags| are
// the flags set on the ui::MouseEvent which selected |menu|, otherwise 0.
virtual void OnMenuClosed(NotifyType type,
MenuItemView* menu,
int mouse_event_flags) = 0;
// Invoked when the MenuDelegate::GetSiblingMenu() returns non-NULL.
virtual void SiblingMenuCreated(MenuItemView* menu) = 0;
protected:
virtual ~MenuControllerDelegate() = default;
};
} // namespace internal
} // namespace views
#endif // UI_VIEWS_CONTROLS_MENU_MENU_CONTROLLER_DELEGATE_H_