comdlg32: Not all messages depend on initialized custom choose font dialog data.
Dmitry Timoshkov
dmitry at codeweavers.com
Thu Jul 1 06:45:16 CDT 2010
This patch fixes the problem reported in the bug 23443. In particular
WM_MEASUREITEM message is sent before WM_INITDIALOG during controls creation.
Also DEFAULT_GUI_FONT should be used instead of SYSTEM_FONT since it's the one
which "MS Shell Dlg" used in the dialog template maps to.
---
dlls/comdlg32/fontdlg.c | 16 +++++++++-------
1 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/dlls/comdlg32/fontdlg.c b/dlls/comdlg32/fontdlg.c
index 80f1ad9..ad580d5 100644
--- a/dlls/comdlg32/fontdlg.c
+++ b/dlls/comdlg32/fontdlg.c
@@ -782,7 +782,7 @@ static LRESULT CFn_WMMeasureItem(HWND hDlg, LPARAM lParam)
/* use MAX of bitmap height and tm.tmHeight .*/
hdc=GetDC(hDlg);
if(!hdc) return 0;
- hfontprev = SelectObject( hdc, GetStockObject( SYSTEM_FONT));
+ hfontprev = SelectObject( hdc, GetStockObject( DEFAULT_GUI_FONT ) );
GetTextMetricsW(hdc, &tm);
if( tm.tmHeight > lpmi->itemHeight) lpmi->itemHeight = tm.tmHeight;
SelectObject(hdc, hfontprev);
@@ -905,6 +905,8 @@ static LRESULT CFn_WMCommand(HWND hDlg, WPARAM wParam, LPARAM lParam, LPCHOOSEFO
HDC hdc;
LPLOGFONTW lpxx=lpcf->lpLogFont;
+ if (!lpcf) return FALSE;
+
TRACE("WM_COMMAND wParam=%08X lParam=%08lX\n", (LONG)wParam, lParam);
switch (LOWORD(wParam))
{
@@ -1071,6 +1073,8 @@ static LRESULT CFn_WMDestroy(HWND hwnd, LPCHOOSEFONTW lpcfw)
LPLOGFONTA lpLogFonta;
int len;
+ if (!lpcfw) return FALSE;
+
lpcfa = GetPropW(hwnd, strWineFontData_a);
lpLogFonta = lpcfa->lpLogFont;
lpszStyle = lpcfa->lpszStyle;
@@ -1098,6 +1102,8 @@ static LRESULT CFn_WMPaint(HWND hDlg, WPARAM wParam, LPARAM lParam, const CHOOSE
{
WINDOWINFO info;
+ if (!lpcf) return FALSE;
+
info.cbSize=sizeof(info);
if( GetWindowInfo( GetDlgItem( hDlg, stc5), &info ) )
{
@@ -1156,9 +1162,7 @@ static INT_PTR CALLBACK FormatCharDlgProcA(HWND hDlg, UINT uMsg, WPARAM wParam,
if (uMsg!=WM_INITDIALOG) {
lpcfw = GetPropW(hDlg, strWineFontData);
- if (!lpcfw)
- return FALSE;
- if (CFn_HookCallChk32(lpcfw))
+ if (lpcfw && CFn_HookCallChk32(lpcfw))
res=CallWindowProcA((WNDPROC)lpcfw->lpfnHook, hDlg, uMsg, wParam, lParam);
if (res)
return res;
@@ -1218,9 +1222,7 @@ static INT_PTR CALLBACK FormatCharDlgProcW(HWND hDlg, UINT uMsg, WPARAM wParam,
if (uMsg!=WM_INITDIALOG)
{
lpcf= GetPropW(hDlg, strWineFontData);
- if (!lpcf)
- return FALSE;
- if (CFn_HookCallChk32(lpcf))
+ if (lpcf && CFn_HookCallChk32(lpcf))
res=CallWindowProcW((WNDPROC)lpcf->lpfnHook, hDlg, uMsg, wParam, lParam);
if (res)
return res;
--
1.7.0.6
More information about the wine-patches
mailing list