Browse Source

Handle command key on OS X WebView

Josh Engebretson 10 năm trước cách đây
mục cha
commit
8944c35b69

+ 1 - 1
Source/AtomicWebView/WebClient.cpp

@@ -413,7 +413,7 @@ void WebClient::SendKeyEvent(const StringHash eventType, VariantMap& eventData)
 
     CefKeyEvent keyEvent;
 
-    if (!ConvertKeyEvent(eventType, eventData, keyEvent))
+    if (!ConvertKeyEvent(GetSubsystem<Input>(), eventType, eventData, keyEvent))
         return;
 
     host->SendKeyEvent(keyEvent);

+ 3 - 1
Source/AtomicWebView/WebKeyboard.h

@@ -6,7 +6,9 @@
 namespace Atomic
 {
 
-bool ConvertKeyEvent(const StringHash eventType, VariantMap& eventData, CefKeyEvent& keyEvent);
+class Input;
+
+bool ConvertKeyEvent(Input* input, const StringHash eventType, VariantMap& eventData, CefKeyEvent& keyEvent);
 bool ConvertTextInputEvent(const StringHash eventType, VariantMap& eventData, CefKeyEvent& keyEvent);
 
 struct WebKeyEvent

+ 6 - 1
Source/AtomicWebView/WebKeyboardMac.cpp

@@ -43,7 +43,7 @@ static bool SDLScanCodeToDarwinScanCode(SDL_Scancode code, int& darwinScanCode)
 
 }
 
-bool ConvertKeyEvent(const StringHash eventType, VariantMap& eventData, CefKeyEvent& keyEvent)
+bool ConvertKeyEvent(Input* input, const StringHash eventType, VariantMap& eventData, CefKeyEvent& keyEvent)
 {
     if (eventType != "KeyDown" && eventType != "KeyUp")
     {
@@ -75,6 +75,11 @@ bool ConvertKeyEvent(const StringHash eventType, VariantMap& eventData, CefKeyEv
     if (wk.qual & QUAL_CTRL)
         keyEvent.modifiers |= EVENTFLAG_CONTROL_DOWN;
 
+    bool superdown = input->GetKeyDown(KEY_LGUI) || input->GetKeyDown(KEY_RGUI);
+
+    if (superdown)
+        keyEvent.modifiers |= EVENTFLAG_COMMAND_DOWN;
+
 
     int darwinScanCode;
     if (SDLScanCodeToDarwinScanCode((SDL_Scancode) wk.scanCode, darwinScanCode))

+ 1 - 1
Source/AtomicWebView/WebKeyboardWindows.cpp

@@ -73,7 +73,7 @@ static bool SDLScanCodeToWindowsScanCode(SDL_Scancode code, LPARAM& lParam, WPAR
 
 }
 
-bool ConvertKeyEvent(const StringHash eventType, VariantMap& eventData, CefKeyEvent& keyEvent)
+bool ConvertKeyEvent(Input* input, const StringHash eventType, VariantMap& eventData, CefKeyEvent& keyEvent)
 {
     if (eventType != "KeyDown" && eventType != "KeyUp")
     {