ui.backend.gtk: on-key-press and on-key-release can be merged into one
on-key-press/release handlerdb4
parent
4851a5e14d
commit
0795d21e46
|
@ -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
|
|
@ -202,16 +202,13 @@ CONSTANT: action-key-codes
|
||||||
keyval>> dup action-key-codes at [ t ]
|
keyval>> dup action-key-codes at [ t ]
|
||||||
[ gdk_keyval_to_unicode [ f ] [ 1string ] if-zero f ] ?if ;
|
[ gdk_keyval_to_unicode [ f ] [ 1string ] if-zero f ] ?if ;
|
||||||
|
|
||||||
: key-event>gesture ( event -- mods sym/f action? )
|
: key-event>gesture ( event -- key-gesture )
|
||||||
[ event-modifiers ] [ key-sym ] bi ;
|
[ event-modifiers ] [ key-sym ] [
|
||||||
|
type>> GDK_KEY_PRESS = [ <key-down> ] [ <key-up> ] if
|
||||||
|
] tri ;
|
||||||
|
|
||||||
: on-key-press ( win event user-data -- ? )
|
: on-key-press/release ( win event user-data -- ? )
|
||||||
drop swap [ key-event>gesture <key-down> ] [ window ] bi*
|
drop swap [ key-event>gesture ] [ window ] bi* propagate-key-gesture t ;
|
||||||
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-focus-in ( win event user-data -- ? )
|
: on-focus-in ( win event user-data -- ? )
|
||||||
2drop window focus-world t ;
|
2drop window focus-world t ;
|
||||||
|
@ -235,7 +232,6 @@ CONSTANT: action-key-codes
|
||||||
] when* ;
|
] when* ;
|
||||||
|
|
||||||
:: connect-user-input-signals ( win -- )
|
:: connect-user-input-signals ( win -- )
|
||||||
win events-mask gtk_widget_add_events
|
|
||||||
win "motion-notify-event" [ on-motion yield ]
|
win "motion-notify-event" [ on-motion yield ]
|
||||||
GtkWidget:motion-notify-event connect-signal
|
GtkWidget:motion-notify-event connect-signal
|
||||||
win "leave-notify-event" [ on-leave yield ]
|
win "leave-notify-event" [ on-leave yield ]
|
||||||
|
@ -246,9 +242,9 @@ CONSTANT: action-key-codes
|
||||||
GtkWidget:button-release-event connect-signal
|
GtkWidget:button-release-event connect-signal
|
||||||
win "scroll-event" [ on-scroll yield ]
|
win "scroll-event" [ on-scroll yield ]
|
||||||
GtkWidget:scroll-event connect-signal
|
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
|
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
|
GtkWidget:key-release-event connect-signal
|
||||||
win "focus-in-event" [ on-focus-in yield ]
|
win "focus-in-event" [ on-focus-in yield ]
|
||||||
GtkWidget:focus-in-event connect-signal
|
GtkWidget:focus-in-event connect-signal
|
||||||
|
|
Loading…
Reference in New Issue