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:
parent
64c4456dc0
commit
88bac3bab9
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue
Block a user