X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Fpublic-api%2Fcontrols%2Fcontrol-impl.cpp;h=40f34a0094663390f8641d0ecb71be6d9a4e8db7;hb=e591332735fe123a1d72ec7b88133a5dc14dc493;hp=9b10ffd3b21fc3b84fc152d66c4df8ca1e5244a9;hpb=38f0ea9fcdf1dc5037144fa19c8a52316c8af763;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 9b10ffd..40f34a0 100644 --- a/dali-toolkit/public-api/controls/control-impl.cpp +++ b/dali-toolkit/public-api/controls/control-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Samsung Electronics Co., Ltd. + * Copyright (c) 2024 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. @@ -24,21 +24,19 @@ #include #include #include -#include -#include +#include #include #include // for strcmp #include #include -#include // INTERNAL INCLUDES #include #include #include #include -#include #include +#include #include #include #include @@ -167,6 +165,12 @@ void Control::ClearBackground() RelayoutRequest(); } +void Control::SetResourceReady() +{ + Internal::Control::Impl& controlDataImpl = Internal::Control::Impl::Get(*this); + controlDataImpl.ResourceReady(); +} + Toolkit::DevelControl::ControlAccessible* Control::GetAccessibleObject() { return mImpl->GetAccessibleObject(); @@ -304,12 +308,6 @@ bool Control::IsKeyboardFocusGroup() return Toolkit::KeyboardFocusManager::Get().IsFocusGroup(Self()); } -void Control::AccessibilityActivate() -{ - // Inform deriving classes - OnAccessibilityActivated(); -} - void Control::KeyboardEnter() { // Inform deriving classes @@ -436,20 +434,18 @@ void Control::Initialize() { SetKeyboardNavigationSupport(true); } - - Dali::TypeInfo type; - Self().GetTypeInfo(type); - if(type) - { - auto typeName = type.GetName(); - DevelControl::AppendAccessibilityAttribute(Toolkit::Control::DownCast(Self()), "class", typeName); - } } void Control::OnInitialize() { } +bool Control::IsResourceReady() const +{ + const Internal::Control::Impl& controlDataImpl = Internal::Control::Impl::Get(*this); + return controlDataImpl.IsResourceReady(); +} + void Control::OnStyleChange(Toolkit::StyleManager styleManager, StyleChange::Type change) { // By default the control is only interested in theme (not font) changes @@ -494,12 +490,15 @@ void Control::EmitKeyInputFocusSignal(bool focusGained) if(Accessibility::IsUp()) { - auto self = GetAccessibleObject(); - self->EmitFocused(focusGained); - auto parent = self->GetParent(); - if(parent && !self->GetStates()[Dali::Accessibility::State::MANAGES_DESCENDANTS]) + auto accessible = GetAccessibleObject(); + if(DALI_LIKELY(accessible)) { - parent->EmitActiveDescendantChanged(self); + accessible->EmitFocused(focusGained); + auto parent = accessible->GetParent(); + if(parent && !accessible->GetStates()[Dali::Accessibility::State::MANAGES_DESCENDANTS]) + { + parent->EmitActiveDescendantChanged(accessible); + } } } @@ -581,28 +580,17 @@ void Control::OnPropertySet(Property::Index index, const Property::Value& proper } case Actor::Property::VISIBLE: { - const bool visible = propertyValue.Get(); - GetAccessibleObject()->EmitVisible(visible); - if(!visible) + auto* accessible = GetAccessibleObject(); + if(DALI_LIKELY(accessible) && accessible->IsHighlighted()) { - Dali::Actor self = Self(); - Dali::Actor actor = Dali::Toolkit::KeyboardFocusManager::Get().GetCurrentFocusActor(); - while(actor) - { - if(self == actor) - { - Dali::Toolkit::KeyboardFocusManager::Get().ClearFocus(); - break; - } - actor = actor.GetParent(); - } + accessible->EmitVisible(Self().GetProperty(Actor::Property::VISIBLE)); } break; } case DevelActor::Property::USER_INTERACTION_ENABLED: { const bool enabled = propertyValue.Get(); - if (!enabled && Self() == Dali::Toolkit::KeyboardFocusManager::Get().GetCurrentFocusActor()) + if(!enabled && Self() == Dali::Toolkit::KeyboardFocusManager::Get().GetCurrentFocusActor()) { Dali::Toolkit::KeyboardFocusManager::Get().ClearFocus(); } @@ -730,8 +718,7 @@ void Control::SignalDisconnected(SlotObserver* slotObserver, CallbackBase* callb mImpl->SignalDisconnected(slotObserver, callback); } -void Control::MakeVisualTransition(Dali::Property::Map& sourcePropertyMap, Dali::Property::Map& destinationPropertyMap, - Dali::Toolkit::Control source, Dali::Toolkit::Control destination, Dali::Property::Index visualIndex) +void Control::MakeVisualTransition(Dali::Property::Map& sourcePropertyMap, Dali::Property::Map& destinationPropertyMap, Dali::Toolkit::Control source, Dali::Toolkit::Control destination, Dali::Property::Index visualIndex) { sourcePropertyMap.Clear(); destinationPropertyMap.Clear(); @@ -750,8 +737,7 @@ void Control::MakeVisualTransition(Dali::Property::Map& sourcePropertyMap, Dali: sourceVisual.CreatePropertyMap(sourceMap); destinationVisual.CreatePropertyMap(destinationMap); - static auto findValueVector4 = [](const Property::Map& map, Property::Index index, const Vector4& defaultValue = Vector4()) -> Vector4 - { + static auto findValueVector4 = [](const Property::Map& map, Property::Index index, const Vector4& defaultValue = Vector4()) -> Vector4 { Property::Value* propertyValue = map.Find(index); if(propertyValue) { @@ -760,8 +746,7 @@ void Control::MakeVisualTransition(Dali::Property::Map& sourcePropertyMap, Dali: return defaultValue; }; - static auto findValueFloat = [](const Property::Map& map, Property::Index index, const float& defaultValue = 0.0f) -> float - { + static auto findValueFloat = [](const Property::Map& map, Property::Index index, const float& defaultValue = 0.0f) -> float { Property::Value* propertyValue = map.Find(index); if(propertyValue) { @@ -807,7 +792,7 @@ void Control::MakeVisualTransition(Dali::Property::Map& sourcePropertyMap, Dali: destinationPropertyMap.Add(Dali::Toolkit::DevelVisual::Property::CORNER_RADIUS, destinationCornerRadius); } - if(sourceBorderlineWidth != destinationBorderlineWidth) + if(!Dali::Equals(sourceBorderlineWidth, destinationBorderlineWidth)) { sourcePropertyMap.Add(Dali::Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, sourceBorderlineWidth); destinationPropertyMap.Add(Dali::Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, destinationBorderlineWidth); @@ -819,7 +804,7 @@ void Control::MakeVisualTransition(Dali::Property::Map& sourcePropertyMap, Dali: destinationPropertyMap.Add(Dali::Toolkit::DevelVisual::Property::BORDERLINE_COLOR, destinationBorderlineColor); } - if(sourceBorderlineOffset != destinationBorderlineOffset) + if(!Dali::Equals(sourceBorderlineOffset, destinationBorderlineOffset)) { sourcePropertyMap.Add(Dali::Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, sourceBorderlineOffset); destinationPropertyMap.Add(Dali::Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, destinationBorderlineOffset);