|
|
@ -344,9 +344,21 @@ int Fl_Widget::test_shortcut(const char *t, const bool require_alt) { |
|
|
|
// for menubars etc. shortcuts must work only if the Alt modifier is pressed
|
|
|
|
// for menubars etc. shortcuts must work only if the Alt modifier is pressed
|
|
|
|
if (require_alt && Fl::event_state(FL_ALT)==0) return 0; |
|
|
|
if (require_alt && Fl::event_state(FL_ALT)==0) return 0; |
|
|
|
unsigned int c = fl_utf8decode(Fl::event_text(), Fl::event_text()+Fl::event_length(), 0); |
|
|
|
unsigned int c = fl_utf8decode(Fl::event_text(), Fl::event_text()+Fl::event_length(), 0); |
|
|
|
|
|
|
|
#ifdef __APPLE__ |
|
|
|
|
|
|
|
// this line makes underline shortcuts work the same way they do on MSWindow
|
|
|
|
|
|
|
|
// and Linux.
|
|
|
|
|
|
|
|
if (c && Fl::event_state(FL_ALT))
|
|
|
|
|
|
|
|
c = Fl::event_key(); |
|
|
|
|
|
|
|
#endif |
|
|
|
if (!c) return 0; |
|
|
|
if (!c) return 0; |
|
|
|
if (c == label_shortcut(t)) |
|
|
|
unsigned int ls = label_shortcut(t); |
|
|
|
|
|
|
|
if (c == ls) |
|
|
|
return 1; |
|
|
|
return 1; |
|
|
|
|
|
|
|
#ifdef __APPLE__ |
|
|
|
|
|
|
|
// On OS X, we need to simulate the upper case keystroke as well
|
|
|
|
|
|
|
|
if (Fl::event_state(FL_ALT) && c<128 && isalpha(c) && (unsigned)toupper(c)==ls) |
|
|
|
|
|
|
|
return 1; |
|
|
|
|
|
|
|
#endif |
|
|
|
return 0; |
|
|
|
return 0; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|