Alexandre Julliard : user32: Included padded border into the border width in NONCLIENTMETRICS.

Alexandre Julliard julliard at winehq.org
Fri Apr 13 15:54:51 CDT 2018


Module: wine
Branch: master
Commit: d4d12801bc15b1ec0bdf13d935f7040256f1c303
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=d4d12801bc15b1ec0bdf13d935f7040256f1c303

Author: Alexandre Julliard <julliard at 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 at 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);




More information about the wine-cvs mailing list