diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c
index 5b1ff81..9427d8a 100644
--- a/source/ubinstall-gtk-components.c
+++ b/source/ubinstall-gtk-components.c
@@ -73,6 +73,27 @@ int yon_kernel_addon_save(main_window *widgets){
return 1;
}
+void on_os_components_uncheck_all(GtkWidget *,main_window *widgets){
+ int active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->OSSoftwareUncheckAllCheck));
+ switch(active){
+ case 1:{
+ 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");
+ int sensitive = gtk_widget_get_sensitive(row->InstallCheck);
+ if (sensitive){
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),0);
+ }
+ }
+ } break;
+ }
+ gtk_widget_hide(widgets->OSSoftwareUncheckAllCheck);
+ g_signal_handlers_block_by_func(G_OBJECT(widgets->OSSoftwareUncheckAllCheck),on_os_components_uncheck_all,widgets);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->OSSoftwareUncheckAllCheck),0);
+ g_signal_handlers_unblock_by_func(G_OBJECT(widgets->OSSoftwareUncheckAllCheck),on_os_components_uncheck_all,widgets);
+}
+
int yon_os_components_check_packages_size(GtkWidget *, main_window *widgets){
long pacman_size = 0;
{
@@ -83,6 +104,9 @@ int yon_os_components_check_packages_size(GtkWidget *, main_window *widgets){
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->InstallCheck))){
long cur_size = yon_packages_get_installed_size(YON_PACKAGES_ALL,row->name);
pacman_size += cur_size;
+ if (gtk_widget_get_sensitive(row->InstallCheck)){
+ gtk_widget_show(widgets->OSSoftwareUncheckAllCheck);
+ }
}
}
}
diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c
index 059f475..69f7d9b 100644
--- a/source/ubinstall-gtk.c
+++ b/source/ubinstall-gtk.c
@@ -446,6 +446,7 @@ void yon_main_window_create(main_window *widgets){
widgets->OSFormatEncryptionEntry = yon_gtk_builder_get_widget(builder,"OSFormatEncryptionEntry");
widgets->OSFormatEncryptionButton = yon_gtk_builder_get_widget(builder,"OSFormatEncryptionButton");
widgets->OSComponentsOverallSizeLabel = yon_gtk_builder_get_widget(builder,"OSComponentsOverallSizeLabel");
+ widgets->OSSoftwareUncheckAllCheck = yon_gtk_builder_get_widget(builder,"OSSoftwareUncheckAllCheck");
widgets->UserdataDevicesTree = yon_gtk_builder_get_widget(builder,"UserdataDevicesTree");
widgets->UserdataSysSectionTree = yon_gtk_builder_get_widget(builder,"UserdataSysSectionTree");
@@ -703,6 +704,7 @@ void yon_main_window_create(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->SamePlaceDeviceTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets);
g_signal_connect(G_OBJECT(widgets->UserdataDevicesTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets);
+ g_signal_connect(G_OBJECT(widgets->OSSoftwareUncheckAllCheck),"toggled",G_CALLBACK(on_os_components_uncheck_all),widgets);
g_signal_connect(G_OBJECT(widgets->AdditionalComponentsUncheckAllCheck),"toggled",G_CALLBACK(on_software_uncheck_all),widgets);
g_signal_connect(G_OBJECT(widgets->NextInstallationSizeSpin),"value-changed",G_CALLBACK(yon_size_changed),widgets);
g_signal_connect(G_OBJECT(widgets->UserdataFormatSizeSpin),"value-changed",G_CALLBACK(yon_size_changed),widgets);
diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h
index bd1b0b9..f9dc4ee 100755
--- a/source/ubinstall-gtk.h
+++ b/source/ubinstall-gtk.h
@@ -665,6 +665,7 @@ typedef struct
GtkWidget *OSSpinner;
GtkWidget *OSOverlay;
GtkWidget *OSComponentsOverallSizeLabel;
+ GtkWidget *OSSoftwareUncheckAllCheck;
GtkWidget *UserdataGpartedButton;
GtkWidget *UserdataUpdateGpartedButton;
@@ -1591,4 +1592,5 @@ void on_bootloader_user_remove(GtkWidget *, main_window *widgets);
void on_software_uncheck_all(GtkWidget *, main_window *widgets);
gboolean on_kernel_enabled_toggled(GtkWidget *self, GdkEventButton *, kernel_row *row);
void on_status_update(GtkWidget *,main_window *widgets);
-gboolean on_kernel_addon_menu_block(GObject *self, GdkEventButton *event);
\ No newline at end of file
+gboolean on_kernel_addon_menu_block(GObject *self, GdkEventButton *event);
+void on_os_components_uncheck_all(GtkWidget *,main_window *widgets);
\ No newline at end of file
diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade
index 4265cf8..f8a9ff0 100644
--- a/ubinstall-gtk.glade
+++ b/ubinstall-gtk.glade
@@ -2091,7 +2091,6 @@ agreement
none