X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ddec9f1eeb99ef15f18b0bcb7ff503cca4a2942f..7be740a3fdba6e7203bd82c1674f48207dc00eed:/src/msw/settings.cpp diff --git a/src/msw/settings.cpp b/src/msw/settings.cpp index a9b58c8a35..e627033416 100644 --- a/src/msw/settings.cpp +++ b/src/msw/settings.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: msw/settings.cpp +// Name: src/msw/settings.cpp // Purpose: wxSystemSettingsNative implementation for MSW // Author: Julian Smart // Modified by: @@ -24,24 +24,23 @@ #pragma hdrstop #endif +#include "wx/settings.h" + #ifndef WX_PRECOMP #include "wx/utils.h" #include "wx/gdicmn.h" + #include "wx/module.h" #endif -#include "wx/settings.h" - #include "wx/msw/private.h" +#include "wx/msw/missing.h" // for SM_CXCURSOR, SM_CYCURSOR, SM_TABLETPC #ifndef SPI_GETFLATMENU #define SPI_GETFLATMENU 0x1022 #endif -#include "wx/module.h" #include "wx/fontutil.h" - -// for SM_CXCURSOR, SM_CYCURSOR, SM_TABLETPC -#include "wx/msw/missing.h" +#include "wx/fontenum.h" // ---------------------------------------------------------------------------- // private classes @@ -129,7 +128,12 @@ wxColour wxSystemSettingsNative::GetColour(wxSystemColour index) 0, // MENUBAR (unused) }; - if ( index == wxSYS_COLOUR_LISTBOX ) + if ( index == wxSYS_COLOUR_LISTBOXTEXT) + { + // there is no standard colour with this index, map to another one + index = wxSYS_COLOUR_WINDOWTEXT; + } + else if ( index == wxSYS_COLOUR_LISTBOX ) { // there is no standard colour with this index, map to another one index = wxSYS_COLOUR_WINDOW; @@ -204,8 +208,10 @@ wxColour wxSystemSettingsNative::GetColour(wxSystemColour index) colSys = ::GetSysColor(index); #endif } - - return wxRGBToColour(colSys); + + wxColour ret = wxRGBToColour(colSys); + wxASSERT(ret.IsOk()); + return ret; } // ---------------------------------------------------------------------------- @@ -228,7 +234,7 @@ wxFont wxCreateFontFromStockObject(int index) // We want Windows 2000 or later to have new fonts even MS Shell Dlg // is returned as default GUI font for compatibility int verMaj; - if(index == DEFAULT_GUI_FONT && wxGetOsVersion(&verMaj) == wxWINDOWS_NT && verMaj >= 5) + if(index == DEFAULT_GUI_FONT && wxGetOsVersion(&verMaj) == wxOS_WINDOWS_NT && verMaj >= 5) wxStrcpy(info.lf.lfFaceName, wxT("MS Shell Dlg 2")); #endif // Under MicroWindows we pass the HFONT as well @@ -264,6 +270,8 @@ wxFont wxSystemSettingsNative::GetFont(wxSystemFont index) gs_fontDefault = new wxFont(wxCreateFontFromStockObject(SYSTEM_FONT)); } + wxASSERT(gs_fontDefault->IsOk() && + wxFontEnumerator::IsValidFacename(gs_fontDefault->GetFaceName())); return *gs_fontDefault; #else // !__WXWINCE__ // wxWindow ctor calls GetFont(wxSYS_DEFAULT_GUI_FONT) so we're @@ -283,6 +291,7 @@ wxFont wxSystemSettingsNative::GetFont(wxSystemFont index) gs_fontDefault = new wxFont(font); } + wxASSERT(font.IsOk() && wxFontEnumerator::IsValidFacename(font.GetFaceName())); return font; #endif // __WXWINCE__/!__WXWINCE__ } @@ -309,8 +318,12 @@ static const int gs_metricsMap[] = SM_CXBORDER, SM_CYBORDER, +#ifdef SM_CXCURSOR SM_CXCURSOR, SM_CYCURSOR, +#else + -1, -1, +#endif SM_CXDOUBLECLK, SM_CYDOUBLECLK, #if defined(__WIN32__) && defined(SM_CXDRAG) @@ -350,7 +363,7 @@ static const int gs_metricsMap[] = -1, -1, -1, -1, #endif SM_CYHSCROLL, - SM_CXVSCROLL, + SM_CXHSCROLL, SM_CXVSCROLL, SM_CYVSCROLL, #ifdef SM_CYVTHUMB @@ -375,11 +388,14 @@ static const int gs_metricsMap[] = #else -1, #endif + // SM_SWAPBUTTON is not available under CE and it doesn't make sense to ask + // for it there #ifdef SM_SWAPBUTTON SM_SWAPBUTTON, #else - -1 + -1, #endif + -1 // wxSYS_DCLICK_MSEC - not available as system metric }; // Get a system metric, e.g. scrollbar size @@ -392,6 +408,12 @@ int wxSystemSettingsNative::GetMetric(wxSystemMetric index, wxWindow* WXUNUSED(w wxCHECK_MSG( index > 0 && (size_t)index < WXSIZEOF(gs_metricsMap), 0, _T("invalid metric") ); + if ( index == wxSYS_DCLICK_MSEC ) + { + // This one is not a Win32 system metric + return ::GetDoubleClickTime(); + } + int indexMSW = gs_metricsMap[index]; if ( indexMSW == -1 ) { @@ -445,12 +467,12 @@ extern wxFont wxGetCCDefaultFont() int verMaj, verMin; switch ( wxGetOsVersion(&verMaj, &verMin) ) { - case wxWIN95: + case wxOS_WINDOWS_9X: // 4.10 is Win98 useIconFont = verMaj == 4 && verMin >= 10; break; - case wxWINDOWS_NT: + case wxOS_WINDOWS_NT: // 5.0 is Win2k useIconFont = verMaj >= 5; break;