Defect fix SetFocusControl / Check window enable state
authorkeonpyo.kong <keonpyo.kong@samsung.com>
Fri, 28 Jun 2013 09:04:45 +0000 (18:04 +0900)
committerkeonpyo.kong <keonpyo.kong@samsung.com>
Fri, 28 Jun 2013 09:04:45 +0000 (18:04 +0900)
Change-Id: I3b354f6e0085e170639514472e4623a3e0950aef
Signed-off-by: keonpyo.kong <keonpyo.kong@samsung.com>
src/ui/FUi_FocusManagerImpl.cpp
src/ui/controls/FUiCtrl_Frame.cpp

index 13f1ff1..51d01f5 100644 (file)
@@ -262,6 +262,11 @@ void
 _FocusManagerImpl::StartFocusTraversal(_Control* pControl, FocusDirection focusDirection)
 {
        _Window* pTop = pControl->GetRootWindow();
+       bool isWindowEnabled = pTop->IsEnabled();
+       if (!isWindowEnabled)
+       {
+               return;
+       }
        if (pTop)
        {
                _Control* pFocusTraversalControl = pTop->GetFocusTraversalControl(pControl);
index 89d7376..af15a84 100644 (file)
@@ -816,6 +816,7 @@ _Frame::SetFocusControl(const _Control* pControl , bool on)
        SysAssert(pControlMgr);
        _Form* pForm = null;
        _Form* pCurrentForm = GetCurrentForm();
+       _Frame* pFrame = null;
        const _Control* pTempControl = pControl;
        bool isCurrentForm = false;
 
@@ -825,7 +826,15 @@ _Frame::SetFocusControl(const _Control* pControl , bool on)
 
                if (pForm)
                {
-                       break;
+                       pFrame = dynamic_cast<_Frame*>(pForm->GetParent());
+                       if (pFrame)
+                       {
+                               break;
+                       }
+                       else
+                       {
+                               pTempControl = pTempControl->GetParent();
+                       }
                }
                else
                {
@@ -903,13 +912,22 @@ _Frame::SetFocusTraversalControl(_Control* pControl)
 {
        _Form* pForm = null;
        _Control* pTempControl = pControl;
+       _Frame* pFrame = null;
        while(pTempControl)
        {
                pForm = dynamic_cast<_Form*>(const_cast<_Control*>(pTempControl));
 
                if (pForm)
                {
-                       break;
+                       pFrame = dynamic_cast<_Frame*>(pForm->GetParent());
+                       if (pFrame)
+                       {
+                               break;
+                       }
+                       else
+                       {
+                               pTempControl = pTempControl->GetParent();
+                       }
                }
                else
                {