[balsa/wip/gtk4: 286/351] ab-main: Use a GtkEventControllerKey



commit bc5ad6b04bcf43f46dd8563803991dc70a0a7774
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date:   Sat Apr 21 20:19:15 2018 -0400

    ab-main: Use a GtkEventControllerKey
    
    …and its "key-pressed" event instead of GtkWidget's "key-press-event",
    which is going away some time.

 src/ab-main.c |   18 ++++++++++++++----
 1 files changed, 14 insertions(+), 4 deletions(-)
---
diff --git a/src/ab-main.c b/src/ab-main.c
index 1e04bc4..0e53cce 100644
--- a/src/ab-main.c
+++ b/src/ab-main.c
@@ -68,12 +68,16 @@ struct ABMainWindow {
     LibBalsaAddress *displayed_address;
 
     GMenu *file_menu;
+
+    GtkEventController *key_controller;
 } contacts_app;
 
 
 static void
 bab_cleanup(void)
 {
+    g_object_unref(contacts_app.key_controller);
+
     gtk_main_quit();
 }
 
@@ -926,12 +930,17 @@ bab_get_filter_box(void)
                              button);
     return search_hbox;
 }
+
 static gboolean
-ew_key_pressed(GtkEntry * entry, GdkEvent * event, struct ABMainWindow *abmw)
+ew_key_pressed(GtkEventControllerKey *key_controller,
+               guint                  keyval,
+               guint                  keycode,
+               GdkModifierType        state,
+               gpointer               user_data)
 {
-    guint keyval;
+    struct ABMainWindow *abmw = user_data;
 
-    if (!(gdk_event_get_keyval(event, &keyval) && keyval == GDK_KEY_Escape))
+    if (keyval != GDK_KEY_Escape)
        return FALSE;
 
     gtk_button_clicked(GTK_BUTTON(abmw->cancel_button));
@@ -994,7 +1003,8 @@ bab_window_new(GtkApplication * application)
     g_signal_connect(G_OBJECT(find_entry), "changed",
                     G_CALLBACK(balsa_ab_window_find), ab);
     */
-    g_signal_connect(wnd, "key-press-event",
+    contacts_app.key_controller = gtk_event_controller_key_new(wnd);
+    g_signal_connect(contacts_app.key_controller, "key-pressed",
                     G_CALLBACK(ew_key_pressed), &contacts_app);
     gtk_window_set_default_size(GTK_WINDOW(wnd), 500, 400);
 


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