Merge "Add SelectionStarted signal" into devel/master
authorBowon Ryu <bowon.ryu@samsung.com>
Wed, 26 Jan 2022 03:17:19 +0000 (03:17 +0000)
committerGerrit Code Review <gerrit@review>
Wed, 26 Jan 2022 03:17:19 +0000 (03:17 +0000)
19 files changed:
automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Accessible.cpp
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-application.cpp
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-graphics-controller.cpp
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-trace-call-stack.h
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-test-application.cpp
dali-toolkit/devel-api/controls/control-devel.cpp
dali-toolkit/devel-api/controls/control-devel.h
dali-toolkit/devel-api/controls/control-wrapper-impl.cpp
dali-toolkit/devel-api/controls/text-controls/text-style-properties-devel.h
dali-toolkit/internal/controls/control/control-data-impl.cpp
dali-toolkit/internal/text/decorator/text-decorator.cpp
dali-toolkit/internal/text/text-controller-impl.h
dali-toolkit/internal/visuals/text/text-visual.cpp
dali-toolkit/internal/visuals/visual-base-data-impl.cpp
dali-toolkit/internal/visuals/visual-base-data-impl.h
dali-toolkit/internal/visuals/visual-base-impl.cpp
dali-toolkit/public-api/controls/control-impl.cpp
dali-toolkit/public-api/dali-toolkit-version.cpp
packaging/dali-toolkit.spec

index 643b552..2bbdcc8 100644 (file)
@@ -148,19 +148,26 @@ int utcDaliAccessibilityHidden(void)
 {
   ToolkitTestApplication application;
 
-  auto  control    = Toolkit::Control::New();
-  auto* accessible = Dali::Accessibility::Accessible::Get(control);
+  auto  parent            = Toolkit::Control::New();
+  auto* parentAccessible  = Accessibility::Accessible::Get(parent);
+  auto  control           = Toolkit::Control::New();
+  auto* controlAccessible = Accessibility::Accessible::Get(control);
+
+  parent.Add(control);
 
   // Check not hidden
-  DALI_TEST_CHECK(accessible);
-  DALI_TEST_CHECK(!accessible->IsHidden());
+  DALI_TEST_CHECK(parentAccessible && controlAccessible);
+  DALI_TEST_CHECK(!controlAccessible->IsHidden());
   DALI_TEST_CHECK(!control.GetProperty<bool>(Toolkit::DevelControl::Property::ACCESSIBILITY_HIDDEN));
+  DALI_TEST_EQUALS(parentAccessible->GetChildCount(), 1u, TEST_LOCATION);
+  DALI_TEST_EQUALS(parentAccessible->GetChildAtIndex(0), controlAccessible, TEST_LOCATION);
 
   control.SetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_HIDDEN, true);
 
   // Check hidden
-  DALI_TEST_CHECK(accessible->IsHidden());
+  DALI_TEST_CHECK(controlAccessible->IsHidden());
   DALI_TEST_CHECK(control.GetProperty<bool>(Toolkit::DevelControl::Property::ACCESSIBILITY_HIDDEN));
+  DALI_TEST_EQUALS(parentAccessible->GetChildCount(), 0u, TEST_LOCATION);
 
   END_TEST;
 }
index 440270a..2862284 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
@@ -82,8 +82,9 @@ void TestApplication::CreateScene()
   // Create render target for the scene
   Graphics::RenderTargetCreateInfo rtInfo{};
   rtInfo.SetExtent({mSurfaceWidth, mSurfaceHeight});
-  mRenderTarget = mGraphicsController.CreateRenderTarget(rtInfo, nullptr);
-  mScene.SetSurfaceRenderTarget(mRenderTarget.get());
+  rtInfo.SetSurface(&mSurfaceWidth); // Can point to anything, really.
+
+  mScene.SetSurfaceRenderTarget(rtInfo);
 }
 
 void TestApplication::InitializeCore()
