add keyboard shortcuts to unsaved dialog warning on mac os x

closes PR 12927
closes PR 10708
closes PR 8996

original commit: 64fd649ee573c73499566b7cbb77271842a33ab7
This commit is contained in:
Robby Findler 2014-06-15 04:12:11 -05:00
parent 64c4456dc0
commit 88bac3bab9

View File

@ -230,9 +230,30 @@
(λ () (thunk)) (λ () (thunk))
(λ () (cursor-off))))]))) (λ () (cursor-off))))])))
(define unsaved-warning (define (unsaved-warning filename action-anyway [can-save-now? #f] [parent #f] [cancel? #t])
(lambda (filename action-anyway (can-save-now? #f) (parent #f) [cancel? #t]) (define key-closed #f)
(let ([mb-res (message-box/custom (define (unsaved-warning-mixin %)
(class %
(inherit show)
(define/override (on-subwindow-char receiver evt)
(define (is-menu-key? char)
(and (send evt get-meta-down)
(equal? (send evt get-key-code) char)))
(cond
[(is-menu-key? #\d)
(set! key-closed 'continue)
(show #f)]
[(is-menu-key? #\s)
(set! key-closed 'save)
(show #f)]
[(is-menu-key? #\c)
(set! key-closed 'cancel)
(show #f)]
[else
(super on-subwindow-char receiver evt)]))
(super-new)))
(define mb-res
(message-box/custom
(string-constant warning) (string-constant warning)
(format (string-constant file-is-not-saved) filename) (format (string-constant file-is-not-saved) filename)
(string-constant save) (string-constant save)
@ -242,11 +263,15 @@
(if can-save-now? (if can-save-now?
'(default=1 caution) '(default=1 caution)
'(default=2 caution)) '(default=2 caution))
2)]) 2
#:dialog-mixin (if (equal? (system-type) 'macosx)
unsaved-warning-mixin
values)))
(or key-closed
(case mb-res (case mb-res
[(1) 'save] [(1) 'save]
[(2) 'cancel] [(2) 'cancel]
[(3) 'continue])))) [(3) 'continue])))
(define get-choice (define get-choice
(lambda (message (lambda (message