From 77b5549a5647ba09449865c8771d3b03bda94bad Mon Sep 17 00:00:00 2001 From: Davit Date: Tue, 8 Sep 2026 21:39:40 +0500 Subject: [PATCH 1/2] fix(windows): destroy window before quitting message loop --- packages/window_manager/windows/window_manager.cpp | 4 +++- packages/window_manager/windows/window_manager_plugin.cpp | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/window_manager/windows/window_manager.cpp b/packages/window_manager/windows/window_manager.cpp index 1d19490..c1adec2 100644 --- a/packages/window_manager/windows/window_manager.cpp +++ b/packages/window_manager/windows/window_manager.cpp @@ -230,7 +230,9 @@ void WindowManager::WaitUntilReadyToShow() { } void WindowManager::Destroy() { - PostQuitMessage(0); + HWND hWnd = GetMainWindow(); + is_prevent_close_ = false; + DestroyWindow(hWnd); } void WindowManager::Close() { diff --git a/packages/window_manager/windows/window_manager_plugin.cpp b/packages/window_manager/windows/window_manager_plugin.cpp index ba7720a..b3e8332 100644 --- a/packages/window_manager/windows/window_manager_plugin.cpp +++ b/packages/window_manager/windows/window_manager_plugin.cpp @@ -317,8 +317,8 @@ std::optional WindowManagerPlugin::HandleWindowProc(HWND hWnd, } } } else if (message == WM_CLOSE) { - _EmitEvent("close"); if (window_manager->IsPreventClose()) { + _EmitEvent("close"); return -1; } } else if (message == WM_SHOWWINDOW) { From e5af4fc27f699992c4820a0c18f42974c458f4d3 Mon Sep 17 00:00:00 2001 From: Davit Date: Tue, 8 Sep 2026 21:45:26 +0500 Subject: [PATCH 2/2] fix(windows): destroy window before quitting message loop --- packages/window_manager/windows/window_manager_plugin.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/window_manager/windows/window_manager_plugin.cpp b/packages/window_manager/windows/window_manager_plugin.cpp index b3e8332..ba7720a 100644 --- a/packages/window_manager/windows/window_manager_plugin.cpp +++ b/packages/window_manager/windows/window_manager_plugin.cpp @@ -317,8 +317,8 @@ std::optional WindowManagerPlugin::HandleWindowProc(HWND hWnd, } } } else if (message == WM_CLOSE) { + _EmitEvent("close"); if (window_manager->IsPreventClose()) { - _EmitEvent("close"); return -1; } } else if (message == WM_SHOWWINDOW) {