aboutsummaryrefslogtreecommitdiff
path: root/emccpre.js
diff options
context:
space:
mode:
authorBen Harris <bjh21@bjh21.me.uk>2022-11-05 17:15:52 +0000
committerBen Harris <bjh21@bjh21.me.uk>2022-11-08 10:27:19 +0000
commitc5a2446fae603a480de58b912fa349549bd9f247 (patch)
tree3d71feca6cde2cb4ab53f0b599e46ec39202de27 /emccpre.js
parent4a37f7cf782592b670d0180a38eb1fd680288421 (diff)
downloadpuzzles-c5a2446fae603a480de58b912fa349549bd9f247.zip
puzzles-c5a2446fae603a480de58b912fa349549bd9f247.tar.gz
puzzles-c5a2446fae603a480de58b912fa349549bd9f247.tar.bz2
puzzles-c5a2446fae603a480de58b912fa349549bd9f247.tar.xz
js: Cancel UI events when the mid end says they've been handled
This means that if a key doesn't do anything in a puzzle, it can operate the browser instead.
Diffstat (limited to 'emccpre.js')
-rw-r--r--emccpre.js15
1 files changed, 9 insertions, 6 deletions
diff --git a/emccpre.js b/emccpre.js
index d234974..22c462b 100644
--- a/emccpre.js
+++ b/emccpre.js
@@ -254,7 +254,7 @@ function initPuzzle() {
// Set up mouse handlers. We do a bit of tracking of the currently
// pressed mouse buttons, to avoid sending mousemoves with no
// button down (our puzzles don't want those events).
- mousedown = Module.cwrap('mousedown', 'void',
+ mousedown = Module.cwrap('mousedown', 'boolean',
['number', 'number', 'number']);
button_phys2log = [null, null, null];
@@ -277,21 +277,23 @@ function initPuzzle() {
else if (event.ctrlKey)
logbutton = 2; // Ctrl-click overrides to right button
- mousedown(xy.x, xy.y, logbutton);
+ if (mousedown(xy.x, xy.y, logbutton))
+ event.preventDefault();
button_phys2log[event.button] = logbutton;
onscreen_canvas.setCapture(true);
};
- mousemove = Module.cwrap('mousemove', 'void',
+ mousemove = Module.cwrap('mousemove', 'boolean',
['number', 'number', 'number']);
onscreen_canvas.onmousemove = function(event) {
var down = buttons_down();
if (down) {
var xy = canvas_mouse_coords(event, onscreen_canvas);
- mousemove(xy.x, xy.y, down);
+ if (mousemove(xy.x, xy.y, down))
+ event.preventDefault();
}
};
- mouseup = Module.cwrap('mouseup', 'void',
+ mouseup = Module.cwrap('mouseup', 'boolean',
['number', 'number', 'number']);
onscreen_canvas.onmouseup = function(event) {
if (event.button >= 3)
@@ -299,7 +301,8 @@ function initPuzzle() {
if (button_phys2log[event.button] !== null) {
var xy = canvas_mouse_coords(event, onscreen_canvas);
- mouseup(xy.x, xy.y, button_phys2log[event.button]);
+ if (mouseup(xy.x, xy.y, button_phys2log[event.button]))
+ event.preventDefault();
button_phys2log[event.button] = null;
}
};