pidgin/pidgin

Inline pidgin_prefs_dropdown_from_list_with_cb

24 months ago, Elliott Sales de Andrade
4c6807a2260d
Parents 686ea9361312
Children d2f5ce624a49
Inline pidgin_prefs_dropdown_from_list_with_cb

Now that there is no callback argument, and its only caller is
`pidgin_prefs_dropdown_from_list`, there's not really any need for it to be a
separate function.
--- a/pidgin/prefs/pidginprefs.c Tue May 17 01:58:52 2022 -0500
+++ b/pidgin/prefs/pidginprefs.c Tue May 17 01:58:53 2022 -0500
@@ -203,16 +203,6 @@
PREF_DROPDOWN_COUNT
};
-typedef struct
-{
- PurplePrefType type;
- union {
- const char *string;
- int integer;
- gboolean boolean;
- } value;
-} PidginPrefValue;
-
static void
dropdown_set(GtkComboBox *combo_box, G_GNUC_UNUSED gpointer data)
{
@@ -245,40 +235,42 @@
}
}
-static GtkWidget *
-pidgin_prefs_dropdown_from_list_with_cb(GtkWidget *box, const gchar *title,
- GtkComboBox **dropdown_out, GList *menuitems,
- PidginPrefValue initial)
+GtkWidget *
+pidgin_prefs_dropdown_from_list(GtkWidget *box, const gchar *title,
+ PurplePrefType type, const char *key, GList *menuitems)
{
- GtkWidget *dropdown;
+ GtkWidget *dropdown = NULL;
GtkWidget *label = NULL;
GtkListStore *store = NULL;
GtkTreeIter iter;
GtkTreeIter active;
GtkCellRenderer *renderer;
+ gint pref_int_value = 0;
+ const gchar *pref_str_value = NULL;
+ gboolean pref_bool_value = FALSE;
g_return_val_if_fail(menuitems != NULL, NULL);
- if (initial.type == PURPLE_PREF_INT) {
+ if (type == PURPLE_PREF_INT) {
+ pref_int_value = purple_prefs_get_int(key);
store = gtk_list_store_new(PREF_DROPDOWN_COUNT, G_TYPE_STRING, G_TYPE_INT);
- } else if (initial.type == PURPLE_PREF_STRING) {
+ } else if (type == PURPLE_PREF_STRING) {
+ pref_str_value = purple_prefs_get_string(key);
store = gtk_list_store_new(PREF_DROPDOWN_COUNT, G_TYPE_STRING, G_TYPE_STRING);
- } else if (initial.type == PURPLE_PREF_BOOLEAN) {
+ } else if (type == PURPLE_PREF_BOOLEAN) {
+ pref_bool_value = purple_prefs_get_bool(key);
store = gtk_list_store_new(PREF_DROPDOWN_COUNT, G_TYPE_STRING, G_TYPE_BOOLEAN);
} else {
- g_warn_if_reached();
- return NULL;
+ g_return_val_if_reached(NULL);
}
dropdown = gtk_combo_box_new_with_model(GTK_TREE_MODEL(store));
- if (dropdown_out != NULL)
- *dropdown_out = GTK_COMBO_BOX(dropdown);
- g_object_set_data(G_OBJECT(dropdown), "type", GINT_TO_POINTER(initial.type));
+ g_object_set_data(G_OBJECT(dropdown), "type", GINT_TO_POINTER(type));
for (; menuitems != NULL; menuitems = g_list_next(menuitems)) {
const PurpleKeyValuePair *menu_item = menuitems->data;
- int int_value = 0;
- const char *str_value = NULL;
+ gint int_value = 0;
+ const gchar *str_value = NULL;
gboolean bool_value = FALSE;
if (menu_item->key == NULL) {
@@ -287,35 +279,33 @@
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter,
- PREF_DROPDOWN_TEXT, menu_item->key,
+ PREF_DROPDOWN_TEXT, menu_item->key,
-1);
- if (initial.type == PURPLE_PREF_INT) {
+ if (type == PURPLE_PREF_INT) {
int_value = GPOINTER_TO_INT(menu_item->value);
gtk_list_store_set(store, &iter,
PREF_DROPDOWN_VALUE, int_value,
-1);
}
- else if (initial.type == PURPLE_PREF_STRING) {
+ else if (type == PURPLE_PREF_STRING) {
str_value = (const char *)menu_item->value;
gtk_list_store_set(store, &iter,
PREF_DROPDOWN_VALUE, str_value,
-1);
}
- else if (initial.type == PURPLE_PREF_BOOLEAN) {
+ else if (type == PURPLE_PREF_BOOLEAN) {
bool_value = (gboolean)GPOINTER_TO_INT(menu_item->value);
gtk_list_store_set(store, &iter,
PREF_DROPDOWN_VALUE, bool_value,
-1);
}
- if ((initial.type == PURPLE_PREF_INT &&
- initial.value.integer == int_value) ||
- (initial.type == PURPLE_PREF_STRING &&
- purple_strequal(initial.value.string, str_value)) ||
- (initial.type == PURPLE_PREF_BOOLEAN &&
- (initial.value.boolean == bool_value))) {
-
+ if ((type == PURPLE_PREF_INT && pref_int_value == int_value) ||
+ (type == PURPLE_PREF_STRING &&
+ purple_strequal(pref_str_value, str_value)) ||
+ (type == PURPLE_PREF_BOOLEAN && (pref_bool_value == bool_value)))
+ {
active = iter;
}
}
@@ -332,31 +322,6 @@
pidgin_add_widget_to_vbox(GTK_BOX(box), title, NULL, dropdown, FALSE, &label);
- return label;
-}
-
-GtkWidget *
-pidgin_prefs_dropdown_from_list(GtkWidget *box, const gchar *title,
- PurplePrefType type, const char *key, GList *menuitems)
-{
- PidginPrefValue initial;
- GtkComboBox *dropdown = NULL;
- GtkWidget *label;
-
- initial.type = type;
- if (type == PURPLE_PREF_INT) {
- initial.value.integer = purple_prefs_get_int(key);
- } else if (type == PURPLE_PREF_STRING) {
- initial.value.string = purple_prefs_get_string(key);
- } else if (type == PURPLE_PREF_BOOLEAN) {
- initial.value.boolean = purple_prefs_get_bool(key);
- } else {
- g_return_val_if_reached(NULL);
- }
-
- label = pidgin_prefs_dropdown_from_list_with_cb(box, title, &dropdown,
- menuitems, initial);
-
g_object_set_data(G_OBJECT(dropdown), "key", (gpointer)key);
return label;