From cfde455e653185a9811cddc1ccafe70abfbe1251 Mon Sep 17 00:00:00 2001 From: Codex Date: Wed, 30 Sep 2026 20:48:12 -0300 Subject: [PATCH 1/3] fix: confirm window closing in the session switcher --- docs/TESTING.md | 1 + src/ConsoleMode/Resources/Strings.en-US.json | 3 + src/ConsoleMode/Resources/Strings.es-ES.json | 3 + src/ConsoleMode/Resources/Strings.pt-BR.json | 3 + .../Services/LocalizationService.cs | 3 + src/ConsoleMode/SessionMenuWindow.xaml | 32 ++++++- src/ConsoleMode/SessionMenuWindow.xaml.cs | 89 ++++++++++++++++++- 7 files changed, 128 insertions(+), 6 deletions(-) diff --git a/docs/TESTING.md b/docs/TESTING.md index 4c38d8a..7b9e276 100644 --- a/docs/TESTING.md +++ b/docs/TESTING.md @@ -125,6 +125,7 @@ Pré-condições: Ajustes → "Entrar ao conectar um controle" **ligado**; app n - [ ] A linha/card em foco ganha contorno branco e cresce um pouco; há som ao mover, confirmar e voltar. Resultado: ______ - [ ] Direcional entre o painel lateral e o grid de janelas (esquerda/direita) e dentro de cada um (cima/baixo) nunca fica "morto"; com o seletor (resolução, áudio, FPS) aberto o foco não escapa para trás. Resultado: ______ - [ ] **Janelas**: lista as janelas abertas (ícone, programa e título) em ordem de frente para trás. A traz a escolhida para a frente (restaura se estiver minimizada) e fecha o menu; X (□ no PlayStation) ou Delete pede para a janela fechar e o card some quando ela fecha; uma que pergunta "salvar?" mantém o card. Resultado: ______ +- [ ] **Confirmação ao fechar janela**: pelo X do controle, Delete e botão de fechar no cartão, aparece um modal com o título correto; Cancelar ou B mantém a janela aberta e devolve o foco ao cartão; confirmar fecha só a janela selecionada. Enquanto o modal está aberto, direcional, A, X e B não acionam opções atrás dele. Resultado: ______ - [ ] **Falha ao ativar uma janela**: abra o menu com o Bloco de Notas aberto, feche o Bloco de Notas por outro meio depois de a lista carregar (por exemplo, `taskkill /IM notepad.exe /F`) e escolha o card obsoleto com A. O menu continua aberto, o foco permanece no card e o log mostra `Janelas: trocar ... => não conseguiu`; uma falha do Windows ao trazer uma janela válida para frente também deve manter o menu aberto. Resultado: ______ - [ ] A lista não mostra o próprio menu, a barra de tarefas, a área de trabalho nem apps UWP suspensos; sem janelas mostra "Nenhuma janela aberta". Resultado: ______ - [ ] Em sessão (Big Picture/Playnite aberto): trocar para outra janela **não** restaura a mesa, e voltar ao Big Picture pelo grid funciona; uma janela aberta na tela de jogo aparece na lista. Resultado: ______ diff --git a/src/ConsoleMode/Resources/Strings.en-US.json b/src/ConsoleMode/Resources/Strings.en-US.json index 2d4eb52..a1f8075 100644 --- a/src/ConsoleMode/Resources/Strings.en-US.json +++ b/src/ConsoleMode/Resources/Strings.en-US.json @@ -96,6 +96,9 @@ "SwitcherEmpty": "No open windows", "SwitcherOpen": "Open", "SwitcherCloseWindow": "Close window", + "SwitcherCloseConfirmTitle": "Close this window?", + "SwitcherCloseConfirmBody": "{0} will be closed. If there are unsaved changes, the app may still ask you to save them.", + "SwitcherCloseConfirmAction": "Close window", "SessionPreviewBadge": "Preview · outside a session", "ConsoleActiveHint": "Or hold {0} on the controller for 1 second.", "ChooseRoleFor": "What does the {0} screen do?", diff --git a/src/ConsoleMode/Resources/Strings.es-ES.json b/src/ConsoleMode/Resources/Strings.es-ES.json index ca98ecf..875882a 100644 --- a/src/ConsoleMode/Resources/Strings.es-ES.json +++ b/src/ConsoleMode/Resources/Strings.es-ES.json @@ -96,6 +96,9 @@ "SwitcherEmpty": "No hay ventanas abiertas", "SwitcherOpen": "Abrir", "SwitcherCloseWindow": "Cerrar ventana", + "SwitcherCloseConfirmTitle": "¿Cerrar esta ventana?", + "SwitcherCloseConfirmBody": "Se cerrará {0}. Si hay cambios sin guardar, la aplicación todavía puede pedirte que los guardes.", + "SwitcherCloseConfirmAction": "Cerrar ventana", "SessionPreviewBadge": "Vista previa · fuera de la sesión", "ConsoleActiveHint": "O mantén {0} en el mando durante 1 segundo.", "ChooseRoleFor": "¿Qué hace la pantalla {0}?", diff --git a/src/ConsoleMode/Resources/Strings.pt-BR.json b/src/ConsoleMode/Resources/Strings.pt-BR.json index e1d68d8..1dcf2c5 100644 --- a/src/ConsoleMode/Resources/Strings.pt-BR.json +++ b/src/ConsoleMode/Resources/Strings.pt-BR.json @@ -96,6 +96,9 @@ "SwitcherEmpty": "Nenhuma janela aberta", "SwitcherOpen": "Abrir", "SwitcherCloseWindow": "Fechar janela", + "SwitcherCloseConfirmTitle": "Fechar esta janela?", + "SwitcherCloseConfirmBody": "{0} será fechado. Se houver alterações sem salvar, o aplicativo ainda poderá pedir que você as salve.", + "SwitcherCloseConfirmAction": "Fechar janela", "SessionPreviewBadge": "Prévia · fora da sessão", "ConsoleActiveHint": "Ou segure {0} no controle por 1 segundo.", "ChooseRoleFor": "O que a tela {0} faz?", diff --git a/src/ConsoleMode/Services/LocalizationService.cs b/src/ConsoleMode/Services/LocalizationService.cs index 0411804..0cdc86e 100644 --- a/src/ConsoleMode/Services/LocalizationService.cs +++ b/src/ConsoleMode/Services/LocalizationService.cs @@ -196,6 +196,9 @@ internal void NotifyAll() public string SwitcherEmpty => LocalizationService.Get(nameof(SwitcherEmpty)); public string SwitcherOpen => LocalizationService.Get(nameof(SwitcherOpen)); public string SwitcherCloseWindow => LocalizationService.Get(nameof(SwitcherCloseWindow)); + public string SwitcherCloseConfirmTitle => LocalizationService.Get(nameof(SwitcherCloseConfirmTitle)); + public string SwitcherCloseConfirmAction => LocalizationService.Get(nameof(SwitcherCloseConfirmAction)); + public string ShortcutCancel => LocalizationService.Get(nameof(ShortcutCancel)); public string BackgroundCard => LocalizationService.Get(nameof(BackgroundCard)); public string BackgroundDescription => LocalizationService.Get(nameof(BackgroundDescription)); public string BackgroundImageCard => LocalizationService.Get(nameof(BackgroundImageCard)); diff --git a/src/ConsoleMode/SessionMenuWindow.xaml b/src/ConsoleMode/SessionMenuWindow.xaml index 2029421..5865272 100644 --- a/src/ConsoleMode/SessionMenuWindow.xaml +++ b/src/ConsoleMode/SessionMenuWindow.xaml @@ -277,8 +277,9 @@ - + + + @@ -344,6 +351,25 @@ + + + + + + + +