Use a layer for background color for timeline table cell. Don’t use drawRect: for performance reasons.

This commit is contained in:
Brent Simmons 2017-11-18 11:39:25 -08:00
parent 8ccceb6fa2
commit 1f26a83ed8

View File

@ -31,6 +31,10 @@ class TimelineTableCellView: NSTableCellView {
return true return true
} }
override var wantsUpdateLayer: Bool {
return true
}
var isEmphasized = false { var isEmphasized = false {
didSet { didSet {
dateView.emphasized = isEmphasized dateView.emphasized = isEmphasized
@ -114,7 +118,7 @@ class TimelineTableCellView: NSTableCellView {
feedNameView.rs_setFrameIfNotEqual(layoutRects.feedNameRect) feedNameView.rs_setFrameIfNotEqual(layoutRects.feedNameRect)
} }
override func draw(_ dirtyRect: NSRect) { override func updateLayer() {
let color: NSColor let color: NSColor
if isSelected { if isSelected {
@ -123,8 +127,10 @@ class TimelineTableCellView: NSTableCellView {
else { else {
color = NSColor.white color = NSColor.white
} }
color.set()
dirtyRect.fill() if layer?.backgroundColor != color.cgColor {
layer?.backgroundColor = color.cgColor
}
} }
private func updateTitleView() { private func updateTitleView() {