From 57b877a82772393146619e67d837d4f7142d9672 Mon Sep 17 00:00:00 2001 From: Kim Woelders Date: Fri, 8 Dec 2023 09:30:37 +0100 Subject: [PATCH] Make accelerators work (Ctrl-Q/S/X) --- e16keyedit.h | 4 ++-- menus.c | 7 ++++--- viewer.c | 15 ++++++++------- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/e16keyedit.h b/e16keyedit.h index b916d8e..b3402d1 100644 --- a/e16keyedit.h +++ b/e16keyedit.h @@ -30,12 +30,12 @@ extern void CommsSend(const char *s); extern GtkWidget *CreateBarSubMenu(GtkWidget * menu, const char *szName); extern GtkWidget *CreateRightAlignBarSubMenu(GtkWidget * menu, const char *szName); -extern GtkWidget *CreateMenuItem(GtkWidget * menu, const char *szName, +extern GtkWidget *CreateMenuItem(GtkWidget * menu, GtkAccelGroup * agrp, + const char *szName, const char *szAccel, const char *szTip, GCallback func, const void *data); /* viewer.c */ -extern GtkAccelGroup *accel_group; void on_exit_application(void); #endif /* E16KEYEDIT_H */ diff --git a/menus.c b/menus.c index 1253823..65d98ab 100644 --- a/menus.c +++ b/menus.c @@ -41,8 +41,9 @@ CreateRightAlignBarSubMenu(GtkWidget *menu, const char *szName) } GtkWidget * -CreateMenuItem(GtkWidget *menu, const char *szName, const char *szAccel, - const char *szTip, GCallback func, const void *data) +CreateMenuItem(GtkWidget *menu, GtkAccelGroup *agrp, + const char *szName, const char *szAccel, const char *szTip, + GCallback func, const void *data) { GtkWidget *menuitem; @@ -63,7 +64,7 @@ CreateMenuItem(GtkWidget *menu, const char *szName, const char *szAccel, if (szAccel && szAccel[0] == '^') { - gtk_widget_add_accelerator(menuitem, "activate", accel_group, + gtk_widget_add_accelerator(menuitem, "activate", agrp, szAccel[1], GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); } diff --git a/viewer.c b/viewer.c index 05b343a..b68fe90 100644 --- a/viewer.c +++ b/viewer.c @@ -21,8 +21,6 @@ #define VER(maj, min, mic) (10000 * (maj) + 100 * (min) + (mic)) -GtkAccelGroup *accel_group; - static GtkWidget *clist; static GtkWidget *act_key; static GtkWidget *act_params; @@ -703,6 +701,7 @@ create_list_window(void) GtkWidget *hbox; GtkWidget *om; GtkWidget *menu; + GtkAccelGroup *agrp; #if USE_GTK_TREEVIEW GtkCellRenderer *renderer; @@ -720,6 +719,9 @@ create_list_window(void) gtk_widget_set_can_default(list_window, TRUE); gtk_window_set_title(GTK_WINDOW(list_window), "E Keys Editor"); + agrp = gtk_accel_group_new(); + gtk_window_add_accel_group(GTK_WINDOW(list_window), agrp); + bigvbox = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(list_window), bigvbox); @@ -727,11 +729,12 @@ create_list_window(void) gtk_box_pack_start(GTK_BOX(bigvbox), menubar, FALSE, FALSE, 0); menu = CreateBarSubMenu(menubar, "File"); - CreateMenuItem(menu, "Save", "", "Save Current Data", on_save_data, NULL); - CreateMenuItem(menu, "Save & Quit", "", + CreateMenuItem(menu, agrp, "Save", "^s", "Save Current Data", + on_save_data, NULL); + CreateMenuItem(menu, agrp, "Save & Quit", "^x", "Save Current Data & Quit Application", on_save_and_exit_application, NULL); - CreateMenuItem(menu, "Quit", "", "Quit Without Saving", + CreateMenuItem(menu, agrp, "Quit", "^q", "Quit Without Saving", on_exit_application, NULL); #if 0 /* Not implemented */ @@ -1183,8 +1186,6 @@ main(int argc, char *argv[]) gtk_init(&argc, &argv); - accel_group = gtk_accel_group_new(); - if (CommsInit(receive_ipc_msg)) { GtkWidget *win, *frame, *vbox, *label, *button;