mIsFocusIndicatorEnabled( -1 ),
mFocusGroupLoopEnabled( false ),
mIsWaitingKeyboardFocusChangeCommit( false ),
+ mClearFocusOnTouch( true ),
mFocusHistory(),
mSlotDelegate( this ),
mCustomAlgorithmInterface(NULL)
{
Property::Map config = Toolkit::DevelStyleManager::GetConfigurations( styleManager );
mIsFocusIndicatorEnabled = static_cast<int>(config["alwaysShowFocus"].Get<bool>());
+ mClearFocusOnTouch = mIsFocusIndicatorEnabled ? false : true;
}
}
void KeyboardFocusManager::OnTouch(const TouchData& touch)
{
+ // if mIsFocusIndicatorEnabled is -1, it means Configuration is not loaded.
+ // Try to load configuration.
+ if( mIsFocusIndicatorEnabled == -1 )
+ {
+ GetConfigurationFromStyleManger();
+ }
+
// Clear the focus when user touch the screen.
// We only do this on a Down event, otherwise the clear action may override a manually focused actor.
- if( ( touch.GetPointCount() < 1 ) || ( touch.GetState( 0 ) == PointState::DOWN ) )
+ // If mClearFocusOnTouch is false, do not clear the focus even if user touch the screen.
+ if( (( touch.GetPointCount() < 1 ) || ( touch.GetState( 0 ) == PointState::DOWN )) && mClearFocusOnTouch )
{
ClearFocus();
}
bool mIsWaitingKeyboardFocusChangeCommit:1; /// A flag to indicate PreFocusChangeSignal emitted but the proposed focus actor is not commited by the application yet.
+ bool mClearFocusOnTouch:1; ///< Whether clear focus on touch.
+
FocusStack mFocusHistory; ///< Stack to contain pre-focused actor's BaseObject*
SlotDelegate< KeyboardFocusManager > mSlotDelegate;