summaryrefslogtreecommitdiffstats
path: root/WebCore/platform/gtk/FileChooserGtk.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/platform/gtk/FileChooserGtk.cpp')
-rw-r--r--WebCore/platform/gtk/FileChooserGtk.cpp61
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);
}