# HG changeset patch # User Sam Lantinga # Date 1029726565 0 # Node ID 323c766f5a467c88c055014e45be6bf95733a36a # Parent 16d0449891b86c73b73d16a858f534f417d39ff2 Fullscreen windows are always topmost under Windows diff -r 16d0449891b8 -r 323c766f5a46 src/video/windib/SDL_dibvideo.c --- 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); } diff -r 16d0449891b8 -r 323c766f5a46 src/video/windx5/SDL_dx5video.c --- 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); }