Gtk: adjust handling of composed input

Intended to fix #29
This commit is contained in:
Matthew Flatt 2016-03-10 13:10:11 -07:00
parent cf2859049a
commit c4ef1829fc

View File

@ -269,28 +269,30 @@
(or (or
(map-key-code kv) (map-key-code kv)
(integer->char (gdk_keyval_to_unicode kv))))] (integer->char (gdk_keyval_to_unicode kv))))]
[key-code (if scroll? [key-code (cond
(let ([dir (GdkEventScroll-direction event)]) [scroll?
(let ([dir (GdkEventScroll-direction event)])
(cond
[(= dir GDK_SCROLL_UP) 'wheel-up]
[(= dir GDK_SCROLL_DOWN) 'wheel-down]
[(= dir GDK_SCROLL_LEFT) 'wheel-left]
[(= dir GDK_SCROLL_RIGHT) 'wheel-right]
[(= dir GDK_SCROLL_SMOOTH)
(define-values (dx dy) (gdk_event_get_scroll_deltas event))
(cond (cond
[(= dir GDK_SCROLL_UP) 'wheel-up] [(positive? dy) 'wheel-down]
[(= dir GDK_SCROLL_DOWN) 'wheel-down] [(negative? dy) 'wheel-up]
[(= dir GDK_SCROLL_LEFT) 'wheel-left] [(positive? dx) 'wheel-right]
[(= dir GDK_SCROLL_RIGHT) 'wheel-right] [(negative? dx) 'wheel-left]
[(= dir GDK_SCROLL_SMOOTH) [else #f])]
(define-values (dx dy) (gdk_event_get_scroll_deltas event)) [else #f]))]
(cond [(and (string? im-str)
[(positive? dy) 'wheel-down] (= 1 (string-length im-str)))
[(negative? dy) 'wheel-up] (string-ref im-str 0)]
[(positive? dx) 'wheel-right] [else
[(negative? dx) 'wheel-left] (keyval->code (GdkEventKey-keyval event))])]
[else #f])]
[else #f]))
(keyval->code (GdkEventKey-keyval event)))]
[k (new key-event% [k (new key-event%
[key-code (if (and (string? im-str) [key-code key-code]
(= 1 (string-length im-str)))
(string-ref im-str 0)
key-code)]
[shift-down (bit? modifiers GDK_SHIFT_MASK)] [shift-down (bit? modifiers GDK_SHIFT_MASK)]
[control-down (bit? modifiers GDK_CONTROL_MASK)] [control-down (bit? modifiers GDK_CONTROL_MASK)]
[meta-down (bit? modifiers GDK_MOD1_MASK)] [meta-down (bit? modifiers GDK_MOD1_MASK)]