]> git.saurik.com Git - wxWidgets.git/commitdiff
Initialize picker style in native GTK file/dir pickers.
authorVadim Zeitlin <vadim@wxwidgets.org>
Tue, 16 Mar 2010 00:23:57 +0000 (00:23 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Tue, 16 Mar 2010 00:23:57 +0000 (00:23 +0000)
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
include/wx/gtk/filepicker.h

index 5ab51d7b329065b524345ad248b24da11f0737f6..7469df9137863de52ece4c40d45add230a18aedf 100644 (file)
@@ -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 )
index 8b92ee6d0a258c4a278aef4167e9a4da35ce0e0b..2276335e9127cc53c70901e5f1f84320143c5849 100644 (file)
@@ -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);
     }