Alexandre Julliard : user32: Use the default GUI font for unspecified font parameters.

Alexandre Julliard julliard at winehq.org
Thu Nov 15 15:26:31 CST 2012


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Nov 15 13:28:22 2012 +0100

user32: Use the default GUI font for unspecified font parameters.

---

 dlls/user32/sysparams.c |   52 ++++++++++-------------------------------------
 1 files changed, 11 insertions(+), 41 deletions(-)

diff --git a/dlls/user32/sysparams.c b/dlls/user32/sysparams.c
index fa97815..8519142 100644
--- a/dlls/user32/sysparams.c
+++ b/dlls/user32/sysparams.c
@@ -361,6 +361,7 @@ struct sysparam_binary_entry
 struct sysparam_font_entry
 {
     struct sysparam_entry hdr;
+    UINT                  weight;
     LOGFONTW              val;
 };
 
@@ -1193,7 +1194,12 @@ static BOOL get_font_entry( union sysparam_all_entry *entry, UINT int_param, voi
     {
         LOGFONTW font;
 
-        if (!reg_get_logfont( entry->hdr.regkey, entry->hdr.regval, &font )) return FALSE;
+        if (!reg_get_logfont( entry->hdr.regkey, entry->hdr.regval, &font ))
+        {
+            /* use the default GUI font */
+            GetObjectW( GetStockObject( DEFAULT_GUI_FONT ), sizeof(font), &font );
+            font.lfWeight = entry->font.weight;
+        }
         entry->font.val = font;
         entry->hdr.loaded = TRUE;
     }
@@ -1331,9 +1337,9 @@ static BOOL set_entry( void *ptr,  UINT int_param, void *ptr_param, UINT flags )
     struct sysparam_binary_entry entry_##name = { { get_binary_entry, set_binary_entry, \
                          SPI_SET ## name ##_REGKEY, SPI_SET ## name ##_VALNAME }, &(data), sizeof(data) }
 
-#define FONT_ENTRY(name) \
+#define FONT_ENTRY(name,weight) \
     struct sysparam_font_entry entry_##name = { { get_font_entry, set_font_entry, \
-                         SPI_SET ## name ##_REGKEY, SPI_SET ## name ##_VALNAME } }
+                         SPI_SET ## name ##_REGKEY, SPI_SET ## name ##_VALNAME }, (weight) }
 
 #define USERPREF_ENTRY(name,offset,mask) \
     struct sysparam_pref_entry entry_##name = { { get_userpref_entry, set_userpref_entry }, \
@@ -1400,7 +1406,7 @@ static DWORD_ENTRY( MOUSECLICKLOCKTIME, 1200 );
 static BYTE user_prefs[8] = { 0x30, 0x00, 0x02, 0x80, 0x10, 0x00, 0x00, 0x00 };
 static BINARY_ENTRY( USERPREFERENCESMASK, user_prefs );
 
-static FONT_ENTRY( ICONTITLELOGFONT );
+static FONT_ENTRY( ICONTITLELOGFONT, FW_NORMAL );
 
 static USERPREF_ENTRY( MENUANIMATION,            0, 0x02 );
 static USERPREF_ENTRY( COMBOBOXANIMATION,        0, 0x04 );
@@ -1599,43 +1605,7 @@ BOOL WINAPI SystemParametersInfoW( UINT uiAction, UINT uiParam,
         ret = set_entry( &entry_DOUBLECLKHEIGHT, uiParam, pvParam, fWinIni );
         break;
     case SPI_GETICONTITLELOGFONT:
-        if (!pvParam) return FALSE;
-        if (!get_entry( &entry_ICONTITLELOGFONT, uiParam, pvParam ))
-        {
-            LOGFONTW lfDefault, *font = &entry_ICONTITLELOGFONT.val;
-            INT r;
-
-            /*
-             * The 'default GDI fonts' seems to be returned.
-             * If a returned font is not a correct font in your environment,
-             * please try to fix objects/gdiobj.c at first.
-             */
-            GetObjectW( GetStockObject( DEFAULT_GUI_FONT ), sizeof(LOGFONTW), &lfDefault );
-
-            GetProfileStringW( Desktop, IconTitleFaceName, lfDefault.lfFaceName,
-                               font->lfFaceName, LF_FACESIZE );
-
-            r = GetProfileIntW( Desktop, IconTitleSize, 0 );
-            if (r)
-                font->lfHeight = -r;
-            else
-                font->lfHeight = lfDefault.lfHeight;
-
-            font->lfWidth = 0;
-            font->lfEscapement = 0;
-            font->lfOrientation = 0;
-            font->lfWeight = FW_NORMAL;
-            font->lfItalic = FALSE;
-            font->lfStrikeOut = FALSE;
-            font->lfUnderline = FALSE;
-            font->lfCharSet = lfDefault.lfCharSet; /* at least 'charset' should not be hard-coded */
-            font->lfOutPrecision = OUT_DEFAULT_PRECIS;
-            font->lfClipPrecision = CLIP_DEFAULT_PRECIS;
-            font->lfQuality = DEFAULT_QUALITY;
-            font->lfPitchAndFamily = DEFAULT_PITCH;
-            entry_ICONTITLELOGFONT.hdr.loaded = TRUE;
-            *(LOGFONTW *)pvParam = *font;
-        }
+        ret = get_entry( &entry_ICONTITLELOGFONT, uiParam, pvParam );
         break;
     case SPI_SETDOUBLECLICKTIME:
         ret = set_entry( &entry_DOUBLECLICKTIME, uiParam, pvParam, fWinIni );




More information about the wine-cvs mailing list