Merge "Update Object's public header comments" into devel/master
[platform/core/uifw/dali-core.git] / dali / internal / event / events / touch-event-processor.h
index 4022045..e0c38b7 100644 (file)
@@ -20,7 +20,7 @@
 
 // INTERNAL INCLUDES
 #include <dali/public-api/render-tasks/render-task.h>
-#include <dali/internal/event/common/proxy-object.h>
+#include <dali/internal/event/events/actor-observer.h>
 
 namespace Dali
 {
@@ -39,6 +39,7 @@ namespace Internal
 
 class Actor;
 class Stage;
+struct ActorObserver;
 
 /**
  * <h3>Multi-Touch Event Processing:</h3>
@@ -77,85 +78,19 @@ private:
   // Undefined
   TouchEventProcessor& operator=(const TouchEventProcessor& rhs);
 
-private:
-
   /**
-   * Stores an actor pointer and connects/disconnects to any required signals appropriately when set/unset.
+   * Called by some actor-observers when the observed actor is disconnected.
+   *
+   * @param[in]  actor  The actor that has been disconnected.
    */
-  struct ActorObserver : public ProxyObject::Observer
-  {
-  public:
-
-    // Construction & Destruction
-
-    /**
-     * Constructor.
-     */
-    ActorObserver();
-
-    /**
-     * Non virtual destructor
-     */
-    ~ActorObserver();
-
-    // Methods
-
-    /**
-     * Return the stored Actor pointer.
-     * @return The Actor pointer.
-     */
-    Actor* GetActor();
-
-    /**
-     * Assignment operator.
-     * This disconnects the required signals from the currently set actor and connects to the required
-     * signals for the the actor specified (if set).
-     */
-    void SetActor( Actor* actor );
-
-    /**
-     * Resets the set actor and disconnects any connected signals.
-     */
-    void ResetActor();
-
-  private:
-
-    // Undefined
-    ActorObserver( const ActorObserver& );
-    ActorObserver& operator=( const ActorObserver& );
-
-  private:
-
-    /**
-     * This will never get called as we do not observe objects that have not been added to the scene.
-     * @param[in] proxy The proxy object.
-     * @see ProxyObject::Observer::SceneObjectAdded()
-     */
-    virtual void SceneObjectAdded(ProxyObject& proxy) { }
-
-    /**
-     * This will be called when the actor is removed from the stage, we should clear and stop
-     * observing it.
-     * @param[in] proxy The proxy object.
-     * @see ProxyObject::Observer::SceneObjectRemoved()
-     */
-    virtual void SceneObjectRemoved(ProxyObject& proxy);
-
-    /**
-     * This will be called when the actor is destroyed. We should clear the actor.
-     * No need to stop observing as the object is being destroyed anyway.
-     * @see ProxyObject::Observer::ProxyDestroyed()
-     */
-    virtual void ProxyDestroyed(ProxyObject& proxy);
-
-  private:
-    Actor* mActor;              ///< Raw pointer to an Actor.
-    bool   mActorDisconnected;  ///< Indicates whether the actor has been disconnected from the scene
-  };
+  void OnObservedActorDisconnected( Actor* actor );
+
+private:
 
   Stage& mStage; ///< Used to deliver touch events
   ActorObserver mLastPrimaryHitActor; ///< Stores the last primary point hit actor
   ActorObserver mLastConsumedActor; ///< Stores the last consumed actor
+  ActorObserver mTouchDownConsumedActor; ///< Stores the touch-down consumed actor
   Dali::RenderTask mLastRenderTask; ///< The RenderTask used for the last hit actor
 };