Alexandre Julliard : user32: Forward more system metrics to SystemParametersInfoW.

Alexandre Julliard julliard at winehq.org
Thu Mar 29 19:13:29 CDT 2018


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Mar 29 17:23:37 2018 +0200

user32: Forward more system metrics to SystemParametersInfoW.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/user32/sysparams.c | 85 +++++++++++++++++++++++++++++++------------------
 1 file changed, 54 insertions(+), 31 deletions(-)

diff --git a/dlls/user32/sysparams.c b/dlls/user32/sysparams.c
index 9467163..34e0a37 100644
--- a/dlls/user32/sysparams.c
+++ b/dlls/user32/sysparams.c
@@ -2381,6 +2381,8 @@ BOOL WINAPI SystemParametersInfoA( UINT uiAction, UINT uiParam,
 INT WINAPI GetSystemMetrics( INT index )
 {
     NONCLIENTMETRICSW ncm;
+    MINIMIZEDMETRICS mm;
+    ICONMETRICSW im;
     UINT ret;
     HDC hdc;
 
@@ -2399,10 +2401,13 @@ INT WINAPI GetSystemMetrics( INT index )
         return ret;
     case SM_CXVSCROLL:
     case SM_CYHSCROLL:
-        get_entry( &entry_SCROLLWIDTH, 0, &ret );
-        return max( 8, ret );
+        ncm.cbSize = sizeof(ncm);
+        SystemParametersInfoW( SPI_GETNONCLIENTMETRICS, 0, &ncm, 0 );
+        return ncm.iScrollWidth;
     case SM_CYCAPTION:
-        return GetSystemMetrics( SM_CYSIZE ) + 1;
+        ncm.cbSize = sizeof(ncm);
+        SystemParametersInfoW( SPI_GETNONCLIENTMETRICS, 0, &ncm, 0 );
+        return ncm.iCaptionHeight + 1;
     case SM_CXBORDER:
     case SM_CYBORDER:
         /* SM_C{X,Y}BORDER always returns 1 regardless of 'BorderWidth' value in registry */
@@ -2414,8 +2419,9 @@ INT WINAPI GetSystemMetrics( INT index )
     case SM_CXHTHUMB:
     case SM_CYVSCROLL:
     case SM_CXHSCROLL:
-        get_entry( &entry_SCROLLHEIGHT, 0, &ret );
-        return max( 8, ret );
+        ncm.cbSize = sizeof(ncm);
+        SystemParametersInfoW( SPI_GETNONCLIENTMETRICS, 0, &ncm, 0 );
+        return ncm.iScrollHeight;
     case SM_CXICON:
     case SM_CYICON:
         return MulDiv( 32, GetDpiForSystem(), USER_DEFAULT_SCREEN_DPI );
@@ -2426,7 +2432,9 @@ INT WINAPI GetSystemMetrics( INT index )
         if (ret >= 48) return 48;
         return 32;
     case SM_CYMENU:
-        return GetSystemMetrics(SM_CYMENUSIZE) + 1;
+        ncm.cbSize = sizeof(ncm);
+        SystemParametersInfoW( SPI_GETNONCLIENTMETRICS, 0, &ncm, 0 );
+        return ncm.iMenuHeight + 1;
     case SM_CXFULLSCREEN:
         /* see the remark for SM_CXMAXIMIZED, at least this formulation is
          * correct */
@@ -2459,18 +2467,21 @@ INT WINAPI GetSystemMetrics( INT index )
     case SM_CYMIN:
         return GetSystemMetrics( SM_CYCAPTION) + 2 * GetSystemMetrics( SM_CYFRAME);
     case SM_CXSIZE:
-        get_entry( &entry_CAPTIONWIDTH, 0, &ret );
-        return max( 8, ret );
+        ncm.cbSize = sizeof(ncm);
+        SystemParametersInfoW( SPI_GETNONCLIENTMETRICS, 0, &ncm, 0 );
+        return ncm.iCaptionWidth;
     case SM_CYSIZE:
         ncm.cbSize = sizeof(ncm);
         SystemParametersInfoW( SPI_GETNONCLIENTMETRICS, 0, &ncm, 0 );
         return ncm.iCaptionHeight;
     case SM_CXFRAME:
-        get_entry( &entry_BORDER, 0, &ret );
-        return GetSystemMetrics(SM_CXDLGFRAME) + max( 1, ret );
+        ncm.cbSize = sizeof(ncm);
+        SystemParametersInfoW( SPI_GETNONCLIENTMETRICS, 0, &ncm, 0 );
+        return GetSystemMetrics(SM_CXDLGFRAME) + ncm.iBorderWidth;
     case SM_CYFRAME:
-        get_entry( &entry_BORDER, 0, &ret );
-        return GetSystemMetrics(SM_CYDLGFRAME) + max( 1, ret );
+        ncm.cbSize = sizeof(ncm);
+        SystemParametersInfoW( SPI_GETNONCLIENTMETRICS, 0, &ncm, 0 );
+        return GetSystemMetrics(SM_CYDLGFRAME) + ncm.iBorderWidth;
     case SM_CXMINTRACK:
         return GetSystemMetrics(SM_CXMIN);
     case SM_CYMINTRACK:
@@ -2482,13 +2493,15 @@ INT WINAPI GetSystemMetrics( INT index )
         get_entry( &entry_DOUBLECLKHEIGHT, 0, &ret );
         return ret;
     case SM_CXICONSPACING:
-        get_entry( &entry_ICONHORIZONTALSPACING, 0, &ret );
-        return ret;
+        im.cbSize = sizeof(im);
+        SystemParametersInfoW( SPI_GETICONMETRICS, sizeof(im), &im, 0 );
+        return im.iHorzSpacing;
     case SM_CYICONSPACING:
-        get_entry( &entry_ICONVERTICALSPACING, 0, &ret );
-        return ret;
+        im.cbSize = sizeof(im);
+        SystemParametersInfoW( SPI_GETICONMETRICS, sizeof(im), &im, 0 );
+        return im.iVertSpacing;
     case SM_MENUDROPALIGNMENT:
-        get_entry( &entry_MENUDROPALIGNMENT, 0, &ret );
+        SystemParametersInfoW( SPI_GETMENUDROPALIGNMENT, 0, &ret, 0 );
         return ret;
     case SM_PENWINDOWS:
         return 0;
@@ -2507,38 +2520,48 @@ INT WINAPI GetSystemMetrics( INT index )
     case SM_CYEDGE:
         return GetSystemMetrics(SM_CYBORDER) + 1;
     case SM_CXMINSPACING:
-        get_entry( &entry_MINHORZGAP, 0, &ret );
-        return GetSystemMetrics(SM_CXMINIMIZED) + max( 0, (INT)ret );
+        mm.cbSize = sizeof(mm);
+        SystemParametersInfoW( SPI_GETMINIMIZEDMETRICS, sizeof(mm), &mm, 0 );
+        return GetSystemMetrics(SM_CXMINIMIZED) + mm.iHorzGap;
     case SM_CYMINSPACING:
-        get_entry( &entry_MINVERTGAP, 0, &ret );
-        return GetSystemMetrics(SM_CYMINIMIZED) + max( 0, (INT)ret );
+        mm.cbSize = sizeof(mm);
+        SystemParametersInfoW( SPI_GETMINIMIZEDMETRICS, sizeof(mm), &mm, 0 );
+        return GetSystemMetrics(SM_CYMINIMIZED) + mm.iVertGap;
     case SM_CXSMICON:
     case SM_CYSMICON:
         return MulDiv( 16, GetDpiForSystem(), USER_DEFAULT_SCREEN_DPI ) & ~1;
     case SM_CYSMCAPTION:
-        return GetSystemMetrics(SM_CYSMSIZE) + 1;
+        ncm.cbSize = sizeof(ncm);
+        SystemParametersInfoW( SPI_GETNONCLIENTMETRICS, 0, &ncm, 0 );
+        return ncm.iSmCaptionHeight + 1;
     case SM_CXSMSIZE:
-        get_entry( &entry_SMCAPTIONWIDTH, 0, &ret );
-        return ret;
+        ncm.cbSize = sizeof(ncm);
+        SystemParametersInfoW( SPI_GETNONCLIENTMETRICS, 0, &ncm, 0 );
+        return ncm.iSmCaptionWidth;
     case SM_CYSMSIZE:
         ncm.cbSize = sizeof(ncm);
         SystemParametersInfoW( SPI_GETNONCLIENTMETRICS, 0, &ncm, 0 );
         return ncm.iSmCaptionHeight;
     case SM_CXMENUSIZE:
-        get_entry( &entry_MENUWIDTH, 0, &ret );
-        return ret;
+        ncm.cbSize = sizeof(ncm);
+        SystemParametersInfoW( SPI_GETNONCLIENTMETRICS, 0, &ncm, 0 );
+        return ncm.iMenuWidth;
     case SM_CYMENUSIZE:
         ncm.cbSize = sizeof(ncm);
         SystemParametersInfoW( SPI_GETNONCLIENTMETRICS, 0, &ncm, 0 );
         return ncm.iMenuHeight;
     case SM_ARRANGE:
-        get_entry( &entry_MINARRANGE, 0, &ret );
-        return ret & 0x0f;
+        mm.cbSize = sizeof(mm);
+        SystemParametersInfoW( SPI_GETMINIMIZEDMETRICS, sizeof(mm), &mm, 0 );
+        return mm.iArrange;
     case SM_CXMINIMIZED:
-        get_entry( &entry_MINWIDTH, 0, &ret );
-        return max( 0, (INT)ret ) + 6;
+        mm.cbSize = sizeof(mm);
+        SystemParametersInfoW( SPI_GETMINIMIZEDMETRICS, sizeof(mm), &mm, 0 );
+        return mm.iWidth + 6;
     case SM_CYMINIMIZED:
-        return GetSystemMetrics( SM_CYSIZE ) + 6;
+        ncm.cbSize = sizeof(ncm);
+        SystemParametersInfoW( SPI_GETNONCLIENTMETRICS, 0, &ncm, 0 );
+        return ncm.iCaptionHeight + 6;
     case SM_CXMAXTRACK:
         return GetSystemMetrics(SM_CXVIRTUALSCREEN) + 4 + 2 * GetSystemMetrics(SM_CXFRAME);
     case SM_CYMAXTRACK:




More information about the wine-cvs mailing list