- Moved the loading of font names from user32.dll to win32k.sys.

- Moved the window metrics values from hivesys.inf to hivedef.inf.
- In case of failure of getting the font values from registry, use default values.
- Removed user32.dll dependency on advapi32.dll.
- Removed the "UGLY HACK" code, because it really isn't true that ReactOS doesn't handle fonts with negative height.

svn path=/trunk/; revision=8563
This commit is contained in:
Filip Navara 2004-03-07 11:59:43 +00:00
parent fceb231b0e
commit 5c13959830
5 changed files with 110 additions and 107 deletions

View file

@ -64,4 +64,31 @@ HKCU,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WINXP",
HKCU,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WINXP","BuildNumber",0x00010001,0x00000A28
HKCU,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\WINXP","PlatformId",0x00010001,0x00000002
; GUI Setup
HKCU, "Control Panel\Desktop\WindowMetrics","CaptionFont",0x00000001,f5,ff,ff,ff,00,00,00,\
00,00,00,00,00,00,00,00,00,bc,02,00,00,00,00,00,00,00,00,00,00,42,00,69,00,74,00,73,00,74,\
00,72,00,65,00,61,00,6d,00,20,00,56,00,65,00,72,00,61,00,20,00,53,00,61,00,6e,00,73,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKCU, "Control Panel\Desktop\WindowMetrics","IconFont",0x00000001,f5,ff,ff,ff,00,00,00,00,\
00,00,00,00,00,00,00,00,90,01,00,00,00,00,00,00,00,00,00,00,42,00,69,00,74,00,73,00,74,00,\
72,00,65,00,61,00,6d,00,20,00,56,00,65,00,72,00,61,00,20,00,53,00,61,00,6e,00,73,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKCU, "Control Panel\Desktop\WindowMetrics","MenuFont",0x00000001,f5,ff,ff,ff,00,00,00,00,\
00,00,00,00,00,00,00,00,90,01,00,00,00,00,00,00,00,00,00,00,42,00,69,00,74,00,73,00,74,00,\
72,00,65,00,61,00,6d,00,20,00,56,00,65,00,72,00,61,00,20,00,53,00,61,00,6e,00,73,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKCU, "Control Panel\Desktop\WindowMetrics","MessageFont",0x00000001,f5,ff,ff,ff,00,00,00,\
00,00,00,00,00,00,00,00,00,90,01,00,00,00,00,00,00,00,00,00,00,42,00,69,00,74,00,73,00,74,\
00,72,00,65,00,61,00,6d,00,20,00,56,00,65,00,72,00,61,00,20,00,53,00,61,00,6e,00,73,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKCU, "Control Panel\Desktop\WindowMetrics","SmCaptionFont",0x00000001,f5,ff,ff,ff,00,00,\
00,00,00,00,00,00,00,00,00,00,bc,02,00,00,00,00,00,00,00,00,00,00,42,00,69,00,74,00,73,00,\
74,00,72,00,65,00,61,00,6d,00,20,00,56,00,65,00,72,00,61,00,20,00,53,00,61,00,6e,00,73,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKCU, "Control Panel\Desktop\WindowMetrics","IconFont",0x00000001,f5,ff,ff,ff,00,00,00,00,\
00,00,00,00,00,00,00,00,90,01,00,00,00,00,00,00,00,00,00,00,42,00,69,00,74,00,73,00,74,00,\
72,00,65,00,61,00,6d,00,20,00,56,00,65,00,72,00,61,00,20,00,53,00,61,00,6e,00,73,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
; EOF

View file

