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:
@@ -65,7 +65,7 @@ public:
|
|||||||
|
|
||||||
bool Destroy()
|
bool Destroy()
|
||||||
{
|
{
|
||||||
m_dialog->Destroy();
|
if (m_dialog) m_dialog->Destroy();
|
||||||
return wxButton::Destroy();
|
return wxButton::Destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user