File tree Expand file tree Collapse file tree 4 files changed +32
-2
lines changed
gui-lib/mred/private/wx/cocoa Expand file tree Collapse file tree 4 files changed +32
-2
lines changed Original file line number Diff line number Diff line change 39
39
(define NSOtherMouseDown 25 )
40
40
(define NSOtherMouseUp 26 )
41
41
(define NSOtherMouseDragged 27 )
42
+ (define NSEventTypeKeyDown 10 )
42
43
(define NSEventTypeGesture 29 )
43
44
(define NSEventTypeMagnify 30 )
44
45
(define NSEventTypeSwipe 31 )
Original file line number Diff line number Diff line change 863
863
(when f
864
864
(send f fixup-locations-children))))))
865
865
866
+ (set-post-key-callback-hook!
867
+ (lambda (evt)
868
+ (key-event-received #f )
869
+ (and root-fake-frame
870
+ (lambda (evt)
871
+ (unless (key-event-received)
872
+ (tellv (send root-fake-frame get-cocoa) keyDown: evt))))))
873
+
866
874
;; ----------------------------------------
867
875
;; As of Mac OS 10.14, NSWindow-specific flushing control is no longer
868
876
;; supported. It seems to have been removed as a way of simplifying the
Original file line number Diff line number Diff line change 24
24
set-front-hook!
25
25
set-menu-bar-hooks!
26
26
set-mouse-or-key-hook!
27
+ set-post-key-callback-hook!
27
28
set-fixup-window-locations!
28
29
post-dummy-event
29
30
426
427
(define front-hook (lambda () (values #f #f )))
427
428
(define (set-front-hook! proc) (set! front-hook proc))
428
429
430
+ (define get-post-key-callback (lambda () #f ))
431
+ (define (set-post-key-callback-hook! proc) (set! get-post-key-callback proc))
432
+
429
433
(define in-menu-bar-range? (lambda (p flipped?) #f ))
430
434
(define (set-menu-bar-hooks! r?)
431
435
(set! in-menu-bar-range? r?))
525
529
(lambda ()
526
530
;; in atomic mode
527
531
(with-autorelease
528
- (tellv app sendEvent: evt)
529
- (release evt))))
532
+ (define post-key
533
+ (and (not w)
534
+ (= NSEventTypeKeyDown (tell #:type _NSUInteger evt type))
535
+ (not (tell app keyWindow))
536
+ (get-post-key-callback evt)))
537
+ (tellv app sendEvent: evt)
538
+ (when post-key (post-key evt))
539
+ (release evt))))
530
540
(when mouse-or-key?
531
541
(set! avoid-mouse-key-until #f )))))
532
542
(tellv app sendEvent: evt)))
Original file line number Diff line number Diff line change 26
26
KeyMouseTextResponder
27
27
CursorDisplayer
28
28
29
+ key-event-received
30
+
29
31
queue-window-event
30
32
queue-window-refresh-event
31
33
queue-window*-event
302
304
(let ([inserted-text (box #f )]
303
305
[set-mark (box #f )]
304
306
[had-saved-text? (and (send wx get-saved-marked) #t )])
307
+ (key-event-received #t )
305
308
(when down?
306
309
;; Calling `interpretKeyEvents:' allows key combinations to be
307
310
;; handled, such as option-e followed by e to produce é. The
1111
1114
1112
1115
;; ----------------------------------------
1113
1116
1117
+ (define key-event-received? #f )
1118
+ (define key-event-received
1119
+ (case-lambda
1120
+ [() key-event-received?]
1121
+ [(received?) (set! key-event-received? received?)]))
1122
+
1123
+ ;; ----------------------------------------
1124
+
1114
1125
(define (queue-window-event wx thunk )
1115
1126
(queue-event (send wx get-eventspace) thunk ))
1116
1127
You can’t perform that action at this time.
0 commit comments