#include "wx/spinctrl.h"
 
+// if wxDatePickerCtrl code doesn't define the date event, do it here as we
+// need it as well
+#if !wxUSE_DATEPICKCTRL
+    #define _WX_DEFINE_DATE_EVENTS_
+#endif
+
 #include "wx/calctrl.h"
 
 #define DEBUG_PAINT 0
 #else
 IMPLEMENT_DYNAMIC_CLASS(wxCalendarCtrl, wxControl)
 #endif
-IMPLEMENT_DYNAMIC_CLASS(wxCalendarEvent, wxCommandEvent)
+IMPLEMENT_DYNAMIC_CLASS(wxCalendarEvent, wxDateEvent)
 
 // ----------------------------------------------------------------------------
 // events
     }
 
     SetSelection(m_cal->GetDate().GetMonth());
-    SetSize(wxDefaultPosition.x,
-            wxDefaultPosition.y,
-            wxDefaultSize.x,
-            wxDefaultSize.y,
+    SetSize(wxDefaultCoord,
+            wxDefaultCoord,
+            wxDefaultCoord,
+            wxDefaultCoord,
             wxSIZE_AUTO_WIDTH|wxSIZE_AUTO_HEIGHT);
 }
 
     // above it
     SetBestSize(size);
     SetPosition(pos);
-        
+
+    // Since we don't paint the whole background make sure that the platform
+    // will use the right one.
+    SetBackgroundColour(GetBackgroundColour());
+
     SetHolidayAttrs();
 
     return true;
 
     wxSize best(width, height);
     CacheBestSize(best);
-    return best;   
+    return best;
 }
 
 void wxCalendarCtrl::DoSetSize(int x, int y,
         leftarrow[1] = wxPoint(arrowheight / 2, 0);
         leftarrow[2] = wxPoint(arrowheight / 2, arrowheight - 1);
 
-        rightarrow[0] = wxPoint(0, 0);
+        rightarrow[0] = wxPoint(0,0);
         rightarrow[1] = wxPoint(arrowheight / 2, arrowheight / 2);
         rightarrow[2] = wxPoint(0, arrowheight - 1);
 
         wxCoord arrowy = (m_heightRow - arrowheight) / 2;
         wxCoord larrowx = (m_widthCol - (arrowheight / 2)) / 2;
         wxCoord rarrowx = ((m_widthCol - (arrowheight / 2)) / 2) + m_widthCol*6;
-        m_leftArrowRect = wxRect(0, 0, 0, 0);
-        m_rightArrowRect = wxRect(0, 0, 0, 0);
+        m_leftArrowRect = m_rightArrowRect = wxRect(0,0,0,0);
 
         if ( AllowMonthChange() )
         {
     return wxListBox::GetClassDefaultAttributes(variant);
 }
 
-
-// ----------------------------------------------------------------------------
-// wxCalendarEvent
-// ----------------------------------------------------------------------------
-
-void wxCalendarEvent::Init()
-{
-    m_wday = wxDateTime::Inv_WeekDay;
-}
-
-wxCalendarEvent::wxCalendarEvent(wxCalendarCtrl *cal, wxEventType type)
-               : wxCommandEvent(type, cal->GetId())
-{
-    m_date = cal->GetDate();
-    SetEventObject(cal);
-}
-
 #endif // wxUSE_CALENDARCTRL