Lazy creation of the picker dialogs (Francesco).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39526 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Michael Wetherell
2006-06-02 08:17:23 +00:00
parent cc57f388d7
commit 9a8362297a
2 changed files with 12 additions and 2 deletions

View File

@@ -65,7 +65,7 @@ public:
bool Destroy() bool Destroy()
{ {
m_dialog->Destroy(); if (m_dialog) m_dialog->Destroy();
return wxButton::Destroy(); return wxButton::Destroy();
} }

View File

@@ -45,6 +45,8 @@ IMPLEMENT_DYNAMIC_CLASS(wxGenericDirButton, wxButton)
// wxGenericFileButton // wxGenericFileButton
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
static wxString s_message, s_wildcard;
bool wxGenericFileDirButton::Create( wxWindow *parent, wxWindowID id, bool wxGenericFileDirButton::Create( wxWindow *parent, wxWindowID id,
const wxString &label, const wxString &path, const wxString &label, const wxString &path,
const wxString &message, const wxString &wildcard, const wxString &message, const wxString &wildcard,
@@ -66,11 +68,17 @@ bool wxGenericFileDirButton::Create( wxWindow *parent, wxWindowID id,
// create the dialog associated with this button // create the dialog associated with this button
m_path = path; m_path = path;
return CreateDialog(message, wildcard); s_message = message;
s_wildcard = wildcard;
m_dialog = NULL;
return true;
} }
void wxGenericFileDirButton::OnButtonClick(wxCommandEvent& WXUNUSED(ev)) void wxGenericFileDirButton::OnButtonClick(wxCommandEvent& WXUNUSED(ev))
{ {
CreateDialog(s_message, s_wildcard);
if (m_dialog->ShowModal() == wxID_OK) if (m_dialog->ShowModal() == wxID_OK)
{ {
// save the path // save the path
@@ -80,6 +88,8 @@ void wxGenericFileDirButton::OnButtonClick(wxCommandEvent& WXUNUSED(ev))
wxFileDirPickerEvent event(GetEventType(), this, GetId(), m_path); wxFileDirPickerEvent event(GetEventType(), this, GetId(), m_path);
GetEventHandler()->ProcessEvent(event); GetEventHandler()->ProcessEvent(event);
} }
wxDELETE(m_dialog);
} }
#endif // wxUSE_FILEPICKERCTRL || wxUSE_DIRPICKERCTRL #endif // wxUSE_FILEPICKERCTRL || wxUSE_DIRPICKERCTRL