1
0
mirror of https://github.com/OpenTTD/OpenTTD.git synced 2025-08-29 09:29:10 +00:00

Fix: [Emscripten] open links in browser (#8655)

This commit is contained in:
embeddedt
2021-02-08 13:18:30 -05:00
committed by GitHub
parent ac2b5e57cf
commit 6c8f2227cd
2 changed files with 39 additions and 1 deletions

View File

@@ -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;