diff --git a/Multiplatform/Shared/Sidebar/SidebarContainerView.swift b/Multiplatform/Shared/Sidebar/SidebarContainerView.swift index 79319226d..611263879 100644 --- a/Multiplatform/Shared/Sidebar/SidebarContainerView.swift +++ b/Multiplatform/Shared/Sidebar/SidebarContainerView.swift @@ -13,14 +13,21 @@ struct SidebarContainerView: View { @Environment(\.undoManager) var undoManager @EnvironmentObject private var sceneModel: SceneModel + @State var sidebarItems = [SidebarItem]() + @ViewBuilder var body: some View { - SidebarView() + SidebarView(sidebarItems: $sidebarItems) .modifier(SidebarToolbarModifier()) .modifier(SidebarListStyleModifier()) .environmentObject(sceneModel.sidebarModel) .onAppear { sceneModel.sidebarModel.undoManager = undoManager } + .onReceive(sceneModel.sidebarModel.sidebarItemsPublisher!) { newItems in + withAnimation { + sidebarItems = newItems + } + } } } diff --git a/Multiplatform/Shared/Sidebar/SidebarView.swift b/Multiplatform/Shared/Sidebar/SidebarView.swift index ea674bb8c..a786134a6 100644 --- a/Multiplatform/Shared/Sidebar/SidebarView.swift +++ b/Multiplatform/Shared/Sidebar/SidebarView.swift @@ -13,20 +13,18 @@ struct SidebarView: View { // I had to comment out SceneStorage because it blows up if used on macOS // @SceneStorage("expandedContainers") private var expandedContainerData = Data() - @Environment(\.undoManager) var undoManager @StateObject private var expandedContainers = SidebarExpandedContainers() @EnvironmentObject private var refreshProgress: RefreshProgressModel @EnvironmentObject private var sceneModel: SceneModel @EnvironmentObject private var sidebarModel: SidebarModel - @State var sidebarItems = [SidebarItem]() + @Binding var sidebarItems: [SidebarItem] private let threshold: CGFloat = 80 @State private var previousScrollOffset: CGFloat = 0 @State private var scrollOffset: CGFloat = 0 @State var pulling: Bool = false @State var refreshing: Bool = false - @ViewBuilder var body: some View { #if os(macOS) @@ -64,12 +62,6 @@ struct SidebarView: View { .transition(.move(edge: .bottom)) } } - .onAppear { - sidebarModel.undoManager = undoManager - } - .onReceive(sidebarModel.sidebarItemsPublisher!) { newItems in - sidebarItems = newItems - } #else ZStack(alignment: .top) { List { @@ -84,14 +76,6 @@ struct SidebarView: View { ProgressView().offset(y: -40) } } - .onAppear { - sidebarModel.undoManager = undoManager - } - .onReceive(sidebarModel.sidebarItemsPublisher!) { newItems in - withAnimation { - sidebarItems = newItems - } - } #endif // .onAppear {