index fb2afda..3ed6b56 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
@@ -1028,9 +1028,11 @@ void TestGraphicsController::BindPipeline(TestGraphicsPipeline* pipeline)
  */
 void TestGraphicsController::PresentRenderTarget(Graphics::RenderTarget* renderTarget)
 {
+  auto*                       rt = static_cast<const TestGraphicsRenderTarget*>(renderTarget);
   TraceCallStack::NamedParams namedParams;
   namedParams["renderTarget"] << std::hex << renderTarget;
-  mCallStack.PushCall("PresentRenderTarget", "", namedParams);
+  namedParams["surface"] << std::hex << rt->mCreateInfo.surface;
+  mCallStack.PushCall("PresentRenderTarget", namedParams.str(), namedParams);
 }
 
 /**
@@ -1237,7 +1239,10 @@ Graphics::UniquePtr<Graphics::Sampler> TestGraphicsController::CreateSampler(con
 
 Graphics::UniquePtr<Graphics::RenderTarget> TestGraphicsController::CreateRenderTarget(const Graphics::RenderTargetCreateInfo& renderTargetCreateInfo, Graphics::UniquePtr<Graphics::RenderTarget>&& oldRenderTarget)
 {
-  mCallStack.PushCall("CreateRenderTarget", "");
+  TraceCallStack::NamedParams namedParams;
+  namedParams["surface"] << std::hex << renderTargetCreateInfo.surface;
+  mCallStack.PushCall("CreateRenderTarget", namedParams.str(), namedParams);
+
   return Graphics::MakeUnique<TestGraphicsRenderTarget>(mGl, renderTargetCreateInfo);
 }
 
index 7631630..6f720c5 100644 (file)
@@ -2,7 +2,7 @@
 #define TEST_TRACE_CALL_STACK_H
 
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
@@ -121,6 +121,25 @@ public:
       }
     }
 
+    const std::ostringstream& operator[](std::string name) const
+    {
+      static std::ostringstream empty;
+      auto                      iter = mParams.begin();
+      for(; iter != mParams.end(); ++iter)
+      {
+        if(!iter->parameterName.compare(name))
+        {
+          break;
+        }
+      }
+
+      if(iter != mParams.end())
+      {
+        return iter->value;
+      }
+      return empty;
+    }
+
     std::string str() const
     {
       std::ostringstream out;
index cccb922..07b1013 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
 
 // INTERNAL INCLUDES
 #include <dali-test-suite-utils.h>
-#include <dali/devel-api/text-abstraction/font-client.h>
 #include <dali/devel-api/adaptor-framework/accessibility-bridge.h>
 #include <dali/devel-api/atspi-interfaces/accessible.h>
+#include <dali/devel-api/text-abstraction/font-client.h>
 #include <dali/integration-api/adaptor-framework/adaptor.h>
 #include <toolkit-adaptor-impl.h>
 #include <toolkit-lifecycle-controller.h>
 
 namespace Dali
 {
-
 using AdaptorImpl = Dali::Internal::Adaptor::Adaptor;
 
-ToolkitTestApplication::ToolkitTestApplication( size_t surfaceWidth, size_t surfaceHeight, float  horizontalDpi, float verticalDpi )
-: TestApplication( surfaceWidth, surfaceHeight, horizontalDpi, verticalDpi, false /* Do not Initialize Core */ ),
-  mMainWindow( new Dali::Window ),
-  mAdaptor( &AdaptorImpl::New() ) // Need to create Adaptor first as many singletons in dali-adaptor need it
+ToolkitTestApplication::ToolkitTestApplication(size_t surfaceWidth, size_t surfaceHeight, float horizontalDpi, float verticalDpi)
+: TestApplication(surfaceWidth, surfaceHeight, horizontalDpi, verticalDpi, false /* Do not Initialize Core */),
+  mMainWindow(new Dali::Window),
+  mAdaptor(&AdaptorImpl::New()) // Need to create Adaptor first as many singletons in dali-adaptor need it
 {
   // Create Core next
   CreateCore();
 
   // Override Scene creation in TestApplication by creating a window.
   // The window will create a Scene & surface and set up the scene's surface appropriately.
-  *mMainWindow = Window::New( PositionSize( 0, 0, surfaceWidth, surfaceHeight ), "" );
-  mScene = AdaptorImpl::GetScene( *mMainWindow );
-  mScene.SetDpi( Vector2( horizontalDpi, verticalDpi ) );
+  *mMainWindow = Window::New(PositionSize(0, 0, surfaceWidth, surfaceHeight), "");
+  mScene       = AdaptorImpl::GetScene(*mMainWindow);
+  mScene.SetDpi(Vector2(horizontalDpi, verticalDpi));
 
   // Create render target for the scene
   Graphics::RenderTargetCreateInfo rtInfo{};
-  rtInfo.SetExtent( {mSurfaceWidth, mSurfaceHeight });
-  mRenderTarget = mGraphicsController.CreateRenderTarget( rtInfo, nullptr );
-  mScene.SetSurfaceRenderTarget( mRenderTarget.get() );
+  rtInfo.SetExtent({mSurfaceWidth, mSurfaceHeight});
+  mScene.SetSurfaceRenderTarget(rtInfo);
 
   // Core needs to be initialized next before we start the adaptor
   InitializeCore();
   Accessibility::Accessible::SetObjectRegistry(mCore->GetObjectRegistry());
 
   // This will also emit the window created signals
-  AdaptorImpl::GetImpl( *mAdaptor ).Start( *mMainWindow );
-  AdaptorImpl::GetImpl( *mAdaptor ).SetApplication( *this );
+  AdaptorImpl::GetImpl(*mAdaptor).Start(*mMainWindow);
+  AdaptorImpl::GetImpl(*mAdaptor).SetApplication(*this);
 
   Dali::LifecycleController lifecycleController = Dali::LifecycleController::Get();
   lifecycleController.InitSignal().Emit();
 
   // set the DPI value for font rendering
   TextAbstraction::FontClient fontClient = Dali::TextAbstraction::FontClient::Get();
-  if( fontClient )
+  if(fontClient)
   {
-    fontClient.SetDpi( mDpi.x, mDpi.y );
+    fontClient.SetDpi(mDpi.x, mDpi.y);
   }
 }
 
