From a0c2ce95a2dc4156166c88fd20a12457d4a1dc42 Mon Sep 17 00:00:00 2001 From: TomeDev <tomedev@cpe-74-71-245-111.nyc.res.rr.com> Date: Tue, 6 May 2014 02:45:48 -0400 Subject: [PATCH] mac updates to webview --- src/web-cef3/web.cpp | 90 ++++++++++++++++++++++---------------------- src/web.c | 7 +++- 2 files changed, 51 insertions(+), 46 deletions(-) diff --git a/src/web-cef3/web.cpp b/src/web-cef3/web.cpp index 4a80a3449f..77dcf36288 100644 --- a/src/web-cef3/web.cpp +++ b/src/web-cef3/web.cpp @@ -578,82 +578,82 @@ void te4_web_inject_key(web_view_type *view, int scancode, int asymb, const char key_event.windows_key_code = VkCode; #elif defined(SELFEXE_MACOSX) if (key_code == SDLK_BACKSPACE) { - cef_event.native_key_code = kVK_Delete; - cef_event.unmodified_character = kBackspaceCharCode; + key_event.native_key_code = kVK_Delete; + key_event.unmodified_character = kBackspaceCharCode; } else if (key_code == SDLK_DELETE) { - cef_event.native_key_code = kVK_ForwardDelete; - cef_event.unmodified_character = kDeleteCharCode; + key_event.native_key_code = kVK_ForwardDelete; + key_event.unmodified_character = kDeleteCharCode; } else if (key_code == SDLK_DOWN) { - cef_event.native_key_code = kVK_DownArrow; - cef_event.unmodified_character = /* NSDownArrowFunctionKey */ 0xF701; + key_event.native_key_code = kVK_DownArrow; + key_event.unmodified_character = /* NSDownArrowFunctionKey */ 0xF701; } else if (key_code == SDLK_RETURN) { - cef_event.native_key_code = kVK_Return; - cef_event.unmodified_character = kReturnCharCode; + key_event.native_key_code = kVK_Return; + key_event.unmodified_character = kReturnCharCode; } else if (key_code == SDLK_ESCAPE) { - cef_event.native_key_code = kVK_Escape; - cef_event.unmodified_character = kEscapeCharCode; + key_event.native_key_code = kVK_Escape; + key_event.unmodified_character = kEscapeCharCode; } else if (key_code == SDLK_LEFT) { - cef_event.native_key_code = kVK_LeftArrow; - cef_event.unmodified_character = /* NSLeftArrowFunctionKey */ 0xF702; + key_event.native_key_code = kVK_LeftArrow; + key_event.unmodified_character = /* NSLeftArrowFunctionKey */ 0xF702; } else if (key_code == SDLK_RIGHT) { - cef_event.native_key_code = kVK_RightArrow; - cef_event.unmodified_character = /* NSRightArrowFunctionKey */ 0xF703; + key_event.native_key_code = kVK_RightArrow; + key_event.unmodified_character = /* NSRightArrowFunctionKey */ 0xF703; } else if (key_code == SDLK_TAB) { - cef_event.native_key_code = kVK_Tab; - cef_event.unmodified_character = kTabCharCode; + key_event.native_key_code = kVK_Tab; + key_event.unmodified_character = kTabCharCode; } else if (key_code == SDLK_UP) { - cef_event.native_key_code = kVK_UpArrow; - cef_event.unmodified_character = /* NSUpArrowFunctionKey */ 0xF700; + key_event.native_key_code = kVK_UpArrow; + key_event.unmodified_character = /* NSUpArrowFunctionKey */ 0xF700; } else { - cef_event.native_key_code = GetMacKeyCodeFromChar(key_code); - if (cef_event.native_key_code == -1) + key_event.native_key_code = GetMacKeyCodeFromChar(key_code); + if (key_event.native_key_code == -1) return; - cef_event.unmodified_character = key_code; + key_event.unmodified_character = key_code; } - cef_event.character = cef_event.unmodified_character; + key_event.character = key_event.unmodified_character; // Fill in |character| according to flags. - if (cef_event.modifiers & EVENTFLAG_SHIFT_DOWN) { + if (key_event.modifiers & EVENTFLAG_SHIFT_DOWN) { if (key_code >= '0' && key_code <= '9') { - cef_event.character = kShiftCharsForNumberKeys[key_code - '0']; + key_event.character = kShiftCharsForNumberKeys[key_code - '0']; } else if (key_code >= 'A' && key_code <= 'Z') { - cef_event.character = 'A' + (key_code - 'A'); + key_event.character = 'A' + (key_code - 'A'); } else { - switch (cef_event.native_key_code) { + switch (key_event.native_key_code) { case kVK_ANSI_Grave: - cef_event.character = '~'; + key_event.character = '~'; break; case kVK_ANSI_Minus: - cef_event.character = '_'; + key_event.character = '_'; break; case kVK_ANSI_Equal: - cef_event.character = '+'; + key_event.character = '+'; break; case kVK_ANSI_LeftBracket: - cef_event.character = '{'; + key_event.character = '{'; break; case kVK_ANSI_RightBracket: - cef_event.character = '}'; + key_event.character = '}'; break; case kVK_ANSI_Backslash: - cef_event.character = '|'; + key_event.character = '|'; break; case kVK_ANSI_Semicolon: - cef_event.character = ':'; + key_event.character = ':'; break; case kVK_ANSI_Quote: - cef_event.character = '\"'; + key_event.character = '\"'; break; case kVK_ANSI_Comma: - cef_event.character = '<'; + key_event.character = '<'; break; case kVK_ANSI_Period: - cef_event.character = '>'; + key_event.character = '>'; break; case kVK_ANSI_Slash: - cef_event.character = '?'; + key_event.character = '?'; break; default: break; @@ -662,15 +662,15 @@ void te4_web_inject_key(web_view_type *view, int scancode, int asymb, const char } // Control characters. - if (cef_event.modifiers & EVENTFLAG_CONTROL_DOWN) { + if (key_event.modifiers & EVENTFLAG_CONTROL_DOWN) { if (key_code >= 'A' && key_code <= 'Z') - cef_event.character = 1 + key_code - 'A'; - else if (cef_event.native_key_code == kVK_ANSI_LeftBracket) - cef_event.character = 27; - else if (cef_event.native_key_code == kVK_ANSI_Backslash) - cef_event.character = 28; - else if (cef_event.native_key_code == kVK_ANSI_RightBracket) - cef_event.character = 29; + key_event.character = 1 + key_code - 'A'; + else if (key_event.native_key_code == kVK_ANSI_LeftBracket) + key_event.character = 27; + else if (key_event.native_key_code == kVK_ANSI_Backslash) + key_event.character = 28; + else if (key_event.native_key_code == kVK_ANSI_RightBracket) + key_event.character = 29; } #else // Try a fallback.. diff --git a/src/web.c b/src/web.c index f4a2e05fe2..8a2622dc22 100644 --- a/src/web.c +++ b/src/web.c @@ -509,7 +509,12 @@ void te4_web_load() { #elif defined(SELFEXE_WINDOWS) void *web = SDL_LoadObject("te4-web.dll"); #elif defined(SELFEXE_MACOSX) - void *web = SDL_LoadObject("libte4-web.dylib"); + const char *self = get_self_executable(g_argc, g_argv); + const char *name = "libte4-web.dylib"; + char *lib = malloc(strlen(self) + strlen(name) + 1); + strcpy(lib, self); + strcpy(lib+strlen(self), name); + void *web = SDL_LoadObject(lib); #else void *web = NULL; #endif -- GitLab