Make unread indicator white for selected and emphasized rows in timeline. Issue #655

This commit is contained in:
Maurice Parker
2019-05-21 16:08:16 -05:00
parent 4667035e61
commit 46cd477ee0
3 changed files with 45 additions and 1 deletions

View File

@@ -48,6 +48,18 @@ class TimelineTableCellView: NSTableCellView {
}
}
var isEmphasized: Bool = false {
didSet {
unreadIndicatorView.isEmphasized = isEmphasized
}
}
var isSelected: Bool = false {
didSet {
unreadIndicatorView.isSelected = isSelected
}
}
override var isFlipped: Bool {
return true
}

View File

@@ -12,13 +12,33 @@ class UnreadIndicatorView: NSView {
static let unreadCircleDimension: CGFloat = 8.0
var isEmphasized = false {
didSet {
if isEmphasized != oldValue {
needsDisplay = true
}
}
}
var isSelected = false {
didSet {
if isSelected != oldValue {
needsDisplay = true
}
}
}
static let bezierPath: NSBezierPath = {
let r = NSRect(x: 0.0, y: 0.0, width: unreadCircleDimension, height: unreadCircleDimension)
return NSBezierPath(ovalIn: r)
}()
override func draw(_ dirtyRect: NSRect) {
NSColor.controlAccentColor.setFill()
if isSelected && isEmphasized {
NSColor.white.setFill()
} else {
NSColor.controlAccentColor.setFill()
}
UnreadIndicatorView.bezierPath.fill()
}

View File

@@ -14,6 +14,18 @@ class TimelineTableRowView : NSTableRowView {
return true
}
override var isEmphasized: Bool {
didSet {
cellView?.isEmphasized = isEmphasized
}
}
override var isSelected: Bool {
didSet {
cellView?.isSelected = isSelected
}
}
init() {
super.init(frame: NSRect.zero)
}