@@ -80,7 +78,7 @@ ToolkitTestApplication::~ToolkitTestApplication()
 
 void ToolkitTestApplication::RunIdles()
 {
-  AdaptorImpl::GetImpl( *mAdaptor.get() ).RunIdles();
+  AdaptorImpl::GetImpl(*mAdaptor.get()).RunIdles();
 }
 
 } // namespace Dali
index 7b497c9..5ab6b79 100644 (file)
@@ -337,11 +337,6 @@ void NotifyAccessibilityStateChange(Dali::Actor control, Dali::Accessibility::St
   }
 }
 
-Dali::Accessibility::Accessible* GetBoundAccessibilityObject(Dali::Actor control)
-{
-  return Dali::Accessibility::Accessible::Get(control);
-}
-
 } // namespace DevelControl
 
 } // namespace Toolkit
index 33e02f5..b188b9b 100644 (file)
@@ -580,13 +580,6 @@ DALI_TOOLKIT_API void NotifyAccessibilityStateChange(Dali::Actor control, Dali::
   */
 DALI_TOOLKIT_API void SetAccessibilityConstructor(Dali::Actor control, std::function<std::unique_ptr<Dali::Accessibility::Accessible>(Dali::Actor)> constructor);
 
-/**
- * Returns accessibility object bound to actor, if any
- *
- * This method won't bound new accessibility object. Use Dali::Accessibility::Accessible::Get in that case.
- */
-DALI_TOOLKIT_API Dali::Accessibility::Accessible* GetBoundAccessibilityObject(Dali::Actor control);
-
 } // namespace DevelControl
 
 } // namespace Toolkit
index 2056d66..78e4428 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
@@ -84,7 +84,7 @@ Dali::Toolkit::ControlWrapper ControlWrapper::New(const std::string& typeName, C
 }
 
 ControlWrapper::ControlWrapper(CustomControlBehaviour behaviourFlags)
