gtk_widget_destroy does not unref the widget unless it's a TLW or in a

container, so use gtk_object_sink to delete temporary, parentless widgets.
Fixes memory leak bug #1741184.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@46605 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Paul Cornett
2007-06-22 06:53:30 +00:00
parent 0d5c7b2dca
commit dd2422b320
2 changed files with 9 additions and 13 deletions

View File

@@ -28,8 +28,11 @@
#include "wx/module.h"
#endif
#include "wx/gtk/private.h"
#include <gtk/gtkversion.h>
#if GTK_CHECK_VERSION(2, 9, 0)
// gtk_object_sink
#undef GTK_DISABLE_DEPRECATED
#endif
#include <gtk/gtk.h>
// compatibility with older GTK+ versions:
@@ -211,7 +214,7 @@ static GdkPixbuf *CreateStockIcon(const char *stockid, GtkIconSize size)
gs_gtkStyle = gtk_rc_get_style(widget);
wxASSERT( gs_gtkStyle != NULL );
g_object_ref(gs_gtkStyle);
gtk_widget_destroy(widget);
gtk_object_sink((GtkObject*)widget);
}
GtkIconSet *iconset = gtk_style_lookup_icon_set(gs_gtkStyle, stockid);

View File

@@ -126,7 +126,7 @@ static bool GetColourFromGTKWidget(GdkColor& gdkColor,
}
}
gtk_widget_destroy( widget );
gtk_object_sink((GtkObject*)widget);
return ok;
}
@@ -140,14 +140,7 @@ static void GetTooltipColors()
gs_objects.m_colTooltip = wxColor(c);
c = tooltips->tip_window->style->fg[GTK_STATE_NORMAL];
gs_objects.m_colTooltipText = wxColor(c);
#if GTK_CHECK_VERSION(2, 9, 0)
if (gtk_check_version(2, 9, 0) == NULL)
g_object_ref_sink(tooltips);
else
#endif
{
gtk_object_sink((GtkObject*)tooltips);
}
gtk_object_sink((GtkObject*)tooltips);
}
wxColour wxSystemSettingsNative::GetColour( wxSystemColour index )
@@ -355,7 +348,7 @@ wxFont wxSystemSettingsNative::GetFont( wxSystemFont index )
gs_objects.m_fontSystem = wxFont(wxString::FromAscii(font_name));
g_free (font_name);
}
gtk_widget_destroy( widget );
gtk_object_sink((GtkObject*)widget);
}
font = gs_objects.m_fontSystem;
break;