From 4fdad089d2faa0cf9c335b7d0656ce0194312c78 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 8 Apr 2026 11:14:16 +0600 Subject: [PATCH] User admin button autosetting logics --- source/ubinstall-gtk-users.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/source/ubinstall-gtk-users.c b/source/ubinstall-gtk-users.c index 9459e1e..e3470ac 100644 --- a/source/ubinstall-gtk-users.c +++ b/source/ubinstall-gtk-users.c @@ -108,14 +108,42 @@ gboolean on_user_autoloin_switch(GtkWidget *, int status, main_window *){ } void on_user_add(GtkWidget *,main_window *widgets){ + int admin=1; + { + GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->UserAddBox)); + GList *iter; + for(iter=list;iter;iter=iter->next){ + yon_user_struct *cur_user = g_object_get_data(G_OBJECT(iter->data),"yon_user_struct"); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cur_user->AdminCheck))){ + admin=0; + } + } + } yon_user_struct *user = yon_user_struct_new(); g_signal_connect(G_OBJECT(user->AdminCheck),"clicked",G_CALLBACK(yon_user_admin_check),widgets); g_object_set_data(G_OBJECT(user->MainBox),"widgets",widgets); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(user->AdminCheck),admin); gtk_box_pack_start(GTK_BOX(widgets->UserAddBox),user->MainBox,0,0,0); user->changed=1; } void on_user_remove_clicked(GtkWidget *,yon_user_struct *user){ + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(user->AdminCheck))){ + main_window *widgets = g_object_get_data(G_OBJECT(user->MainBox),"widgets"); + GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->UserAddBox)); + GList *iter; + for(iter=list;iter;iter=iter->next){ + if (iter->data == user->MainBox){ + if (iter->next){ + yon_user_struct *cur_user = g_object_get_data(G_OBJECT(iter->next->data),"yon_user_struct"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cur_user->AdminCheck),1); + } else if (iter->prev){ + yon_user_struct *cur_user = g_object_get_data(G_OBJECT(iter->prev->data),"yon_user_struct"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cur_user->AdminCheck),1); + } + } + } + } gtk_widget_destroy(user->MainBox); free(user); }