On Sat, 2007-10-06 at 13:09 +0200, Bastiaan Veelo wrote:
> Hi,
> 
> I am writing my own widget, and while looking at the widgets in GTK I 
> notice the following.
> 
> If a widget draws on its parent GdkWindow, you generally see
> 
> > widget->window = gtk_widget_get_parent_window (widget);
> > g_object_ref (widget->window);
> 
> But widget->window is not g_object_unref-ed anywhere in the widget 
> implementation. Why shouldn't it?

They are unreffed, it just takes a little while getting used to
reading the object oriented C code :)

Notice:
  gtkbutton.c::realize() does what you say, get_parent_window(),g_object_ref().

  gtkbutton.c::unrealize() does some gtkbutton specific things, and chains up
  to the parent implementation with:
    GTK_WIDGET_CLASS (gtk_button_parent_class)->unrealize (widget);

  gtkwidget.c::unrealize() is the implementation that it will fallback
  on, thats where widget->window will be unreffed if 
GTK_WIDGET_NO_WINDOW(widget).

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