shithub: puzzles

Download patch

ref: f8ed76f815494de031c86441bf392f8658ff383d
parent: db5d3bf10e934e86fcdb792f49ae5cf28e1a2a8c
author: Ben Harris <bjh21@bjh21.me.uk>
date: Sat Dec 3 18:51:12 EST 2022

js: Bypass our own dialogue box when loading

By constructing the <input type=file> off screen and activating it from
JavaScript, we can jump straight to the browser's upload dialogue box
without interposing our own one.  This gives a smoother experience, and
also avoids the difficult-to-handle <input type=file> ever being
visible.

--- a/emccpre.js
+++ b/emccpre.js
@@ -391,13 +391,10 @@
 
     document.getElementById("load").onclick = function(event) {
         if (dlg_dimmer === null) {
-            dialog_init("Upload saved-game file");
             var input = document.createElement("input");
             input.type = "file";
             input.multiple = false;
-            dlg_form.appendChild(input);
-            dlg_form.appendChild(document.createElement("br"));
-            dialog_launch(function(event) {
+            input.addEventListener("change", function(event) {
                 if (input.files.length == 1) {
                     var file = input.files.item(0);
                     var reader = new FileReader();
@@ -407,10 +404,9 @@
                     });
                     reader.readAsText(file);
                 }
-                dialog_cleanup();
-            }, function(event) {
-                dialog_cleanup();
             });
+            input.click();
+            onscreen_canvas.focus();
         }
     };