Merged in default (pull request #577)
Switch to native file chooser dialog
Approved-by: Gary Kramlich
--- a/meson.build Fri Oct 04 03:36:29 2019 +0000
+++ b/meson.build Fri Oct 04 03:46:50 2019 +0000
@@ -301,7 +301,7 @@
# Check Pidgin dependencies
# #######################################################################
- gtk = dependency('gtk+-3.0', version : '>= 3.18.0')
+ gtk = dependency('gtk+-3.0', version : '>= 3.20.0') talkatu_dep = dependency('talkatu', version: '>=0.1.0', required : false)
--- a/pidgin/gtkaccount.c Fri Oct 04 03:36:29 2019 +0000
+++ b/pidgin/gtkaccount.c Fri Oct 04 03:46:50 2019 +0000
@@ -125,7 +125,7 @@
- GtkWidget *icon_filesel;
+ GtkFileChooserNative *icon_filesel; @@ -340,14 +340,14 @@
set_dialog_icon(dialog, data, len, g_strdup(filename));
- dialog->icon_filesel = NULL;
+ g_clear_object(&dialog->icon_filesel); icon_select_cb(GtkWidget *button, AccountPrefsDialog *dialog)
dialog->icon_filesel = pidgin_buddy_icon_chooser_new(GTK_WINDOW(dialog->window), icon_filesel_choose_cb, dialog);
- gtk_widget_show_all(dialog->icon_filesel);
+ gtk_native_dialog_show(GTK_NATIVE_DIALOG(dialog->icon_filesel)); @@ -1258,8 +1258,7 @@
g_object_unref(dialog->icon_img);
- if (dialog->icon_filesel)
- gtk_widget_destroy(dialog->icon_filesel);
+ g_clear_object(&dialog->icon_filesel); purple_signals_disconnect_by_handle(dialog);
--- a/pidgin/gtkblist.c Fri Oct 04 03:36:29 2019 +0000
+++ b/pidgin/gtkblist.c Fri Oct 04 03:46:50 2019 +0000
@@ -1680,15 +1680,21 @@
purple_buddy_icons_node_set_custom_icon_from_file(node,
+ g_object_set_data(G_OBJECT(data), "buddy-icon-chooser", NULL); set_node_custom_icon(GtkWidget *w, PurpleBlistNode *node)
- /* This doesn't keep track of the returned dialog (so that successive
- * calls could be made to re-display that dialog). Do we want that? */
- GtkWidget *win = pidgin_buddy_icon_chooser_new(NULL, set_node_custom_icon_cb, node);
- gtk_widget_show_all(win);
+ GtkFileChooserNative *win = + g_object_get_data(G_OBJECT(node), "buddy-icon-chooser"); + win = pidgin_buddy_icon_chooser_new(NULL, set_node_custom_icon_cb, + g_object_set_data_full(G_OBJECT(node), "buddy-icon-chooser", win, + gtk_native_dialog_show(GTK_NATIVE_DIALOG(win)); --- a/pidgin/gtkconv.c Fri Oct 04 03:36:29 2019 +0000
+++ b/pidgin/gtkconv.c Fri Oct 04 03:46:50 2019 +0000
@@ -2235,31 +2235,32 @@
custom_icon_sel_cb(const char *filename, gpointer data)
- PurpleContact *contact;
- PidginConversation *gtkconv = data;
- PurpleConversation *conv = gtkconv->active_conv;
- PurpleAccount *account = purple_conversation_get_account(conv);
- name = purple_conversation_get_name(conv);
- buddy = purple_blist_find_buddy(account, name);
- purple_debug_info("custom-icon", "You can only set custom icons for people on your buddylist.\n");
- contact = purple_buddy_get_contact(buddy);
+ PurpleContact *contact = data; purple_buddy_icons_node_set_custom_icon_from_file((PurpleBlistNode*)contact, filename);
-set_custom_icon_cb(GtkWidget *widget, PidginConversation *gtkconv)
- GtkWidget *win = pidgin_buddy_icon_chooser_new(GTK_WINDOW(gtkconv->win->window),
- custom_icon_sel_cb, gtkconv);
- gtk_widget_show_all(win);
+ g_object_set_data(G_OBJECT(data), "buddy-icon-chooser", NULL); +set_custom_icon_cb(GtkWidget *widget, PurpleContact *contact) + GtkFileChooserNative *win = NULL; + /* Should not happen as menu item should be disabled. */ + g_return_if_fail(contact != NULL); + win = g_object_get_data(G_OBJECT(contact), "buddy-icon-chooser"); + GtkMenu *menu = GTK_MENU(gtk_widget_get_parent(widget)); + gtk_widget_get_toplevel(gtk_menu_get_attach_widget(menu)); + win = pidgin_buddy_icon_chooser_new(GTK_WINDOW(toplevel), + custom_icon_sel_cb, contact); + g_object_set_data_full(G_OBJECT(contact), "buddy-icon-chooser", win, + (GDestroyNotify)g_object_unref); + gtk_native_dialog_show(GTK_NATIVE_DIALOG(win)); @@ -2354,7 +2355,8 @@
icon_menu(GtkWidget *widget, GdkEventButton *e, PidginConversation *gtkconv)
- static GtkWidget *menu = NULL;
+ GtkWidget *menu = NULL; + GList *old_menus = NULL; PurpleConversation *conv;
@@ -2371,10 +2373,14 @@
* If a menu already exists, destroy it before creating a new one,
* thus freeing-up the memory it occupied.
+ while ((old_menus = gtk_menu_get_for_attach_widget(widget)) != NULL) { + menu = old_menus->data; + gtk_menu_detach(GTK_MENU(menu)); gtk_widget_destroy(menu);
+ gtk_menu_attach_to_widget(GTK_MENU(menu), widget, NULL); if (gtkconv->u.im->anim &&
!(gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)))
@@ -2384,22 +2390,31 @@
gtkconv->u.im->icon_timer);
+ conv = gtkconv->active_conv; + buddy = purple_blist_find_buddy(purple_conversation_get_account(conv), + purple_conversation_get_name(conv)); pidgin_new_menu_item(menu, _("Hide Icon"), NULL,
G_CALLBACK(remove_icon), gtkconv);
pidgin_new_menu_item(menu, _("Save Icon As..."), GTK_STOCK_SAVE_AS,
G_CALLBACK(icon_menu_save_cb), gtkconv);
- pidgin_new_menu_item(menu, _("Set Custom Icon..."), NULL,
- G_CALLBACK(set_custom_icon_cb), gtkconv);
+ PurpleContact *contact = purple_buddy_get_contact(buddy); + pidgin_new_menu_item(menu, _("Set Custom Icon..."), NULL, + G_CALLBACK(set_custom_icon_cb), contact); + pidgin_new_menu_item(menu, _("Set Custom Icon..."), NULL, + G_CALLBACK(set_custom_icon_cb), NULL); + gtk_widget_set_sensitive(item, FALSE); pidgin_new_menu_item(menu, _("Change Size"), NULL,
G_CALLBACK(change_size_cb), gtkconv);
/* Is there a custom icon for this person? */
- conv = gtkconv->active_conv;
- buddy = purple_blist_find_buddy(purple_conversation_get_account(conv),
- purple_conversation_get_name(conv));
PurpleContact *contact = purple_buddy_get_contact(buddy);
--- a/pidgin/gtkrequest.c Fri Oct 04 03:36:29 2019 +0000
+++ b/pidgin/gtkrequest.c Fri Oct 04 03:46:50 2019 +0000
@@ -44,7 +44,8 @@
+ /* May be GtkWidget or GtkNativeDialog */ @@ -2346,27 +2347,10 @@
-file_yes_no_cb(PidginRequestData *data, gint id)
- /* Only call the callback if yes was selected, otherwise the request
- * (eg. file transfer) will be cancelled, then when a new filename is chosen
- if (data->cbs[1] != NULL)
- ((PurpleRequestFileCb)data->cbs[1])(data->user_data, data->u.file.name);
- purple_request_close(data->type, data);
- pidgin_clear_cursor(GTK_WIDGET(data->dialog));
file_ok_check_if_exists_cb(GtkWidget *widget, gint response, PidginRequestData *data)
- generic_response_start(data);
if (response != GTK_RESPONSE_ACCEPT) {
if (data->cbs[0] != NULL)
((PurpleRequestFileCb)data->cbs[0])(data->user_data, NULL);
@@ -2384,16 +2368,10 @@
- if ((data->u.file.savedialog == TRUE) &&
- (g_file_test(data->u.file.name, G_FILE_TEST_EXISTS))) {
- purple_request_action(data, NULL, _("That file already exists"),
- _("Would you like to overwrite it?"), 0,
- _("Overwrite"), G_CALLBACK(file_yes_no_cb),
- _("Choose New Name"), G_CALLBACK(file_yes_no_cb));
- file_yes_no_cb(data, 1);
+ if (data->cbs[1] != NULL) { + ((PurpleRequestFileCb)data->cbs[1])(data->user_data, data->u.file.name); + purple_request_close(data->type, data); @@ -2402,7 +2380,7 @@
PurpleRequestCommonParameters *cpar, void *user_data)
+ GtkFileChooserNative *filesel; const gchar *current_folder;
gboolean folder_set = FALSE;
@@ -2417,20 +2395,15 @@
data->u.file.savedialog = savedialog;
- filesel = gtk_file_chooser_dialog_new(
- title ? title : (savedialog ? _("Save File...")
- savedialog ? GTK_FILE_CHOOSER_ACTION_SAVE
- : GTK_FILE_CHOOSER_ACTION_OPEN,
- _("_Cancel"), GTK_RESPONSE_CANCEL,
- savedialog ? _("_Save")
- gtk_dialog_set_default_response(GTK_DIALOG(filesel), GTK_RESPONSE_ACCEPT);
- pidgin_request_add_help(GTK_DIALOG(filesel), cpar);
+ filesel = gtk_file_chooser_native_new( + : (savedialog ? _("Save File...") : _("Open File...")), + savedialog ? GTK_FILE_CHOOSER_ACTION_SAVE + : GTK_FILE_CHOOSER_ACTION_OPEN, + savedialog ? _("_Save") : _("_Open"), _("_Cancel")); + gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(filesel), if ((filename != NULL) && (*filename != '\0')) {
@@ -2466,10 +2439,13 @@
g_signal_connect(G_OBJECT(GTK_FILE_CHOOSER(filesel)), "response",
G_CALLBACK(file_ok_check_if_exists_cb), data);
+ /* FIXME: Not implemented for native dialogs. */ pidgin_auto_parent_window(filesel);
- gtk_widget_show(filesel);
+ gtk_native_dialog_show(GTK_NATIVE_DIALOG(filesel)); @@ -2480,7 +2456,7 @@
+ GtkFileChooserNative *dirsel; data = g_new0(PidginRequestData, 1);
data->type = PURPLE_REQUEST_FOLDER;
@@ -2491,16 +2467,9 @@
data->u.file.savedialog = FALSE;
- dirsel = gtk_file_chooser_dialog_new(
- title ? title : _("Select Folder..."),
- GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
- _("_Cancel"), GTK_RESPONSE_CANCEL,
- _("_OK"), GTK_RESPONSE_ACCEPT,
- gtk_dialog_set_default_response(GTK_DIALOG(dirsel), GTK_RESPONSE_ACCEPT);
- pidgin_request_add_help(GTK_DIALOG(dirsel), cpar);
+ dirsel = gtk_file_chooser_native_new( + title ? title : _("Select Folder..."), NULL, + GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, _("_OK"), _("_Cancel")); if ((dirname != NULL) && (*dirname != '\0'))
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dirsel), dirname);
@@ -2509,9 +2478,12 @@
G_CALLBACK(file_ok_check_if_exists_cb), data);
+ /* FIXME: Not implemented for native dialogs. */ pidgin_auto_parent_window(dirsel);
- gtk_widget_show(dirsel);
+ gtk_native_dialog_show(GTK_NATIVE_DIALOG(dirsel)); @@ -2551,9 +2523,14 @@
- pidgin_window_detach_children(GTK_WINDOW(data->dialog));
- gtk_widget_destroy(data->dialog);
+ if (type == PURPLE_REQUEST_FILE || type == PURPLE_REQUEST_FOLDER) { + /* Will be a GtkNativeDialog, not GtkDialog. */ + g_object_unref(data->dialog); + pidgin_window_detach_children(GTK_WINDOW(data->dialog)); + gtk_widget_destroy(data->dialog); if (type == PURPLE_REQUEST_FIELDS)
purple_request_fields_destroy(data->u.multifield.fields);
@@ -2571,6 +2548,13 @@
purple_request_is_valid_ui_handle(data, NULL), NULL);
+ if (data->type == PURPLE_REQUEST_FILE || + data->type == PURPLE_REQUEST_FOLDER) { + /* Not a GtkWidget, but a GtkFileChooserNative. Eventually this function + * should not be needed, once we don't need to auto-parent. */ return GTK_WINDOW(data->dialog);
--- a/pidgin/gtksmiley-manager.c Fri Oct 04 03:36:29 2019 +0000
+++ b/pidgin/gtksmiley-manager.c Fri Oct 04 03:46:50 2019 +0000
@@ -180,14 +180,15 @@
edit_dialog_image_choose(GtkWidget *widget, gpointer _edit_dialog)
- GtkWidget *file_chooser;
+ GtkFileChooserNative *file_chooser; file_chooser = pidgin_buddy_icon_chooser_new(
GTK_WINDOW(gtk_widget_get_toplevel(widget)),
edit_dialog_image_choosen, _edit_dialog);
gtk_window_set_title(GTK_WINDOW(file_chooser), _("Custom Smiley"));
gtk_window_set_role(GTK_WINDOW(file_chooser),
"file-selector-custom-smiley");
- gtk_widget_show_all(file_chooser);
+ gtk_native_dialog_run(GTK_NATIVE_DIALOG(file_chooser)); + g_object_unref(file_chooser); --- a/pidgin/gtkstatusbox.c Fri Oct 04 03:36:29 2019 +0000
+++ b/pidgin/gtkstatusbox.c Fri Oct 04 03:46:50 2019 +0000
@@ -445,7 +445,7 @@
g_clear_object(&statusbox->buddy_icon);
g_clear_object(&statusbox->buddy_icon_hover);
- g_clear_pointer(&statusbox->buddy_icon_sel, gtk_widget_destroy);
+ g_clear_object(&statusbox->buddy_icon_sel); g_clear_pointer(&statusbox->icon_box_menu, gtk_widget_destroy);
@@ -1410,12 +1410,10 @@
choose_buddy_icon_cb(GtkWidget *w, PidginStatusBox *box)
- if (box->buddy_icon_sel) {
- gtk_window_present(GTK_WINDOW(box->buddy_icon_sel));
+ if (box->buddy_icon_sel == NULL) { box->buddy_icon_sel = pidgin_buddy_icon_chooser_new(GTK_WINDOW(gtk_widget_get_toplevel(w)), icon_choose_cb, box);
- gtk_widget_show_all(box->buddy_icon_sel);
+ gtk_native_dialog_show(GTK_NATIVE_DIALOG(box->buddy_icon_sel)); @@ -1430,7 +1428,7 @@
buddy_icon_set_cb(filename, box);
- box->buddy_icon_sel = NULL;
+ g_clear_object(&box->buddy_icon_sel); --- a/pidgin/gtkstatusbox.h Fri Oct 04 03:36:29 2019 +0000
+++ b/pidgin/gtkstatusbox.h Fri Oct 04 03:46:50 2019 +0000
@@ -98,7 +98,7 @@
PurpleImage *buddy_icon_img;
GdkPixbuf *buddy_icon_hover;
- GtkWidget *buddy_icon_sel;
+ GtkFileChooserNative *buddy_icon_sel; GtkWidget *icon_box_menu;
--- 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 @@
- GtkWidget *icon_filesel;
+ GtkFileChooserNative *icon_filesel; @@ -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;
dialog->callback(NULL, dialog->data);
@@ -1913,7 +1909,6 @@
dialog->callback(filename, dialog->data);
- gtk_widget_destroy(dialog->icon_filesel);
@@ -1957,8 +1952,11 @@
-GtkWidget *pidgin_buddy_icon_chooser_new(GtkWindow *parent, void(*callback)(const char *, gpointer), gpointer data) {
+pidgin_buddy_icon_chooser_new(GtkWindow *parent, + void (*callback)(const char *, gpointer), struct _icon_chooser *dialog = g_new0(struct _icon_chooser, 1);
@@ -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"),
- GTK_FILE_CHOOSER_ACTION_OPEN,
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
- GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
- 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"), if ((current_folder != NULL) && (*current_folder != '\0'))
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog->icon_filesel),
@@ -1999,11 +1993,6 @@
G_CALLBACK(icon_filesel_choose_cb), dialog);
icon_preview_change_cb(NULL, dialog);
- g_signal_connect(G_OBJECT(dialog->icon_filesel), "show",
- G_CALLBACK(winpidgin_ensure_onscreen), dialog->icon_filesel);
return dialog->icon_filesel;
--- a/pidgin/gtkutils.h Fri Oct 04 03:36:29 2019 +0000
+++ b/pidgin/gtkutils.h Fri Oct 04 03:46:50 2019 +0000
@@ -538,7 +538,9 @@
* Returns: (transfer full): The file dialog
-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), * pidgin_convert_buddy_icon:
--- a/pidgin/gtkwhiteboard.c Fri Oct 04 03:36:29 2019 +0000
+++ b/pidgin/gtkwhiteboard.c Fri Oct 04 03:46:50 2019 +0000
@@ -499,28 +499,23 @@
PidginWhiteboard *gtkwb = _gtkwb;
+ GtkFileChooserNative *chooser; - dialog = gtk_file_chooser_dialog_new(
- _("Save File"), GTK_WINDOW(gtkwb), GTK_FILE_CHOOSER_ACTION_SAVE,
- _("_Cancel"), GTK_RESPONSE_CANCEL, _("_Save"),
- GTK_RESPONSE_ACCEPT, NULL);
+ chooser = gtk_file_chooser_native_new(_("Save File"), GTK_WINDOW(gtkwb), + GTK_FILE_CHOOSER_ACTION_SAVE, + _("_Save"), _("_Cancel")); - gtk_file_chooser_set_do_overwrite_confirmation(
- GTK_FILE_CHOOSER(dialog), TRUE);
+ gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(chooser), + gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(chooser), - gtk_file_chooser_set_current_name(
- GTK_FILE_CHOOSER(dialog), "whiteboard.png");
- result = gtk_dialog_run(GTK_DIALOG(dialog));
+ result = gtk_native_dialog_run(GTK_NATIVE_DIALOG(chooser)); if (result == GTK_RESPONSE_ACCEPT) {
- gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
- gtk_widget_destroy(dialog);
+ gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(chooser)); pixbuf = gdk_pixbuf_get_from_surface(
gtkwb->surface, 0, 0, gtkwb->width, gtkwb->height);
@@ -538,8 +533,9 @@
"couldn't be saved to \"%s\"", filename);
- } else if (result == GTK_RESPONSE_CANCEL)
- gtk_widget_destroy(dialog);
+ g_object_unref(chooser); --- a/pidgin/resources/About/about.ui Fri Oct 04 03:36:29 2019 +0000
+++ b/pidgin/resources/About/about.ui Fri Oct 04 03:46:50 2019 +0000
@@ -2,7 +2,7 @@
<!-- Generated with glade 3.22.1 -->
<requires lib="Talkatu" version="0.0"/>
- <requires lib="gtk+" version="3.18"/>
+ <requires lib="gtk+" version="3.20"/> <object class="GtkTreeStore" id="build_info_store">
<!-- column-name title -->
--- a/pidgin/resources/Accounts/chooser.ui Fri Oct 04 03:36:29 2019 +0000
+++ b/pidgin/resources/Accounts/chooser.ui Fri Oct 04 03:46:50 2019 +0000
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
- <requires lib="gtk+" version="3.18"/>
+ <requires lib="gtk+" version="3.20"/> <object class="GtkListStore" id="model">
<!-- column-name icon -->
--- a/pidgin/resources/Conversations/invite_dialog.ui Fri Oct 04 03:36:29 2019 +0000
+++ b/pidgin/resources/Conversations/invite_dialog.ui Fri Oct 04 03:46:50 2019 +0000
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
- <requires lib="gtk+" version="3.18"/>
+ <requires lib="gtk+" version="3.20"/> <template class="PidginInviteDialog" parent="GtkDialog">
<property name="can_focus">False</property>
<property name="border_width">6</property>
--- a/pidgin/resources/Debug/debug.ui Fri Oct 04 03:36:29 2019 +0000
+++ b/pidgin/resources/Debug/debug.ui Fri Oct 04 03:46:50 2019 +0000
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
- <requires lib="gtk+" version="3.18"/>
+ <requires lib="gtk+" version="3.20"/> <object class="GtkTextTagTable" id="message-format">
<object class="GtkTextTag" id="tags.level[0]">
--- a/pidgin/resources/Debug/plugininfo.ui Fri Oct 04 03:36:29 2019 +0000
+++ b/pidgin/resources/Debug/plugininfo.ui Fri Oct 04 03:46:50 2019 +0000
@@ -2,7 +2,7 @@
<!-- Generated with glade 3.22.1 -->
<requires lib="Talkatu" version="0.0"/>
- <requires lib="gtk+" version="3.18"/>
+ <requires lib="gtk+" version="3.20"/> <!-- interface-local-resource-path ../ -->
<object class="TalkatuHtmlBuffer" id="buffer"/>
<template class="PidginDebugPluginInfo" parent="GtkDialog">
--- a/pidgin/resources/Log/log-viewer.ui Fri Oct 04 03:36:29 2019 +0000
+++ b/pidgin/resources/Log/log-viewer.ui Fri Oct 04 03:46:50 2019 +0000
@@ -2,7 +2,7 @@
<!-- Generated with glade 3.22.1 -->
<requires lib="Talkatu" version="0.0"/>
- <requires lib="gtk+" version="3.18"/>
+ <requires lib="gtk+" version="3.20"/> <object class="TalkatuHtmlBuffer" id="log_buffer"/>
<object class="GtkTreeStore" id="treestore">
--- a/pidgin/resources/Prefs/prefs.ui Fri Oct 04 03:36:29 2019 +0000
+++ b/pidgin/resources/Prefs/prefs.ui Fri Oct 04 03:46:50 2019 +0000
@@ -2,7 +2,7 @@
<!-- Generated with glade 3.22.1 -->
<requires lib="Talkatu" version="0.0"/>
- <requires lib="gtk+" version="3.18"/>
+ <requires lib="gtk+" version="3.20"/> <object class="GtkListStore" id="away.auto_reply.store">
<!-- column-name text -->
--- a/pidgin/resources/Prefs/vv.ui Fri Oct 04 03:36:29 2019 +0000
+++ b/pidgin/resources/Prefs/vv.ui Fri Oct 04 03:46:50 2019 +0000
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
- <requires lib="gtk+" version="3.18"/>
+ <requires lib="gtk+" version="3.20"/> <object class="GtkAdjustment" id="adjustment1">
<property name="upper">100</property>
<property name="step_increment">1</property>
--- a/pidgin/resources/Whiteboard/whiteboard.ui Fri Oct 04 03:36:29 2019 +0000
+++ b/pidgin/resources/Whiteboard/whiteboard.ui Fri Oct 04 03:46:50 2019 +0000
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
- <requires lib="gtk+" version="3.18"/>
+ <requires lib="gtk+" version="3.20"/> <template class="PidginWhiteboard" parent="GtkWindow">
<property name="can_focus">False</property>
<property name="title" translatable="yes">Pidgin Whiteboard</property>
--- a/pidgin/resources/Xfer/xfer.ui Fri Oct 04 03:36:29 2019 +0000
+++ b/pidgin/resources/Xfer/xfer.ui Fri Oct 04 03:46:50 2019 +0000
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
- <requires lib="gtk+" version="3.10"/>
+ <requires lib="gtk+" version="3.20"/> <object class="GtkListStore" id="model">
<!-- column-name status -->