Skip to content

Commit ab0cd20

Browse files
committed
Fixed a crash - Cannot observe a keypath on a weak property.
1 parent 62dcd05 commit ab0cd20

File tree

3 files changed

+20
-6
lines changed

3 files changed

+20
-6
lines changed

ColorSet/Classes/LightnessPairItem.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ import Cocoa
4343

4444
super.init()
4545

46-
let o1 = self.observe( \.lightness ) { [ weak self ] o, c in self?.update() }
47-
let o2 = self.observe( \.base?.color ) { [ weak self ] o, c in self?.update() }
46+
let o1 = self.observe( \.lightness ) { [ weak self ] o, c in self?.update() }
47+
let o2 = self.observe( \.base ) { [ weak self ] o, c in self?.update() }
4848

4949
self.observations.append( contentsOf: [ o1, o2 ] )
5050
}

ColorSet/Classes/LightnessPairWindowController.swift

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,7 @@ class LightnessPairWindowController: NSWindowController
3232
{
3333
self.init()
3434

35-
self.item = LightnessPairItem( base: base )
36-
self.item.lightness1.base = base
37-
self.item.lightness2.base = base
35+
self.item = LightnessPairItem( base: base )
3836
}
3937

4038
override var windowNibName: NSNib.Name?

ColorSet/Classes/MainWindowController.swift

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,8 @@ class MainWindowController: NSWindowController, NSTableViewDelegate, NSTableView
115115

116116
self.selectedColor = color
117117
self.hasVariant = color.variant != nil
118+
119+
self.updateLightnesses()
118120
}
119121

120122
let o2 = self.observe( \.hasVariant, options: .new )
@@ -136,7 +138,21 @@ class MainWindowController: NSWindowController, NSTableViewDelegate, NSTableView
136138
}
137139
}
138140

139-
self.observations.append( contentsOf: [ o1, o2 ] )
141+
let o3 = self.observe( \.selectedColor?.color )
142+
{
143+
[ weak self ] o, c in self?.updateLightnesses()
144+
}
145+
146+
self.observations.append( contentsOf: [ o1, o2, o3 ] )
147+
}
148+
149+
private func updateLightnesses()
150+
{
151+
for l in self.lightnessPairsArrayController.content as? [ LightnessPairItem ] ?? []
152+
{
153+
l.lightness1.base = self.selectedColor
154+
l.lightness2.base = self.selectedColor
155+
}
140156
}
141157

142158
@IBAction public func performFindPanelAction( _ sender: Any? )

0 commit comments

Comments
 (0)