@@ -42,12 +42,7 @@ struct CustomGradientPicker: View {
42
42
43
43
var body : some View {
44
44
gradientView
45
- . clipShape (
46
- RoundedRectangle (
47
- cornerRadius: 4 ,
48
- style: . circular
49
- )
50
- )
45
+ . clipShape ( borderShape)
51
46
. overlay {
52
47
borderView
53
48
}
@@ -74,6 +69,11 @@ struct CustomGradientPicker: View {
74
69
. readWindow ( window: $window)
75
70
}
76
71
72
+ @ViewBuilder
73
+ private var borderShape : some Shape {
74
+ RoundedRectangle ( cornerRadius: 4 , style: . circular)
75
+ }
76
+
77
77
@ViewBuilder
78
78
private var gradientView : some View {
79
79
if gradient. stops. isEmpty {
@@ -87,16 +87,13 @@ struct CustomGradientPicker: View {
87
87
88
88
@ViewBuilder
89
89
private var borderView : some View {
90
- RoundedRectangle (
91
- cornerRadius: 4 ,
92
- style: . circular
93
- )
94
- . stroke ( )
95
- . overlay {
96
- centerTickMark
97
- }
98
- . foregroundStyle ( . secondary. opacity ( 0.75 ) )
99
- . blendMode ( . softLight)
90
+ borderShape
91
+ . stroke ( )
92
+ . overlay {
93
+ centerTickMark
94
+ }
95
+ . foregroundStyle ( . secondary. opacity ( 0.75 ) )
96
+ . blendMode ( . softLight)
100
97
}
101
98
102
99
@ViewBuilder
@@ -116,12 +113,7 @@ struct CustomGradientPicker: View {
116
113
@ViewBuilder
117
114
private func insertionReader( geometry: GeometryProxy ) -> some View {
118
115
Color . clear
119
- . contentShape (
120
- RoundedRectangle (
121
- cornerRadius: 4 ,
122
- style: . circular
123
- )
124
- )
116
+ . contentShape ( borderShape)
125
117
. gesture (
126
118
DragGesture (
127
119
minimumDistance: 0 ,
@@ -250,6 +242,7 @@ private struct CustomGradientPickerHandle: View {
250
242
@Binding var selectedStop : ColorStop ?
251
243
@Binding var zOrderedStops : [ ColorStop ]
252
244
@Binding var cancellables : Set < AnyCancellable >
245
+ @State private var canActivate = true
253
246
254
247
let index : Int
255
248
let supportsOpacity : Bool
@@ -386,6 +379,10 @@ private struct CustomGradientPickerHandle: View {
386
379
}
387
380
388
381
private func activate( ) {
382
+ guard canActivate else {
383
+ return
384
+ }
385
+
389
386
deactivate ( )
390
387
391
388
NSColorPanel . shared. showsAlpha = supportsOpacity
@@ -405,6 +402,10 @@ private struct CustomGradientPickerHandle: View {
405
402
. receive ( on: DispatchQueue . main)
406
403
. dropFirst ( )
407
404
. sink { color in
405
+ canActivate = false
406
+ defer {
407
+ canActivate = true
408
+ }
408
409
if stop? . color != color. cgColor {
409
410
stop? . color = color. cgColor
410
411
selectedStop = stop
0 commit comments