summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/fl_shortcut.cxx14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/fl_shortcut.cxx b/src/fl_shortcut.cxx
index 31cbe7297..69e11ede5 100644
--- a/src/fl_shortcut.cxx
+++ b/src/fl_shortcut.cxx
@@ -54,6 +54,13 @@
int Fl::test_shortcut(int shortcut) {
if (!shortcut) return 0;
+ int v = shortcut & 0xffff;
+ if (v > 32 && v < 0x7f || v > 0xa0 && v <= 0xff) {
+ if (isupper(v)) {
+ shortcut |= FL_SHIFT;
+ }
+ }
+
int shift = Fl::event_state();
// see if any required shift flags are off:
if ((shortcut&shift) != (shortcut&0x7fff0000)) return 0;
@@ -118,6 +125,13 @@ const char * fl_shortcut_label(int shortcut) {
static char buf[20];
char *p = buf;
if (!shortcut) {*p = 0; return buf;}
+ // fix upper case shortcuts
+ int v = shortcut & 0xffff;
+ if (v > 32 && v < 0x7f || v > 0xa0 && v <= 0xff) {
+ if (isupper(v)) {
+ shortcut |= FL_SHIFT;
+ }
+ }
#ifdef __APPLE__
// \todo Mac : we might want to change the symbols for Mac users - consider drawing Apple Symbols... .
if (shortcut & FL_SHIFT) {strcpy(p,"Shift+"); p += 6;} //: Mac hollow up arrow