Bonjour,

j'ai un GtkNotebook auquel j'ajoute des pages sur le clic d'un utilisateur. Afin de me simplifier la vie j'ai créé une structure onglet dans laquelle je stocke tous les widgets a afficher dans la page de mon notebook. (Jusqu'ici tout va bien !)
Maintenant pour ajouter mes structures onglet, je les stocke dans une GList. (Simple à ajouter, simple à supprimer, excellent ) mais le hic c'est lorsque je dois supprimer le 1er onglet car dans ma liste chaînée, c'est le 1er pointeur que je supprime donc je perds toute la liste derrière.
Voici ma fonction permettant de supprimer un onglet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void            onglet_close(GList *active_tabs, gint nb)
{
    GList *element = NULL;
 
    /* recherche de l'élément à supprimer */
    if(active_tabs != NULL && nb > -1)
    {
        /* element pointe sur l'élément de la liste qui contient l'onglet à supprimer */
        element = g_list_nth(active_tabs, nb);
 
        if(element != NULL)
        {
            /* suppression de l'élément */
            active_tabs = g_list_remove_link(active_tabs, element);
 
            /*
                * element est maintenant une liste contenant un seul élément
                * donc on le supprime de la mémoire
            */
            if(element != NULL)
                g_list_free_1(element);
        }
    }
 
}
Avez vous une solution à me suggérer ?

Merci de vos réponses

Edit : en fait je voudrais savoir si je peux manipuler la liste chainée comme une liste normale?
c'est-à-dire écrire une chose du genre

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
GList *second = active_tabs;
 
if(second != NULL)
     second = second->next;
 
/* suppression ... */
 
if(second != NULL)
     active_tabs = second;