Skip to content
Permalink
Browse files

Fixed min/max window size handling for borderless resizable windows

  • Loading branch information
slouken committed Feb 9, 2018
1 parent 4c2a444 commit 7b50aee93294d2271bca8b1dbb221904d81bb976
Showing with 17 additions and 17 deletions.
  1. +17 −17 src/video/windows/SDL_windowsevents.c
@@ -697,8 +697,6 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
int w, h;
int min_w, min_h;
int max_w, max_h;
int style;
BOOL menu;
BOOL constrain_max_size;

if (SDL_IsShapedWindow(data->window))
@@ -731,21 +729,23 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
constrain_max_size = FALSE;
}

size.top = 0;
size.left = 0;
size.bottom = h;
size.right = w;

style = GetWindowLong(hwnd, GWL_STYLE);
/* DJM - according to the docs for GetMenu(), the
return value is undefined if hwnd is a child window.
Apparently it's too difficult for MS to check
inside their function, so I have to do it here.
*/
menu = (style & WS_CHILDWINDOW) ? FALSE : (GetMenu(hwnd) != NULL);
AdjustWindowRectEx(&size, style, menu, 0);
w = size.right - size.left;
h = size.bottom - size.top;
if (!(SDL_GetWindowFlags(data->window) & SDL_WINDOW_BORDERLESS)) {
LONG style = GetWindowLong(hwnd, GWL_STYLE);
/* DJM - according to the docs for GetMenu(), the
return value is undefined if hwnd is a child window.
Apparently it's too difficult for MS to check
inside their function, so I have to do it here.
*/
BOOL menu = (style & WS_CHILDWINDOW) ? FALSE : (GetMenu(hwnd) != NULL);
size.top = 0;
size.left = 0;
size.bottom = h;
size.right = w;

AdjustWindowRectEx(&size, style, menu, 0);
w = size.right - size.left;
h = size.bottom - size.top;
}

/* Fix our size to the current size */
info = (MINMAXINFO *) lParam;

0 comments on commit 7b50aee

Please sign in to comment.