|
@@ -2968,17 +2968,17 @@ private extension ViewController {
|
|
|
.foregroundColor: titleColor
|
|
.foregroundColor: titleColor
|
|
|
])
|
|
])
|
|
|
let textWidth = (title as NSString).size(withAttributes: [.font: titleFont]).width
|
|
let textWidth = (title as NSString).size(withAttributes: [.font: titleFont]).width
|
|
|
- let idealWidth = ceil(textWidth + 74) // icon + extra left inset + cleaner side padding
|
|
|
|
|
|
|
+ let idealWidth = ceil(textWidth + 80) // icon + spacing + side padding
|
|
|
scheduleGoogleAuthButtonWidthConstraint?.constant = min(320, max(188, idealWidth))
|
|
scheduleGoogleAuthButtonWidthConstraint?.constant = min(320, max(188, idealWidth))
|
|
|
|
|
|
|
|
if signedIn {
|
|
if signedIn {
|
|
|
let symbol = NSImage(systemSymbolName: "person.crop.circle.fill", accessibilityDescription: "Profile")
|
|
let symbol = NSImage(systemSymbolName: "person.crop.circle.fill", accessibilityDescription: "Profile")
|
|
|
- button.image = symbol.flatMap { resizedImage($0, to: NSSize(width: 20, height: 20)) }
|
|
|
|
|
- button.symbolConfiguration = NSImage.SymbolConfiguration(pointSize: 20, weight: .regular)
|
|
|
|
|
|
|
+ button.image = symbol.flatMap { paddedTrailingImage($0, iconSize: NSSize(width: 22, height: 22), trailingPadding: 8) }
|
|
|
|
|
+ button.symbolConfiguration = NSImage.SymbolConfiguration(pointSize: 22, weight: .regular)
|
|
|
button.contentTintColor = palette.textPrimary
|
|
button.contentTintColor = palette.textPrimary
|
|
|
} else {
|
|
} else {
|
|
|
if let g = NSImage(named: "GoogleGLogo") {
|
|
if let g = NSImage(named: "GoogleGLogo") {
|
|
|
- button.image = resizedImage(g, to: NSSize(width: 20, height: 20))
|
|
|
|
|
|
|
+ button.image = paddedTrailingImage(g, iconSize: NSSize(width: 22, height: 22), trailingPadding: 8)
|
|
|
} else {
|
|
} else {
|
|
|
button.image = nil
|
|
button.image = nil
|
|
|
}
|
|
}
|
|
@@ -3013,7 +3013,7 @@ private extension ViewController {
|
|
|
if Task.isCancelled { return }
|
|
if Task.isCancelled { return }
|
|
|
guard let image = NSImage(data: data) else { return }
|
|
guard let image = NSImage(data: data) else { return }
|
|
|
await MainActor.run {
|
|
await MainActor.run {
|
|
|
- self?.scheduleGoogleAuthButton?.image = self?.resizedImage(image, to: NSSize(width: 20, height: 20))
|
|
|
|
|
|
|
+ self?.scheduleGoogleAuthButton?.image = self?.paddedTrailingImage(image, iconSize: NSSize(width: 22, height: 22), trailingPadding: 8)
|
|
|
self?.scheduleGoogleAuthButton?.contentTintColor = nil
|
|
self?.scheduleGoogleAuthButton?.contentTintColor = nil
|
|
|
}
|
|
}
|
|
|
} catch {
|
|
} catch {
|
|
@@ -3034,6 +3034,20 @@ private extension ViewController {
|
|
|
return result
|
|
return result
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private func paddedTrailingImage(_ image: NSImage, iconSize: NSSize, trailingPadding: CGFloat) -> NSImage {
|
|
|
|
|
+ let base = resizedImage(image, to: iconSize)
|
|
|
|
|
+ let canvas = NSSize(width: iconSize.width + trailingPadding, height: iconSize.height)
|
|
|
|
|
+ let result = NSImage(size: canvas)
|
|
|
|
|
+ result.lockFocus()
|
|
|
|
|
+ base.draw(in: NSRect(x: 0, y: 0, width: iconSize.width, height: iconSize.height),
|
|
|
|
|
+ from: NSRect(origin: .zero, size: base.size),
|
|
|
|
|
+ operation: .copy,
|
|
|
|
|
+ fraction: 1.0)
|
|
|
|
|
+ result.unlockFocus()
|
|
|
|
|
+ result.isTemplate = false
|
|
|
|
|
+ return result
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private func applyGoogleAuthButtonSurface() {
|
|
private func applyGoogleAuthButtonSurface() {
|
|
|
guard let button = scheduleGoogleAuthButton else { return }
|
|
guard let button = scheduleGoogleAuthButton else { return }
|
|
|
let isDark = darkModeEnabled
|
|
let isDark = darkModeEnabled
|