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."