--- a/pidgin/gtkprivacy.c Mon Sep 05 20:22:34 2022 -0500
+++ b/pidgin/gtkprivacy.c Mon Sep 05 20:24:04 2022 -0500
@@ -144,7 +144,7 @@
for (i = 0; i < menu_entry_count; i++) {
if (menu_entries[i].type == purple_account_get_privacy_type(account)) {
- gtk_combo_box_set_active(GTK_COMBO_BOX(dialog->type_menu), i);
+ gtk_drop_down_set_selected(GTK_DROP_DOWN(dialog->type_menu), i); @@ -158,10 +158,10 @@
* Even better: the privacy API needs to not suck.
-type_changed_cb(GtkComboBox *combo, PidginPrivacyDialog *dialog)
+type_changed_cb(GObject *obj, G_GNUC_UNUSED GParamSpec *pspec, gpointer data) { + PidginPrivacyDialog *dialog = data; PurpleAccountPrivacyType new_type =
- menu_entries[gtk_combo_box_get_active(combo)].type;
+ menu_entries[gtk_drop_down_get_selected(GTK_DROP_DOWN(obj))].type; gboolean buttons_sensitive;
purple_account_set_privacy_type(dialog->account, new_type);
@@ -301,8 +301,8 @@
pidgin_privacy_dialog_init(PidginPrivacyDialog *dialog) {
PidginAccountChooser *chooser = NULL;
+ GtkStringList *model = NULL; + guint selected = GTK_INVALID_LIST_POSITION; gtk_widget_init_template(GTK_WIDGET(dialog));
@@ -310,20 +310,21 @@
dialog->account = pidgin_account_chooser_get_selected(chooser);
/* Add the drop-down list with the allow/block types. */
- for (i = 0; i < menu_entry_count; i++) {
- gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(dialog->type_menu),
- _(menu_entries[i].text));
+ model = GTK_STRING_LIST(gtk_drop_down_get_model(GTK_DROP_DOWN(dialog->type_menu))); + for (guint i = 0; i < menu_entry_count; i++) { + gtk_string_list_append(model, _(menu_entries[i].text)); - if (menu_entries[i].type == purple_account_get_privacy_type(dialog->account))
+ if (menu_entries[i].type == purple_account_get_privacy_type(dialog->account)) { - gtk_combo_box_set_active(GTK_COMBO_BOX(dialog->type_menu), selected);
+ gtk_drop_down_set_selected(GTK_DROP_DOWN(dialog->type_menu), selected); /* Rebuild the allow and block lists views. */
rebuild_allow_list(dialog);
rebuild_block_list(dialog);
- type_changed_cb(GTK_COMBO_BOX(dialog->type_menu), dialog);
+ type_changed_cb(G_OBJECT(dialog->type_menu), NULL, dialog); --- a/pidgin/resources/Privacy/dialog.ui Mon Sep 05 20:22:34 2022 -0500
+++ b/pidgin/resources/Privacy/dialog.ui Mon Sep 05 20:24:04 2022 -0500
@@ -44,6 +44,7 @@
<property name="orientation">vertical</property>
<property name="spacing">6</property>
+ <property name="vexpand">1</property> <object class="GtkLabel">
<property name="valign">center</property>
@@ -76,8 +77,12 @@
- <object class="GtkComboBoxText" id="type_menu">
- <signal name="changed" handler="type_changed_cb" object="PidginPrivacyDialog" swapped="no"/>
+ <object class="GtkDropDown" id="type_menu"> + <property name="model"> + <object class="GtkStringList"> + <signal name="notify::selected" handler="type_changed_cb" object="PidginPrivacyDialog" swapped="no"/>