Record unwind with clean_up_file_dialog.
* xterm.h: Declare x_menu_in_use, x_menu_set_in_use,
x_menu_wait_for_event.
* xmenu.c (x_menu_in_use, x_menu_set_in_use): New functions.
+2004-11-14 Jan Dj\e,Ad\e(Brv <jan.h.d@swipnet.se>
+
+ * gtkutil.c (pop_down_file_dialog): Add BLOCK_INPUT.
+
+ * xfns.c (Fx_file_dialog): Call x_menu_in_use and x_menu_set_in_use.
+ Record unwind with clean_up_file_dialog.
+
+ * xterm.h: Declare x_menu_in_use, x_menu_set_in_use,
+ x_menu_wait_for_event.
+
+ * xmenu.c (x_menu_in_use, x_menu_set_in_use): New functions.
+
2004-11-13 Jan Dj\e,Ad\e(Brv <jan.h.d@swipnet.se>
* gtkutil.c (xg_file_sel_ok, xg_file_sel_cancel)
#ifndef MSDOS
+/* Return non-zero if a dialog or popup menu is already popped up. */
+
+int
+x_menu_in_use ()
+{
+ return ! NILP (menu_items_inuse);
+}
+
+/* Set menu_items_inuse so no other popup menu or dialog is created. */
+
+void
+x_menu_set_in_use (in_use)
+ int in_use;
+{
+ menu_items_inuse = in_use ? Qt : Qnil;
+}
+
/* Wait for an X event to arrive or for a timer to expire. */
-static void
+void
x_menu_wait_for_event (void *data)
{
extern EMACS_TIME timer_check P_ ((int));
/* Defined in xmenu.c */
+extern int x_menu_in_use P_ ((void));
+extern void x_menu_set_in_use P_ ((int));
+extern void x_menu_wait_for_event P_ ((void *data));
extern void x_activate_menubar P_ ((struct frame *));
extern int popup_activated P_ ((void));
extern void initialize_frame_menubar P_ ((struct frame *));