From 604d08665ac3a01789b4340fd387fb43e5a90e14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20Vo=C3=9Fhenrich?= <94936637+T1mVo@users.noreply.github.com> Date: Fri, 27 Sep 2024 16:33:48 +0200 Subject: [PATCH 1/2] Fix window moving further than preview --- Loop/Preview Window/LuminarePreviewView.swift | 2 +- Loop/Preview Window/PreviewController.swift | 3 ++- Loop/Window Management/WindowAction.swift | 23 ++++++++++++++++--- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/Loop/Preview Window/LuminarePreviewView.swift b/Loop/Preview Window/LuminarePreviewView.swift index c4fe8bce..86fbb53b 100644 --- a/Loop/Preview Window/LuminarePreviewView.swift +++ b/Loop/Preview Window/LuminarePreviewView.swift @@ -62,7 +62,7 @@ struct LuminarePreviewView: View { .offset(x: actionRect.minX, y: actionRect.minY) .scaleEffect(CGSize(width: scale, height: scale)) .onAppear { - actionRect = action.getFrame(window: nil, bounds: .init(origin: .zero, size: geo.size)) + actionRect = action.getFrame(window: nil, bounds: .init(origin: .zero, size: geo.size), isPreview: true) withAnimation( .interpolatingSpring( diff --git a/Loop/Preview Window/PreviewController.swift b/Loop/Preview Window/PreviewController.swift index c048d1ad..ba6505d6 100644 --- a/Loop/Preview Window/PreviewController.swift +++ b/Loop/Preview Window/PreviewController.swift @@ -92,7 +92,8 @@ class PreviewController { let targetWindowFrame = action.getFrame( window: window, bounds: screen.safeScreenFrame, - screen: screen + screen: screen, + isPreview: true ) .flipY(maxY: NSScreen.screens[0].frame.maxY) diff --git a/Loop/Window Management/WindowAction.swift b/Loop/Window Management/WindowAction.swift index c2e79029..3d65f578 100644 --- a/Loop/Window Management/WindowAction.swift +++ b/Loop/Window Management/WindowAction.swift @@ -133,7 +133,7 @@ struct WindowAction: Codable, Identifiable, Hashable, Equatable, Defaults.Serial return result.normalized() } - func getFrame(window: Window?, bounds: CGRect, disablePadding: Bool = false, screen: NSScreen? = nil) -> CGRect { + func getFrame(window: Window?, bounds: CGRect, disablePadding: Bool = false, screen: NSScreen? = nil, isPreview: Bool = false) -> CGRect { guard direction != .cycle, direction != .noAction else { return NSRect(origin: bounds.center, size: .zero) } @@ -151,7 +151,7 @@ struct WindowAction: Codable, Identifiable, Hashable, Equatable, Defaults.Serial LoopManager.sidesToAdjust = nil } - result = calculateTargetFrame(direction, window, bounds) + result = calculateTargetFrame(direction, window, bounds, isPreview) if !disablePadding { // If window can't be resized, center it within the already-resized frame. @@ -178,17 +178,28 @@ struct WindowAction: Codable, Identifiable, Hashable, Equatable, Defaults.Serial // MARK: - Window Frame Calculations private extension WindowAction { - func calculateTargetFrame(_ direction: WindowDirection, _ window: Window?, _ bounds: CGRect) -> CGRect { + func calculateTargetFrame(_ direction: WindowDirection, _ window: Window?, _ bounds: CGRect, _ isPreview: Bool) -> CGRect { var result: CGRect = .zero if direction.frameMultiplyValues != nil { result = applyFrameMultiplyValues(bounds) } else if direction.willAdjustSize { + // Return final frame of preview + if !isPreview { + return LoopManager.lastTargetFrame + } + let frameToResizeFrom = LoopManager.lastTargetFrame + result = calculateSizeAdjustment(frameToResizeFrom, bounds) } else if direction.willShrink || direction.willGrow { + // Return final frame of preview + if !isPreview { + return LoopManager.lastTargetFrame + } + // This allows for control over each side let frameToResizeFrom = LoopManager.lastTargetFrame @@ -207,7 +218,13 @@ private extension WindowAction { result = calculateSizeAdjustment(frameToResizeFrom, bounds) } else if direction.willMove { + // Return final frame of preview + if !isPreview { + return LoopManager.lastTargetFrame + } + let frameToResizeFrom = LoopManager.lastTargetFrame + result = calculatePositionAdjustment(frameToResizeFrom) } else if direction == .custom { From a7955b5b582893769e342c965a146eff4fc41d00 Mon Sep 17 00:00:00 2001 From: Kai Azim Date: Fri, 27 Sep 2024 13:41:08 -0600 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=90=9E=20Fix=20size/position=20adjust?= =?UTF-8?q?ment=20window=20actions=20not=20working=20when=20preview=20is?= =?UTF-8?q?=20disabled?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Loop/Window Management/WindowAction.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Loop/Window Management/WindowAction.swift b/Loop/Window Management/WindowAction.swift index 3d65f578..a2a79062 100644 --- a/Loop/Window Management/WindowAction.swift +++ b/Loop/Window Management/WindowAction.swift @@ -186,7 +186,7 @@ private extension WindowAction { } else if direction.willAdjustSize { // Return final frame of preview - if !isPreview { + if Defaults[.previewVisibility], !isPreview { return LoopManager.lastTargetFrame } @@ -196,7 +196,7 @@ private extension WindowAction { } else if direction.willShrink || direction.willGrow { // Return final frame of preview - if !isPreview { + if Defaults[.previewVisibility], !isPreview { return LoopManager.lastTargetFrame } @@ -219,7 +219,7 @@ private extension WindowAction { } else if direction.willMove { // Return final frame of preview - if !isPreview { + if Defaults[.previewVisibility], !isPreview { return LoopManager.lastTargetFrame }