When there are multiple text controls,
there is a problem that the selection is keeped even if the text control loses focus
due to another text control's SelectWholeText().
This patch prevents wrong selection updates via flags.
// example
DevelTextField::SelectWholeText(field1);
DevelTextField::SelectWholeText(field2);
DevelTextField::SelectWholeText(field3);
DevelTextField::SelectWholeText(field4);
In the case of above example, all TextFields display a selection.
Change-Id: I96f87d0b12e4a91493831ca55e0f8b662391456e
Signed-off-by: Bowon Ryu <bowon.ryu@samsung.com>
// Sets some text.
controller->SetText( "Hello world" );
// Sets some text.
controller->SetText( "Hello world" );
+ // When the TextSelectionPopup is active, the controller has focus.
+ controller->KeyboardFocusGainEvent();
+
// Select the whole text.
button = PushButton::DownCast( textPopup.FindChildByName( OPTION_SELECT_ALL ) );
DALI_TEST_CHECK( button );
// Select the whole text.
button = PushButton::DownCast( textPopup.FindChildByName( OPTION_SELECT_ALL ) );
DALI_TEST_CHECK( button );
{
if(EventData::INTERRUPTED != controller.mImpl->mEventData->mState)
{
{
if(EventData::INTERRUPTED != controller.mImpl->mEventData->mState)
{
+ // Init selection position
+ if(controller.mImpl->mEventData->mState == EventData::SELECTING)
+ {
+ controller.mImpl->mEventData->mLeftSelectionPosition = controller.mImpl->mEventData->mPrimaryCursorPosition;
+ controller.mImpl->mEventData->mRightSelectionPosition = controller.mImpl->mEventData->mPrimaryCursorPosition;
+ }
+
controller.mImpl->ChangeState(EventData::INACTIVE);
if(!controller.mImpl->IsShowingRealText())
controller.mImpl->ChangeState(EventData::INACTIVE);
if(!controller.mImpl->IsShowingRealText())
if(impl.mEventData)
{
EventData& eventData = *impl.mEventData;
if(impl.mEventData)
{
EventData& eventData = *impl.mEventData;
- if(eventData.mSelectionEnabled)
+ if(eventData.mSelectionEnabled && eventData.mState != EventData::INACTIVE)
{
ModelPtr& model = impl.mModel;
const Vector2& scrollPosition = model->mScrollPosition;
{
ModelPtr& model = impl.mModel;
const Vector2& scrollPosition = model->mScrollPosition;