X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7520f3da332d64a676b6f7d27a56004fabf2db36..1cd9779fce63b081d875de7a901c8eb6120d0b8a:/src/os2/settings.cpp diff --git a/src/os2/settings.cpp b/src/os2/settings.cpp index 805e567da7..8370e46b16 100644 --- a/src/os2/settings.cpp +++ b/src/os2/settings.cpp @@ -17,11 +17,13 @@ #include "wx/pen.h" #include "wx/brush.h" #include "wx/gdicmn.h" + #include "wx/window.h" + #include "wx/settings.h" + #include "wx/module.h" #endif -#include "wx/module.h" -#include "wx/settings.h" -#include "wx/window.h" +#include "wx/fontutil.h" + #include "wx/os2/private.h" // the module which is used to clean up wxSystemSettings data (this is a @@ -69,6 +71,7 @@ void wxSystemSettingsModule::OnExit() sm_optionNames.Clear(); sm_optionValues.Clear(); delete gs_fontDefault; + gs_fontDefault = NULL; } wxColour wxSystemSettingsNative::GetColour( @@ -200,39 +203,50 @@ wxColour wxSystemSettingsNative::GetColour( return(vCol); } // end of wxSystemSettingsNative::GetColour +// ---------------------------------------------------------------------------- +// fonts +// ---------------------------------------------------------------------------- + +wxFont wxCreateFontFromStockObject(int WXUNUSED(index)) +{ + wxFont font; + + FONTMETRICS metrics; + HPS hPS = ::WinGetScreenPS(HWND_DESKTOP); + if (::GpiQueryFontMetrics(hPS, sizeof(FONTMETRICS), &metrics)) + { + wxNativeFontInfo info; + info.fm = metrics; + font.Create(info); + } + else // GetStockObject() failed + { + wxFAIL_MSG( _T("stock font not found") ); + } + + return font; +} + wxFont wxSystemSettingsNative::GetFont( wxSystemFont index ) { - // TODO - switch (index) + const bool isDefaultRequested = index == wxSYS_DEFAULT_GUI_FONT; + if ( isDefaultRequested ) { - case wxSYS_DEVICE_DEFAULT_FONT: - { - break; - } - case wxSYS_DEFAULT_PALETTE: - { - break; - } - case wxSYS_SYSTEM_FIXED_FONT: - { - break; - } - case wxSYS_SYSTEM_FONT: - { - break; - } - default: - case wxSYS_DEFAULT_GUI_FONT: - { - break; - } + if ( gs_fontDefault ) + return *gs_fontDefault; + } + + wxFont font = wxCreateFontFromStockObject(index); + + if ( isDefaultRequested ) + { + // if we got here it means we hadn't cached it yet - do now + gs_fontDefault = new wxFont(font); } - if(wxSWISS_FONT) - return *wxSWISS_FONT; - return wxNullFont; + return font; } // Get a system metric, e.g. scrollbar size