add patch
[framework/osp/uifw.git] / src / ui / FUi_FocusManagerImpl.cpp
index ee16e36..ab548c5 100644 (file)
@@ -53,11 +53,15 @@ _FocusManagerImpl::_FocusManagerImpl(void)
        , __focusDirection(FOCUS_DIRECTION_DOWNWARD)
 {
 #ifdef _FOCUS_UI_
-       result r = _UiEventManager::GetInstance()->AddPostKeyEventListener(*this);
-       SysTryReturnVoidResult(NID_UI,  r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
+       _UiEventManager* pUiEventManager = _UiEventManager::GetInstance();
+       if (pUiEventManager)
+       {
+               result r = pUiEventManager->AddPostKeyEventListener(*this);
+               SysTryReturnVoidResult(NID_UI,  r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
 
-       r = _UiEventManager::GetInstance()->AddTouchEventListener(*this);
-       SysTryReturnVoidResult(NID_UI,  r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
+               r = pUiEventManager->AddTouchEventListener(*this);
+               SysTryReturnVoidResult(NID_UI,  r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
+       }
 #endif
 }
 
@@ -261,6 +265,7 @@ _FocusManagerImpl::IsFocusControlListControl(_Control* pControl) const
 void
 _FocusManagerImpl::StartFocusTraversal(_Control* pControl, FocusDirection focusDirection)
 {
+       _Control* pOriginalControl = pControl;
        _Window* pTop = pControl->GetRootWindow();
        if (pTop == null)
        {
@@ -287,7 +292,10 @@ _FocusManagerImpl::StartFocusTraversal(_Control* pControl, FocusDirection focusD
        if (__isFocusMode == false)
        {
                __isFocusMode = true;
-               pControl->OnFocusModeStateChanged();
+               if (pOriginalControl)
+               {
+                       pOriginalControl->OnFocusModeStateChanged();
+               }
        }
 
        if (focusMode == false && pControl->IsFocused())
@@ -473,11 +481,11 @@ _FocusManagerImpl::OnTouchPressed(const _Control& source, const _TouchInfo& touc
        _Window* pTop = source.GetRootWindow();
        if (pTop)
        {
-               _Control* pFocusTraversalControl = pTop->GetFocusTraversalControl(pSourceControl);
-               if (pFocusTraversalControl)
+               _Control* pControl = pTop->GetFocusControl(pSourceControl);
+               if (pControl)
                {
-                       pFocusTraversalControl->OnFocusModeStateChanged();
-                       pFocusTraversalControl->RemoveFocusRing();
+                       pControl->OnFocusModeStateChanged();
+                       pControl->RemoveFocusRing();
                }
        }