static void autologin_changed (GObject *object, GParamSpec *pspec, UmUserPanelPrivate *d) { gboolean active; UmUser *user; active = gtk_switch_get_active (GTK_SWITCH (object)); user = get_selected_user (d); if (active != um_user_get_automatic_login (user)) { um_user_set_automatic_login (user, active); if (um_user_get_automatic_login (user)) { GSList *list; GSList *l; list = um_user_manager_list_users (d->um); for (l = list; l != NULL; l = l->next) { UmUser *u = l->data; if (um_user_get_uid (u) != um_user_get_uid (user)) { um_user_set_automatic_login (user, FALSE); } } g_slist_free (list); } } g_object_unref (user); }
static void update_autologin (GtkWidget *widget, UmLoginOptions *d) { GtkComboBox *combo = GTK_COMBO_BOX (widget); GtkTreeModel *model; GtkTreeIter iter; UmUser *user; gboolean enabled; if (!gtk_widget_is_sensitive (widget)) return; model = gtk_combo_box_get_model (combo); gtk_combo_box_get_active_iter (combo, &iter); gtk_tree_model_get (model, &iter, AUTOLOGIN_USER_COL, &user, -1); if (user) { enabled = TRUE; } else { enabled = FALSE; user = um_user_manager_get_user_by_id (d->manager, getuid ()); g_object_ref (user); } um_user_set_automatic_login (user, enabled); g_object_unref (user); }