On Fri, Feb 25, 2011 at 7:57 AM, James Morris <jwm.art....@gmail.com> wrote:
> Hi,
>
> I'm a little confused over destruction of my custom widgets. I'm
> mainly looking at existing code for how to do things as I've found the
> docs (via DevHelp) difficult to understand and to garner an idea of
> when and what is needed.
>
> Here's some typical code for one of the widgets which is (typically)
> just a group of GtkWidgets:
>
> --8<--
> G_DEFINE_TYPE(EnvelopeTab, envelope_tab, GTK_TYPE_VBOX)
>
> static void envelope_tab_destroy(GtkObject* object);
> static void update_env(EnvelopeTabPrivate*);
>
>
> static void envelope_tab_class_init(EnvelopeTabClass* klass)
> {
>    GtkObjectClass *object_class = GTK_OBJECT_CLASS(klass);
>
>    object_class->destroy = envelope_tab_destroy;
>    envelope_tab_parent_class = g_type_class_peek_parent(klass);
>
>    g_type_class_add_private(object_class, sizeof(EnvelopeTabPrivate));
> }
>
>
> static void envelope_tab_destroy(GtkObject* object)
> {
>    GtkObjectClass* klass = GTK_OBJECT_CLASS(envelope_tab_parent_class);
>
>    if (klass->destroy)
>        klass->destroy(object);
> }
>
> --8<--
>
> I am wondering if in this case, as there is no extra data to destroy,
> is it really necessary for me to specify the destroy function?
>
> Put another way, by specifying the destroy function, am I duplicating
> by 'over-riding' the 'default destructor' and/or possibly omitting
> things which should be done?
>
> With regard to the docs, finalize and dispose are mentioned. Are these
> only required if I explicitly need deeper control over the destruction
> (of - in this case - the widgets my widget uses)?

  a.) You generally dont need to use ->destroy, just use ->dispose()
        for cases where you need to unref other objects that your
        object holds a reference to, and use ->finalize() to free any
        other data/resources.

  b.) If your widget does not allocate any resources, you dont need
        to define any dispose/finalize methods

Cheers,
    -Tristan
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to