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:
parent
712554e3b0
commit
d96789d931
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user