From 0a1642abdf5f11c217f47c514bfa2e8d81574659 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Sat, 6 Jan 2018 14:33:16 -0800 Subject: [PATCH] Draw a white unread indicator in the timeline when the cell is selected and emphasized. Fix #112. --- .../Timeline/Cell/TimelineTableCellView.swift | 4 +++- .../Timeline/Cell/UnreadIndicatorView.swift | 21 +++++++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/Evergreen/MainWindow/Timeline/Cell/TimelineTableCellView.swift b/Evergreen/MainWindow/Timeline/Cell/TimelineTableCellView.swift index feb3e9fd8..cfc5de7b1 100644 --- a/Evergreen/MainWindow/Timeline/Cell/TimelineTableCellView.swift +++ b/Evergreen/MainWindow/Timeline/Cell/TimelineTableCellView.swift @@ -61,7 +61,8 @@ class TimelineTableCellView: NSTableCellView { didSet { dateView.emphasized = isEmphasized feedNameView.emphasized = isEmphasized - titleView.emphasized = isEmphasized + titleView.emphasized = isEmphasized + unreadIndicatorView.isEmphasized = isEmphasized needsDisplay = true } } @@ -71,6 +72,7 @@ class TimelineTableCellView: NSTableCellView { dateView.selected = isSelected feedNameView.selected = isSelected titleView.selected = isSelected + unreadIndicatorView.isSelected = isSelected needsDisplay = true } } diff --git a/Evergreen/MainWindow/Timeline/Cell/UnreadIndicatorView.swift b/Evergreen/MainWindow/Timeline/Cell/UnreadIndicatorView.swift index 686d695ae..d6b446af6 100644 --- a/Evergreen/MainWindow/Timeline/Cell/UnreadIndicatorView.swift +++ b/Evergreen/MainWindow/Timeline/Cell/UnreadIndicatorView.swift @@ -19,9 +19,26 @@ class UnreadIndicatorView: NSView { static let unreadCircleColor = appDelegate.currentTheme.color(forKey: "MainWindow.Timeline.cell.unreadCircleColor") + var isEmphasized = false { + didSet { + if isEmphasized != oldValue { + needsDisplay = true + } + } + } + + var isSelected = false { + didSet { + if isSelected != oldValue { + needsDisplay = true + } + } + } + override func draw(_ dirtyRect: NSRect) { - - UnreadIndicatorView.unreadCircleColor.setFill() + + let color = isEmphasized && isSelected ? NSColor.white : UnreadIndicatorView.unreadCircleColor + color.setFill() UnreadIndicatorView.bezierPath.fill() }