From 8ad03a5976da80c140ee6120936b1183663f296a Mon Sep 17 00:00:00 2001 From: Louis Pontoise Date: Wed, 26 Aug 2020 00:18:58 +0900 Subject: [PATCH] fix: app badges would sometimes not be up-to-date --- src/logic/Applications.swift | 4 +++- src/ui/main-window/ThumbnailView.swift | 3 +-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/logic/Applications.swift b/src/logic/Applications.swift index 11d198f92..a89c4cf28 100644 --- a/src/logic/Applications.swift +++ b/src/logic/Applications.swift @@ -74,7 +74,8 @@ class Applications { } static func refreshBadges() { - retryAxCallUntilTimeout { + let group = DispatchGroup() + retryAxCallUntilTimeout(group) { if let dockPid = (Applications.list.first { $0.runningApplication.bundleIdentifier == "com.apple.dock" }?.runningApplication.processIdentifier), let axList = (try AXUIElementCreateApplication(dockPid).children()?.first { try $0.role() == "AXList" }), let axAppDockItem = (try axList.children()?.filter { try $0.subrole() == "AXApplicationDockItem" && ($0.appIsRunning() ?? false) }) { @@ -87,6 +88,7 @@ class Applications { } } } + _ = group.wait(wallTimeout: .now() + .seconds(1)) } private static func isActualApplication(_ app: NSRunningApplication) -> Bool { diff --git a/src/ui/main-window/ThumbnailView.swift b/src/ui/main-window/ThumbnailView.swift index bfd8d070a..860c19338 100644 --- a/src/ui/main-window/ThumbnailView.swift +++ b/src/ui/main-window/ThumbnailView.swift @@ -48,8 +48,6 @@ class ThumbnailView: NSStackView { private func addDockLabelIcon() { appIcon.addSubview(dockLabelIcon, positioned: .above, relativeTo: nil) - dockLabelIcon.topAnchor.constraint(equalTo: appIcon.topAnchor, constant: -4).isActive = true - dockLabelIcon.rightAnchor.constraint(equalTo: appIcon.rightAnchor, constant: 1).isActive = true } private func addWindowControls() { @@ -139,6 +137,7 @@ class ThumbnailView: NSStackView { } else { view.setNumber(dockLabel, true) } + dockLabelIcon.setFrameOrigin(NSPoint(x: appIcon.frame.maxX - dockLabelIcon.fittingSize.width - 1, y: appIcon.frame.maxY - dockLabelIcon.fittingSize.height + 4)) } assignIfDifferent(&frame.size.width, max(thumbnail.frame.size.width + Preferences.intraCellPadding * 2, ThumbnailView.widthMin(screen))) assignIfDifferent(&frame.size.height, newHeight)