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