summaryrefslogtreecommitdiff
path: root/os
diff options
context:
space:
mode:
authorembeddedt <42941056+embeddedt@users.noreply.github.com>2021-02-08 13:18:30 -0500
committerGitHub <noreply@github.com>2021-02-08 19:18:30 +0100
commit6c8f2227cdc01c978ec1cbf08a93925e148175b8 (patch)
tree810401a7745c4b21c25bfa39b71786995ecc272d /os
parentac2b5e57cf2805eb24370b664380322d62a04eff (diff)
downloadopenttd-6c8f2227cdc01c978ec1cbf08a93925e148175b8.tar.xz
Fix: [Emscripten] open links in browser (#8655)
Diffstat (limited to 'os')
-rw-r--r--os/emscripten/pre.js28
1 files changed, 28 insertions, 0 deletions
diff --git a/os/emscripten/pre.js b/os/emscripten/pre.js
index 5cbd899e0..1563e4f95 100644
--- a/os/emscripten/pre.js
+++ b/os/emscripten/pre.js
@@ -71,6 +71,34 @@ Module.preRun.push(function() {
* add_server("localhost", 3979); */
}
+ var leftButtonDown = false;
+ document.addEventListener("mousedown", e => {
+ if (e.button == 0) {
+ leftButtonDown = true;
+ }
+ });
+ document.addEventListener("mouseup", e => {
+ if (e.button == 0) {
+ leftButtonDown = false;
+ }
+ });
+ window.openttd_open_url = function(url, url_len) {
+ const url_string = UTF8ToString(url, url_len);
+ function openWindow() {
+ document.removeEventListener("mouseup", openWindow);
+ window.open(url_string, '_blank');
+ }
+ /* Trying to open the URL while the mouse is down results in the button getting stuck, so wait for the
+ * mouse to be released before opening it. However, when OpenTTD is lagging, the mouse can get released
+ * before the button click even registers, so check for that, and open the URL immediately if that's the
+ * case. */
+ if (leftButtonDown) {
+ document.addEventListener("mouseup", openWindow);
+ } else {
+ openWindow();
+ }
+ }
+
/* https://github.com/emscripten-core/emscripten/pull/12995 implements this
* properly. Till that time, we use a polyfill. */
SOCKFS.websocket_sock_ops.createPeer_ = SOCKFS.websocket_sock_ops.createPeer;