Make accelerators work (Ctrl-Q/S/X)

This commit is contained in:
Kim Woelders 2023-12-08 09:30:37 +01:00
parent 6c8d057b8b
commit 57b877a827
3 changed files with 14 additions and 12 deletions

View File

@ -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 */

View File

@ -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);
}

View File

@ -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;