diff --git a/Evergreen/Base.lproj/MainWindow.storyboard b/Evergreen/Base.lproj/MainWindow.storyboard index 2e6f49dc6..681e4fc9c 100644 --- a/Evergreen/Base.lproj/MainWindow.storyboard +++ b/Evergreen/Base.lproj/MainWindow.storyboard @@ -612,44 +612,51 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + - - - - + diff --git a/Evergreen/MainWindow/Detail/DetailStatusBarView.swift b/Evergreen/MainWindow/Detail/DetailStatusBarView.swift index 48de21fe1..464a189d8 100644 --- a/Evergreen/MainWindow/Detail/DetailStatusBarView.swift +++ b/Evergreen/MainWindow/Detail/DetailStatusBarView.swift @@ -14,40 +14,51 @@ final class DetailStatusBarView: NSView { @IBOutlet var urlLabel: NSTextField! -// private var didConfigureLayer = false - - private var article: Article? { - didSet { - updateURLLabel() - } - } + private var didConfigureLayer = false private var mouseoverLink: String? { didSet { - updateURLLabel() + updateLinkForDisplay() } } - private let backgroundColor = appDelegate.currentTheme.color(forKey: "MainWindow.Detail.statusBar.backgroundColor") + private var linkForDisplay: String? { + didSet { + needsLayout = true + if let link = linkForDisplay { + urlLabel.stringValue = link + self.isHidden = false + } + else { + urlLabel.stringValue = "" + self.isHidden = true + } + } + } + override var isOpaque: Bool { + return false + } + override var isFlipped: Bool { return true } -// override var wantsUpdateLayer: Bool { -// return true -// } -// -// override func updateLayer() { -// -// guard !didConfigureLayer else { -// return -// } -// if let layer = layer { -// let color = appDelegate.currentTheme.color(forKey: "MainWindow.Detail.statusBar.backgroundColor") -// layer.backgroundColor = color.cgColor -// didConfigureLayer = true -// } -// } + override var wantsUpdateLayer: Bool { + return true + } + + override func updateLayer() { + + guard !didConfigureLayer else { + return + } + if let layer = layer { + let color = appDelegate.currentTheme.color(forKey: "MainWindow.Detail.statusBar.backgroundColor") + layer.backgroundColor = color.cgColor + layer.cornerRadius = 4.0 + didConfigureLayer = true + } + } override func awakeFromNib() { @@ -55,6 +66,8 @@ final class DetailStatusBarView: NSView { NotificationCenter.default.addObserver(self, selector: #selector(mouseDidEnterLink(_:)), name: .MouseDidEnterLink, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(mouseDidExitLink(_:)), name: .MouseDidExitLink, object: nil) + + alphaValue = 0.9 } // MARK: - Notifications @@ -84,24 +97,6 @@ final class DetailStatusBarView: NSView { return } mouseoverLink = nil - article = notification.userInfo?[UserInfoKey.article] as? Article - } - - // MARK: Drawing - - private let lineColor = NSColor(calibratedWhite: 0.85, alpha: 1.0) - - override func draw(_ dirtyRect: NSRect) { - - backgroundColor.set() - dirtyRect.fill() - - let path = NSBezierPath() - path.lineWidth = 1.0 - path.move(to: NSPoint(x: NSMinX(bounds), y: NSMinY(bounds) + 0.5)) - path.line(to: NSPoint(x: NSMaxX(bounds), y: NSMinY(bounds) + 0.5)) - lineColor.set() - path.stroke() } } @@ -109,32 +104,15 @@ private extension DetailStatusBarView { // MARK: URL Label - func updateURLLabel() { - - needsLayout = true - - guard let article = article else { - setURLLabel("") - return - } + func updateLinkForDisplay() { if let mouseoverLink = mouseoverLink, !mouseoverLink.isEmpty { - setURLLabel(mouseoverLink) - return - } - - if let s = article.preferredLink { - setURLLabel(s) + linkForDisplay = (mouseoverLink as NSString).rs_stringByStrippingHTTPOrHTTPSScheme() } else { - setURLLabel("") + linkForDisplay = nil } } - - func setURLLabel(_ link: String) { - - urlLabel.stringValue = (link as NSString).rs_stringByStrippingHTTPOrHTTPSScheme() - } } diff --git a/Evergreen/MainWindow/Detail/DetailViewController.swift b/Evergreen/MainWindow/Detail/DetailViewController.swift index f54dc1ee5..6bcfe7645 100644 --- a/Evergreen/MainWindow/Detail/DetailViewController.swift +++ b/Evergreen/MainWindow/Detail/DetailViewController.swift @@ -224,6 +224,8 @@ private extension DetailViewController { final class DetailContainerView: NSView { + @IBOutlet var detailStatusBarView: DetailStatusBarView! + weak var viewController: DetailViewController? = nil private var didConfigureLayer = false @@ -239,7 +241,7 @@ final class DetailContainerView: NSView { } if let contentView = contentView { contentView.translatesAutoresizingMaskIntoConstraints = false - addSubview(contentView) + addSubview(contentView, positioned: .below, relativeTo: detailStatusBarView) rs_addFullSizeConstraints(forSubview: contentView) } } diff --git a/Evergreen/Resources/DB5.plist b/Evergreen/Resources/DB5.plist index 8399d79f0..17f87ccf5 100644 --- a/Evergreen/Resources/DB5.plist +++ b/Evergreen/Resources/DB5.plist @@ -123,7 +123,7 @@ statusBar backgroundColor - FFFFFF + F0F0F0 backgroundColor FFFFFF