diff --git a/collects/mred/private/wx/gtk/frame.rkt b/collects/mred/private/wx/gtk/frame.rkt index b3b1d3fa65..ec3d4e5e50 100644 --- a/collects/mred/private/wx/gtk/frame.rkt +++ b/collects/mred/private/wx/gtk/frame.rkt @@ -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)))) diff --git a/collects/mred/private/wx/gtk/window.rkt b/collects/mred/private/wx/gtk/window.rkt index a8394b7626..27e36ff442 100644 --- a/collects/mred/private/wx/gtk/window.rkt +++ b/collects/mred/private/wx/gtk/window.rkt @@ -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))