Module: wine Branch: master Commit: d4d12801bc15b1ec0bdf13d935f7040256f1c303 URL: https://source.winehq.org/git/wine.git/?a=commit;h=d4d12801bc15b1ec0bdf13d93...
Author: Alexandre Julliard julliard@winehq.org Date: Fri Apr 13 14:15:40 2018 +0200
user32: Included padded border into the border width in NONCLIENTMETRICS.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/user32/sysparams.c | 14 ++++++++------ dlls/user32/tests/sysparams.c | 2 ++ 2 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/dlls/user32/sysparams.c b/dlls/user32/sysparams.c index 7b948eb..3ee0781 100644 --- a/dlls/user32/sysparams.c +++ b/dlls/user32/sysparams.c @@ -1616,10 +1616,12 @@ BOOL WINAPI SystemParametersInfoW( UINT uiAction, UINT uiParam, case SPI_GETNONCLIENTMETRICS: { LPNONCLIENTMETRICSW lpnm = pvParam; + int padded_border;
if (!pvParam) return FALSE;
ret = get_entry( &entry_BORDER, 0, &lpnm->iBorderWidth ) && + get_entry( &entry_PADDEDBORDERWIDTH, 0, &padded_border ) && get_entry( &entry_SCROLLWIDTH, 0, &lpnm->iScrollWidth ) && get_entry( &entry_SCROLLHEIGHT, 0, &lpnm->iScrollHeight ) && get_entry( &entry_CAPTIONWIDTH, 0, &lpnm->iCaptionWidth ) && @@ -1633,19 +1635,22 @@ BOOL WINAPI SystemParametersInfoW( UINT uiAction, UINT uiParam, get_entry( &entry_MENULOGFONT, 0, &lpnm->lfMenuFont ) && get_entry( &entry_STATUSLOGFONT, 0, &lpnm->lfStatusFont ) && get_entry( &entry_MESSAGELOGFONT, 0, &lpnm->lfMessageFont ); - if (ret && lpnm->cbSize == sizeof(NONCLIENTMETRICSW)) - ret = get_entry( &entry_PADDEDBORDERWIDTH, 0, &lpnm->iPaddedBorderWidth ); + lpnm->iBorderWidth += padded_border; + if (ret && lpnm->cbSize == sizeof(NONCLIENTMETRICSW)) lpnm->iPaddedBorderWidth = 0; normalize_nonclientmetrics( lpnm ); break; } case SPI_SETNONCLIENTMETRICS: { LPNONCLIENTMETRICSW lpnm = pvParam; + int padded_border;
if (lpnm && (lpnm->cbSize == sizeof(NONCLIENTMETRICSW) || lpnm->cbSize == FIELD_OFFSET(NONCLIENTMETRICSW, iPaddedBorderWidth))) { - ret = set_entry( &entry_BORDER, lpnm->iBorderWidth, NULL, fWinIni ) && + get_entry( &entry_PADDEDBORDERWIDTH, 0, &padded_border ); + + ret = set_entry( &entry_BORDER, lpnm->iBorderWidth - padded_border, NULL, fWinIni ) && set_entry( &entry_SCROLLWIDTH, lpnm->iScrollWidth, NULL, fWinIni ) && set_entry( &entry_SCROLLHEIGHT, lpnm->iScrollHeight, NULL, fWinIni ) && set_entry( &entry_CAPTIONWIDTH, lpnm->iCaptionWidth, NULL, fWinIni ) && @@ -1659,9 +1664,6 @@ BOOL WINAPI SystemParametersInfoW( UINT uiAction, UINT uiParam, set_entry( &entry_SMCAPTIONLOGFONT, 0, &lpnm->lfSmCaptionFont, fWinIni ) && set_entry( &entry_STATUSLOGFONT, 0, &lpnm->lfStatusFont, fWinIni ) && set_entry( &entry_MESSAGELOGFONT, 0, &lpnm->lfMessageFont, fWinIni ); - - if (ret && lpnm->cbSize == sizeof(NONCLIENTMETRICSW)) - set_entry( &entry_PADDEDBORDERWIDTH, lpnm->iPaddedBorderWidth, NULL, fWinIni ); } break; } diff --git a/dlls/user32/tests/sysparams.c b/dlls/user32/tests/sysparams.c index 3fa6fe2..95273f2 100644 --- a/dlls/user32/tests/sysparams.c +++ b/dlls/user32/tests/sysparams.c @@ -2710,8 +2710,10 @@ static void test_GetSystemMetrics( void)
ncm.cbSize = sizeof(ncm); /* Vista added padding */ SetLastError(0xdeadbeef); + ncm.iPaddedBorderWidth = 0xcccc; rc = SystemParametersInfoA(SPI_GETNONCLIENTMETRICS, 0, &ncm, 0); ok(rc || broken(!rc) /* before Vista */, "SystemParametersInfoA failed\n"); + if (rc) ok( ncm.iPaddedBorderWidth == 0, "wrong iPaddedBorderWidth %u\n", ncm.iPaddedBorderWidth );
minim.cbSize = sizeof( minim); ncm.cbSize = FIELD_OFFSET(NONCLIENTMETRICSA, iPaddedBorderWidth);