Vincent Povirk : comdlg32: Always use screen dpi in the font dialog, even with a printer dc.
Alexandre Julliard
julliard at winehq.org
Mon Feb 22 08:46:53 CST 2010
Module: wine
Branch: master
Commit: a19536587be143cf1f208e62062fb35abfbd4f5d
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a19536587be143cf1f208e62062fb35abfbd4f5d
Author: Vincent Povirk <vincent at codeweavers.com>
Date: Fri Feb 19 16:50:22 2010 -0600
comdlg32: Always use screen dpi in the font dialog, even with a printer dc.
---
dlls/comdlg32/fontdlg.c | 31 +++++++++++++++++++------------
dlls/comdlg32/tests/fontdlg.c | 4 ++--
2 files changed, 21 insertions(+), 14 deletions(-)
diff --git a/dlls/comdlg32/fontdlg.c b/dlls/comdlg32/fontdlg.c
index db8ad62..3865d1a 100644
--- a/dlls/comdlg32/fontdlg.c
+++ b/dlls/comdlg32/fontdlg.c
@@ -456,6 +456,21 @@ static inline HDC CFn_GetDC(const CHOOSEFONTW *lpcf)
}
/*************************************************************************
+ * GetScreenDPI [internal]
+ */
+static inline int GetScreenDPI(void)
+{
+ HDC hdc;
+ int result;
+
+ hdc = GetDC(0);
+ result = GetDeviceCaps(hdc, LOGPIXELSY);
+ ReleaseDC(0, hdc);
+
+ return result;
+}
+
+/*************************************************************************
* CFn_ReleaseDC [internal]
*/
static inline void CFn_ReleaseDC(const CHOOSEFONTW *lpcf, HDC hdc)
@@ -486,10 +501,8 @@ static INT AddFontStyle( const ENUMLOGFONTEXW *lpElfex, const NEWTEXTMETRICEXW *
if (nFontType & RASTER_FONTTYPE)
{
INT points;
- if(!(hdc = CFn_GetDC(lpcf))) return 0;
points = MulDiv( lpNTM->ntmTm.tmHeight - lpNTM->ntmTm.tmInternalLeading,
- 72, GetDeviceCaps(hdc, LOGPIXELSY));
- CFn_ReleaseDC(lpcf, hdc);
+ 72, GetScreenDPI());
i = AddFontSizeToCombo3(hcmb3, points, lpcf);
if(i) return 0;
} else if (SetFontSizesToCombo3(hcmb3, lpcf)) return 0;
@@ -705,7 +718,7 @@ static LRESULT CFn_WMInitDialog(HWND hDlg, WPARAM wParam, LPARAM lParam, LPCHOOS
lpxx->lfHeight;
INT points;
int charset = lpxx->lfCharSet;
- points = MulDiv( height, 72, GetDeviceCaps(hdc, LOGPIXELSY));
+ points = MulDiv( height, 72, GetScreenDPI());
pstyle = MAKELONG(lpxx->lfWeight > FW_MEDIUM ? FW_BOLD:
FW_NORMAL,lpxx->lfItalic !=0);
SendDlgItemMessageW(hDlg, cmb1, CB_SETCURSEL, j, 0);
@@ -982,14 +995,8 @@ static LRESULT CFn_WMCommand(HWND hDlg, WPARAM wParam, LPARAM lParam, LPCHOOSEFO
CB_GETITEMDATA , i, 0));
else
lpcf->iPointSize = 100;
- hdc = CFn_GetDC(lpcf);
- if( hdc)
- {
- lpxx->lfHeight = - MulDiv( lpcf->iPointSize ,
- GetDeviceCaps(hdc, LOGPIXELSY), 720);
- CFn_ReleaseDC(lpcf, hdc);
- } else
- lpxx->lfHeight = -lpcf->iPointSize / 10;
+ lpxx->lfHeight = - MulDiv( lpcf->iPointSize ,
+ GetScreenDPI(), 720);
i=SendDlgItemMessageW(hDlg, cmb5, CB_GETCURSEL, 0, 0);
if (i!=CB_ERR)
lpxx->lfCharSet=SendDlgItemMessageW(hDlg, cmb5, CB_GETITEMDATA, i, 0);
diff --git a/dlls/comdlg32/tests/fontdlg.c b/dlls/comdlg32/tests/fontdlg.c
index d6819fc..57c1d90 100644
--- a/dlls/comdlg32/tests/fontdlg.c
+++ b/dlls/comdlg32/tests/fontdlg.c
@@ -135,8 +135,8 @@ static void test_ChooseFontA(void)
expected_lfheight = -MulDiv(expected_pointsize, dpiy, 720);
ok(ret == TRUE, "ChooseFontA returned FALSE\n");
- todo_wine ok(cfa.iPointSize == expected_pointsize, "Expected %i, got %i\n", expected_pointsize, cfa.iPointSize);
- todo_wine ok(lfa.lfHeight == expected_lfheight, "Expected %i, got %i\n", expected_lfheight, lfa.lfHeight);
+ ok(cfa.iPointSize == expected_pointsize, "Expected %i, got %i\n", expected_pointsize, cfa.iPointSize);
+ ok(lfa.lfHeight == expected_lfheight, "Expected %i, got %i\n", expected_lfheight, lfa.lfHeight);
ok(lfa.lfWeight == FW_NORMAL, "Expected FW_NORMAL, got %i\n", lfa.lfWeight);
ok(strcmp(lfa.lfFaceName, "Symbol") == 0, "Expected Symbol, got %s\n", lfa.lfFaceName);
More information about the wine-cvs
mailing list