]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/gtk/filepicker.h
Reapply wxWeakRef patch again
[wxWidgets.git] / include / wx / gtk / filepicker.h
index 7a9efccc5337baa3d3dae5044a8ca222cb89580f..7b5a7da72eb7bbdf6a1c31bae5d7eb70a2fdd4d7 100644 (file)
 // that GTK+ < 2.4
 #include "wx/generic/filepickerg.h"
 
 // that GTK+ < 2.4
 #include "wx/generic/filepickerg.h"
 
-
-
 //-----------------------------------------------------------------------------
 // wxFileButton and wxDirButton shared code
 // (cannot be a base class since they need to derive from wxGenericFileButton
 //  and from wxGenericDirButton classes !)
 //-----------------------------------------------------------------------------
 
 //-----------------------------------------------------------------------------
 // wxFileButton and wxDirButton shared code
 // (cannot be a base class since they need to derive from wxGenericFileButton
 //  and from wxGenericDirButton classes !)
 //-----------------------------------------------------------------------------
 
-#define FILEDIRBTN_OVERRIDES                                                        \
-    /* NULL is because of a problem with destruction order which happens      */    \
-    /* if we pass GetParent(): in fact, this GTK native implementation        */    \
-    /* needs to create the dialog in ::Create() and not for each user request */    \
-    /* in response to the user click as the generic implementation does       */    \
-    virtual wxWindow *GetDialogParent()                                             \
-    {                                                                               \
-        return NULL;                                                                \
-    }                                                                               \
-                                                                                    \
-    virtual bool Destroy()                                                          \
-    {                                                                               \
-        m_dialog->Destroy();                                                        \
-        return wxButton::Destroy();                                                 \
-    }
+#define FILEDIRBTN_OVERRIDES                                                  \
+    /* NULL is because of a problem with destruction order which happens   */ \
+    /* if we pass GetParent(): in fact, this GTK native implementation     */ \
+    /* needs to create the dialog in ::Create() and not for each user      */ \
+    /* request in response to the user click as the generic implementation */ \
+    /* does.                                                               */ \
+    virtual wxWindow *GetDialogParent()                                       \
+    {                                                                         \
+        return NULL;                                                          \
+    }                                                                         \
+                                                                              \
+    virtual bool Destroy()                                                    \
+    {                                                                         \
+        if (m_dialog)                                                         \
+            m_dialog->Destroy();                                              \
+        return wxButton::Destroy();                                           \
+    }                                                                         \
+                                                                              \
+    /* even if wx derive from wxGenericFileButton, i.e. from wxButton, our */ \
+    /* native GTK+ widget does not derive from GtkButton thus *all* uses   */ \
+    /* GTK_BUTTON(m_widget) macro done by wxButton must be bypassed to     */ \
+    /* avoid bunch of GTK+ warnings like:                                  */ \
+    /*      invalid cast from `GtkFileChooserButton' to  `GtkButton'       */ \
+    /* so, override wxButton::GTKGetWindow and return NULL as GTK+ doesn't */ \
+    /* give us access to the internal GdkWindow of a GtkFileChooserButton  */ \
+protected:                                                                    \
+    virtual GdkWindow *                                                       \
+    GTKGetWindow(wxArrayGdkWindows& WXUNUSED(windows)) const                  \
+        { return NULL; }
 
 
 //-----------------------------------------------------------------------------
 
 
 //-----------------------------------------------------------------------------
@@ -87,18 +99,6 @@ public:     // overrides
     // event handler for the click
     void OnDialogOK(wxCommandEvent &);
 
     // event handler for the click
     void OnDialogOK(wxCommandEvent &);
 
-
-public:     // some overrides
-
-    // GtkFileChooserButton does not support GTK_FILE_CHOOSER_ACTION_SAVE
-    // so we replace it with GTK_FILE_CHOOSER_ACTION_OPEN; since wxFD_SAVE
-    // is not supported, wxFD_OVERWRITE_PROMPT isn't too...
-    virtual long GetDialogStyle() const
-    {
-         return (wxGenericFileButton::GetDialogStyle() &
-                     ~(wxFD_SAVE | wxFD_OVERWRITE_PROMPT)) | wxFD_OPEN;
-    }
-
     virtual void SetPath(const wxString &str);
 
     // see macro defined above
     virtual void SetPath(const wxString &str);
 
     // see macro defined above
@@ -107,7 +107,6 @@ public:     // some overrides
 protected:
     wxDialog *m_dialog;
 
 protected:
     wxDialog *m_dialog;
 
-private:
     DECLARE_DYNAMIC_CLASS(wxFileButton)
 };
 
     DECLARE_DYNAMIC_CLASS(wxFileButton)
 };