summaryrefslogtreecommitdiff
path: root/wxWidgets-Fix/settings.cpp.patch
diff options
context:
space:
mode:
Diffstat (limited to 'wxWidgets-Fix/settings.cpp.patch')
-rw-r--r--wxWidgets-Fix/settings.cpp.patch54
1 files changed, 32 insertions, 22 deletions
diff --git a/wxWidgets-Fix/settings.cpp.patch b/wxWidgets-Fix/settings.cpp.patch
index 1ba9524a..3c48d052 100644
--- a/wxWidgets-Fix/settings.cpp.patch
+++ b/wxWidgets-Fix/settings.cpp.patch
@@ -1,19 +1,15 @@
---- src\msw\settings.cpp.old 2011-03-22 10:36:54.000000000 +0100
-+++ src\msw\settings.cpp 2011-12-14 21:58:59.642200200 +0100
-@@ -40,6 +40,12 @@
+--- settings.cpp.old 2011-03-22 10:36:54.000000000 +0100
++++ settings.cpp 2012-01-23 00:26:06.916105800 +0100
+@@ -40,6 +40,8 @@
#endif
#include "wx/fontutil.h"
+//#include <vssym32.h>
+#include <Uxtheme.h>
-+
-+#ifdef _MSC_VER
-+#pragma comment(lib, "UxTheme.lib")
-+#endif
// ----------------------------------------------------------------------------
// private classes
-@@ -261,6 +267,34 @@
+@@ -261,6 +263,48 @@
return font;
}
@@ -21,26 +17,40 @@
+#define TMT_MSGBOXFONT 805 //why is this constant missing from Uxtheme.h???
+#endif
+
++typedef HTHEME (WINAPI* OpenThemeDataFun )(HWND hwnd, LPCWSTR pszClassList);
++typedef HRESULT (WINAPI* CloseThemeDataFun )(HTHEME hTheme);
++typedef HRESULT (WINAPI* GetThemeSysFontFun)(HTHEME hTheme, int iFontID, LOGFONTW* plf);
++
+struct InitFont //(try to) initialize default font, before wxWidgets gets chance to screw up
+{
+ InitFont()
+ {
-+ HTHEME theme = ::OpenThemeData(NULL, //__in HWND hwnd,
-+ L"WINDOW"); //__in LPCWSTR pszClassList
-+
-+ LOGFONT lfont = {};
-+ if (::GetThemeSysFont(theme, //__in HTHEME hTheme,
-+ TMT_MSGBOXFONT, //__in int iFontID,
-+ &lfont) == S_OK) // __out LOGFONTW *plf
++ //Windows 2000 doesn't ship with this dll so we need to link it dynamically
++ if (HMODULE lib = ::LoadLibrary(L"UxTheme.dll"))
+ {
-+ wxNativeFontInfo native;
-+ native.lf = lfont;
-+ delete gs_fontDefault;
-+ gs_fontDefault = wxFontBase::New(native);
-+ }
++ OpenThemeDataFun OpenThemeData = reinterpret_cast<OpenThemeDataFun >(::GetProcAddress(lib, "OpenThemeData"));
++ CloseThemeDataFun CloseThemeData = reinterpret_cast<CloseThemeDataFun >(::GetProcAddress(lib, "CloseThemeData"));
++ GetThemeSysFontFun GetThemeSysFont = reinterpret_cast<GetThemeSysFontFun>(::GetProcAddress(lib, "GetThemeSysFont"));
+
-+ if (theme != NULL)
-+ ::CloseThemeData(theme);
++ HTHEME theme = (*OpenThemeData)(NULL, //__in HWND hwnd,
++ L"WINDOW"); //__in LPCWSTR pszClassList
++
++ LOGFONT lfont = {};
++ if ((*GetThemeSysFont)(theme, //__in HTHEME hTheme,
++ TMT_MSGBOXFONT, //__in int iFontID,
++ &lfont) == S_OK) // __out LOGFONTW *plf
++ {
++ wxNativeFontInfo native;
++ native.lf = lfont;
++ delete gs_fontDefault;
++ gs_fontDefault = wxFontBase::New(native);
++ }
++
++ if (theme != NULL)
++ (*CloseThemeData)(theme);
++
++ ::FreeLibrary(lib);
++ }
+ }
+} dummy;
+
bgstack15