X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ffocus-manager%2Fkeyboard-focus-manager-impl.cpp;h=a7987ac5b410574c61890904a197b26998835c17;hp=df8d73aba52e26aa2b50154c88b1f20d843d4d5b;hb=e1f62b191823249c41ecbdf79ac33b082e5b8dc9;hpb=454a504d9a22ca1271d0065c42dfedc927897807;ds=sidebyside diff --git a/dali-toolkit/internal/focus-manager/keyboard-focus-manager-impl.cpp b/dali-toolkit/internal/focus-manager/keyboard-focus-manager-impl.cpp index df8d73a..a7987ac 100644 --- a/dali-toolkit/internal/focus-manager/keyboard-focus-manager-impl.cpp +++ b/dali-toolkit/internal/focus-manager/keyboard-focus-manager-impl.cpp @@ -516,13 +516,27 @@ bool KeyboardFocusManager::MoveFocus(Toolkit::Control::KeyboardFocus::Direction nextFocusableActor = mPreFocusChangeSignal.Emit(currentFocusActor, Actor(), direction); mIsWaitingKeyboardFocusChangeCommit = false; } - else if(mEnableDefaultAlgorithm && currentFocusActor) + else if (mEnableDefaultAlgorithm) { - // We should find it among the actors nearby. - Integration::SceneHolder window = Integration::SceneHolder::Get(currentFocusActor); - if(window) + Layer rootLayer; + if (currentFocusActor) { - nextFocusableActor = Toolkit::FocusFinder::GetNearestFocusableActor(window.GetRootLayer(), currentFocusActor, direction); + // Find the window of the focused actor. + Integration::SceneHolder window = Integration::SceneHolder::Get(currentFocusActor); + if (window) + { + rootLayer = window.GetRootLayer(); + } + } + else + { + // Searches from the currently focused window. + rootLayer = mCurrentFocusedWindow.GetHandle(); + } + if (rootLayer) + { + // We should find it among the actors nearby. + nextFocusableActor = Toolkit::FocusFinder::GetNearestFocusableActor(rootLayer, currentFocusActor, direction); } } }