From 8c44a6e2552fc76ac54ce4e22a2fd66e21e5c25e Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Fri, 9 Oct 2026 03:33:27 +0900 Subject: [PATCH] fix: user-facing Steam client name not available until Options populated The old method was checking the active ComboBox string after the Options page was initialized, but before it was actually populated with the real setting. This caused it to always return the string 'Steam' instead of the actual client name. --- dzgui/controllers/mc.py | 4 ++-- dzgui/managers/connection.py | 2 +- dzgui/views/components/misc.py | 11 +++++++++-- dzgui/views/pages/options.py | 5 ++--- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/dzgui/controllers/mc.py b/dzgui/controllers/mc.py index 200cc1b..59d2dd2 100644 --- a/dzgui/controllers/mc.py +++ b/dzgui/controllers/mc.py @@ -541,8 +541,8 @@ class Controller(GObject.GObject): def update_status(self) -> None: self.mediator.preconnect.mark_finished() - def get_steam_client_name(self) -> str: - return self.mediator.options.get_client_name() + def get_steam_client_name(self, cmd: str) -> str: + return self.mediator.options.get_client_name(cmd) def present_window(self) -> None: self.mediator.window.present_with_time(Gdk.CURRENT_TIME) diff --git a/dzgui/managers/connection.py b/dzgui/managers/connection.py index 2fbd91a..ffce732 100644 --- a/dzgui/managers/connection.py +++ b/dzgui/managers/connection.py @@ -184,8 +184,8 @@ class ConnectionManager: else: allows_downloads = (True, "") - client_name = self.controller.get_steam_client_name() client = self.controller.query_config(Preferences.CLIENT) + client_name = self.controller.get_steam_client_name(client) running = is_steam_running(client) steam_proc = SteamProcess(client_name, running) self.client = client diff --git a/dzgui/views/components/misc.py b/dzgui/views/components/misc.py index fa8e29c..9186246 100644 --- a/dzgui/views/components/misc.py +++ b/dzgui/views/components/misc.py @@ -15,7 +15,7 @@ class ClientCombo(Gtk.ComboBox): super().__init__() self.client_store = Gtk.ListStore(str, str) - clients = ( + self.clients = ( ( options.steam_combo, STEAM_CMD, @@ -29,7 +29,7 @@ class ClientCombo(Gtk.ComboBox): FLATPAK_SANDBOX, ), ) - for client in clients: + for client in self.clients: self.client_store.append(client) self.set_model(self.client_store) renderer_text = Gtk.CellRendererText() @@ -37,6 +37,13 @@ class ClientCombo(Gtk.ComboBox): self.add_attribute(renderer_text, "text", 0) self.set_active(0) + def get_client_human_readable(self, cmd: str) -> str: + for client in self.clients: + human, command = client + if command == cmd: + return human + raise TypeError("Not a valid Steam client selection") + class ErrorPopover(Gtk.Popover): def __init__(self, relative_to: Gtk.Widget, position: Gtk.PositionType) -> None: super().__init__(relative_to=relative_to, position=position) diff --git a/dzgui/views/pages/options.py b/dzgui/views/pages/options.py index 93341ec..4d47d8b 100644 --- a/dzgui/views/pages/options.py +++ b/dzgui/views/pages/options.py @@ -371,10 +371,9 @@ class Options(ScrollableMixin, Gtk.ScrolledWindow): # type: ignore self.connect("key-press-event", self._on_keypress) - def get_client_name(self) -> str: + def get_client_name(self, cmd: str) -> str: model = self.client_combo.get_model() - ind = self.client_combo.get_active() - return str(model[ind][0]) + return self.client_combo.get_client_human_readable(cmd) def block_text_entry(self) -> None: self.steam_box.block_text_entry()