Files
SOMA-PRO/flutter_soma_app/macos/Runner/AppDelegate.swift
T
2026-08-22 19:08:19 -03:00

33 lines
1.5 KiB
Swift

import Cocoa
import FlutterMacOS
@main
class AppDelegate: FlutterAppDelegate {
override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
return true
}
// Esta app se relanza siempre por script (redirect al updater y viceversa),
// nunca tiene sentido "resumir" la ventana de una sesión anterior. Con esto
// en `true`, macOS intenta restaurar el estado de ventana guardado al
// arrancar y, si falla la restauración (visto en el log del sistema:
// "Unable to find className=(null)"), aplica una heurística que termina
// interfiriendo con la ventana recién creada antes de que Flutter pinte el
// primer frame — pantalla negra permanente sin ningún error de Dart.
override func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool {
return false
}
// Cuando esta app la lanza soma_pro_updater (vía `open --args`) en vez de
// Finder/el usuario directamente, la ventana puede quedar creada pero sin
// volverse la app activa/en primer plano — macOS pausa el render de
// ventanas no activas para ahorrar batería, y como esta pantalla no tiene
// animación propia que fuerce un repaint, queda negra para siempre. Forzar
// la activación acá evita depender de que el proceso que nos lanzó haya
// completado bien el traspaso de foco.
override func applicationDidFinishLaunching(_ notification: Notification) {
super.applicationDidFinishLaunching(notification)
NSApp.activate(ignoringOtherApps: true)
}
}