]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/animate.cpp
Make wxMSW stack walking methods work with Unicode identifiers.
[wxWidgets.git] / src / gtk / animate.cpp
index e987f0f56808b5c66ce5b6b5079e1c938e7ad37c..8ed590bbe9b5b5d21d1d56f0ea4c7ab1ad97d402 100644 (file)
@@ -4,7 +4,6 @@
 // Author:      Francesco Montorsi
 // Modified By:
 // Created:     24/09/2006
-// Id:          $Id$
 // Copyright:   (c) Francesco Montorsi
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -23,6 +22,7 @@
 #endif
 
 #include "wx/wfstream.h"
+#include "wx/gtk/private.h"
 
 #include <gtk/gtk.h>
 
@@ -84,7 +84,7 @@ wxAnimation& wxAnimation::operator=(const wxAnimation& that)
 bool wxAnimation::LoadFile(const wxString &name, wxAnimationType WXUNUSED(type))
 {
     UnRef();
-    m_pixbuf = gdk_pixbuf_animation_new_from_file(name.fn_str(), NULL);
+    m_pixbuf = gdk_pixbuf_animation_new_from_file(wxGTK_CONV_FN(name), NULL);
     return IsOk();
 }
 
@@ -132,7 +132,8 @@ bool wxAnimation::Load(wxInputStream &stream, wxAnimationType type)
     while (stream.IsOk())
     {
         // read a chunk of data
-        if (!stream.Read(buf, sizeof(buf)))
+        if (!stream.Read(buf, sizeof(buf)) &&
+            stream.GetLastError() != wxSTREAM_EOF)   // EOF is OK for now
         {
             // gdk_pixbuf_loader_close wants the GError == NULL
             gdk_pixbuf_loader_close(loader, NULL);
@@ -158,7 +159,9 @@ bool wxAnimation::Load(wxInputStream &stream, wxAnimationType type)
         return false;
     }
 
-    // load complete
+    // load complete: gdk_pixbuf_loader_close will now check if the data we
+    // wrote inside the pixbuf loader does make sense and will give an error
+    // if it doesn't (because of a truncated file, corrupted data or whatelse)
     if (!gdk_pixbuf_loader_close(loader, &error))
     {
         wxLogDebug(wxT("Could not close the loader: %s"), error->message);
@@ -230,7 +233,6 @@ bool wxAnimationCtrl::Create( wxWindow *parent, wxWindowID id,
 
     m_widget = gtk_image_new();
     g_object_ref(m_widget);
-    gtk_widget_show(m_widget);
 
     m_parent->DoAddChild( this );
 
@@ -360,20 +362,8 @@ void wxAnimationCtrl::DisplayStaticImage()
     if (m_bmpStaticReal.IsOk())
     {
         // show inactive bitmap
-        GdkBitmap *mask = (GdkBitmap *) NULL;
-        if (m_bmpStaticReal.GetMask())
-            mask = m_bmpStaticReal.GetMask()->GetBitmap();
-
-        if (m_bmpStaticReal.HasPixbuf())
-        {
-            gtk_image_set_from_pixbuf(GTK_IMAGE(m_widget),
+        gtk_image_set_from_pixbuf(GTK_IMAGE(m_widget),
                                       m_bmpStaticReal.GetPixbuf());
-        }
-        else
-        {
-            gtk_image_set_from_pixmap(GTK_IMAGE(m_widget),
-                                      m_bmpStaticReal.GetPixmap(), mask);
-        }
     }
     else
     {