CURSOR_KEY_EVENT,
TAP_EVENT,
PAN_EVENT,
- GRAB_HANDLE_EVENT
+ GRAB_HANDLE_EVENT,
+ LEFT_SELECTION_HANDLE_EVENT,
+ RIGHT_SELECTION_HANDLE_EVENT
};
union Param
{
p1.mInt = 0;
p2.mInt = 0;
+ p3.mInt = 0;
}
Type type;
State mState; ///< Selection mode, edit mode etc.
CharacterIndex mPrimaryCursorPosition; ///< Index into logical model for primary cursor.
- CharacterIndex mSecondaryCursorPosition; ///< Index into logical model for secondary cursor.
+ CharacterIndex mLeftSelectionPosition; ///< Index into logical model for left selection handle.
+ CharacterIndex mRightSelectionPosition; ///< Index into logical model for right selection handle.
bool mDecoratorUpdated : 1; ///< True if the decorator was updated during event processing.
bool mCursorBlinkEnabled : 1; ///< True if cursor should blink when active.
bool mHorizontalScrollingEnabled : 1; ///< True if horizontal scrolling is enabled.
bool mVerticalScrollingEnabled : 1; ///< True if vertical scrolling is enabled.
bool mUpdateCursorPosition : 1; ///< True if the visual position of the cursor must be recalculated.
+ bool mUpdateLeftSelectionPosition : 1; ///< True if the visual position of the left selection handle must be recalculated.
+ bool mUpdateRightSelectionPosition : 1; ///< True if the visual position of the right selection handle must be recalculated.
bool mScrollAfterUpdateCursorPosition : 1; ///< Whether to scroll after the cursor position is updated.
};
void OnPanEvent( const Event& event );
- void OnGrabHandleEvent( const Event& event );
+ void OnHandleEvent( const Event& event );
void RepositionSelectionHandles( float visualX, float visualY );
void UpdateCursorPosition();
/**
+ * @brief Updates the position of the given selection handle.
+ *
+ * @param[in] handleType One of the selection handles.
+ */
+ void UpdateSelectionHandle( HandleType handleType );
+
+ /**
* @biref Clamps the horizontal scrolling to get the control always filled with text.
*
* @param[in] actualSize The size of the laid out text.