Fix MS-Windows build broken by menu changes on 2014-06-02.
[bpt/emacs.git] / src / menu.h
index 451401b..d71989e 100644 (file)
@@ -1,5 +1,5 @@
 /* Functions to manipulate menus.
-   Copyright (C) 2008-2011 Free Software Foundation, Inc.
+   Copyright (C) 2008-2014 Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -20,35 +20,86 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #define MENU_H
 
 #include "systime.h" /* for Time */
+#if defined (USE_X_TOOLKIT) || defined (USE_GTK) || defined (HAVE_NS)
+#include "../lwlib/lwlib.h" /* for widget_value */
+#endif
+
+#ifdef HAVE_NTGUI
+/* This is based on the one in ../lwlib/lwlib.h, with unused portions
+   removed.  HAVE_NTGUI cannot include lwlib.h, as that pulls in X11
+   headers.  */
+
+enum button_type
+{
+  BUTTON_TYPE_NONE,
+  BUTTON_TYPE_TOGGLE,
+  BUTTON_TYPE_RADIO
+};
+
+typedef struct _widget_value
+{
+  /* name of widget */
+  Lisp_Object   lname;
+  const char*   name;
+  /* value (meaning depend on widget type) */
+  const char*   value;
+  /* keyboard equivalent. no implications for XtTranslations */
+  Lisp_Object   lkey;
+  const char*   key;
+  /* Help string or nil if none.
+     GC finds this string through the frame's menu_bar_vector
+     or through menu_items.  */
+  Lisp_Object   help;
+  /* true if enabled */
+  unsigned char enabled;
+  /* true if selected */
+  unsigned char selected;
+  /* The type of a button.  */
+  enum button_type button_type;
+  /* true if menu title */
+  unsigned char title;
+  /* Contents of the sub-widgets, also selected slot for checkbox */
+  struct _widget_value* contents;
+  /* data passed to callback */
+  void  *call_data;
+  /* next one in the list */
+  struct _widget_value* next;
+} widget_value;
+
+extern Lisp_Object Qunsupported__w32_dialog;
+#endif
 
 extern void x_set_menu_bar_lines (struct frame *f,
                                   Lisp_Object value,
                                   Lisp_Object oldval);
 
 extern void init_menu_items (void);
-extern void finish_menu_items (void);
+extern void finish_menu_items (void) ATTRIBUTE_CONST;
 extern void discard_menu_items (void);
 extern void save_menu_items (void);
-extern int parse_single_submenu (Lisp_Object, Lisp_Object, Lisp_Object);
+extern bool parse_single_submenu (Lisp_Object, Lisp_Object, Lisp_Object);
 extern void list_of_panes (Lisp_Object);
 #if defined (USE_X_TOOLKIT) || defined (USE_GTK) || defined (HAVE_NTGUI) \
   || defined (HAVE_NS)
 extern void free_menubar_widget_value_tree (widget_value *);
 extern void update_submenu_strings (widget_value *);
-extern void find_and_call_menu_selection (FRAME_PTR, int,
+extern void find_and_call_menu_selection (struct frame *, int,
                                           Lisp_Object, void *);
-extern widget_value *xmalloc_widget_value (void);
-extern widget_value *digest_single_submenu (int, int, int);
+extern widget_value *make_widget_value (const char *, char *, bool, Lisp_Object);
+extern widget_value *digest_single_submenu (int, int, bool);
 #endif
 
 #ifdef HAVE_X_WINDOWS
-extern void mouse_position_for_popup (FRAME_PTR f, int *x, int *y);
+extern void mouse_position_for_popup (struct frame *f, int *x, int *y);
 #endif
 
-extern Lisp_Object w32_menu_show (FRAME_PTR, int, int, int, int,
+extern Lisp_Object w32_menu_show (struct frame *, int, int, int, int,
                                  Lisp_Object, const char **);
-extern Lisp_Object ns_menu_show (FRAME_PTR, int, int, int, int,
+extern Lisp_Object ns_menu_show (struct frame *, int, int, bool, bool,
                                 Lisp_Object, const char **);
-extern Lisp_Object xmenu_show (FRAME_PTR, int, int, int, int,
-                              Lisp_Object, const char **, Time);
+extern Lisp_Object xmenu_show (struct frame *, int, int, bool, bool,
+                              Lisp_Object, const char **);
+extern Lisp_Object tty_menu_show (struct frame *, int, int, bool, bool,
+                                 Lisp_Object, bool, const char **);
+extern ptrdiff_t menu_item_width (const unsigned char *);
 #endif /* MENU_H */