From e051a43d15bd0f6f68a9557dac4dcca3142632bf Mon Sep 17 00:00:00 2001
From: Sam Lantinga <slouken@libsdl.org>
Date: Sun, 29 Jan 2006 22:09:26 +0000
Subject: [PATCH] Only save the window position if we're in windowed mode

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%401294
---
 src/video/wincommon/SDL_sysevents.c |  8 ++++++--
 src/video/windib/SDL_dibvideo.c     |  8 ++++++--
 src/video/windx5/SDL_dx5video.c     | 15 +++++++++------
 3 files changed, 21 insertions(+), 10 deletions(-)

diff --git a/src/video/wincommon/SDL_sysevents.c b/src/video/wincommon/SDL_sysevents.c
index 44ebad69..805b543a 100644
--- a/src/video/wincommon/SDL_sysevents.c
+++ b/src/video/wincommon/SDL_sysevents.c
@@ -568,8 +568,12 @@ LONG CALLBACK WinMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
 			GetClientRect(SDL_Window, &SDL_bounds);
 			ClientToScreen(SDL_Window, (LPPOINT)&SDL_bounds);
 			ClientToScreen(SDL_Window, (LPPOINT)&SDL_bounds+1);
-			SDL_windowX = SDL_bounds.left;
-			SDL_windowY = SDL_bounds.top;
+			if ( !SDL_resizing && !IsZoomed(SDL_Window) &&
+			     SDL_PublicSurface &&
+				!(SDL_PublicSurface->flags & SDL_FULLSCREEN) ) {
+				SDL_windowX = SDL_bounds.left;
+				SDL_windowY = SDL_bounds.top;
+			}
 			w = SDL_bounds.right-SDL_bounds.left;
 			h = SDL_bounds.bottom-SDL_bounds.top;
 			if ( this->input_grab != SDL_GRAB_OFF ) {
diff --git a/src/video/windib/SDL_dibvideo.c b/src/video/windib/SDL_dibvideo.c
index 42836c86..9beb1f65 100644
--- a/src/video/windib/SDL_dibvideo.c
+++ b/src/video/windib/SDL_dibvideo.c
@@ -468,6 +468,7 @@ SDL_Surface *DIB_SetVideoMode(_THIS, SDL_Surface *current,
 	if ( current->flags & SDL_OPENGL ) {
 		WIN_GL_ShutDown(this);
 	}
+	SDL_resizing = 1;
 
 	/* Recalculate the bitmasks if necessary */
 	if ( bpp == current->format->BitsPerPixel ) {
@@ -686,7 +687,6 @@ SDL_Surface *DIB_SetVideoMode(_THIS, SDL_Surface *current,
 		}
 		swp_flags = (SWP_NOCOPYBITS | SWP_SHOWWINDOW);
 
-		SDL_resizing = 1;
 		bounds.left = SDL_windowX;
 		bounds.top = SDL_windowY;
 		bounds.right = SDL_windowX+video->w;
@@ -713,9 +713,13 @@ SDL_Surface *DIB_SetVideoMode(_THIS, SDL_Surface *current,
 			top = HWND_NOTOPMOST;
 		}
 		SetWindowPos(SDL_Window, top, x, y, width, height, swp_flags);
-		SDL_resizing = 0;
+		if ( !(flags & SDL_FULLSCREEN) ) {
+			SDL_windowX = SDL_bounds.left;
+			SDL_windowY = SDL_bounds.top;
+		}
 		SetForegroundWindow(SDL_Window);
 	}
+	SDL_resizing = 0;
 
 	/* Set up for OpenGL */
 	if ( flags & SDL_OPENGL ) {
diff --git a/src/video/windx5/SDL_dx5video.c b/src/video/windx5/SDL_dx5video.c
index 29baf8f4..ff1552bc 100644
--- a/src/video/windx5/SDL_dx5video.c
+++ b/src/video/windx5/SDL_dx5video.c
@@ -1007,6 +1007,7 @@ SDL_Surface *DX5_SetVideoMode(_THIS, SDL_Surface *current,
 	LPDIRECTDRAWSURFACE  dd_surface1;
 	LPDIRECTDRAWSURFACE3 dd_surface3;
 
+	SDL_resizing = 1;
 #ifdef DDRAW_DEBUG
  fprintf(stderr, "Setting %dx%dx%d video mode\n", width, height, bpp);
 #endif
@@ -1157,7 +1158,6 @@ SDL_Surface *DX5_SetVideoMode(_THIS, SDL_Surface *current,
 			}
 			swp_flags = (SWP_NOCOPYBITS | SWP_SHOWWINDOW);
 
-			SDL_resizing = 1;
 			bounds.left = SDL_windowX;
 			bounds.top = SDL_windowY;
 			bounds.right = SDL_windowX+video->w;
@@ -1184,9 +1184,13 @@ SDL_Surface *DX5_SetVideoMode(_THIS, SDL_Surface *current,
 				top = HWND_NOTOPMOST;
 			}
 			SetWindowPos(SDL_Window, top, x, y, width, height, swp_flags);
-			SDL_resizing = 0;
+			if ( !(flags & SDL_FULLSCREEN) ) {
+				SDL_windowX = SDL_bounds.left;
+				SDL_windowY = SDL_bounds.top;
+			}
 			SetForegroundWindow(SDL_Window);
 		}
+		SDL_resizing = 0;
 
 		/* Set up for OpenGL */
 		if ( WIN_GL_SetupWindow(this) < 0 ) {
@@ -1240,7 +1244,6 @@ SDL_Surface *DX5_SetVideoMode(_THIS, SDL_Surface *current,
 		int maxRefreshRate;
 
 		/* Cover up desktop during mode change */
-		SDL_resizing = 1;
 		bounds.left = 0;
 		bounds.top = 0;
 		bounds.right = GetSystemMetrics(SM_CXSCREEN);
@@ -1250,7 +1253,6 @@ SDL_Surface *DX5_SetVideoMode(_THIS, SDL_Surface *current,
 			bounds.left, bounds.top, 
 			bounds.right - bounds.left,
 			bounds.bottom - bounds.top, SWP_NOCOPYBITS);
-		SDL_resizing = 0;
 		ShowWindow(SDL_Window, SW_SHOW);
 		while ( GetForegroundWindow() != SDL_Window ) {
 			SetForegroundWindow(SDL_Window);
@@ -1559,7 +1561,6 @@ SDL_Surface *DX5_SetVideoMode(_THIS, SDL_Surface *current,
 			}
 			swp_flags = SWP_NOCOPYBITS;
 
-			SDL_resizing = 1;
 			bounds.left = SDL_windowX;
 			bounds.top = SDL_windowY;
 			bounds.right = SDL_windowX+video->w;
@@ -1578,12 +1579,14 @@ SDL_Surface *DX5_SetVideoMode(_THIS, SDL_Surface *current,
 				swp_flags |= SWP_NOMOVE;
 			}
 			SetWindowPos(SDL_Window, HWND_NOTOPMOST, x, y, width, height, swp_flags);
-			SDL_resizing = 0;
+			SDL_windowX = SDL_bounds.left;
+			SDL_windowY = SDL_bounds.top;
 		}
 
 	}
 	ShowWindow(SDL_Window, SW_SHOW);
 	SetForegroundWindow(SDL_Window);
+	SDL_resizing = 0;
 
 	/* We're live! */
 	return(video);
-- 
2.18.1