]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix invocation of File->Close from the menu bar
authorEli Zaretskii <eliz@gnu.org>
Sun, 19 Feb 2023 09:29:32 +0000 (11:29 +0200)
committerEli Zaretskii <eliz@gnu.org>
Sun, 19 Feb 2023 09:29:32 +0000 (11:29 +0200)
* lisp/simple.el (kill-buffer--possibly-save): Don't request
LONG-FORM from 'read-multiple-choice' if GUI dialog should be
used.
* lisp/emacs-lisp/rmc.el (read-multiple-choice): Doc fix.
(read-multiple-choice--short-answers): Don't append "?" to
CHOICES and don't display the prompt in the echo area if GUI
dialog is used.  Use 'use-dialog-box-p'.  (Bug#61553)

lisp/emacs-lisp/rmc.el
lisp/simple.el

index 542c96512f55323bb5856c95500157e9ba424581..bfd7434be9a651486cf5d1dad66adb147b2f6d12 100644 (file)
@@ -162,8 +162,10 @@ dialogs.  Otherwise, the function will always use text-mode dialogs.
 
 The return value is the matching entry from the CHOICES list.
 
-If LONG-FORM, do a `completing-read' over the NAME elements in
-CHOICES instead.
+If LONG-FORM is non-nil, do a `completing-read' over the NAME elements
+in CHOICES instead.  In this case, GUI dialog is not used, regardless
+of the value of `use-dialog-box' and whether the function was invoked
+via a mouse gesture.
 
 Usage example:
 
@@ -177,8 +179,9 @@ Usage example:
      prompt choices help-string show-help)))
 
 (defun read-multiple-choice--short-answers (prompt choices help-string show-help)
-  (let* ((prompt-choices
-          (if show-help choices (append choices '((?? "?")))))
+  (let* ((dialog-p (use-dialog-box-p))
+         (prompt-choices
+          (if (or show-help dialog-p) choices (append choices '((?? "?")))))
          (altered-names (mapcar #'rmc--add-key-description prompt-choices))
          (full-prompt
           (format
@@ -192,16 +195,14 @@ Usage example:
             (setq buf (rmc--show-help prompt help-string show-help
                                       choices altered-names)))
        (while (not tchar)
-         (message "%s%s"
-                   (if wrong-char
-                       "Invalid choice.  "
-                     "")
-                   full-prompt)
+          (unless dialog-p
+           (message "%s%s"
+                     (if wrong-char
+                         "Invalid choice.  "
+                       "")
+                     full-prompt))
           (setq tchar
-                (if (and (display-popup-menus-p)
-                         last-input-event ; not during startup
-                         (consp last-nonmenu-event)
-                         use-dialog-box)
+                (if dialog-p
                     (x-popup-dialog
                      t
                      (cons prompt
index c2d10b4dcb4f0c42032c5fa79ca0922ddfc30808..27aeb2fa8ccd54a21e40141f3cd70c0777062ded 100644 (file)
@@ -10801,7 +10801,8 @@ If the buffer doesn't exist, create it first."
            '((?y "yes" "kill buffer without saving")
              (?n "no" "exit without doing anything")
              (?s "save and then kill" "save the buffer and then kill it"))
-           nil nil (not use-short-answers)))))
+           nil nil (and (not use-short-answers)
+                        (not (use-dialog-box-p)))))))
     (if (equal response "no")
         nil
       (unless (equal response "yes")