Title: [262483] trunk/Source/WebKit
- Revision
- 262483
- Author
- [email protected]
- Date
- 2020-06-03 03:08:21 -0700 (Wed, 03 Jun 2020)
Log Message
[GTK4] Implement file chooser
https://bugs.webkit.org/show_bug.cgi?id=212322
Patch by Santosh Mahto <[email protected]> on 2020-06-03
Reviewed by Carlos Garcia Campos.
Port FileChooser to gtk4, Now FileChooser uses undeprecated api's.
Covered by existing tests.
* UIProcess/API/gtk/WebKitWebViewGtk.cpp:
(fileChooserDialogResponseCallback):
(webkitWebViewRunFileChooser):
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (262482 => 262483)
--- trunk/Source/WebKit/ChangeLog 2020-06-03 09:12:00 UTC (rev 262482)
+++ trunk/Source/WebKit/ChangeLog 2020-06-03 10:08:21 UTC (rev 262483)
@@ -1,3 +1,17 @@
+2020-06-03 Santosh Mahto <[email protected]>
+
+ [GTK4] Implement file chooser
+ https://bugs.webkit.org/show_bug.cgi?id=212322
+
+ Reviewed by Carlos Garcia Campos.
+
+ Port FileChooser to gtk4, Now FileChooser uses undeprecated api's.
+ Covered by existing tests.
+
+ * UIProcess/API/gtk/WebKitWebViewGtk.cpp:
+ (fileChooserDialogResponseCallback):
+ (webkitWebViewRunFileChooser):
+
2020-06-03 Carlos Garcia Campos <[email protected]>
[GTK4] Implement emoji chooser
Modified: trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp (262482 => 262483)
--- trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp 2020-06-03 09:12:00 UTC (rev 262482)
+++ trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp 2020-06-03 10:08:21 UTC (rev 262483)
@@ -49,16 +49,18 @@
return TRUE;
}
-#if !USE(GTK4)
static void fileChooserDialogResponseCallback(GtkFileChooser* dialog, gint responseID, WebKitFileChooserRequest* request)
{
GRefPtr<WebKitFileChooserRequest> adoptedRequest = adoptGRef(request);
if (responseID == GTK_RESPONSE_ACCEPT) {
- GUniquePtr<GSList> filesList(gtk_file_chooser_get_filenames(dialog));
- GRefPtr<GPtrArray> filesArray = adoptGRef(g_ptr_array_new());
- for (GSList* file = filesList.get(); file; file = g_slist_next(file))
- g_ptr_array_add(filesArray.get(), file->data);
- g_ptr_array_add(filesArray.get(), 0);
+ GSList* filesList = gtk_file_chooser_get_files(dialog);
+ GRefPtr<GPtrArray> filesArray = adoptGRef(g_ptr_array_new_with_free_func(g_free));
+ for (GSList* file = filesList; file; file = g_slist_next(file)) {
+ if (gchar* filename = g_file_get_path(G_FILE(file->data)))
+ g_ptr_array_add(filesArray.get(), filename);
+ }
+ g_ptr_array_add(filesArray.get(), nullptr);
+ g_slist_free_full(filesList, g_object_unref);
webkit_file_chooser_request_select_files(adoptedRequest.get(), reinterpret_cast<const gchar* const*>(filesArray->pdata));
} else
webkit_file_chooser_request_cancel(adoptedRequest.get());
@@ -65,11 +67,9 @@
g_object_unref(dialog);
}
-#endif
gboolean webkitWebViewRunFileChooser(WebKitWebView* webView, WebKitFileChooserRequest* request)
{
-#if !USE(GTK4)
GtkWidget* toplevel = gtk_widget_get_toplevel(GTK_WIDGET(webView));
if (!WebCore::widgetIsOnscreenToplevelWindow(toplevel))
toplevel = 0;
@@ -85,13 +85,14 @@
gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(dialog), filter);
gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), allowsMultipleSelection);
- if (const gchar* const* selectedFiles = webkit_file_chooser_request_get_selected_files(request))
- gtk_file_chooser_select_filename(GTK_FILE_CHOOSER(dialog), selectedFiles[0]);
+ if (const gchar* const* selectedFiles = webkit_file_chooser_request_get_selected_files(request)) {
+ GRefPtr<GFile> file = adoptGRef(g_file_new_for_path(selectedFiles[0]));
+ gtk_file_chooser_select_file(GTK_FILE_CHOOSER(dialog), file.get(), nullptr);
+ }
g_signal_connect(dialog, "response", G_CALLBACK(fileChooserDialogResponseCallback), g_object_ref(request));
gtk_native_dialog_show(GTK_NATIVE_DIALOG(dialog));
-#endif
return TRUE;
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes