Merge "Add forward and backward type for Tab, Shift-Tab key" into devel/master
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / focus-manager / keyboard-focus-manager-impl.cpp
index 745da15..cc80372 100644 (file)
@@ -514,10 +514,14 @@ bool KeyboardFocusManager::MoveFocus(Toolkit::Control::KeyboardFocus::Direction
         nextFocusableActor                  = mPreFocusChangeSignal.Emit(currentFocusActor, Actor(), direction);
         mIsWaitingKeyboardFocusChangeCommit = false;
       }
-      else if(mEnableDefaultAlgorithm)
+      else if(mEnableDefaultAlgorithm && currentFocusActor)
       {
         // We should find it among the actors nearby.
-        nextFocusableActor = Toolkit::FocusFinder::GetNearestFocusableActor(currentFocusActor, direction);
+        Integration::SceneHolder window = Integration::SceneHolder::Get(currentFocusActor);
+        if(window)
+        {
+          nextFocusableActor = Toolkit::FocusFinder::GetNearestFocusableActor(window.GetRootLayer(), currentFocusActor, direction);
+        }
       }
     }
 
@@ -897,12 +901,8 @@ void KeyboardFocusManager::OnKeyEvent(const KeyEvent& event)
         // "Shift-Tab" key changes it in the backward direction.
         if(!DoMoveFocusToNextFocusGroup(!event.IsShiftModifier()))
         {
-          // If the focus group is not changed, Move the focus towards right, "Shift-Tap" key moves the focus towards left.
-          if(!MoveFocus(event.IsShiftModifier() ? Toolkit::Control::KeyboardFocus::LEFT : Toolkit::Control::KeyboardFocus::RIGHT))
-          {
-            // If the focus is not moved, Move the focus towards down, "Shift-Tap" key moves the focus towards up.
-            MoveFocus(event.IsShiftModifier() ? Toolkit::Control::KeyboardFocus::UP : Toolkit::Control::KeyboardFocus::DOWN);
-          }
+          // If the focus group is not changed, Move the focus towards forward, "Shift-Tap" key moves the focus towards backward.
+          MoveFocus(event.IsShiftModifier() ? Toolkit::Control::KeyboardFocus::BACKWARD : Toolkit::Control::KeyboardFocus::FORWARD);
         }
       }