X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Fpublic-api%2Fcontrols%2Fcontrol-impl.cpp;h=372cfdb883959db7f0738c980339b74598480d28;hp=f17092fb615dec20f723995024617a592caa423d;hb=6e1c172b801e44992f243e9ebf908ce3beeb6e84;hpb=b0a0aa8215fc520e9d05e5bbd855ef41a0c189bc diff --git a/dali-toolkit/public-api/controls/control-impl.cpp b/dali-toolkit/public-api/controls/control-impl.cpp old mode 100755 new mode 100644 index f17092f..372cfdb --- a/dali-toolkit/public-api/controls/control-impl.cpp +++ b/dali-toolkit/public-api/controls/control-impl.cpp @@ -40,6 +40,7 @@ #include #include #include +#include #include #include #include @@ -71,17 +72,14 @@ void ChangeBackgroundColorVisual( Control& controlImpl, bool renderIfTransparent Internal::Control::Impl& controlDataImpl = Internal::Control::Impl::Get( controlImpl ); Toolkit::Visual::Base backgroundVisual = controlDataImpl.GetVisual( Toolkit::Control::Property::BACKGROUND ); - if( backgroundVisual ) + if( backgroundVisual && backgroundVisual.GetType() == Toolkit::Visual::COLOR ) { Property::Map map; backgroundVisual.CreatePropertyMap( map ); - Property::Value* typeValue = map.Find( Toolkit::Visual::Property::TYPE ); - if( typeValue && typeValue->Get< int >() == Toolkit::Visual::COLOR ) - { - // Only change it if it's a color visual - map[ Toolkit::DevelColorVisual::Property::RENDER_IF_TRANSPARENT ] = renderIfTransparent; - controlImpl.SetBackground( map ); - } + + // Only change it if it's a color visual + map[ Toolkit::DevelColorVisual::Property::RENDER_IF_TRANSPARENT ] = renderIfTransparent; + controlImpl.SetBackground( map ); } } @@ -170,16 +168,39 @@ const std::string& Control::GetStyleName() const void Control::SetBackgroundColor( const Vector4& color ) { mImpl->mBackgroundColor = color; + Property::Map map; map[ Toolkit::Visual::Property::TYPE ] = Toolkit::Visual::COLOR; map[ Toolkit::ColorVisual::Property::MIX_COLOR ] = color; + bool renderIfTransparent = false; int clippingMode = ClippingMode::DISABLED; if( ( Self().GetProperty( Actor::Property::CLIPPING_MODE ).Get( clippingMode ) ) && ( clippingMode == ClippingMode::CLIP_CHILDREN ) ) { // If clipping-mode is set to CLIP_CHILDREN, then force visual to add the render even if transparent map[ Toolkit::DevelColorVisual::Property::RENDER_IF_TRANSPARENT ] = true; + renderIfTransparent = true; + } + + Toolkit::Visual::Base visual = mImpl->GetVisual( Toolkit::Control::Property::BACKGROUND ); + if( visual && visual.GetType() == Toolkit::Visual::COLOR ) + { + Property::Map visualMap; + visual.CreatePropertyMap( visualMap ); + + Property::Value* renderValue = visualMap.Find( Toolkit::DevelColorVisual::Property::RENDER_IF_TRANSPARENT ); + Property::Value* colorValue = visualMap.Find( Toolkit::ColorVisual::Property::MIX_COLOR ); + if( renderValue && colorValue ) + { + if( ( renderValue->Get< bool >() == true || colorValue->Get< Vector4 >().a > 0.0f ) + && ( renderIfTransparent || color.a > 0.0f ) ) + { + // Update background color only + mImpl->DoAction( Toolkit::Control::Property::BACKGROUND, DevelColorVisual::Action::UPDATE_PROPERTY, map ); + return; + } + } } SetBackground( map ); @@ -365,7 +386,7 @@ bool Control::OnAccessibilityPan(PanGesture gesture) return false; // Accessibility pan gesture is not handled by default } -bool Control::OnAccessibilityTouch(const TouchEvent& touchEvent) +bool Control::OnAccessibilityTouch(const TouchData& touchData) { return false; // Accessibility touch event is not handled by default } @@ -533,9 +554,9 @@ void Control::EmitKeyInputFocusSignal( bool focusGained ) } } -void Control::OnStageConnection( int depth ) +void Control::OnSceneConnection( int depth ) { - DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Control::OnStageConnection number of registered visuals(%d)\n", mImpl->mVisuals.Size() ); + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Control::OnSceneConnection number of registered visuals(%d)\n", mImpl->mVisuals.Size() ); Actor self( Self() ); @@ -544,22 +565,22 @@ void Control::OnStageConnection( int depth ) // Check whether the visual is empty and enabled if( (*iter)->visual && (*iter)->enabled ) { - DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Control::OnStageConnection Setting visual(%d) on stage\n", (*iter)->index ); - Toolkit::GetImplementation((*iter)->visual).SetOnStage( self ); + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Control::OnSceneConnection Setting visual(%d) on scene\n", (*iter)->index ); + Toolkit::GetImplementation((*iter)->visual).SetOnScene( self ); } } // The clipping renderer is only created if required. CreateClippingRenderer( *this ); - // Request to be laid out when the control is connected to the Stage. + // Request to be laid out when the control is connected to the Scene. // Signal that a Relayout may be needed } -void Control::OnStageDisconnection() +void Control::OnSceneDisconnection() { - mImpl->OnStageDisconnection(); + mImpl->OnSceneDisconnection(); } void Control::OnKeyInputFocusGained() @@ -583,7 +604,7 @@ void Control::OnChildRemove(Actor& child) void Control::OnPropertySet( Property::Index index, Property::Value propertyValue ) { // If the clipping mode has been set, we may need to create a renderer. - // Only do this if we are already on-stage as the OnStageConnection will handle the off-stage clipping controls. + // Only do this if we are already on-stage as the OnSceneConnection will handle the off-stage clipping controls. if( ( index == Actor::Property::CLIPPING_MODE ) && Self().GetProperty< bool >( Actor::Property::CONNECTED_TO_SCENE ) ) { // Note: This method will handle whether creation of the renderer is required. @@ -606,11 +627,6 @@ void Control::OnSizeAnimation(Animation& animation, const Vector3& targetSize) // @todo size negotiate background to new size, animate as well? } -bool Control::OnTouchEvent(const TouchEvent& event) -{ - return false; // Do not consume -} - bool Control::OnHoverEvent(const HoverEvent& event) { return false; // Do not consume