Cygwin/X: Correctly allow for the native window frame width in ValidateSizing()
Fix internal WM to correctly calculate the native window border when validating window sizing Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
This commit is contained in:
parent
a72865868f
commit
888e6961a4
|
@ -207,6 +207,8 @@ ValidateSizing (HWND hwnd, WindowPtr pWin,
|
|||
WinXSizeHints sizeHints;
|
||||
RECT *rect;
|
||||
int iWidth, iHeight;
|
||||
RECT rcClient, rcWindow;
|
||||
int iBorderWidthX, iBorderWidthY;
|
||||
|
||||
/* Invalid input checking */
|
||||
if (pWin==NULL || lParam==0)
|
||||
|
@ -228,19 +230,20 @@ ValidateSizing (HWND hwnd, WindowPtr pWin,
|
|||
iWidth = rect->right - rect->left;
|
||||
iHeight = rect->bottom - rect->top;
|
||||
|
||||
/* Now remove size of any borders */
|
||||
iWidth -= 2 * GetSystemMetrics(SM_CXSIZEFRAME);
|
||||
iHeight -= (GetSystemMetrics(SM_CYCAPTION)
|
||||
+ 2 * GetSystemMetrics(SM_CYSIZEFRAME));
|
||||
|
||||
/* Now remove size of any borders and title bar */
|
||||
GetClientRect(hwnd, &rcClient);
|
||||
GetWindowRect(hwnd, &rcWindow);
|
||||
iBorderWidthX = (rcWindow.right - rcWindow.left) - (rcClient.right - rcClient.left);
|
||||
iBorderWidthY = (rcWindow.bottom - rcWindow.top) - (rcClient.bottom - rcClient.top);
|
||||
iWidth -= iBorderWidthX;
|
||||
iHeight -= iBorderWidthY;
|
||||
|
||||
/* Constrain the size to legal values */
|
||||
ConstrainSize (sizeHints, &iWidth, &iHeight);
|
||||
|
||||
/* Add back the borders */
|
||||
iWidth += 2 * GetSystemMetrics(SM_CXSIZEFRAME);
|
||||
iHeight += (GetSystemMetrics(SM_CYCAPTION)
|
||||
+ 2 * GetSystemMetrics(SM_CYSIZEFRAME));
|
||||
/* Add back the size of borders and title bar */
|
||||
iWidth += iBorderWidthX;
|
||||
iHeight += iBorderWidthY;
|
||||
|
||||
/* Adjust size according to where we're dragging from */
|
||||
switch(wParam) {
|
||||
|
|
Loading…
Reference in New Issue
Block a user