X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/74be3634b94f3febb0147cde99580e0344b8e74d..fb8d7eb7a880f1f2e32d8830f9c5e12b2536e05f:/src/gtk/animate.cpp?ds=sidebyside diff --git a/src/gtk/animate.cpp b/src/gtk/animate.cpp index e987f0f568..a70e92e872 100644 --- a/src/gtk/animate.cpp +++ b/src/gtk/animate.cpp @@ -23,6 +23,7 @@ #endif #include "wx/wfstream.h" +#include "wx/gtk/private.h" #include @@ -84,7 +85,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 +133,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 +160,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 +234,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 +363,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 {