From 459128ac884dfae79a5cbb3dd93e83a322cb1acc Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 16 Mar 2010 00:23:57 +0000 Subject: [PATCH] Initialize picker style in native GTK file/dir pickers. This fixes the styles used in the native wxGTK version after changes in r63654: we must initialize base class m_pickerStyle now and the code didn't do this before resulting in various asserts and incorrect behaviour. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63690 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/generic/filepickerg.h | 15 ++++++++++++--- include/wx/gtk/filepicker.h | 11 +++++++++-- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/include/wx/generic/filepickerg.h b/include/wx/generic/filepickerg.h index 5ab51d7b32..7469df9137 100644 --- a/include/wx/generic/filepickerg.h +++ b/include/wx/generic/filepickerg.h @@ -29,7 +29,7 @@ class WXDLLIMPEXP_CORE wxGenericFileDirButton : public wxButton, public wxFileDirPickerWidgetBase { public: - wxGenericFileDirButton() { } + wxGenericFileDirButton() { Init(); } wxGenericFileDirButton(wxWindow *parent, wxWindowID id, const wxString& label = wxFilePickerWidgetLabel, @@ -42,12 +42,11 @@ public: const wxValidator& validator = wxDefaultValidator, const wxString& name = wxFilePickerWidgetNameStr) { + Init(); Create(parent, id, label, path, message, wildcard, pos, size, style, validator, name); } - virtual ~wxGenericFileDirButton() {} - virtual wxControl *AsControl() { return this; } public: // overrideable @@ -82,6 +81,10 @@ protected: // wxButton as some of our bits can conflict with wxButton styles and it // just doesn't make sense to use picker styles for wxButton anyhow long m_pickerStyle; + +private: + // common part of all ctors + void Init() { m_pickerStyle = -1; } }; @@ -115,6 +118,12 @@ public: // overrideable virtual long GetDialogStyle() const { + // the derived class must initialize it if it doesn't use the + // non-default wxGenericFileDirButton ctor + wxASSERT_MSG( m_pickerStyle != -1, + "forgot to initialize m_pickerStyle?" ); + + long filedlgstyle = 0; if ( m_pickerStyle & wxFLP_OPEN ) diff --git a/include/wx/gtk/filepicker.h b/include/wx/gtk/filepicker.h index 8b92ee6d0a..2276335e91 100644 --- a/include/wx/gtk/filepicker.h +++ b/include/wx/gtk/filepicker.h @@ -61,7 +61,7 @@ protected: \ class WXDLLIMPEXP_CORE wxFileButton : public wxGenericFileButton { public: - wxFileButton() { m_dialog = NULL; } + wxFileButton() { Init(); } wxFileButton(wxWindow *parent, wxWindowID id, const wxString& label = wxFilePickerWidgetLabel, @@ -74,7 +74,8 @@ public: const wxValidator& validator = wxDefaultValidator, const wxString& name = wxFilePickerWidgetNameStr) { - m_dialog = NULL; + Init(); + m_pickerStyle = style; Create(parent, id, label, path, message, wildcard, pos, size, style, validator, name); } @@ -109,6 +110,10 @@ protected: wxDialog *m_dialog; +private: + // common part of all ctors + void Init() { m_dialog = NULL; } + DECLARE_DYNAMIC_CLASS(wxFileButton) }; @@ -134,6 +139,8 @@ public: { Init(); + m_pickerStyle = style; + Create(parent, id, label, path, message, wxEmptyString, pos, size, style, validator, name); } -- 2.45.2