Mercurial > sdl-ios-xcode
changeset 448:323c766f5a46
Fullscreen windows are always topmost under Windows
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 19 Aug 2002 03:09:25 +0000 |
parents | 16d0449891b8 |
children | 8a687496061f |
files | src/video/windib/SDL_dibvideo.c src/video/windx5/SDL_dx5video.c |
diffstat | 2 files changed, 22 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/src/video/windib/SDL_dibvideo.c Mon Aug 19 02:34:22 2002 +0000 +++ b/src/video/windib/SDL_dibvideo.c Mon Aug 19 03:09:25 2002 +0000 @@ -573,9 +573,9 @@ #endif } - /* DJM: Don't piss of anyone who has setup his own window */ - if (!SDL_windowid) - SetWindowLong(SDL_Window, GWL_STYLE, style); + /* DJM: Don't piss of anyone who has setup his own window */ + if (!SDL_windowid) + SetWindowLong(SDL_Window, GWL_STYLE, style); /* Delete the old bitmap if necessary */ if ( screen_bmp != NULL ) { @@ -651,6 +651,7 @@ /* Resize the window */ if ( SDL_windowid == NULL ) { + HWND top; UINT swp_flags; SDL_resizing = 1; @@ -671,14 +672,19 @@ y -= GetSystemMetrics(SM_CYCAPTION)/2; } #ifndef _WIN32_WCE - swp_flags = (SWP_NOCOPYBITS | SWP_NOZORDER | SWP_SHOWWINDOW); + swp_flags = (SWP_NOCOPYBITS | SWP_FRAMECHANGED | SWP_SHOWWINDOW); #else - swp_flags = (SWP_NOZORDER | SWP_SHOWWINDOW); + swp_flags = (SWP_FRAMECHANGED | SWP_SHOWWINDOW); #endif if ( was_visible && !(flags & SDL_FULLSCREEN) ) { swp_flags |= SWP_NOMOVE; } - SetWindowPos(SDL_Window, NULL, x, y, width, height, swp_flags); + if ( flags & SDL_FULLSCREEN ) { + top = HWND_TOPMOST; + } else { + top = HWND_NOTOPMOST; + } + SetWindowPos(SDL_Window, top, x, y, width, height, swp_flags); SDL_resizing = 0; SetForegroundWindow(SDL_Window); }
--- a/src/video/windx5/SDL_dx5video.c Mon Aug 19 02:34:22 2002 +0000 +++ b/src/video/windx5/SDL_dx5video.c Mon Aug 19 03:09:25 2002 +0000 @@ -1080,7 +1080,7 @@ style = GetWindowLong(SDL_Window, GWL_STYLE); style &= ~(resizestyle|WS_MAXIMIZE); - if ( (video->flags & SDL_FULLSCREEN) == SDL_FULLSCREEN ) { + if ( video->flags & SDL_FULLSCREEN ) { style &= ~windowstyle; style |= directstyle; } else { @@ -1102,6 +1102,7 @@ /* Resize the window (copied from SDL WinDIB driver) */ if ( SDL_windowid == NULL ) { + HWND top; UINT swp_flags; SDL_resizing = 1; @@ -1117,11 +1118,16 @@ if ( y < 0 ) { /* Cover up title bar for more client area */ y -= GetSystemMetrics(SM_CYCAPTION)/2; } - swp_flags = (SWP_NOCOPYBITS | SWP_NOZORDER | SWP_SHOWWINDOW); - if ( was_visible && !(flags & SDL_FULLSCREEN) ) { + swp_flags = (SWP_NOCOPYBITS | SWP_FRAMECHANGED | SWP_SHOWWINDOW); + if ( was_visible && (video->flags & SDL_FULLSCREEN) ) { swp_flags |= SWP_NOMOVE; } - SetWindowPos(SDL_Window, NULL, x, y, width, height, swp_flags); + if ( video->flags & SDL_FULLSCREEN ) { + top = HWND_TOPMOST; + } else { + top = HWND_NOTOPMOST; + } + SetWindowPos(SDL_Window, top, x, y, width, height, swp_flags); SDL_resizing = 0; SetForegroundWindow(SDL_Window); }