diff --git a/Userland/Services/WindowServer/WMConnectionFromClient.cpp b/Userland/Services/WindowServer/WMConnectionFromClient.cpp
index df213a5047..49e383907f 100644
--- a/Userland/Services/WindowServer/WMConnectionFromClient.cpp
+++ b/Userland/Services/WindowServer/WMConnectionFromClient.cpp
@@ -63,8 +63,7 @@ void WMConnectionFromClient::set_active_window(i32 client_id, i32 window_id)
return;
}
auto& window = *(*it).value;
- WindowManager::the().minimize_windows(window, false);
- WindowManager::the().move_to_front_and_make_active(window);
+ WindowManager::the().restore_modal_chain(window);
}
void WMConnectionFromClient::popup_window_menu(i32 client_id, i32 window_id, Gfx::IntPoint const& screen_position)
diff --git a/Userland/Services/WindowServer/WindowManager.cpp b/Userland/Services/WindowServer/WindowManager.cpp
index 418b827cf0..90f014c22b 100644
--- a/Userland/Services/WindowServer/WindowManager.cpp
+++ b/Userland/Services/WindowServer/WindowManager.cpp
@@ -2124,6 +2124,16 @@ void WindowManager::did_popup_a_menu(Badge