application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
// Create a tap event to touch the text field.
- TestGenerateTap(application, 30.0f, 25.0f);
+ TestGenerateTap(application, 30.0f, 25.0f, 100);
application.SendNotification();
application.Render();
gAnchorClickedCallBackCalled = false;
// Create a tap event to touch the text field.
- TestGenerateTap(application, 30.0f, 25.0f);
+ TestGenerateTap(application, 30.0f, 25.0f, 700);
application.SendNotification();
field.SetKeyInputFocus();
gAnchorClickedCallBackCalled = false;
// Create a tap event to touch the text field.
- TestGenerateTap(application, 30.0f, 25.0f);
+ TestGenerateTap(application, 30.0f, 25.0f, 1300);
application.SendNotification();
field.SetKeyInputFocus();
gAnchorClickedCallBackCalled = false;
// Create a tap event to touch the text field.
- TestGenerateTap(application, 30.0f, 25.0f);
+ TestGenerateTap(application, 30.0f, 25.0f, 1900);
application.SendNotification();
field.SetKeyInputFocus();
gAnchorClickedCallBackCalled = false;
// Create a tap event to touch the text field.
- TestGenerateTap(application, 30.0f, 25.0f);
+ TestGenerateTap(application, 30.0f, 25.0f, 2500);
application.SendNotification();
field.SetKeyInputFocus();
gAnchorClickedCallBackCalled = false;
// Create a tap event to touch the text field.
- TestGenerateTap(application, 30.0f, 25.0f);
+ TestGenerateTap(application, 30.0f, 25.0f, 3100);
application.SendNotification();
application.Render();
gAnchorClickedCallBackCalled = false;
// Create a tap event to touch the text field.
- TestGenerateTap(application, 30.0f, 25.0f);
+ TestGenerateTap(application, 30.0f, 25.0f, 3700);
application.SendNotification();
application.Render();
gAnchorClickedCallBackCalled = false;
// Create a tap event to touch the text field.
- TestGenerateTap(application, 30.0f, 25.0f);
+ TestGenerateTap(application, 30.0f, 25.0f, 4300);
application.SendNotification();
application.Render();
gAnchorClickedCallBackCalled = false;
// Create a tap event to touch the text field.
- TestGenerateTap(application, 30.0f, 25.0f);
+ TestGenerateTap(application, 30.0f, 25.0f, 4900);
application.SendNotification();
application.Render();
gAnchorClickedCallBackCalled = false;
// Create a tap event to touch the text field.
- TestGenerateTap(application, 30.0f, 25.0f);
+ TestGenerateTap(application, 30.0f, 25.0f, 5500);
application.SendNotification();
application.Render();
DALI_TEST_CHECK( !inputStyleChangedSignal );
// Create a tap event to touch the text field.
- TestGenerateTap( application, 63.0f, 25.0f, 300 );
+ TestGenerateTap( application, 63.0f, 25.0f, 700 );
// Render and notify
application.SendNotification();
s[Dali::Accessibility::State::HIGHLIGHTED] = GetCurrentlyHighlightedActor() == self;
s[Dali::Accessibility::State::ENABLED] = true;
s[Dali::Accessibility::State::SENSITIVE] = true;
- s[Dali::Accessibility::State::ANIMATED] = self.GetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_ANIMATED).Get<bool>();
s[Dali::Accessibility::State::VISIBLE] = true;
if(modal)
{
auto actor = Toolkit::ImageView::New(focusBorderImagePath);
actor.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
DevelControl::AppendAccessibilityAttribute(actor, "highlight", "");
- actor.SetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_ANIMATED, true);
actor.SetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE, false);
return actor;
* @brief Set of accessibility attributes describing object in accessibility hierarchy
* @details Name "accessibilityAttributes", type Property::MAP
*/
- ACCESSIBILITY_ATTRIBUTES,
-
- /**
- * @brief Boolean flag describing object as animated
- * @details Name "accessibilityAnimated", type Property::BOOLEAN
- * @note Flag set to true will prevent BoundChanged accessibility signal from emiting
- */
- ACCESSIBILITY_ANIMATED
+ ACCESSIBILITY_ATTRIBUTES
};
} // namespace Property
const PropertyRegistration Control::Impl::PROPERTY_19(typeRegistration, "accessibilityTranslationDomain", Toolkit::DevelControl::Property::ACCESSIBILITY_TRANSLATION_DOMAIN, Property::STRING, &Control::Impl::SetProperty, &Control::Impl::GetProperty);
const PropertyRegistration Control::Impl::PROPERTY_20(typeRegistration, "accessibilityRole", Toolkit::DevelControl::Property::ACCESSIBILITY_ROLE, Property::INTEGER, &Control::Impl::SetProperty, &Control::Impl::GetProperty);
const PropertyRegistration Control::Impl::PROPERTY_21(typeRegistration, "accessibilityHighlightable", Toolkit::DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE, Property::BOOLEAN, &Control::Impl::SetProperty, &Control::Impl::GetProperty);
-const PropertyRegistration Control::Impl::PROPERTY_22(typeRegistration, "accessibilityAnimated", Toolkit::DevelControl::Property::ACCESSIBILITY_ANIMATED, Property::BOOLEAN, &Control::Impl::SetProperty, &Control::Impl::GetProperty);
// clang-format on
Control::Impl::Impl(Control& controlImpl)
}
break;
}
-
- case Toolkit::DevelControl::Property::ACCESSIBILITY_ANIMATED:
- {
- bool animated;
- if(value.Get(animated))
- {
- controlImpl.mImpl->mAccessibilityAnimated = animated;
- }
- break;
- }
}
}
}
value = controlImpl.mImpl->mAccessibilityAttributes;
break;
}
-
- case Toolkit::DevelControl::Property::ACCESSIBILITY_ANIMATED:
- {
- value = controlImpl.mImpl->mAccessibilityAnimated;
- break;
- }
}
}
return nullptr;
}
-void Control::Impl::PositionOrSizeChangedCallback(PropertyNotification& p)
-{
- auto self = Dali::Actor::DownCast(p.GetTarget());
- if(Dali::Accessibility::IsUp() && !self.GetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_ANIMATED).Get<bool>())
- {
- auto extents = DevelActor::CalculateScreenExtents(self);
- Dali::Accessibility::Accessible::Get(self)->EmitBoundsChanged(extents);
- }
-}
-
-void Control::Impl::CulledChangedCallback(PropertyNotification& p)
-{
- if(Dali::Accessibility::IsUp())
- {
- auto self = Dali::Actor::DownCast(p.GetTarget());
- Dali::Accessibility::Accessible::Get(self)->EmitShowing(!self.GetProperty(DevelActor::Property::CULLED).Get<bool>());
- }
-}
-
-void Control::Impl::AccessibilityRegister()
-{
- if(!accessibilityNotificationSet)
- {
- accessibilityNotificationPosition = mControlImpl.Self().AddPropertyNotification(Actor::Property::POSITION, StepCondition(0.01f));
- accessibilityNotificationPosition.SetNotifyMode(PropertyNotification::NOTIFY_ON_CHANGED);
- accessibilityNotificationPosition.NotifySignal().Connect(&Control::Impl::PositionOrSizeChangedCallback);
-
- accessibilityNotificationSize = mControlImpl.Self().AddPropertyNotification(Actor::Property::SIZE, StepCondition(0.01f));
- accessibilityNotificationSize.SetNotifyMode(PropertyNotification::NOTIFY_ON_CHANGED);
- accessibilityNotificationSize.NotifySignal().Connect(&Control::Impl::PositionOrSizeChangedCallback);
-
- accessibilityNotificationCulled = mControlImpl.Self().AddPropertyNotification(DevelActor::Property::CULLED, LessThanCondition(0.5f));
- accessibilityNotificationCulled.SetNotifyMode(PropertyNotification::NOTIFY_ON_CHANGED);
- accessibilityNotificationCulled.NotifySignal().Connect(&Control::Impl::CulledChangedCallback);
-
- accessibilityNotificationSet = true;
- }
-}
-
-void Control::Impl::AccessibilityDeregister(bool remove)
-{
- if(accessibilityNotificationSet)
- {
- accessibilityNotificationPosition.NotifySignal().Disconnect(&Control::Impl::PositionOrSizeChangedCallback);
- if(remove)
- {
- mControlImpl.Self().RemovePropertyNotification(accessibilityNotificationPosition);
- }
- accessibilityNotificationPosition.Reset();
- accessibilityNotificationPosition = {};
-
- accessibilityNotificationSize.NotifySignal().Disconnect(&Control::Impl::PositionOrSizeChangedCallback);
- if(remove)
- {
- mControlImpl.Self().RemovePropertyNotification(accessibilityNotificationSize);
- }
- accessibilityNotificationSize.Reset();
- accessibilityNotificationSize = {};
-
- accessibilityNotificationCulled.NotifySignal().Disconnect(&Control::Impl::CulledChangedCallback);
- if(remove)
- {
- mControlImpl.Self().RemovePropertyNotification(accessibilityNotificationCulled);
- }
- accessibilityNotificationCulled.Reset();
- accessibilityNotificationCulled = {};
- accessibilityNotificationSet = false;
- }
-}
-
} // namespace Internal
} // namespace Toolkit
Dali::Accessibility::Role mAccessibilityRole = Dali::Accessibility::Role::UNKNOWN;
std::vector<std::vector<Accessibility::Address>> mAccessibilityRelations;
- bool mAccessibilityAnimated = false;
// Gesture Detection
PinchGestureDetector mPinchGestureDetector;
static Dali::Accessibility::Accessible* GetAccessibilityObject(Dali::Actor actor);
Dali::Accessibility::Accessible* GetAccessibilityObject();
- void AccessibilityRegister();
- void AccessibilityDeregister(bool remove);
-
std::function<std::unique_ptr<Dali::Accessibility::Accessible>(Actor)> accessibilityConstructor;
std::unique_ptr<Dali::Accessibility::Accessible> accessibilityObject;
- Dali::PropertyNotification accessibilityNotificationPosition, accessibilityNotificationSize, accessibilityNotificationCulled;
- bool accessibilityNotificationSet = false;
- static void PositionOrSizeChangedCallback(PropertyNotification&);
- static void CulledChangedCallback(PropertyNotification&);
};
} // namespace Internal
eventData->mUpdateCursorPosition = false;
eventData->mUpdateGrabHandlePosition = false;
}
- else
+
+ if(eventData->mUpdateHighlightBox ||
+ eventData->mUpdateLeftSelectionPosition ||
+ eventData->mUpdateRightSelectionPosition)
{
CursorInfo leftHandleInfo;
CursorInfo rightHandleInfo;
bool VectorAnimationTask::Rasterize()
{
bool stopped = false;
- uint32_t currentFrame, droppedFrames = 0;
+ uint32_t currentFrame;
{
ConditionalWait::ScopedLock lock(mConditionalWait);
// The task will be destroyed. We don't need rasterization.
return false;
}
- droppedFrames = mDroppedFrames;
}
ApplyAnimationData();
if(mPlayState == PlayState::PLAYING && mUpdateFrameNumber)
{
- mCurrentFrame = mForward ? mCurrentFrame + droppedFrames + 1 : mCurrentFrame - droppedFrames - 1;
+ mCurrentFrame = mForward ? mCurrentFrame + mDroppedFrames + 1 : mCurrentFrame - mDroppedFrames - 1;
Dali::ClampInPlace(mCurrentFrame, mStartFrame, mEndFrame);
}
VectorAnimationTask::TimePoint VectorAnimationTask::CalculateNextFrameTime(bool renderNow)
{
- uint32_t droppedFrames = 0;
-
// std::chrono::time_point template has second parameter duration which defaults to the std::chrono::system_clock supported
// duration. In some C++11 implementations it is a milliseconds duration, so it fails to compile unless mNextFrameStartTime
// is casted to use the default duration.
if(renderNow)
{
mNextFrameStartTime = current;
+ mDroppedFrames = 0;
}
else if(mNextFrameStartTime < current)
{
+ uint32_t droppedFrames = 0;
+
while(current > std::chrono::time_point_cast<TimePoint::duration>(mNextFrameStartTime + std::chrono::microseconds(mFrameDurationMicroSeconds)))
{
droppedFrames++;
mNextFrameStartTime = std::chrono::time_point_cast<TimePoint::duration>(mNextFrameStartTime + std::chrono::microseconds(mFrameDurationMicroSeconds));
}
- {
- ConditionalWait::ScopedLock lock(mConditionalWait);
- mDroppedFrames = droppedFrames;
- }
-
mNextFrameStartTime = current;
+ mDroppedFrames = droppedFrames;
}
return mNextFrameStartTime;
// The clipping renderer is only created if required.
CreateClippingRenderer(*this);
-
- mImpl->AccessibilityRegister();
}
void Control::OnSceneDisconnection()
{
- mImpl->AccessibilityDeregister(true);
mImpl->OnSceneDisconnection();
}