use modern construct 'nullptr' instead of 'NULL' or '0'
[platform/core/uifw/dali-core.git] / dali / internal / event / actors / actor-impl.cpp
index 65e9ee2..4911842 100644 (file)
@@ -27,7 +27,7 @@
 #include <dali/devel-api/actors/layer-devel.h>
 #include <dali/public-api/common/dali-common.h>
 #include <dali/public-api/common/constants.h>
-#include <dali/public-api/events/touch-data.h>
+#include <dali/public-api/events/touch-event.h>
 #include <dali/public-api/math/vector2.h>
 #include <dali/public-api/math/vector3.h>
 #include <dali/public-api/math/radian.h>
@@ -220,17 +220,17 @@ DALI_PROPERTY( "connectedToScene",          BOOLEAN,  false, false, false, Dali:
 DALI_PROPERTY( "keyboardFocusable",         BOOLEAN,  true,  false, false, Dali::Actor::Property::KEYBOARD_FOCUSABLE )
 DALI_PROPERTY( "siblingOrder",              INTEGER,  true,  false, false, Dali::DevelActor::Property::SIBLING_ORDER )
 DALI_PROPERTY( "updateSizeHint",            VECTOR2,  true,  false, false, Dali::DevelActor::Property::UPDATE_SIZE_HINT )
+DALI_PROPERTY( "captureAllTouchAfterStart", BOOLEAN,  true,  false, false, Dali::DevelActor::Property::CAPTURE_ALL_TOUCH_AFTER_START )
 DALI_PROPERTY_TABLE_END( DEFAULT_ACTOR_PROPERTY_START_INDEX, ActorDefaultProperties )
 
 // Signals
 
-const char* const SIGNAL_TOUCHED = "touched";
 const char* const SIGNAL_HOVERED = "hovered";
 const char* const SIGNAL_WHEEL_EVENT = "wheelEvent";
-const char* const SIGNAL_ON_STAGE = "onStage";
-const char* const SIGNAL_OFF_STAGE = "offStage";
+const char* const SIGNAL_ON_SCENE = "onScene";
+const char* const SIGNAL_OFF_SCENE = "offScene";
 const char* const SIGNAL_ON_RELAYOUT = "onRelayout";
-const char* const SIGNAL_TOUCH = "touch";
+const char* const SIGNAL_TOUCHED = "touched";
 const char* const SIGNAL_VISIBILITY_CHANGED = "visibilityChanged";
 const char* const SIGNAL_LAYOUT_DIRECTION_CHANGED = "layoutDirectionChanged";
 const char* const SIGNAL_CHILD_ADDED = "childAdded";
@@ -248,13 +248,12 @@ BaseHandle CreateActor()
 
 TypeRegistration mType( typeid(Dali::Actor), typeid(Dali::Handle), CreateActor, ActorDefaultProperties );
 
-SignalConnectorType signalConnector1( mType, SIGNAL_TOUCHED, &Actor::DoConnectSignal );
 SignalConnectorType signalConnector2( mType, SIGNAL_HOVERED, &Actor::DoConnectSignal );
 SignalConnectorType signalConnector3( mType, SIGNAL_WHEEL_EVENT, &Actor::DoConnectSignal );
-SignalConnectorType signalConnector4( mType, SIGNAL_ON_STAGE, &Actor::DoConnectSignal );
-SignalConnectorType signalConnector5( mType, SIGNAL_OFF_STAGE, &Actor::DoConnectSignal );
+SignalConnectorType signalConnector4( mType, SIGNAL_ON_SCENE, &Actor::DoConnectSignal );
+SignalConnectorType signalConnector5( mType, SIGNAL_OFF_SCENE, &Actor::DoConnectSignal );
 SignalConnectorType signalConnector6( mType, SIGNAL_ON_RELAYOUT, &Actor::DoConnectSignal );
-SignalConnectorType signalConnector7( mType, SIGNAL_TOUCH, &Actor::DoConnectSignal );
+SignalConnectorType signalConnector7( mType, SIGNAL_TOUCHED, &Actor::DoConnectSignal );
 SignalConnectorType signalConnector8( mType, SIGNAL_VISIBILITY_CHANGED, &Actor::DoConnectSignal );
 SignalConnectorType signalConnector9( mType, SIGNAL_LAYOUT_DIRECTION_CHANGED, &Actor::DoConnectSignal );
 SignalConnectorType signalConnector10( mType, SIGNAL_CHILD_ADDED, &Actor::DoConnectSignal );
@@ -447,9 +446,9 @@ uint32_t Actor::GetId() const
   return GetNode().GetId();
 }
 
