PATCH: choosefont small fix

Marcus Meissner marcus at jet.franken.de
Fri May 4 03:09:55 CDT 2001


Hi,

When we do not have a valid logfont structure to select fonts, the 'height' 
and 'weight' fields were empty leading to problematic results.

I now select the resp. first weight and height available as default when
changing the fontname selection box.

Ciao, Marcus

Changelog:
	debugoutput for flags, select first available height and weight
	when selecting a font.

Index: fontdlg.c
===================================================================
RCS file: /home/wine/wine/dlls/commdlg/fontdlg.c,v
retrieving revision 1.29
diff -u -r1.29 fontdlg.c
--- fontdlg.c	2001/01/22 02:13:58	1.29
+++ fontdlg.c	2001/05/04 09:07:58
@@ -72,6 +72,50 @@
   FONT_LogFont16To32A(MapSL(chf16->lpLogFont), chf32a->lpLogFont);
 }
 
+struct {
+    int		mask;
+    char	*name;
+} cfflags[] = {
+#define XX(x) { x, #x },
+    XX(CF_SCREENFONTS)
+    XX(CF_PRINTERFONTS)
+    XX(CF_SHOWHELP)
+    XX(CF_ENABLEHOOK)
+    XX(CF_ENABLETEMPLATE)
+    XX(CF_ENABLETEMPLATEHANDLE)
+    XX(CF_INITTOLOGFONTSTRUCT)
+    XX(CF_USESTYLE)
+    XX(CF_EFFECTS)
+    XX(CF_APPLY)
+    XX(CF_ANSIONLY)
+    XX(CF_NOVECTORFONTS)
+    XX(CF_NOSIMULATIONS)
+    XX(CF_LIMITSIZE)
+    XX(CF_FIXEDPITCHONLY)
+    XX(CF_WYSIWYG)
+    XX(CF_FORCEFONTEXIST)
+    XX(CF_SCALABLEONLY)
+    XX(CF_TTONLY)
+    XX(CF_NOFACESEL)
+    XX(CF_NOSTYLESEL)
+    XX(CF_NOSIZESEL)
+    XX(CF_SELECTSCRIPT)
+    XX(CF_NOSCRIPTSEL)
+    XX(CF_NOVERTFONTS)
+#undef XX
+    {0,NULL},
+};
+
+static void
+_dump_cf_flags(DWORD cflags) {
+    int i;
+
+    for (i=0;cfflags[i].name;i++)
+	if (cfflags[i].mask & cflags)
+	    MESSAGE("%s|",cfflags[i].name);
+    MESSAGE("\n");
+}
+
 
 /***********************************************************************
  *                        ChooseFont16   (COMMDLG.15)     
@@ -95,6 +139,9 @@
     TRACE("ChooseFont\n");
     if (!lpChFont) return FALSE;    
 
+    if (TRACE_ON(commdlg))
+	_dump_cf_flags(lpChFont->Flags);
+
     if (lpChFont->Flags & CF_ENABLETEMPLATEHANDLE)
     {
         if (!(template = LockResource16( lpChFont->hInstance )))
@@ -212,6 +259,8 @@
     COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
     return FALSE;
   }
+  if (TRACE_ON(commdlg))
+	_dump_cf_flags(lpChFont->Flags);
 
   if (lpChFont->Flags & (CF_SELECTSCRIPT | CF_NOVERTFONTS | CF_ENABLETEMPLATE |
     CF_ENABLETEMPLATEHANDLE)) FIXME(": unimplemented flag (ignored)\n");
@@ -230,6 +279,9 @@
   LPCVOID template;
   HANDLE hResInfo, hDlgTmpl;
 
+  if (TRACE_ON(commdlg))
+	_dump_cf_flags(lpChFont->Flags);
+
   if (!(hResInfo = FindResourceA(COMMDLG_hInstance32, "CHOOSE_FONT", RT_DIALOGA)))
   {
     COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE);
@@ -802,6 +854,8 @@
 			s.hWnd2=GetDlgItem(hDlg, cmb3);
 			s.lpcf32a=lpcf;
        		        EnumFontFamiliesA(hdc, str, FontStyleEnumProc, (LPARAM)&s);
+			SendDlgItemMessageA(hDlg,cmb2, CB_SETCURSEL, 0, 0);
+			SendDlgItemMessageA(hDlg,cmb3, CB_SETCURSEL, 0, 0);
 		        SetCursor(hcursor);
 		      }
 		      if (!(lpcf->Flags & CF_PRINTERFONTS && lpcf->hDC))




More information about the wine-patches mailing list