From bd4aeed97a7f81d8131e6f3f6fea172bbf25a861 Mon Sep 17 00:00:00 2001 From: Davide Date: Sun, 10 Nov 2024 18:21:17 +0100 Subject: [PATCH] Disable animations on installed profile view Fixes #836 --- .../Sources/AppUIMain/Views/App/ProfileGridView.swift | 1 + .../Sources/AppUIMain/Views/App/ProfileListView.swift | 1 + .../Sources/CommonUtils/Views/View+Extensions.swift | 7 +++++++ 3 files changed, 9 insertions(+) diff --git a/Passepartout/Library/Sources/AppUIMain/Views/App/ProfileGridView.swift b/Passepartout/Library/Sources/AppUIMain/Views/App/ProfileGridView.swift index 9d0da23f..bd784cbb 100644 --- a/Passepartout/Library/Sources/AppUIMain/Views/App/ProfileGridView.swift +++ b/Passepartout/Library/Sources/AppUIMain/Views/App/ProfileGridView.swift @@ -58,6 +58,7 @@ struct ProfileGridView: View, Routable, TunnelInstallationProviding { if !isSearching { headerView(scrollProxy: scrollProxy) .padding(.bottom) + .unanimated() } LazyVGrid(columns: columns) { ForEach(allHeaders, content: profileView) diff --git a/Passepartout/Library/Sources/AppUIMain/Views/App/ProfileListView.swift b/Passepartout/Library/Sources/AppUIMain/Views/App/ProfileListView.swift index 1cb8c62f..60aacbce 100644 --- a/Passepartout/Library/Sources/AppUIMain/Views/App/ProfileListView.swift +++ b/Passepartout/Library/Sources/AppUIMain/Views/App/ProfileListView.swift @@ -60,6 +60,7 @@ struct ProfileListView: View, Routable, TunnelInstallationProviding { Form { if !isSearching { headerView(scrollProxy: scrollProxy) + .unanimated() } Group { ForEach(allHeaders, content: profileView) diff --git a/Passepartout/Library/Sources/CommonUtils/Views/View+Extensions.swift b/Passepartout/Library/Sources/CommonUtils/Views/View+Extensions.swift index fb5cc23f..0f3b6f30 100644 --- a/Passepartout/Library/Sources/CommonUtils/Views/View+Extensions.swift +++ b/Passepartout/Library/Sources/CommonUtils/Views/View+Extensions.swift @@ -42,6 +42,13 @@ extension View { public func opaque(_ condition: Bool) -> some View { opacity(condition ? 1.0 : 0.0) } + + // https://www.avanderlee.com/swiftui/disable-animations-transactions/ + public func unanimated() -> some View { + transaction { + $0.animation = nil + } + } } extension ViewModifier {