X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Fpublic-api%2Fcontrols%2Fcontrol-impl.cpp;h=3afa39786d0aeca3b53a6f34d6141259f3388772;hb=82d4420e3c533bc298d8fd81c572d05c70fd0336;hp=991a578aa14df32af459891f61a64a5240e5bb42;hpb=d37f5d8ff0d554b566dfbcdc765a681123cbf4e8;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/public-api/controls/control-impl.cpp b/dali-toolkit/public-api/controls/control-impl.cpp index 991a578..3afa397 100755 --- a/dali-toolkit/public-api/controls/control-impl.cpp +++ b/dali-toolkit/public-api/controls/control-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. + * Copyright (c) 2020 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -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 ); @@ -473,14 +494,6 @@ void Control::OnInitialize() { } -void Control::OnControlChildAdd( Actor& child ) -{ -} - -void Control::OnControlChildRemove( Actor& child ) -{ -} - void Control::OnStyleChange( Toolkit::StyleManager styleManager, StyleChange::Type change ) { // By default the control is only interested in theme (not font) changes @@ -582,14 +595,10 @@ void Control::OnKeyInputFocusLost() void Control::OnChildAdd(Actor& child) { - // Notify derived classes. - OnControlChildAdd( child ); } void Control::OnChildRemove(Actor& child) { - // Notify derived classes. - OnControlChildRemove( child ); } void Control::OnPropertySet( Property::Index index, Property::Value propertyValue )