PDA

View Full Version : Problema pulizia


x110
02-01-2004, 14:29
Ho una semplice lista Glist.
vorrei pulirla e riscrivere dei nuovi valori.
per fare cio' devo liberare la memoria dai widget di tipo Listitem.
non ci riesco.

dove diavolo sbaglio?

la prima tenta di liberare la memoria ma gia' nella destroy_widget
mi dice che dlist->data e' null e sto cercando di distruggere un widget sbagliato.
eppure li lista mi si popola bane.
ciao


struct strumainfrm{
GtkWidget *window;
GtkWidget *vbox;
GtkWidget *pgbar;
GtkWidget *button;
GtkWidget *list;
GtkWidget *scrolled_window;//conterra' la lista
GList *dlist;
GtkWidget *fixed;
};
struct strumainfrm *mainfrm,mainfrm2;

void AggiornaListaPresenze(){
FILE *fd;
pres buf_presenze;
GtkWidget *listitem;

if(mainfrm->dlist!=NULL){
gtk_list_remove_items(GTK_LIST(mainfrm->list),mainfrm->dlist);
while (mainfrm->dlist){
gtk_widget_destroy(GTK_WIDGET(mainfrm->dlist->data));
mainfrm->dlist=g_list_next(mainfrm->dlist);
}
mainfrm->dlist=g_list_first(mainfrm->dlist);
g_list_free(mainfrm->dlist);
mainfrm->dlist=NULL;
}
int ret;
g_print("aggpres\n");
if ((fd=fopen("presenze.dat","r+"))!=NULL){
ret=fread(&buf_presenze,sizeof(buf_presenze),1,fd);
while (!(feof(fd))){
listitem=gtk_list_item_new_with_label(buf_presenze.nome);
mainfrm->dlist=g_list_prepend(mainfrm->dlist,listitem);
gtk_widget_show(listitem);
ret=fread(&buf_presenze,sizeof(buf_presenze),1,fd);
}
fclose(fd);
gtk_list_append_items(GTK_LIST(mainfrm->list),mainfrm->dlist);
}
gtk_widget_show(mainfrm->list);
}

x110
02-01-2004, 20:58
e non va e...

x110
03-01-2004, 19:02
propio nessuno.....