X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ddf6088b1e24b23854de2342c6f4ac942731216a..810ca882569c59d537f75a982aaac0e218076bb0:/src/gtk1/artgtk.cpp diff --git a/src/gtk1/artgtk.cpp b/src/gtk1/artgtk.cpp index dafc3dc2c9..6b401aee09 100644 --- a/src/gtk1/artgtk.cpp +++ b/src/gtk1/artgtk.cpp @@ -102,6 +102,23 @@ static const char *wxArtIDToStock(const wxArtID& id) ART(wxART_CDROM, GTK_STOCK_CDROM) ART(wxART_HARDDISK, GTK_STOCK_HARDDISK) ART(wxART_REMOVABLE, GTK_STOCK_HARDDISK) + + ART(wxART_FILE_SAVE, GTK_STOCK_SAVE) + ART(wxART_FILE_SAVE_AS, GTK_STOCK_SAVE_AS) + + ART(wxART_COPY, GTK_STOCK_COPY) + ART(wxART_CUT, GTK_STOCK_CUT) + ART(wxART_PASTE, GTK_STOCK_PASTE) + ART(wxART_DELETE, GTK_STOCK_DELETE) + ART(wxART_NEW, GTK_STOCK_NEW) + + ART(wxART_UNDO, GTK_STOCK_UNDO) + ART(wxART_REDO, GTK_STOCK_REDO) + + ART(wxART_QUIT, GTK_STOCK_QUIT) + + ART(wxART_FIND, GTK_STOCK_FIND) + ART(wxART_FIND_AND_REPLACE, GTK_STOCK_FIND_AND_REPLACE) #endif return NULL; @@ -109,7 +126,7 @@ static const char *wxArtIDToStock(const wxArtID& id) #undef ART } -static GtkIconSize wxArtClientToIconSize(const wxArtClient& client) +GtkIconSize wxArtClientToIconSize(const wxArtClient& client) { if (client == wxART_TOOLBAR) return GTK_ICON_SIZE_LARGE_TOOLBAR; @@ -120,7 +137,7 @@ static GtkIconSize wxArtClientToIconSize(const wxArtClient& client) else if (client == wxART_BUTTON) return GTK_ICON_SIZE_BUTTON; else - return GTK_ICON_SIZE_BUTTON; // this is arbitrary + return GTK_ICON_SIZE_INVALID; // this is arbitrary } static GtkIconSize FindClosestIconSize(const wxSize& size) @@ -143,8 +160,26 @@ static GtkIconSize FindClosestIconSize(const wxSize& size) s_sizes[5].icon = GTK_ICON_SIZE_DIALOG; for (size_t i = 0; i < NUM_SIZES; i++) { - gtk_icon_size_lookup(s_sizes[i].icon, +#if !defined(GDK_MULTITHREAD_SAFE) + gtk_icon_size_lookup( + s_sizes[i].icon, + &s_sizes[i].x, &s_sizes[i].y); +#else +#if GTK_VERSION_CHECK(2,2,0) + if (!gtk_verson_check(2,2,0)) + gtk_icon_size_lookup_for_settings( + gtk_settings_get_for_screen(gdk_screen_get_default()), + s_sizes[i].icon, + &s_sizes[i].x, &s_sizes[i].y); + else +#else // pre-GTK 2.2 + { + // FIXME + gtk_icon_size_lookup(s_sizes[i].icon, &s_sizes[i].x, &s_sizes[i].y); + } +#endif +#endif } s_sizesInitialized = true; } @@ -202,7 +237,7 @@ static GdkPixbuf *CreateStockIcon(const char *stockid, GtkIconSize size) GTK_STATE_NORMAL, size, NULL, NULL); } -#if GTK_CHECK_VERSION(2,4,0) +#ifdef __WXGTK24__ static GdkPixbuf *CreateThemeIcon(const char *iconname, GtkIconSize iconsize, const wxSize& sz) { @@ -218,7 +253,7 @@ static GdkPixbuf *CreateThemeIcon(const char *iconname, size.x, (GtkIconLookupFlags)0, NULL); } -#endif // GTK+ >= 2.4.0 +#endif wxBitmap wxGTK2ArtProvider::CreateBitmap(const wxArtID& id, const wxArtClient& client, @@ -229,15 +264,22 @@ wxBitmap wxGTK2ArtProvider::CreateBitmap(const wxArtID& id, wxArtClientToIconSize(client) : FindClosestIconSize(size); + // we must have some size, this is arbitrary + if (stocksize == GTK_ICON_SIZE_INVALID) + stocksize = GTK_ICON_SIZE_BUTTON; + // 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); +#ifdef __WXGTK24__ + if (!gtk_check_version(2,4,0)) + { + if (!pixbuf) + pixbuf = CreateThemeIcon(stockid, stocksize, size); + } #endif if (pixbuf && size != wxDefaultSize &&