-: Control(static_cast<ControlBehaviour>(behaviourFlags))
+: Control(static_cast<ControlBehaviour>(behaviourFlags | DISABLE_STYLE_CHANGE_SIGNALS))
 {
 }
 
index 94b05ee..e3641f6 100644 (file)
@@ -103,7 +103,7 @@ enum
   /**
    * @brief The width in pixels of the dashes of the dashed underline. Only valid when "DASHED" underline type is used.
    * @details Name "dashWidth", type Property::STRING or Property::FLOAT. e.g. "1.0" or 1.f
-   * @note Optional. If not provided then the default width is used (1 pixel).
+   * @note Optional. If not provided then the default width is used (2 pixel).
    */
   DASH_WIDTH,
 
index e3cea92..bfe280a 100644 (file)
@@ -1377,6 +1377,13 @@ void Control::Impl::SetProperty(BaseObject* object, Property::Index index, const
         if(value.Get(hidden))
         {
           controlImpl.mImpl->mAccessibilityHidden = hidden;
+
+          auto* accessible = controlImpl.mImpl->GetAccessibilityObject();
+          auto* parent     = dynamic_cast<Dali::Accessibility::ActorAccessible*>(accessible->GetParent());
+          if (parent)
+          {
+            parent->OnChildrenChanged();
+          }
         }
         break;
       }
index c586deb..c948701 100644 (file)
@@ -32,6 +32,7 @@
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/devel-api/controls/control-depth-index-ranges.h>
+#include <dali-toolkit/devel-api/controls/control-devel.h>
 #include <dali-toolkit/internal/controls/image-view/image-view-impl.h>
 #include <dali-toolkit/internal/graphics/builtin-shader-extern-gen.h>
 #include <dali-toolkit/public-api/controls/image-view/image-view.h>
@@ -631,6 +632,7 @@ struct Decorator::Impl : public ConnectionTracker
     cursor.SetBackgroundColor(color);
     cursor.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
     cursor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
+    cursor.SetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_HIDDEN, true);
   }
 
   // Add or Remove cursor(s) from parent
index 12faee1..a646e92 100644 (file)
@@ -351,6 +351,7 @@ struct Controller::Impl
     mShadowSetByString(false),
     mOutlineSetByString(false),
     mFontStyleSetByString(false),
+    mStrikethroughSetByString(false),
     mShouldClearFocusOnEscape(true),
     mLayoutDirection(LayoutDirection::LEFT_TO_RIGHT),
     mTextFitMinSize(DEFAULT_TEXTFIT_MIN),
index 7720aa2..b8d848d 100644 (file)
@@ -614,7 +614,7 @@ void TextVisual::CreateTextureSet(TilingInfo& info, Renderer& renderer, Sampler&
     ++textureSetIndex;
   }
 
