From 1c154a709d9afc37dfb26c121b7481087017d3f6 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Tue, 4 Aug 2026 18:03:14 +0900 Subject: [PATCH 1/3] fix: repack certain pages to support mixins --- dzgui/views/mixins/cursor_mixin.py | 6 +++++- dzgui/views/pages/keys.py | 2 +- dzgui/views/pages/offline.py | 3 +++ dzgui/views/pages/options.py | 25 ++++++++++++++----------- 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/dzgui/views/mixins/cursor_mixin.py b/dzgui/views/mixins/cursor_mixin.py index 8c2bd32..37f1065 100644 --- a/dzgui/views/mixins/cursor_mixin.py +++ b/dzgui/views/mixins/cursor_mixin.py @@ -37,7 +37,11 @@ class CursorMixin: end = len(model) - 1 else: return False - cur_row = self.get_focused_row_index() # type: ignore + + try: + cur_row = self.get_focused_row_index() # type: ignore + except Exception: + return if position == CursorPosition.DOWN: if cur_row == end: diff --git a/dzgui/views/pages/keys.py b/dzgui/views/pages/keys.py index 0c75c32..ea12476 100644 --- a/dzgui/views/pages/keys.py +++ b/dzgui/views/pages/keys.py @@ -103,4 +103,4 @@ class Keybindings(ScrollableMixin, Gtk.ScrolledWindow): # type: ignore return grid def grab_content_area(self) -> None: - self.box.grab_focus() + self.grab_focus() diff --git a/dzgui/views/pages/offline.py b/dzgui/views/pages/offline.py index fcc70a2..f5baa9d 100644 --- a/dzgui/views/pages/offline.py +++ b/dzgui/views/pages/offline.py @@ -521,3 +521,6 @@ class OfflineLoader(Gtk.Box): self.mission_frame.present_folder_changed(mission) return self.offline_man.launch(appid, mission, local_mods, custom_folder, custom_mods) + + def grab_content_area(self) -> None: + self.local_frame.tree.grab_focus() diff --git a/dzgui/views/pages/options.py b/dzgui/views/pages/options.py index 54e205c..cc24853 100644 --- a/dzgui/views/pages/options.py +++ b/dzgui/views/pages/options.py @@ -20,11 +20,13 @@ from dzgui.const.enum import Preferences, ServerTab from dzgui.strings import errors, options from dzgui.util import strings, css, open_links +from dzgui.views.components.box import VBox from dzgui.views.components.labels import LeftLabel from dzgui.views.components.buttons import WebButton from dzgui.views.components.frame import HeadingFrame from dzgui.views.components.misc import ClientCombo from dzgui.views.dialogs.generic import ExceptionDialog +from dzgui.views.mixins.scrollable_mixin import ScrollableMixin import gi @@ -44,10 +46,9 @@ class ShortHBox(Gtk.Box): self.pack_start(widget, NO_EXPAND, NO_FILL, NO_PADDING) -class Options(Gtk.Box): +class Options(ScrollableMixin, Gtk.ScrolledWindow): def __init__(self, controller: "Controller"): super().__init__( - orientation=Gtk.Orientation.VERTICAL, margin_start=10, margin_end=10, ) @@ -60,11 +61,6 @@ class Options(Gtk.Box): self.DEFAULT_WIDTH = 1 self.DEFAULT_HEIGHT = 1 - label = Gtk.Label(label=strings.options.header) - label.set_halign(Gtk.Align.CENTER) - css.add_class(label, "page-heading") - self.add(label) - self.steam_entry: Gtk.Entry self.steam = WebButton(label=strings.options.steam_web) @@ -165,9 +161,16 @@ class Options(Gtk.Box): grid.attach(frame, col, row, self.DEFAULT_WIDTH, self.DEFAULT_HEIGHT) row += 1 - self.scrollable = Gtk.ScrolledWindow(vexpand=True) - self.scrollable.add(grid) - self.add(self.scrollable) + label = Gtk.Label(label=strings.options.header) + label.set_halign(Gtk.Align.CENTER) + css.add_class(label, "page-heading") + + box = VBox() + box.add(label) + box.add(grid) + self.add(box) + + self.connect("key-press-event", self._on_keypress) def get_client_name(self) -> str: model = self.client_combo.get_model() @@ -442,4 +445,4 @@ class Options(Gtk.Box): widget.set_visibility(state) def grab_content_area(self) -> None: - return + self.grab_focus() From ff59d6dc35026714529c6656d14400efafa4a0b3 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Tue, 4 Aug 2026 18:04:22 +0900 Subject: [PATCH 2/3] chore: clear typehinting errors --- dzgui/views/mixins/cursor_mixin.py | 2 +- dzgui/views/pages/options.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dzgui/views/mixins/cursor_mixin.py b/dzgui/views/mixins/cursor_mixin.py index 37f1065..71d4851 100644 --- a/dzgui/views/mixins/cursor_mixin.py +++ b/dzgui/views/mixins/cursor_mixin.py @@ -41,7 +41,7 @@ class CursorMixin: try: cur_row = self.get_focused_row_index() # type: ignore except Exception: - return + return False if position == CursorPosition.DOWN: if cur_row == end: diff --git a/dzgui/views/pages/options.py b/dzgui/views/pages/options.py index cc24853..c8f482a 100644 --- a/dzgui/views/pages/options.py +++ b/dzgui/views/pages/options.py @@ -46,7 +46,7 @@ class ShortHBox(Gtk.Box): self.pack_start(widget, NO_EXPAND, NO_FILL, NO_PADDING) -class Options(ScrollableMixin, Gtk.ScrolledWindow): +class Options(ScrollableMixin, Gtk.ScrolledWindow): # type: ignore def __init__(self, controller: "Controller"): super().__init__( margin_start=10, From 3cf547e9032cd2342a92dff8a4c7d68085c63628 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Tue, 4 Aug 2026 23:09:54 +0900 Subject: [PATCH 3/3] chore: backport changes from dzgui7 branch --- dzgui/api/steam.py | 1 + dzgui/views/pages/preconnect.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/dzgui/api/steam.py b/dzgui/api/steam.py index 9e128f6..c5b0074 100644 --- a/dzgui/api/steam.py +++ b/dzgui/api/steam.py @@ -139,6 +139,7 @@ def get_remote_signatures(mods: list[str]) -> list[tuple[str, str, int, int]]: j = r.json() rows = j["response"]["publishedfiledetails"] for row in rows: + # NOTE: not a valid published file if row["result"] == 9: continue title = str(row["title"]) diff --git a/dzgui/views/pages/preconnect.py b/dzgui/views/pages/preconnect.py index 345f7a7..47adfb6 100644 --- a/dzgui/views/pages/preconnect.py +++ b/dzgui/views/pages/preconnect.py @@ -284,7 +284,7 @@ class PreConnectionAssistant(Gtk.Box): allows_dl, running_app = prereqs.allows_downloads if len(prereqs.mods) > 0 and allows_dl is False: msg = ( - f"The game '{running_app}' is currently running in Steam, but background downloads are not enabled.\n" + f"The app '{running_app}' is currently running in Steam, but background downloads are not enabled.\n" "Either stop the game first, or update your global Steam settings or the game's local settings.\n" "Otherwise, mods may be queued for download but never update." )