From 49a50c549ff5543608044cea5d3d3b20ba207233 Mon Sep 17 00:00:00 2001 From: Valentin Villenave Date: Fri, 8 Oct 2021 11:28:23 +0200 Subject: [PATCH] Inhibit applet: enable keyboard use. --- applets/inhibit/inhibit-applet.c | 43 +++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/applets/inhibit/inhibit-applet.c b/applets/inhibit/inhibit-applet.c index 1b689211..ff6736f8 100644 --- a/applets/inhibit/inhibit-applet.c +++ b/applets/inhibit/inhibit-applet.c @@ -75,6 +75,8 @@ static void gpm_applet_update_icon (GpmInhibitApplet *applet); static void gpm_applet_size_allocate_cb (GtkWidget *widget, GdkRectangle *allocation);; static void gpm_applet_update_tooltip (GpmInhibitApplet *applet); static gboolean gpm_applet_click_cb (GpmInhibitApplet *applet, GdkEventButton *event); +static gboolean gpm_applet_key_cb (GpmInhibitApplet *applet, GdkEventKey *event); +static gboolean gpm_applet_switch_cb (GpmInhibitApplet *applet); static void gpm_applet_dialog_about_cb (GtkAction *action, gpointer data); static gboolean gpm_applet_cb (MatePanelApplet *_applet, const gchar *iid, gpointer data); static void gpm_applet_destroy_cb (GtkWidget *widget); @@ -237,7 +239,7 @@ gpm_applet_update_tooltip (GpmInhibitApplet *applet) * gpm_applet_click_cb: * @applet: Inhibit applet instance * - * pops and unpops + * toggle switch (through mouse button) **/ static gboolean gpm_applet_click_cb (GpmInhibitApplet *applet, GdkEventButton *event) @@ -246,7 +248,43 @@ gpm_applet_click_cb (GpmInhibitApplet *applet, GdkEventButton *event) if (event->button != 1) { return FALSE; } + return gpm_applet_switch_cb (applet); +} + +/** + * gpm_applet_key_cb: + * @applet: Inhibit applet instance + * + * toggle switch (through key press event) + **/ +static gboolean +gpm_applet_key_cb (GpmInhibitApplet *applet, GdkEventKey *event) +{ + switch (event->keyval) { + case GDK_KEY_KP_Enter: + case GDK_KEY_ISO_Enter: + case GDK_KEY_3270_Enter: + case GDK_KEY_Return: + case GDK_KEY_space: + case GDK_KEY_KP_Space: + gpm_applet_switch_cb (applet); + return TRUE; + default: + return FALSE; + break; + } + return FALSE; +} +/** + * gpm_applet_switch_cb: + * @applet: Inhibit applet instance + * + * pops and unpops + **/ +static gboolean +gpm_applet_switch_cb (GpmInhibitApplet *applet) +{ if (applet->cookie > 0) { g_debug ("uninhibiting %u", applet->cookie); gpm_applet_uninhibit (applet, applet->cookie); @@ -479,6 +517,9 @@ gpm_inhibit_applet_init (GpmInhibitApplet *applet) g_signal_connect (G_OBJECT(applet), "button-press-event", G_CALLBACK(gpm_applet_click_cb), NULL); + g_signal_connect (G_OBJECT(applet), "key-press-event", + G_CALLBACK(gpm_applet_key_cb), NULL); + g_signal_connect (G_OBJECT(applet), "size-allocate", G_CALLBACK(gpm_applet_size_allocate_cb), NULL);