diff options
author | Monroe Linden <monroe@lindenlab.com> | 2010-02-05 18:23:16 -0800 |
---|---|---|
committer | Monroe Linden <monroe@lindenlab.com> | 2010-02-05 18:23:16 -0800 |
commit | 8b0ae67e73a82940d3e7004eb17081a8ca4b8594 (patch) | |
tree | dc273c6a624811071b508a39cf1a5cebbaa9b490 | |
parent | 38acc15849a0f32ef45a0d668f492b1c6aa65c74 (diff) |
Changed LLWindowWin32::getNativeKeyData() to use platform-specific names in the key data.
Changed MediaPluginWebkit::deserializeKeyboardData() to use platform-specific names when extracting the key data. Also fixed a mac-specific issue where the arguments were reversed, which was causing flash apps to get bad keycode data.
Just pass 0 for the "native modifiers" param on windows, since it doesn't seem to actually have a native notion of a "modifier keys mask". The Qt (non-native) modifiers should be good enough.
-rw-r--r-- | indra/llwindow/llwindowwin32.cpp | 16 | ||||
-rw-r--r-- | indra/media_plugins/webkit/media_plugin_webkit.cpp | 26 |
2 files changed, 16 insertions, 26 deletions
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index 1b9331e784..4c63938415 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -3053,20 +3053,8 @@ LLSD LLWindowWin32::getNativeKeyData() { LLSD result = LLSD::emptyMap(); - // would like to use LLQtWebKit::KM_MODIFIER_SHIFT but don't want - // make the client depend on llQtWebKit so pass over as an int - // (not bool so we can to modifier list later) - S32 modifiers = 0; - if ( GetKeyState( VK_SHIFT ) ) - { - modifiers = 1; - }; - - // these LLSD names are a little confusing here but they - // make more sense on the Mac specific version and that was done first - result["key_code"] = (S32)mKeyScanCode; - result["char_code"] = (S32)mKeyVirtualKey; - result["modifiers"] = modifiers; + result["scan_code"] = (S32)mKeyScanCode; + result["virtual_key"] = (S32)mKeyVirtualKey; return result; } diff --git a/indra/media_plugins/webkit/media_plugin_webkit.cpp b/indra/media_plugins/webkit/media_plugin_webkit.cpp index 56b9250393..b147b1d96a 100644 --- a/indra/media_plugins/webkit/media_plugin_webkit.cpp +++ b/indra/media_plugins/webkit/media_plugin_webkit.cpp @@ -474,21 +474,23 @@ private: // void deserializeKeyboardData( LLSD native_key_data, uint32_t& native_scan_code, uint32_t& native_virtual_key, uint32_t& native_modifiers ) { + native_scan_code = 0; + native_virtual_key = 0; + native_modifiers = 0; + if( native_key_data.isMap() ) { - // these LLSD names are a little confusing here but they - // make more sense on the Mac specific version and that was done first - native_scan_code = (uint32_t)(native_key_data["key_code"].asInteger()); - native_virtual_key = (uint32_t)(native_key_data["char_code"].asInteger()); +#if LL_DARWIN + native_scan_code = (uint32_t)(native_key_data["char_code"].asInteger()); + native_virtual_key = (uint32_t)(native_key_data["key_code"].asInteger()); native_modifiers = (uint32_t)(native_key_data["modifiers"].asInteger()); - - // would like to use LLQtWebKit::KM_MODIFIER_SHIFT but don't want - // make the client depend on llQtWebKit so pass over as an int - // (not bool so we can to modifier list later) - if ( native_modifiers == 1 ) - native_modifiers = LLQtWebKit::KM_MODIFIER_SHIFT; - else - native_modifiers = LLQtWebKit::KM_MODIFIER_NONE; +#elif LL_WINDOWS + native_scan_code = (uint32_t)(native_key_data["scan_code"].asInteger()); + native_virtual_key = (uint32_t)(native_key_data["virtual_key"].asInteger()); + // TODO: I don't think we need to do anything with native modifiers here -- please verify +#else + // Add other platforms here as needed +#endif }; }; |