From 9a5ac2b2e364616f8d1460dff0aef88ff621c292 Mon Sep 17 00:00:00 2001 From: vipul Date: Tue, 16 Jul 2013 10:10:13 +0530 Subject: [PATCH] Powerkey and home button handling in option and context menu Signed-off-by: vipul Change-Id: I78cb9bc53a3a709ec9bf3aa795c397b69c2b3bb8 --- src/ui/controls/FUiCtrl_ContextMenu.cpp | 23 ++++++++++++++--------- src/ui/controls/FUiCtrl_OptionMenu.cpp | 20 ++++++++++++-------- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/src/ui/controls/FUiCtrl_ContextMenu.cpp b/src/ui/controls/FUiCtrl_ContextMenu.cpp index c3e16af..ed08800 100644 --- a/src/ui/controls/FUiCtrl_ContextMenu.cpp +++ b/src/ui/controls/FUiCtrl_ContextMenu.cpp @@ -92,18 +92,15 @@ _ContextMenu::_ContextMenu(const FloatPoint& point, enum ContextMenuCoreStyle st _ContextMenu::~_ContextMenu(void) { - if (__pCurrentFrame) - { - __pCurrentFrame->RemoveFrameEventListener(*this); - __pCurrentFrame = null; - } - if (__isAttachedToMainTree && GetOwner() != null) { GetOwner()->UnlockInputEvent(); } - if (__pScrollPanel) { + __pCurrentFrame = null; + + if (__pScrollPanel) + { __pScrollPanel->DetachAllChildren(); DetachChild(*__pScrollPanel); delete __pScrollPanel; @@ -306,8 +303,6 @@ _ContextMenu::OnAttachedToMainTree(void) __pCurrentFrame = dynamic_cast<_Frame*>(_ControlManager::GetInstance()->GetCurrentFrame()); SysTryReturn(NID_UI_CTRL, __pCurrentFrame != null, E_SYSTEM, E_SYSTEM, "[E_SYSTEM] Current frame instance is not available."); - __pCurrentFrame->AddFrameEventListener(*this); - _Form* pForm = __pCurrentFrame->GetCurrentForm(); pForm != null ? SetOwner(pForm) : SetOwner(__pCurrentFrame); @@ -320,6 +315,11 @@ _ContextMenu::OnAttachedToMainTree(void) pOwner->LockInputEvent(); } + if (__pCurrentFrame != null) + { + __pCurrentFrame->AddFrameEventListener(*this); + } + __layout = pOwner->GetOrientation(); _Window* pOwnerWindow = pOwner->GetRootWindow(); @@ -433,6 +433,11 @@ _ContextMenu::OnDetachingFromMainTree(void) ReleaseTouchCapture(); + if (__pCurrentFrame) + { + __pCurrentFrame->RemoveFrameEventListener(*this); + } + _Control* pOwner = GetOwner(); if (pOwner != null) { diff --git a/src/ui/controls/FUiCtrl_OptionMenu.cpp b/src/ui/controls/FUiCtrl_OptionMenu.cpp index f4b574c..342e7ac 100644 --- a/src/ui/controls/FUiCtrl_OptionMenu.cpp +++ b/src/ui/controls/FUiCtrl_OptionMenu.cpp @@ -89,17 +89,13 @@ _OptionMenu::_OptionMenu(void) _OptionMenu::~_OptionMenu(void) { - if (__pCurrentFrame) - { - __pCurrentFrame->RemoveFrameEventListener(*this); - __pCurrentFrame = null; - } - if (__isAttachedToMainTree && GetOwner() != null) { GetOwner()->UnlockInputEvent(); } + __pCurrentFrame = null; + if (__pScrollPanel) { __pScrollPanel->DetachAllChildren(); @@ -450,8 +446,6 @@ _OptionMenu::OnAttachedToMainTree(void) __pCurrentFrame = dynamic_cast<_Frame*>(_ControlManager::GetInstance()->GetCurrentFrame()); SysTryReturn(NID_UI_CTRL, __pCurrentFrame != null, E_SYSTEM, E_SYSTEM, "[E_SYSTEM] Current frame instance is not available."); - __pCurrentFrame->AddFrameEventListener(*this); - _Form* pForm = __pCurrentFrame->GetCurrentForm(); pForm != null ? SetOwner(pForm) : SetOwner(__pCurrentFrame); @@ -462,6 +456,11 @@ _OptionMenu::OnAttachedToMainTree(void) pOwner->LockInputEvent(); } + if (__pCurrentFrame != null) + { + __pCurrentFrame->AddFrameEventListener(*this); + } + __layout = pOwner->GetOrientation(); _Window* pOwnerWindow = pOwner->GetRootWindow(); @@ -525,6 +524,11 @@ _OptionMenu::OnDetachingFromMainTree(void) { ReleaseTouchCapture(); + if (__pCurrentFrame) + { + __pCurrentFrame->RemoveFrameEventListener(*this); + } + _Control* pOwner = GetOwner(); if (pOwner != null) { -- 2.7.4