diff --git a/Sources/MarkdownUI/Utility/ResizeToFit.swift b/Sources/MarkdownUI/Utility/ResizeToFit.swift index 4029ce06..918a048d 100644 --- a/Sources/MarkdownUI/Utility/ResizeToFit.swift +++ b/Sources/MarkdownUI/Utility/ResizeToFit.swift @@ -34,8 +34,9 @@ private struct ResizeToFit1: View where Content: View { .preference(key: SizePreference.self, value: size) } .frame(width: size?.width, height: size?.height) - .onPreferenceChange(SizePreference.self) { size in - self.size = size + .onPreferenceChange(SizePreference.self) { [$size] size in + // Roundabout capture makes closure sendable (see #389) + $size.wrappedValue = size } } diff --git a/Sources/MarkdownUI/Views/Blocks/BlockSequence.swift b/Sources/MarkdownUI/Views/Blocks/BlockSequence.swift index fd56e638..aac0a36a 100644 --- a/Sources/MarkdownUI/Views/Blocks/BlockSequence.swift +++ b/Sources/MarkdownUI/Views/Blocks/BlockSequence.swift @@ -26,8 +26,9 @@ where VStack(alignment: self.textAlignment.alignment.horizontal, spacing: 0) { ForEach(self.data, id: \.self) { element in self.content(element.index, element.value) - .onPreferenceChange(BlockMarginsPreference.self) { value in - self.blockMargins[element.hashValue] = value + .onPreferenceChange(BlockMarginsPreference.self) { [marginBinding = $blockMargins[element.hashValue]] value in + // Roundabout capture makes closure sendable (see #389) + marginBinding.wrappedValue = value } .padding(.top, self.topPaddingLength(for: element)) } diff --git a/Sources/MarkdownUI/Views/Blocks/ColumnWidthPreference.swift b/Sources/MarkdownUI/Views/Blocks/ColumnWidthPreference.swift index 319c69fd..773adfce 100644 --- a/Sources/MarkdownUI/Views/Blocks/ColumnWidthPreference.swift +++ b/Sources/MarkdownUI/Views/Blocks/ColumnWidthPreference.swift @@ -9,7 +9,7 @@ extension View { ) } - func onColumnWidthChange(perform action: @escaping ([Int: CGFloat]) -> Void) -> some View { + func onColumnWidthChange(perform action: @escaping @Sendable ([Int: CGFloat]) -> Void) -> some View { self.onPreferenceChange(ColumnWidthPreference.self, perform: action) } } diff --git a/Sources/MarkdownUI/Views/Blocks/NumberedListView.swift b/Sources/MarkdownUI/Views/Blocks/NumberedListView.swift index fb3098ef..0da685fd 100644 --- a/Sources/MarkdownUI/Views/Blocks/NumberedListView.swift +++ b/Sources/MarkdownUI/Views/Blocks/NumberedListView.swift @@ -41,8 +41,9 @@ struct NumberedListView: View { ) .environment(\.listLevel, self.listLevel + 1) .environment(\.tightSpacingEnabled, self.isTight) - .onColumnWidthChange { columnWidths in - self.markerWidth = columnWidths[0] + .onColumnWidthChange { [$markerWidth] columnWidths in + // Roundabout capture makes closure sendable (see #389) + $markerWidth.wrappedValue = columnWidths[0] } } }