Take heed of mnemonic indicator when clipping menu texts
authorH.G.Muller <hgm@hgm-xboard.(none)>
Fri, 6 Feb 2015 12:01:44 +0000 (13:01 +0100)
committerH.G.Muller <hgm@hgm-xboard.(none)>
Thu, 7 May 2015 18:53:32 +0000 (20:53 +0200)
An underscore in the menu text should not be counted when deciding where
to clip the text to make the menu bar fit the window width. If clipping
would occur immediately after an underscore, just clip off the first
character to get the mnemonic back in view. (This makes _n from the
Engine menu.)

gtk/xoptions.c

index 8c5bd26..48da90b 100644 (file)
@@ -1568,7 +1568,11 @@ if(appData.debugMode) printf("n=%d, h=%d, w=%d\n",n,height,width);
            top--;
            msg = _(option[i].name); // write name on the menu button
 #ifndef OSXAPP
-           if(tinyLayout) { strcpy(def, msg); def[tinyLayout] = NULLCHAR; msg = def; } // clip menu text to keep menu bar small
+           if(tinyLayout) { // clip menu text to keep menu bar small
+               int clip = tinyLayout + 1;
+               strcpy(def, msg + (msg[clip-1] == '_'));
+               def[clip] = NULLCHAR; msg = def;
+           }
 #endif
 //         XtSetArg(args[j], XtNmenuName, XtNewString(option[i].name));  j++;
 //         XtSetArg(args[j], XtNlabel, msg);  j++;