diff --git a/headers/os/interface/Menu.h b/headers/os/interface/Menu.h index a43abd55b6..cac85ef276 100644 --- a/headers/os/interface/Menu.h +++ b/headers/os/interface/Menu.h @@ -257,7 +257,7 @@ virtual void _ReservedMenu6(); BMessage *r, bool menu) const; static menu_info sMenuInfo; -static bool sSwapped; +static bool sAltAsCommandKey; BMenuItem *fChosenItem; BList fItems; diff --git a/src/kits/interface/Menu.cpp b/src/kits/interface/Menu.cpp index 652814f69b..0c84565d3a 100644 --- a/src/kits/interface/Menu.cpp +++ b/src/kits/interface/Menu.cpp @@ -39,7 +39,7 @@ public: menu_info BMenu::sMenuInfo; - +bool BMenu::sAltAsCommandKey; static property_info sPropList[] = { @@ -256,6 +256,15 @@ BMenu::AttachedToWindow() { BView::AttachedToWindow(); + sAltAsCommandKey = true; + key_map *keys = NULL; + char *chars = NULL; + get_key_map(&keys, &chars); + if (keys == NULL || keys->left_command_key != 0x5d || keys->right_command_key != 0x5f) + sAltAsCommandKey = false; + free(chars); + free(keys); + if (AddDynamicItem(B_INITIAL_ADD)) { do { if (!OkToProceed(NULL)) { diff --git a/src/kits/interface/MenuItem.cpp b/src/kits/interface/MenuItem.cpp index fdb267bba2..82d55d2cde 100644 --- a/src/kits/interface/MenuItem.cpp +++ b/src/kits/interface/MenuItem.cpp @@ -703,21 +703,11 @@ BMenuItem::DrawShortcutSymbol() where -= BPoint(20, 10); - // TODO: Do this in a better way - bool altAsCommandKey = true; - key_map *keys = NULL; - char *chars; - get_key_map(&keys, &chars); - if (keys == NULL || keys->left_command_key != 0x5d || keys->right_command_key != 0x5f) - altAsCommandKey = false; - free(chars); - free(keys); - if (fModifiers & B_COMMAND_KEY) { BRect rect(0,0,16,10); BBitmap control(rect, B_COLOR_8_BIT); - if (altAsCommandKey) + if (BMenu::sAltAsCommandKey) control.SetBits(kAltBits, kAltLength, 0, B_COLOR_8_BIT); else control.SetBits(kCtrlBits, kCtrlLength, 0, B_COLOR_8_BIT); @@ -730,7 +720,7 @@ BMenuItem::DrawShortcutSymbol() BRect rect(0,0,16,10); BBitmap control(rect, B_COLOR_8_BIT); - if (altAsCommandKey) + if (BMenu::sAltAsCommandKey) control.SetBits(kCtrlBits, kCtrlLength, 0, B_COLOR_8_BIT); else control.SetBits(kAltBits, kAltLength, 0, B_COLOR_8_BIT);