remove Lisp_Free struct type
[bpt/emacs.git] / src / menu.h
index d71989e..30a89be 100644 (file)
@@ -20,55 +20,20 @@ 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
+#include "../lwlib/lwlib-widget.h"
 
 #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
 
+/* Bit fields used by terminal-specific menu_show_hook.  */
+
+enum {
+  MENU_KEYMAPS = 0x1,
+  MENU_FOR_CLICK = 0x2,
+  MENU_KBD_NAVIGATION = 0x4
+};
+
 extern void x_set_menu_bar_lines (struct frame *f,
                                   Lisp_Object value,
                                   Lisp_Object oldval);
@@ -89,17 +54,19 @@ 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 (struct frame *f, int *x, int *y);
+#if defined (HAVE_X_WINDOWS) || defined (MSDOS)
+extern Lisp_Object x_menu_show (struct frame *, int, int, int,
+                               Lisp_Object, const char **);
 #endif
-
-extern Lisp_Object w32_menu_show (struct frame *, int, int, int, int,
+#ifdef HAVE_NTGUI
+extern Lisp_Object w32_menu_show (struct frame *, int, int, int,
                                  Lisp_Object, const char **);
-extern Lisp_Object ns_menu_show (struct frame *, int, int, bool, bool,
+#endif
+#ifdef HAVE_NS
+extern Lisp_Object ns_menu_show (struct frame *, int, int, int,
                                 Lisp_Object, const char **);
-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 **);
+#endif
+extern Lisp_Object tty_menu_show (struct frame *, int, int, int,
+                                 Lisp_Object, const char **);
 extern ptrdiff_t menu_item_width (const unsigned char *);
 #endif /* MENU_H */