# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1612391956 0 # Node ID 2d282d8fe911781bb2ebe9095457115abec80e50 # Parent 5113afb0aea93f668b49620ddb54f03f13a0d265 GTK4: Change to how the action name is created, don't use the menu label... instead use the handle to the menu and the menu id... so there are never any invalid characters in it. diff -r 5113afb0aea9 -r 2d282d8fe911 gtk4/dw.c --- a/gtk4/dw.c Wed Feb 03 22:27:12 2021 +0000 +++ b/gtk4/dw.c Wed Feb 03 22:39:16 2021 +0000 @@ -2245,7 +2245,7 @@ } } -char _dw_removetilde(char *action, char *dest, const char *src) +char _dw_removetilde(char *dest, const char *src) { int z, cur=0; char accel = '\0'; @@ -2254,19 +2254,11 @@ { if(src[z] == '~') { - action[cur] = dest[cur] = '_'; + dest[cur] = '_'; accel = src[z+1]; } - else if(src[z] == ' ') - { - action[cur] = '_'; - dest[cur] = src[z]; - } else - { - action[cur] = src[z]; dest[cur] = src[z]; - } cur++; } dest[cur] = 0; @@ -2291,7 +2283,6 @@ GMenuItem *tmphandle = NULL; GMenuModel *menumodel; char *temptitle = alloca(strlen(title)+1); - char *tempaction = alloca(strlen(title)+1); int submenucount; if(!menu) @@ -2301,7 +2292,7 @@ menumodel = gtk_popover_menu_bar_get_menu_model(GTK_POPOVER_MENU_BAR(menu)); else menumodel = gtk_popover_menu_get_menu_model(GTK_POPOVER_MENU(menu)); - _dw_removetilde(tempaction, temptitle, title); + _dw_removetilde(temptitle, title); submenucount = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(menu), "_dw_submenucount")); if (strlen(temptitle) == 0) @@ -2329,7 +2320,7 @@ { char numbuf[25] = {0}; - snprintf(tempbuf, 100, "menu.%s", tempaction); + snprintf(tempbuf, 100, "menu.%llu-%lu", DW_POINTER_TO_ULONGLONG(menu), id); action = g_simple_action_new(tempbuf, NULL); g_object_ref(G_OBJECT(action)); tmphandle=g_menu_item_new(temptitle, tempbuf);