[gnome-nibbles/arnaudb/modernize-code: 2/58] Use EventControllerKey.



commit c82f2e3f9c8987630caa7e741442e3b2dfc37b37
Author: Arnaud Bonatti <arnaud bonatti gmail com>
Date:   Mon May 25 13:08:40 2020 +0200

    Use EventControllerKey.
    
    Bump Gtk required version to 3.24.

 meson.build            | 2 +-
 src/gnome-nibbles.vala | 9 ++++++---
 2 files changed, 7 insertions(+), 4 deletions(-)
---
diff --git a/meson.build b/meson.build
index 67ef113..b711e6b 100644
--- a/meson.build
+++ b/meson.build
@@ -23,7 +23,7 @@ gee_dep = dependency('gee-0.8')
 gio_dep = dependency('gio-2.0', version: '>= @0@'.format(glib_version))
 glib_dep = dependency('glib-2.0', version: '>= @0@'.format(glib_version))
 gsound_dep = dependency('gsound', version: '>= 1.0.2')
-gtk_dep = dependency('gtk+-3.0', version: '>= 3.18.0')
+gtk_dep = dependency('gtk+-3.0', version: '>= 3.24.0')
 libgnome_games_support_dep = dependency('libgnome-games-support-1')
 
 valac = meson.get_compiler('vala')
diff --git a/src/gnome-nibbles.vala b/src/gnome-nibbles.vala
index 081158c..16da176 100644
--- a/src/gnome-nibbles.vala
+++ b/src/gnome-nibbles.vala
@@ -170,11 +170,13 @@ public class Nibbles : Gtk.Application
         window = builder.get_object ("nibbles-window") as Gtk.ApplicationWindow;
         window.size_allocate.connect (size_allocate_cb);
         window.window_state_event.connect (window_state_event_cb);
-        window.key_press_event.connect (key_press_event_cb);
         window.set_default_size (settings.get_int ("window-width"), settings.get_int ("window-height"));
         if (settings.get_boolean ("window-is-maximized"))
             window.maximize ();
 
+        key_controller = new Gtk.EventControllerKey (window);
+        key_controller.key_pressed.connect (key_press_event_cb);
+
         headerbar = (Gtk.HeaderBar) builder.get_object ("headerbar");
         overlay = (Gtk.Overlay) builder.get_object ("main_overlay");
         new_game_button = (Gtk.Button) builder.get_object ("new_game_button");
@@ -303,9 +305,10 @@ public class Nibbles : Gtk.Application
      * your first key press ignored everytime by the start of a new level, thus
      * making your worm unresponsive to your command.
      */
-    private bool key_press_event_cb (Gtk.Widget widget, Gdk.EventKey event)
+    private Gtk.EventControllerKey key_controller;          // for keeping in memory
+    private bool key_press_event_cb (Gtk.EventControllerKey _key_controller, uint keyval, uint keycode, 
Gdk.ModifierType state)
     {
-        return game.handle_keypress (event.keyval);
+        return game.handle_keypress (keyval);
     }
 
     private void size_allocate_cb (Gtk.Allocation allocation)


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