-  if(styleEnabled && isOverlayStyle)
+  if(styleEnabled && isOverlayStyle && info.styleBuffer)
   {
     PixelData overlayStyleData = ConvertToPixelData(info.styleBuffer, info.width, info.height, info.offsetPosition, Pixel::RGBA8888);
     AddTexture(textureSet, overlayStyleData, sampler, textureSetIndex);
index 8106899..654bb89 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
@@ -385,12 +385,32 @@ void Internal::Visual::Base::Impl::Transform::GetPropertyMap(Property::Map& map)
 
 void Internal::Visual::Base::Impl::Transform::RegisterUniforms(Dali::Renderer renderer, Toolkit::Direction::Type direction)
 {
-  mSizeIndex   = renderer.RegisterProperty(SIZE, mSize);
-  mOffsetIndex = renderer.RegisterProperty(OFFSET, direction == Toolkit::Direction::LEFT_TO_RIGHT ? mOffset : mOffset * Vector2(-1.0f, 1.0f));
-  renderer.RegisterProperty(OFFSET_SIZE_MODE, mOffsetSizeMode);
-  renderer.RegisterProperty(ORIGIN, PointToVector2(mOrigin, direction) - Vector2(0.5, 0.5));
-  renderer.RegisterProperty(ANCHOR_POINT, Vector2(0.5, 0.5) - PointToVector2(mAnchorPoint, direction));
-  renderer.RegisterProperty(EXTRA_SIZE, mExtraSize);
+  // have to test if one of these properties has already been registered on the renderer; as some visuals use more than one renderer, so can't use stored property index.
+  //
+  if(Property::INVALID_INDEX == renderer.GetPropertyIndex(SIZE))
+  {
+    mSizeIndex   = renderer.RegisterUniqueProperty(SIZE, mSize);
+    mOffsetIndex = renderer.RegisterUniqueProperty(OFFSET, direction == Toolkit::Direction::LEFT_TO_RIGHT ? mOffset : mOffset * Vector2(-1.0f, 1.0f));
+    renderer.RegisterUniqueProperty(OFFSET_SIZE_MODE, mOffsetSizeMode);
+    renderer.RegisterUniqueProperty(ORIGIN, PointToVector2(mOrigin, direction) - Vector2(0.5, 0.5));
+    renderer.RegisterUniqueProperty(ANCHOR_POINT, Vector2(0.5, 0.5) - PointToVector2(mAnchorPoint, direction));
+    renderer.RegisterUniqueProperty(EXTRA_SIZE, mExtraSize);
+  }
+  else
+  {
+    SetUniforms(renderer, direction);
+  }
+}
+
+void Internal::Visual::Base::Impl::Transform::SetUniforms(Dali::Renderer renderer, Toolkit::Direction::Type direction)
+{
+  renderer.SetProperty(mSizeIndex, mSize);
+  renderer.SetProperty(mOffsetIndex, direction == Toolkit::Direction::LEFT_TO_RIGHT ? mOffset : mOffset * Vector2(-1.0f, 1.0f));
+
+  renderer.SetProperty(renderer.GetPropertyIndex(OFFSET_SIZE_MODE), mOffsetSizeMode);
+  renderer.SetProperty(renderer.GetPropertyIndex(ORIGIN), PointToVector2(mOrigin, direction) - Vector2(0.5, 0.5));
+  renderer.SetProperty(renderer.GetPropertyIndex(ANCHOR_POINT), Vector2(0.5, 0.5) - PointToVector2(mAnchorPoint, direction));
+  renderer.SetProperty(renderer.GetPropertyIndex(EXTRA_SIZE), mExtraSize);
 }
 
 Vector2 Internal::Visual::Base::Impl::Transform::GetVisualSize(const Vector2& controlSize)
index 64ab52f..3c8f072 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_TOOLKIT_INTERNAL_VISUAL_BASE_DATA_IMPL_H
 
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
@@ -96,11 +96,16 @@ struct Base::Impl
     void UpdatePropertyMap(const Property::Map& map);
 
     /**
-     * Register or set the uniform properties onto the renderer
+     * Register the uniform properties onto the renderer
      */
     void RegisterUniforms(Renderer renderer, Toolkit::Direction::Type direction);
 
     /**
+     * Set the uniform properties onto the renderer
+     */
+    void SetUniforms(Renderer renderer, Toolkit::Direction::Type direction);
+
+    /**
      * Convert the control size and the transform attributes into the actual
      * size of the visual.
      */
@@ -112,8 +117,8 @@ struct Base::Impl
     Vector4              mOffsetSizeMode;
     Toolkit::Align::Type mOrigin;
     Toolkit::Align::Type mAnchorPoint;
-    Property::Index      mOffsetIndex;
-    Property::Index      mSizeIndex;
+    Property::Index      mOffsetIndex{Property::INVALID_INDEX};
+    Property::Index      mSizeIndex{Property::INVALID_INDEX};
   };
 
   Renderer                        mRenderer;
