emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

feature/pgtk de7b0da 049/100: use pgtk_menu_set_in_use.


From: Yuuki Harano
Subject: feature/pgtk de7b0da 049/100: use pgtk_menu_set_in_use.
Date: Tue, 24 Nov 2020 08:02:35 -0500 (EST)

branch: feature/pgtk
commit de7b0daf2b70648c968356036110cbe8c0c3188c
Author: Yuuki Harano <masm+github@masm11.me>
Commit: Jeff Walsh <jeff.walsh@drtusers-MacBook-Pro.local>

    use pgtk_menu_set_in_use.
    
        * ../src/pgtkfns.c:
        (Fx_file_dialog, clean_up_dialog):
    
        * src/pgtkmenu.c (pgtk_menu_wait_for_event):
---
 src/pgtkfns.c  | 13 +++++++++++--
 src/pgtkmenu.c |  2 +-
 src/pgtkterm.h |  3 +++
 3 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/src/pgtkfns.c b/src/pgtkfns.c
index 69a7430..b7d34d5 100644
--- a/src/pgtkfns.c
+++ b/src/pgtkfns.c
@@ -2916,6 +2916,12 @@ visible.  */)
   return Qnil;
 }
 
+static void
+clean_up_dialog (void)
+{
+  pgtk_menu_set_in_use (false);
+}
+
 DEFUN ("x-file-dialog", Fx_file_dialog, Sx_file_dialog, 2, 5, 0,
        doc: /* Read file name, prompting with PROMPT in directory DIR.
 Use a file selection dialog.  Select DEFAULT-FILENAME in the dialog's file
@@ -2940,14 +2946,17 @@ value of DIR as in previous invocations; this is 
standard MS Windows behavior.
 
   check_window_system (f);
 
+  if (popup_activated ())
+    error ("Trying to use a menu from within a menu-entry");
+  else
+    pgtk_menu_set_in_use (true);
+
   CHECK_STRING (prompt);
   CHECK_STRING (dir);
 
   /* Prevent redisplay.  */
   specbind (Qinhibit_redisplay, Qt);
-#if 0
   record_unwind_protect_void (clean_up_dialog);
-#endif
 
   block_input ();
 
diff --git a/src/pgtkmenu.c b/src/pgtkmenu.c
index b946220..6f4195d 100644
--- a/src/pgtkmenu.c
+++ b/src/pgtkmenu.c
@@ -69,7 +69,7 @@ pgtk_menu_set_in_use (bool in_use)
 
 /* Wait for an X event to arrive or for a timer to expire.  */
 
-void
+static void
 pgtk_menu_wait_for_event (void *data)
 {
   struct timespec next_time = timer_check (), *ntp;
diff --git a/src/pgtkterm.h b/src/pgtkterm.h
index 73e04b7..e740318 100644
--- a/src/pgtkterm.h
+++ b/src/pgtkterm.h
@@ -610,6 +610,9 @@ extern struct pgtk_display_info *check_pgtk_display_info 
(Lisp_Object object);
 
 extern void pgtk_default_font_parameter (struct frame *f, Lisp_Object parms);
 
+extern void pgtk_menu_set_in_use (bool in_use);
+
+
 extern void pgtk_enqueue_string(struct frame *f, gchar *str);
 extern void pgtk_enqueue_preedit(struct frame *f, Lisp_Object image_data);
 extern void pgtk_im_focus_in(struct frame *f);



reply via email to

[Prev in Thread] Current Thread [Next in Thread]