How do we prevent the .onTapGesture on other views from firing when SwiftUI menu is visible on the screen?

Here is my code:

Menu {
                Picker("Topic", selection: $selectedTopic) {
                    Text("Unassigned")
                        .tag(nil as Topic?)
                    Divider()
                    ForEach(topics, id:\.id) { topic in
                        Text(topic.name!).tag(topic as Topic?)
                            .foregroundColor(topic.foregroundColor)
                    }
                }
            }
            
        label: {
            Image(systemName: "circle.grid.3x3.circle")
                .font(.system(size: 26,weight: .ultraLight))
                .foregroundColor(learningSet.topic?.foregroundColor ?? .primary)
                .frame(width:30, height: 30)
        }

This correctly shows the menu and if I select an item, the .onchange fires like it should. Problem is if the user clicks on some other view on the screen while the is active, it fires that views .onTappedGesture.

I tried different combinations of highPriorityGesture and SimultaneousGesture to no avail.

I also tried the approach of adding a full screen view In between the view with the menu and the underlying views and added an onTap to it. That approach works fine with one issue: If the user click on the currency selected item, the .onChange for the picker doesn't fire, the menu disappears but its .onDisappear doesn't fire.

So there is no way to know the menu is no longer visible, and hide my full screen view. Any help would be greatly appreciated. Thanks.

How do we prevent the .onTapGesture on other views from firing when SwiftUI menu is visible on the screen?
 
 
Q