Maelstrom: Update the lobby UI when gamepads are added or removed

From 940a5ea0556080d74987b57331fbed4d7a51bd07 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Sun, 5 Apr 2026 23:51:37 -0700
Subject: [PATCH] Update the lobby UI when gamepads are added or removed

---
 game/lobby.cpp | 10 ++++++++++
 game/lobby.h   |  1 +
 2 files changed, 11 insertions(+)

diff --git a/game/lobby.cpp b/game/lobby.cpp
index 376b5eef..e9a1d01a 100644
--- a/game/lobby.cpp
+++ b/game/lobby.cpp
@@ -313,6 +313,16 @@ LobbyDialogDelegate::OnPoll()
 	}
 }
 
+bool
+LobbyDialogDelegate::HandleEvent(const SDL_Event &event)
+{
+	if (event.type == SDL_EVENT_GAMEPAD_ADDED ||
+	    event.type == SDL_EVENT_GAMEPAD_REMOVED) {
+		m_game.UpdateUI();
+	}
+	return UIDialogDelegate::HandleEvent(event);
+}
+
 void
 LobbyDialogDelegate::SetHostOrJoin(void*, int value)
 {
diff --git a/game/lobby.h b/game/lobby.h
index d7fd3998..c9a6555d 100644
--- a/game/lobby.h
+++ b/game/lobby.h
@@ -46,6 +46,7 @@ class LobbyDialogDelegate : public UIDialogDelegate
 	virtual void OnShow() override;
 	virtual void OnHide() override;
 	virtual void OnPoll() override;
+	virtual bool HandleEvent(const SDL_Event &event) override;
 
 	void SendKick(int index);