 
 :: on-button-press ( win event user-data -- ? )
     win window :> world
-    event mouse-event>gesture :> ( modifiers button loc )
-    button {
-        { 8 [ ] }
-        { 9 [ ] }
-        [ modifiers swap <button-down> loc world
-          send-button-down ]
-    } case t ;
+    event type>> GDK_BUTTON_PRESS = [
+        event button>> {
+            { 8 [ ] }
+            { 9 [ ] }
+            [
+                event event-modifiers swap <button-down>
+                event event-loc
+                world
+                send-button-down
+            ]
+        } case
+    ] when t ;
 
 :: on-button-release ( win event user-data -- ? )
     win window :> world
-    event mouse-event>gesture :> ( modifiers button loc )
-    button {
-        { 8 [ world left-action send-action ] }
-        { 9 [ world right-action send-action ] }
-        [ modifiers swap <button-up> loc world
-          send-button-up ]
-    } case t ;
+    event type>> GDK_BUTTON_RELEASE = [
+        event button>> {
+            { 8 [ world left-action send-action ] }
+            { 9 [ world right-action send-action ] }
+            [
+                event event-modifiers swap <button-up>
+                event event-loc
+                world
+                send-button-up
+            ]
+        } case
+    ] when t ;
 
 : on-scroll ( win event user-data -- ? )
     drop swap [


: key-event>gesture ( event -- mods sym/f action? )
    [ event-modifiers ] [ key-sym ] bi ;
  
: on-key-press ( win event user-data -- ? )
    drop swap [ key-event>gesture <key-down> ] [ window ] bi*
    propagate-key-gesture t ;

    win im <window-handle> world handle<<

    world win register-window

    win world [ window-loc>> auto-position ]
    [ dim>> first2 gtk_window_set_default_size ] 2bi

    win "factor" "Factor" [ utf8 string>alien ] bi@
    gtk_window_set_wmclass

    world configure-gl

    win gtk_widget_realize
    win world window-controls>> configure-window-controls

    win im configure-im
    win connect-user-input-signals
    win connect-win-state-signals
