]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/artgtk.cpp
Applied patch from Bo, WIP
[wxWidgets.git] / src / gtk / artgtk.cpp
index d42c6a69b154c5beb5127e08864fb5fe0d8578c3..07d8f4cf4cc1db938811253583085bf2e3437803 100644 (file)
@@ -20,7 +20,7 @@
     #pragma hdrstop
 #endif
 
-#if defined(__WXGTK20__) && !defined(__WXUNIVERSAL__)
+#if !defined(__WXUNIVERSAL__)
 
 #include "wx/artprov.h"
 
     #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:
@@ -54,7 +57,7 @@ protected:
 
 /*static*/ void wxArtProvider::InitNativeProvider()
 {
-    wxArtProvider::Push(new wxGTK2ArtProvider);
+    Push(new wxGTK2ArtProvider);
 }
 
 // ----------------------------------------------------------------------------
@@ -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);
@@ -262,10 +265,9 @@ wxBitmap wxGTK2ArtProvider::CreateBitmap(const wxArtID& id,
     GdkPixbuf *pixbuf = CreateStockIcon(stockid, stocksize);
 
 #ifdef __WXGTK24__
-    if (!gtk_check_version(2,4,0))
+    if (!pixbuf && !gtk_check_version(2,4,0))
     {
-        if (!pixbuf)
-            pixbuf = CreateThemeIcon(stockid, stocksize, size);
+        pixbuf = CreateThemeIcon(stockid, stocksize, size);
     }
 #endif
 
@@ -282,13 +284,9 @@ wxBitmap wxGTK2ArtProvider::CreateBitmap(const wxArtID& id,
         }
     }
 
-    if (!pixbuf)
-        return wxNullBitmap;
-
     wxBitmap bmp;
-    bmp.SetWidth(gdk_pixbuf_get_width(pixbuf));
-    bmp.SetHeight(gdk_pixbuf_get_height(pixbuf));
-    bmp.SetPixbuf(pixbuf);
+    if (pixbuf != NULL)
+        bmp.SetPixbuf(pixbuf);
 
     return bmp;
 }
@@ -315,4 +313,4 @@ public:
 
 IMPLEMENT_DYNAMIC_CLASS(wxArtGtkModule, wxModule)
 
-#endif // defined(__WXGTK20__) && !defined(__WXUNIVERSAL__)
+#endif // !defined(__WXUNIVERSAL__)