X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d50dbf7c6a8044a4084f6ffc51aa13d4a2c620c4..f773e9b0bbfd051a4ae316461fd241230c87e39f:/src/msw/bmpbuttn.cpp diff --git a/src/msw/bmpbuttn.cpp b/src/msw/bmpbuttn.cpp index 8a7ff239e0..e1be21611f 100644 --- a/src/msw/bmpbuttn.cpp +++ b/src/msw/bmpbuttn.cpp @@ -89,6 +89,10 @@ wxCONSTRUCTOR_5( wxBitmapButton , wxWindow* , Parent , wxWindowID , Id , wxBitma IMPLEMENT_DYNAMIC_CLASS(wxBitmapButton, wxButton) #endif +BEGIN_EVENT_TABLE(wxBitmapButton, wxBitmapButtonBase) + EVT_SYS_COLOUR_CHANGED(wxBitmapButton::OnSysColourChanged) +END_EVENT_TABLE() + /* TODO PROPERTIES : @@ -183,6 +187,19 @@ bool wxBitmapButton::SetBackgroundColour(const wxColour& colour) return true; } +void wxBitmapButton::OnSysColourChanged(wxSysColourChangedEvent& event) +{ + m_brushDisabled = wxNullBrush; + + if ( !IsEnabled() ) + { + // this change affects our current state + Refresh(); + } + + event.Skip(); +} + // VZ: should be at the very least less than wxDEFAULT_BUTTON_MARGIN #define FOCUS_MARGIN 3 @@ -475,26 +492,14 @@ void wxBitmapButton::SetDefault() wxSize wxBitmapButton::DoGetBestSize() const { - wxSize best; - if (m_bmpNormal.Ok()) - { - best.x = m_bmpNormal.GetWidth() + 2*m_marginX; - best.y = m_bmpNormal.GetHeight() + 2*m_marginY; - } - - // all buttons have at least the standard size unless the user explicitly - // wants them to be of smaller size and used wxBU_EXACTFIT style when - // creating the button - if ( !HasFlag(wxBU_EXACTFIT) ) + if ( m_bmpNormal.Ok() ) { - wxSize sz = GetDefaultSize(); - if (best.x > sz.x) - sz.x = best.x; - if (best.y > sz.y) - sz.y = best.y; + return wxSize(m_bmpNormal.GetWidth() + 2*m_marginX, + m_bmpNormal.GetHeight() + 2*m_marginY); } - return best; + // no idea what our best size should be, defer to the base class + return wxBitmapButtonBase::DoGetBestSize(); } #endif // wxUSE_BMPBUTTON