[gnome-clocks] window: Rewrite keyboard event handling
- From: Bilal Elmoussaoui <bilelmoussaoui src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-clocks] window: Rewrite keyboard event handling
- Date: Fri, 7 Jan 2022 17:23:43 +0000 (UTC)
commit 4ffbb861e9c541bbaffe5c4b8950feba94102027
Author: Yetizone <andreii lisita gmail com>
Date: Sun Jan 10 17:53:53 2021 +0200
window: Rewrite keyboard event handling
For keyboard event handling we currently use Gtk.BindingSet, Gtk.BindingEntry
and the "key-press-event" signal. These are no longer available in GTK4.
Instead use Gtk.Widget.add_binding() and Gtk.Widget.add_binding_action()
src/window.vala | 80 +++++++++++++++++++++++----------------------------------
1 file changed, 32 insertions(+), 48 deletions(-)
---
diff --git a/src/window.vala b/src/window.vala
index 84b233a1..4d3c71af 100644
--- a/src/window.vala
+++ b/src/window.vala
@@ -60,6 +60,32 @@ public class Window : Adw.ApplicationWindow {
private bool inited = false;
+ construct {
+ // plain ctrl+page_up/down is easten by the scrolled window...
+ add_binding_action (Gdk.Key.Page_Up,
+ Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.ALT_MASK,
+ "change-page", "(i)", 0);
+
+ add_binding_action (Gdk.Key.Page_Down,
+ Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.ALT_MASK,
+ "change-page", "(i)", 1);
+
+ add_binding_action (Gdk.Key.@1,
+ Gdk.ModifierType.ALT_MASK,
+ "set-page", "(s)", "world");
+ add_binding_action (Gdk.Key.@2,
+ Gdk.ModifierType.ALT_MASK,
+ "set-page", "(s)", "alarm");
+ add_binding_action (Gdk.Key.@3,
+ Gdk.ModifierType.ALT_MASK,
+ "set-page", "(s)", "stopwatch");
+ add_binding_action (Gdk.Key.@4,
+ Gdk.ModifierType.ALT_MASK,
+ "set-page", "(s)", "timer");
+
+ add_binding (Gdk.Key.Escape, 0, escape_key_pressed, null);
+ }
+
public Window (Application app) {
Object (application: app);
@@ -119,41 +145,6 @@ public class Window : Adw.ApplicationWindow {
stack.child_set_property (timer, "needs-attention", timer.is_running);
});
- unowned Gtk.BindingSet binding_set = Gtk.BindingSet.by_class (get_class ());
-
- // plain ctrl+page_up/down is easten by the scrolled window...
- Gtk.BindingEntry.add_signal (binding_set,
- Gdk.Key.Page_Up,
- Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.MOD1_MASK,
- "change-page", 1,
- typeof (int), 0);
- Gtk.BindingEntry.add_signal (binding_set,
- Gdk.Key.Page_Down,
- Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.MOD1_MASK,
- "change-page", 1,
- typeof (int), 1);
-
- Gtk.BindingEntry.add_signal (binding_set,
- Gdk.Key.@1,
- Gdk.ModifierType.MOD1_MASK,
- "set-page", 1,
- typeof (string), "world");
- Gtk.BindingEntry.add_signal (binding_set,
- Gdk.Key.@2,
- Gdk.ModifierType.MOD1_MASK,
- "set-page", 1,
- typeof (string), "alarm");
- Gtk.BindingEntry.add_signal (binding_set,
- Gdk.Key.@3,
- Gdk.ModifierType.MOD1_MASK,
- "set-page", 1,
- typeof (string), "stopwatch");
- Gtk.BindingEntry.add_signal (binding_set,
- Gdk.Key.@4,
- Gdk.ModifierType.MOD1_MASK,
- "set-page", 1,
- typeof (string), "timer");
-
Gtk.StyleContext style = get_style_context ();
if (Config.PROFILE == "Devel") {
style.add_class ("devel");
@@ -239,23 +230,16 @@ public class Window : Adw.ApplicationWindow {
return hide_on_delete ();
}
- public override bool key_press_event (Gdk.EventKey event) {
- uint keyval;
+ private bool escape_key_pressed () {
bool handled = false;
- if (((Gdk.Event)(event)).get_keyval (out keyval) && keyval == Gdk.Key.Escape) {
- if (world_leaflet.visible_child == main_view) {
- handled = ((Clock) stack.visible_child).escape_pressed ();
- } else {
- world_leaflet.navigate (Adw.NavigationDirection.BACK);
- }
- }
-
- if (handled) {
- return true;
+ if (world_leaflet.visible_child == main_view) {
+ handled = ((Clock) stack.visible_child).escape_pressed ();
+ } else {
+ world_leaflet.navigate (Adw.NavigationDirection.BACK);
}
- return base.key_press_event (event);
+ return handled;
}
public override bool button_release_event (Gdk.EventButton event) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]