From 99f2c01a04cc78624432f0372cdb3e05ce0c576a Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Thu, 28 Dec 2017 16:37:30 -0800 Subject: [PATCH] Go back to using storyboard for Feed Directory. --- Evergreen.xcodeproj/project.pbxproj | 12 +- Evergreen/AppDelegate.swift | 2 +- Evergreen/Base.lproj/MainWindow.storyboard | 2 +- Evergreen/FeedList/FeedList.storyboard | 370 ++++++++++++++++++ .../FeedList/FeedListSplitViewDelegate.swift | 145 ------- .../FeedListTimelineViewController.swift | 10 +- .../FeedList/FeedListViewController.swift | 4 +- Evergreen/FeedList/FeedListWindow.xib | 225 ----------- .../FeedList/FeedListWindowController.swift | 6 +- .../MainWindow/Sidebar/Cell/SidebarCell.swift | 2 + 10 files changed, 393 insertions(+), 385 deletions(-) create mode 100644 Evergreen/FeedList/FeedList.storyboard delete mode 100644 Evergreen/FeedList/FeedListSplitViewDelegate.swift delete mode 100644 Evergreen/FeedList/FeedListWindow.xib diff --git a/Evergreen.xcodeproj/project.pbxproj b/Evergreen.xcodeproj/project.pbxproj index 27dca7f64..050f2e47c 100644 --- a/Evergreen.xcodeproj/project.pbxproj +++ b/Evergreen.xcodeproj/project.pbxproj @@ -38,7 +38,6 @@ 846E77411F6EF6A100A165E2 /* Database.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 846E77211F6EF5D100A165E2 /* Database.framework */; }; 846E77421F6EF6A100A165E2 /* Database.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 846E77211F6EF5D100A165E2 /* Database.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 84702AA41FA27AC0006B8943 /* MarkReadOrUnreadCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84702AA31FA27AC0006B8943 /* MarkReadOrUnreadCommand.swift */; }; - 847C4C9C1FF44F790090D517 /* FeedListSplitViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 847C4C9B1FF44F790090D517 /* FeedListSplitViewDelegate.swift */; }; 848F6AE51FC29CFB002D422E /* FaviconDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 848F6AE41FC29CFA002D422E /* FaviconDownloader.swift */; }; 849A97431ED9EAA9007D329B /* AddFolderWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A97421ED9EAA9007D329B /* AddFolderWindowController.swift */; }; 849A97531ED9EAC0007D329B /* AddFeedController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A97511ED9EAC0007D329B /* AddFeedController.swift */; }; @@ -99,13 +98,13 @@ 84B06FFE1ED3818D00F0B54B /* RSTree.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 84B06FFA1ED3818000F0B54B /* RSTree.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 84B0700A1ED3822600F0B54B /* RSTextDrawing.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84B070071ED3821900F0B54B /* RSTextDrawing.framework */; }; 84B0700B1ED3822600F0B54B /* RSTextDrawing.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 84B070071ED3821900F0B54B /* RSTextDrawing.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 84B2FAA41FF47BAC009C4878 /* FeedListWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 84B2FAA31FF47BAC009C4878 /* FeedListWindow.xib */; }; 84B99C671FAE35E600ECDEDB /* FeedListTreeControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84B99C661FAE35E600ECDEDB /* FeedListTreeControllerDelegate.swift */; }; 84B99C691FAE36B800ECDEDB /* FeedListFolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84B99C681FAE36B800ECDEDB /* FeedListFolder.swift */; }; 84B99C6B1FAE370B00ECDEDB /* FeedListFeed.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84B99C6A1FAE370B00ECDEDB /* FeedListFeed.swift */; }; 84B99C9D1FAE83C600ECDEDB /* DeleteFromSidebarCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84B99C9C1FAE83C600ECDEDB /* DeleteFromSidebarCommand.swift */; }; 84BB4B771F11753300858766 /* Data.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84BB4B681F1174D400858766 /* Data.framework */; }; 84BB4B781F11753300858766 /* Data.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 84BB4B681F1174D400858766 /* Data.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 84C12A151FF5B0080009A267 /* FeedList.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 84C12A141FF5B0080009A267 /* FeedList.storyboard */; }; 84CC88181FE59CBF00644329 /* SmartFeedsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84CC88171FE59CBF00644329 /* SmartFeedsController.swift */; }; 84D52E951FE588BB00D14F5B /* DetailStatusBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84D52E941FE588BB00D14F5B /* DetailStatusBarView.swift */; }; 84DAEE301F86CAFE0058304B /* OPMLImporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84DAEE2F1F86CAFE0058304B /* OPMLImporter.swift */; }; @@ -444,7 +443,6 @@ 846E77161F6EF5D000A165E2 /* Database.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Database.xcodeproj; path = Frameworks/Database/Database.xcodeproj; sourceTree = ""; }; 846E77301F6EF5D600A165E2 /* Account.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Account.xcodeproj; path = Frameworks/Account/Account.xcodeproj; sourceTree = ""; }; 84702AA31FA27AC0006B8943 /* MarkReadOrUnreadCommand.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MarkReadOrUnreadCommand.swift; sourceTree = ""; }; - 847C4C9B1FF44F790090D517 /* FeedListSplitViewDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedListSplitViewDelegate.swift; sourceTree = ""; }; 848F6AE41FC29CFA002D422E /* FaviconDownloader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FaviconDownloader.swift; sourceTree = ""; }; 849A97421ED9EAA9007D329B /* AddFolderWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddFolderWindowController.swift; sourceTree = ""; }; 849A97511ED9EAC0007D329B /* AddFeedController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AddFeedController.swift; path = AddFeed/AddFeedController.swift; sourceTree = ""; }; @@ -503,12 +501,12 @@ 84B06FE01ED3803200F0B54B /* RSFeedFinder.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RSFeedFinder.xcodeproj; path = Frameworks/RSFeedFinder/RSFeedFinder.xcodeproj; sourceTree = ""; }; 84B06FF41ED3818000F0B54B /* RSTree.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RSTree.xcodeproj; path = Frameworks/RSTree/RSTree.xcodeproj; sourceTree = ""; }; 84B070011ED3821800F0B54B /* RSTextDrawing.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RSTextDrawing.xcodeproj; path = Frameworks/RSTextDrawing/RSTextDrawing.xcodeproj; sourceTree = ""; }; - 84B2FAA31FF47BAC009C4878 /* FeedListWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FeedListWindow.xib; sourceTree = ""; }; 84B99C661FAE35E600ECDEDB /* FeedListTreeControllerDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedListTreeControllerDelegate.swift; sourceTree = ""; }; 84B99C681FAE36B800ECDEDB /* FeedListFolder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedListFolder.swift; sourceTree = ""; }; 84B99C6A1FAE370B00ECDEDB /* FeedListFeed.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedListFeed.swift; sourceTree = ""; }; 84B99C9C1FAE83C600ECDEDB /* DeleteFromSidebarCommand.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeleteFromSidebarCommand.swift; sourceTree = ""; }; 84BB4B611F1174D400858766 /* Data.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Data.xcodeproj; path = Frameworks/Data/Data.xcodeproj; sourceTree = ""; }; + 84C12A141FF5B0080009A267 /* FeedList.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = FeedList.storyboard; sourceTree = ""; }; 84CBDDAE1FD3674C005A61AA /* Technotes */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Technotes; sourceTree = ""; }; 84CC88171FE59CBF00644329 /* SmartFeedsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SmartFeedsController.swift; sourceTree = ""; }; 84D52E941FE588BB00D14F5B /* DetailStatusBarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailStatusBarView.swift; sourceTree = ""; }; @@ -789,9 +787,8 @@ 849A978B1ED9EE4D007D329B /* Feed List */ = { isa = PBXGroup; children = ( - 84B2FAA31FF47BAC009C4878 /* FeedListWindow.xib */, + 84C12A141FF5B0080009A267 /* FeedList.storyboard */, 849A978C1ED9EE4D007D329B /* FeedListWindowController.swift */, - 847C4C9B1FF44F790090D517 /* FeedListSplitViewDelegate.swift */, 84F204CD1FAACB660076E152 /* FeedListViewController.swift */, 84F204DD1FAACB8B0076E152 /* FeedListTimelineViewController.swift */, 84513F8F1FAA63950023A1A9 /* FeedListControlsView.swift */, @@ -1366,7 +1363,7 @@ 842E45E71ED8C747000A8B52 /* DB5.plist in Resources */, 844B5B691FEA20DF00C7C76A /* SidebarKeyboardShortcuts.plist in Resources */, 849A97AC1ED9F9BC007D329B /* AddFolderSheet.xib in Resources */, - 84B2FAA41FF47BAC009C4878 /* FeedListWindow.xib in Resources */, + 84C12A151FF5B0080009A267 /* FeedList.storyboard in Resources */, 84E95CF71FABB3C800552D99 /* FeedList.plist in Resources */, 849C64681ED37A5D003D8FC0 /* Assets.xcassets in Resources */, 849C646B1ED37A5D003D8FC0 /* Main.storyboard in Resources */, @@ -1444,7 +1441,6 @@ 84B99C6B1FAE370B00ECDEDB /* FeedListFeed.swift in Sources */, 842611A01FCB72600086A189 /* FeaturedImageDownloader.swift in Sources */, 849A97781ED9EC04007D329B /* TimelineCellLayout.swift in Sources */, - 847C4C9C1FF44F790090D517 /* FeedListSplitViewDelegate.swift in Sources */, 849A976C1ED9EBC8007D329B /* TimelineTableRowView.swift in Sources */, 849A977B1ED9EC04007D329B /* UnreadIndicatorView.swift in Sources */, 84B99C9D1FAE83C600ECDEDB /* DeleteFromSidebarCommand.swift in Sources */, diff --git a/Evergreen/AppDelegate.swift b/Evergreen/AppDelegate.swift index fa837ed38..c99727c12 100644 --- a/Evergreen/AppDelegate.swift +++ b/Evergreen/AppDelegate.swift @@ -267,7 +267,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations, @IBAction func showFeedList(_ sender: AnyObject) { if feedListWindowController == nil { - feedListWindowController = FeedListWindowController() + feedListWindowController = windowControllerWithName("FeedList") } feedListWindowController!.showWindow(self) } diff --git a/Evergreen/Base.lproj/MainWindow.storyboard b/Evergreen/Base.lproj/MainWindow.storyboard index 9b23483ee..2e6f49dc6 100644 --- a/Evergreen/Base.lproj/MainWindow.storyboard +++ b/Evergreen/Base.lproj/MainWindow.storyboard @@ -215,7 +215,7 @@ - + diff --git a/Evergreen/FeedList/FeedList.storyboard b/Evergreen/FeedList/FeedList.storyboard new file mode 100644 index 000000000..84e61ba4c --- /dev/null +++ b/Evergreen/FeedList/FeedList.storyboard @@ -0,0 +1,370 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Evergreen/FeedList/FeedListSplitViewDelegate.swift b/Evergreen/FeedList/FeedListSplitViewDelegate.swift deleted file mode 100644 index 1fe9da91f..000000000 --- a/Evergreen/FeedList/FeedListSplitViewDelegate.swift +++ /dev/null @@ -1,145 +0,0 @@ -// -// FeedListSplitViewDelegate.swift -// Evergreen -// -// Created by Brent Simmons on 12/27/17. -// Copyright © 2017 Ranchero Software. All rights reserved. -// - -import Cocoa -import DB5 -import RSCore - -final class FeedListSplitViewDelegate: NSObject, NSSplitViewDelegate { - - @IBOutlet weak var sidebarView: NSView? - @IBOutlet weak var timelineView: NSView? - @IBOutlet weak var splitView: NSSplitView? - let sidebarMinimumThickness: CGFloat - let sidebarMaximumThickness: CGFloat - let sidebarBestWidth: CGFloat - let timelineMinimumThickness: CGFloat - - override init() { - - sidebarMinimumThickness = appDelegate.currentTheme.float(forKey: "FeedDirectory.sidebar.minimumThickness") - sidebarMaximumThickness = appDelegate.currentTheme.float(forKey: "FeedDirectory.sidebar.maximumThickness") - sidebarBestWidth = appDelegate.currentTheme.float(forKey: "FeedDirectory.sidebar.bestWidth") - timelineMinimumThickness = appDelegate.currentTheme.float(forKey: "FeedDirectory.timeline.minimumThickness") - - super.init() - } - -// override func awakeFromNib() { -// -// let highestAllowedPriority = NSLayoutConstraint.Priority(rawValue: NSLayoutConstraint.Priority.dragThatCannotResizeWindow.rawValue - 1) -// splitView?.setHoldingPriority(highestAllowedPriority, forSubviewAt: 0) -// splitView?.setHoldingPriority(.defaultLow, forSubviewAt: 1) -// } - - // MARK: - NSSplitViewDelegate - - func splitView(_ splitView: NSSplitView, canCollapseSubview subview: NSView) -> Bool { - - return false - } - - func splitView(_ splitView: NSSplitView, shouldCollapseSubview subview: NSView, forDoubleClickOnDividerAt dividerIndex: Int) -> Bool { - - return false - } - - func splitView(_ splitView: NSSplitView, shouldHideDividerAt dividerIndex: Int) -> Bool { - - return false - } - - func splitView(_ splitView: NSSplitView, constrainMinCoordinate proposedMinimumPosition: CGFloat, ofSubviewAt dividerIndex: Int) -> CGFloat { - - return sidebarMinimumThickness - } - - func splitView(_ splitView: NSSplitView, constrainMaxCoordinate proposedMaximumPosition: CGFloat, ofSubviewAt dividerIndex: Int) -> CGFloat { - - return sidebarMaximumThickness - } - - func splitView(_ splitView: NSSplitView, constrainSplitPosition proposedPosition: CGFloat, ofSubviewAt dividerIndex: Int) -> CGFloat { - - if proposedPosition < sidebarMinimumThickness { - return sidebarMinimumThickness - } - - // If proposedPosition makes timeline too small, then adjust. - let proposedTimelineWidth = proposedTimelineThickness(splitView, proposedPosition) - if proposedTimelineWidth < timelineMinimumThickness { - return min(sidebarMaximumThickness, proposedPosition - (timelineMinimumThickness - proposedTimelineWidth)) - } - - if proposedPosition > sidebarMaximumThickness { - return sidebarMaximumThickness - } - - return proposedPosition - } - -// func splitView(_ splitView: NSSplitView, shouldAdjustSizeOfSubview view: NSView) -> Bool { -// -// guard let sidebarView = sidebarView, let timelineView = timelineView else { -// assertionFailure("Expected sidebarView and timelineView as non-nil, but at least one is nil.") -// return true -// } -// -// if view === sidebarView { -// if timelineView.frame.width <= timelineMinimumThickness { -// return true -// } -// return false -// } -// -// return true -// } - - func splitView(_ splitView: NSSplitView, resizeSubviewsWithOldSize oldSize: NSSize) { - - guard let sidebarView = sidebarView, let timelineView = timelineView else { - assertionFailure("Expected sidebarView and timelineView as non-nil, but at least one is nil.") - return - } - - let splitViewFrame = splitView.frame - let splitViewWidth = splitViewFrame.width - let dividerThickness = splitView.dividerThickness - - var sidebarViewFrame = sidebarView.frame - sidebarViewFrame.size.height = splitViewFrame.height - var timelineViewFrame = timelineView.frame - timelineViewFrame.size.height = splitViewFrame.height - - sidebarViewFrame.size.width = max(sidebarViewFrame.width, sidebarMinimumThickness) - sidebarViewFrame.size.width = ceil(min(sidebarViewFrame.width, sidebarMaximumThickness)) - timelineViewFrame.size.width = floor(min(timelineViewFrame.width, timelineMinimumThickness)) - - let totalProposedWidth = sidebarViewFrame.width + dividerThickness + timelineViewFrame.width - let difference = splitViewWidth - totalProposedWidth - if difference < 0 { - timelineViewFrame.size.width += difference - if timelineViewFrame.width < 0 { - timelineViewFrame.size.width = 0 - sidebarViewFrame.size.width += difference - } - } - - sidebarView.rs_setFrameIfNotEqual(sidebarViewFrame) - timelineView.rs_setFrameIfNotEqual(timelineViewFrame) - } -} - -private extension FeedListSplitViewDelegate { - - func proposedTimelineThickness(_ splitView: NSSplitView, _ proposedPosition: CGFloat) -> CGFloat { - - return (splitView.frame.width - splitView.dividerThickness) - proposedPosition - } - -} diff --git a/Evergreen/FeedList/FeedListTimelineViewController.swift b/Evergreen/FeedList/FeedListTimelineViewController.swift index 823d09c31..29bcacbbc 100644 --- a/Evergreen/FeedList/FeedListTimelineViewController.swift +++ b/Evergreen/FeedList/FeedListTimelineViewController.swift @@ -6,4 +6,12 @@ // Copyright © 2017 Ranchero Software. All rights reserved. // -import Foundation +import Cocoa + +final class FeedListTimelineViewController: NSViewController { + + override func viewDidLoad() { + + view.translatesAutoresizingMaskIntoConstraints = false + } +} diff --git a/Evergreen/FeedList/FeedListViewController.swift b/Evergreen/FeedList/FeedListViewController.swift index 2b22dc60f..89070fef1 100644 --- a/Evergreen/FeedList/FeedListViewController.swift +++ b/Evergreen/FeedList/FeedListViewController.swift @@ -23,6 +23,8 @@ final class FeedListViewController: NSViewController { override func viewDidLoad() { + view.translatesAutoresizingMaskIntoConstraints = false + sidebarCellAppearance = SidebarCellAppearance(theme: appDelegate.currentTheme, fontSize: AppDefaults.shared.sidebarFontSize) NotificationCenter.default.addObserver(self, selector: #selector(faviconDidBecomeAvailable(_:)), name: .FaviconDidBecomeAvailable, object: nil) outlineView.needsLayout = true @@ -71,7 +73,7 @@ extension FeedListViewController: NSOutlineViewDelegate { func outlineView(_ outlineView: NSOutlineView, viewFor tableColumn: NSTableColumn?, item: Any) -> NSView? { let cell = outlineView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "FeedListCell"), owner: self) as! SidebarCell - + cell.translatesAutoresizingMaskIntoConstraints = false let node = item as! Node configure(cell, node) diff --git a/Evergreen/FeedList/FeedListWindow.xib b/Evergreen/FeedList/FeedListWindow.xib deleted file mode 100644 index 81d418604..000000000 --- a/Evergreen/FeedList/FeedListWindow.xib +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Evergreen/FeedList/FeedListWindowController.swift b/Evergreen/FeedList/FeedListWindowController.swift index 515ad1fae..a6549de5a 100644 --- a/Evergreen/FeedList/FeedListWindowController.swift +++ b/Evergreen/FeedList/FeedListWindowController.swift @@ -11,11 +11,11 @@ import Cocoa class FeedListWindowController : NSWindowController { - public convenience init() { + override func windowDidLoad() { - self.init(windowNibName: NSNib.Name(rawValue: "FeedListWindow")) + window!.contentView?.translatesAutoresizingMaskIntoConstraints = false } - + @IBAction func addToFeeds(_ sender: AnyObject) { } diff --git a/Evergreen/MainWindow/Sidebar/Cell/SidebarCell.swift b/Evergreen/MainWindow/Sidebar/Cell/SidebarCell.swift index 428a861b8..ae7f93ba7 100644 --- a/Evergreen/MainWindow/Sidebar/Cell/SidebarCell.swift +++ b/Evergreen/MainWindow/Sidebar/Cell/SidebarCell.swift @@ -83,6 +83,8 @@ class SidebarCell : NSTableCellView { private func commonInit() { unreadCountView.translatesAutoresizingMaskIntoConstraints = false + imageView?.translatesAutoresizingMaskIntoConstraints = false + textField?.translatesAutoresizingMaskIntoConstraints = false addSubview(unreadCountView) }