From 7661a589bb562e9e887be0c6b551fd8e3dab8a94 Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Tue, 14 Aug 2018 15:43:48 +0200 Subject: [PATCH] yet another unity/gnome3 hack - Fixes random window repositioning --- ddraw.rc | 2 +- inc/main.h | 1 + src/main.c | 23 ++++++++++++++++++++--- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/ddraw.rc b/ddraw.rc index b0411c3..77a1ff8 100644 --- a/ddraw.rc +++ b/ddraw.rc @@ -2,7 +2,7 @@ #define vxstr(a,b,c,d) str(a##.##b##.##c##.##d) #define str(s) #s -#define VERSION 1,1,8,5 +#define VERSION 1,1,8,6 1 VERSIONINFO FILEVERSION VERSION diff --git a/inc/main.h b/inc/main.h index d44ef4f..c6fede3 100644 --- a/inc/main.h +++ b/inc/main.h @@ -25,6 +25,7 @@ #define CUTSCENE_HEIGHT 400 #define WM_AUTORENDERER WM_USER+111 +#define WM_WINEFULLSCREEN WM_USER+112 extern char OpenglVersion[]; diff --git a/src/main.c b/src/main.c index 7424344..97a1a6d 100644 --- a/src/main.c +++ b/src/main.c @@ -545,6 +545,26 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) switch(uMsg) { + case WM_WINDOWPOSCHANGED: + { + WINDOWPOS *pos = (WINDOWPOS *)lParam; + + if (ddraw->wine && !ddraw->windowed && (pos->x > 0 || pos->y > 0) && LastSetWindowPosTick + 500 < timeGetTime()) + PostMessage(ddraw->hWnd, WM_WINEFULLSCREEN, 0, 0); + + break; + } + case WM_WINEFULLSCREEN: + { + if (!ddraw->windowed) + { + LastSetWindowPosTick = timeGetTime(); + SetWindowPos(ddraw->hWnd, HWND_TOPMOST, 1, 1, ddraw->render.width, ddraw->render.height, SWP_SHOWWINDOW); + SetWindowPos(ddraw->hWnd, HWND_TOPMOST, 0, 0, ddraw->render.width, ddraw->render.height, SWP_SHOWWINDOW); + } + return 0; + } + case WM_SIZE: return DefWindowProc(hWnd, uMsg, wParam, lParam); /* Carmageddon fix */ case WM_MOVE: @@ -596,10 +616,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) mouse_unlock(); if (ddraw->wine && LastSetWindowPosTick + 500 > timeGetTime()) - { - LastSetWindowPosTick = 0; return 0; - } /* minimize our window on defocus when in fullscreen */ if (!ddraw->windowed)