• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
23 G_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 
38 typedef struct _GtkCustomMenu GtkCustomMenu;
39 typedef struct _GtkCustomMenuClass GtkCustomMenuClass;
40 
41 struct _GtkCustomMenu {
42   GtkMenu menu;
43 };
44 
45 struct _GtkCustomMenuClass {
46   GtkMenuClass parent_class;
47 };
48 
49 GType gtk_custom_menu_get_type(void) G_GNUC_CONST;
50 GtkWidget* gtk_custom_menu_new();
51 
52 G_END_DECLS
53 
54 #endif  // CHROME_BROWSER_UI_GTK_GTK_CUSTOM_MENU_H_
55