branch: externals/filechooser
commit a404666dbe09fdfacb9321bd6cb5e4cd4078c4c3
Author: Rahguzar <rahgu...@mailbox.org>
Commit: Rahguzar <rahgu...@mailbox.org>

    Abort on keyboard-quit and the event delete-frame
---
 filechooser.el | 27 +++++++++++++++------------
 1 file changed, 15 insertions(+), 12 deletions(-)

diff --git a/filechooser.el b/filechooser.el
index 48c5bc8194..8932acb8c7 100644
--- a/filechooser.el
+++ b/filechooser.el
@@ -36,6 +36,7 @@
 
 (defvar-keymap filechooser-mininuffer-map
   "C-f" #'filechooser-toggle-filter
+  "<remap> <keyboard-quit>" #'filechooser-abort
   "<remap> <abort-recursive-edit>" #'filechooser-abort
   "<remap> <abort-minibuffers>" #'filechooser-abort)
 
@@ -214,18 +215,20 @@ MINIBUFFER is the value of minibuffer frame paramter."
   (declare (indent 1))
   (let ((framevar (make-symbol "frame")))
     `(let ((minibuffer-completing-file-name ,(eq minibuffer 'only)))
-      (if filechooser-use-popup-frame
-         (let ((,framevar (make-frame '((name . ,(if (eq minibuffer 'only)
-                                                     "filechooser-miniframe"
-                                                   "filechooser-frame"))
-                                        (minibuffer . ,minibuffer)))))
-           (unwind-protect
-               (with-demoted-errors "%S"
-                 (with-selected-frame ,framevar
-                   ,@body))
-             (delete-frame ,framevar 'force)))
-       (with-demoted-errors "%S"
-         ,@body)))))
+       (if filechooser-use-popup-frame
+           (let ((,framevar (make-frame '((name . ,(if (eq minibuffer 'only)
+                                                       "filechooser-miniframe"
+                                                     "filechooser-frame"))
+                                          (minibuffer . ,minibuffer))))
+                 (special-event-map (define-keymap :parent special-event-map
+                                      "<delete-frame>" #'filechooser-abort)))
+             (unwind-protect
+                 (with-demoted-errors "%S"
+                   (with-selected-frame ,framevar
+                     ,@body))
+               (delete-frame ,framevar 'force)))
+         (with-demoted-errors "%S"
+           ,@body)))))
 
 (defun filechooser-abort ()
   "Abort the file selection."

Reply via email to