Bonjour,

J'aimerais savoir quand est-ce que les GtkWidgets sont détruits dans un programme.
J'ai un widget YaogcFrame qui dérive (directement) de GtkDrawingArea, celui-ci contient une donnée membre pango_l que je veux détruire en même temps que mon widget.

J'ai donc fait ceci:

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
static void
yaogc_frame_finalize (GObject *object)
{
    YaogcFrame *frame = YAOGC_FRAME (object);
 
    if (frame->priv->pango_l) {
        g_object_unref (frame->priv->pango_l);
        frame->priv->pango_l = NULL;
    }
 
    /* Chaining up */
    G_OBJECT_CLASS (yaogc_frame_parent_class)->finalize (object);
}
 
static void
yaogc_frame_class_init (YaogcFrameClass *frame_class)
{
    GObjectClass *object_class = G_OBJECT_CLASS (frame_class);
 
    /* [...] */
 
    object_class->finalize = yaogc_frame_finalize;    
 
    /* [...] */
}
J'ai placé un breakpoint dans la fonction yaogc_frame_finalize, et à la fin du programme celle-ci n'est jamais appelée, sauf si je fais appel explicitement à g_object_unref.

Du coup, je me demande quand est-ce que les widgets sont détruits dans un programme

Si quelqu'un a une idée, ça serait sympa
Merci

References: Object destruction