js: Distinguish manual resizes from device pixel ratio changes

This adds a new callback, rescale_puzzle(), that's called when the
device pixel ratio changes.  This means that resize_puzzle() can safely
set the nominal canvas size, which means that manual resizing of the
puzzle now sticks.

Still missing: paying attention to the device pixel ratio when choosing
the initial (or reset) size.
This commit is contained in:
Ben Harris
2022-10-27 14:30:23 +01:00
parent 9783bbfbc0
commit fa58dd85b7
3 changed files with 14 additions and 3 deletions

11
emcc.c
View File

@ -195,8 +195,8 @@ static void resize(void)
canvas_h = h;
}
/* Called from JS when the user uses the resize handle */
void resize_puzzle(int w, int h)
/* Called from JS when the device pixel ratio changes */
void rescale_puzzle(int w, int h)
{
midend_size(me, &w, &h, true);
if (canvas_w != w || canvas_h != h) {
@ -207,6 +207,13 @@ void resize_puzzle(int w, int h)
}
}
/* Called from JS when the user uses the resize handle */
void resize_puzzle(int w, int h)
{
rescale_puzzle(w, h);
js_canvas_set_nominal_size();
}
/* Called from JS when the user uses the restore button */
void restore_puzzle_size(int w, int h)
{