From 4d544d7b5614cd33bf60c1b610f8b81546955fbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Sat, 13 Feb 2021 16:16:20 +0100 Subject: [PATCH] main: Only restore key focus on pop when modal actor is still focused If something grabs the key focus while a modal is pushed, keeping key-focus on that actor seems like the smarter thing to do than setting it back to the last focus after the modal gets popped again. So check if the key focus actor that we set when pushing the modal got changed when popping that modal, and if it got changed, simply don't touch key focus. This fixes a bug with the close dialog, where key focus isn't correctly set to the dialog after alt-tabbing to a window showing a close dialog. Part-of: --- js/ui/main.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/js/ui/main.js b/js/ui/main.js index 4ba3faa8c..23e36aba5 100644 --- a/js/ui/main.js +++ b/js/ui/main.js @@ -755,7 +755,8 @@ export function popModal(grab, timestamp) { if (record.prevFocus) record.prevFocus.disconnect(record.prevFocusDestroyId); actionMode = record.actionMode; - global.stage.set_key_focus(record.prevFocus); + if (global.stage.key_focus === record.actor) + global.stage.set_key_focus(record.prevFocus); } else { // If we have: // global.stage.set_focus(a);