[balsa/gtk4] application-helpers: Use a single controller
- From: Peter Bloomfield <peterb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [balsa/gtk4] application-helpers: Use a single controller
- Date: Wed, 12 Jan 2022 17:25:55 +0000 (UTC)
commit 5784d5d4cf2f6fe2ca29fb3597a363711dd004fb
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date: Wed Jan 12 12:23:12 2022 -0500
application-helpers: Use a single controller
for shortcuts.
Which still do not work, BTW.
libbalsa/application-helpers.c | 22 ++++++++++++++++++----
1 file changed, 18 insertions(+), 4 deletions(-)
---
diff --git a/libbalsa/application-helpers.c b/libbalsa/application-helpers.c
index 493ba4e3d..897cd0d59 100644
--- a/libbalsa/application-helpers.c
+++ b/libbalsa/application-helpers.c
@@ -156,15 +156,30 @@ libbalsa_window_get_menu_bar(GtkApplicationWindow * window,
* menumodel the GMenuModel
*/
+static GtkEventController *
+get_controller_from_window(GtkApplicationWindow * window)
+{
+ GtkEventController *controller;
+
+ controller = g_object_get_data(G_OBJECT(window), "libbalsa-shortcut-controller");
+
+ if (controller == NULL) {
+ controller = gtk_shortcut_controller_new();
+ gtk_widget_add_controller(GTK_WIDGET(window), controller);
+ g_object_set_data(G_OBJECT(window), "libbalsa-shortcut-controller", controller);
+ }
+
+ return controller;
+}
+
void
libbalsa_window_set_accels(GtkApplicationWindow * window,
GMenuModel * menu_model)
{
GtkEventController *controller;
- controller = gtk_shortcut_controller_new();
+ controller = get_controller_from_window(window);
extract_accels_from_menu(menu_model, GTK_SHORTCUT_CONTROLLER(controller));
- gtk_widget_add_controller(GTK_WIDGET(window), controller);
}
void
@@ -203,7 +218,6 @@ libbalsa_window_add_accelerator(GtkApplicationWindow * window,
shortcut = gtk_shortcut_new(trigger, action);
- controller = gtk_shortcut_controller_new();
+ controller = get_controller_from_window(window);
gtk_shortcut_controller_add_shortcut(GTK_SHORTCUT_CONTROLLER(controller), shortcut);
- gtk_widget_add_controller(GTK_WIDGET(window), controller);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]