changeset 2286:2d282d8fe911

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.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Wed, 03 Feb 2021 22:39:16 +0000
parents 5113afb0aea9
children 680212c356e3
files gtk4/dw.c
diffstat 1 files changed, 4 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- 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);