From da90fe352847d5f27358179cb4cdf88abc40a4af Mon Sep 17 00:00:00 2001 From: Geenz Date: Tue, 15 Jan 2013 05:46:31 -0500 Subject: [PATCH] This *should* put an end to our modifier key woes. --- indra/llwindow/llkeyboardmacosx.cpp | 27 +- indra/llwindow/llopenglview-objc.mm | 31 +- indra/newview/SecondLife.nib | Bin 15670 -> 8541 bytes indra/newview/SecondLife.xib | 957 ++-------------------------- 4 files changed, 68 insertions(+), 947 deletions(-) diff --git a/indra/llwindow/llkeyboardmacosx.cpp b/indra/llwindow/llkeyboardmacosx.cpp index 3db94e8835..59cc2acaec 100644 --- a/indra/llwindow/llkeyboardmacosx.cpp +++ b/indra/llwindow/llkeyboardmacosx.cpp @@ -200,9 +200,25 @@ static BOOL translateKeyMac(const U16 key, const U32 mask, KEY &outKey, U32 &out MASK LLKeyboardMacOSX::updateModifiers(const U32 mask) { - // This is handled for us in LLNSWindow on OS X. - - return mask; + // translate the mask + MASK out_mask = 0; + + if(mask & MAC_SHIFT_KEY) + { + out_mask |= MASK_SHIFT; + } + + if(mask & MAC_CTRL_KEY || mask & MAC_CMD_KEY) + { + out_mask |= MASK_CONTROL; + } + + if(mask & MAC_ALT_KEY) + { + out_mask |= MASK_ALT; + } + + return out_mask; } BOOL LLKeyboardMacOSX::handleKeyDown(const U16 key, const U32 mask) @@ -232,6 +248,7 @@ BOOL LLKeyboardMacOSX::handleKeyUp(const U16 key, const U32 mask) if(translateNumpadKey(key, &translated_key)) { + LL_INFOS("Keyboard") << "Handled key!" << LL_ENDL; handled = handleTranslatedKeyUp(translated_key, translated_mask); } @@ -252,8 +269,8 @@ MASK LLKeyboardMacOSX::currentMask(BOOL for_mouse_event) { if (mask & MAC_CMD_KEY) result |= MASK_CONTROL; } - - return mask; + + return result; } void LLKeyboardMacOSX::scanKeyboard() diff --git a/indra/llwindow/llopenglview-objc.mm b/indra/llwindow/llopenglview-objc.mm index d91601152b..25669b25d3 100644 --- a/indra/llwindow/llopenglview-objc.mm +++ b/indra/llwindow/llopenglview-objc.mm @@ -190,6 +190,11 @@ [_window flagsChanged:theEvent]; } +- (void) mouseExited:(NSEvent *)theEvent +{ + [_window mouseExited:theEvent]; +} + - (BOOL) becomeFirstResponder { return [_window becomeFirstResponder]; @@ -217,6 +222,7 @@ - (void) keyDown:(NSEvent *)theEvent { callKeyDown([theEvent keyCode], mModifiers); + NSLog(@"Keycode: %hu", [theEvent keyCode]); NSString *chars = [theEvent characters]; for (uint i = 0; i < [chars length]; i++) { @@ -254,30 +260,7 @@ } - (void)flagsChanged:(NSEvent *)theEvent { - uint modifiers = [theEvent modifierFlags]; - - // Filter through our modifier keys, and only pick out the ones we care about. - - mModifiers = 0; - if (modifiers & NSCommandKeyMask) - { - mModifiers |= 0x0001; - } - - if (modifiers & NSAlternateKeyMask) - { - mModifiers |= 0x0002; - } - - if (modifiers & NSShiftKeyMask) - { - mModifiers |= 0x0004; - } - - if (modifiers & NSControlKeyMask) - { - mModifiers |= 0x0001; - } + mModifiers = [theEvent modifierFlags]; } - (void) mouseDown:(NSEvent *)theEvent diff --git a/indra/newview/SecondLife.nib b/indra/newview/SecondLife.nib index cd69b1b81218f03d96bde85bdd2e0800d2fbeef2..ca890333005a5bc907de0ae29e4ef07a98e4e45c 100644 GIT binary patch literal 8541 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 G&iWtsMQ!T< literal 15670 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 wCjw6frUqsOW(Vd5mIhu3EDx*?> - - - Open Recent - - 2147483647 - - - submenuAction: - - Open Recent - - - - Clear Menu - - 2147483647 - - - - - _NSRecentDocumentsMenu - - YES @@ -235,52 +212,6 @@ - - - Save… - s - 1048576 - 2147483647 - - - - - - Revert to Saved - - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Page Setup... - P - 1179648 - 2147483647 - - - - - - - Print… - p - 1048576 - 2147483647 - - - @@ -350,23 +281,6 @@ - - - Paste and Match Style - V - 1572864 - 2147483647 - - - - - - Delete - - 2147483647 - - - Select All @@ -376,303 +290,6 @@ - - - YES - YES - - - 2147483647 - - - - - - Find - - 2147483647 - - - submenuAction: - - Find - - - - Find… - f - 1048576 - 2147483647 - - - 1 - - - - Find and Replace… - f - 1572864 - 2147483647 - - - 12 - - - - Find Next - g - 1048576 - 2147483647 - - - 2 - - - - Find Previous - G - 1048576 - 2147483647 - - - 3 - - - - Use Selection for Find - e - 1048576 - 2147483647 - - - 7 - - - - Jump to Selection - j - 1048576 - 2147483647 - - - - - - - - - Spelling and Grammar - - 2147483647 - - - submenuAction: - - Spelling - - - - Show Spelling and Grammar - : - 1048576 - 2147483647 - - - - - - Check Document Now - ; - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Check Spelling While Typing - - 2147483647 - - - - - - Check Grammar With Spelling - - 2147483647 - - - - - - Correct Spelling Automatically - - 2147483647 - - - - - - - - - Substitutions - - 2147483647 - - - submenuAction: - - Substitutions - - - - Show Substitutions - - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Smart Copy/Paste - - 2147483647 - - - - - - Smart Quotes - - 2147483647 - - - - - - Smart Dashes - - 2147483647 - - - - - - Smart Links - - 2147483647 - - - - - - Data Detectors - - 2147483647 - - - - - - Text Replacement - - 2147483647 - - - - - - - - - Transformations - - 2147483647 - - - submenuAction: - - Transformations - - - - Make Upper Case - - 2147483647 - - - - - - Make Lower Case - - 2147483647 - - - - - - Capitalize - - 2147483647 - - - - - - - - - Speech - - 2147483647 - - - submenuAction: - - Speech - - - - Start Speaking - - 2147483647 - - - - - - Stop Speaking - - 2147483647 - - - - - - @@ -776,13 +393,10 @@ {1024, 768} - + 256 {1024, 768} - - - _NS:20 {{0, 0}, {1920, 1178}} @@ -834,30 +448,6 @@ 39 - - - print: - - - - 86 - - - - runPageLayout: - - - - 87 - - - - clearRecentDocuments: - - - - 127 - performClose: @@ -882,22 +472,6 @@ 360 - - - saveDocument: - - - - 362 - - - - revertDocumentToSaved: - - - - 364 - hide: @@ -938,38 +512,6 @@ 769 - - - toggleSmartInsertDelete: - - - - 770 - - - - toggleAutomaticDashSubstitution: - - - - 773 - - - - toggleContinuousSpellChecking: - - - - 774 - - - - toggleAutomaticDataDetection: - - - - 775 - undo: @@ -978,30 +520,6 @@ 776 - - - startSpeaking: - - - - 778 - - - - showGuessPanel: - - - - 779 - - - - checkSpelling: - - - - 780 - copy: @@ -1010,14 +528,6 @@ 782 - - - delete: - - - - 783 - selectAll: @@ -1026,38 +536,6 @@ 785 - - - stopSpeaking: - - - - 786 - - - - orderFrontSubstitutionsPanel: - - - - 787 - - - - toggleAutomaticTextReplacement: - - - - 788 - - - - toggleAutomaticSpellingCorrection: - - - - 790 - toggleFullScreen: @@ -1150,85 +628,18 @@ 81 - - - - - - - - 75 - - - - - 78 - - - - - 72 - - - - - 82 - - - - - 124 - - - - - - - - 77 - - - 73 - - 79 - - - - - 112 - - - - - 74 - - - - - 125 - - - - - - - - 126 - - - 106 @@ -1373,33 +784,10 @@ - - - - - - - - - - 713 - - - - - 714 - - - - - 715 - - - 716 @@ -1415,251 +803,11 @@ - - 719 - - - - - 720 - - - 721 - - 722 - - - - - 723 - - - - - - - - 724 - - - - - - - - 725 - - - - - - - - 726 - - - - - - - - 727 - - - - - - - - 738 - - - - - - - - - 739 - - - - - 740 - - - - - 741 - - - - - - - - - - 742 - - - - - 743 - - - - - 744 - - - - - 745 - - - - - - - - - - - - - - - 746 - - - - - 747 - - - - - 748 - - - - - 749 - - - - - 750 - - - - - 751 - - - - - 752 - - - - - 753 - - - - - 754 - - - - - - - - - - - - - 755 - - - - - 756 - - - - - 757 - - - - - 758 - - - - - 759 - - - - - 760 - - - - - 761 - - - - - - - - - - - - - 762 - - - - - 763 - - - - - 764 - - - - - 765 - - - - - 766 - - - - - 821 - - - 824 @@ -1684,6 +832,36 @@ + + 713 + + + + + 714 + + + + + 715 + + + + + 82 + + + + + 79 + + + + + 72 + + + @@ -1693,10 +871,6 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -1725,54 +899,12 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -1794,20 +926,17 @@ LLAppDelegate NSObject - - LLOpenGLView - LLNSWindow - - - - glview - LLOpenGLView - - + + window + LLNSWindow + + + window + window LLNSWindow - + IBProjectSource ./Classes/LLAppDelegate.h @@ -1821,14 +950,6 @@ ./Classes/LLNSWindow.h - - LLOpenGLView - NSOpenGLView - - IBProjectSource - ./Classes/LLOpenGLView.h - - 0