Mon, 05 Sep 2022 20:24:04 -0500
Convert privacy combo box to the new drop down
Also set the content area to expand vertically.
Testing Done:
Opened privacy dialog, changed setting around and saw that the list of specific contacts came up depending on the option chosen. The add/remove buttons also became enabled as expected.
Reviewed at https://reviews.imfreedom.org/r/1716/
| pidgin/gtkprivacy.c | file | annotate | diff | comparison | revisions | |
| pidgin/resources/Privacy/dialog.ui | file | annotate | diff | comparison | revisions |
--- 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); break; } } @@ -158,10 +158,10 @@ * Even better: the privacy API needs to not suck. */ static void -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 @@ static void pidgin_privacy_dialog_init(PidginPrivacyDialog *dialog) { PidginAccountChooser *chooser = NULL; - gssize selected = -1; - gsize i; + 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)) - selected = (gssize)i; + if (menu_entries[i].type == purple_account_get_privacy_type(dialog->account)) { + selected = i; + } } - 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); } void
--- 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 @@ <object class="GtkBox"> <property name="orientation">vertical</property> <property name="spacing">6</property> + <property name="vexpand">1</property> <child> <object class="GtkLabel"> <property name="valign">center</property> @@ -76,8 +77,12 @@ </object> </child> <child> - <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"> + </object> + </property> + <signal name="notify::selected" handler="type_changed_cb" object="PidginPrivacyDialog" swapped="no"/> </object> </child> <child>