X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ed9b9841b32afa2e97353263e3563b4387e2fe0e..910484a67ddd6eac7c2ec947fc9e2e71f95abb6e:/src/gtk1/filedlg.cpp diff --git a/src/gtk1/filedlg.cpp b/src/gtk1/filedlg.cpp index fa6d087c99..086a593ef5 100644 --- a/src/gtk1/filedlg.cpp +++ b/src/gtk1/filedlg.cpp @@ -18,6 +18,13 @@ #include "gtk/gtk.h" +//----------------------------------------------------------------------------- +// idle system +//----------------------------------------------------------------------------- + +extern void wxapp_install_idle_handler(); +extern bool g_isIdle; + //----------------------------------------------------------------------------- // "delete_event" //----------------------------------------------------------------------------- @@ -25,6 +32,8 @@ static bool gtk_filedialog_delete_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WXUNUSED(event), wxDialog *win ) { + if (g_isIdle) wxapp_install_idle_handler(); + /* printf( "OnDelete from " ); if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) @@ -44,6 +53,8 @@ bool gtk_filedialog_delete_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WXUN static void gtk_filedialog_ok_callback( GtkWidget *WXUNUSED(widget), wxFileDialog *dialog ) { + if (g_isIdle) wxapp_install_idle_handler(); + int style = dialog->GetStyle(); GtkFileSelection *filedlg = GTK_FILE_SELECTION(dialog->m_widget); @@ -85,6 +96,8 @@ void gtk_filedialog_ok_callback( GtkWidget *WXUNUSED(widget), wxFileDialog *dial static void gtk_filedialog_cancel_callback( GtkWidget *WXUNUSED(w), wxFileDialog *dialog ) { + if (g_isIdle) wxapp_install_idle_handler(); + wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL); event.SetEventObject( dialog ); dialog->GetEventHandler()->ProcessEvent( event ); @@ -132,13 +145,13 @@ wxFileDialog::wxFileDialog( wxWindow *parent, const wxString& message, GTK_SIGNAL_FUNC(gtk_filedialog_ok_callback), (gpointer*)this ); // strange way to internationalize - gtk_label_set( GTK_LABEL( GTK_BUTTON(sel->ok_button)->child ), wxConv_current->cWX2MB(_("OK")) ); + gtk_label_set( GTK_LABEL( GTK_BUTTON(sel->ok_button)->child ), wxConvCurrent->cWX2MB(_("OK")) ); gtk_signal_connect( GTK_OBJECT(sel->cancel_button), "clicked", GTK_SIGNAL_FUNC(gtk_filedialog_cancel_callback), (gpointer*)this ); // strange way to internationalize - gtk_label_set( GTK_LABEL( GTK_BUTTON(sel->cancel_button)->child ), wxConv_current->cWX2MB(_("Cancel")) ); + gtk_label_set( GTK_LABEL( GTK_BUTTON(sel->cancel_button)->child ), wxConvCurrent->cWX2MB(_("Cancel")) ); gtk_signal_connect( GTK_OBJECT(m_widget), "delete_event", GTK_SIGNAL_FUNC(gtk_filedialog_delete_callback), (gpointer)this ); @@ -152,7 +165,11 @@ void wxFileDialog::SetPath(const wxString& path) { wxString ext; wxSplitPath(path, &m_dir, &m_fileName, &ext); - m_fileName += ext; + if (!ext.IsEmpty()) + { + m_fileName += _T("."); + m_fileName += ext; + } } } @@ -160,6 +177,21 @@ void wxFileDialog::SetPath(const wxString& path) // global functions // ---------------------------------------------------------------------------- +wxString +wxFileSelectorEx(const wxChar *message, + const wxChar *default_path, + const wxChar *default_filename, + int *indexDefaultExtension, + const wxChar *wildcard, + int flags, + wxWindow *parent, + int x, int y) +{ + // TODO: implement this somehow + return wxFileSelector(message, default_path, default_filename, _T(""), + wildcard, flags, parent, x, y); +} + wxString wxFileSelector( const wxChar *title, const wxChar *defaultDir, const wxChar *defaultFileName, const wxChar *defaultExtension, const wxChar *filter, int flags,