@ -555,34 +555,6 @@ HKLM,"SYSTEM\Setup","SetupType",0x00010001,0x00000000
HKLM,"SYSTEM\Setup","SystemPartition",0x00000000,"\Device\Harddisk0\Partition1"
HKLM,"SYSTEM\Setup","SystemSetupInProgress",0x00010001,0x00000000
; GUI Setup
HKCU, "Control Panel\Desktop\WindowMetrics","CaptionFont",0x00000001,f5,ff,ff,ff,00,00,00,\
00,00,00,00,00,00,00,00,00,bc,02,00,00,00,00,00,00,00,00,00,00,42,00,69,00,74,00,73,00,74,\
00,72,00,65,00,61,00,6d,00,20,00,56,00,65,00,72,00,61,00,20,00,53,00,61,00,6e,00,73,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKCU, "Control Panel\Desktop\WindowMetrics","IconFont",0x00000001,f5,ff,ff,ff,00,00,00,00,\
00,00,00,00,00,00,00,00,90,01,00,00,00,00,00,00,00,00,00,00,42,00,69,00,74,00,73,00,74,00,\
72,00,65,00,61,00,6d,00,20,00,56,00,65,00,72,00,61,00,20,00,53,00,61,00,6e,00,73,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKCU, "Control Panel\Desktop\WindowMetrics","MenuFont",0x00000001,f5,ff,ff,ff,00,00,00,00,\
00,00,00,00,00,00,00,00,90,01,00,00,00,00,00,00,00,00,00,00,42,00,69,00,74,00,73,00,74,00,\
72,00,65,00,61,00,6d,00,20,00,56,00,65,00,72,00,61,00,20,00,53,00,61,00,6e,00,73,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKCU, "Control Panel\Desktop\WindowMetrics","MessageFont",0x00000001,f5,ff,ff,ff,00,00,00,\
00,00,00,00,00,00,00,00,00,90,01,00,00,00,00,00,00,00,00,00,00,42,00,69,00,74,00,73,00,74,\
00,72,00,65,00,61,00,6d,00,20,00,56,00,65,00,72,00,61,00,20,00,53,00,61,00,6e,00,73,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKCU, "Control Panel\Desktop\WindowMetrics","SmCaptionFont",0x00000001,f5,ff,ff,ff,00,00,\
00,00,00,00,00,00,00,00,00,00,bc,02,00,00,00,00,00,00,00,00,00,00,42,00,69,00,74,00,73,00,\
74,00,72,00,65,00,61,00,6d,00,20,00,56,00,65,00,72,00,61,00,20,00,53,00,61,00,6e,00,73,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKCU, "Control Panel\Desktop\WindowMetrics","IconFont",0x00000001,f5,ff,ff,ff,00,00,00,00,\
00,00,00,00,00,00,00,00,90,01,00,00,00,00,00,00,00,00,00,00,42,00,69,00,74,00,73,00,74,00,\
72,00,65,00,61,00,6d,00,20,00,56,00,65,00,72,00,61,00,20,00,53,00,61,00,6e,00,73,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
; ----------------------------- KJS Init ----------------------------
HKLM,"SYSTEM\CurrentControlSet\Control\Kdb","kjsinit",0x00010000,\
"function init(v) { var rk = '\\Registry\\Machine\\System\\CurrentControlSet\\Control\\Kdb'; eval(System.regread(rk,v)); } for( i = 1; i <= 40; i++ ) { init((new Number(i)).toString()); }"

View file

@ -1,4 +1,4 @@
# $Id: Makefile,v 1.35 2004/02/16 01:30:38 rcampbell Exp $
# $Id: Makefile,v 1.36 2004/03/07 11:59:43 navaraf Exp $
PATH_TO_TOP = ../..
@ -8,7 +8,7 @@ TARGET_NAME = user32
TARGET_BASE = 0x77e70000
TARGET_SDKLIBS = libwine.a ntdll.a kernel32.a gdi32.a rosrtl.a advapi32.a
TARGET_SDKLIBS = libwine.a ntdll.a kernel32.a gdi32.a rosrtl.a
TARGET_CFLAGS = \
-I./include \

View file

