Try to work around Chrome's mouse-grab woes.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6172 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
86d2f0e0d4
commit
29b5f51077
1 changed files with 21 additions and 4 deletions
|
@ -187,11 +187,27 @@ mergeInto(LibraryManager.library,
|
||||||
if (!document.fullscreenElement)
|
if (!document.fullscreenElement)
|
||||||
if (FTEC.evcb.wantfullscreen != 0)
|
if (FTEC.evcb.wantfullscreen != 0)
|
||||||
if ({{{makeDynCall('i')}}}(FTEC.evcb.wantfullscreen))
|
if ({{{makeDynCall('i')}}}(FTEC.evcb.wantfullscreen))
|
||||||
Module['canvas'].requestFullscreen();
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Module['canvas'].requestFullscreen();
|
||||||
|
}
|
||||||
|
catch(e)
|
||||||
|
{
|
||||||
|
console.log("requestFullscreen:");
|
||||||
|
console.log(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (FTEC.pointerwantlock != 0 && FTEC.pointerislocked == 0)
|
if (FTEC.pointerwantlock != 0 && FTEC.pointerislocked == 0)
|
||||||
{
|
{
|
||||||
FTEC.pointerislocked = -1; //don't repeat the request on every click. firefox has a fit at that, so require the mouse to leave the element or something before we retry.
|
FTEC.pointerislocked = -1; //don't repeat the request on every click. firefox has a fit at that, so require the mouse to leave the element or something before we retry.
|
||||||
Module['canvas'].requestPointerLock({unadjustedMovement: true});
|
Module['canvas'].requestPointerLock({unadjustedMovement: true}).catch(()=>{
|
||||||
|
Module['canvas'].requestPointerLock().then(()=>{
|
||||||
|
console.log("Your shitty browser doesn't support disabling mouse acceleration.");
|
||||||
|
}).catch(()=>{
|
||||||
|
FTEC.pointerislocked = 0; //failure. no real idea why. try again next frame though...
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
//fallthrough
|
//fallthrough
|
||||||
case 'mouseup':
|
case 'mouseup':
|
||||||
|
@ -306,6 +322,7 @@ mergeInto(LibraryManager.library,
|
||||||
{{{makeDynCall('viiii')}}}(FTEC.evcb.jbutton, gp.index, j, 0, true);
|
{{{makeDynCall('viiii')}}}(FTEC.evcb.jbutton, gp.index, j, 0, true);
|
||||||
console.log("Gamepad disconnected from index %d: %s", gp.index, gp.id);
|
console.log("Gamepad disconnected from index %d: %s", gp.index, gp.id);
|
||||||
break;
|
break;
|
||||||
|
case 'pointerlockerror':
|
||||||
case 'pointerlockchange':
|
case 'pointerlockchange':
|
||||||
case 'mozpointerlockchange':
|
case 'mozpointerlockchange':
|
||||||
case 'webkitpointerlockchange':
|
case 'webkitpointerlockchange':
|
||||||
|
@ -405,7 +422,7 @@ mergeInto(LibraryManager.library,
|
||||||
'touchstart', 'touchend', 'touchcancel', 'touchleave', 'touchmove',
|
'touchstart', 'touchend', 'touchcancel', 'touchleave', 'touchmove',
|
||||||
'dragenter', 'dragover', 'drop',
|
'dragenter', 'dragover', 'drop',
|
||||||
'message', 'resize',
|
'message', 'resize',
|
||||||
'pointerlockchange', 'mozpointerlockchange', 'webkitpointerlockchange',
|
'pointerlockerror', 'pointerlockchange', 'mozpointerlockchange', 'webkitpointerlockchange',
|
||||||
'focus', 'blur']; //try to fix alt-tab
|
'focus', 'blur']; //try to fix alt-tab
|
||||||
events.forEach(function(event)
|
events.forEach(function(event)
|
||||||
{
|
{
|
||||||
|
@ -413,7 +430,7 @@ mergeInto(LibraryManager.library,
|
||||||
});
|
});
|
||||||
|
|
||||||
var docevents = ['keypress', 'keydown', 'keyup',
|
var docevents = ['keypress', 'keydown', 'keyup',
|
||||||
'pointerlockchange', 'mozpointerlockchange', 'webkitpointerlockchange'];
|
'pointerlockerror', 'pointerlockchange', 'mozpointerlockchange', 'webkitpointerlockchange'];
|
||||||
docevents.forEach(function(event)
|
docevents.forEach(function(event)
|
||||||
{
|
{
|
||||||
document.addEventListener(event, FTEC.handleevent, true);
|
document.addEventListener(event, FTEC.handleevent, true);
|
||||||
|
|
Loading…
Reference in a new issue