X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/22973fe304bd08110d18cfbc4109c837fdbcde0e..b50747ea53f4a9906d572d4bca4e452e66c8dbd5:/src/gtk/artgtk.cpp diff --git a/src/gtk/artgtk.cpp b/src/gtk/artgtk.cpp index 6c0a9380a2..c31b1c8c8e 100644 --- a/src/gtk/artgtk.cpp +++ b/src/gtk/artgtk.cpp @@ -24,6 +24,7 @@ #include "wx/artprov.h" #include "wx/module.h" +#include "wx/gtk/private.h" #include @@ -60,12 +61,12 @@ static const char *wxArtIDToStock(const wxArtID& id) { #define ART(wxid, gtkid) \ if (id == wxid) return gtkid; - + ART(wxART_ERROR, GTK_STOCK_DIALOG_ERROR) ART(wxART_INFORMATION, GTK_STOCK_DIALOG_INFO) ART(wxART_WARNING, GTK_STOCK_DIALOG_WARNING) ART(wxART_QUESTION, GTK_STOCK_DIALOG_QUESTION) - + //ART(wxART_HELP_SIDE_PANEL, ) ART(wxART_HELP_SETTINGS, GTK_STOCK_SELECT_FONT) //ART(wxART_HELP_BOOK, ) @@ -120,9 +121,9 @@ static const char *wxArtIDToStock(const wxArtID& id) ART(wxART_FIND, GTK_STOCK_FIND) ART(wxART_FIND_AND_REPLACE, GTK_STOCK_FIND_AND_REPLACE) #endif - + return NULL; - + #undef ART } @@ -160,10 +161,8 @@ 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_for_settings( - gtk_settings_get_for_screen(gdk_screen_get_default()), - s_sizes[i].icon, - &s_sizes[i].x, &s_sizes[i].y); + gtk_icon_size_lookup(s_sizes[i].icon, + &s_sizes[i].x, &s_sizes[i].y); } s_sizesInitialized = true; } @@ -175,7 +174,7 @@ static GtkIconSize FindClosestIconSize(const wxSize& size) // only use larger bitmaps, scaling down looks better than scaling up: if (size.x > s_sizes[i].x || size.y > s_sizes[i].y) continue; - + unsigned dist = (size.x - s_sizes[i].x) * (size.x - s_sizes[i].x) + (size.y - s_sizes[i].y) * (size.y - s_sizes[i].y); if (dist == 0) @@ -184,7 +183,7 @@ static GtkIconSize FindClosestIconSize(const wxSize& size) { distance = dist; best = s_sizes[i].icon; - } + } } return best; } @@ -197,11 +196,11 @@ static GdkPixbuf *CreateStockIcon(const char *stockid, GtkIconSize size) // FIXME: This code is not 100% correct, because stock pixmap are // context-dependent and may be affected by theme engine, the // correct value can only be obtained for given GtkWidget object. - // + // // Fool-proof implementation of stock bitmaps would extend wxBitmap // with "stock-id" representation (in addition to pixmap and pixbuf // ones) and would convert it to pixbuf when rendered. - + if (gs_gtkStyle == NULL) { GtkWidget *widget = gtk_button_new(); @@ -230,7 +229,7 @@ static GdkPixbuf *CreateThemeIcon(const char *iconname, { gtk_icon_size_lookup(iconsize, &size.x, &size.y); } - + return gtk_icon_theme_load_icon( gtk_icon_theme_get_default(), iconname, @@ -245,7 +244,7 @@ wxBitmap wxGTK2ArtProvider::CreateBitmap(const wxArtID& id, { wxCharBuffer stockid = wxArtIDToStock(id); GtkIconSize stocksize = (size == wxDefaultSize) ? - wxArtClientToIconSize(client) : + wxArtClientToIconSize(client) : FindClosestIconSize(size); // we must have some size, this is arbitrary @@ -274,11 +273,11 @@ wxBitmap wxGTK2ArtProvider::CreateBitmap(const wxArtID& id, GDK_INTERP_BILINEAR); if (p2) { - gdk_pixbuf_unref(pixbuf); + g_object_unref (G_OBJECT (pixbuf)); pixbuf = p2; } } - + if (!pixbuf) return wxNullBitmap;