Skip to content

Commit 56bbfbc

Browse files
committed
Removed capture and added preventDefaultDown, Up and Move instead. Also better passive handling and smaller listeners.
1 parent 0aea690 commit 56bbfbc

1 file changed

Lines changed: 68 additions & 44 deletions

File tree

src/input/mouse/MouseManager.js

Lines changed: 68 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,34 @@ var MouseManager = new Class({
4343
this.manager = inputManager;
4444

4545
/**
46-
* If true the DOM mouse events will have event.preventDefault applied to them, if false they will propagate fully.
46+
* If `true` the DOM `mousedown` event will have `preventDefault` set.
4747
*
48-
* @name Phaser.Input.Mouse.MouseManager#capture
48+
* @name Phaser.Input.Mouse.MouseManager#preventDefaultDown
4949
* @type {boolean}
5050
* @default true
51-
* @since 3.0.0
51+
* @since 3.50.0
52+
*/
53+
this.preventDefaultDown = true;
54+
55+
/**
56+
* If `true` the DOM `mouseup` event will have `preventDefault` set.
57+
*
58+
* @name Phaser.Input.Mouse.MouseManager#preventDefaultUp
59+
* @type {boolean}
60+
* @default true
61+
* @since 3.50.0
5262
*/
53-
this.capture = true;
63+
this.preventDefaultUp = true;
64+
65+
/**
66+
* If `true` the DOM `mousemove` event will have `preventDefault` set.
67+
*
68+
* @name Phaser.Input.Mouse.MouseManager#preventDefaultMove
69+
* @type {boolean}
70+
* @default true
71+
* @since 3.50.0
72+
*/
73+
this.preventDefaultMove = true;
5474

5575
/**
5676
* A boolean that controls if the Mouse Manager is enabled or not.
@@ -198,7 +218,11 @@ var MouseManager = new Class({
198218

199219
this.enabled = config.inputMouse;
200220
this.target = config.inputMouseEventTarget;
201-
this.capture = config.inputMouseCapture;
221+
this.passive = config.inputMousePassive;
222+
223+
this.preventDefaultDown = config.inputMousePreventDefaultDown;
224+
this.preventDefaultUp = config.inputMousePreventDefaultUp;
225+
this.preventDefaultMove = config.inputMousePreventDefaultMove;
202226

203227
if (!this.target)
204228
{
@@ -297,17 +321,25 @@ var MouseManager = new Class({
297321
*/
298322
startListeners: function ()
299323
{
324+
var target = this.target;
325+
326+
if (!target)
327+
{
328+
return;
329+
}
330+
300331
var _this = this;
301-
var canvas = this.manager.canvas;
302-
var autoFocus = (window && window.focus && this.manager.game.config.autoFocus);
332+
var manager = this.manager;
333+
var canvas = manager.canvas;
334+
var autoFocus = (window && window.focus && manager.game.config.autoFocus);
303335

304336
this.onMouseMove = function (event)
305337
{
306-
if (!event.defaultPrevented && _this.enabled && _this.manager && _this.manager.enabled)
338+
if (!event.defaultPrevented && _this.enabled && manager && manager.enabled)
307339
{
308-
_this.manager.onMouseMove(event);
340+
manager.onMouseMove(event);
309341

310-
if (_this.capture)
342+
if (_this.preventDefaultMove)
311343
{
312344
event.preventDefault();
313345
}
@@ -321,11 +353,11 @@ var MouseManager = new Class({
321353
window.focus();
322354
}
323355

324-
if (!event.defaultPrevented && _this.enabled && _this.manager && _this.manager.enabled)
356+
if (!event.defaultPrevented && _this.enabled && manager && manager.enabled)
325357
{
326-
_this.manager.onMouseDown(event);
358+
manager.onMouseDown(event);
327359

328-
if (_this.capture && event.target === canvas)
360+
if (_this.preventDefaultDown && event.target === canvas)
329361
{
330362
event.preventDefault();
331363
}
@@ -334,20 +366,20 @@ var MouseManager = new Class({
334366

335367
this.onMouseDownWindow = function (event)
336368
{
337-
if (!event.defaultPrevented && _this.enabled && _this.manager && _this.manager.enabled && event.target !== canvas)
369+
if (!event.defaultPrevented && _this.enabled && manager && manager.enabled && event.target !== canvas)
338370
{
339371
// Only process the event if the target isn't the canvas
340-
_this.manager.onMouseDown(event);
372+
manager.onMouseDown(event);
341373
}
342374
};
343375

344376
this.onMouseUp = function (event)
345377
{
346-
if (!event.defaultPrevented && _this.enabled && _this.manager && _this.manager.enabled)
378+
if (!event.defaultPrevented && _this.enabled && manager && manager.enabled)
347379
{
348-
_this.manager.onMouseUp(event);
380+
manager.onMouseUp(event);
349381

350-
if (_this.capture && event.target === canvas)
382+
if (_this.preventDefaultUp && event.target === canvas)
351383
{
352384
event.preventDefault();
353385
}
@@ -356,58 +388,50 @@ var MouseManager = new Class({
356388

357389
this.onMouseUpWindow = function (event)
358390
{
359-
if (!event.defaultPrevented && _this.enabled && _this.manager && _this.manager.enabled && event.target !== canvas)
391+
if (!event.defaultPrevented && _this.enabled && manager && manager.enabled && event.target !== canvas)
360392
{
361393
// Only process the event if the target isn't the canvas
362-
_this.manager.onMouseUp(event);
394+
manager.onMouseUp(event);
363395
}
364396
};
365397

366398
this.onMouseOver = function (event)
367399
{
368-
if (!event.defaultPrevented && _this.enabled && _this.manager && _this.manager.enabled)
400+
if (!event.defaultPrevented && _this.enabled && manager && manager.enabled)
369401
{
370-
_this.manager.setCanvasOver(event);
402+
manager.setCanvasOver(event);
371403
}
372404
};
373405

374406
this.onMouseOut = function (event)
375407
{
376-
if (!event.defaultPrevented && _this.enabled && _this.manager && _this.manager.enabled)
408+
if (!event.defaultPrevented && _this.enabled && manager && manager.enabled)
377409
{
378-
_this.manager.setCanvasOut(event);
410+
manager.setCanvasOut(event);
379411
}
380412
};
381413

382414
this.onMouseWheel = function (event)
383415
{
384-
if (!event.defaultPrevented && _this.enabled && _this.manager && _this.manager.enabled)
416+
if (!event.defaultPrevented && _this.enabled && manager && manager.enabled)
385417
{
386-
_this.manager.onMouseWheel(event);
418+
manager.onMouseWheel(event);
387419
}
388420
};
389421

390-
var target = this.target;
391-
392-
if (!target)
393-
{
394-
return;
395-
}
396-
397422
var passive = { passive: true };
398-
var nonPassive = { passive: false };
399423

400-
target.addEventListener('mousemove', this.onMouseMove, (this.capture) ? nonPassive : passive);
401-
target.addEventListener('mousedown', this.onMouseDown, (this.capture) ? nonPassive : passive);
402-
target.addEventListener('mouseup', this.onMouseUp, (this.capture) ? nonPassive : passive);
403-
target.addEventListener('mouseover', this.onMouseOver, (this.capture) ? nonPassive : passive);
404-
target.addEventListener('mouseout', this.onMouseOut, (this.capture) ? nonPassive : passive);
405-
target.addEventListener('wheel', this.onMouseWheel, (this.capture) ? nonPassive : passive);
424+
target.addEventListener('mousemove', this.onMouseMove);
425+
target.addEventListener('mousedown', this.onMouseDown);
426+
target.addEventListener('mouseup', this.onMouseUp);
427+
target.addEventListener('mouseover', this.onMouseOver, passive);
428+
target.addEventListener('mouseout', this.onMouseOut, passive);
429+
target.addEventListener('wheel', this.onMouseWheel, passive);
406430

407-
if (window && this.manager.game.config.inputWindowEvents)
431+
if (window && manager.game.config.inputWindowEvents)
408432
{
409-
window.top.addEventListener('mousedown', this.onMouseDownWindow, nonPassive);
410-
window.top.addEventListener('mouseup', this.onMouseUpWindow, nonPassive);
433+
window.top.addEventListener('mousedown', this.onMouseDownWindow, passive);
434+
window.top.addEventListener('mouseup', this.onMouseUpWindow, passive);
411435
}
412436

413437
if (Features.pointerLock)
@@ -418,7 +442,7 @@ var MouseManager = new Class({
418442

419443
_this.locked = (document.pointerLockElement === element || document.mozPointerLockElement === element || document.webkitPointerLockElement === element) ? true : false;
420444

421-
_this.manager.onPointerLockChange(event);
445+
manager.onPointerLockChange(event);
422446
};
423447

424448
document.addEventListener('pointerlockchange', this.pointerLockChange, true);

0 commit comments

Comments
 (0)