]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/fontutil.cpp
better focus handling (blind fix)
[wxWidgets.git] / src / msw / fontutil.cpp
index b8daf3dcdb01bce1cba14102824a8c85ae0b2134..22d308ceecc83a28559ef680f71c548b34f22fbe 100644 (file)
 
 #include "wx/tokenzr.h"
 
 
 #include "wx/tokenzr.h"
 
-// If 1, use the screen resolution to calculate font sizes.
-// This is OK for screen fonts but might have implications when the
-// same font is used for printing.
-// If 0, assume 96 DPI.
-#define wxUSE_SCREEN_DPI 1
-
 // ============================================================================
 // implementation
 // ============================================================================
 // ============================================================================
 // implementation
 // ============================================================================
@@ -129,7 +123,7 @@ bool wxGetNativeFontEncoding(wxFontEncoding encoding,
             info->charset = ANSI_CHARSET;
             break;
 
             info->charset = ANSI_CHARSET;
             break;
 
-#if !defined(__WIN16__)
+#if !defined(__WIN16__) && !defined(__WXMICROWIN__)
         case wxFONTENCODING_CP1250:
             info->charset = EASTEUROPE_CHARSET;
             break;
         case wxFONTENCODING_CP1250:
             info->charset = EASTEUROPE_CHARSET;
             break;
@@ -219,7 +213,7 @@ wxFontEncoding wxGetFontEncFromCharSet(int cs)
             fontEncoding = wxFONTENCODING_CP1252;
             break;
 
             fontEncoding = wxFONTENCODING_CP1252;
             break;
 
-#ifdef __WIN32__
+#if defined(__WIN32__) && !defined(__WXMICROWIN__)
         case EASTEUROPE_CHARSET:
             fontEncoding = wxFONTENCODING_CP1250;
             break;
         case EASTEUROPE_CHARSET:
             fontEncoding = wxFONTENCODING_CP1250;
             break;
@@ -339,24 +333,28 @@ void wxFillLogFont(LOGFONT *logFont, const wxFont *font)
             break;
     }
 
             break;
     }
 
-#if wxUSE_SCREEN_DPI
-    HDC dc = ::GetDC(NULL);
-    static const int ppInch = ::GetDeviceCaps(dc, LOGPIXELSY);
-    ::ReleaseDC(NULL, dc);
-#else
+    // VZ: I'm reverting this as we clearly must use the real screen
+    //     resolution instead of hardcoded one or it surely will fail to work
+    //     in some cases.
+    //
+    //     If there are any problems with this code, please let me know about
+    //     it instead of reverting this change, thanks!
+#if 1 // wxUSE_SCREEN_DPI
+    const int ppInch = ::GetDeviceCaps(ScreenHDC(), LOGPIXELSY);
+#else // 0
     // New behaviour: apparently ppInch varies according to Large/Small Fonts
     // setting in Windows. This messes up fonts. So, set ppInch to a constant
     // 96 dpi.
     static const int ppInch = 96;
     // New behaviour: apparently ppInch varies according to Large/Small Fonts
     // setting in Windows. This messes up fonts. So, set ppInch to a constant
     // 96 dpi.
     static const int ppInch = 96;
-#endif // 0/1
+#endif // 1/0
 
 
+    int pointSize = font->GetPointSize();
 #if wxFONT_SIZE_COMPATIBILITY
     // Incorrect, but compatible with old wxWindows behaviour
 #if wxFONT_SIZE_COMPATIBILITY
     // Incorrect, but compatible with old wxWindows behaviour
-    int nHeight = (font->GetPointSize()*ppInch/72);
+    int nHeight = (pointSize*ppInch)/72;
 #else
     // Correct for Windows compatibility
 #else
     // Correct for Windows compatibility
-//    int nHeight = - (font->GetPointSize()*ppInch/72);
-    int nHeight = - (int) ( (font->GetPointSize()*((double)ppInch)/72.0) + 0.5);
+    int nHeight = -(int)((pointSize*((double)ppInch)/72.0) + 0.5);
 #endif
 
     wxString facename = font->GetFaceName();
 #endif
 
     wxString facename = font->GetFaceName();
@@ -371,7 +369,9 @@ void wxFillLogFont(LOGFONT *logFont, const wxFont *font)
     wxFontEncoding encoding = font->GetEncoding();
     if ( !wxGetNativeFontEncoding(encoding, &info) )
     {
     wxFontEncoding encoding = font->GetEncoding();
     if ( !wxGetNativeFontEncoding(encoding, &info) )
     {
+#if wxUSE_FONTMAP
         if ( !wxTheFontMapper->GetAltForEncoding(encoding, &info) )
         if ( !wxTheFontMapper->GetAltForEncoding(encoding, &info) )
+#endif // wxUSE_FONTMAP
         {
             // unsupported encoding, replace with the default
             info.charset = ANSI_CHARSET;
         {
             // unsupported encoding, replace with the default
             info.charset = ANSI_CHARSET;