diff options
Diffstat (limited to 'chrome/browser/chromeos/views/native_menu_domui.h')
| -rw-r--r-- | chrome/browser/chromeos/views/native_menu_domui.h | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/chrome/browser/chromeos/views/native_menu_domui.h b/chrome/browser/chromeos/views/native_menu_domui.h index 2c5e216..03a6b92 100644 --- a/chrome/browser/chromeos/views/native_menu_domui.h +++ b/chrome/browser/chromeos/views/native_menu_domui.h @@ -10,6 +10,7 @@ #include "base/message_loop.h" #include "base/observer_list.h" +#include "base/scoped_ptr.h" #include "chrome/browser/chromeos/dom_ui/domui_menu_control.h" #include "googleurl/src/gurl.h" #include "views/controls/menu/menu_wrapper.h" @@ -22,6 +23,14 @@ namespace menus { class MenuModel; } // namespace menus +namespace views { +class NestedDispatcherGtk; +} // namespace views; + +#if defined(TOUCH_UI) +typedef union _XEvent XEvent; +#endif + namespace chromeos { class MenuLocator; @@ -30,7 +39,7 @@ class DOMUIMenuWidget; // A DOMUI implementation of MenuWrapper. class NativeMenuDOMUI : public views::MenuWrapper, public DOMUIMenuControl, - public MessageLoopForUI::Dispatcher { + public MessageLoop::Dispatcher { public: NativeMenuDOMUI(menus::MenuModel* menu_model, bool root); virtual ~NativeMenuDOMUI(); @@ -54,6 +63,9 @@ class NativeMenuDOMUI : public views::MenuWrapper, // Overriden from MessageLoopForUI::Dispatcher: virtual bool Dispatch(GdkEvent* event); +#if defined(TOUCH_UI) + virtual bool Dispatch(XEvent* xevent); +#endif // Overriden from DOMUIMenuControl; virtual menus::MenuModel* GetMenuModel() { return model_; } @@ -140,6 +152,11 @@ class NativeMenuDOMUI : public views::MenuWrapper, // A guard flag to avoid calling MenuListener::OnMenuOpened twice. bool on_menu_opened_called_; + // Nested dispatcher object that can outlive this object. + // This is to deal with the menu being deleted while the nested + // message loop is handled. see http://crosbug.com/7929 . + views::NestedDispatcherGtk* nested_dispatcher_; + DISALLOW_COPY_AND_ASSIGN(NativeMenuDOMUI); }; |
