IMPLEMENT_DYNAMIC_CLASS(wxBitmapButton, wxButton)
#endif
+BEGIN_EVENT_TABLE(wxBitmapButton, wxBitmapButtonBase)
+ EVT_SYS_COLOUR_CHANGED(wxBitmapButton::OnSysColourChanged)
+END_EVENT_TABLE()
+
/*
TODO PROPERTIES :
bitmap "disabled" ,
*/
-#define BUTTON_HEIGHT_FACTOR (EDIT_CONTROL_FACTOR * 1.1)
-
bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id,
const wxBitmap& bitmap,
const wxPoint& pos,
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
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;
+ wxSize best(m_bmpNormal.GetWidth() + 2*m_marginX,
+ m_bmpNormal.GetHeight() + 2*m_marginY);
+ CacheBestSize(best);
+ return best;
}
- return best;
+ // no idea what our best size should be, defer to the base class
+ return wxBitmapButtonBase::DoGetBestSize();
}
#endif // wxUSE_BMPBUTTON