Ticket #3980: cmd_shortcut2.diff
File cmd_shortcut2.diff, 5.7 KB (added by , 15 years ago) |
---|
-
src/preferences/keymap/KeymapWindow.cpp
562 562 KeymapWindow::_UpdateSwitchShortcutButton() 563 563 { 564 564 const char* label = "Switch Shortcut Keys"; 565 if (fCurrentMap.KeyForModifier(B_LEFT_COMMAND_KEY) == 0x5d 566 && fCurrentMap.KeyForModifier(B_LEFT_CONTROL_KEY) == 0x5c) { 565 if (fCurrentMap.KeyForModifier(B_LEFT_CONTROL_KEY) == 0x5c) { 567 566 label = "Switch Shortcut Keys To Windows/Linux Mode"; 568 } else if (fCurrentMap.KeyForModifier(B_LEFT_COMMAND_KEY) == 0x5c 569 && fCurrentMap.KeyForModifier(B_LEFT_CONTROL_KEY) == 0x5d) { 570 label = "Switch Shortcut Keys To Haiku Mode"; 567 } else if (fCurrentMap.KeyForModifier(B_LEFT_COMMAND_KEY) == 0x5c) { 568 label = "Switch Shortcut Keys To Haiku/Mac OS Mode"; 571 569 } 572 570 573 571 fSwitchShortcutsButton->SetLabel(label); -
src/kits/interface/Menu.cpp
78 78 79 79 80 80 menu_info BMenu::sMenuInfo; 81 bool BMenu::sAltAsCommandKey;81 menu_cmd_key BMenu::sCommandKey; 82 82 83 83 84 84 static property_info sPropList[] = { … … 346 346 { 347 347 BView::AttachedToWindow(); 348 348 349 s AltAsCommandKey = true;349 sCommandKey = B_COMMAND_IS_ALT; 350 350 key_map *keys = NULL; 351 351 char *chars = NULL; 352 352 get_key_map(&keys, &chars); 353 if (keys == NULL || keys->left_command_key != 0x5d 354 || keys->left_control_key != 0x5c) 355 sAltAsCommandKey = false; 353 if (keys == NULL || keys->left_command_key == 0x66) { 354 sCommandKey = B_COMMAND_IS_CMD; 355 } else if (keys->left_command_key != 0x5d 356 || keys->left_control_key != 0x5c) { 357 sCommandKey = B_COMMAND_IS_CTL; 358 } 356 359 free(chars); 357 360 free(keys); 358 361 … … 2800 2803 } 2801 2804 2802 2805 2803 bool 2804 MenuPrivate:: IsAltCommandKey() const2806 menu_cmd_key 2807 MenuPrivate::CommandKey() const 2805 2808 { 2806 return fMenu->s AltAsCommandKey;2809 return fMenu->sCommandKey; 2807 2810 } 2808 2811 2809 2812 -
src/kits/interface/MenuItem.cpp
71 71 }; 72 72 73 73 74 const unsigned char kCmdBits[] = { 75 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x14, 76 0x1d,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14, 77 0x1d,0x1a,0x13,0x04,0x04,0x13,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14, 78 0x1d,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x04,0x13,0x13,0x04,0x1a,0x04,0x04,0x04,0x13,0x1a,0x17,0x14, 79 0x1d,0x1a,0x04,0x1a,0x1a,0x1a,0x1a,0x04,0x04,0x04,0x04,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x17,0x14, 80 0x1d,0x1a,0x04,0x1a,0x1a,0x1a,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x17,0x14, 81 0x1d,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x17,0x14, 82 0x1d,0x1a,0x13,0x04,0x04,0x13,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x04,0x04,0x04,0x13,0x1a,0x17,0x14, 83 0x1d,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14, 84 0x1d,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x14, 85 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14 86 }; 87 74 88 const unsigned char kShiftBits[] = { 75 89 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x14, 76 90 0x1d,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14, … … 790 804 where.y += (fBounds.Height() - 11) / 2 - 1; 791 805 where.x -= 4; 792 806 793 const bool altCommandKey = MenuPrivate(fSuper).IsAltCommandKey();807 const menu_cmd_key commandKey = MenuPrivate(fSuper).CommandKey(); 794 808 if (fModifiers & B_COMMAND_KEY) { 795 809 BRect rect(0,0,16,10); 796 810 BBitmap control(rect, B_CMAP8); 797 811 798 if ( altCommandKey)812 if (commandKey == B_COMMAND_IS_ALT) 799 813 control.ImportBits(kAltBits, sizeof(kAltBits), 17, 0, B_CMAP8); 814 else if (commandKey == B_COMMAND_IS_CMD) 815 control.ImportBits(kCmdBits, sizeof(kCmdBits), 19, 0, B_CMAP8); 800 816 else 801 817 control.ImportBits(kCtrlBits, sizeof(kCtrlBits), 17, 0, B_CMAP8); 802 818 … … 808 824 BRect rect(0,0,16,10); 809 825 BBitmap control(rect, B_CMAP8); 810 826 811 if ( altCommandKey)827 if (commandKey == B_COMMAND_IS_ALT || commandKey == B_COMMAND_IS_CMD) 812 828 control.ImportBits(kCtrlBits, sizeof(kCtrlBits), 17, 0, B_CMAP8); 813 829 else 814 830 control.ImportBits(kAltBits, sizeof(kAltBits), 17, 0, B_CMAP8); -
headers/os/interface/Menu.h
28 28 B_ITEMS_IN_MATRIX 29 29 }; 30 30 31 enum menu_cmd_key { 32 B_COMMAND_IS_ALT = 0, 33 B_COMMAND_IS_CTL, 34 B_COMMAND_IS_CMD 35 }; 36 31 37 struct menu_info { 32 38 float font_size; 33 39 font_family f_family; … … 243 249 void _QuitTracking(bool onlyThis = true); 244 250 245 251 static menu_info sMenuInfo; 246 static bool sAltAsCommandKey;252 static menu_cmd_key sCommandKey; 247 253 248 254 BMenuItem* fChosenItem; 249 255 BList fItems; -
headers/private/interface/MenuPrivate.h
35 35 BRect Padding() const; 36 36 void GetItemMargins(float *, float *, float *, float *) const; 37 37 38 bool IsAltCommandKey() const;38 menu_cmd_key CommandKey() const; 39 39 int State(BMenuItem **item = NULL) const; 40 40 41 41 void Install(BWindow *window);