Skip to content

Commit 154a435

Browse files
committed
fixing app opening position
1 parent f69ac24 commit 154a435

2 files changed

Lines changed: 26 additions & 1 deletion

File tree

singularity/AppDelegate.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ final class AppDelegate: NSObject, NSApplicationDelegate {
177177
}
178178
}
179179
NotificationCenter.default.addObserver(forName: NSWindow.didChangeBackingPropertiesNotification, object: nil, queue: .main) { [weak self] _ in Task { @MainActor in self?.applyWindowAppearance(); self?.updateWindowMasks() } }
180-
DispatchQueue.main.asyncAfter(deadline: .now() + 0.35) { AppModel.globalEnsureWindowSize?() }
180+
DispatchQueue.main.asyncAfter(deadline: .now() + 0.35) { AppModel.globalEnsureInitialWindowPosition?() }
181181
// Do not forcibly hide windows at launch; this can orphan the UI when focus changes
182182
// Ensure the main window is in front on first launch
183183
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {

singularity/AppModel.swift

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -971,6 +971,7 @@ final class AppModel: NSObject, ObservableObject {
971971
static var globalDismissSearchBubble: (() -> Void)? = nil
972972
static var globalRequestEnsureWindowSize: (() -> Void)? = nil
973973
static var globalRequestEnsureWindowSizeAnimated: (() -> Void)? = nil
974+
static var globalEnsureInitialWindowPosition: (() -> Void)? = nil
974975
static var allowBecomeKey: Bool = true
975976
static var globalEnsureWindowSize: (() -> Void)? = nil
976977
static var globalCycleProfile: (() -> Void)? = nil
@@ -1038,6 +1039,7 @@ final class AppModel: NSObject, ObservableObject {
10381039
AppModel.globalIsAwaitingKill = { [weak self] in self?.awaitingKillSelection ?? false }
10391040
AppModel.globalRequestEnsureWindowSize = { [weak self] in self?.requestEnsureWindowSize(animated: false) }
10401041
AppModel.globalRequestEnsureWindowSizeAnimated = { [weak self] in self?.requestEnsureWindowSize(animated: true) }
1042+
AppModel.globalEnsureInitialWindowPosition = { [weak self] in self?.ensureInitialWindowPosition() }
10411043
AppModel.globalShowAuthPanel = { [weak self] in
10421044
guard let self else { return }
10431045
Task { @MainActor in
@@ -7516,6 +7518,29 @@ Formatting Requirements:
75167518
self.updateWindowSizeForState(animated: false)
75177519
}
75187520

7521+
func ensureInitialWindowPosition() {
7522+
guard let w = findMainPanelWindow() ?? NSApp.windows.first(where: { $0.isVisible }) else { return }
7523+
7524+
// Normalize size
7525+
let targetWidth: CGFloat = 1000
7526+
let targetHeight: CGFloat = 680 // Standard height for initial launch
7527+
7528+
// Find screen center
7529+
let screen = w.screen ?? NSScreen.main ?? NSScreen.screens.first
7530+
if let screen = screen {
7531+
let visibleFrame = screen.visibleFrame
7532+
let x = visibleFrame.midX - (targetWidth / 2)
7533+
let y = visibleFrame.midY - (targetHeight / 2)
7534+
7535+
let newFrame = NSRect(x: x, y: y, width: targetWidth, height: targetHeight)
7536+
w.setFrame(newFrame, display: true)
7537+
} else {
7538+
// Fallback if no screen detected (unlikely)
7539+
w.setContentSize(NSSize(width: targetWidth, height: targetHeight))
7540+
w.center()
7541+
}
7542+
}
7543+
75197544
private func setWindowHeight(_ height: CGFloat, animated: Bool) {
75207545
guard let w = findMainPanelWindow() ?? NSApp.windows.first(where: { $0.isVisible }) else { return }
75217546
// Skip if no meaningful height change

0 commit comments

Comments
 (0)