X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7d6d3bf31edc02abde8b32a8725f69f396f3dfff..b5435dccd098ae153c3b7b3b8fca8dd0d763986c:/src/msw/settings.cpp diff --git a/src/msw/settings.cpp b/src/msw/settings.cpp index 85d8b311f4..9ba29bc069 100644 --- a/src/msw/settings.cpp +++ b/src/msw/settings.cpp @@ -5,8 +5,8 @@ // Modified by: // Created: 04/01/98 // RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Copyright: (c) Julian Smart +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// // ============================================================================ @@ -25,6 +25,7 @@ #endif #ifndef WX_PRECOMP + #include "wx/utils.h" #include "wx/gdicmn.h" #endif @@ -32,6 +33,10 @@ #include "wx/msw/private.h" +#ifndef SPI_GETFLATMENU +#define SPI_GETFLATMENU 0x1022 +#endif + #include "wx/module.h" #include "wx/fontutil.h" @@ -155,7 +160,17 @@ wxColour wxSystemSettingsNative::GetColour(wxSystemColour index) { // 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 ; + } + } + } #else useDefault = TRUE; #endif // __WIN32__ @@ -172,7 +187,7 @@ wxColour wxSystemSettingsNative::GetColour(wxSystemColour index) } else // replace with default colour { - int n = index - wxSYS_COLOUR_BTNHIGHLIGHT; + unsigned int n = index - wxSYS_COLOUR_BTNHIGHLIGHT; wxASSERT_MSG( n < WXSIZEOF(s_defaultSysColors), _T("forgot tp update the default colours array") ); @@ -185,7 +200,11 @@ wxColour wxSystemSettingsNative::GetColour(wxSystemColour index) if ( !hasCol ) { +#ifdef __WXWINCE__ + colSys = ::GetSysColor(index|SYS_COLOR_INDEX_FLAG); +#else colSys = ::GetSysColor(index); +#endif } return wxRGBToColour(colSys); @@ -264,7 +283,7 @@ wxFont wxSystemSettingsNative::GetFont(wxSystemFont index) static const int gs_metricsMap[] = { -1, // wxSystemMetric enums start at 1, so give a dummy value for pos 0. -#ifdef __WIN32__ +#if defined(__WIN32__) && !defined(__WXWINCE__) SM_CMOUSEBUTTONS, #else -1, @@ -282,17 +301,25 @@ static const int gs_metricsMap[] = SM_CXEDGE, SM_CYEDGE, #else - -1, -1, -1, -1 + -1, -1, -1, -1, #endif SM_CXHSCROLL, SM_CYHSCROLL, +#ifdef SM_CXHTHUMB SM_CXHTHUMB, +#else + -1, +#endif SM_CXICON, SM_CYICON, SM_CXICONSPACING, SM_CYICONSPACING, +#ifdef SM_CXHTHUMB SM_CXMIN, SM_CYMIN, +#else + -1, -1, +#endif SM_CXSCREEN, SM_CYSCREEN, @@ -302,13 +329,17 @@ static const int gs_metricsMap[] = SM_CXSMICON, SM_CYSMICON, #else - -1, -1, -1, -1 + -1, -1, -1, -1, #endif SM_CYHSCROLL, SM_CXVSCROLL, SM_CXVSCROLL, SM_CYVSCROLL, +#ifdef SM_CYVTHUMB SM_CYVTHUMB, +#else + -1, +#endif SM_CYCAPTION, SM_CYMENU, #if defined(__WIN32__) && defined(SM_NETWORK) @@ -316,13 +347,21 @@ static const int gs_metricsMap[] = #else -1, #endif +#ifdef SM_PENWINDOWS SM_PENWINDOWS, +#else + -1, +#endif #if defined(__WIN32__) && defined(SM_SHOWSOUNDS) SM_SHOWSOUNDS, #else -1, #endif +#ifdef SM_SWAPBUTTON SM_SWAPBUTTON, +#else + -1 +#endif }; // Get a system metric, e.g. scrollbar size @@ -332,7 +371,8 @@ int wxSystemSettingsNative::GetMetric(wxSystemMetric index) // TODO: probably use wxUniv themes functionality return 0; #else // !__WXMICROWIN__ - wxCHECK_MSG( index < WXSIZEOF(gs_metricsMap), 0, _T("invalid metric") ); + wxCHECK_MSG( index > 0 && (size_t)index < WXSIZEOF(gs_metricsMap), 0, + _T("invalid metric") ); int indexMSW = gs_metricsMap[index]; if ( indexMSW == -1 )