From: Paul Cornett Date: Fri, 18 Jul 2008 02:45:48 +0000 (+0000) Subject: fix masking of disabled bitmaps with some themes X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/4a4a02acd1b6f3925c719ed25cfc7c7500ff2f61 fix masking of disabled bitmaps with some themes git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54676 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/gtk/bmpbuttn.cpp b/src/gtk/bmpbuttn.cpp index fcf8ff13bb..916cbf0f16 100644 --- a/src/gtk/bmpbuttn.cpp +++ b/src/gtk/bmpbuttn.cpp @@ -204,21 +204,16 @@ void wxBitmapButton::OnSetBitmap() if (!the_one.Ok()) return; - GtkWidget *child = GTK_BIN(m_widget)->child; - if (child == NULL) + GtkWidget* image = GTK_BIN(m_widget)->child; + if (image == NULL) { - // initial bitmap - GtkWidget *pixmap = - gtk_image_new_from_pixbuf(the_one.GetPixbuf()); - - gtk_widget_show(pixmap); - gtk_container_add(GTK_CONTAINER(m_widget), pixmap); - } - else - { // subsequent bitmaps - GtkImage *pixmap = GTK_IMAGE(child); - gtk_image_set_from_pixbuf(pixmap, the_one.GetPixbuf()); + image = gtk_image_new(); + gtk_widget_show(image); + gtk_container_add(GTK_CONTAINER(m_widget), image); } + // always use pixbuf, because pixmap mask does not + // work with disabled images in some themes + gtk_image_set_from_pixbuf(GTK_IMAGE(image), the_one.GetPixbuf()); } wxSize wxBitmapButton::DoGetBestSize() const diff --git a/src/gtk/menu.cpp b/src/gtk/menu.cpp index 782c17ce7b..47ece481a3 100644 --- a/src/gtk/menu.cpp +++ b/src/gtk/menu.cpp @@ -787,16 +787,9 @@ bool wxMenu::GtkAppend(wxMenuItem *mitem, int pos) const char* stockid; if (bitmap.IsOk()) { - GtkWidget* image; - if (bitmap.HasPixbuf()) - image = gtk_image_new_from_pixbuf(bitmap.GetPixbuf()); - else - { - GdkPixmap* mask = NULL; - if (bitmap.GetMask()) - mask = bitmap.GetMask()->GetBitmap(); - image = gtk_image_new_from_pixmap(bitmap.GetPixmap(), mask); - } + // always use pixbuf, because pixmap mask does not + // work with disabled images in some themes + GtkWidget* image = gtk_image_new_from_pixbuf(bitmap.GetPixbuf()); menuItem = gtk_image_menu_item_new_with_label(""); gtk_widget_show(image); gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuItem), image); diff --git a/src/gtk/statbmp.cpp b/src/gtk/statbmp.cpp index 6d6f82649c..aeb95223ec 100644 --- a/src/gtk/statbmp.cpp +++ b/src/gtk/statbmp.cpp @@ -14,8 +14,7 @@ #include "wx/statbmp.h" -#include "gdk/gdk.h" -#include "gtk/gtk.h" +#include //----------------------------------------------------------------------------- // wxStaticBitmap @@ -64,18 +63,9 @@ void wxStaticBitmap::SetBitmap( const wxBitmap &bitmap ) if (m_bitmap.Ok()) { - GdkBitmap *mask = (GdkBitmap *) NULL; - if (m_bitmap.GetMask()) - mask = m_bitmap.GetMask()->GetBitmap(); - - if (m_bitmap.HasPixbuf()) - { - gtk_image_set_from_pixbuf(GTK_IMAGE(m_widget), - m_bitmap.GetPixbuf()); - } - else - gtk_image_set_from_pixmap(GTK_IMAGE(m_widget), - m_bitmap.GetPixmap(), mask); + // always use pixbuf, because pixmap mask does not + // work with disabled images in some themes + gtk_image_set_from_pixbuf(GTK_IMAGE(m_widget), m_bitmap.GetPixbuf()); InvalidateBestSize(); SetSize(GetBestSize()); diff --git a/src/gtk/tglbtn.cpp b/src/gtk/tglbtn.cpp index 50b319394f..b98f151305 100644 --- a/src/gtk/tglbtn.cpp +++ b/src/gtk/tglbtn.cpp @@ -126,15 +126,13 @@ void wxBitmapToggleButton::OnSetBitmap() GtkWidget* image = ((GtkBin*)m_widget)->child; if (image == NULL) { - // initial bitmap - image = gtk_image_new_from_pixbuf(m_bitmap.GetPixbuf()); + image = gtk_image_new(); gtk_widget_show(image); gtk_container_add((GtkContainer*)m_widget, image); } - else - { // subsequent bitmaps - gtk_image_set_from_pixbuf((GtkImage*)image, m_bitmap.GetPixbuf()); - } + // always use pixbuf, because pixmap mask does not + // work with disabled images in some themes + gtk_image_set_from_pixbuf((GtkImage*)image, m_bitmap.GetPixbuf()); } bool wxBitmapToggleButton::Enable(bool enable /*=true*/)