Fixed bug 3058 - Slight mistake in GetWindowStyle in SDL_windowswindow.c Coriiander There's a slight mistake in the function "GetWindowStyle" found in file "SDL_windowswindow.c". When a window is marked to be resizable, the resizable style is being added regardless of whether the window has a border or not. While for some arcane, hidden semantics this can be ok, it's still inconsistent in this case.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
diff --git a/src/video/windows/SDL_windowswindow.c b/src/video/windows/SDL_windowswindow.c
index b80a515..f1c1492 100644
--- a/src/video/windows/SDL_windowswindow.c
+++ b/src/video/windows/SDL_windowswindow.c
@@ -65,12 +65,10 @@ GetWindowStyle(SDL_Window * window)
if (window->flags & SDL_WINDOW_FULLSCREEN) {
style |= STYLE_FULLSCREEN;
+ } else if (window->flags & SDL_WINDOW_BORDERLESS) {
+ style |= STYLE_BORDERLESS;
} else {
- if (window->flags & SDL_WINDOW_BORDERLESS) {
- style |= STYLE_BORDERLESS;
- } else {
- style |= STYLE_NORMAL;
- }
+ style |= STYLE_NORMAL;
if (window->flags & SDL_WINDOW_RESIZABLE) {
style |= STYLE_RESIZABLE;
}
@@ -513,15 +511,11 @@ WIN_SetWindowBordered(_THIS, SDL_Window * window, SDL_bool bordered)
{
SDL_WindowData *data = (SDL_WindowData *)window->driverdata;
HWND hwnd = data->hwnd;
- DWORD style = GetWindowLong(hwnd, GWL_STYLE);
+ DWORD style;
- if (bordered) {
- style &= ~STYLE_BORDERLESS;
- style |= STYLE_NORMAL;
- } else {
- style &= ~STYLE_NORMAL;
- style |= STYLE_BORDERLESS;
- }
+ style = GetWindowLong(hwnd, GWL_STYLE);
+ style &= ~STYLE_MASK;
+ style |= GetWindowStyle(window);
data->in_border_change = SDL_TRUE;
SetWindowLong(hwnd, GWL_STYLE, style);
@@ -534,13 +528,11 @@ WIN_SetWindowResizable(_THIS, SDL_Window * window, SDL_bool resizable)
{
SDL_WindowData *data = (SDL_WindowData *)window->driverdata;
HWND hwnd = data->hwnd;
- DWORD style = GetWindowLong(hwnd, GWL_STYLE);
+ DWORD style;
- if (resizable) {
- style |= STYLE_RESIZABLE;
- } else {
- style &= ~STYLE_RESIZABLE;
- }
+ style = GetWindowLong(hwnd, GWL_STYLE);
+ style &= ~STYLE_MASK;
+ style |= GetWindowStyle(window);
SetWindowLong(hwnd, GWL_STYLE, style);
}