index 2841655..004d201 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
@@ -135,16 +135,16 @@ void Visual::Base::Initialize()
 
     if(IsRoundedCornerRequired())
     {
-      mImpl->mCornerRadiusIndex = mImpl->mRenderer.RegisterProperty(DevelVisual::Property::CORNER_RADIUS, CORNER_RADIUS, mImpl->mCornerRadius);
-      mImpl->mRenderer.RegisterProperty(CORNER_RADIUS_POLICY, mImpl->mCornerRadiusPolicy);
+      mImpl->mCornerRadiusIndex = mImpl->mRenderer.RegisterUniqueProperty(DevelVisual::Property::CORNER_RADIUS, CORNER_RADIUS, mImpl->mCornerRadius);
+      mImpl->mRenderer.RegisterUniqueProperty(CORNER_RADIUS_POLICY, mImpl->mCornerRadiusPolicy);
 
       mImpl->mRenderer.SetProperty(Renderer::Property::BLEND_MODE, BlendMode::ON);
     }
     if(IsBorderlineRequired())
     {
-      mImpl->mBorderlineWidthIndex  = mImpl->mRenderer.RegisterProperty(DevelVisual::Property::BORDERLINE_WIDTH,  BORDERLINE_WIDTH,  mImpl->mBorderlineWidth);
-      mImpl->mBorderlineColorIndex  = mImpl->mRenderer.RegisterProperty(DevelVisual::Property::BORDERLINE_COLOR,  BORDERLINE_COLOR,  mImpl->mBorderlineColor);
-      mImpl->mBorderlineOffsetIndex = mImpl->mRenderer.RegisterProperty(DevelVisual::Property::BORDERLINE_OFFSET, BORDERLINE_OFFSET, mImpl->mBorderlineOffset);
+      mImpl->mBorderlineWidthIndex  = mImpl->mRenderer.RegisterUniqueProperty(DevelVisual::Property::BORDERLINE_WIDTH, BORDERLINE_WIDTH, mImpl->mBorderlineWidth);
+      mImpl->mBorderlineColorIndex  = mImpl->mRenderer.RegisterUniqueProperty(DevelVisual::Property::BORDERLINE_COLOR, BORDERLINE_COLOR, mImpl->mBorderlineColor);
+      mImpl->mBorderlineOffsetIndex = mImpl->mRenderer.RegisterUniqueProperty(DevelVisual::Property::BORDERLINE_OFFSET, BORDERLINE_OFFSET, mImpl->mBorderlineOffset);
 
       mImpl->mRenderer.SetProperty(Renderer::Property::BLEND_MODE, BlendMode::ON_WITHOUT_CULL);
     }
@@ -307,10 +307,10 @@ void Visual::Base::SetProperties(const Property::Map& propertyMap)
           // Assume that DoAction call UPDATE_PROPERTY.
           // We must regist properies into renderer, and update shader.
 
-          // Borderline added by this action. Regist property to renderer.
-          mImpl->mBorderlineWidthIndex  = mImpl->mRenderer.RegisterProperty(DevelVisual::Property::BORDERLINE_WIDTH, BORDERLINE_WIDTH, mImpl->mBorderlineWidth);
-          mImpl->mBorderlineColorIndex  = mImpl->mRenderer.RegisterProperty(DevelVisual::Property::BORDERLINE_COLOR, BORDERLINE_COLOR, mImpl->mBorderlineColor);
-          mImpl->mBorderlineOffsetIndex = mImpl->mRenderer.RegisterProperty(DevelVisual::Property::BORDERLINE_OFFSET, BORDERLINE_OFFSET, mImpl->mBorderlineOffset);
+          // Borderline added by this action. Register property to renderer.
+          mImpl->mBorderlineWidthIndex  = mImpl->mRenderer.RegisterUniqueProperty(DevelVisual::Property::BORDERLINE_WIDTH, BORDERLINE_WIDTH, mImpl->mBorderlineWidth);
+          mImpl->mBorderlineColorIndex  = mImpl->mRenderer.RegisterUniqueProperty(DevelVisual::Property::BORDERLINE_COLOR, BORDERLINE_COLOR, mImpl->mBorderlineColor);
+          mImpl->mBorderlineOffsetIndex = mImpl->mRenderer.RegisterUniqueProperty(DevelVisual::Property::BORDERLINE_OFFSET, BORDERLINE_OFFSET, mImpl->mBorderlineOffset);
 
           // Make Blend mode ON_WITHOUT_CULL for transparent mix color.
           mImpl->mRenderer.SetProperty(Renderer::Property::BLEND_MODE, BlendMode::ON_WITHOUT_CULL);
