@@ -234,6 +234,10 @@ extension Color {
234234
235235// MARK: - BigSurSlider
236236
237+ private final class BindingProxy {
238+ var binding : Binding < Float > = . constant( 0 )
239+ }
240+
237241struct BigSurSlider : View {
238242 init (
239243 percentage: Binding < Float > ,
@@ -297,7 +301,6 @@ struct BigSurSlider: View {
297301 @Binding var shownValue : Double ?
298302
299303 @State var scrollWheelListener : Cancellable ?
300-
301304 @State var hovering = false
302305 @State var enableText : String ? = nil
303306 @State var lastCursorPosition = NSEvent . mouseLocation
@@ -313,6 +316,7 @@ struct BigSurSlider: View {
313316 var onSettingPercentage : ( ( Float ) -> Void ) ?
314317
315318 var body : some View {
319+ let _ = { percentageProxy. binding = _percentage } ( )
316320 GeometryReader { geometry in
317321 let w = geometry. size. width - sliderHeight
318322 let cgPercentage = cap ( percentage, minVal: 0 , maxVal: 1 ) . cg
@@ -439,6 +443,8 @@ struct BigSurSlider: View {
439443 }
440444 }
441445
446+ @State private var percentageProxy = BindingProxy ( )
447+
442448 private var sliderWidth : CGFloat = 200
443449 private var sliderHeight : CGFloat = 22
444450
@@ -464,7 +470,7 @@ struct BigSurSlider: View {
464470 }
465471
466472 private func trackScrollWheel( ) {
467- guard scrollWheelListener == nil else { return }
473+ scrollWheelListener = nil
468474 scrollWheelListener = NSApp . publisher ( for: \. currentEvent)
469475 . filter { event in event? . type == . scrollWheel }
470476 . throttle ( for: . milliseconds( 20 ) , scheduler: DispatchQueue . main, latest: true )
@@ -495,9 +501,10 @@ struct BigSurSlider: View {
495501 env. draggingSlider = false
496502 }
497503 }
498- beforeSettingPercentage ? ( percentage)
499- percentage = cap ( percentage - ( delta / 100 ) , minVal: 0 , maxVal: 1 )
500- onSettingPercentage ? ( percentage)
504+ let current = percentageProxy. binding. wrappedValue
505+ beforeSettingPercentage ? ( current)
506+ percentageProxy. binding. wrappedValue = cap ( current - ( delta / 100 ) , minVal: 0 , maxVal: 1 )
507+ onSettingPercentage ? ( percentageProxy. binding. wrappedValue)
501508 }
502509 }
503510}
0 commit comments