nathantannar4/Transmission

ButtonStyle unexpectedly leaks through destination link in 1.1.2

PhilipDukhov opened this issue · 1 comments

When .buttonStyle is applied in the code below, I expect it to apply the style to button created by DestinationLink, but destination view shouldn't be decorated.

Since we have a wrapper around DestinationLink, I can easily apply .buttonStyle(.plain) to destination to prevent such issue, but not sure if this behavior is expected - it changed between 1.1.0 and 1.1.2.

struct ContentView: View {
    @State var presented = false

    var body: some View {
        NavigationView {
            DestinationLink {
                ViewToDismiss()
            } label: {
                Text("show")
            }
            .buttonStyle(.bordered)
        }
    }
}

struct ViewToDismiss: View {
    @Environment(\.destinationCoordinator) var destinationCoordinator

    var body: some View {
        Button("Dismiss") {
            destinationCoordinator.pop()
        }
    }
}

Attempting to fix #24 broke this, fixed in 1.1.3 but mutating the binding cannot dismiss with animation. DestinationCoordinator must be used.