fix : focus after quality change
All checks were successful
release / build (push) Successful in 28s
release / verify-windows (push) Successful in 1m26s

This commit is contained in:
jeanotx32
2026-08-12 14:44:11 +02:00
parent 043823600b
commit d8846aac9a
3 changed files with 48 additions and 2 deletions

View File

@@ -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',