From d928b464f1d6cc9c08c7a1bd7ea6be7b1cc51ae9 Mon Sep 17 00:00:00 2001 From: david-swift Date: Tue, 17 Feb 2026 16:29:12 +0100 Subject: [PATCH] Fix broken preferences page tabs #74 --- .../Adwaita/View/Dialogs/PreferencesDialog.swift | 13 ++++++++----- Sources/Demo/Demo.swift | 3 +++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/Sources/Adwaita/View/Dialogs/PreferencesDialog.swift b/Sources/Adwaita/View/Dialogs/PreferencesDialog.swift index 875e548..85429ad 100644 --- a/Sources/Adwaita/View/Dialogs/PreferencesDialog.swift +++ b/Sources/Adwaita/View/Dialogs/PreferencesDialog.swift @@ -65,12 +65,15 @@ public struct PreferencesDialog: AdwaitaWidget { let page = Adwaita.PreferencesPage() .title(title) .iconName(icon.string) - .storage(data: data.noModifiers, type: AdwaitaMainView.self) - let groups = content.map { $0.gtkPreferencesGroup(data: data) } - for group in groups { - adw_preferences_page_add(page.opaquePointer?.cast(), group.opaquePointer?.cast()) + let pageStorage = page.storage(data: data.noModifiers, type: AdwaitaMainView.self) + page.update(pageStorage, data: data, updateProperties: true, type: AdwaitaMainView.self) + let groups = content.map { item in + let storage = item.gtkPreferencesGroup(data: data) + item.update(group: storage, data: data, updateProperties: true) + adw_preferences_page_add(pageStorage.opaquePointer?.cast(), storage.opaquePointer?.cast()) + return storage } - return (page.opaquePointer, groups) + return (pageStorage.opaquePointer, groups) } /// Update the page. diff --git a/Sources/Demo/Demo.swift b/Sources/Demo/Demo.swift index a4a7224..327d2eb 100644 --- a/Sources/Demo/Demo.swift +++ b/Sources/Demo/Demo.swift @@ -175,6 +175,9 @@ struct Demo: App { .title("Extra Action") } } + .preferencesPage("Page 2", icon: .default(icon: .faceEmbarrassed)) { page in + page + } .alertDialog( visible: $closeAlert, heading: "Close this Window?",