From 0ac083d53da5faea65e42da24a31ec0fa0f48a1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20R=C4=99bacz?= Date: Fri, 23 Jan 2026 17:50:35 +0100 Subject: [PATCH] CtrlCore: Fix macOS Ide crash when closing app from dock. (#359) --- uppsrc/CtrlCore/CocoApp.mm | 5 +++++ uppsrc/CtrlCore/TopWindow.cpp | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/uppsrc/CtrlCore/CocoApp.mm b/uppsrc/CtrlCore/CocoApp.mm index f2d2467ea..66d36fa59 100644 --- a/uppsrc/CtrlCore/CocoApp.mm +++ b/uppsrc/CtrlCore/CocoApp.mm @@ -45,6 +45,11 @@ NSMenu *Cocoa_DockMenu(); Upp::Ctrl::PostReSkin(); } +- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender { + Upp::GuiLock __; + Upp::TopWindow::ShutdownWindows(); + return NSTerminateCancel; +} @end diff --git a/uppsrc/CtrlCore/TopWindow.cpp b/uppsrc/CtrlCore/TopWindow.cpp index 42957b63a..aa87bca02 100644 --- a/uppsrc/CtrlCore/TopWindow.cpp +++ b/uppsrc/CtrlCore/TopWindow.cpp @@ -500,12 +500,15 @@ void TopWindow::ShutdownWindows() again = false; for(int i = 0; i < tc.GetCount(); i++) { Ptr w = dynamic_cast(tc[i]); - if(w && w->IsOpen() && w->IsEnabled()) { + if(w && w->IsOpen()) { again = true; w->SetForeground(); w->ShutdownWindow(); - if(w && w->IsOpen()) + if(w && w->IsOpen()) { w->WhenClose(); + if(w) + w->Close(); + } if(!w || !w->IsOpen()) break; }