From dd2422b32018abf7bca2b8da438e4ef941b174d2 Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Fri, 22 Jun 2007 06:53:30 +0000 Subject: [PATCH] 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 --- src/gtk/artgtk.cpp | 9 ++++++--- src/gtk/settings.cpp | 13 +++---------- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/gtk/artgtk.cpp b/src/gtk/artgtk.cpp index e5fc5a45e9..07d8f4cf4c 100644 --- a/src/gtk/artgtk.cpp +++ b/src/gtk/artgtk.cpp @@ -28,8 +28,11 @@ #include "wx/module.h" #endif -#include "wx/gtk/private.h" - +#include +#if GTK_CHECK_VERSION(2, 9, 0) + // gtk_object_sink + #undef GTK_DISABLE_DEPRECATED +#endif #include // 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); diff --git a/src/gtk/settings.cpp b/src/gtk/settings.cpp index ff3abce216..6aefef6e3b 100644 --- a/src/gtk/settings.cpp +++ b/src/gtk/settings.cpp @@ -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; -- 2.45.2