PrefUI // Windows Aero support.

This commit is contained in:
ShikiSuen 2022-08-20 07:04:32 +08:00
parent bb7b4eb46a
commit dfd258d314
6 changed files with 38 additions and 5 deletions

View File

@ -149,3 +149,26 @@ extension View {
overlay(Tooltip(tooltip: tooltip))
}
}
// MARK: - Windows Aero in Swift UI
// Ref: https://stackoverflow.com/questions/62461957
@available(macOS 10.15, *)
struct VisualEffectView: NSViewRepresentable {
let material: NSVisualEffectView.Material
let blendingMode: NSVisualEffectView.BlendingMode
func makeNSView(context _: Context) -> NSVisualEffectView {
let visualEffectView = NSVisualEffectView()
visualEffectView.material = material
visualEffectView.blendingMode = blendingMode
visualEffectView.state = NSVisualEffectView.State.active
return visualEffectView
}
func updateNSView(_ visualEffectView: NSVisualEffectView, context _: Context) {
visualEffectView.material = material
visualEffectView.blendingMode = blendingMode
}
}

View File

@ -90,7 +90,9 @@ struct suiPrefPaneDevZone: View {
.preferenceDescription().fixedSize(horizontal: false, vertical: true)
}
}
}.frame(maxHeight: contentMaxHeight).fixedSize(horizontal: false, vertical: true)
}
.frame(maxHeight: contentMaxHeight).fixedSize(horizontal: false, vertical: true)
.background(VisualEffectView(material: .sidebar, blendingMode: .behindWindow))
}
}

View File

@ -145,7 +145,9 @@ struct suiPrefPaneDictionary: View {
)
}
}
}.frame(maxHeight: contentMaxHeight).fixedSize(horizontal: false, vertical: true)
}
.frame(maxHeight: contentMaxHeight).fixedSize(horizontal: false, vertical: true)
.background(VisualEffectView(material: .sidebar, blendingMode: .behindWindow))
}
}

View File

@ -177,7 +177,9 @@ struct suiPrefPaneExperience: View {
.preferenceDescription()
}
}
}.frame(maxHeight: contentMaxHeight).fixedSize(horizontal: false, vertical: true)
}
.frame(maxHeight: contentMaxHeight).fixedSize(horizontal: false, vertical: true)
.background(VisualEffectView(material: .sidebar, blendingMode: .behindWindow))
}
}

View File

@ -185,7 +185,9 @@ struct suiPrefPaneGeneral: View {
.controlSize(.small)
}
}
}.frame(maxHeight: contentMaxHeight).fixedSize(horizontal: false, vertical: true)
}
.frame(maxHeight: contentMaxHeight).fixedSize(horizontal: false, vertical: true)
.background(VisualEffectView(material: .sidebar, blendingMode: .behindWindow))
}
}

View File

@ -235,7 +235,9 @@ struct suiPrefPaneKeyboard: View {
)
}
}
}.frame(maxHeight: contentMaxHeight).fixedSize(horizontal: false, vertical: true)
}
.frame(maxHeight: contentMaxHeight).fixedSize(horizontal: false, vertical: true)
.background(VisualEffectView(material: .sidebar, blendingMode: .behindWindow))
}
}