mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-06-01 06:44:27 +08:00
Fix window caption drawing on borderless windows (#15275)
This commit is contained in:
@@ -61,6 +61,14 @@
|
|||||||
|
|
||||||
// #define HIGHDPI_DEBUG
|
// #define HIGHDPI_DEBUG
|
||||||
|
|
||||||
|
// Undocumented window messages
|
||||||
|
#ifndef WM_NCUAHDRAWCAPTION
|
||||||
|
#define WM_NCUAHDRAWCAPTION 0xAE
|
||||||
|
#endif
|
||||||
|
#ifndef WM_NCUAHDRAWFRAME
|
||||||
|
#define WM_NCUAHDRAWFRAME 0xAF
|
||||||
|
#endif
|
||||||
|
|
||||||
// Make sure XBUTTON stuff is defined that isn't in older Platform SDKs...
|
// Make sure XBUTTON stuff is defined that isn't in older Platform SDKs...
|
||||||
#ifndef WM_XBUTTONDOWN
|
#ifndef WM_XBUTTONDOWN
|
||||||
#define WM_XBUTTONDOWN 0x020B
|
#define WM_XBUTTONDOWN 0x020B
|
||||||
@@ -1214,6 +1222,24 @@ LRESULT CALLBACK WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPara
|
|||||||
actually being the foreground window, but this appears to get called in all cases where
|
actually being the foreground window, but this appears to get called in all cases where
|
||||||
the global foreground window changes to and from this window. */
|
the global foreground window changes to and from this window. */
|
||||||
WIN_UpdateFocus(data->window, !!wParam, GetMessagePos());
|
WIN_UpdateFocus(data->window, !!wParam, GetMessagePos());
|
||||||
|
|
||||||
|
/* Handle borderless windows; this event is intended for drawing the titlebar, so we need
|
||||||
|
to stop that from happening. */
|
||||||
|
if (data->window->flags & SDL_WINDOW_BORDERLESS) {
|
||||||
|
lParam = -1; // According to MSDN, DefWindowProc will draw a title bar if lParam != -1
|
||||||
|
}
|
||||||
|
} break;
|
||||||
|
|
||||||
|
case WM_NCUAHDRAWCAPTION:
|
||||||
|
case WM_NCUAHDRAWFRAME:
|
||||||
|
{
|
||||||
|
/* These messages are undocumented. They are responsible for redrawing the window frame and
|
||||||
|
caption. Notably, WM_NCUAHDRAWCAPTION is sent when calling SetWindowText on a window.
|
||||||
|
For borderless windows, we don't want to draw a frame or caption, so we should stop
|
||||||
|
that from happening. */
|
||||||
|
if (data->window->flags & SDL_WINDOW_BORDERLESS) {
|
||||||
|
returnCode = 0;
|
||||||
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case WM_ACTIVATE:
|
case WM_ACTIVATE:
|
||||||
|
|||||||
Reference in New Issue
Block a user