*/
// CLASS HEADER
+#include <dali/internal/event/events/actor-observer.h>
#include <dali/integration-api/debug.h>
#include <dali/internal/event/actors/actor-impl.h>
-#include <dali/internal/event/events/actor-observer.h>
namespace Dali
{
#endif // defined(DEBUG_ENABLED)
}
-ActorObserver::ActorObserver::ActorObserver()
+ActorObserver::ActorObserver()
: mActor ( NULL ),
- mActorDisconnected(false)
+ mActorDisconnected( false ),
+ mRemoveCallback( NULL )
{
DALI_LOG_TRACE_METHOD( gLogFilter );
}
-ActorObserver::ActorObserver::~ActorObserver()
+ActorObserver::ActorObserver( CallbackBase* callback )
+: mActor ( NULL ),
+ mActorDisconnected( false ),
+ mRemoveCallback( callback )
+{
+}
+
+ActorObserver::~ActorObserver()
{
DALI_LOG_TRACE_METHOD( gLogFilter );
SetActor( NULL );
+
+ delete mRemoveCallback;
}
-Actor* ActorObserver::ActorObserver::GetActor()
+Actor* ActorObserver::GetActor()
{
return mActorDisconnected ? NULL : mActor;
}
-void ActorObserver::ActorObserver::SetActor( Actor* actor )
+void ActorObserver::SetActor( Actor* actor )
{
DALI_LOG_TRACE_METHOD( gLogFilter );
mActorDisconnected = false;
}
-void ActorObserver::ActorObserver::ResetActor()
+void ActorObserver::ResetActor()
{
if ( mActor )
{
}
}
-void ActorObserver::ActorObserver::SceneObjectRemoved( ProxyObject& proxy )
+void ActorObserver::SceneObjectRemoved( Object& object )
{
DALI_LOG_TRACE_METHOD( gLogFilter );
- if ( mActor == &proxy )
+ if ( mActor == &object )
{
- // do not call proxy.RemoveObserver here, proxy is currently iterating through observers... you wouldnt want to upset proxy now would you?
+ if ( mRemoveCallback )
+ {
+// CallbackBase::Execute( *mRemoveCallback, mActor );
+ }
+
+ // do not call object.RemoveObserver here, object is currently iterating through observers
mActorDisconnected = true;
}
}
-void ActorObserver::ActorObserver::ProxyDestroyed(ProxyObject& proxy)
+void ActorObserver::ObjectDestroyed(Object& object)
{
DALI_LOG_TRACE_METHOD( gLogFilter );
- if ( mActor == &proxy )
+ if ( mActor == &object )
{
DALI_LOG_INFO(gLogFilter, Debug::Verbose, "Stop Observing: %p\n", mActor);
mActor = NULL;