X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/30be036c6d4990f8aa21af5b86abdc0852e686a0..e4a84806c650d56258e9ccc5fb27c42cbd18632a:/src/msw/combo.cpp diff --git a/src/msw/combo.cpp b/src/msw/combo.cpp index e784c4a1cd..7c69f60c86 100644 --- a/src/msw/combo.cpp +++ b/src/msw/combo.cpp @@ -74,7 +74,7 @@ #define COMBOBOX_ANIMATION_DURATION 200 // In milliseconds -#define wxMSW_DESKTOP_USERPREFERENCESMASK_COMBOBOXANIM (1<<26) +#define wxMSW_DESKTOP_USERPREFERENCESMASK_COMBOBOXANIM (1<<2) // ============================================================================ @@ -85,7 +85,9 @@ BEGIN_EVENT_TABLE(wxComboCtrl, wxComboCtrlBase) EVT_PAINT(wxComboCtrl::OnPaintEvent) EVT_MOUSE_EVENTS(wxComboCtrl::OnMouseEvent) +#if wxUSE_COMBOCTRL_POPUP_ANIMATION EVT_TIMER(wxID_ANY, wxComboCtrl::OnTimerEvent) +#endif END_EVENT_TABLE() @@ -147,8 +149,8 @@ bool wxComboCtrl::Create(wxWindow *parent, // Prepare background for double-buffering SetBackgroundStyle( wxBG_STYLE_CUSTOM ); - // SetBestSize should be called last - SetBestSize(size); + // SetInitialSize should be called last + SetInitialSize(size); return true; } @@ -246,12 +248,9 @@ static void wxMSWDrawFocusRect( wxDC& dc, const wxRect& rect ) } // draw focus background on area in a way typical on platform -void wxComboCtrl::PrepareBackground( wxDC& dc, const wxRect& rect, int flags ) const +void +wxComboCtrl::PrepareBackground( wxDC& dc, const wxRect& rect, int flags ) const { - wxUxThemeEngine* theme = (wxUxThemeEngine*) NULL; - - // Constructor only calls GetHWND() const, so it should be safe - // to cast "this" to const. wxUxThemeHandle hTheme(this, L"COMBOBOX"); //COLORREF cref; @@ -314,8 +313,9 @@ void wxComboCtrl::PrepareBackground( wxDC& dc, const wxRect& rect, int flags ) c selRect.x += wcp + focusSpacingX; selRect.width -= wcp + (focusSpacingX*2); - if ( hTheme ) - theme = wxUxThemeEngine::GetIfActive(); + //wxUxThemeEngine* theme = (wxUxThemeEngine*) NULL; + //if ( hTheme ) + // theme = wxUxThemeEngine::GetIfActive(); wxColour bgCol; bool drawDottedEdge = false; @@ -456,7 +456,7 @@ void wxComboCtrl::OnPaintEvent( wxPaintEvent& WXUNUSED(event) ) dc.DrawRectangle(rect); // Button background with theme? - bool drawButBg = true; + int drawButFlags = Draw_PaintBg; if ( hTheme && m_blankButtonBg ) { RECT r; @@ -468,11 +468,11 @@ void wxComboCtrl::OnPaintEvent( wxPaintEvent& WXUNUSED(event) ) GetHdcOf(dc), &r); - drawButBg = false; + drawButFlags = 0; } // Standard button rendering - DrawButton(dc,rectb,drawButBg); + DrawButton(dc,rectb,drawButFlags); // paint required portion on the control if ( (!m_text || m_widthCustomPaint) ) @@ -545,16 +545,28 @@ static wxUint32 GetUserPreferencesMask() if ( valueSet ) return userPreferencesMask; - wxRegKey key(wxRegKey::HKCU, wxT("Control Panel\\Desktop")); - if( key.Open(wxRegKey::Read) ) + wxRegKey* pKey = NULL; + wxRegKey key1(wxRegKey::HKCU, wxT("Software\\Policies\\Microsoft\\Control Panel")); + wxRegKey key2(wxRegKey::HKCU, wxT("Software\\Policies\\Microsoft\\Windows\\Control Panel")); + wxRegKey key3(wxRegKey::HKCU, wxT("Control Panel\\Desktop")); + + if ( key1.Exists() ) + pKey = &key1; + else if ( key2.Exists() ) + pKey = &key2; + else if ( key3.Exists() ) + pKey = &key3; + + if ( pKey && pKey->Open(wxRegKey::Read) ) { wxMemoryBuffer buf; - if ( key.QueryValue(wxT("UserPreferencesMask"), buf) ) + if ( pKey->HasValue(wxT("UserPreferencesMask")) && + pKey->QueryValue(wxT("UserPreferencesMask"), buf) ) { if ( buf.GetDataLen() >= 4 ) { - wxByte* p = (wxByte*) buf.GetData(); - userPreferencesMask = p[3] + (p[2]<<8) + (p[1]<<16) + (p[0]<<24); + wxUint32* p = (wxUint32*) buf.GetData(); + userPreferencesMask = *p; } } }