const PropertyRegistration Control::Impl::PROPERTY_3( typeRegistration, "backgroundImage", Toolkit::Control::Property::BACKGROUND_IMAGE, Property::MAP, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
const PropertyRegistration Control::Impl::PROPERTY_4( typeRegistration, "keyInputFocus", Toolkit::Control::Property::KEY_INPUT_FOCUS, Property::BOOLEAN, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
const PropertyRegistration Control::Impl::PROPERTY_5( typeRegistration, "background", Toolkit::Control::Property::BACKGROUND, Property::MAP, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
-const PropertyRegistration Control::Impl::PROPERTY_6( typeRegistration, "tooltip", Toolkit::DevelControl::Property::TOOLTIP, Property::MAP, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
-const PropertyRegistration Control::Impl::PROPERTY_7( typeRegistration, "state", Toolkit::DevelControl::Property::STATE, Property::STRING, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
-const PropertyRegistration Control::Impl::PROPERTY_8( typeRegistration, "subState", Toolkit::DevelControl::Property::SUB_STATE, Property::STRING, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
-const PropertyRegistration Control::Impl::PROPERTY_9( typeRegistration, "leftFocusableActorId", Toolkit::DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID, Property::INTEGER, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
-const PropertyRegistration Control::Impl::PROPERTY_10( typeRegistration, "rightFocusableActorId", Toolkit::DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID,Property::INTEGER, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
-const PropertyRegistration Control::Impl::PROPERTY_11( typeRegistration, "upFocusableActorId", Toolkit::DevelControl::Property::UP_FOCUSABLE_ACTOR_ID, Property::INTEGER, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
-const PropertyRegistration Control::Impl::PROPERTY_12( typeRegistration, "downFocusableActorId", Toolkit::DevelControl::Property::DOWN_FOCUSABLE_ACTOR_ID, Property::INTEGER, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
-
+const PropertyRegistration Control::Impl::PROPERTY_6( typeRegistration, "margin", Toolkit::Control::Property::MARGIN, Property::EXTENTS, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
+const PropertyRegistration Control::Impl::PROPERTY_7( typeRegistration, "padding", Toolkit::Control::Property::PADDING, Property::EXTENTS, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
+const PropertyRegistration Control::Impl::PROPERTY_8( typeRegistration, "tooltip", Toolkit::DevelControl::Property::TOOLTIP, Property::MAP, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
+const PropertyRegistration Control::Impl::PROPERTY_9( typeRegistration, "state", Toolkit::DevelControl::Property::STATE, Property::STRING, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
+const PropertyRegistration Control::Impl::PROPERTY_10( typeRegistration, "subState", Toolkit::DevelControl::Property::SUB_STATE, Property::STRING, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
+const PropertyRegistration Control::Impl::PROPERTY_11( typeRegistration, "leftFocusableActorId", Toolkit::DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID, Property::INTEGER, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
+const PropertyRegistration Control::Impl::PROPERTY_12( typeRegistration, "rightFocusableActorId", Toolkit::DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID,Property::INTEGER, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
+const PropertyRegistration Control::Impl::PROPERTY_13( typeRegistration, "upFocusableActorId", Toolkit::DevelControl::Property::UP_FOCUSABLE_ACTOR_ID, Property::INTEGER, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
+const PropertyRegistration Control::Impl::PROPERTY_14( typeRegistration, "downFocusableActorId", Toolkit::DevelControl::Property::DOWN_FOCUSABLE_ACTOR_ID, Property::INTEGER, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
Control::Impl::Impl( Control& controlImpl )
mStyleName(""),
mBackgroundColor(Color::TRANSPARENT),
mStartingPinchScale( NULL ),
+ mMargin( 0, 0, 0, 0 ),
+ mPadding( 0, 0, 0, 0 ),
mKeyEventSignal(),
mPinchGestureDetector(),
mPanGestureDetector(),
( visualReplaced && enabled ) ) ;
mVisuals.PushBack( newRegisteredVisual );
+ Internal::Visual::Base& visualImpl = Toolkit::GetImplementation( visual );
// Put on stage if enabled and the control is already on the stage
- // Visual must be set on stage for the renderer to be created and the ResourceReady triggered.
if( ( enabled == VisualState::ENABLED ) && self.OnStage() )
{
- Toolkit::GetImplementation(visual).SetOnStage( self );
+ visualImpl.SetOnStage( self );
+ }
+ else if( visualImpl.IsResourceReady() ) // When not being staged, check if visual already 'ResourceReady' before it was Registered. ( Resource may have been loaded already )
+ {
+ ResourceReady( visualImpl );
}
+
}
DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Control::RegisterVisual() Registered %s(%d), enabled:%s\n", visual.GetName().c_str(), index, enabled?"true":"false" );
void Control::Impl::UnregisterVisual( Property::Index index )
{
- RegisteredVisualContainer::Iterator iter;
- if ( FindVisual( index, mVisuals, iter ) )
- {
- // stop observing visual
- StopObservingVisual( (*iter)->visual );
+ RegisteredVisualContainer::Iterator iter;
+ if ( FindVisual( index, mVisuals, iter ) )
+ {
+ // stop observing visual
+ StopObservingVisual( (*iter)->visual );
- Actor self( mControlImpl.Self() );
- Toolkit::GetImplementation((*iter)->visual).SetOffStage( self );
- (*iter)->visual.Reset();
- mVisuals.Erase( iter );
- }
+ Actor self( mControlImpl.Self() );
+ Toolkit::GetImplementation((*iter)->visual).SetOffStage( self );
+ (*iter)->visual.Reset();
+ mVisuals.Erase( iter );
+ }
+
+ if( FindVisual( index, mRemoveVisuals, iter ) )
+ {
+ Actor self( mControlImpl.Self() );
+ Toolkit::GetImplementation( (*iter)->visual ).SetOffStage( self );
+ (*iter)->pending = false;
+ (*iter)->visual.Reset();
+ mRemoveVisuals.Erase( iter );
+ }
}
Toolkit::Visual::Base Control::Impl::GetVisual( Property::Index index ) const
}
}
- // A visual is ready so control may need relayouting
- mControlImpl.RelayoutRequest();
+ // A visual is ready so control may need relayouting if staged
+ if ( self.OnStage() )
+ {
+ mControlImpl.RelayoutRequest();
+ }
// Emit signal if all enabled visuals registered by the control are ready.
if( IsResourceReady() )
return true;
}
+Toolkit::Visual::ResourceStatus Control::Impl::GetVisualResourceStatus( Property::Index index ) const
+{
+ RegisteredVisualContainer::Iterator iter;
+ if ( FindVisual( index, mVisuals, iter ) )
+ {
+ const Toolkit::Visual::Base visual = (*iter)->visual;
+ const Internal::Visual::Base& visualImpl = Toolkit::GetImplementation( visual );
+ return visualImpl.GetResourceStatus( );
+ }
+
+ return Toolkit::Visual::ResourceStatus::PREPARING;
+}
Dali::Animation Control::Impl::CreateTransition( const Toolkit::TransitionData& handle )
{
break;
}
+ case Toolkit::Control::Property::MARGIN:
+ {
+ Extents margin;
+ if( value.Get( margin ) )
+ {
+ controlImpl.mImpl->SetMargin( margin );
+ }
+ break;
+ }
+
+ case Toolkit::Control::Property::PADDING:
+ {
+ Extents padding;
+ if( value.Get( padding ) )
+ {
+ controlImpl.mImpl->SetPadding( padding );
+ }
+ break;
+ }
+
case Toolkit::DevelControl::Property::TOOLTIP:
{
TooltipPtr& tooltipPtr = controlImpl.mImpl->mTooltip;
tooltipPtr = Tooltip::New( control );
}
tooltipPtr->SetProperties( value );
+ break;
}
+
}
}
}
break;
}
+ case Toolkit::Control::Property::MARGIN:
+ {
+ value = controlImpl.mImpl->GetMargin();
+ break;
+ }
+
+ case Toolkit::Control::Property::PADDING:
+ {
+ value = controlImpl.mImpl->GetPadding();
+ break;
+ }
+
case Toolkit::DevelControl::Property::TOOLTIP:
{
Property::Map map;
value = map;
break;
}
-
}
}
mRemoveVisuals.Clear();
}
+void Control::Impl::SetMargin( Extents margin )
+{
+ mControlImpl.mImpl->mMargin = margin;
+}
+
+Extents Control::Impl::GetMargin() const
+{
+ return mControlImpl.mImpl->mMargin;
+}
+
+void Control::Impl::SetPadding( Extents padding )
+{
+ mControlImpl.mImpl->mPadding = padding;
+}
+
+Extents Control::Impl::GetPadding() const
+{
+ return mControlImpl.mImpl->mPadding;
+}
+
} // namespace Internal
} // namespace Toolkit