racket/gui gtk: catch key events at frame level
In case no subwindow within a frame can accept the keyboard focus, now the frame itself can accept them (for consumption by `on-subwindow-char').
This commit is contained in:
parent
d0043402e8
commit
a80e04136b
|
@ -179,6 +179,15 @@
|
|||
(gtk_widget_show panel-gtk)
|
||||
(connect-enter-and-leave gtk)
|
||||
|
||||
;; Enable key events on the panel to catch events
|
||||
;; that would otherwise go undelivered:
|
||||
(set-gtk-object-flags! panel-gtk
|
||||
(bitwise-ior (get-gtk-object-flags panel-gtk)
|
||||
GTK_CAN_FOCUS))
|
||||
(gtk_widget_add_events panel-gtk (bitwise-ior GDK_KEY_PRESS_MASK
|
||||
GDK_KEY_RELEASE_MASK))
|
||||
(connect-key panel-gtk)
|
||||
|
||||
(unless is-dialog?
|
||||
(gtk_window_set_icon_list gtk (cdr (force icon-pixbufs+glist))))
|
||||
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
gtk_widget_set_sensitive
|
||||
|
||||
connect-focus
|
||||
connect-key
|
||||
connect-key-and-mouse
|
||||
connect-enter-and-leave
|
||||
do-button-event
|
||||
|
@ -302,9 +303,12 @@
|
|||
(connect-enter gtk)
|
||||
(connect-leave gtk))
|
||||
|
||||
(define (connect-key-and-mouse gtk [skip-press? #f])
|
||||
(define (connect-key gtk)
|
||||
(connect-key-press gtk)
|
||||
(connect-key-release gtk)
|
||||
(connect-key-release gtk))
|
||||
|
||||
(define (connect-key-and-mouse gtk [skip-press? #f])
|
||||
(connect-key gtk)
|
||||
(connect-scroll gtk)
|
||||
(connect-button-press gtk)
|
||||
(unless skip-press? (connect-button-release gtk))
|
||||
|
|
Loading…
Reference in New Issue
Block a user