From aca2ca707102d7fb8f43952c7071e8dacc35f39e Mon Sep 17 00:00:00 2001
From: FunkyFr3sh <cc.red.alert.1@googlemail.com>
Date: Sat, 27 Nov 2021 17:38:22 +0100
Subject: [PATCH] fix cursor lock on alt+tab

(cherry picked from commit 6a38496bf76fea3a84087a9a3fd66d2911900fa1)
---
 src/mouse.c   | 2 +-
 src/wndproc.c | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/mouse.c b/src/mouse.c
index 34ab4f9..9b43aa7 100644
--- a/src/mouse.c
+++ b/src/mouse.c
@@ -13,7 +13,7 @@ void mouse_lock()
     if (g_ddraw->devmode || g_ddraw->bnet_active)
         return;
 
-    if (g_hook_active && !g_ddraw->locked)
+    if (g_hook_active && !g_ddraw->locked && !IsIconic(g_ddraw->hwnd))
     {
         int game_count = InterlockedExchangeAdd((LONG*)&g_ddraw->show_cursor_count, 0);
         int cur_count = real_ShowCursor(TRUE) - 1;
diff --git a/src/wndproc.c b/src/wndproc.c
index 230d050..795c819 100644
--- a/src/wndproc.c
+++ b/src/wndproc.c
@@ -500,6 +500,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
                 if (g_ddraw->renderer != d3d9_render_main)
                 {
                     ChangeDisplaySettings(&g_ddraw->render.mode, CDS_FULLSCREEN);
+                    real_ShowWindow(g_ddraw->hwnd, SW_RESTORE);
                     mouse_lock();
                 }
             }