Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions src/video/windows/SDL_windowsevents.c
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,14 @@
#define VK_OEM_NEC_EQUAL 0x92
#endif

// 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... */
#ifndef WM_XBUTTONDOWN
#define WM_XBUTTONDOWN 0x020B
Expand Down Expand Up @@ -805,6 +813,24 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
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. */
WIN_UpdateFocus(data->window, !!wParam);

/* 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;

case WM_ACTIVATE:
Expand Down
Loading