- GdkPixbuf *pixbuf =
- gtk_icon_set_render_icon(iconset, style,
- gtk_widget_get_default_direction(),
- GTK_STATE_NORMAL, stocksize, NULL, NULL);
+#if GTK_CHECK_VERSION(2,4,0)
+static GdkPixbuf *CreateThemeIcon(const char *iconname,
+ GtkIconSize iconsize, const wxSize& sz)
+{
+ wxSize size(sz);
+ if (size == wxDefaultSize)
+ {
+ gtk_icon_size_lookup(iconsize, &size.x, &size.y);
+ }
+
+ return gtk_icon_theme_load_icon(
+ gtk_icon_theme_get_default(),
+ iconname,
+ size.x,
+ (GtkIconLookupFlags)0, NULL);
+}
+#endif // GTK+ >= 2.4.0
+
+wxBitmap wxGTK2ArtProvider::CreateBitmap(const wxArtID& id,
+ const wxArtClient& client,
+ const wxSize& size)
+{
+ wxCharBuffer stockid = wxArtIDToStock(id);
+ GtkIconSize stocksize = (size == wxDefaultSize) ?
+ wxArtClientToIconSize(client) :
+ FindClosestIconSize(size);
+
+ // allow passing GTK+ stock IDs to wxArtProvider:
+ if (!stockid)
+ stockid = id.ToAscii();
+
+ GdkPixbuf *pixbuf = CreateStockIcon(stockid, stocksize);
+
+#if GTK_CHECK_VERSION(2,4,0)
+ if (!pixbuf)
+ pixbuf = CreateThemeIcon(stockid, stocksize, size);
+#endif