From 447b7432df65b070b60238e36e9e8d224c448268 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Tue, 24 Mar 2026 16:39:12 +0600 Subject: [PATCH] Main components loading fix --- source/ubinstall-gtk-components.c | 57 +++++++++++++++++-------------- source/ubinstall-gtk.h | 3 +- 2 files changed, 34 insertions(+), 26 deletions(-) diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index 9427d8a..577c03d 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -231,6 +231,7 @@ void *yon_modules_list_load(main_window *widgets){ main_config.modules_size = size; } g_idle_add((GSourceFunc)yon_spinner_switch_off,widgets->OSSpinner); + g_idle_add((GSourceFunc)yon_os_components_load,widgets); g_thread_exit(NULL); } @@ -275,29 +276,10 @@ gboolean yon_spinner_switch_off(GtkSpinner *target){ return G_SOURCE_REMOVE; } -void yon_modules_missed_func(main_window *widgets){ - yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),MAIN_COMPONENTS_NOT_FOUND_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); -} - - -void yon_os_components_init(main_window *widgets){ - if (!main_config.configure_mode){ - yon_config_update_by_args(modules_parameter,NULL); - } - int size = 0; +gboolean yon_os_components_load(main_window *widgets){ + int size=0; GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox)); - GList *iter; - for (iter=list;iter;iter=iter->next){ - os_row *row = g_object_get_data(iter->data,"kernel_row"); - free(row); - gtk_widget_destroy(GTK_WIDGET(iter->data)); - } - gtk_overlay_add_overlay(GTK_OVERLAY(widgets->OSOverlay),widgets->OSSpinner); - gtk_spinner_start(GTK_SPINNER(widgets->OSSpinner)); - gtk_widget_show(widgets->OSSpinner); - g_thread_new("geag",(GThreadFunc)yon_modules_list_load,widgets); - while(gtk_events_pending()) gtk_main_iteration(); - list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox)); + GList *iter; for(iter = list;iter;iter=iter->next){ os_row *row = g_object_get_data(iter->data,"kernel_row"); int cur_size = 0; @@ -316,7 +298,7 @@ void yon_os_components_init(main_window *widgets){ config_str parsed = yon_char_parse(modules,&parsed_size,","); for(iter = list;iter;iter=iter->next){ os_row *row = g_object_get_data(iter->data,"kernel_row"); - char *target = row->name; + char *target = row->source; if (yon_char_parsed_check_exist(parsed,parsed_size,target)>-1){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),1); } else { @@ -325,6 +307,30 @@ void yon_os_components_init(main_window *widgets){ } yon_char_parsed_free(parsed,parsed_size); } + return G_SOURCE_REMOVE; +} + +void yon_modules_missed_func(main_window *widgets){ + yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),MAIN_COMPONENTS_NOT_FOUND_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); +} + +void yon_os_components_init(main_window *widgets){ + if (!main_config.configure_mode){ + yon_config_update_by_args(modules_parameter,NULL); + } + // int size = 0; + GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox)); + GList *iter; + for (iter=list;iter;iter=iter->next){ + os_row *row = g_object_get_data(iter->data,"kernel_row"); + free(row); + gtk_widget_destroy(GTK_WIDGET(iter->data)); + } + gtk_overlay_add_overlay(GTK_OVERLAY(widgets->OSOverlay),widgets->OSSpinner); + gtk_spinner_start(GTK_SPINNER(widgets->OSSpinner)); + gtk_widget_show(widgets->OSSpinner); + g_thread_new("geag",(GThreadFunc)yon_modules_list_load,widgets); + while(gtk_events_pending()) gtk_main_iteration(); } void on_software_uncheck_all(GtkWidget *, main_window *widgets){ @@ -437,8 +443,9 @@ gboolean yon_software_insert(struct row_data *row_input){ } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),0); } - char *modules_param = config(modules_parameter); - if (modules_param&&!strcmp(modules_param,"auto")){ + char *modules_prm = config(modules_parameter); + char *modules_param = NULL; + if (modules_prm&&!strcmp(modules_prm,"auto")){ int final_size; config_str final = NULL; for (int i=0;i