+void KeyboardFocusManager::MoveFocusBackward()
+{
+ // Find Pre Focused Actor when the list size is more than 1
+ if( mFocusHistory.Count() > 1 )
+ {
+ // Delete current focused actor in history
+ FocusStackIterator endPos = mFocusHistory.End();
+ endPos = mFocusHistory.Erase( --endPos );
+
+ // If pre-focused actors are not on stage, remove them in stack
+ while( !Dali::Actor::DownCast(BaseHandle(mFocusHistory[ mFocusHistory.Count() - 1 ])).OnStage() )
+ {
+ endPos = mFocusHistory.Erase( --endPos );
+ }
+
+ // Get pre focused actor
+ BaseObject* object = mFocusHistory[ mFocusHistory.Count() - 1 ];
+ BaseHandle handle( object );
+ Actor preFocusedActor = Dali::Actor::DownCast( handle );
+
+ // Delete pre focused actor in history because it will pushed again by SetCurrentFocusActor()
+ mFocusHistory.Erase( --endPos );
+
+ SetCurrentFocusActor( preFocusedActor );
+ }
+}
+