aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPo Lu2021-11-13 15:38:12 +0800
committerPo Lu2021-11-13 15:38:12 +0800
commitdafebe37ebe08d581506864e96058807d1aec56b (patch)
tree4e40cd2d8f1089a9c88e8da0243af2ed00d1f19e /src
parentb4c6ab8cb67be4d5b3e0041981968c6cce4afe89 (diff)
downloademacs-dafebe37ebe08d581506864e96058807d1aec56b.tar.gz
emacs-dafebe37ebe08d581506864e96058807d1aec56b.zip
Use GTK native file choosers in xwidget callback
* src/xwidget.c (run_file_chooser_cb): Use GtkFileChooserNative instead.
Diffstat (limited to 'src')
-rw-r--r--src/xwidget.c20
1 files changed, 8 insertions, 12 deletions
diff --git a/src/xwidget.c b/src/xwidget.c
index e5a5d9008d5..ca0392a44d6 100644
--- a/src/xwidget.c
+++ b/src/xwidget.c
@@ -791,7 +791,7 @@ run_file_chooser_cb (WebKitWebView *webview,
791 gpointer user_data) 791 gpointer user_data)
792{ 792{
793 struct frame *f = SELECTED_FRAME (); 793 struct frame *f = SELECTED_FRAME ();
794 GtkWidget *chooser; 794 GtkFileChooserNative *chooser;
795 GtkFileFilter *filter; 795 GtkFileFilter *filter;
796 bool select_multiple_p; 796 bool select_multiple_p;
797 guint response; 797 guint response;
@@ -806,25 +806,21 @@ run_file_chooser_cb (WebKitWebView *webview,
806 if (!FRAME_WINDOW_P (f)) 806 if (!FRAME_WINDOW_P (f))
807 return TRUE; 807 return TRUE;
808 808
809 chooser = gtk_file_chooser_dialog_new ("Select file", 809 chooser = gtk_file_chooser_native_new ("Select file",
810 GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)), 810 GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
811 GTK_FILE_CHOOSER_ACTION_OPEN, 811 GTK_FILE_CHOOSER_ACTION_OPEN, "Select",
812 "Cancel", 812 "Cancel");
813 GTK_RESPONSE_CANCEL,
814 "Select",
815 GTK_RESPONSE_ACCEPT,
816 NULL);
817 filter = webkit_file_chooser_request_get_mime_types_filter (request); 813 filter = webkit_file_chooser_request_get_mime_types_filter (request);
818 select_multiple_p = webkit_file_chooser_request_get_select_multiple (request); 814 select_multiple_p = webkit_file_chooser_request_get_select_multiple (request);
819 815
820 gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (chooser), 816 gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (chooser),
821 select_multiple_p); 817 select_multiple_p);
822 gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter); 818 gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter);
823 response = gtk_dialog_run (GTK_DIALOG (chooser)); 819 response = gtk_native_dialog_run (GTK_NATIVE_DIALOG (chooser));
824 820
825 if (response == GTK_RESPONSE_CANCEL) 821 if (response != GTK_RESPONSE_ACCEPT)
826 { 822 {
827 gtk_widget_destroy (chooser); 823 gtk_native_dialog_destroy (GTK_NATIVE_DIALOG (chooser));
828 webkit_file_chooser_request_cancel (request); 824 webkit_file_chooser_request_cancel (request);
829 825
830 return TRUE; 826 return TRUE;
@@ -844,7 +840,7 @@ run_file_chooser_cb (WebKitWebView *webview,
844 for (i = 0; i < len; ++i) 840 for (i = 0; i < len; ++i)
845 g_free (files[i]); 841 g_free (files[i]);
846 842
847 gtk_widget_destroy (chooser); 843 gtk_native_dialog_destroy (GTK_NATIVE_DIALOG (chooser));
848 844
849 return TRUE; 845 return TRUE;
850} 846}