From a81d6fc595c8f9ea8aede6f2a42698b4c7008156 Mon Sep 17 00:00:00 2001 From: willsunnn Date: Thu, 9 May 2019 22:20:45 -0700 Subject: [PATCH] Made the dock resize when Apps are removed --- MTMR/Info.plist | 2 +- MTMR/Widgets/AppScrubberTouchBarItem.swift | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/MTMR/Info.plist b/MTMR/Info.plist index 71da62c..86379f7 100644 --- a/MTMR/Info.plist +++ b/MTMR/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 0.20.3 CFBundleVersion - 220 + 223 LSApplicationCategoryType public.app-category.utilities LSMinimumSystemVersion diff --git a/MTMR/Widgets/AppScrubberTouchBarItem.swift b/MTMR/Widgets/AppScrubberTouchBarItem.swift index e9fb8ac..7b28da4 100644 --- a/MTMR/Widgets/AppScrubberTouchBarItem.swift +++ b/MTMR/Widgets/AppScrubberTouchBarItem.swift @@ -32,6 +32,9 @@ class AppScrubberTouchBarItem: NSCustomTouchBarItem, NSScrubberDelegate, NSScrub convenience override init(identifier: NSTouchBarItem.Identifier) { self.init(identifier: identifier, autoResize: false) } + + static var iconWidth = 36 + static var spacingWidth = 2 init(identifier: NSTouchBarItem.Identifier, autoResize: Bool) { super.init(identifier: identifier) @@ -42,8 +45,8 @@ class AppScrubberTouchBarItem: NSCustomTouchBarItem, NSScrubberDelegate, NSScrub scrubber.dataSource = self scrubber.mode = .free // .fixed let layout = NSScrubberFlowLayout() - layout.itemSize = NSSize(width: 36, height: 32) - layout.itemSpacing = 2 + layout.itemSize = NSSize(width: AppScrubberTouchBarItem.iconWidth, height: 32) + layout.itemSpacing = CGFloat(AppScrubberTouchBarItem.spacingWidth) scrubber.scrubberLayout = layout scrubber.selectionBackgroundStyle = .roundedBackground scrubber.showsAdditionalContentIndicators = true @@ -84,10 +87,18 @@ class AppScrubberTouchBarItem: NSCustomTouchBarItem, NSScrubberDelegate, NSScrub applications = newApplications applications += getDockPersistentAppsList() + updateSize() scrubber.reloadData() scrubber.selectedIndex = index ?? 0 } + + func updateSize() { + if self.autoResize { + let width = (AppScrubberTouchBarItem.iconWidth + AppScrubberTouchBarItem.spacingWidth) * self.applications.count - AppScrubberTouchBarItem.spacingWidth + self.setWidth(value: CGFloat(width)) + } + } public func numberOfItems(for _: NSScrubber) -> Int { return applications.count