diff options
-rw-r--r-- | views/controls/menu/menu_wrapper.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/views/controls/menu/menu_wrapper.h b/views/controls/menu/menu_wrapper.h new file mode 100644 index 0000000..f418703 --- /dev/null +++ b/views/controls/menu/menu_wrapper.h @@ -0,0 +1,44 @@ +// Copyright (c) 2009 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. + +#ifndef VIEWS_CONTROLS_MENU_MENU_WRAPPER_H_ +#define VIEWS_CONTROLS_MENU_MENU_WRAPPER_H_ + +#include "base/gfx/native_widget_types.h" + +namespace gfx { +class Point; +} + +namespace views { + +class Menu2; + +// An interface that wraps an object that implements a menu. +class MenuWrapper { + public: + virtual ~MenuWrapper() {} + + // Runs the menu at the specified point. This may or may not block depending + // on the platform. + virtual void RunMenuAt(const gfx::Point& point, int alignment) = 0; + + // Called when the model supplying data to this menu has changed, and the menu + // must be rebuilt. + virtual void Rebuild() = 0; + + // Called when the states of the items in the menu must be updated from the + // model. + virtual void UpdateStates() = 0; + + // Retrieve a native menu handle. + virtual gfx::NativeMenu GetNativeMenu() const = 0; + + // Creates the appropriate instance of this wrapper for the current platform. + static MenuWrapper* CreateWrapper(Menu2* menu); +}; + +} // namespace views + +#endif // VIEWS_CONTROLS_MENU_MENU_WRAPPER_H_ |