Merge "fix wrong behaviour of SelectNone()" into devel/master
authorBowon Ryu <bowon.ryu@samsung.com>
Fri, 27 Aug 2021 02:01:37 +0000 (02:01 +0000)
committerGerrit Code Review <gerrit@review>
Fri, 27 Aug 2021 02:01:37 +0000 (02:01 +0000)
1  2 
dali-toolkit/internal/text/text-controller-impl-event-handler.cpp

@@@ -286,8 -286,6 +286,8 @@@ void ControllerImplEventHandler::OnCurs
    ModelPtr&        model           = impl.mModel;
    LogicalModelPtr& logicalModel    = model->mLogicalModel;
    VisualModelPtr&  visualModel     = model->mVisualModel;
 +  uint32_t         oldSelStart     = eventData.mLeftSelectionPosition;
 +  uint32_t         oldSelEnd       = eventData.mRightSelectionPosition;
  
    CharacterIndex& primaryCursorPosition         = eventData.mPrimaryCursorPosition;
    CharacterIndex  previousPrimaryCursorPosition = primaryCursorPosition;
      // Update selection position after moving the cursor
      eventData.mLeftSelectionPosition  = primaryCursorPosition;
      eventData.mRightSelectionPosition = primaryCursorPosition;
 +
 +    if(impl.mSelectableControlInterface != nullptr && eventData.mDecorator->IsHighlightVisible())
 +    {
 +      impl.mSelectableControlInterface->SelectionChanged(oldSelStart, oldSelEnd, eventData.mLeftSelectionPosition, eventData.mRightSelectionPosition);
 +    }
    }
  
    if(isShiftModifier && impl.IsShowingRealText() && eventData.mShiftSelectionFlag)
        int cursorPositionDelta = primaryCursorPosition - previousPrimaryCursorPosition;
        if(cursorPositionDelta > 0 || eventData.mRightSelectionPosition > 0u) // Check the boundary
        {
 -        uint32_t oldStart = eventData.mLeftSelectionPosition;
 -        uint32_t oldEnd   = eventData.mRightSelectionPosition;
 -
          eventData.mRightSelectionPosition += cursorPositionDelta;
  
          if(impl.mSelectableControlInterface != nullptr)
          {
 -          impl.mSelectableControlInterface->SelectionChanged(oldStart, oldEnd, eventData.mLeftSelectionPosition, eventData.mRightSelectionPosition);
 +          impl.mSelectableControlInterface->SelectionChanged(oldSelStart, oldSelEnd, eventData.mLeftSelectionPosition, eventData.mRightSelectionPosition);
          }
        }
        selecting = true;
@@@ -481,10 -477,8 +481,10 @@@ void ControllerImplEventHandler::OnTapE
        if(impl.IsShowingRealText())
        {
          // Convert from control's coords to text's coords.
 -        const float xPosition = event.p2.mFloat - model->mScrollPosition.x;
 -        const float yPosition = event.p3.mFloat - model->mScrollPosition.y;
 +        const float xPosition   = event.p2.mFloat - model->mScrollPosition.x;
 +        const float yPosition   = event.p3.mFloat - model->mScrollPosition.y;
 +        uint32_t    oldSelStart = eventData.mLeftSelectionPosition;
 +        uint32_t    oldSelEnd   = eventData.mRightSelectionPosition;
  
          // Keep the tap 'x' position. Used to move the cursor.
          eventData.mCursorHookPositionX = xPosition;
                                                                         CharacterHitTest::TAP,
                                                                         matchedCharacter);
  
 +        if(impl.mSelectableControlInterface != nullptr && eventData.mDecorator->IsHighlightVisible())
 +        {
 +          impl.mSelectableControlInterface->SelectionChanged(oldSelStart, oldSelEnd, eventData.mPrimaryCursorPosition, eventData.mPrimaryCursorPosition);
 +        }
 +
          // When the cursor position is changing, delay cursor blinking
          eventData.mDecorator->DelayCursorBlink();
        }
@@@ -719,12 -708,11 +719,11 @@@ void ControllerImplEventHandler::OnSele
      EventData& eventData = *impl.mEventData;
      if(eventData.mSelectionEnabled && eventData.mState == EventData::SELECTING)
      {
-       eventData.mPrimaryCursorPosition = 0u;
        uint32_t oldStart                = eventData.mLeftSelectionPosition;
        uint32_t oldEnd                  = eventData.mRightSelectionPosition;
  
        eventData.mLeftSelectionPosition = eventData.mRightSelectionPosition = eventData.mPrimaryCursorPosition;
-       impl.ChangeState(EventData::INACTIVE);
+       impl.ChangeState(EventData::EDITING);
        eventData.mUpdateCursorPosition      = true;
        eventData.mUpdateInputStyle          = true;
        eventData.mScrollAfterUpdatePosition = true;