Ticket #3980: cmd_shortcut2.diff

File cmd_shortcut2.diff, 5.7 KB (added by VinDuv, 15 years ago)

Patch v2

  • src/preferences/keymap/KeymapWindow.cpp

     
    562562KeymapWindow::_UpdateSwitchShortcutButton()
    563563{
    564564    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) {
    567566        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";
    571569    }
    572570
    573571    fSwitchShortcutsButton->SetLabel(label);
  • src/kits/interface/Menu.cpp

     
    7878
    7979
    8080menu_info BMenu::sMenuInfo;
    81 bool BMenu::sAltAsCommandKey;
     81menu_cmd_key BMenu::sCommandKey;
    8282
    8383
    8484static property_info sPropList[] = {
     
    346346{
    347347    BView::AttachedToWindow();
    348348
    349     sAltAsCommandKey = true;
     349    sCommandKey = B_COMMAND_IS_ALT;
    350350    key_map *keys = NULL;
    351351    char *chars = NULL;
    352352    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    }
    356359    free(chars);
    357360    free(keys);
    358361
     
    28002803}
    28012804
    28022805
    2803 bool
    2804 MenuPrivate::IsAltCommandKey() const
     2806menu_cmd_key
     2807MenuPrivate::CommandKey() const
    28052808{
    2806     return fMenu->sAltAsCommandKey;
     2809    return fMenu->sCommandKey;
    28072810}
    28082811
    28092812
  • src/kits/interface/MenuItem.cpp

     
    7171};
    7272
    7373
     74const 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
    7488const unsigned char kShiftBits[] = {
    7589    0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x14,
    7690    0x1d,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14,
     
    790804    where.y += (fBounds.Height() - 11) / 2 - 1;
    791805    where.x -= 4;   
    792806   
    793     const bool altCommandKey = MenuPrivate(fSuper).IsAltCommandKey();
     807    const menu_cmd_key commandKey = MenuPrivate(fSuper).CommandKey();
    794808    if (fModifiers & B_COMMAND_KEY) {
    795809        BRect rect(0,0,16,10);
    796810        BBitmap control(rect, B_CMAP8);
    797811
    798         if (altCommandKey)
     812        if (commandKey == B_COMMAND_IS_ALT)
    799813            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);
    800816        else
    801817            control.ImportBits(kCtrlBits, sizeof(kCtrlBits), 17, 0, B_CMAP8);
    802818       
     
    808824        BRect rect(0,0,16,10);
    809825        BBitmap control(rect, B_CMAP8);
    810826
    811         if (altCommandKey)
     827        if (commandKey == B_COMMAND_IS_ALT || commandKey == B_COMMAND_IS_CMD)
    812828            control.ImportBits(kCtrlBits, sizeof(kCtrlBits), 17, 0, B_CMAP8);
    813829        else   
    814830            control.ImportBits(kAltBits, sizeof(kAltBits), 17, 0, B_CMAP8);
  • headers/os/interface/Menu.h

     
    2828    B_ITEMS_IN_MATRIX
    2929};
    3030
     31enum menu_cmd_key {
     32    B_COMMAND_IS_ALT = 0,
     33    B_COMMAND_IS_CTL,
     34    B_COMMAND_IS_CMD
     35};
     36
    3137struct menu_info {
    3238    float       font_size;
    3339    font_family f_family;
     
    243249            void            _QuitTracking(bool onlyThis = true);
    244250
    245251    static  menu_info       sMenuInfo;
    246     static  bool            sAltAsCommandKey;
     252    static  menu_cmd_key    sCommandKey;
    247253
    248254            BMenuItem*      fChosenItem;
    249255            BList           fItems;
  • headers/private/interface/MenuPrivate.h

     
    3535    BRect Padding() const;
    3636    void GetItemMargins(float *, float *, float *, float *) const;
    3737
    38     bool IsAltCommandKey() const;
     38    menu_cmd_key CommandKey() const;
    3939    int State(BMenuItem **item = NULL) const;
    4040   
    4141    void Install(BWindow *window);