fix : focus after quality change
This commit is contained in:
@@ -261,6 +261,16 @@ export class FirefoxController {
|
||||
// Referme le menu sans rien changer.
|
||||
await this.pressEscape();
|
||||
}
|
||||
|
||||
// Le curseur reste sinon posé sur le bouton ou l'option cliquée : la barre
|
||||
// de contrôles du lecteur, elle, se garde visible tant qu'une souris réelle
|
||||
// la survole — un comportement voulu pour ne pas la faire disparaître sous
|
||||
// le curseur d'un vrai spectateur, mais qui la laisse affichée en
|
||||
// permanence ici puisque rien ne bouge plus ensuite. Un coin sûr : la barre
|
||||
// du haut du site (pas celle du lecteur), toujours visible d'après le
|
||||
// réglage plein écran plus haut, donc jamais partie du lecteur.
|
||||
await this.moveAway();
|
||||
|
||||
await this.send('input.releaseActions', { context: this.context }, 5000).catch(() => undefined);
|
||||
|
||||
return { ok: true, label: best.label, already: best.active };
|
||||
@@ -387,8 +397,13 @@ export class FirefoxController {
|
||||
let launched = false;
|
||||
this.starting = (async () => {
|
||||
// Rattachement d'abord : après un redémarrage de l'agent, la fenêtre est
|
||||
// toujours là — et c'est celle qu'OBS capture.
|
||||
if (await this.attach(2000)) return;
|
||||
// toujours là — et c'est celle qu'OBS capture. Généreux à dessein : un
|
||||
// faux négatif ici (le port répond, mais pas assez vite) déclenche
|
||||
// launch(), qui tue le profil verrouillé — donc la fenêtre qu'on
|
||||
// cherchait justement à retrouver. Un redémarrage de l'agent (mise à
|
||||
// jour comprise) tombe souvent pendant que la VM est encore occupée à
|
||||
// relancer Node ; mieux vaut patienter que rouvrir Firefox pour rien.
|
||||
if (await this.attach(8000)) return;
|
||||
launched = true;
|
||||
await this.launch();
|
||||
})();
|
||||
@@ -638,6 +653,25 @@ export class FirefoxController {
|
||||
await delay(150);
|
||||
}
|
||||
|
||||
/** Déplace le curseur vers un coin hors du lecteur, sans cliquer. */
|
||||
private async moveAway(): Promise<void> {
|
||||
await this.send(
|
||||
'input.performActions',
|
||||
{
|
||||
context: this.context,
|
||||
actions: [
|
||||
{
|
||||
type: 'pointer',
|
||||
id: 'stream-control-pointer',
|
||||
parameters: { pointerType: 'mouse' },
|
||||
actions: [{ type: 'pointerMove', x: 2, y: 2, origin: 'viewport' }],
|
||||
},
|
||||
],
|
||||
},
|
||||
5000,
|
||||
).catch(() => undefined);
|
||||
}
|
||||
|
||||
private async pressEscape(): Promise<void> {
|
||||
await this.send(
|
||||
'input.performActions',
|
||||
|
||||
Reference in New Issue
Block a user