From d4d12801bc15b1ec0bdf13d935f7040256f1c303 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Fri, 13 Apr 2018 14:15:40 +0200 Subject: [PATCH] user32: Included padded border into the border width in NONCLIENTMETRICS. Signed-off-by: Alexandre Julliard --- 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 7b948eba538..3ee07810256 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 3fa6fe2c71f..95273f2bb9b 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); -- 2.11.4.GIT