@@ -386,8 +386,8 @@ void Visual::Base::SetProperties(const Property::Map& propertyMap)
           // We must regist properies into renderer, and update shader.
 
           // CornerRadius added by this action. Regist property to renderer.
-          mImpl->mCornerRadiusIndex = mImpl->mRenderer.RegisterProperty(DevelVisual::Property::CORNER_RADIUS, CORNER_RADIUS, mImpl->mCornerRadius);
-          mImpl->mRenderer.RegisterProperty(CORNER_RADIUS_POLICY, mImpl->mCornerRadiusPolicy);
+          mImpl->mCornerRadiusIndex = mImpl->mRenderer.RegisterUniqueProperty(DevelVisual::Property::CORNER_RADIUS, CORNER_RADIUS, mImpl->mCornerRadius);
+          mImpl->mRenderer.RegisterUniqueProperty(CORNER_RADIUS_POLICY, mImpl->mCornerRadiusPolicy);
 
           // Change the shader must not be occured many times. we always have to use corner radius feature.
           mImpl->mAlwaysUsingCornerRadius = true;
@@ -706,7 +706,7 @@ void Visual::Base::RegisterMixColor()
   // (Color and Primitive visuals will register their own and save to this index)
   if(mImpl->mMixColorIndex == Property::INVALID_INDEX)
   {
-    mImpl->mMixColorIndex = mImpl->mRenderer.RegisterProperty(
+    mImpl->mMixColorIndex = mImpl->mRenderer.RegisterUniqueProperty(
       Toolkit::Visual::Property::MIX_COLOR,
       MIX_COLOR,
       Vector3(mImpl->mMixColor));
@@ -1050,16 +1050,16 @@ Dali::Property Visual::Base::GetPropertyObject(Dali::Property::Key key)
   if(index == Property::INVALID_INDEX)
   {
     if(IsTypeAvailableForBorderline(mImpl->mType) &&
-       ((key.type == Property::Key::INDEX && key.indexKey == DevelVisual::Property::BORDERLINE_WIDTH)  || (key.type == Property::Key::STRING && key.stringKey == BORDERLINE_WIDTH) ||
-        (key.type == Property::Key::INDEX && key.indexKey == DevelVisual::Property::BORDERLINE_COLOR)  || (key.type == Property::Key::STRING && key.stringKey == BORDERLINE_COLOR) ||
+       ((key.type == Property::Key::INDEX && key.indexKey == DevelVisual::Property::BORDERLINE_WIDTH) || (key.type == Property::Key::STRING && key.stringKey == BORDERLINE_WIDTH) ||
+        (key.type == Property::Key::INDEX && key.indexKey == DevelVisual::Property::BORDERLINE_COLOR) || (key.type == Property::Key::STRING && key.stringKey == BORDERLINE_COLOR) ||
         (key.type == Property::Key::INDEX && key.indexKey == DevelVisual::Property::BORDERLINE_OFFSET) || (key.type == Property::Key::STRING && key.stringKey == BORDERLINE_OFFSET)))
     {
       mImpl->mRenderer.SetProperty(Renderer::Property::BLEND_MODE, BlendMode::ON_WITHOUT_CULL);
 
       // Register borderline properties
-      mImpl->mBorderlineWidthIndex  = mImpl->mRenderer.RegisterProperty(DevelVisual::Property::BORDERLINE_WIDTH, BORDERLINE_WIDTH, mImpl->mBorderlineWidth);
-      mImpl->mBorderlineColorIndex  = mImpl->mRenderer.RegisterProperty(DevelVisual::Property::BORDERLINE_COLOR, BORDERLINE_COLOR, mImpl->mBorderlineColor);
-      mImpl->mBorderlineOffsetIndex = mImpl->mRenderer.RegisterProperty(DevelVisual::Property::BORDERLINE_OFFSET, BORDERLINE_OFFSET, mImpl->mBorderlineOffset);
+      mImpl->mBorderlineWidthIndex  = mImpl->mRenderer.RegisterUniqueProperty(DevelVisual::Property::BORDERLINE_WIDTH, BORDERLINE_WIDTH, mImpl->mBorderlineWidth);
+      mImpl->mBorderlineColorIndex  = mImpl->mRenderer.RegisterUniqueProperty(DevelVisual::Property::BORDERLINE_COLOR, BORDERLINE_COLOR, mImpl->mBorderlineColor);
+      mImpl->mBorderlineOffsetIndex = mImpl->mRenderer.RegisterUniqueProperty(DevelVisual::Property::BORDERLINE_OFFSET, BORDERLINE_OFFSET, mImpl->mBorderlineOffset);
 
       // Borderline is animated now. we always have to use borderline feature.
       mImpl->mAlwaysUsingBorderline = true;
@@ -1072,10 +1072,10 @@ Dali::Property Visual::Base::GetPropertyObject(Dali::Property::Key key)
     else if(IsTypeAvailableForCornerRadius(mImpl->mType) && ((key.type == Property::Key::INDEX && key.indexKey == DevelVisual::Property::CORNER_RADIUS) || (key.type == Property::Key::STRING && key.stringKey == CORNER_RADIUS)))
     {
       // Register CORNER_RADIUS property
-      mImpl->mCornerRadiusIndex = mImpl->mRenderer.RegisterProperty(DevelVisual::Property::CORNER_RADIUS, CORNER_RADIUS, mImpl->mCornerRadius);
-      mImpl->mRenderer.RegisterProperty(CORNER_RADIUS_POLICY, mImpl->mCornerRadiusPolicy);
+      mImpl->mCornerRadiusIndex = mImpl->mRenderer.RegisterUniqueProperty(DevelVisual::Property::CORNER_RADIUS, CORNER_RADIUS, mImpl->mCornerRadius);
+      mImpl->mRenderer.RegisterUniqueProperty(CORNER_RADIUS_POLICY, mImpl->mCornerRadiusPolicy);
 
-      // ConerRadius is animated now. we always have to use corner radius feature.
+      // CornerRadius is animated now. we always have to use corner radius feature.
       mImpl->mAlwaysUsingCornerRadius = true;
 
       if(!IsBorderlineRequired())
index 9c52f22..1a2445c 100644 (file)
@@ -484,7 +484,7 @@ void Control::EmitKeyInputFocusSignal(bool focusGained)
     auto parent = self->GetParent();
     if(parent && !self->GetStates()[Dali::Accessibility::State::MANAGES_DESCENDANTS])
     {
-      parent->EmitActiveDescendantChanged(parent, self);
+      parent->EmitActiveDescendantChanged(self);
     }
   }
 
index ed43527..c50fb29 100644 (file)
@@ -29,7 +29,7 @@ namespace Toolkit
 {
 const unsigned int TOOLKIT_MAJOR_VERSION = 2;
 const unsigned int TOOLKIT_MINOR_VERSION = 1;
-const unsigned int TOOLKIT_MICRO_VERSION = 5;
+const unsigned int TOOLKIT_MICRO_VERSION = 6;
 const char* const  TOOLKIT_BUILD_DATE    = __DATE__ " " __TIME__;
 
 #ifdef DEBUG_ENABLED
index 72b04a5..12572cc 100644 (file)
@@ -1,6 +1,6 @@
 Name:       dali2-toolkit
 Summary:    Dali 3D engine Toolkit
-Version:    2.1.5
+Version:    2.1.6
 Release:    1
 Group:      System/Libraries
 License:    Apache-2.0 and BSD-3-Clause and MIT