1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-07-12 23:55:13 +00:00

Merge pull request #358 from a740g/main

Fix incorrect client RECT offset when compiled with LLVM-MingW
This commit is contained in:
Samuel Gomes 2023-08-02 07:46:18 +05:30 committed by GitHub
commit 5b987d52a8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -989,31 +989,24 @@ void fgSetWindow ( SFG_Window *window )
*/ */
void fghComputeWindowRectFromClientArea_UseStyle( const DWORD windowStyle, RECT *clientRect, BOOL posIsOutside ) void fghComputeWindowRectFromClientArea_UseStyle( const DWORD windowStyle, RECT *clientRect, BOOL posIsOutside )
{ {
int xBorderWidth = 0, yBorderWidth = 0; RECT windowRect = {0, 0, 0, 0};
DWORD windowExStyle = 0;
CopyRect(&windowRect, clientRect);
/* If window has title bar, correct rect for it */ /* Get rect including non-client area */
if (windowStyle & WS_SYSMENU) /* Need to query for WS_SYSMENU to see if we have a title bar, the WS_CAPTION query is also true for a WS_DLGFRAME only... */ AdjustWindowRectEx(&windowRect, windowStyle, FALSE, windowExStyle);
if (posIsOutside)
clientRect->bottom += GetSystemMetrics( SM_CYCAPTION );
else
clientRect->top -= GetSystemMetrics( SM_CYCAPTION );
/* get width of window's borders (frame), correct rect for it. /* Move window right and down by non-client area extent on left and top, if wanted */
* Note, borders can be of zero width if style does not specify borders if (posIsOutside) {
*/ windowRect.right += clientRect->left - windowRect.left;
fghGetBorderWidth(windowStyle, &xBorderWidth, &yBorderWidth); windowRect.bottom += clientRect->top - windowRect.top;
if (posIsOutside) windowRect.left = clientRect->left;
{ windowRect.top = clientRect->top;
clientRect->right += xBorderWidth * 2;
clientRect->bottom += yBorderWidth * 2;
}
else
{
clientRect->left -= xBorderWidth;
clientRect->right += xBorderWidth;
clientRect->top -= yBorderWidth;
clientRect->bottom += yBorderWidth;
} }
/* done, copy windowRect to output */
CopyRect(clientRect, &windowRect);
} }
/* Computes position of corners of window Rect (outer position including /* Computes position of corners of window Rect (outer position including