From 85259446b125dbac3c00d371ef305099de5bfa3b Mon Sep 17 00:00:00 2001 From: Giovanni Date: Thu, 3 Sep 2026 19:12:56 +0200 Subject: [PATCH] fix issues with Area Inset and Tool Bar --- .../WorldListAreaInsetModifier.swift | 9 +++++++- .../Modifiers/WorldListToolbarModifier.swift | 21 +++++++++++-------- .../Views/WorldList/WorldListView.swift | 5 +++-- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/WorldBuilder/Views/WorldList/Modifiers/WorldListAreaInsetModifier.swift b/WorldBuilder/Views/WorldList/Modifiers/WorldListAreaInsetModifier.swift index 1c56aa2..8360bfc 100644 --- a/WorldBuilder/Views/WorldList/Modifiers/WorldListAreaInsetModifier.swift +++ b/WorldBuilder/Views/WorldList/Modifiers/WorldListAreaInsetModifier.swift @@ -9,7 +9,7 @@ import SwiftUI import SwiftData struct WorldListAreaInsetModifier : ViewModifier { - let isSelecting : Bool + @Binding var isSelecting : Bool @Binding var selectedWorlds : Set let worlds : [World] @@ -36,9 +36,16 @@ struct WorldListAreaInsetModifier : ViewModifier { Spacer() Button(role: .destructive){ + let shouldExitSelection = worldsToAction.count == worlds.count + for world in worldsToAction { context.delete(world) } + selectedWorlds.removeAll() + + if shouldExitSelection { + isSelecting = false + } }label : { Label("Supprimer", systemImage: "trash") } diff --git a/WorldBuilder/Views/WorldList/Modifiers/WorldListToolbarModifier.swift b/WorldBuilder/Views/WorldList/Modifiers/WorldListToolbarModifier.swift index e3e9370..8ac6dca 100644 --- a/WorldBuilder/Views/WorldList/Modifiers/WorldListToolbarModifier.swift +++ b/WorldBuilder/Views/WorldList/Modifiers/WorldListToolbarModifier.swift @@ -10,19 +10,22 @@ import SwiftUI struct WorldListToolbarModifier : ViewModifier { @Binding var isSelecting : Bool @Binding var selectedWorlds : Set + let worldsIsEmpty : Bool func body(content: Content) -> some View { content .toolbar{ - ToolbarItem(placement: .topBarLeading) { - if isSelecting { - Button("Annuler") { - selectedWorlds.removeAll() - isSelecting = false - } - } else { - Button("Sélectionner") { - isSelecting = true + if !worldsIsEmpty { + ToolbarItem(placement: .topBarLeading) { + if isSelecting { + Button("Annuler") { + selectedWorlds.removeAll() + isSelecting = false + } + } else { + Button("Sélectionner") { + isSelecting = true + } } } } diff --git a/WorldBuilder/Views/WorldList/WorldListView.swift b/WorldBuilder/Views/WorldList/WorldListView.swift index eacf04b..249ddf4 100644 --- a/WorldBuilder/Views/WorldList/WorldListView.swift +++ b/WorldBuilder/Views/WorldList/WorldListView.swift @@ -69,7 +69,7 @@ struct WorldListView: View { .frame(maxHeight: .infinity, alignment: .topLeading) .modifier( WorldListAreaInsetModifier( - isSelecting: isSelecting, + isSelecting: $isSelecting, selectedWorlds: $selectedWorlds, worlds: worlds ) @@ -78,7 +78,8 @@ struct WorldListView: View { .modifier( WorldListToolbarModifier( isSelecting: $isSelecting, - selectedWorlds: $selectedWorlds + selectedWorlds: $selectedWorlds, + worldsIsEmpty: worlds.isEmpty ) ) }