diff options
| author | Simon Tatham <anakin@pobox.com> | 2013-04-05 15:49:20 +0000 |
|---|---|---|
| committer | Simon Tatham <anakin@pobox.com> | 2013-04-05 15:49:20 +0000 |
| commit | 8f87f2ce894f6ba017581abb89e2e0927067bed7 (patch) | |
| tree | f5a2c1edaed00eeaec5d3093c1faf27365a177ac /emcc.c | |
| parent | 841c9318f3bc8a368224af4931f2f007ff288b0a (diff) | |
| download | puzzles-8f87f2ce894f6ba017581abb89e2e0927067bed7.zip puzzles-8f87f2ce894f6ba017581abb89e2e0927067bed7.tar.gz puzzles-8f87f2ce894f6ba017581abb89e2e0927067bed7.tar.bz2 puzzles-8f87f2ce894f6ba017581abb89e2e0927067bed7.tar.xz | |
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]
Diffstat (limited to 'emcc.c')
| -rw-r--r-- | emcc.c | 16 |
1 files changed, 7 insertions, 9 deletions
@@ -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 |