[gnome-mines/arnaudb/wip/gtk4: 2/36] Use EventControllerKey.
- From: Arnaud B. <arnaudb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-mines/arnaudb/wip/gtk4: 2/36] Use EventControllerKey.
- Date: Sun, 26 Apr 2020 13:02:08 +0000 (UTC)
commit 5ed76816e5343cd6ac22a9ce8278e1e791d6fb7e
Author: Arnaud Bonatti <arnaud bonatti gmail com>
Date: Tue Mar 31 15:48:48 2020 +0200
Use EventControllerKey.
Bump Gtk required version to 3.24.
meson.build | 2 +-
src/minefield-view.vala | 32 ++++++++++++++++++++++----------
2 files changed, 23 insertions(+), 11 deletions(-)
---
diff --git a/meson.build b/meson.build
index e54d1c4..3287dc2 100644
--- a/meson.build
+++ b/meson.build
@@ -22,7 +22,7 @@ pkgdatadir = join_paths (datadir, 'gnome-mines')
# Dependencies
glib_dep = dependency ('glib-2.0', version: '>= 2.40.0')
gee_dep = dependency ('gee-0.8')
-gtk_dep = dependency ('gtk+-3.0', version: '>= 3.12')
+gtk_dep = dependency ('gtk+-3.0', version: '>= 3.24')
librsvg_dep = dependency ('librsvg-2.0', version: '>=2.32.0')
libgnome_games_support_dep = dependency ('libgnome-games-support-1')
libmath_dep = cc.find_library('m')
diff --git a/src/minefield-view.vala b/src/minefield-view.vala
index fcf7cfa..d399b95 100644
--- a/src/minefield-view.vala
+++ b/src/minefield-view.vala
@@ -140,6 +140,13 @@ public class MinefieldView : Gtk.Grid
}
}
+ private Gtk.EventControllerKey key_controller; // for keeping in memory
+
+ construct
+ {
+ init_keyboard ();
+ }
+
public MinefieldView (Settings settings)
{
this.settings = settings;
@@ -425,7 +432,14 @@ public class MinefieldView : Gtk.Grid
}
}
- public override bool key_press_event (Gdk.EventKey event)
+ private inline void init_keyboard () // called on construct
+ {
+ key_controller = new Gtk.EventControllerKey (this);
+ key_controller.key_pressed.connect (on_key_pressed);
+ key_controller.key_released.connect (on_key_released);
+ }
+
+ private inline bool on_key_pressed (Gtk.EventControllerKey _key_controller, uint keyval, uint keycode,
Gdk.ModifierType state)
{
/* Check for end cases and paused game */
if (minefield.exploded || minefield.is_complete || minefield.paused)
@@ -439,7 +453,7 @@ public class MinefieldView : Gtk.Grid
var y = keyboard_cursor.y;
mines[keyboard_cursor.x,keyboard_cursor.y].remove_class ("cursor");
- switch (event.keyval)
+ switch (keyval)
{
case Gdk.Key.Left:
case Gdk.Key.h:
@@ -466,7 +480,7 @@ public class MinefieldView : Gtk.Grid
{
selected.is_set = false;
- if ((event.state & Gdk.ModifierType.CONTROL_MASK) != 0)
+ if ((state & Gdk.ModifierType.CONTROL_MASK) != 0)
{
toggle_mark (keyboard_cursor.x, keyboard_cursor.y);
}
@@ -512,18 +526,18 @@ public class MinefieldView : Gtk.Grid
return true;
}
- public override bool key_release_event (Gdk.EventKey event)
+ private inline void on_key_released (Gtk.EventControllerKey _key_controller, uint keyval, uint keycode,
Gdk.ModifierType state)
{
- if (event.keyval != Gdk.Key.space)
- return false;
+ if (keyval != Gdk.Key.space)
+ return;
/* Check for end cases and paused game */
if (minefield.exploded || minefield.is_complete || minefield.paused)
- return false;
+ return;
/* Check that the user isn't currently using the mouse */
if (!selected.is_set || !keyboard_cursor.is_set)
- return false;
+ return;
if (minefield.is_cleared (selected.x, selected.y))
minefield.multi_release (selected.x, selected.y);
@@ -531,7 +545,5 @@ public class MinefieldView : Gtk.Grid
minefield.clear_mine (selected.x, selected.y);
selected.is_set = false;
-
- return false;
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]