172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#ifndef CHROME_BROWSER_UI_GTK_GTK_CUSTOM_MENU_H_ 672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#define CHROME_BROWSER_UI_GTK_GTK_CUSTOM_MENU_H_ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// GtkCustomMenu is a GtkMenu subclass that can contain, and collaborates with, 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// GtkCustomMenuItem instances. GtkCustomMenuItem is a GtkMenuItem that can 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// have buttons and other normal widgets embeded in it. GtkCustomMenu exists 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// only to override most of the button/motion/move callback functions so 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// that the normal GtkMenu implementation doesn't handle events related to 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// GtkCustomMenuItem items. 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// For a more through overview of this system, see the comments in 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// gtk_custom_menu_item.h. 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <gdk/gdk.h> 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <gtk/gtk.h> 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <gtk/gtkmenuitem.h> 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochG_BEGIN_DECLS 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define GTK_TYPE_CUSTOM_MENU \ 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (gtk_custom_menu_get_type()) 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define GTK_CUSTOM_MENU(obj) \ 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (G_TYPE_CHECK_INSTANCE_CAST((obj), GTK_TYPE_CUSTOM_MENU, GtkCustomMenu)) 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define GTK_CUSTOM_MENU_CLASS(klass) \ 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (G_TYPE_CHECK_CLASS_CAST((klass), GTK_TYPE_CUSTOM_MENU, GtkCustomMenuClass)) 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define GTK_IS_CUSTOM_MENU(obj) \ 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (G_TYPE_CHECK_INSTANCE_TYPE((obj), GTK_TYPE_CUSTOM_MENU)) 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define GTK_IS_CUSTOM_MENU_CLASS(klass) \ 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (G_TYPE_CHECK_CLASS_TYPE((klass), GTK_TYPE_CUSTOM_MENU)) 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define GTK_CUSTOM_MENU_GET_CLASS(obj) \ 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (G_TYPE_INSTANCE_GET_CLASS((obj), GTK_TYPE_CUSTOM_MENU, GtkCustomMenuClass)) 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtypedef struct _GtkCustomMenu GtkCustomMenu; 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtypedef struct _GtkCustomMenuClass GtkCustomMenuClass; 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstruct _GtkCustomMenu { 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkMenu menu; 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstruct _GtkCustomMenuClass { 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkMenuClass parent_class; 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochGType gtk_custom_menu_get_type(void) G_GNUC_CONST; 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochGtkWidget* gtk_custom_menu_new(); 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochG_END_DECLS 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#endif // CHROME_BROWSER_UI_GTK_GTK_CUSTOM_MENU_H_ 55