diff --git a/emcc.c b/emcc.c index 3f009ef..453637b 100644 --- a/emcc.c +++ b/emcc.c @@ -80,6 +80,7 @@ extern void js_canvas_free_blitter(int id); extern void js_canvas_copy_to_blitter(int id, int x, int y, int w, int h); extern void js_canvas_copy_from_blitter(int id, int x, int y, int w, int h); extern void js_canvas_make_statusbar(void); +extern void js_canvas_remove_statusbar(void); extern void js_canvas_set_statusbar(const char *text); extern void js_canvas_set_size(int w, int h); extern double js_get_device_pixel_ratio(); @@ -958,6 +959,8 @@ int main(int argc, char **argv) */ if (midend_wants_statusbar(me)) js_canvas_make_statusbar(); + else + js_canvas_remove_statusbar(); /* * Set up the game-type dropdown with presets and/or the Custom diff --git a/emcclib.js b/emcclib.js index dad1475..d2316f1 100644 --- a/emcclib.js +++ b/emcclib.js @@ -518,11 +518,24 @@ mergeInto(LibraryManager.library, { * back end turns out to want one. */ js_canvas_make_statusbar: function() { - var statusholder = document.getElementById("statusbarholder"); - statusbar = document.createElement("div"); - statusbar.id = "statusbar"; - statusbar.appendChild(document.createTextNode(" ")); - statusholder.appendChild(statusbar); + if (statusbar === null) { + var statusholder = document.getElementById("statusbarholder"); + statusbar = document.createElement("div"); + statusbar.id = "statusbar"; + statusbar.appendChild(document.createTextNode(" ")); + statusholder.appendChild(statusbar); + } + }, + + /* + * void js_canvas_remove_statusbar(void); + * + * Cause a status bar not to exist. Called at setup time if the + * puzzle back end turns out not to want one. + */ + js_canvas_remove_statusbar: function() { + if (statusbar !== null) + statusbar.parentNode.removeChild(statusbar); }, /* @@ -531,9 +544,7 @@ mergeInto(LibraryManager.library, { * Set the text in the status bar. */ js_canvas_set_statusbar: function(ptr) { - var text = UTF8ToString(ptr); - statusbar.replaceChild(document.createTextNode(text), - statusbar.lastChild); + statusbar.textContent = UTF8ToString(ptr); }, /* diff --git a/emccpre.js b/emccpre.js index 78e949e..61ce21e 100644 --- a/emccpre.js +++ b/emccpre.js @@ -443,9 +443,10 @@ function initPuzzle() { ['number','number']); timer_callback = Module.cwrap('timer_callback', 'void', ['number']); - // Save references to the two permalinks. + // Save references to the two permalinks and the status bar. permalink_desc = document.getElementById("permalink-desc"); permalink_seed = document.getElementById("permalink-seed"); + statusbar = document.getElementById("statusbar"); resizable_div = document.getElementById("resizable"); if (resizable_div !== null) {