From: keonpyo.kong Date: Fri, 14 Jun 2013 08:28:21 +0000 (+0900) Subject: Fix defect in SetFocusControl X-Git-Tag: accepted/tizen/20130924.144426~1^2~538 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ccd0378b760e39cd44cf1754acd5638e2c9e2f9b;p=platform%2Fframework%2Fnative%2Fuifw.git Fix defect in SetFocusControl Change-Id: I724dd427148cf74594f80f4c14b8c0bdd0a0a09e Signed-off-by: keonpyo.kong apply code review Change-Id: Ie4536f146b7fc6466e9d45167925fafddf8e815f Signed-off-by: keonpyo.kong --- diff --git a/src/ui/FUi_Control.cpp b/src/ui/FUi_Control.cpp index 045e282..733cefc 100644 --- a/src/ui/FUi_Control.cpp +++ b/src/ui/FUi_Control.cpp @@ -1542,7 +1542,7 @@ _Control::CallOnDetachingFromMainTree(_Control& control) _Control* pControl = pTop->GetFocusControl(this); if ((&control) == pControl) { - pTop->SetFocusControl(null); + pTop->SetFocusControl(&control, false); } } @@ -2574,17 +2574,15 @@ _Control::SetFocused(bool on) IsFocusable(), E_INVALID_OPERATION, E_INVALID_OPERATION, "[E_INVALID_OPERATION] This Control isn't focusable control."); + _Window* pTop = GetRootWindow(); + SysAssert(pTop); if (on) { - _Window* pTop = GetRootWindow(); - SysAssert(pTop); - pTop->SetFocusControl(this); + pTop->SetFocusControl(this, true); } else { - _Window* pTop = GetRootWindow(); - SysAssert(pTop); - pTop->SetFocusControl(null); + pTop->SetFocusControl(this, false); } return E_SUCCESS; diff --git a/src/ui/FUi_Window.cpp b/src/ui/FUi_Window.cpp index 204d7ef..8df262f 100644 --- a/src/ui/FUi_Window.cpp +++ b/src/ui/FUi_Window.cpp @@ -942,14 +942,16 @@ _Window::SetFocusTraversalControl(_Control* pControl) } void -_Window::SetFocusControl(const _Control* pControl) +_Window:: SetFocusControl(const _Control* pControl, bool on) { + SysTryReturnVoidResult(NID_UI, pControl, E_SYSTEM, "[E_SYSTEM] The pControl cannot be NULL."); + __pFocusControl = const_cast<_Control*>(pControl); _ControlManager* pControlMgr = _ControlManager::GetInstance(); SysAssert(pControlMgr); - if (pControl) + if (on) { if (IsActivated()) { diff --git a/src/ui/controls/FUiCtrl_Frame.cpp b/src/ui/controls/FUiCtrl_Frame.cpp index 42aa75a..f099471 100644 --- a/src/ui/controls/FUiCtrl_Frame.cpp +++ b/src/ui/controls/FUiCtrl_Frame.cpp @@ -823,8 +823,9 @@ _Frame::GetCurrentFocusControl(void) const return null; } void -_Frame::SetFocusControl(const _Control* pControl) +_Frame::SetFocusControl(const _Control* pControl , bool on) { + SysTryReturnVoidResult(NID_UI, pControl, E_SYSTEM, "[E_SYSTEM] The pControl cannot be NULL."); _ControlManager* pControlMgr = _ControlManager::GetInstance(); SysAssert(pControlMgr); _Form* pForm = null; @@ -850,23 +851,23 @@ _Frame::SetFocusControl(const _Control* pControl) { isCurrentForm = true; } - - if (pControl) - { - if (pForm) + + if (pForm) + { + if (on) { pForm->SetFocusControl(pControl); + if (isCurrentForm) + { + pControlMgr->SetFocusControl(*pControl); + } } - if (isCurrentForm) + else { - pControlMgr->SetFocusControl(*pControl); + pControlMgr->SetFocusControl(*this, false); + pForm->SetFocused(); } } - else - { - pControlMgr->SetFocusControl(*this, false); - pForm->SetFocused(); - } } void diff --git a/src/ui/inc/FUiCtrl_Frame.h b/src/ui/inc/FUiCtrl_Frame.h index 9101f50..06598da 100644 --- a/src/ui/inc/FUiCtrl_Frame.h +++ b/src/ui/inc/FUiCtrl_Frame.h @@ -94,7 +94,7 @@ public: // Focus virtual _Control* GetFocusControl(const _Control* pControl) const; virtual _Control* GetCurrentFocusControl(void) const; - virtual void SetFocusControl(const _Control* pControl); + virtual void SetFocusControl(const _Control* pControl, bool on); // Internal void SetChangingBoundsEnabled(bool enable); diff --git a/src/ui/inc/FUi_Window.h b/src/ui/inc/FUi_Window.h index 2839424..0f6afbb 100644 --- a/src/ui/inc/FUi_Window.h +++ b/src/ui/inc/FUi_Window.h @@ -87,7 +87,7 @@ public: // Focus virtual _Control* GetFocusControl(const _Control* pControl) const; virtual _Control* GetCurrentFocusControl(void) const; - virtual void SetFocusControl(const _Control* pControl); + virtual void SetFocusControl(const _Control* pControl, bool on); // Callbacks virtual void OnActivated(void); virtual void OnNativeWindowActivated(void);