@ -1,4 +1,4 @@
/* $Id: desktop.c,v 1.30 2004/02/28 03:02:08 rcampbell Exp $
/* $Id: desktop.c,v 1.31 2004/03/07 11:59:43 navaraf Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS user32.dll
@ -89,28 +89,6 @@ SystemParametersInfoA(UINT uiAction,
}
BOOL IntGetFontMetricSetting(LPCWSTR lpKey, PLOGFONTW font)
{
HKEY hKey;
DWORD dwType = REG_BINARY;
DWORD dwSize = sizeof(LOGFONTW);
BOOL bRet = FALSE;
if ( RegOpenKeyExW(HKEY_CURRENT_USER, L"Control Panel\\Desktop\\WindowMetrics", 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS )
{
if ( RegQueryValueExW(hKey, lpKey, NULL, &dwType, (LPBYTE)font, &dwSize) == ERROR_SUCCESS )
bRet = TRUE;
if (font->lfHeight < 0)
{
DbgPrint("WARNING! WARNING! WARNING! Ugly hack alert: ROS doesn't handle pixel sizes for fonts correctly. As a result we must convert to point sizes.\n");
font->lfHeight = abs(font->lfHeight);
}
}
RegCloseKey(hKey);
return bRet;
}
/*
* @implemented
*/
@ -120,59 +98,7 @@ SystemParametersInfoW(UINT uiAction,
PVOID pvParam,
UINT fWinIni)
{
static LOGFONTW IconFont;
static NONCLIENTMETRICSW pMetrics;
static BOOL bInitialized = FALSE;
if (!bInitialized)
{
ZeroMemory(&IconFont, sizeof(LOGFONTW));
ZeroMemory(&pMetrics, sizeof(NONCLIENTMETRICSW));
IntGetFontMetricSetting(L"CaptionFont", &pMetrics.lfCaptionFont);
IntGetFontMetricSetting(L"SmCaptionFont", &pMetrics.lfSmCaptionFont);
IntGetFontMetricSetting(L"MenuFont", &pMetrics.lfMenuFont);
IntGetFontMetricSetting(L"StatusFont", &pMetrics.lfStatusFont);
IntGetFontMetricSetting(L"MessageFont", &pMetrics.lfMessageFont);
IntGetFontMetricSetting(L"IconFont", &IconFont);
pMetrics.iBorderWidth = 1;
pMetrics.iScrollWidth = NtUserGetSystemMetrics(SM_CXVSCROLL);
pMetrics.iScrollHeight = NtUserGetSystemMetrics(SM_CYHSCROLL);
pMetrics.iCaptionWidth = NtUserGetSystemMetrics(SM_CXSIZE);
pMetrics.iCaptionHeight = NtUserGetSystemMetrics(SM_CYSIZE);
pMetrics.iSmCaptionWidth = NtUserGetSystemMetrics(SM_CXSMSIZE);
pMetrics.iSmCaptionHeight = NtUserGetSystemMetrics(SM_CYSMSIZE);
pMetrics.iMenuWidth = NtUserGetSystemMetrics(SM_CXMENUSIZE);
pMetrics.iMenuHeight = NtUserGetSystemMetrics(SM_CYMENUSIZE);
pMetrics.cbSize = sizeof(LPNONCLIENTMETRICSW);
bInitialized = TRUE;
}
switch(uiAction)
{
case SPI_GETICONTITLELOGFONT:
{
memcpy(pvParam, (PVOID)&IconFont, sizeof(LOGFONTW));
return TRUE;
}
case SPI_GETNONCLIENTMETRICS:
{
/* FIXME: Is this windows default behavior? */
LPNONCLIENTMETRICSW lpMetrics = (LPNONCLIENTMETRICSW)pvParam;
if ( lpMetrics->cbSize != sizeof(NONCLIENTMETRICSW) ||
uiParam != sizeof(NONCLIENTMETRICSW ))
{
return FALSE;
}
DbgPrint("FontName: %S, Size: %i\n",pMetrics.lfMessageFont.lfFaceName, pMetrics.lfMessageFont.lfHeight);
memcpy(pvParam, (PVOID)&pMetrics, sizeof(NONCLIENTMETRICSW));
return TRUE;
}
default:
return NtUserSystemParametersInfo(uiAction, uiParam, pvParam, fWinIni);
}
return NtUserSystemParametersInfo(uiAction, uiParam, pvParam, fWinIni);
}

View file

