X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9f8845289521c7f53e95b6dfd8275daab8b05639..7e4fb3b8168f4f2dbf2f8a246d3e094a8ccba194:/src/gtk/tbargtk.cpp diff --git a/src/gtk/tbargtk.cpp b/src/gtk/tbargtk.cpp index 16ead462ac..f7f791c65e 100644 --- a/src/gtk/tbargtk.cpp +++ b/src/gtk/tbargtk.cpp @@ -128,6 +128,21 @@ public: } } + void SetPixmap(const wxBitmap& bitmap) + { + if (bitmap.Ok()) + { + GdkBitmap *mask = bitmap.GetMask() ? bitmap.GetMask()->GetBitmap() + : (GdkBitmap *)NULL; +#ifdef __WXGTK20__ + if (bitmap.HasPixbuf()) + gtk_image_set_from_pixbuf( GTK_IMAGE(m_pixmap), bitmap.GetPixbuf() ); + else +#endif // !__WXGTK20__ + gtk_pixmap_set( GTK_PIXMAP(m_pixmap), bitmap.GetPixmap(), mask ); + } + } + GtkWidget *m_item; GtkWidget *m_pixmap; @@ -166,16 +181,7 @@ static void gtk_toolbar_callback( GtkWidget *WXUNUSED(widget), { tool->Toggle(); - wxBitmap bitmap = tool->GetBitmap(); - if ( bitmap.Ok() ) - { - GtkPixmap *pixmap = GTK_PIXMAP( tool->m_pixmap ); - - GdkBitmap *mask = bitmap.GetMask() ? bitmap.GetMask()->GetBitmap() - : (GdkBitmap *)NULL; - - gtk_pixmap_set( pixmap, bitmap.GetPixmap(), mask ); - } + tool->SetPixmap(tool->GetBitmap()); if ( tool->IsRadio() && !tool->IsToggled() ) { @@ -189,16 +195,7 @@ static void gtk_toolbar_callback( GtkWidget *WXUNUSED(widget), // revert back tool->Toggle(); - wxBitmap bitmap = tool->GetBitmap(); - if ( bitmap.Ok() ) - { - GtkPixmap *pixmap = GTK_PIXMAP( tool->m_pixmap ); - - GdkBitmap *mask = bitmap.GetMask() ? bitmap.GetMask()->GetBitmap() - : (GdkBitmap *)NULL; - - gtk_pixmap_set( pixmap, bitmap.GetPixmap(), mask ); - } + tool->SetPixmap(tool->GetBitmap()); } } @@ -393,14 +390,26 @@ bool wxToolBar::DoInsertTool(size_t pos, wxToolBarToolBase *toolBase) GtkWidget *tool_pixmap = (GtkWidget *)NULL; - GdkPixmap *pixmap = bitmap.GetPixmap(); - - GdkBitmap *mask = (GdkBitmap *)NULL; - if ( bitmap.GetMask() ) - mask = bitmap.GetMask()->GetBitmap(); - tool_pixmap = gtk_pixmap_new( pixmap, mask ); - gtk_pixmap_set_build_insensitive( GTK_PIXMAP(tool_pixmap), TRUE ); +#ifdef __WXGTK20__ + if (bitmap.HasPixbuf()) + { + tool_pixmap = gtk_image_new(); + tool->m_pixmap = tool_pixmap; + tool->SetPixmap(bitmap); + } + else +#endif + { + GdkPixmap *pixmap = bitmap.GetPixmap(); + + GdkBitmap *mask = (GdkBitmap *)NULL; + if ( bitmap.GetMask() ) + mask = bitmap.GetMask()->GetBitmap(); + + tool_pixmap = gtk_pixmap_new( pixmap, mask ); + gtk_pixmap_set_build_insensitive( GTK_PIXMAP(tool_pixmap), TRUE ); + } gtk_misc_set_alignment( GTK_MISC(tool_pixmap), 0.5, 0.5 ); @@ -548,16 +557,7 @@ void wxToolBar::DoToggleTool( wxToolBarToolBase *toolBase, bool toggle ) GtkWidget *item = tool->m_item; if ( item && GTK_IS_TOGGLE_BUTTON(item) ) { - wxBitmap bitmap = tool->GetBitmap(); - if ( bitmap.Ok() ) - { - GtkPixmap *pixmap = GTK_PIXMAP( tool->m_pixmap ); - - GdkBitmap *mask = bitmap.GetMask() ? bitmap.GetMask()->GetBitmap() - : (GdkBitmap *)NULL; - - gtk_pixmap_set( pixmap, bitmap.GetPixmap(), mask ); - } + tool->SetPixmap(tool->GetBitmap()); m_blockEvent = TRUE;