[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: GtkTooltip destroys the custom widget when finalized
- From: "Kristian Rietveld" <kris gtk org>
- To: "Nicolas Soubeiran" <nicolas soubeiran gmail com>
- Cc: gtk-app-devel-list gnome org
- Subject: Re: GtkTooltip destroys the custom widget when finalized
- Date: Mon, 24 Nov 2008 12:18:37 +0100
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]