From 8f87f2ce894f6ba017581abb89e2e0927067bed7 Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Fri, 5 Apr 2013 15:49:20 +0000 Subject: I've just realised that the JS puzzles' permalinks were not updating when the user pressed 'n' for a new game, because all the front end knows is that it passed a keystroke to the puzzle, and it has no way of hearing back that a particular keypress resulted in a game id change. To fix this, I've renamed midend_request_desc_changes to midend_request_id_changes and expanded its remit to cover _any_ change to the game ids. So now that callback in the Emscripten front end is the only place from which update_permalinks is called (apart from initialising them at setup time), and that should handle everything. [originally from svn r9805] --- emcc.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'emcc.c') diff --git a/emcc.c b/emcc.c index 7c436c1..9badcc9 100644 --- a/emcc.c +++ b/emcc.c @@ -313,10 +313,10 @@ static void update_permalinks(void) } /* - * Callback from the midend if Mines supersedes its game description, - * so we can update the permalinks. + * Callback from the midend when the game ids change, so we can update + * the permalinks. */ -static void desc_changed(void *ignored) +static void ids_changed(void *ignored) { update_permalinks(); } @@ -598,7 +598,6 @@ static void cfg_end(int use_results) midend_new_game(me); resize(); midend_redraw(me); - update_permalinks(); free_cfg(cfg); js_dialog_cleanup(); } @@ -653,7 +652,6 @@ void command(int n) */ midend_set_params(me, presets[i]); midend_new_game(me); - update_permalinks(); resize(); midend_redraw(me); update_undo_redo(); @@ -802,11 +800,11 @@ int main(int argc, char **argv) } /* - * Request notification if a puzzle (hopefully only ever Mines) - * supersedes its game description, so that we can proactively - * update the permalink. + * Request notification when the game ids change (e.g. if the user + * presses 'n', and also when Mines supersedes its game + * description), so that we can proactively update the permalink. */ - midend_request_desc_changes(me, desc_changed, NULL); + midend_request_id_changes(me, ids_changed, NULL); /* * Draw the puzzle's initial state, and set up the permalinks and -- cgit v1.1