diff --git a/src/dd.c b/src/dd.c index 961cbea..8e92a84 100644 --- a/src/dd.c +++ b/src/dd.c @@ -674,7 +674,7 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl RECT dst = { x, y, g_ddraw->render.width + x, g_ddraw->render.height + y }; - AdjustWindowRect(&dst, GetWindowLong(g_ddraw->hwnd, GWL_STYLE), FALSE); + AdjustWindowRect(&dst, GetWindowLong(g_ddraw->hwnd, GWL_STYLE), GetMenu(g_ddraw->hwnd) != NULL); real_SetWindowPos(g_ddraw->hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOMOVE | SWP_NOSIZE | SWP_FRAMECHANGED); real_MoveWindow(g_ddraw->hwnd, dst.left, dst.top, (dst.right - dst.left), (dst.bottom - dst.top), TRUE); diff --git a/src/utils.c b/src/utils.c index db2dd5d..f3fa8bf 100644 --- a/src/utils.c +++ b/src/utils.c @@ -199,6 +199,7 @@ void util_toggle_maximize() LONG style = GetWindowLong(g_ddraw->hwnd, GWL_STYLE); LONG exstyle = GetWindowLong(g_ddraw->hwnd, GWL_EXSTYLE); + BOOL got_menu = GetMenu(g_ddraw->hwnd) != NULL; if (real_GetClientRect(g_ddraw->hwnd, &client_rc) && SystemParametersInfo(SPI_GETWORKAREA, 0, &dst_rc, 0)) { @@ -214,7 +215,7 @@ void util_toggle_maximize() dst_rc.right = g_ddraw->width; dst_rc.bottom = g_ddraw->height; - AdjustWindowRectEx(&dst_rc, style, FALSE, exstyle); + AdjustWindowRectEx(&dst_rc, style, got_menu, exstyle); } else if (g_ddraw->boxing) { @@ -233,11 +234,11 @@ void util_toggle_maximize() } } - AdjustWindowRectEx(&dst_rc, style, FALSE, exstyle); + AdjustWindowRectEx(&dst_rc, style, got_menu, exstyle); } else if (g_ddraw->maintas) { - util_unadjust_window_rect(&dst_rc, style, FALSE, exstyle); + util_unadjust_window_rect(&dst_rc, style, got_menu, exstyle); int w = dst_rc.right - dst_rc.left; int h = dst_rc.bottom - dst_rc.top; @@ -253,7 +254,7 @@ void util_toggle_maximize() dst_rc.bottom = h; } - AdjustWindowRectEx(&dst_rc, style, FALSE, exstyle); + AdjustWindowRectEx(&dst_rc, style, got_menu, exstyle); } RECT pos_rc; @@ -262,8 +263,8 @@ void util_toggle_maximize() pos_rc.right = (dst_rc.right - dst_rc.left); pos_rc.bottom = (dst_rc.bottom - dst_rc.top); - util_unadjust_window_rect(&pos_rc, style, FALSE, exstyle); - util_unadjust_window_rect(&dst_rc, style, FALSE, exstyle); + util_unadjust_window_rect(&pos_rc, style, got_menu, exstyle); + util_unadjust_window_rect(&dst_rc, style, got_menu, exstyle); util_set_window_rect( pos_rc.left, diff --git a/src/wndproc.c b/src/wndproc.c index 795c819..f52f317 100644 --- a/src/wndproc.c +++ b/src/wndproc.c @@ -252,7 +252,11 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam /* maintain aspect ratio */ if (g_ddraw->maintas && CopyRect(&clientrc, windowrc) && - util_unadjust_window_rect(&clientrc, GetWindowLong(hWnd, GWL_STYLE), FALSE, GetWindowLong(hWnd, GWL_EXSTYLE)) && + util_unadjust_window_rect( + &clientrc, + GetWindowLong(hWnd, GWL_STYLE), + GetMenu(hWnd) != NULL, + GetWindowLong(hWnd, GWL_EXSTYLE)) && SetRect(&clientrc, 0, 0, clientrc.right - clientrc.left, clientrc.bottom - clientrc.top)) { float scaleH = (float)g_ddraw->height / g_ddraw->width; @@ -285,7 +289,11 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam /* enforce minimum window size */ if (CopyRect(&clientrc, windowrc) && - util_unadjust_window_rect(&clientrc, GetWindowLong(hWnd, GWL_STYLE), FALSE, GetWindowLong(hWnd, GWL_EXSTYLE)) && + util_unadjust_window_rect( + &clientrc, + GetWindowLong(hWnd, GWL_STYLE), + GetMenu(hWnd) != NULL, + GetWindowLong(hWnd, GWL_EXSTYLE)) && SetRect(&clientrc, 0, 0, clientrc.right - clientrc.left, clientrc.bottom - clientrc.top)) { if (clientrc.right < g_ddraw->width) @@ -337,7 +345,11 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam /* save new window position */ if (CopyRect(&clientrc, windowrc) && - util_unadjust_window_rect(&clientrc, GetWindowLong(hWnd, GWL_STYLE), FALSE, GetWindowLong(hWnd, GWL_EXSTYLE))) + util_unadjust_window_rect( + &clientrc, + GetWindowLong(hWnd, GWL_STYLE), + GetMenu(hWnd) != NULL, + GetWindowLong(hWnd, GWL_EXSTYLE))) { g_config.window_rect.left = clientrc.left; g_config.window_rect.top = clientrc.top;