]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/datectlg.cpp
fix for a crash due to using NULL inputConv in Unicode build introduced in rev 1.162
[wxWidgets.git] / src / generic / datectlg.cpp
index b08865412933e0ac7297fe7fc5ee0a8e00351840..eda003e5f76c30b71b276f9769bcd838cb8930f5 100644 (file)
@@ -29,7 +29,8 @@
 
 // use this version if we're explicitly requested to do it or if it's the only
 // one we have
-#if wxUSE_DATEPICKCTRL_GENERIC || !defined(wxHAS_NATIVE_DATEPICKCTRL)
+#if !defined(wxHAS_NATIVE_DATEPICKCTRL) || \
+        (defined(wxUSE_DATEPICKCTRL_GENERIC) && wxUSE_DATEPICKCTRL_GENERIC)
 
 #ifndef WX_PRECOMP
     #include "wx/bmpbuttn.h"
@@ -632,14 +633,14 @@ wxDatePickerCtrlGeneric::SetDateRange(const wxDateTime& lowerdate,
 
 bool wxDatePickerCtrlGeneric::SetFormat(const wxChar *fmt)
 {
+    m_format.clear();
+
     wxDateTime dt;
     dt.ParseFormat(wxT("2003-10-13"), wxT("%Y-%m-%d"));
-    wxString str=dt.Format(fmt);
-    wxChar *p=(wxChar*)str.c_str();
-
-    m_format=wxEmptyString;
+    wxString str(dt.Format(fmt));
 
-    while (*p)
+    const wxChar *p = str.c_str();
+    while ( *p )
     {
         int n=wxAtoi(p);
         if (n == dt.GetDay())
@@ -669,19 +670,19 @@ bool wxDatePickerCtrlGeneric::SetFormat(const wxChar *fmt)
             m_format.Append(*p++);
     }
 
-    if (m_txt)
+    if ( m_txt )
     {
         wxArrayString allowedChars;
         for ( wxChar c = _T('0'); c <= _T('9'); c++ )
             allowedChars.Add(wxString(c, 1));
 
-        const wxChar *p = m_format.c_str();
-        while (*p)
+        const wxChar *p2 = m_format.c_str();
+        while ( *p2 )
         {
-            if (*p == '%')
-                p += 2;
+            if ( *p2 == '%')
+                p2 += 2;
             else
-                allowedChars.Add(wxString(*p++, 1));
+                allowedChars.Add(wxString(*p2++, 1));
         }
 
 #if wxUSE_VALIDATORS
@@ -867,7 +868,7 @@ void wxDatePickerCtrlGeneric::OnKillFocus(wxFocusEvent &ev)
         m_txt->SetValue(wxEmptyString);
 
     // notify that we had to change the date after validation
-    if ( (dt.IsValid() && m_currentDate != dt) ||
+    if ( (dt.IsValid() && (!m_currentDate.IsValid() || m_currentDate != dt)) ||
             (!dt.IsValid() && m_currentDate.IsValid()) )
     {
         m_currentDate = dt;