https://git.reactos.org/?p=reactos.git;a=commitdiff;h=3b3741c10af77bd54184e9d271206ac017e73b34

commit 3b3741c10af77bd54184e9d271206ac017e73b34
Author:     Katayama Hirofumi MZ <katayama.hirofumi...@gmail.com>
AuthorDate: Wed Jan 29 20:20:25 2025 +0900
Commit:     GitHub <nore...@github.com>
CommitDate: Wed Jan 29 20:20:25 2025 +0900

    [NTUSER] Enable SM_CXICON etc. settings from registry (#7679)
    
    Improve usability.
    JIRA issue: CORE-12905
    - Add nIconSize and nSmallIconSize
      values to SPIVALUES structure.
    - Load "Shell Icon Size" and "Shell
      Small Icon Size" values from registry.
    - Enable changing of SM_CXICON,
      SM_CYICON, SM_CXSMICON, and
      SM_CYSMICON settings.
---
 win32ss/user/ntuser/metric.c    |  9 +++++----
 win32ss/user/ntuser/sysparams.c | 10 ++++++++++
 win32ss/user/ntuser/sysparams.h |  3 +++
 3 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/win32ss/user/ntuser/metric.c b/win32ss/user/ntuser/metric.c
index e070bb0fa51..4ece647717f 100644
--- a/win32ss/user/ntuser/metric.c
+++ b/win32ss/user/ntuser/metric.c
@@ -5,6 +5,7 @@
  * FILE:             win32ss/user/ntuser/metric.c
  * PROGRAMER:        Casper S. Hornstrup (cho...@users.sourceforge.net)
  *                   Timo Kreuzer (timo.kreu...@reactos.org)
+ *                   Katayama Hirofumi MZ (katayama.hirofumi...@gmail.com)
  */
 
 #include <win32k.h>
@@ -130,10 +131,10 @@ InitMetrics(VOID)
     piSysMet[SM_CXHTHUMB] = gspv.ncm.iScrollHeight;     // 16;
     piSysMet[SM_CYVSCROLL] = gspv.ncm.iScrollHeight;    // 16
     piSysMet[SM_CXHSCROLL] = gspv.ncm.iScrollHeight;    // 16;
-    piSysMet[SM_CXICON] = 32;
-    piSysMet[SM_CYICON] = 32;
-    piSysMet[SM_CXSMICON] = 16;
-    piSysMet[SM_CYSMICON] = 16;
+    piSysMet[SM_CXICON] = gspv.nIconSize; // 32
+    piSysMet[SM_CYICON] = gspv.nIconSize; // 32
+    piSysMet[SM_CXSMICON] = gspv.nSmallIconSize; // 16
+    piSysMet[SM_CYSMICON] = gspv.nSmallIconSize; // 16
     piSysMet[SM_CXICONSPACING] = gspv.im.iHorzSpacing;  // 64;
     piSysMet[SM_CYICONSPACING] = gspv.im.iVertSpacing;  // 64;
     piSysMet[SM_CXCURSOR] = 32;
diff --git a/win32ss/user/ntuser/sysparams.c b/win32ss/user/ntuser/sysparams.c
index 59cc76f13f9..538d18bb341 100644
--- a/win32ss/user/ntuser/sysparams.c
+++ b/win32ss/user/ntuser/sysparams.c
@@ -4,6 +4,7 @@
  * PURPOSE:          System parameters functions
  * FILE:             win32ss/user/ntuser/sysparams.c
  * PROGRAMER:        Timo Kreuzer (timo.kreu...@reactos.org)
+ *                   Katayama Hirofumi MZ (katayama.hirofumi...@gmail.com)
  */
 
 // TODO:
@@ -205,6 +206,11 @@ SpiFixupValues(VOID)
 //                               gspv.tmMenuFont.tmExternalLeading);
     if (gspv.iDblClickTime == 0) gspv.iDblClickTime = 500;
 
+    if (gspv.nIconSize <= 0)
+        gspv.nIconSize = 32;
+    if (gspv.nSmallIconSize <= 0)
+        gspv.nSmallIconSize = 16;
+
     // FIXME: Hack!!!
     gspv.tmMenuFont.tmHeight = 11;
     gspv.tmMenuFont.tmExternalLeading = 2;
@@ -296,6 +302,10 @@ SpiUpdatePerUserSystemParameters(VOID)
     gspv.im.iTitleWrap = SpiLoadMetric(VAL_ITWRAP, 1);
     SpiLoadFont(&gspv.im.lfFont, L"IconFont", &lf1);
 
+    /* Load icon size */
+    gspv.nIconSize = SpiLoadInt(KEY_METRIC, L"Shell Icon Size", 32);
+    gspv.nSmallIconSize = SpiLoadInt(KEY_METRIC, L"Shell Small Icon Size", 16);
+
     /* Load desktop settings */
     gspv.bDragFullWindows = SpiLoadInt(KEY_DESKTOP, VAL_DRAG, 0);
     gspv.iWheelScrollLines = SpiLoadInt(KEY_DESKTOP, VAL_SCRLLLINES, 3);
diff --git a/win32ss/user/ntuser/sysparams.h b/win32ss/user/ntuser/sysparams.h
index 0b564f86099..dafb7f4b181 100644
--- a/win32ss/user/ntuser/sysparams.h
+++ b/win32ss/user/ntuser/sysparams.h
@@ -157,6 +157,9 @@ typedef struct _SPIVALUES
     DWORD dwForegroundFlashCount;
     DWORD dwCaretWidth;
 
+    INT nIconSize;
+    INT nSmallIconSize;
+
 //    SPI_LANGDRIVER
 //    SPI_SETDESKPATTERN
 //    SPI_SETPENWINDOWS

Reply via email to