pidgin/pidgin

Convert privacy combo box to the new drop down

21 months ago, Elliott Sales de Andrade
f7af70658fe5
Parents eaf836c5f87b
Children 974d440d7fd3
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/
--- 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>