From 65b4fb8ab1cc75ce5fee62cb5f6963fdd8c4c7d4 Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Mon, 20 Mar 2006 20:20:29 +0000 Subject: [PATCH] Check if alt is the command key on BMenu::AttachedToWindow instead of doing it for every BMenuItem::Draw() git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16847 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/os/interface/Menu.h | 2 +- src/kits/interface/Menu.cpp | 11 ++++++++++- src/kits/interface/MenuItem.cpp | 14 ++------------ 3 files changed, 13 insertions(+), 14 deletions(-) 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);