+void KeyboardFocusManager::MoveFocusBackward()
+{
+ // Find Pre Focused Actor when the list size is more than 1
+ if( mFocusHistory.size() > 1 )
+ {
+ // Delete current focused actor in history
+ mFocusHistory.pop_back();
+
+ // If pre-focused actors are not on stage or deleted, remove them in stack
+ while( mFocusHistory.size() > 0 )
+ {
+ // Get pre focused actor
+ Actor target = mFocusHistory[ mFocusHistory.size() -1 ].GetHandle();
+
+ // Impl of Actor is not null
+ if( target && target.OnStage() )
+ {
+ // Delete pre focused actor in history because it will pushed again by SetCurrentFocusActor()
+ mFocusHistory.pop_back();
+ SetCurrentFocusActor( target );
+ break;
+ }
+ else
+ {
+ // Target is empty handle or off stage. Erase from queue
+ mFocusHistory.pop_back();
+ }
+ }
+
+ // if there is no actor which can get focus, then push current focus actor in stack again
+ if( mFocusHistory.size() == 0 )
+ {
+ Actor currentFocusedActor = GetCurrentFocusActor();
+ mFocusHistory.push_back( currentFocusedActor );
+ }
+ }
+}
+