fix: better crop app icons on macos < 26 (closes #5080)
This commit is contained in:
1 parent
911aad42cc
commit
237bb1e0d9
1 file changed
+16
-4
@@ -30,16 +30,28 @@ class Application: NSObject {
|
|||||||
kAXApplicationShownNotification,
|
kAXApplicationShownNotification,
|
||||||
]
|
]
|
||||||
|
|
||||||
static func appIconWithoutPadding(_ icon: NSImage?) -> CGImage? {
|
private static let appIconPadding: CGFloat = {
|
||||||
|
// Tahoe redesigned app icons. Keeping their rounded look, and reducing their size; we trim that padding
|
||||||
|
if #available(macOS 26.0, *) {
|
||||||
|
return 84
|
||||||
|
}
|
||||||
|
// Big Sur redesigned app icons. A big change from square icons to rounded icons, and reducing their size; we trim that padding
|
||||||
|
if #available(macOS 11.0, *) {
|
||||||
|
return 24
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}()
|
||||||
|
|
||||||
|
private static func appIconWithoutPadding(_ icon: NSImage?) -> CGImage? {
|
||||||
guard let icon else { return nil }
|
guard let icon else { return nil }
|
||||||
// we can render the icon quite big (e.g. windowless app icon), so we store it high-res
|
// we can render the icon quite big (e.g. windowless app icon), so we store it high-res
|
||||||
let iconWidth = CGFloat(1024)
|
let iconWidth = CGFloat(1024)
|
||||||
// NSRunningApplication.icon returns icons with padding; we remove it manually
|
// NSRunningApplication.icon returns icons with padding; we remove it manually
|
||||||
let paddingToRemove = CGFloat(84)
|
|
||||||
let croppedSize = iconWidth - paddingToRemove * 2
|
let croppedSize = iconWidth - appIconPadding * 2
|
||||||
return icon
|
return icon
|
||||||
.appIconFixedSize(NSSize(width: iconWidth, height: iconWidth))?
|
.appIconFixedSize(NSSize(width: iconWidth, height: iconWidth))?
|
||||||
.cropping(to: CGRect(x: paddingToRemove, y: paddingToRemove, width: croppedSize, height: croppedSize).integral)
|
.cropping(to: CGRect(x: appIconPadding, y: appIconPadding, width: croppedSize, height: croppedSize).integral)
|
||||||
}
|
}
|
||||||
|
|
||||||
init(_ runningApplication: NSRunningApplication) {
|
init(_ runningApplication: NSRunningApplication) {
|
||||||
|
|||||||
Reference in new issue
Block a user