[swell-foop/arnaudb/code-improvements: 5/9] Use EventControllerKey.



commit 0beb13fffce04a9e1c131b42df6b80d8932a104c
Author: Arnaud Bonatti <arnaud bonatti gmail com>
Date:   Sat May 2 15:51:52 2020 +0200

    Use EventControllerKey.
    
    Bump Gtk requires version to 3.24.

 meson.build     |  2 +-
 src/window.vala | 27 +++++++++++++++++++--------
 2 files changed, 20 insertions(+), 9 deletions(-)
---
diff --git a/meson.build b/meson.build
index b802302..7d54a6b 100644
--- a/meson.build
+++ b/meson.build
@@ -21,7 +21,7 @@ glib_min_version = '2.36'
 glib_dep = dependency('glib-2.0', version: '>= ' + glib_min_version)
 gmodule_dep = dependency('gmodule-2.0')
 gobject_dep = dependency('gobject-2.0')
-gtk_dep = dependency('gtk+-3.0', version: '>= 3.12')
+gtk_dep = dependency('gtk+-3.0', version: '>= 3.24')
 clutter_dep = dependency('clutter-1.0', version: '>= 1.14.0')
 clutter_gtk_dep = dependency('clutter-gtk-1.0', version: '>= 1.5.0')
 
diff --git a/src/window.vala b/src/window.vala
index 9a5946a..2f39e91 100644
--- a/src/window.vala
+++ b/src/window.vala
@@ -70,7 +70,7 @@ private class SwellFoopWindow : ApplicationWindow
         else
         {
             main_box.pack_start (clutter_embed, true, true);
-            key_press_event.connect (key_press_event_cb);
+            init_keyboard ();
         }
     }
 
@@ -128,7 +128,7 @@ private class SwellFoopWindow : ApplicationWindow
               stack.set_transition_duration (500);
              /* */
             stack.set_visible_child_name ("game");
-            key_press_event.connect (key_press_event_cb);
+            init_keyboard ();
             settings.set_boolean ("first-run", false);
         });
         return stack;
@@ -257,29 +257,40 @@ private class SwellFoopWindow : ApplicationWindow
     * * keyboard
     \*/
 
-    private bool key_press_event_cb (Widget widget, Gdk.EventKey event)
+    private EventControllerKey key_controller;          // for keeping in memory
+
+    private inline void init_keyboard ()
+    {
+        key_controller = new EventControllerKey (this);
+        key_controller.key_pressed.connect (on_key_pressed);
+    }
+
+    private inline bool on_key_pressed (EventControllerKey _key_controller, uint keyval, uint keycode, 
Gdk.ModifierType state)
     {
-        switch (event.keyval)
+        switch (keyval)
         {
             case Gdk.Key.F2:
                 new_game ();
                 break;
+
             case Gdk.Key.Up:
-                view.cursor_move (0, 1);
+                view.cursor_move ( 0,  1);
                 break;
             case Gdk.Key.Down:
-                view.cursor_move (0, -1);
+                view.cursor_move ( 0, -1);
                 break;
             case Gdk.Key.Left:
-                view.cursor_move (-1, 0);
+                view.cursor_move (-1,  0);
                 break;
             case Gdk.Key.Right:
-                view.cursor_move (1, 0);
+                view.cursor_move ( 1,  0);
                 break;
+
             case Gdk.Key.space:
             case Gdk.Key.Return:
                 view.cursor_click ();
                 return true; //handle this one to avoid activating the toolbar button
+
             default:
                 break;
         }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]