X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9b72a74d94bca6303a65a3a13958461eb6c7290a..10ef30eb534117ae854c9d099101c862fe96bcb0:/src/gtk1/bitmap.cpp?ds=sidebyside

diff --git a/src/gtk1/bitmap.cpp b/src/gtk1/bitmap.cpp
index 4f5ad6a770..0a27495252 100644
--- a/src/gtk1/bitmap.cpp
+++ b/src/gtk1/bitmap.cpp
@@ -21,13 +21,23 @@
 #include "wx/dcmemory.h"
 #include "wx/app.h"
 
+#ifdef __WXGTK20__
+    // need this to get gdk_image_new_bitmap()
+    #define GDK_ENABLE_BROKEN
+#endif
+
 #include <gdk/gdk.h>
 #include <gtk/gtk.h>
 #include <gdk/gdkx.h>
 
-#if (GTK_MINOR_VERSION > 0)
-#include <gdk/gdkrgb.h>
-#endif
+#ifdef __WXGTK20__
+    #include <gdk/gdkimage.h>
+#else // GTK+ 1.2
+    // VZ: is this still needed? seems to compile fine without it...
+    #if (GTK_MINOR_VERSION > 0)
+        #include <gdk/gdkrgb.h>
+    #endif
+#endif // GTK+ 2.0/1.2
 
 extern void gdk_wx_draw_bitmap     (GdkDrawable  *drawable,
                           GdkGC               *gc,
@@ -300,6 +310,8 @@ bool wxBitmap::Create( int width, int height, int depth )
 
 bool wxBitmap::CreateFromXpm( const char **bits )
 {
+    UnRef();
+
     wxCHECK_MSG( bits != NULL, FALSE, wxT("invalid bitmap data") )
 
     GdkVisual *visual = wxTheApp->GetGdkVisual();
@@ -327,6 +339,8 @@ bool wxBitmap::CreateFromXpm( const char **bits )
 
 bool wxBitmap::CreateFromImage( const wxImage& image, int depth )
 {
+    UnRef();
+
     wxCHECK_MSG( image.Ok(), FALSE, wxT("invalid image") )
     wxCHECK_MSG( depth == -1 || depth == 1, FALSE, wxT("invalid bitmap depth") )
 
@@ -510,7 +524,7 @@ bool wxBitmap::CreateFromImage( const wxImage& image, int depth )
         if (bpp > 8)
         {
             if ((visual->red_mask > visual->green_mask) && (visual->green_mask > visual->blue_mask))      b_o = RGB;
-            else if ((visual->red_mask > visual->blue_mask) && (visual->blue_mask > visual->green_mask))  b_o = RGB;
+            else if ((visual->red_mask > visual->blue_mask) && (visual->blue_mask > visual->green_mask))  b_o = RBG;
             else if ((visual->blue_mask > visual->red_mask) && (visual->red_mask > visual->green_mask))   b_o = BRG;
             else if ((visual->blue_mask > visual->green_mask) && (visual->green_mask > visual->red_mask)) b_o = BGR;
             else if ((visual->green_mask > visual->red_mask) && (visual->red_mask > visual->blue_mask))   b_o = GRB;