/*
- * 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.
*/
// EXTERNAL INCLUDES
+#include <dali/devel-api/text-abstraction/segmentation.h>
#include <dali/public-api/actors/layer.h>
// INTERNAL INCLUDES
float& alignmentOffset,
Actor& renderableActor,
Actor& backgroundActor,
+ Actor& cursorLayerActor,
Toolkit::Control& stencil,
std::vector<Actor>& clippingDecorationActors,
std::vector<Toolkit::TextAnchor>& anchorActors,
{
highlightActor = *it;
}
- else if(it->GetProperty<std::string>(Dali::Actor::Property::NAME) == "CursorLayerActor")
- {
- it->RaiseToTop();
- }
}
clippingDecorationActors.clear();
backgroundActor.LowerToBottom();
}
}
+
+ if(cursorLayerActor)
+ {
+ cursorLayerActor.RaiseToTop();
+ }
+
SynchronizeTextAnchorsInParent(textActor, controller, anchorActors);
}
}
auto endOffset = static_cast<std::size_t>(indices.second);
auto text = GetText(startOffset, endOffset);
- return {startOffset, endOffset, text};
+ return {startOffset, endOffset, std::move(text)};
}
std::string TextControlAccessible::GetText(std::size_t startOffset, std::size_t endOffset) const
if(boundary == Dali::Accessibility::TextBoundary::WORD)
{
- Accessibility::Accessible::FindWordSeparationsUtf8(reinterpret_cast<const utf8_t*>(text.c_str()), textSize, "", breaks.data());
+ TextAbstraction::Segmentation::Get().GetWordBreakPositionsUtf8(reinterpret_cast<const uint8_t*>(text.c_str()), textSize, breaks.data());
}
else
{
- Accessibility::Accessible::FindLineSeparationsUtf8(reinterpret_cast<const utf8_t*>(text.c_str()), textSize, "", breaks.data());
+ TextAbstraction::Segmentation::Get().GetLineBreakPositionsUtf8(reinterpret_cast<const uint8_t*>(text.c_str()), textSize, breaks.data());
}
std::size_t index = 0u;
break;
}
- case Dali::Accessibility::TextBoundary::SENTENCE: // Not supported by default
+ case Dali::Accessibility::TextBoundary::SENTENCE: // Not supported by default
case Dali::Accessibility::TextBoundary::PARAGRAPH: // Not supported by libunibreak library
default:
{
return false;
}
- return SetTextContents(text.erase(startPosition, endPosition - startPosition));
+ return SetTextContents(std::move(text.erase(startPosition, endPosition - startPosition)));
}
bool EditableTextControlAccessible::InsertText(std::size_t startPosition, std::string newText)
{
auto text = GetWholeText();
- if(!ValidateRange(text, startPosition, startPosition + 1))
+ if(!ValidateRange(text, startPosition, startPosition + 1) && !(startPosition == text.size()))
{
return false;
}
- return SetTextContents(text.insert(startPosition, std::move(newText)));
+ return SetTextContents(std::move(text.insert(startPosition, newText)));
}
bool EditableTextControlAccessible::SetTextContents(std::string newContents)