X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/655719367ac5e131d9642e5783f3ecf64d1a3385..83666e99093aa0b65c497f7e6c75d98a875667cc:/src/msw/settings.cpp diff --git a/src/msw/settings.cpp b/src/msw/settings.cpp index bad418ac1e..476873b4af 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,26 +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" -#ifdef __WXWINCE__ // for SM_CXCURSOR and SM_CYCURSOR -#include "wx/msw/wince/missing.h" -#endif // __WXWINCE__ - // ---------------------------------------------------------------------------- // private classes // ---------------------------------------------------------------------------- @@ -87,7 +84,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxSystemSettingsModule, wxModule) bool wxSystemSettingsModule::OnInit() { - return TRUE; + return true; } void wxSystemSettingsModule::OnExit() @@ -110,7 +107,7 @@ wxColour wxSystemSettingsNative::GetColour(wxSystemColour index) // is no invalid colour value we use hasCol as the real indicator of // whether colSys was initialized or not COLORREF colSys = 0; - bool hasCol = FALSE; + bool hasCol = false; // the default colours for the entries after BTNHIGHLIGHT static const COLORREF s_defaultSysColors[] = @@ -146,7 +143,7 @@ wxColour wxSystemSettingsNative::GetColour(wxSystemColour index) if ( verMaj < 4 ) { // NT 3.5 - useDefault = TRUE; + useDefault = true; } else if ( verMaj == 4 ) { @@ -161,18 +158,18 @@ wxColour wxSystemSettingsNative::GetColour(wxSystemColour index) else // >= 5.1 { // 5.1 is Windows XP - useDefault = FALSE; - // Determine if we are using flat menus, only then allow wxSYS_COLOUR_MENUBAR - if ( index == wxSYS_COLOUR_MENUBAR ) - { - BOOL isFlat ; - if ( SystemParametersInfo( SPI_GETFLATMENU , 0 ,&isFlat, 0 ) ) - { - if ( !isFlat ) - index = wxSYS_COLOUR_MENU ; - } - } - } + useDefault = false; + // Determine if we are using flat menus, only then allow wxSYS_COLOUR_MENUBAR + if ( index == wxSYS_COLOUR_MENUBAR ) + { + BOOL isFlat ; + if ( SystemParametersInfo( SPI_GETFLATMENU , 0 ,&isFlat, 0 ) ) + { + if ( !isFlat ) + index = wxSYS_COLOUR_MENU ; + } + } + } if ( useDefault ) { @@ -192,7 +189,7 @@ wxColour wxSystemSettingsNative::GetColour(wxSystemColour index) _T("forgot tp update the default colours array") ); colSys = s_defaultSysColors[n]; - hasCol = TRUE; + hasCol = true; } } } @@ -225,6 +222,13 @@ wxFont wxCreateFontFromStockObject(int index) { wxNativeFontInfo info; info.lf = lf; +#ifndef __WXWINCE__ + // 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) == wxOS_WINDOWS_NT && verMaj >= 5) + wxStrcpy(info.lf.lfFaceName, wxT("MS Shell Dlg 2")); +#endif // Under MicroWindows we pass the HFONT as well // because it's hard to convert HFONT -> LOGFONT -> HFONT // It's OK to delete stock objects, the delete will be ignored. @@ -260,7 +264,7 @@ wxFont wxSystemSettingsNative::GetFont(wxSystemFont index) return *gs_fontDefault; #else // !__WXWINCE__ - // wxWindow ctor calls GetSystemFont(wxSYS_DEFAULT_GUI_FONT) so we're + // wxWindow ctor calls GetFont(wxSYS_DEFAULT_GUI_FONT) so we're // called fairly often -- this is why we cache this particular font const bool isDefaultRequested = index == wxSYS_DEFAULT_GUI_FONT; if ( isDefaultRequested ) @@ -303,8 +307,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) @@ -344,7 +352,7 @@ static const int gs_metricsMap[] = -1, -1, -1, -1, #endif SM_CYHSCROLL, - SM_CXVSCROLL, + SM_CXHSCROLL, SM_CXVSCROLL, SM_CYVSCROLL, #ifdef SM_CYVTHUMB @@ -369,15 +377,18 @@ 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 -int wxSystemSettingsNative::GetMetric(wxSystemMetric index) +int wxSystemSettingsNative::GetMetric(wxSystemMetric index, wxWindow* WXUNUSED(win)) { #ifdef __WXMICROWIN__ // TODO: probably use wxUniv themes functionality @@ -386,11 +397,17 @@ int wxSystemSettingsNative::GetMetric(wxSystemMetric index) 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 ) { // not supported under current system - return 0; + return -1; } int rc = ::GetSystemMetrics(indexMSW); @@ -410,12 +427,15 @@ bool wxSystemSettingsNative::HasFeature(wxSystemFeature index) { case wxSYS_CAN_ICONIZE_FRAME: case wxSYS_CAN_DRAW_FRAME_DECORATIONS: - return TRUE; + return true; + + case wxSYS_TABLET_PRESENT: + return ::GetSystemMetrics(SM_TABLETPC) != 0; default: wxFAIL_MSG( _T("unknown system feature") ); - return FALSE; + return false; } } @@ -436,12 +456,12 @@ extern wxFont wxGetCCDefaultFont() int verMaj, verMin; switch ( wxGetOsVersion(&verMaj, &verMin) ) { - case wxWIN95: + case wxOS_WINDOWS_9X: // 4.10 is Win98 - useIconFont = verMin == 4 && verMin >= 10; + useIconFont = verMaj == 4 && verMin >= 10; break; - case wxWINDOWS_NT: + case wxOS_WINDOWS_NT: // 5.0 is Win2k useIconFont = verMaj >= 5; break;