/////////////////////////////////////////////////////////////////////////////
-// Name: statbmp.cpp
+// Name: src/gtk/statbmp.cpp
// Purpose:
// Author: Robert Roebling
-// Id: $Id$
// Copyright: (c) 1998 Robert Roebling
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#include "wx/statbmp.h"
-#include "gdk/gdk.h"
-#include "gtk/gtk.h"
+#include <gtk/gtk.h>
//-----------------------------------------------------------------------------
// wxStaticBitmap
//-----------------------------------------------------------------------------
-IMPLEMENT_DYNAMIC_CLASS(wxStaticBitmap,wxControl)
-
wxStaticBitmap::wxStaticBitmap(void)
{
}
Create( parent, id, bitmap, pos, size, style, name );
}
-#ifndef __WXGTK20__
-// empty bitmap, so that we can create GtkPixmap widget:
-static char * bogus_xpm[] = {
-"2 2 1 1",
-" c None",
-" ",
-" "};
-#endif
-
bool wxStaticBitmap::Create( wxWindow *parent, wxWindowID id, const wxBitmap &bitmap,
const wxPoint &pos, const wxSize &size,
long style, const wxString &name )
{
- m_needParent = TRUE;
-
if (!PreCreation( parent, pos, size ) ||
!CreateBase( parent, id, pos, size, style, wxDefaultValidator, name ))
{
m_bitmap = bitmap;
-#ifdef __WXGTK20__
m_widget = gtk_image_new();
-#else
- wxBitmap bmp(bitmap.Ok() ? bitmap : wxBitmap(bogus_xpm));
- m_widget = gtk_pixmap_new(bmp.GetPixmap(), NULL);
-#endif
+ g_object_ref(m_widget);
- if (bitmap.Ok())
+ if (bitmap.IsOk())
SetBitmap(bitmap);
PostCreation(size);
{
m_bitmap = bitmap;
- if (m_bitmap.Ok())
+ if (m_bitmap.IsOk())
{
- GdkBitmap *mask = (GdkBitmap *) NULL;
- if (m_bitmap.GetMask())
- mask = m_bitmap.GetMask()->GetBitmap();
-
-#ifdef __WXGTK20__
- 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);
-#else
- gtk_pixmap_set(GTK_PIXMAP(m_widget), m_bitmap.GetPixmap(), mask);
-#endif
+ // 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());
wxVisualAttributes
wxStaticBitmap::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
{
- // TODO: overload to allow using gtk_pixmap_new?
- return GetDefaultAttributesFromGTKWidget(gtk_label_new);
+ return GetDefaultAttributesFromGTKWidget(gtk_image_new());
}
#endif // wxUSE_STATBMP