@ -1,4 +1,4 @@
/* $Id: misc.c,v 1.53 2004/02/19 21:12:09 weiden Exp $
/* $Id: misc.c,v 1.54 2004/03/07 11:59:43 navaraf Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
@ -442,6 +442,36 @@ NtUserGetThreadState(
return 0;
}
VOID FASTCALL
IntGetFontMetricSetting(LPWSTR lpValueName, PLOGFONTW font)
{
RTL_QUERY_REGISTRY_TABLE QueryTable[2];
NTSTATUS Status;
static LOGFONTW DefaultFont = {
11, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, ANSI_CHARSET,
0, 0, DEFAULT_QUALITY, VARIABLE_PITCH | FF_SWISS,
L"Bitstream Vera Sans"
};
RtlZeroMemory(&QueryTable, sizeof(QueryTable));
QueryTable[0].Name = lpValueName;
QueryTable[0].Flags = RTL_QUERY_REGISTRY_DIRECT | RTL_QUERY_REGISTRY_REQUIRED;
QueryTable[0].EntryContext = font;
Status = RtlQueryRegistryValues(
RTL_REGISTRY_USER,
L"Control Panel\\Desktop\\WindowMetrics",
QueryTable,
NULL,
NULL);
if (!NT_SUCCESS(Status))
{
RtlCopyMemory(font, &DefaultFont, sizeof(LOGFONTW));
}
}
/*
* @implemented
*/
@ -456,7 +486,37 @@ NtUserSystemParametersInfo(
static BOOL GradientCaptions = TRUE;
NTSTATUS Status;
PWINSTATION_OBJECT WinStaObject;
static BOOL bInitialized = FALSE;
static LOGFONTW IconFont;
static NONCLIENTMETRICSW pMetrics;
if (!bInitialized)
{
ZeroMemory(&IconFont, sizeof(LOGFONTW));
ZeroMemory(&pMetrics, sizeof(NONCLIENTMETRICSW));
IntGetFontMetricSetting(L"CaptionFont", &pMetrics.lfCaptionFont);
IntGetFontMetricSetting(L"SmCaptionFont", &pMetrics.lfSmCaptionFont);
IntGetFontMetricSetting(L"MenuFont", &pMetrics.lfMenuFont);
IntGetFontMetricSetting(L"StatusFont", &pMetrics.lfStatusFont);
IntGetFontMetricSetting(L"MessageFont", &pMetrics.lfMessageFont);
IntGetFontMetricSetting(L"IconFont", &IconFont);
pMetrics.iBorderWidth = 1;
pMetrics.iScrollWidth = NtUserGetSystemMetrics(SM_CXVSCROLL);
pMetrics.iScrollHeight = NtUserGetSystemMetrics(SM_CYHSCROLL);
pMetrics.iCaptionWidth = NtUserGetSystemMetrics(SM_CXSIZE);
pMetrics.iCaptionHeight = NtUserGetSystemMetrics(SM_CYSIZE);
pMetrics.iSmCaptionWidth = NtUserGetSystemMetrics(SM_CXSMSIZE);
pMetrics.iSmCaptionHeight = NtUserGetSystemMetrics(SM_CYSMSIZE);
pMetrics.iMenuWidth = NtUserGetSystemMetrics(SM_CXMENUSIZE);
pMetrics.iMenuHeight = NtUserGetSystemMetrics(SM_CYMENUSIZE);
pMetrics.cbSize = sizeof(LPNONCLIENTMETRICSW);
bInitialized = TRUE;
}
switch(uiAction)
{
case SPI_SETDOUBLECLKWIDTH:
@ -594,6 +654,24 @@ NtUserSystemParametersInfo(
}
return TRUE;
}
case SPI_GETICONTITLELOGFONT:
{
MmCopyToCaller(pvParam, (PVOID)&IconFont, sizeof(LOGFONTW));
return TRUE;
}
case SPI_GETNONCLIENTMETRICS:
{
/* FIXME: Is this windows default behavior? */
LPNONCLIENTMETRICSW lpMetrics = (LPNONCLIENTMETRICSW)pvParam;
if ( lpMetrics->cbSize != sizeof(NONCLIENTMETRICSW) ||
uiParam != sizeof(NONCLIENTMETRICSW ))
{
return FALSE;
}
DPRINT("FontName: %S, Size: %i\n",pMetrics.lfMessageFont.lfFaceName, pMetrics.lfMessageFont.lfHeight);
MmCopyToCaller(pvParam, (PVOID)&pMetrics, sizeof(NONCLIENTMETRICSW));
return TRUE;
}
}
return FALSE;
}