ui.backend.gtk: on-key-press and on-key-release can be merged into one

on-key-press/release handler
db4
Björn Lindqvist 2015-10-20 17:13:40 +02:00
parent 4851a5e14d
commit 0795d21e46
2 changed files with 49 additions and 12 deletions

View File

@ -0,0 +1,41 @@
USING: alien.syntax classes.struct gdk.ffi tools.test ui.backend.gtk
ui.gestures ;
IN: ui.backend.gtk.tests
: gdk-key-release-event ( -- event )
S{ GdkEventKey
{ type 9 }
{ window ALIEN: 1672900 }
{ send_event 0 }
{ time 1332590199 }
{ state 17 }
{ keyval 72 }
{ length 1 }
{ string ALIEN: 1b25c80 }
{ hardware_keycode 43 }
{ group 0 }
{ is_modifier 0 }
} ;
: gdk-key-press-event ( -- event )
S{ GdkEventKey
{ type 8 }
{ window ALIEN: 16727e0 }
{ send_event 0 }
{ time 1332864912 }
{ state 16 }
{ keyval 65471 }
{ length 0 }
{ string ALIEN: 19c9700 }
{ hardware_keycode 68 }
{ group 0 }
{ is_modifier 0 }
} ;
{
T{ key-down f f "F2" }
T{ key-up f f "H" }
} [
gdk-key-press-event key-event>gesture
gdk-key-release-event key-event>gesture
] unit-test

View File

@ -202,16 +202,13 @@ CONSTANT: action-key-codes
keyval>> dup action-key-codes at [ t ]
[ gdk_keyval_to_unicode [ f ] [ 1string ] if-zero f ] ?if ;
: key-event>gesture ( event -- mods sym/f action? )
[ event-modifiers ] [ key-sym ] bi ;
: key-event>gesture ( event -- key-gesture )
[ event-modifiers ] [ key-sym ] [
type>> GDK_KEY_PRESS = [ <key-down> ] [ <key-up> ] if
] tri ;
: on-key-press ( win event user-data -- ? )
drop swap [ key-event>gesture <key-down> ] [ window ] bi*
propagate-key-gesture t ;
: on-key-release ( win event user-data -- ? )
drop swap [ key-event>gesture <key-up> ] [ window ] bi*
propagate-key-gesture t ;
: on-key-press/release ( win event user-data -- ? )
drop swap [ key-event>gesture ] [ window ] bi* propagate-key-gesture t ;
: on-focus-in ( win event user-data -- ? )
2drop window focus-world t ;
@ -235,7 +232,6 @@ CONSTANT: action-key-codes
] when* ;
:: connect-user-input-signals ( win -- )
win events-mask gtk_widget_add_events
win "motion-notify-event" [ on-motion yield ]
GtkWidget:motion-notify-event connect-signal
win "leave-notify-event" [ on-leave yield ]
@ -246,9 +242,9 @@ CONSTANT: action-key-codes
GtkWidget:button-release-event connect-signal
win "scroll-event" [ on-scroll yield ]
GtkWidget:scroll-event connect-signal
win "key-press-event" [ on-key-press yield ]
win "key-press-event" [ on-key-press/release yield ]
GtkWidget:key-press-event connect-signal
win "key-release-event" [ on-key-release yield ]
win "key-release-event" [ on-key-press/release yield ]
GtkWidget:key-release-event connect-signal
win "focus-in-event" [ on-focus-in yield ]
GtkWidget:focus-in-event connect-signal