case Dali::Toolkit::LayoutTransitionData::ON_CHILD_REMOVE:
mImpl->mOnChildRemoveTransitionData = layoutTransitionDataPtr;
break;
+ case Dali::Toolkit::LayoutTransitionData::ON_CHILD_FOCUS:
+ mImpl->mOnChildFocusTransitionData = layoutTransitionDataPtr;
+ break;
case Dali::Toolkit::LayoutTransitionData::ON_OWNER_SET:
mImpl->mOnOwnerSetTransitionData = layoutTransitionDataPtr;
break;
+ case Dali::Toolkit::LayoutTransitionData::ON_LAYOUT_CHANGE:
+ mImpl->mOnLayoutChangeTransitionData = layoutTransitionDataPtr;
+ break;
default:
break;
}
return mImpl->mOnChildAddTransitionData.Get();
case Dali::Toolkit::LayoutTransitionData::ON_CHILD_REMOVE:
return mImpl->mOnChildRemoveTransitionData.Get();
+ case Dali::Toolkit::LayoutTransitionData::ON_CHILD_FOCUS:
+ return mImpl->mOnChildFocusTransitionData.Get();
case Dali::Toolkit::LayoutTransitionData::ON_OWNER_SET:
return mImpl->mOnOwnerSetTransitionData.Get();
+ case Dali::Toolkit::LayoutTransitionData::ON_LAYOUT_CHANGE:
+ return mImpl->mOnLayoutChangeTransitionData.Get();
default:
return LayoutTransitionDataPtr();
}
}
LayoutData& layoutData = *mImpl->sLayoutData;
- size_t size = layoutData.childrenPropertyAnimators.size();
+ size_t size = layoutData.childrenLayoutDataArray.size();
bool changed = SetFrame( l, t, r, b );
mImpl->ClearPrivateFlag( Impl::PRIVATE_FLAG_LAYOUT_REQUIRED );
}
- if ( size != layoutData.childrenPropertyAnimators.size() )
+ if ( size != layoutData.childrenLayoutDataArray.size() )
{
- layoutData.childrenPropertyAnimators.resize( size );
+ layoutData.childrenLayoutDataArray.resize( size );
}
mImpl->ClearPrivateFlag( Impl::PRIVATE_FLAG_FORCE_LAYOUT );
layoutController.RequestLayout( Toolkit::LayoutItem( this ) );
}
-void LayoutItem::RequestLayout( Dali::Toolkit::LayoutTransitionData::LayoutTransitionType layoutAnimationType )
+void LayoutItem::RequestLayout( Dali::Toolkit::LayoutTransitionData::Type layoutAnimationType )
{
Toolkit::Control control = Toolkit::Control::DownCast( mImpl->mOwner );
if ( control )
layoutController.RequestLayout( Toolkit::LayoutItem(this), layoutAnimationType );
}
+void LayoutItem::RequestLayout( Dali::Toolkit::LayoutTransitionData::Type layoutAnimationType, Actor gainedChild, Actor lostChild )
+{
+ Toolkit::Control control = Toolkit::Control::DownCast( mImpl->mOwner );
+ if ( control )
+ {
+ DALI_LOG_INFO( gLayoutFilter, Debug::Verbose, "LayoutItem::RequestLayout control(%s) layoutTranstionType(%d)\n",
+ control.GetName().c_str(), (int)layoutAnimationType );
+ }
+ // @todo Enforce failure if called in Measure/Layout passes.
+ mImpl->SetPrivateFlag( Impl::PRIVATE_FLAG_FORCE_LAYOUT );
+ Toolkit::LayoutController layoutController = Toolkit::LayoutController::Get();
+ layoutController.RequestLayout( Toolkit::LayoutItem(this), layoutAnimationType, gainedChild, lostChild );
+}
+
bool LayoutItem::IsLayoutRequested() const
{
return mImpl->GetPrivateFlag( Impl::PRIVATE_FLAG_FORCE_LAYOUT );
LayoutLength LayoutItem::GetMeasuredWidth() const
{
// Get the size portion of the measured width
- return mImpl->mMeasuredWidth.GetSize();
+ return mImpl->mMeasuredWidth.GetSize();
}
LayoutLength LayoutItem::GetMeasuredHeight() const
auto owner = GetOwner();
auto actor = Actor::DownCast( owner );
LayoutData& layoutData = *mImpl->sLayoutData;
+
if( actor )
{
- if( mImpl->mAnimated && !layoutData.speculativeLayout )
+ if( changed || mImpl->mAnimated )
{
+ layoutData.layoutPositionDataArray.push_back(
+ LayoutPositionData( actor, left.AsDecimal(), top.AsDecimal(), right.AsDecimal(), bottom.AsDecimal(), mImpl->mAnimated ) );
+ }
- LayoutItem* transitionOwner = layoutData.layoutTransition.layoutItem.Get();
- LayoutTransitionDataPtr layoutTransitionDataPtr = GetTransitionData( layoutData.layoutTransition.layoutTransitionType );
-
- // Found transition owner
- if( transitionOwner == this && layoutTransitionDataPtr.Get() )
+ if( mImpl->mAnimated && !layoutData.speculativeLayout )
+ {
+ if( layoutData.layoutTransition.layoutTransitionType != -1 )
{
- DALI_LOG_INFO( gLayoutFilter, Debug::Verbose, "LayoutItem::SetFrame apply transition to (%s), transition type (%d)\n", actor.GetName().c_str(), layoutData.layoutTransition.layoutTransitionType );
- layoutData.layoutPositionDataArray.push_back( LayoutPositionData( actor, left.AsDecimal(), top.AsDecimal(), right.AsDecimal(), bottom.AsDecimal(), true ) );
- layoutTransitionDataPtr->ConvertToLayoutDataElements( actor, layoutData );
- changed = true;
+ LayoutItem* transitionOwner = layoutData.layoutTransition.layoutItem.Get();
+ LayoutTransitionDataPtr layoutTransitionDataPtr = GetTransitionData( layoutData.layoutTransition.layoutTransitionType );
+
+ // Found transition owner
+ if( transitionOwner == this && layoutTransitionDataPtr.Get() )
+ {
+ DALI_LOG_INFO( gLayoutFilter, Debug::Verbose, "LayoutItem::SetFrame apply transition to (%s), transition type (%d)\n", actor.GetName().c_str(), layoutData.layoutTransition.layoutTransitionType );
+ layoutTransitionDataPtr->CollectLayoutDataElements( actor, layoutData );
+ changed = true;
+ }
+ else
+ {
+ LayoutTransitionData::CollectChildrenLayoutDataElements( actor, layoutData );
+ }
}
else
{
if( changed )
{
- DALI_LOG_INFO( gLayoutFilter, Debug::Verbose, "LayoutItem::SetFrame apply default transition to (%s), transition type (%d)\n", actor.GetName().c_str(), layoutData.layoutTransition.layoutTransitionType );
- layoutData.layoutPositionDataArray.push_back( LayoutPositionData( actor, left.AsDecimal(), top.AsDecimal(), right.AsDecimal(), bottom.AsDecimal(), true ) );
- GetDefaultTransition()->ConvertToLayoutDataElements( actor, layoutData );
+ LayoutTransitionDataPtr layoutTransitionDataPtr = GetTransitionData( Dali::Toolkit::LayoutTransitionData::ON_LAYOUT_CHANGE );
+ if( layoutTransitionDataPtr ) // has custom default animation and normal update
+ {
+ DALI_LOG_INFO( gLayoutFilter, Debug::Verbose, "LayoutItem::SetFrame apply custom default transition to (%s), transition type (%d)\n", actor.GetName().c_str(), Dali::Toolkit::LayoutTransitionData::ON_LAYOUT_CHANGE );
+ layoutTransitionDataPtr->CollectLayoutDataElements( actor, layoutData );
+ }
+ else
+ {
+ DALI_LOG_INFO( gLayoutFilter, Debug::Verbose, "LayoutItem::SetFrame apply default transition to (%s), transition type (%d)\n", actor.GetName().c_str(), layoutData.layoutTransition.layoutTransitionType );
+ GetDefaultTransition()->CollectLayoutDataElements( actor, layoutData );
+ }
}
}
}
- else
- {
- if( changed )
- {
- layoutData.layoutPositionDataArray.push_back( LayoutPositionData( actor, left.AsDecimal(), top.AsDecimal(), right.AsDecimal(), bottom.AsDecimal(), false ) );
- }
- }
}
// TODO: do we need it