From: Vadim Zeitlin Date: Tue, 8 Mar 2005 00:29:56 +0000 (+0000) Subject: init member variables properly (patch 1156088) X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/fe6cf1284497c450735cdeb76cc99de9b18beb5f?hp=58e5044be72aec72fa1b1d2f8413db0e5df67211 init member variables properly (patch 1156088) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32660 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/filedlg.h b/include/wx/filedlg.h index 2a1892ecde..52d5aeb6d0 100644 --- a/include/wx/filedlg.h +++ b/include/wx/filedlg.h @@ -48,15 +48,27 @@ extern WXDLLEXPORT_DATA(const wxChar*) wxFileSelectorDefaultWildcardStr; class WXDLLEXPORT wxFileDialogBase: public wxDialog { public: - wxFileDialogBase () {} + wxFileDialogBase () { Init(); } wxFileDialogBase(wxWindow *parent, - const wxString& message = wxFileSelectorPromptStr, - const wxString& defaultDir = wxEmptyString, - const wxString& defaultFile = wxEmptyString, - const wxString& wildCard = wxFileSelectorDefaultWildcardStr, - long style = 0, - const wxPoint& pos = wxDefaultPosition); + const wxString& message = wxFileSelectorPromptStr, + const wxString& defaultDir = wxEmptyString, + const wxString& defaultFile = wxEmptyString, + const wxString& wildCard = wxFileSelectorDefaultWildcardStr, + long style = 0, + const wxPoint& pos = wxDefaultPosition) : wxDialog() + { + Init(); + Create(parent, message, defaultDir, defaultFile, wildCard, style, pos); + } + + bool Create(wxWindow *parent, + const wxString& message = wxFileSelectorPromptStr, + const wxString& defaultDir = wxEmptyString, + const wxString& defaultFile = wxEmptyString, + const wxString& wildCard = wxFileSelectorDefaultWildcardStr, + long style = 0, + const wxPoint& pos = wxDefaultPosition); virtual void SetMessage(const wxString& message) { m_message = message; } virtual void SetPath(const wxString& path) { m_path = path; } @@ -107,6 +119,7 @@ protected: int m_filterIndex; private: + void Init(); DECLARE_DYNAMIC_CLASS(wxFileDialogBase) DECLARE_NO_COPY_CLASS(wxFileDialogBase) }; diff --git a/include/wx/generic/filedlgg.h b/include/wx/generic/filedlgg.h index a8f5ac7c61..b942af6d6e 100644 --- a/include/wx/generic/filedlgg.h +++ b/include/wx/generic/filedlgg.h @@ -45,23 +45,26 @@ class WXDLLEXPORT wxTextCtrl; class WXDLLEXPORT wxGenericFileDialog: public wxFileDialogBase { public: - wxGenericFileDialog() { } + wxGenericFileDialog() : wxFileDialogBase() { Init(); } wxGenericFileDialog(wxWindow *parent, - const wxString& message = wxFileSelectorPromptStr, + const wxString& message = wxFileSelectorPromptStr, const wxString& defaultDir = wxEmptyString, const wxString& defaultFile = wxEmptyString, - const wxString& wildCard = wxFileSelectorDefaultWildcardStr, - long style = 0, - const wxPoint& pos = wxDefaultPosition, - bool bypassGenericImpl = false ); + const wxString& wildCard = wxFileSelectorDefaultWildcardStr, + long style = 0, + const wxPoint& pos = wxDefaultPosition, + bool bypassGenericImpl = false ); + bool Create( wxWindow *parent, const wxString& message = wxFileSelectorPromptStr, - const wxString& defaultDir = wxEmptyString, - const wxString& defaultFile = wxEmptyString, + const wxString& defaultDir = wxEmptyString, + const wxString& defaultFile = wxEmptyString, const wxString& wildCard = wxFileSelectorDefaultWildcardStr, long style = 0, - const wxPoint& pos = wxDefaultPosition ); + const wxPoint& pos = wxDefaultPosition, + bool bypassGenericImpl = false ); + virtual ~wxGenericFileDialog(); virtual void SetMessage(const wxString& message) { SetTitle(message); } @@ -114,6 +117,7 @@ protected: wxBitmapButton *m_newDirButton; private: + void Init(); DECLARE_DYNAMIC_CLASS(wxGenericFileDialog) DECLARE_EVENT_TABLE() diff --git a/src/common/fldlgcmn.cpp b/src/common/fldlgcmn.cpp index fbdc429dbc..0dbf1be3a9 100644 --- a/src/common/fldlgcmn.cpp +++ b/src/common/fldlgcmn.cpp @@ -36,18 +36,25 @@ IMPLEMENT_DYNAMIC_CLASS(wxFileDialogBase, wxDialog) -wxFileDialogBase::wxFileDialogBase(wxWindow *parent, - const wxString& message, - const wxString& defaultDir, - const wxString& defaultFile, - const wxString& wildCard, - long style, - const wxPoint& WXUNUSED(pos)) - : m_message(message), - m_dir(defaultDir), - m_fileName(defaultFile), - m_wildCard(wildCard) +void wxFileDialogBase::Init() +{ + m_filterIndex = m_dialogStyle = 0; + m_parent = NULL; +} + +bool wxFileDialogBase::Create(wxWindow *parent, + const wxString& message, + const wxString& defaultDir, + const wxString& defaultFile, + const wxString& wildCard, + long style, + const wxPoint& WXUNUSED(pos)) { + m_message = message; + m_dir = defaultDir; + m_fileName = defaultFile; + m_wildCard = wildCard; + m_parent = parent; m_dialogStyle = style; m_filterIndex = 0; @@ -78,6 +85,8 @@ wxFileDialogBase::wxFileDialogBase(wxWindow *parent, ); } } + + return true; } #if WXWIN_COMPATIBILITY_2_4 diff --git a/src/generic/filedlgg.cpp b/src/generic/filedlgg.cpp index 334e2370df..febc457bfe 100644 --- a/src/generic/filedlgg.cpp +++ b/src/generic/filedlgg.cpp @@ -878,32 +878,54 @@ END_EVENT_TABLE() long wxGenericFileDialog::ms_lastViewStyle = wxLC_LIST; bool wxGenericFileDialog::ms_lastShowHidden = false; +void wxGenericFileDialog::Init() +{ + m_bypassGenericImpl = false; + + m_choice = NULL; + m_text = NULL; + m_list = NULL; + m_check = NULL; + m_static = NULL; + m_upDirButton = NULL; + m_newDirButton = NULL; +} + wxGenericFileDialog::wxGenericFileDialog(wxWindow *parent, const wxString& message, const wxString& defaultDir, const wxString& defaultFile, const wxString& wildCard, - long style, + long style, const wxPoint& pos, - bool bypassGenericImpl ) - :wxFileDialogBase(parent, message, defaultDir, defaultFile, wildCard, style, pos) + bool bypassGenericImpl ) : wxFileDialogBase() { - m_bypassGenericImpl = bypassGenericImpl; - - if (!m_bypassGenericImpl) - Create( parent, message, defaultDir, defaultFile, wildCard, style, pos ); + Init(); + Create( parent, message, defaultDir, defaultFile, wildCard, style, pos, bypassGenericImpl ); } bool wxGenericFileDialog::Create( wxWindow *parent, const wxString& message, - const wxString& WXUNUSED(defaultDir), + const wxString& defaultDir, const wxString& defaultFile, const wxString& wildCard, - long WXUNUSED(style), - const wxPoint& pos ) + long style, + const wxPoint& pos, + bool bypassGenericImpl ) { + m_bypassGenericImpl = bypassGenericImpl; + + if (!wxFileDialogBase::Create(parent, message, defaultDir, defaultFile, + wildCard, style, pos)) + { + return false; + } + + if (m_bypassGenericImpl) + return true; + if (!wxDialog::Create( parent, wxID_ANY, message, pos, wxDefaultSize, - wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER )) + wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER )) { return false; } @@ -1129,8 +1151,13 @@ void wxGenericFileDialog::SetWildcard(const wxString& wildCard) wildFilters); wxCHECK_RET( count, wxT("wxFileDialog: bad wildcard string") ); - m_choice->Clear(); - for ( size_t n = 0; n < count; n++ ) + size_t n, old_count = m_choice->GetCount(); + for ( n = 0; n < count; n++ ) + { + delete (wxString *)m_choice->GetClientData(n); + } + + for ( n = 0; n < count; n++ ) { m_choice->Append( wildDescriptions[n], new wxString( wildFilters[n] ) ); }