[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: GtkTooltip destroys the custom widget when finalized



Hi,

Could you create a bug report in bugzilla (http://bugzilla.gnome.org/)
together with a small test case showing the problem and your proposed
patch?  This way your bug report will not be forgotten :)


thanks,

-kris

2008/11/19 Nicolas Soubeiran <nicolas soubeiran gmail com>:
>  Hi all,
> I was trying to do a tooltip with a custom widget that display a
> GtkProgessBar showing the state of a computation in gtk 2.12.10. My program
> often terminates with a memory fault : it lost the reference to the
> GtkProgessBar even if I ref it (with g_object_ref).
>
> I investigated and found that when finalized a tooltip destroy its window
> and so all the widgets inside. Which I think is hazardous since the tooltip
> does not create the custom widget it should not assume its destruction since
> the user can still want to keep it.
> So I do the following patch : in order to keep my widget, before destroying
> the window I remove the custom widget from the tooltip.
> Here is the diff : (in function gtk_tooltip_finalize )
>
> 195,211d194
> <       /* FIXEME : in some case the user can want to keep its custom widget
> <        since we don't create it, we should not assume its destruction
> <        we remove it from the tooltip so, if the user does not need it
> anymore,
> <        it will be finalize (ref_cout == 0), otherwise it will be kept
> unless
> <        the user unref it.
> <        */
> <       if (tooltip->custom_widget)
> <       {
> <         GtkWidget *custom = tooltip->custom_widget;
> <         /* Note: We must reset tooltip->custom_widget first,
> <          * since gtk_container_remove() will recurse into
> <          * gtk_tooltip_set_custom()
> <          */
> <         tooltip->custom_widget = NULL;
> <         gtk_container_remove (GTK_CONTAINER (tooltip->box), custom);
> <         g_object_unref (custom);
> <       }
>
> This code is actually a duplication of what gtk_tooltip_set_custom does when
> setting a new custom widget.
>
> This code works, I do not see any memory leak in my test.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]