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