]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/datectlg.cpp
Rework idle handling so that NSApplication does not need to be subclassed or posed as.
[wxWidgets.git] / src / generic / datectlg.cpp
index d22073d67e178bcee13029eb1621315f71b80c5c..2626290a3bd53f0bad9608f55224c8b5f2ab3444 100644 (file)
 // global variables
 // ----------------------------------------------------------------------------
 
-// this should have been a flag in wxDatePickerCtrlGeneric itself but adding it
-// there now would break backwards compatibility, so put it here as a global:
-// this shouldn't be a big problem as only one (GUI) thread normally can call
-// wxDatePickerCtrlGeneric::SetValue() and so it can be only ever used for one
-// control at a time
-//
-// if the value is not NULL, it points to the control which is inside SetValue()
-static wxDatePickerCtrlGeneric *gs_inSetValue = NULL;
 
 // ----------------------------------------------------------------------------
 // local classes
@@ -207,10 +199,10 @@ public:
         cev.SetEventObject(datePicker);
         cev.SetId(datePicker->GetId());
         cev.SetDate(dt);
-        GetParent()->ProcessEvent(cev);
+        GetParent()->GetEventHandler()->ProcessEvent(cev);
 
         wxDateEvent event(datePicker, dt, wxEVT_DATE_CHANGED);
-        datePicker->GetParent()->ProcessEvent(event);
+        datePicker->GetParent()->GetEventHandler()->ProcessEvent(event);
     }
 
 private:
@@ -378,6 +370,7 @@ END_EVENT_TABLE()
 BEGIN_EVENT_TABLE(wxDatePickerCtrlGeneric, wxDatePickerCtrlBase)
     EVT_TEXT(wxID_ANY, wxDatePickerCtrlGeneric::OnText)
     EVT_SIZE(wxDatePickerCtrlGeneric::OnSize)
+    EVT_SET_FOCUS(wxDatePickerCtrlGeneric::OnFocus)
 END_EVENT_TABLE()
 
 #ifndef wxHAS_NATIVE_DATEPICKCTRL
@@ -412,15 +405,21 @@ bool wxDatePickerCtrlGeneric::Create(wxWindow *parent,
     m_combo = new wxComboCtrl(this, -1, wxEmptyString,
                               wxDefaultPosition, wxDefaultSize);
 
+    m_combo->SetCtrlMainWnd(this);
+
     m_popup = new wxCalendarComboPopup();
 
+#if defined(__WXMSW__)
+    // without this keyboard navigation in month control doesn't work
+    m_combo->UseAltPopupWindow();
+#endif
     m_combo->SetPopupControl(m_popup);
 
     m_cal = m_popup;
 
     m_popup->SetDateValue(date.IsValid() ? date : wxDateTime::Today());
 
-    SetBestFittingSize(size);
+    SetInitialSize(size);
 
     return true;
 }
@@ -516,7 +515,7 @@ void wxDatePickerCtrlGeneric::OnText(wxCommandEvent &ev)
 {
     ev.SetEventObject(this);
     ev.SetId(GetId());
-    GetParent()->ProcessEvent(ev);
+    GetParent()->GetEventHandler()->ProcessEvent(ev);
 
     // We'll create an additional event if the date is valid.
     // If the date isn't valid, the user's probably in the middle of typing
@@ -528,6 +527,12 @@ void wxDatePickerCtrlGeneric::OnText(wxCommandEvent &ev)
 }
 
 
+void wxDatePickerCtrlGeneric::OnFocus(wxFocusEvent& WXUNUSED(event))
+{
+    m_combo->SetFocus();
+}
+
+
 #endif // wxUSE_DATEPICKCTRL_GENERIC
 
 #endif // wxUSE_DATEPICKCTRL