- s = menu_new("empty", "chub", m);
- menu_add_entry(m, menu_entry_new_submenu("empty", s));
-
- s = menu_new("", "s-club", m);
- menu_add_entry(m, menu_entry_new_submenu("empty", s));
-
- s = menu_new(NULL, "h-club", m);
- menu_add_entry(m, menu_entry_new_submenu("empty", s));
-
- s = menu_new(NULL, "g-club", m);
-
- a = action_from_string("execute");
- a->data.execute.path = g_strdup("xterm");
- menu_add_entry(s, menu_entry_new("xterm", a));
- a = action_from_string("restart");
- menu_add_entry(s, menu_entry_new("restart", a));
- menu_add_entry(s, menu_entry_new_separator("--"));
- a = action_from_string("exit");
- menu_add_entry(s, menu_entry_new("exit", a));
-
- menu_add_entry(m, menu_entry_new_submenu("long", s));
-
- m = menu_new(NULL, "client", NULL);
- a = action_from_string("iconify");
- menu_add_entry(m, menu_entry_new("iconify", a));
- a = action_from_string("toggleshade");
- menu_add_entry(m, menu_entry_new("(un)shade", a));
- a = action_from_string("togglemaximizefull");
- menu_add_entry(m, menu_entry_new("(un)maximize", a));
- a = action_from_string("close");
- menu_add_entry(m, menu_entry_new("close", a));
+ *position = 0;
+
+ g_assert(strippedlabel != NULL);
+
+ if (label == NULL) {
+ *strippedlabel = NULL;
+ } else {
+ gchar *i;
+
+ *strippedlabel = g_strdup(label);
+
+ /* if allow_shortcut is false, then you can't use the &, instead you
+ have to just use the first valid character
+ */
+
+ i = strchr(*strippedlabel, '&');
+ if (allow_shortcut && i != NULL) {
+ /* there is an ampersand in the string */
+
+ /* you have to use a printable ascii character for shortcuts
+ don't allow space either, so you can have like "a & b"
+ */
+ if (VALID_SHORTCUT(*(i+1))) {
+ shortcut = g_unichar_tolower(g_utf8_get_char(i+1));
+ *position = i - *strippedlabel;
+
+ /* remove the & from the string */
+ for (; *i != '\0'; ++i)
+ *i = *(i+1);
+ }
+ } else {
+ /* there is no ampersand, so find the first valid character to use
+ instead */
+
+ for (i = *strippedlabel; *i != '\0'; ++i)
+ if (VALID_SHORTCUT(*i)) {
+ *position = i - *strippedlabel;
+ shortcut = g_unichar_tolower(g_utf8_get_char(i));
+ break;
+ }
+ }
+ }
+ return shortcut;
+}