From 553c180bee060af72949ca1a6fd838fe0fb2e613 Mon Sep 17 00:00:00 2001 From: bicarus-dev <202771338+bicarus-dev@users.noreply.github.com> Date: Sat, 1 Nov 2025 02:08:14 -0700 Subject: [PATCH] signal: force minimize widnows before showing crash handler dialog (#411) ## Link to GitHub Issue, if one exists #410 ## Description of change Forcibly minimize all windows before showing the crash dialog. Without this, the dialog shows "behind" the game when launching multi-monitor fullscreen games (TDJ, VM) ## Testing Tested TDJ and VM in fullscreen. --- src/spice2x/util/deferlog.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/spice2x/util/deferlog.cpp b/src/spice2x/util/deferlog.cpp index 600bacc..284b1d0 100644 --- a/src/spice2x/util/deferlog.cpp +++ b/src/spice2x/util/deferlog.cpp @@ -2,6 +2,7 @@ #include #include "build/defs.h" +#include "hooks/graphics/graphics.h" #include "deferlog.h" #include "util/logging.h" @@ -76,6 +77,13 @@ namespace deferredlogs { void show_popup_for_crash() { static std::once_flag shown; std::call_once(shown, []() { + + // minimize all windows + // only needed because in multi-monitor full screen games, MessageBox fails to show above the game + for (auto &hwnd : GRAPHICS_WINDOWS) { + ShowWindow(hwnd, SW_FORCEMINIMIZE); + } + const std::string title = "spice2x (" + to_string(VERSION_STRING_CFG) + ") - crash handler"; std::string text; text += "Game has crashed.\n\n";