}
}
-static void wxInsertChildInFileDialog(wxWindow* parent, wxWindow* child)
+void wxFileDialog::AddChildGTK(wxWindowGTK* child)
{
g_signal_connect_after(child->m_widget, "size_request",
G_CALLBACK(extra_widget_size_request), child);
gtk_file_chooser_set_extra_widget(
- GTK_FILE_CHOOSER(parent->m_widget), child->m_widget);
+ GTK_FILE_CHOOSER(m_widget), child->m_widget);
}
//-----------------------------------------------------------------------------
const wxString& name)
: wxFileDialogBase()
{
- m_insertCallback = wxInsertChildInFileDialog;
parent = GetParentForModalDialog(parent);
if (!wxFileDialogBase::Create(parent, message, defaultDir, defaultFileName,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
ok_btn_stock, GTK_RESPONSE_ACCEPT,
NULL);
+ g_object_ref(m_widget);
GtkFileChooser* file_chooser = GTK_FILE_CHOOSER(m_widget);
m_fc.SetWidget(file_chooser);
}
}
+wxFileDialog::~wxFileDialog()
+{
+ if (m_extraControl)
+ {
+ // get chooser to drop its reference right now, allowing wxWindow dtor
+ // to verify that ref count drops to zero
+ gtk_file_chooser_set_extra_widget(
+ GTK_FILE_CHOOSER(m_widget), NULL);
+ }
+}
+
void wxFileDialog::OnFakeOk(wxCommandEvent& WXUNUSED(event))
{
EndDialog(wxID_OK);
wxString wxFileDialog::GetPath() const
{
- return m_fc.GetPath();
+ wxFileName fn = m_fc.GetPath();
+
+ if (HasFdFlag(wxFD_SAVE))
+ {
+ // add extension
+ if (!fn.HasExt())
+ {
+ wxFileName wildcard( "/dummy", m_fc.GetCurrentWildCard() );
+ wxString ext = wildcard.GetExt();
+ if (!ext.empty() && (ext.Find('?') == wxNOT_FOUND) && (ext.Find('*') == wxNOT_FOUND))
+ fn.SetExt( ext );
+ }
+ }
+
+ return fn.GetFullPath();
}
void wxFileDialog::GetFilenames(wxArrayString& files) const