]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/variant.cpp
(Forward port from 2.8) Allow m_current to be used for the focused item, and reset...
[wxWidgets.git] / src / common / variant.cpp
index 627edfbef604c42ad8cfd7bbae749eebaf28189c..661a6190e51e4649657f97507198d3869629fcb1 100644 (file)
@@ -908,13 +908,13 @@ wxVariant::wxVariant(const wxCStrData& val, const wxString& name)
     m_name = name;
 }
 
-wxVariant::wxVariant(const wxCharBuffer& val, const wxString& name)
+wxVariant::wxVariant(const wxScopedCharBuffer& val, const wxString& name)
 {
     m_data = new wxVariantDataString(wxString(val));
     m_name = name;
 }
 
-wxVariant::wxVariant(const wxWCharBuffer& val, const wxString& name)
+wxVariant::wxVariant(const wxScopedWCharBuffer& val, const wxString& name)
 {
     m_data = new wxVariantDataString(wxString(val));
     m_name = name;
@@ -1271,9 +1271,8 @@ bool wxVariantDataDateTime::Read(wxString& str)
         return true;
     }
 
-    if(! m_value.ParseDateTime(str.c_str()/*FIXME-UTF8*/))
-        return false;
-    return true;
+    wxString::const_iterator end;
+    return m_value.ParseDateTime(str, &end) && end == str.end();
 }
 
 // wxVariant
@@ -1838,12 +1837,25 @@ bool wxVariant::Convert(wxDateTime* value) const
         *value = ((wxVariantDataDateTime*)GetData())->GetValue();
         return true;
     }
+
     // Fallback to string conversion
     wxString val;
-    return Convert(&val) &&
-                (value->ParseDateTime(val.c_str()/*FIXME-UTF8*/) ||
-                 value->ParseDate(val.c_str()/*FIXME-UTF8*/) ||
-                 value->ParseTime(val.c_str()/*FIXME-UTF8*/));
+    if ( !Convert(&val) )
+        return false;
+
+    // Try to parse this as either date and time, only date or only time
+    // checking that the entire string was parsed
+    wxString::const_iterator end;
+    if ( value->ParseDateTime(val, &end) && end == val.end() )
+        return true;
+
+    if ( value->ParseDate(val, &end) && end == val.end() )
+        return true;
+
+    if ( value->ParseTime(val, &end) && end == val.end() )
+        return true;
+
+    return false;
 }
 #endif // wxUSE_DATETIME