STR 1760: using the alt modifier on OS X to access menubar accelerators.

git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@8223 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
Matthias Melcher 2011-01-09 12:56:50 +00:00
parent 712554e3b0
commit d96789d931
1 changed files with 13 additions and 1 deletions

View File

@ -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
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);
#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 == label_shortcut(t))
unsigned int ls = label_shortcut(t);
if (c == ls)
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;
}