-bool Actor::OnStage() const
+bool Actor::OnScene() const
 {
-  return mIsOnStage;
+  return mIsOnScene;
 }
 
 Dali::Layer Actor::GetLayer()
@@ -463,7 +462,7 @@ Dali::Layer Actor::GetLayer()
   }
 
   // Find the immediate Layer parent
-  for( Actor* parent = mParent; !layer && parent != NULL; parent = parent->GetParent() )
+  for( Actor* parent = mParent; !layer && parent != nullptr; parent = parent->GetParent() )
   {
     if( parent->IsLayer() )
     {
@@ -550,7 +549,7 @@ void Actor::Remove( Actor& child )
       mChildren->erase( iter );
 
       DALI_ASSERT_DEBUG( actor->GetParent() == this );
-      actor->SetParent( NULL );
+      actor->SetParent( nullptr );
 
       break;
     }
@@ -583,7 +582,7 @@ void Actor::Unparent()
 
 uint32_t Actor::GetChildCount() const
 {
-  return ( NULL != mChildren ) ? static_cast<uint32_t>( mChildren->size() ) : 0; // only 4,294,967,295 children per actor
+  return ( nullptr != mChildren ) ? static_cast<uint32_t>( mChildren->size() ) : 0; // only 4,294,967,295 children per actor
 }
 
 ActorPtr Actor::GetChildAt( uint32_t index ) const
@@ -595,7 +594,7 @@ ActorPtr Actor::GetChildAt( uint32_t index ) const
 
 ActorPtr Actor::FindChildByName( const std::string& actorName )
 {
-  ActorPtr child = 0;
+  ActorPtr child = nullptr;
   if( actorName == mName )
   {
     child = this;
@@ -618,7 +617,7 @@ ActorPtr Actor::FindChildByName( const std::string& actorName )
 
 ActorPtr Actor::FindChildById( const uint32_t id )
 {
-  ActorPtr child = 0;
+  ActorPtr child = nullptr;
   if( id == GetId() )
   {
     child = this;
@@ -804,7 +803,7 @@ const Vector3& Actor::GetCurrentWorldPosition() const
 
 const Vector2 Actor::GetCurrentScreenPosition() const
 {
-  if( mScene && OnStage() )
+  if( mScene && OnScene() )
   {
     Vector3 worldPosition =  GetNode().GetWorldPosition( GetEventThreadServices().GetEventBufferIndex() );
     Vector3 cameraPosition = mScene->GetDefaultCameraActor().GetNode().GetWorldPosition( GetEventThreadServices().GetEventBufferIndex() );
@@ -1540,7 +1539,7 @@ DrawMode::Type Actor::GetDrawMode() const
 bool Actor::ScreenToLocal( float& localX, float& localY, float screenX, float screenY ) const
 {
   // only valid when on-stage
-  if( mScene && OnStage() )
+  if( mScene && OnScene() )
   {
     const RenderTaskList& taskList = mScene->GetRenderTaskList();
 
@@ -1565,7 +1564,7 @@ bool Actor::ScreenToLocal( const RenderTask& renderTask, float& localX, float& l
 {
   bool retval = false;
   // only valid when on-stage
-  if( OnStage() )
+  if( OnScene() )
   {
     CameraActor* camera = renderTask.GetCameraActor();
     if( camera )
@@ -1587,7 +1586,7 @@ bool Actor::ScreenToLocal( const RenderTask& renderTask, float& localX, float& l
 bool Actor::ScreenToLocal( const Matrix& viewMatrix, const Matrix& projectionMatrix, const Viewport& viewport, float& localX, float& localY, float screenX, float screenY ) const
 {
   // Early-out if not on stage
-  if( !OnStage() )
+  if( !OnScene() )
   {
     return false;
   }
@@ -1698,7 +1697,7 @@ bool Actor::RaySphereTest( const Vector4& rayOrigin, const Vector4& rayDir ) con
    */
 
   // Early-out if not on stage
-  if( !OnStage() )
+  if( !OnScene() )
   {
     return false;
   }
@@ -1731,7 +1730,7 @@ bool Actor::RayActorTest( const Vector4& rayOrigin, const Vector4& rayDir, Vecto
 {
   bool hit = false;
 
-  if( OnStage() )
+  if( OnScene() )
   {
     // Transforms the ray to the local reference system.
     // Calculate the inverse of Model matrix
@@ -1789,17 +1788,17 @@ bool Actor::IsKeyboardFocusable() const
 
 bool Actor::GetTouchRequired() const
 {
-  return !mTouchedSignal.Empty() || !mTouchSignal.Empty() || mDerivedRequiresTouch;
+  return !mTouchedSignal.Empty();
 }
 
 bool Actor::GetHoverRequired() const
 {
-  return !mHoveredSignal.Empty() || mDerivedRequiresHover;
+  return !mHoveredSignal.Empty();
 }
 
 bool Actor::GetWheelEventRequired() const
 {
-  return !mWheelEventSignal.Empty() || mDerivedRequiresWheelEvent;
+  return !mWheelEventSignal.Empty();
 }
 
 bool Actor::IsHittable() const
@@ -1811,44 +1810,32 @@ ActorGestureData& Actor::GetGestureData()
 {
   // Likely scenario is that once gesture-data is created for this actor, the actor will require
   // that gesture for its entire life-time so no need to destroy it until the actor is destroyed
-  if( NULL == mGestureData )
+  if( nullptr == mGestureData )
   {
     mGestureData = new ActorGestureData;
   }
   return *mGestureData;
 }
 
-bool Actor::IsGestureRequred( DevelGesture::Type type ) const
+bool Actor::IsGestureRequired( GestureType::Value type ) const
 {
-  return mGestureData && mGestureData->IsGestureRequred( type );
+  return mGestureData && mGestureData->IsGestureRequired( type );
 }
 
-bool Actor::EmitTouchEventSignal( const TouchEvent& event, const Dali::TouchData& touch )
+bool Actor::EmitTouchEventSignal( const Dali::TouchEvent& touch )
 {
   bool consumed = false;
 
-  if( !mTouchSignal.Empty() )
-  {
-    Dali::Actor handle( this );
-    consumed = mTouchSignal.Emit( handle, touch );
-  }
-
   if( !mTouchedSignal.Empty() )
   {
     Dali::Actor handle( this );
-    consumed |= mTouchedSignal.Emit( handle, event );
-  }
-
-  if( !consumed )
-  {
-    // Notification for derived classes
-    consumed = OnTouchEvent( event ); // TODO
+    consumed = mTouchedSignal.Emit( handle, touch );
   }
 
   return consumed;
 }
 
-bool Actor::EmitHoverEventSignal( const HoverEvent& event )
+bool Actor::EmitHoverEventSignal( const Dali::HoverEvent& event )
 {
   bool consumed = false;
 
@@ -1858,16 +1845,10 @@ bool Actor::EmitHoverEventSignal( const HoverEvent& event )
     consumed = mHoveredSignal.Emit( handle, event );
   }
 
-  if( !consumed )
-  {
-    // Notification for derived classes
-    consumed = OnHoverEvent( event );
-  }
-
   return consumed;
 }
 
-bool Actor::EmitWheelEventSignal( const WheelEvent& event )
+bool Actor::EmitWheelEventSignal( const Dali::WheelEvent& event )
 {
   bool consumed = false;
 
@@ -1877,12 +1858,6 @@ bool Actor::EmitWheelEventSignal( const WheelEvent& event )
     consumed = mWheelEventSignal.Emit( handle, event );
   }
 
-  if( !consumed )
-  {
-    // Notification for derived classes
-    consumed = OnWheelEvent( event );
-  }
-
   return consumed;
 }
 
@@ -1922,16 +1897,11 @@ void Actor::EmitChildRemovedSignal( Actor& child )
   }
 }
 
-Dali::Actor::TouchSignalType& Actor::TouchedSignal()
+Dali::Actor::TouchEventSignalType& Actor::TouchedSignal()
 {
   return mTouchedSignal;
 }
 
-Dali::Actor::TouchDataSignalType& Actor::TouchSignal()
-{
-  return mTouchSignal;
-}
-
 Dali::Actor::HoverSignalType& Actor::HoveredSignal()
 {
   return mHoveredSignal;
@@ -1942,14 +1912,14 @@ Dali::Actor::WheelEventSignalType& Actor::WheelEventSignal()
   return mWheelEventSignal;
 }
 
-Dali::Actor::OnStageSignalType& Actor::OnStageSignal()
+Dali::Actor::OnSceneSignalType& Actor::OnSceneSignal()
 {
-  return mOnStageSignal;
+  return mOnSceneSignal;
 }
 
-Dali::Actor::OffStageSignalType& Actor::OffStageSignal()
+Dali::Actor::OffSceneSignalType& Actor::OffSceneSignal()
 {
-  return mOffStageSignal;
+  return mOffSceneSignal;
 }
 
 Dali::Actor::OnRelayoutSignalType& Actor::OnRelayoutSignal()
@@ -1987,11 +1957,7 @@ bool Actor::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tra
   bool connected( true );
   Actor* actor = static_cast< Actor* >( object ); // TypeRegistry guarantees that this is the correct type.
 
-  if( 0 == signalName.compare( SIGNAL_TOUCHED ) )
-  {
-    actor->TouchedSignal().Connect( tracker, functor );
-  }
-  else if( 0 == signalName.compare( SIGNAL_HOVERED ) )
+  if( 0 == signalName.compare( SIGNAL_HOVERED ) )
   {
     actor->HoveredSignal().Connect( tracker, functor );
   }
@@ -1999,21 +1965,21 @@ bool Actor::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tra
   {
     actor->WheelEventSignal().Connect( tracker, functor );
   }
-  else if( 0 == signalName.compare( SIGNAL_ON_STAGE ) )
+  else if( 0 == signalName.compare( SIGNAL_ON_SCENE ) )
   {
-    actor->OnStageSignal().Connect( tracker, functor );
+    actor->OnSceneSignal().Connect( tracker, functor );
   }
-  else if( 0 == signalName.compare( SIGNAL_OFF_STAGE ) )
+  else if( 0 == signalName.compare( SIGNAL_OFF_SCENE ) )
   {
-    actor->OffStageSignal().Connect( tracker, functor );
+    actor->OffSceneSignal().Connect( tracker, functor );
   }
   else if( 0 == signalName.compare( SIGNAL_ON_RELAYOUT ) )
   {
     actor->OnRelayoutSignal().Connect( tracker, functor );
   }
-  else if( 0 == signalName.compare( SIGNAL_TOUCH ) )
+  else if( 0 == signalName.compare( SIGNAL_TOUCHED ) )
   {
-    actor->TouchSignal().Connect( tracker, functor );
+    actor->TouchedSignal().Connect( tracker, functor );
   }
   else if( 0 == signalName.compare( SIGNAL_VISIBILITY_CHANGED ) )
   {
@@ -2043,19 +2009,18 @@ bool Actor::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tra
 Actor::Actor( DerivedType derivedType, const SceneGraph::Node& node )
 : Object( &node ),
   mScene( nullptr ),
-  mParent( NULL ),
-  mChildren( NULL ),
-  mRenderers( NULL ),
-  mParentOrigin( NULL ),
-  mAnchorPoint( NULL ),
-  mRelayoutData( NULL ),
-  mGestureData( NULL ),
+  mParent( nullptr ),
+  mChildren( nullptr ),
+  mRenderers( nullptr ),
+  mParentOrigin( nullptr ),
+  mAnchorPoint( nullptr ),
+  mRelayoutData( nullptr ),
+  mGestureData( nullptr ),
   mTouchedSignal(),
-  mTouchSignal(),
   mHoveredSignal(),
   mWheelEventSignal(),
-  mOnStageSignal(),
-  mOffStageSignal(),
+  mOnSceneSignal(),
+  mOffSceneSignal(),
   mOnRelayoutSignal(),
   mVisibilityChangedSignal(),
   mLayoutDirectionChangedSignal(),
@@ -2074,14 +2039,11 @@ Actor::Actor( DerivedType derivedType, const SceneGraph::Node& node )
   mUseAnimatedSize( AnimatedSizeFlag::CLEAR ),
   mIsRoot( ROOT_LAYER == derivedType ),
   mIsLayer( LAYER == derivedType || ROOT_LAYER == derivedType ),
-  mIsOnStage( false ),
+  mIsOnScene( false ),
   mSensitive( true ),
   mLeaveRequired( false ),
   mKeyboardFocusable( false ),
-  mDerivedRequiresTouch( false ),
-  mDerivedRequiresHover( false ),
-  mDerivedRequiresWheelEvent( false ),
-  mOnStageSignalled( false ),
+  mOnSceneSignalled( false ),
   mInsideOnSizeSet( false ),
   mInheritPosition( true ),
   mInheritOrientation( true ),
@@ -2089,6 +2051,7 @@ Actor::Actor( DerivedType derivedType, const SceneGraph::Node& node )
   mPositionUsesAnchorPoint( true ),
   mVisible( true ),
   mInheritLayoutDirection( true ),
+  mCaptureAllTouchAfterStart( false ),
   mLayoutDirection( LayoutDirection::LEFT_TO_RIGHT ),
   mDrawMode( DrawMode::NORMAL ),
   mColorMode( Node::DEFAULT_COLOR_MODE ),
@@ -2112,7 +2075,7 @@ Actor::~Actor()
     ActorConstIter endIter = mChildren->end();
     for( ActorIter iter = mChildren->begin(); iter != endIter; ++iter )
     {
-      (*iter)->SetParent( NULL );
+      (*iter)->SetParent( nullptr );
     }
   }
   delete mChildren;
@@ -2141,10 +2104,10 @@ Actor::~Actor()
   delete mRelayoutData;
 }
 
-void Actor::ConnectToStage( uint32_t parentDepth )
+void Actor::ConnectToScene( uint32_t parentDepth )
 {
   // This container is used instead of walking the Actor hierarchy.
-  // It protects us when the Actor hierarchy is modified during OnStageConnectionExternal callbacks.
+  // It protects us when the Actor hierarchy is modified during OnSceneConnectionExternal callbacks.
   ActorContainer connectionList;
 
   if( mScene )
@@ -2153,7 +2116,7 @@ void Actor::ConnectToStage( uint32_t parentDepth )
   }
 
   // This stage is atomic i.e. not interrupted by user callbacks.
-  RecursiveConnectToStage( connectionList, parentDepth + 1 );
+  RecursiveConnectToScene( connectionList, parentDepth + 1 );
 
   // Notify applications about the newly connected actors.
   const ActorIter endIter = connectionList.end();
@@ -2165,17 +2128,17 @@ void Actor::ConnectToStage( uint32_t parentDepth )
   RelayoutRequest();
 }
 
-void Actor::RecursiveConnectToStage( ActorContainer& connectionList, uint32_t depth )
+void Actor::RecursiveConnectToScene( ActorContainer& connectionList, uint32_t depth )
 {
-  DALI_ASSERT_ALWAYS( !OnStage() );
+  DALI_ASSERT_ALWAYS( !OnScene() );
 
-  mIsOnStage = true;
+  mIsOnScene = true;
   mDepth = static_cast< uint16_t >( depth ); // overflow ignored, not expected in practice
 
   ConnectToSceneGraph();
 
   // Notification for internal derived classes
-  OnStageConnectionInternal();
+  OnSceneConnectionInternal();
 
   // This stage is atomic; avoid emitting callbacks until all Actors are connected
   connectionList.push_back( ActorPtr( this ) );
@@ -2187,7 +2150,7 @@ void Actor::RecursiveConnectToStage( ActorContainer& connectionList, uint32_t de
     for( ActorIter iter = mChildren->begin(); iter != endIter; ++iter )
     {
       (*iter)->SetScene( *mScene );
-      (*iter)->RecursiveConnectToStage( connectionList, depth + 1 );
+      (*iter)->RecursiveConnectToScene( connectionList, depth + 1 );
     }
   }
 }
@@ -2196,7 +2159,7 @@ void Actor::RecursiveConnectToStage( ActorContainer& connectionList, uint32_t de
  * This method is called when the Actor is connected to the Stage.
  * The parent must have added its Node to the scene-graph.
  * The child must connect its Node to the parent's Node.
- * This is recursive; the child calls ConnectToStage() for its children.
+ * This is recursive; the child calls ConnectToScene() for its children.
  */
 void Actor::ConnectToSceneGraph()
 {
@@ -2215,22 +2178,22 @@ void Actor::ConnectToSceneGraph()
 void Actor::NotifyStageConnection()
 {
   // Actors can be removed (in a callback), before the on-stage stage is reported.
-  // The actor may also have been reparented, in which case mOnStageSignalled will be true.
-  if( OnStage() && !mOnStageSignalled )
+  // The actor may also have been reparented, in which case mOnSceneSignalled will be true.
+  if( OnScene() && !mOnSceneSignalled )
   {
     // Notification for external (CustomActor) derived classes
-    OnStageConnectionExternal( mDepth );
+    OnSceneConnectionExternal( mDepth );
 
-    if( !mOnStageSignal.Empty() )
+    if( !mOnSceneSignal.Empty() )
     {
       Dali::Actor handle( this );
-      mOnStageSignal.Emit( handle );
+      mOnSceneSignal.Emit( handle );
     }
 
     // Guard against Remove during callbacks
-    if( OnStage() )
+    if( OnScene() )
     {
-      mOnStageSignalled = true; // signal required next time Actor is removed
+      mOnSceneSignalled = true; // signal required next time Actor is removed
     }
   }
 }
@@ -2238,7 +2201,7 @@ void Actor::NotifyStageConnection()
 void Actor::DisconnectFromStage()
 {
   // This container is used instead of walking the Actor hierachy.
-  // It protects us when the Actor hierachy is modified during OnStageDisconnectionExternal callbacks.
+  // It protects us when the Actor hierachy is modified during OnSceneDisconnectionExternal callbacks.
   ActorContainer disconnectionList;
 
   if( mScene )
@@ -2259,8 +2222,8 @@ void Actor::DisconnectFromStage()
 
 void Actor::RecursiveDisconnectFromStage( ActorContainer& disconnectionList )
 {
-  // need to change state first so that internals relying on IsOnStage() inside OnStageDisconnectionInternal() get the correct value
-  mIsOnStage = false;
+  // need to change state first so that internals relying on IsOnScene() inside OnSceneDisconnectionInternal() get the correct value
+  mIsOnScene = false;
 
   // Recursively disconnect children
   if( mChildren )
@@ -2276,7 +2239,7 @@ void Actor::RecursiveDisconnectFromStage( ActorContainer& disconnectionList )
   disconnectionList.push_back( ActorPtr( this ) );
 
   // Notification for internal derived classes
-  OnStageDisconnectionInternal();
+  OnSceneDisconnectionInternal();
 
   DisconnectFromSceneGraph();
 }
@@ -2294,23 +2257,23 @@ void Actor::DisconnectFromSceneGraph()
 void Actor::NotifyStageDisconnection()
 {
   // Actors can be added (in a callback), before the off-stage state is reported.
-  // Also if the actor was added & removed before mOnStageSignalled was set, then we don't notify here.
+  // Also if the actor was added & removed before mOnSceneSignalled was set, then we don't notify here.
   // only do this step if there is a stage, i.e. Core is not being shut down
-  if ( EventThreadServices::IsCoreRunning() && !OnStage() && mOnStageSignalled )
+  if ( EventThreadServices::IsCoreRunning() && !OnScene() && mOnSceneSignalled )
   {
     // Notification for external (CustomeActor) derived classes
-    OnStageDisconnectionExternal();
+    OnSceneDisconnectionExternal();
 
-    if( !mOffStageSignal.Empty() )
+    if( !mOffSceneSignal.Empty() )
     {
       Dali::Actor handle( this );
-      mOffStageSignal.Emit( handle );
+      mOffSceneSignal.Emit( handle );
     }
 
     // Guard against Add during callbacks
-    if( !OnStage() )
+    if( !OnScene() )
     {
-      mOnStageSignalled = false; // signal required next time Actor is added
+      mOnSceneSignalled = false; // signal required next time Actor is added
     }
   }
 }
@@ -2319,7 +2282,7 @@ bool Actor::IsNodeConnected() const
 {
   bool connected( false );
 
-  if( OnStage() )
+  if( OnScene() )
   {
     if( IsRoot() || GetNode().GetParent() )
     {
@@ -2807,6 +2770,16 @@ void Actor::SetDefaultProperty( Property::Index index, const Property::Value& pr
       break;
     }
 
+    case Dali::DevelActor::Property::CAPTURE_ALL_TOUCH_AFTER_START:
+    {
+      bool boolValue = false;
+      if ( property.Get( boolValue ) )
+      {
+        mCaptureAllTouchAfterStart = boolValue;
+      }
+      break;
+    }
+
     default:
     {
       // this can happen in the case of a non-animatable default property so just do nothing
@@ -3327,7 +3300,7 @@ void Actor::OnNotifyDefaultPropertyAnimation( Animation& animation, Property::In
 
 const PropertyBase* Actor::GetSceneObjectAnimatableProperty( Property::Index index ) const
 {
-  const PropertyBase* property( NULL );
+  const PropertyBase* property( nullptr );
 
   switch( index )
   {
@@ -3391,7 +3364,7 @@ const PropertyBase* Actor::GetSceneObjectAnimatableProperty( Property::Index ind
 
 const PropertyInputImpl* Actor::GetSceneObjectInputProperty( Property::Index index ) const
 {
-  const PropertyInputImpl* property( NULL );
+  const PropertyInputImpl* property( nullptr );
 
   switch( index )
   {
@@ -3534,10 +3507,10 @@ void Actor::SetParent( Actor* parent )
     mScene = parent->mScene;
 
     if ( EventThreadServices::IsCoreRunning() && // Don't emit signals or send messages during Core destruction
-         parent->OnStage() )
+         parent->OnScene() )
     {
       // Instruct each actor to create a corresponding node in the scene graph
-      ConnectToStage( parent->GetHierarchyDepth() );
+      ConnectToScene( parent->GetHierarchyDepth() );
     }
 
     // Resolve the name and index for the child properties if any
@@ -3545,12 +3518,12 @@ void Actor::SetParent( Actor* parent )
   }
   else // parent being set to NULL
   {
-    DALI_ASSERT_ALWAYS( mParent != NULL && "Actor should have a parent" );
+    DALI_ASSERT_ALWAYS( mParent != nullptr && "Actor should have a parent" );
 
-    mParent = NULL;
+    mParent = nullptr;
 
     if ( EventThreadServices::IsCoreRunning() && // Don't emit signals or send messages during Core destruction
-         OnStage() )
+         OnScene() )
     {
       // Disconnect the Node & its children from the scene-graph.
       DisconnectNodeMessage( GetEventThreadServices().GetUpdateManager(), GetNode() );
@@ -3929,7 +3902,7 @@ bool Actor::GetCachedPropertyValue( Property::Index index, Property::Value& valu
 
     case Dali::Actor::Property::CONNECTED_TO_SCENE:
     {
-      value = OnStage();
+      value = OnScene();
       break;
     }
 
@@ -3939,6 +3912,12 @@ bool Actor::GetCachedPropertyValue( Property::Index index, Property::Value& valu
       break;
     }
 
+    case Dali::DevelActor::Property::CAPTURE_ALL_TOUCH_AFTER_START:
+    {
+      value = mCaptureAllTouchAfterStart;
+      break;
+    }
+
     default:
     {
       // Must be a scene-graph only property
@@ -4962,7 +4941,7 @@ uint32_t Actor::GetSiblingOrder() const
 
 void Actor::RequestRebuildDepthTree()
 {
-  if( mIsOnStage )
+  if( mIsOnScene )
   {
     if( mScene )
     {