]> git.saurik.com Git - wxWidgets.git/commitdiff
Break implicit dependency of "core" on "adv" via wxXmlResourceHandlerImplBase.
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 27 Oct 2012 00:46:58 +0000 (00:46 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 27 Oct 2012 00:46:58 +0000 (00:46 +0000)
wxXmlResourceHandlerImplBase::GetAnimation() returned wxAnimation by value
which created references to wxAnimationCtrlNameStr and wxNullAnimation
symbols, defined in the "adv" library, in "core" when using Sun CC even though
they were not referenced directly.

Fix this by returning wxAnimation by pointer to keep it opaque for "core" code.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72782 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/xrc/xmlres.h
include/wx/xrc/xmlreshandler.h
samples/xrc/myframe.cpp
src/xrc/xh_animatctrl.cpp
src/xrc/xmladv.cpp

index 4622b3d8a74a1d78711af473817cd4e7e3657c9e..23cbea1c518e9decce971d756b5981c06d3921e5 100644 (file)
@@ -26,7 +26,6 @@
 #include "wx/icon.h"
 #include "wx/artprov.h"
 #include "wx/colour.h"
-#include "wx/animate.h"
 #include "wx/vector.h"
 
 #include "wx/xrc/xmlreshandler.h"
@@ -565,7 +564,7 @@ public:
 
 #if wxUSE_ANIMATIONCTRL
     // Gets an animation.
-    wxAnimation GetAnimation(const wxString& param = wxT("animation"));
+    wxAnimation* GetAnimation(const wxString& param = wxT("animation"));
 #endif
 
     // Gets a font.
index 46eb374c185e521e43286b4711539071db92496b..d0ad233519fcad5a030186c3ed443996f9234826 100644 (file)
 #include "wx/string.h"
 #include "wx/artprov.h"
 #include "wx/colour.h"
-#include "wx/animate.h"
 #include "wx/filesys.h"
 #include "wx/imaglist.h"
 
+class WXDLLIMPEXP_FWD_ADV wxAnimation;
+
 class WXDLLIMPEXP_FWD_XML wxXmlNode;
 class WXDLLIMPEXP_FWD_XML wxXmlResource;
 
@@ -87,7 +88,7 @@ public:
     virtual wxImageList *GetImageList(const wxString& param = wxT("imagelist")) = 0;
 
 #if wxUSE_ANIMATIONCTRL
-    virtual wxAnimation GetAnimation(const wxString& param = wxT("animation")) = 0;
+    virtual wxAnimation* GetAnimation(const wxString& param = wxT("animation")) = 0;
 #endif
 
     virtual wxFont GetFont(const wxString& param = wxT("font"), wxWindow* parent = NULL) = 0;
@@ -305,7 +306,7 @@ protected:
     }
 
 #if wxUSE_ANIMATIONCTRL
-    wxAnimation GetAnimation(const wxString& param = wxT("animation"))
+    wxAnimation* GetAnimation(const wxString& param = wxT("animation"))
     {
         return GetImpl()->GetAnimation(param);
     }
index 6662b34597e0f5a02c1f9bed4d17fa8c29930221..509ea31833d05629dc9e3f2bf21af5cf45685f95 100644 (file)
@@ -51,7 +51,8 @@
 #include "custclas.h"
 // And our objref dialog, for the object reference and ID range example.
 #include "objrefdlg.h"
-// For functions to manipulate our wxTreeCtrl and wxListCtrl
+// For functions to manipulate the corresponding controls.
+#include "wx/animate.h"
 #include "wx/treectrl.h"
 #include "wx/listctrl.h"
 
index 6bded88fdca7730daf4f48269a9fccd80221dffb..b912f1b92bbbd4ddd9fbf03f2df0277c5439e758 100644 (file)
@@ -19,6 +19,7 @@
 
 #include "wx/xrc/xh_animatctrl.h"
 #include "wx/animate.h"
+#include "wx/scopedptr.h"
 
 IMPLEMENT_DYNAMIC_CLASS(wxAnimationCtrlXmlHandler, wxXmlResourceHandler)
 
@@ -33,9 +34,11 @@ wxObject *wxAnimationCtrlXmlHandler::DoCreateResource()
 {
     XRC_MAKE_INSTANCE(ctrl, wxAnimationCtrl)
 
+    wxScopedPtr<wxAnimation> animation(GetAnimation(wxT("animation")));
+
     ctrl->Create(m_parentAsWindow,
                   GetID(),
-                  GetAnimation(wxT("animation")),
+                  animation ? *animation : wxNullAnimation,
                   GetPosition(), GetSize(),
                   GetStyle(wxT("style"), wxAC_DEFAULT_STYLE),
                   GetName());
index 6f6f36067a5608f97e49f6c2183e3bc55740e8b6..729c5b2892127534860ad0dc997171d67be5ccfc 100644 (file)
     #include "wx/log.h"
 #endif // WX_PRECOMP
 
+#include "wx/animate.h"
+#include "wx/scopedptr.h"
+
 // ============================================================================
 // implementation
 // ============================================================================
 
 #if wxUSE_ANIMATIONCTRL
-wxAnimation wxXmlResourceHandlerImpl::GetAnimation(const wxString& param)
+wxAnimation* wxXmlResourceHandlerImpl::GetAnimation(const wxString& param)
 {
     const wxString name = GetParamValue(param);
     if ( name.empty() )
-        return wxNullAnimation;
+        return NULL;
 
     // load the animation from file
-    wxAnimation ani;
+    wxScopedPtr<wxAnimation> ani(new wxAnimation);
 #if wxUSE_FILESYSTEM
     wxFSFile * const
         fsfile = GetCurFileSystem().OpenFile(name, wxFS_READ | wxFS_SEEKABLE);
     if ( fsfile )
     {
-        ani.Load(*fsfile->GetStream());
+        ani->Load(*fsfile->GetStream());
         delete fsfile;
     }
 #else
-    ani.LoadFile(name);
+    ani->LoadFile(name);
 #endif
 
-    if ( !ani.IsOk() )
+    if ( !ani->IsOk() )
     {
         ReportParamError
         (
             param,
             wxString::Format("cannot create animation from \"%s\"", name)
         );
-        return wxNullAnimation;
+        return NULL;
     }
 
-    return ani;
+    return ani.release();
 }
 #endif // wxUSE_ANIMATIONCTRL