https://git.reactos.org/?p=reactos.git;a=commitdiff;h=3b3741c10af77bd54184e…
commit 3b3741c10af77bd54184e9d271206ac017e73b34
Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com>
AuthorDate: Wed Jan 29 20:20:25 2025 +0900
Commit: GitHub <noreply(a)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 (chorns(a)users.sourceforge.net)
* Timo Kreuzer (timo.kreuzer(a)reactos.org)
+ * Katayama Hirofumi MZ (katayama.hirofumi.mz(a)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.kreuzer(a)reactos.org)
+ * Katayama Hirofumi MZ (katayama.hirofumi.mz(a)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