+//-----------------------------------------------------------------------------
+// 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() \
+ { \
+ 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; }
+
+