bool& mSignalCalled;
};
+struct ChildOrderChangedFunctor
+{
+ ChildOrderChangedFunctor(bool& signalCalled)
+ : mSignalCalled( signalCalled )
+ { }
+
+ void operator()()
+ {
+ mSignalCalled = true;
+ }
+
+ bool& mSignalCalled;
+};
+
} // anonymous namespace
actorB.TouchSignal().Connect( TestTouchCallback2 );
actorC.TouchSignal().Connect( TestTouchCallback3 );
+ bool orderChangedSignal(false);
+ ChildOrderChangedFunctor f(orderChangedSignal);
+ DevelActor::ChildOrderChangedSignal( stage.GetRootLayer() ).Connect( &application, f ) ;
+
Dali::Integration::Point point;
point.SetDeviceId( 1 );
point.SetState( PointState::DOWN );
tet_printf( "Raise actor B Above Actor C\n" );
+ DALI_TEST_EQUALS( orderChangedSignal, false, TEST_LOCATION );
actorB.RaiseAbove( actorC );
+ DALI_TEST_EQUALS( orderChangedSignal, true, TEST_LOCATION );
+
// Ensure sorting happens at end of Core::ProcessEvents() before next touch
application.SendNotification();
-
application.ProcessEvent( touchEvent );
DALI_TEST_EQUALS( gTouchCallBackCalled, false, TEST_LOCATION );
return GetImplementation( actor ).ChildRemovedSignal();
}
+ChildOrderChangedSignalType& ChildOrderChangedSignal( Actor actor )
+{
+ return GetImplementation( actor ).ChildOrderChangedSignal();
+}
+
} // namespace DevelActor
DALI_CORE_API ChildChangedSignalType& ChildRemovedSignal( Actor actor );
+typedef Signal< void (void) > ChildOrderChangedSignalType; ///< Used when the actor's children have changed order
+
+/**
+ * @brief This signal is emitted when an actor's children change their sibling order
+ *
+ * A callback of the following type may be connected:
+ * @code
+ * void MyCallbackName( Actor parent );
+ * @endcode
+ * parent The parent actor of the moved children
+ *
+ * @return The signal to connect to
+ * @pre The Actor has been initialized
+ */
+DALI_CORE_API ChildOrderChangedSignalType& ChildOrderChangedSignal( Actor actor );
+
+
+
} // namespace DevelActor
} // namespace Dali
return mChildRemovedSignal;
}
+DevelActor::ChildOrderChangedSignalType& Actor::ChildOrderChangedSignal()
+{
+ return mChildOrderChangedSignal;
+}
+
bool Actor::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor )
{
bool connected( true );
mLayoutDirectionChangedSignal(),
mChildAddedSignal(),
mChildRemovedSignal(),
+ mChildOrderChangedSignal(),
mTargetOrientation( Quaternion::IDENTITY ),
mTargetColor( Color::WHITE ),
mTargetSize( Vector3::ZERO ),
}
}
}
+ mParent->mChildOrderChangedSignal.Emit();
RequestRebuildDepthTree();
}
else
}
}
}
+ mParent->mChildOrderChangedSignal.Emit();
RequestRebuildDepthTree();
}
else
siblings.push_back(ActorPtr(this));
}
}
+ mParent->mChildOrderChangedSignal.Emit();
RequestRebuildDepthTree();
}
else
siblings.insert(siblings.begin(), thisPtr);
}
}
+ mParent->mChildOrderChangedSignal.Emit();
RequestRebuildDepthTree();
}
else
++targetIter;
siblings.insert(targetIter, thisPtr);
}
+
+ mParent->mChildOrderChangedSignal.Emit();
RequestRebuildDepthTree();
}
}
siblings.erase(thisIter); // this only invalidates iterators at or after this point.
siblings.insert(targetIter, thisPtr);
}
+
+ mParent->mChildOrderChangedSignal.Emit();
RequestRebuildDepthTree();
}
}
DevelActor::ChildChangedSignalType& ChildRemovedSignal();
/**
+ * @copydoc DevelActor::ChildOrderChangedSignal
+ */
+ DevelActor::ChildOrderChangedSignalType& ChildOrderChangedSignal();
+
+ /**
* Connects a callback function with the object's signals.
* @param[in] object The object providing the signal.
* @param[in] tracker Used to disconnect the signal.
void RebuildDepthTree();
protected:
-
/**
* Traverse the actor tree, inserting actors into the depth tree in sibling order.
* @param[in] sceneGraphNodeDepths A vector capturing the nodes and their depth index
Dali::Actor::LayoutDirectionChangedSignalType mLayoutDirectionChangedSignal;
DevelActor::ChildChangedSignalType mChildAddedSignal;
DevelActor::ChildChangedSignalType mChildRemovedSignal;
+ DevelActor::ChildOrderChangedSignalType mChildOrderChangedSignal;
Quaternion mTargetOrientation; ///< Event-side storage for orientation
Vector4 mTargetColor; ///< Event-side storage for color