X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fevent%2Factors%2Factor-impl.cpp;h=50c744e2da1e5677fceff157ee57a39ee1ee481e;hb=55827866fcb8c7ee47581ac4335a3390472090e8;hp=a3504e5398704e594d8b4cb8157ca463be8ab36c;hpb=da298bea0d5f6dd40092511fcd255b423ceb79e3;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/event/actors/actor-impl.cpp b/dali/internal/event/actors/actor-impl.cpp old mode 100644 new mode 100755 index a3504e5..50c744e --- a/dali/internal/event/actors/actor-impl.cpp +++ b/dali/internal/event/actors/actor-impl.cpp @@ -214,6 +214,7 @@ DALI_PROPERTY( "opacity", FLOAT, true, true, true, Dali: DALI_PROPERTY( "screenPosition", VECTOR2, false, false, false, Dali::DevelActor::Property::SCREEN_POSITION ) DALI_PROPERTY( "positionUsesAnchorPoint", BOOLEAN, true, false, false, Dali::DevelActor::Property::POSITION_USES_ANCHOR_POINT ) DALI_PROPERTY( "culled", BOOLEAN, false, false, true, Dali::DevelActor::Property::CULLED ) +DALI_PROPERTY( "updateSizeHint", VECTOR2, true, true, true, Dali::DevelActor::Property::UPDATE_SIZE_HINT ) DALI_PROPERTY_TABLE_END( DEFAULT_ACTOR_PROPERTY_START_INDEX, ActorDefaultProperties ) // Signals @@ -1314,6 +1315,9 @@ void Actor::SetSizeScalePolicy( SizeScalePolicy::Type policy ) EnsureRelayoutData(); mRelayoutData->sizeSetPolicy = policy; + + // Trigger relayout on this control + RelayoutRequest(); } SizeScalePolicy::Type Actor::GetSizeScalePolicy() const @@ -2080,9 +2084,13 @@ Actor::~Actor() // Guard to allow handle destruction after Core has been destroyed if( EventThreadServices::IsCoreRunning() ) { - DestroyNodeMessage( GetEventThreadServices().GetUpdateManager(), GetNode() ); + // Root layer will destroy its node in its own destructor + if ( !mIsRoot ) + { + DestroyNodeMessage( GetEventThreadServices().GetUpdateManager(), GetNode() ); - GetEventThreadServices().UnregisterObject( this ); + GetEventThreadServices().UnregisterObject( this ); + } } // Cleanup optional gesture data @@ -2711,6 +2719,12 @@ void Actor::SetDefaultProperty( Property::Index index, const Property::Value& pr break; } + case Dali::DevelActor::Property::UPDATE_SIZE_HINT: + { + SetUpdateSizeHint( property.Get< Vector2 >() ); + break; + } + default: { // this can happen in the case of a non-animatable default property so just do nothing @@ -3960,6 +3974,12 @@ bool Actor::GetCurrentPropertyValue( Property::Index index, Property::Value& val break; } + case Dali::DevelActor::Property::UPDATE_SIZE_HINT: + { + value = GetUpdateSizeHint(); + break; + } + default: { // Must be an event-side only property @@ -4709,6 +4729,19 @@ float Actor::GetMaximumSize( Dimension::Type dimension ) const return FLT_MAX; // Default } +void Actor::SetUpdateSizeHint( const Vector2& updateSizeHint ) +{ + // node is being used in a separate thread; queue a message to set the value & base value + SceneGraph::NodeTransformPropertyMessage::Send( GetEventThreadServices(), &GetNode(), &GetNode().mUpdateSizeHint, &SceneGraph::TransformManagerPropertyHandler::Bake, Vector3(updateSizeHint.width, updateSizeHint.height, 0.f ) ); +} + +const Vector2 Actor::GetUpdateSizeHint() const +{ + // node is being used in a separate thread; copy the value from the previous update + Vector3 updateSizeHint = GetNode().GetUpdateSizeHint( GetEventThreadServices().GetEventBufferIndex() ); + return Vector2( updateSizeHint.width, updateSizeHint.height ); +} + Object* Actor::GetParentObject() const { return mParent;