/////////////////////////////////////////////////////////////////////////////
-// Name: generic/datectlg.cpp
+// Name: src/generic/datectlg.cpp
// Purpose: generic wxDatePickerCtrlGeneric implementation
// Author: Andreas Pflug
// Modified by:
// 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"
long style = 0,
const wxValidator& validator = wxDefaultValidator);
- virtual void DoMoveWindow(int x, int y, int w, int h);
-
protected:
+ virtual void DoMoveWindow(int x, int y, int w, int h);
void OnSize(wxSizeEvent& event);
void OnMouseEnter(wxMouseEvent& event);
wxControl::DoMoveWindow(x, y, w, h);
if (m_dropped)
- DropDown(true);
+ DropDown(false);
}
wxSize wxDatePickerCtrlGeneric::DoGetBestSize() const
{
- int bh=m_btn->GetBestSize().y;
- int eh=m_txt->GetBestSize().y;
- return wxSize(DEFAULT_ITEM_WIDTH, bh > eh ? bh : eh);
+ if (m_btn && m_txt)
+ {
+ int bh=m_btn->GetBestSize().y;
+ int eh=m_txt->GetBestSize().y;
+ return wxSize(DEFAULT_ITEM_WIDTH, bh > eh ? bh : eh);
+ }
+ return wxControl::DoGetBestSize();
}
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())
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
{
if (dt1)
*dt1 = m_cal->GetLowerDateLimit();
- if (dt1)
+ if (dt2)
*dt2 = m_cal->GetUpperDateLimit();
return true;
}
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;
#endif // wxUSE_DATEPICKCTRL_GENERIC
#endif // wxUSE_DATEPICKCTRL
-