+
+ if( LayoutEngine::MULTI_LINE_BOX == mLayoutEngine.GetLayout() )
+ {
+ // If the text is editable and multi-line, the cursor position after a white space shouldn't exceed the boundaries of the text control.
+
+ // Note the white spaces laid-out at the end of the line might exceed the boundaries of the control.
+ // The reason is a wrapped line must not start with a white space so they are laid-out at the end of the line.
+
+ if( 0.f > cursorInfo.primaryPosition.x )
+ {
+ cursorInfo.primaryPosition.x = 0.f;
+ }
+
+ const float edgeWidth = mVisualModel->mControlSize.width - static_cast<float>( mEventData->mDecorator->GetCursorWidth() );
+ if( cursorInfo.primaryPosition.x > edgeWidth )
+ {
+ cursorInfo.primaryPosition.x = edgeWidth;
+ }
+ }