diff --git a/source/ubinstall-gtk-advanced.c b/source/ubinstall-gtk-advanced.c index 28d4a5e..e39bc54 100644 --- a/source/ubinstall-gtk-advanced.c +++ b/source/ubinstall-gtk-advanced.c @@ -566,6 +566,27 @@ void yon_advanced_part_add_parts_for_device(const char *device_name, main_window } } +void yon_advanced_part_remove_for_part(const char *part_name, main_window *widgets){ + GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdvancedPartitionAddBox)); + GList *iter; + for (iter=list;iter;iter=iter->next){ + advanced_part_data *data = g_object_get_data(G_OBJECT(iter->data),"advanced_part_data"); + if (!yon_char_is_empty(data->partition)){ + if (!strcmp(data->partition,part_name)){ + advanced_part_widgets *part = g_object_get_data(G_OBJECT(iter->data),"advanced_part_widgets"); + on_advanced_part_remove_part(part->RemoveButton,widgets); + } + } else if (!yon_char_is_empty(data->device)){ + if (!strcmp(data->device,part_name)){ + advanced_part_widgets *part = g_object_get_data(G_OBJECT(iter->data),"advanced_part_widgets"); + on_advanced_part_remove_device(part->RemoveButton,widgets); + } + } + } + g_list_free(list); + +} + void yon_advanced_part_remove_parts_for_device(const char *device_name, main_window *widgets){ GtkTreeIter iter; GtkTreeModel *model = GTK_TREE_MODEL(widgets->PartitionsList); @@ -574,6 +595,7 @@ void yon_advanced_part_remove_parts_for_device(const char *device_name, main_win gtk_tree_model_get(model,&iter,0,&name,10,&target,-1); printf("%s\n",name); if (strstr(device_name,target)){ + yon_advanced_part_remove_for_part(name,widgets); gtk_list_store_remove(widgets->PartitionsList,&iter); if (!gtk_tree_model_get_iter_first(model,&iter)) break; } @@ -582,9 +604,11 @@ void yon_advanced_part_remove_parts_for_device(const char *device_name, main_win char *target, *name; gtk_tree_model_get(model,&iter,0,&name,10,&target,-1); if (strstr(device_name,target)){ + yon_advanced_part_remove_for_part(name,widgets); gtk_list_store_remove(widgets->PartitionsList,&iter); } } + yon_advanced_part_remove_for_part(device_name,widgets); } void on_advanced_part_create(GtkWidget *, main_window *widgets){ diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 7995e82..74063db 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -1555,4 +1555,5 @@ void on_advanced_part_toggled(GtkWidget *self); void yon_advanced_part_save(main_window *widgets); void yon_advanced_part_clean_config(); void yon_advanced_part_to_data(advanced_part_widgets *part, advanced_part_data *data); -void yon_advanced_part_save_part(advanced_part_data *data); \ No newline at end of file +void yon_advanced_part_save_part(advanced_part_data *data); +void yon_advanced_part_remove_for_part(const char *part_name, main_window *widgets); \ No newline at end of file