Defecfix, _ControlManager::CallOnDetachingFromMainTree
authorkeonpyo.kong <keonpyo.kong@samsung.com>
Thu, 11 Jul 2013 09:57:54 +0000 (18:57 +0900)
committerkeonpyo.kong <keonpyo.kong@samsung.com>
Thu, 11 Jul 2013 10:26:21 +0000 (19:26 +0900)
Change-Id: Ie41895215f6f15299c71575f2b09d056ecaf3a15
Signed-off-by: keonpyo.kong <keonpyo.kong@samsung.com>
apply code review

Change-Id: Ib1496b3d60595981d2a43ee6dd32658f01489f73
Signed-off-by: keonpyo.kong <keonpyo.kong@samsung.com>
src/ui/FUi_Control.cpp
src/ui/FUi_ControlManager.cpp
src/ui/FUi_FocusManagerImpl.cpp
src/ui/FUi_Window.cpp
src/ui/controls/FUiCtrl_Frame.cpp
src/ui/controls/FUiCtrl_MessageBoxPresenter.cpp
src/ui/inc/FUiCtrl_Frame.h
src/ui/inc/FUi_Window.h

index 636ace1..1dcd385 100644 (file)
@@ -1615,7 +1615,7 @@ _Control::CallOnDetachingFromMainTree(_Control& control)
                _Control* pFocusTraversalControl = pTop->GetFocusTraversalControl(this);
                if ((&control) == pFocusTraversalControl)
                {
-                       pTop->SetFocusTraversalControl(this);
+                       pTop->SetFocusTraversalControl(&control, false);
                }
        }
 
index fb993d6..9f68545 100644 (file)
@@ -706,6 +706,21 @@ _ControlManager::CallOnDetachingFromMainTree(_Control& control)
        _Control* pChild = null;
        _Control::ControlList& children = control.GetChildList();
 
+       _Window* pTop = control.GetRootWindow();
+       if (pTop)
+       {
+               _Control* pControl = pTop->GetFocusControl(&control);
+               if ((&control) == pControl)
+               {
+                       pTop->SetFocusControl(&control, false);
+               }
+               _Control* pFocusTraversalControl = pTop->GetFocusTraversalControl(&control);
+               if ((&control) == pFocusTraversalControl)
+               {
+                       pTop->SetFocusTraversalControl(&control, false);
+               }
+       }
+       
        r = control.GetControlDelegate().OnDetachingFromMainTree();
        SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
index cf6bae7..4b53839 100644 (file)
@@ -278,7 +278,7 @@ _FocusManagerImpl::StartFocusTraversal(_Control* pControl, FocusDirection focusD
        else
        {
                _Control* pTraversalControl = FindTraversalControlFromChild(pControl);
-               pTop->SetFocusTraversalControl(pTraversalControl);
+               pTop->SetFocusTraversalControl(pTraversalControl, true);
        }
 
 
@@ -295,7 +295,7 @@ _FocusManagerImpl::StartFocusTraversal(_Control* pControl, FocusDirection focusD
                {
                        if (IsFocusControlListControl(pControl))
                        {
-                               pTop->SetFocusTraversalControl(pControl);
+                               pTop->SetFocusTraversalControl(pControl, true);
                        }
                        pControl->DrawFocus();
                        return;
@@ -309,7 +309,7 @@ _FocusManagerImpl::StartFocusTraversal(_Control* pControl, FocusDirection focusD
                {
                        pFocusControl->SetFocused();
                        pFocusControl->DrawFocus();
-                       pTop->SetFocusTraversalControl(pFocusControl);
+                       pTop->SetFocusTraversalControl(pFocusControl, true);
                        return;
                }
        }
@@ -320,7 +320,7 @@ _FocusManagerImpl::StartFocusTraversal(_Control* pControl, FocusDirection focusD
                {
                        pFocusControl->SetFocused();
                        pFocusControl->DrawFocus();
-                       pTop->SetFocusTraversalControl(pFocusControl);
+                       pTop->SetFocusTraversalControl(pFocusControl, true);
                        return;
                }
        }
@@ -386,7 +386,7 @@ _FocusManagerImpl::StartFocusTraversal(_Control* pControl, FocusDirection focusD
                        index ++;
                }
 
-               pTop->SetFocusTraversalControl(pNextFocusControl);
+               pTop->SetFocusTraversalControl(pNextFocusControl, true);
                if (pNextFocusControl && findNextFocusControl == true)
                {
                        _Control* pParentControl =  pNextFocusControl->GetParent();
index 3d3a2d4..c1a53f0 100644 (file)
@@ -995,10 +995,18 @@ _Window::GetFocusTraversalControl(_Control* pControl) const
 {
        return __pFocusTraversalControl;
 }
+
 void
-_Window::SetFocusTraversalControl(_Control* pControl)
+_Window::SetFocusTraversalControl(_Control* pControl, bool on)
 {
-       __pFocusTraversalControl = pControl;
+       if (on)
+       {
+               __pFocusTraversalControl = pControl;
+       }
+       else
+       {
+               __pFocusTraversalControl = this;
+       }
 }
 
 void
index 48336c7..3656ba7 100644 (file)
@@ -1014,7 +1014,7 @@ _Frame::GetFocusTraversalControl(_Control* pControl) const
 }
 
 void
-_Frame::SetFocusTraversalControl(_Control* pControl)
+_Frame::SetFocusTraversalControl(_Control* pControl, bool on)
 {
        _Form* pForm = null;
        _Control* pTempControl = pControl;
@@ -1043,7 +1043,14 @@ _Frame::SetFocusTraversalControl(_Control* pControl)
 
        if (pForm)
        {
-               pForm->SetFocusTraversalControl(pControl);
+               if (on)
+               {
+                       pForm->SetFocusTraversalControl(pControl);
+               }
+               else
+               {
+                       pForm->SetFocusTraversalControl(pForm);
+               }
        }
 }
 }}} // Tizen::Ui::Controls
index dacfdc2..366eb46 100644 (file)
@@ -1634,7 +1634,7 @@ _MessageBoxPresenter::_MessageBoxButtonListener::OnKeyPressed(const Tizen::Ui::C
 
                if (pFocusControl != null)
                {
-                       pTop->SetFocusTraversalControl(pFocusControl);
+                       pTop->SetFocusTraversalControl(pFocusControl, true);
                        _Control* pParentControl =  pFocusControl->GetParent();
 
                        if (pParentControl != null)
index a6b72de..9fdccf4 100644 (file)
@@ -90,7 +90,7 @@ public:
        virtual void ResetFocusList(void);
        virtual Tizen::Base::Collection::IListT<_Control*>* GetFocusList(void) const;
        virtual _Control* GetFocusTraversalControl(_Control* pControl) const;
-       virtual void SetFocusTraversalControl(_Control* pControl);
+       virtual void SetFocusTraversalControl(_Control* pControl, bool on);
 
 // Focus
        virtual _Control* GetFocusControl(const _Control* pControl) const;
index 627f6c2..d4850b1 100644 (file)
@@ -126,7 +126,7 @@ public:
        virtual Tizen::Base::Collection::IListT<_Control*>* GetFocusList(void) const;
        virtual void ResetFocusList(void);
        virtual _Control* GetFocusTraversalControl(_Control* pControl) const;
-       virtual void SetFocusTraversalControl(_Control* pControl);
+       virtual void SetFocusTraversalControl(_Control* pControl, bool on);
 
        // Dimming
        result SetDimmingEnabled(bool enabled);