diff -r 691b13b22239 -r 1788230a5ef3 pidgin/gtkutils.c --- a/pidgin/gtkutils.c Fri Oct 04 03:36:29 2019 +0000 +++ b/pidgin/gtkutils.c Fri Oct 04 03:46:50 2019 +0000 @@ -108,7 +108,7 @@ } PidginCompletionData; struct _icon_chooser { - GtkWidget *icon_filesel; + GtkFileChooserNative *icon_filesel; GtkWidget *icon_preview; GtkWidget *icon_text; @@ -1893,10 +1893,6 @@ char *filename, *current_folder; if (response != GTK_RESPONSE_ACCEPT) { - if (response == GTK_RESPONSE_CANCEL) { - gtk_widget_destroy(dialog->icon_filesel); - } - dialog->icon_filesel = NULL; if (dialog->callback) dialog->callback(NULL, dialog->data); g_free(dialog); @@ -1913,7 +1909,6 @@ if (dialog->callback) dialog->callback(filename, dialog->data); - gtk_widget_destroy(dialog->icon_filesel); g_free(filename); g_free(dialog); } @@ -1957,8 +1952,11 @@ g_free(markup); } - -GtkWidget *pidgin_buddy_icon_chooser_new(GtkWindow *parent, void(*callback)(const char *, gpointer), gpointer data) { +GtkFileChooserNative * +pidgin_buddy_icon_chooser_new(GtkWindow *parent, + void (*callback)(const char *, gpointer), + gpointer data) +{ struct _icon_chooser *dialog = g_new0(struct _icon_chooser, 1); GtkWidget *vbox; @@ -1969,13 +1967,9 @@ current_folder = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/filelocations/last_icon_folder"); - dialog->icon_filesel = gtk_file_chooser_dialog_new(_("Buddy Icon"), - parent, - GTK_FILE_CHOOSER_ACTION_OPEN, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, - NULL); - gtk_dialog_set_default_response(GTK_DIALOG(dialog->icon_filesel), GTK_RESPONSE_ACCEPT); + dialog->icon_filesel = gtk_file_chooser_native_new( + _("Buddy Icon"), parent, GTK_FILE_CHOOSER_ACTION_OPEN, _("_Open"), + _("_Cancel")); if ((current_folder != NULL) && (*current_folder != '\0')) gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog->icon_filesel), current_folder); @@ -1999,11 +1993,6 @@ G_CALLBACK(icon_filesel_choose_cb), dialog); icon_preview_change_cb(NULL, dialog); -#ifdef _WIN32 - g_signal_connect(G_OBJECT(dialog->icon_filesel), "show", - G_CALLBACK(winpidgin_ensure_onscreen), dialog->icon_filesel); -#endif - return dialog->icon_filesel; }