{
if(EventData::INTERRUPTED != controller.mImpl->mEventData->mState)
{
+ // Init selection position
+ if(controller.mImpl->mEventData->mState == EventData::SELECTING)
+ {
+ uint32_t oldStart, oldEnd;
+ oldStart = controller.mImpl->mEventData->mLeftSelectionPosition;
+ oldEnd = controller.mImpl->mEventData->mRightSelectionPosition;
+
+ controller.mImpl->mEventData->mLeftSelectionPosition = controller.mImpl->mEventData->mPrimaryCursorPosition;
+ controller.mImpl->mEventData->mRightSelectionPosition = controller.mImpl->mEventData->mPrimaryCursorPosition;
+
+ if(controller.mImpl->mSelectableControlInterface != nullptr)
+ {
+ controller.mImpl->mSelectableControlInterface->SelectionChanged(oldStart, oldEnd, controller.mImpl->mEventData->mPrimaryCursorPosition, controller.mImpl->mEventData->mPrimaryCursorPosition);
+ }
+ }
+
controller.mImpl->ChangeState(EventData::INACTIVE);
if(!controller.mImpl->IsShowingRealText())
// Release the active highlight.
if(controller.mImpl->mEventData->mState == EventData::SELECTING)
{
+ uint32_t oldStart, oldEnd;
+ oldStart = controller.mImpl->mEventData->mLeftSelectionPosition;
+ oldEnd = controller.mImpl->mEventData->mRightSelectionPosition;
+
controller.mImpl->ChangeState(EventData::EDITING);
// Update selection position.
controller.mImpl->mEventData->mLeftSelectionPosition = controller.mImpl->mEventData->mPrimaryCursorPosition;
controller.mImpl->mEventData->mRightSelectionPosition = controller.mImpl->mEventData->mPrimaryCursorPosition;
controller.mImpl->mEventData->mUpdateCursorPosition = true;
+
+ if(controller.mImpl->mSelectableControlInterface != nullptr)
+ {
+ controller.mImpl->mSelectableControlInterface->SelectionChanged(oldStart, oldEnd, controller.mImpl->mEventData->mLeftSelectionPosition, controller.mImpl->mEventData->mRightSelectionPosition);
+ }
+
controller.mImpl->RequestRelayout();
}
return false;
}
}
+void Controller::EventHandler::SelectEvent(Controller& controller, const uint32_t start, const uint32_t end, SelectionType selectType)
+{
+ DALI_LOG_INFO(gLogFilter, Debug::Verbose, "Controller::SelectEvent\n");
+
+ if(NULL != controller.mImpl->mEventData)
+ {
+ if(selectType == SelectionType::RANGE)
+ {
+ Event event(Event::SELECT_RANGE);
+ event.p2.mUint = start;
+ event.p3.mUint = end;
+ controller.mImpl->mEventData->mEventQueue.push_back(event);
+ }
+
+ controller.mImpl->mEventData->mCheckScrollAmount = true;
+ controller.mImpl->mEventData->mIsLeftHandleSelected = true;
+ controller.mImpl->mEventData->mIsRightHandleSelected = true;
+ controller.mImpl->RequestRelayout();
+ }
+}
+
void Controller::EventHandler::ProcessModifyEvents(Controller& controller)
{
Vector<ModifyEvent>& events = controller.mImpl->mModifyEvents;
if(NULL != controller.mImpl->mEventData)
{
+ uint32_t oldStart, oldEnd;
+ oldStart = controller.mImpl->mEventData->mLeftSelectionPosition;
+ oldEnd = controller.mImpl->mEventData->mRightSelectionPosition;
+
// When the text is being modified, delay cursor blinking
controller.mImpl->mEventData->mDecorator->DelayCursorBlink();
// Update selection position after modifying the text
controller.mImpl->mEventData->mLeftSelectionPosition = controller.mImpl->mEventData->mPrimaryCursorPosition;
controller.mImpl->mEventData->mRightSelectionPosition = controller.mImpl->mEventData->mPrimaryCursorPosition;
+
+ if(controller.mImpl->mSelectableControlInterface != nullptr && controller.mImpl->mEventData->mState == EventData::SELECTING)
+ {
+ controller.mImpl->mSelectableControlInterface->SelectionChanged(oldStart, oldEnd, controller.mImpl->mEventData->mLeftSelectionPosition, controller.mImpl->mEventData->mRightSelectionPosition);
+ }
}
// DISCARD temporary text