diff options
Diffstat (limited to 'WebCore/platform/gtk/FileChooserGtk.cpp')
-rw-r--r-- | WebCore/platform/gtk/FileChooserGtk.cpp | 61 |
1 files changed, 9 insertions, 52 deletions
diff --git a/WebCore/platform/gtk/FileChooserGtk.cpp b/WebCore/platform/gtk/FileChooserGtk.cpp index c41a693..e984718 100644 --- a/WebCore/platform/gtk/FileChooserGtk.cpp +++ b/WebCore/platform/gtk/FileChooserGtk.cpp @@ -28,8 +28,7 @@ #include "FileChooser.h" #include "CString.h" -#include "Document.h" -#include "FrameView.h" +#include "FileSystem.h" #include "Icon.h" #include "LocalizedStrings.h" #include "StringTruncator.h" @@ -45,52 +44,12 @@ static bool stringByAdoptingFileSystemRepresentation(gchar* systemFilename, Stri if (!systemFilename) return false; - gchar* filename = g_filename_to_utf8(systemFilename, -1, 0, 0, 0); + result = filenameToString(systemFilename); g_free(systemFilename); - if (!filename) - return false; - - result = String::fromUTF8(filename); - g_free(filename); return true; } -FileChooser::FileChooser(FileChooserClient* client, const String& filename) - : m_client(client) - , m_filename(filename) - , m_icon(chooseIcon(filename)) -{ -} - -FileChooser::~FileChooser() -{ -} - -void FileChooser::openFileChooser(Document* document) -{ - FrameView* view = document->view(); - if (!view) - return; - - GtkWidget* dialog = gtk_file_chooser_dialog_new(_("Upload File"), - GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(view->containingWindow()))), - GTK_FILE_CHOOSER_ACTION_OPEN, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, - NULL); - - // We need this protector because otherwise we can be deleted if the file upload control is detached while - // we're within the gtk_run_dialog call. - RefPtr<FileChooser> protector(this); - String result; - - const bool acceptedDialog = gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT; - if (acceptedDialog && stringByAdoptingFileSystemRepresentation(gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)), result)) - chooseFile(result); - gtk_widget_destroy(dialog); -} - String FileChooser::basenameForWidth(const Font& font, int width) const { if (width <= 0) @@ -98,15 +57,13 @@ String FileChooser::basenameForWidth(const Font& font, int width) const String string = fileButtonNoFileSelectedLabel(); - if (!m_filename.isEmpty()) { - gchar* systemFilename = g_filename_from_utf8(m_filename.utf8().data(), -1, 0, 0, 0); - if (systemFilename) { - gchar* systemBasename = g_path_get_basename(systemFilename); - g_free(systemFilename); - - stringByAdoptingFileSystemRepresentation(systemBasename, string); - } - } + if (m_filenames.size() == 1) { + gchar* systemFilename = filenameFromString(m_filenames[0]); + gchar* systemBasename = g_path_get_basename(systemFilename); + g_free(systemFilename); + stringByAdoptingFileSystemRepresentation(systemBasename, string); + } else if (m_filenames.size() > 1) + return StringTruncator::rightTruncate(multipleFileUploadText(m_filenames.size()), width, font, false); return StringTruncator::centerTruncate(string, width, font, false); } |