mirror of
https://github.com/FBukovina/Atoll.git
synced 2026-10-27 15:14:33 +00:00
Fully working lock screen widget
This commit is contained in:
parent
675f60c9f2
commit
1d6946134c
4 changed files with 235 additions and 20 deletions
|
|
@ -244,7 +244,7 @@ private final class ExtensionLockScreenWidgetWindowPool {
|
|||
|
||||
private func frame(for descriptor: AtollLockScreenWidgetDescriptor, on screen: NSScreen) -> NSRect {
|
||||
let size = descriptor.size
|
||||
let safeInsets = NSEdgeInsets(top: 140, left: 48, bottom: 100, right: 48)
|
||||
let safeInsets = safeInsets(for: descriptor.position.clampMode)
|
||||
let screenFrame = screen.frame
|
||||
|
||||
let minX = screenFrame.minX + safeInsets.left
|
||||
|
|
@ -271,6 +271,17 @@ private final class ExtensionLockScreenWidgetWindowPool {
|
|||
return NSRect(x: originX, y: originY, width: size.width, height: size.height)
|
||||
}
|
||||
|
||||
private func safeInsets(for clampMode: AtollWidgetPosition.ClampMode) -> NSEdgeInsets {
|
||||
switch clampMode {
|
||||
case .safeRegion:
|
||||
return NSEdgeInsets(top: 140, left: 48, bottom: 100, right: 48)
|
||||
case .relaxed:
|
||||
return NSEdgeInsets(top: 96, left: 24, bottom: 72, right: 24)
|
||||
case .unconstrained:
|
||||
return NSEdgeInsets(top: 16, left: 0, bottom: 32, right: 0)
|
||||
}
|
||||
}
|
||||
|
||||
private func clamp(_ value: CGFloat, lower: CGFloat, upper: CGFloat) -> CGFloat {
|
||||
guard lower <= upper else { return value }
|
||||
return min(max(value, lower), upper)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue