From 39340fc3a24440dd4d42949a7b61be004e31e543 Mon Sep 17 00:00:00 2001
From: Bart De Vries <bart@mogwai.be>
Date: Sun, 23 Mar 2025 14:17:37 +0100
Subject: [PATCH] Fix dialog boxes after recent Kirigami updates

BUG: 501876
---
 src/qml/Desktop/DesktopPlayerControls.qml     |  7 +--
 .../Settings/SynchronizationSettingsPage.qml  | 49 +++++++++++--------
 src/qml/SyncPasswordOverlay.qml               |  4 +-
 3 files changed, 33 insertions(+), 27 deletions(-)

diff --git a/src/qml/Desktop/DesktopPlayerControls.qml b/src/qml/Desktop/DesktopPlayerControls.qml
index 513d33371..35d5ce327 100644
--- a/src/qml/Desktop/DesktopPlayerControls.qml
+++ b/src/qml/Desktop/DesktopPlayerControls.qml
@@ -386,6 +386,8 @@ FocusScope {
 
     Kirigami.Dialog {
         id: chapterOverlay
+        preferredWidth: Kirigami.Units.gridUnit * 30
+        preferredHeight: Kirigami.Units.gridUnit * 25
 
         showCloseButton: false
 
@@ -396,13 +398,8 @@ FocusScope {
 
             currentIndex: -1
 
-            implicitWidth: Kirigami.Units.gridUnit * 30
-            implicitHeight: Kirigami.Units.gridUnit * 25
-
             model: chapterModel
             delegate: ChapterListDelegate {
-                id: chapterDelegate
-                width: chapterList.width
                 entry: AudioManager.entry ? AudioManager.entry : null
                 overlay: chapterOverlay
             }
diff --git a/src/qml/Settings/SynchronizationSettingsPage.qml b/src/qml/Settings/SynchronizationSettingsPage.qml
index 7bed8a09c..9543bcbde 100644
--- a/src/qml/Settings/SynchronizationSettingsPage.qml
+++ b/src/qml/Settings/SynchronizationSettingsPage.qml
@@ -227,37 +227,45 @@ Kirigami.ScrollablePage {
 
         title: i18nc("@label", "Select Sync Provider")
 
+        property list<var> providerModel: [
+            {
+                name: i18nc("@label", "gpodder.net"),
+                subtitle: i18nc("@label", "Synchronize with official gpodder.net server"),
+                iconName: "gpodder",
+                provider: Sync.GPodderNet
+            },
+            {
+                name: i18nc("@label", "GPodder Nextcloud"),
+                subtitle: i18nc("@label", "Synchronize with GPodder Nextcloud app"),
+                iconName: "kaccounts-nextcloud",
+                provider: Sync.GPodderNextcloud
+            }
+        ]
+
         ColumnLayout {
             spacing: 0
 
             Repeater {
                 focus: syncProviderOverlay.visible
 
-                model: ListModel {
-                    id: providerModel
-                }
-                Component.onCompleted: {
-                    providerModel.append({"name": i18nc("@label", "gpodder.net"),
-                                        "subtitle": i18nc("@label", "Synchronize with official gpodder.net server"),
-                                        "icon": "gpodder",
-                                        "provider": Sync.GPodderNet});
-                    providerModel.append({"name": i18nc("@label", "GPodder Nextcloud"),
-                                        "subtitle": i18nc("@label", "Synchronize with GPodder Nextcloud app"),
-                                        "icon": "kaccounts-nextcloud",
-                                        "provider": Sync.GPodderNextcloud});
-                }
+                model: syncProviderOverlay.providerModel
+
                 delegate: Delegates.RoundedItemDelegate {
                     id: syncProviderRepeaterDelegate
+                    required property string name
+                    required property string iconName
+                    required property string subtitle
+                    required property var provider
                     Layout.fillWidth: true
-                    text: model.name
-                    icon.name: model.icon
+                    text: name
+                    icon.name: iconName
                     contentItem: Delegates.SubtitleContentItem {
                         itemDelegate: syncProviderRepeaterDelegate
-                        subtitle: model.subtitle
+                        subtitle: subtitle
                     }
                     Keys.onReturnPressed: clicked()
                     onClicked: {
-                        Sync.provider = model.provider;
+                        Sync.provider = provider;
                         syncProviderOverlay.close();
                         syncLoginOverlay.open();
                     }
@@ -268,7 +276,7 @@ Kirigami.ScrollablePage {
 
     Kirigami.Dialog {
         id: syncLoginOverlay
-        preferredWidth: Kirigami.Units.gridUnit * 25
+        maximumWidth: Kirigami.Units.gridUnit * 30
         padding: Kirigami.Units.largeSpacing
 
         showCloseButton: true
@@ -288,7 +296,7 @@ Kirigami.ScrollablePage {
         }
         onRejected: syncLoginOverlay.close();
 
-        Column {
+        ColumnLayout {
             spacing: Kirigami.Units.largeSpacing
             RowLayout {
                 width: parent.width
@@ -388,7 +396,8 @@ Kirigami.ScrollablePage {
 
     Kirigami.Dialog {
         id: syncDeviceOverlay
-        preferredWidth: Kirigami.Units.gridUnit * 25
+        maximumWidth: Kirigami.Units.gridUnit * 30
+        preferredWidth: Kirigami.Units.gridUnit * 30
         padding: Kirigami.Units.largeSpacing
 
         showCloseButton: true
diff --git a/src/qml/SyncPasswordOverlay.qml b/src/qml/SyncPasswordOverlay.qml
index 8c50ff1ff..82adef13e 100644
--- a/src/qml/SyncPasswordOverlay.qml
+++ b/src/qml/SyncPasswordOverlay.qml
@@ -16,7 +16,7 @@ import org.kde.kasts.settings
 Kirigami.Dialog {
     id: syncPasswordOverlay
     padding: Kirigami.Units.largeSpacing
-    preferredWidth: Kirigami.Units.gridUnit * 20
+    maximumWidth: Kirigami.Units.gridUnit * 25
     parent: applicationWindow().overlay
 
     showCloseButton: true
@@ -30,7 +30,7 @@ Kirigami.Dialog {
     }
     onRejected: syncPasswordOverlay.close();
 
-    Column {
+    ColumnLayout {
         spacing: Kirigami.Units.largeSpacing
         RowLayout {
             width: parent.width
-- 
GitLab

