Fix for N_SE-56395.
authorsriram.k <sriram.k@samsung.com>
Mon, 28 Oct 2013 13:04:47 +0000 (18:34 +0530)
committersriram.k <sriram.k@samsung.com>
Tue, 29 Oct 2013 04:35:40 +0000 (10:05 +0530)
Signed-off-by: sriram.k <sriram.k@samsung.com>
Change-Id: I3eeb1e92ee59dd209491f2ab40540e395bbec381

src/ui/controls/FUiCtrl_ContextMenu.cpp
src/ui/controls/FUiCtrl_ContextMenuGridPresenter.cpp
src/ui/controls/FUiCtrl_ContextMenuListPresenter.cpp
src/ui/inc/FUiCtrl_ContextMenu.h
src/ui/inc/FUiCtrl_ContextMenuGridPresenter.h
src/ui/inc/FUiCtrl_ContextMenuListPresenter.h
src/ui/inc/FUiCtrl_IContextMenuPresenter.h

index 320a0e2..4e1b9c2 100644 (file)
@@ -1388,6 +1388,21 @@ _ContextMenu::OnFocusModeStateChanged(void)
        __pContextMenuPresenter->OnFocusModeStateChanged();
 }
 
+bool
+_ContextMenu::OnFocusGained(const _Control& source)
+{
+       __pContextMenuPresenter->OnFocusGained(source);
+
+       return true;
+}
+
+bool
+_ContextMenu::OnFocusLost(const _Control& source)
+{
+       __pContextMenuPresenter->OnFocusLost(source);
+
+       return true;
+}
 _AccessibilityElement*
 _ContextMenu::GetAccessibilityElement(const int mainIndex) const
 {
index d7e284b..47d0552 100644 (file)
@@ -84,6 +84,7 @@ _ContextMenuGridPresenter::_ContextMenuGridPresenter(_ContextMenu* pContextMenu)
        , __enterKeyPressed(false)
        , __backKeyPressed(false)
        , __focusedIndex(-1)
+       , __focusLost(false)
 {
 
 }
@@ -1506,7 +1507,7 @@ _ContextMenuGridPresenter::OnTouchReleased(const _Control& source, const _TouchI
        if (__touchOutRect == true)
        {
                FloatRectangle itemRect = __pContextMenu->GetItemRect();
-               if (!itemRect.Contains(touchPosition))
+               if (!itemRect.Contains(touchPosition) || __focusLost)
                {
                        __selectedIndex = -1;
                        __focusedIndex = -1;
@@ -1869,6 +1870,20 @@ _ContextMenuGridPresenter::OnFocusModeStateChanged(void)
        Draw();
 }
 
+bool
+_ContextMenuGridPresenter::OnFocusGained(const _Control& source)
+{
+       __focusLost = false;
+       return true;
+}
+
+bool
+_ContextMenuGridPresenter::OnFocusLost(const _Control& source)
+{
+       __focusLost = true;
+       return true;
+}
+
 void
 _ContextMenuGridPresenter::OnFontChanged(Font* pFont)
 {
index 51fad21..69966f9 100644 (file)
@@ -84,6 +84,7 @@ _ContextMenuListPresenter::_ContextMenuListPresenter(_ContextMenu* pContextMenu)
        , __enterKeyPressed(false)
        , __backKeyPressed(false)
        , __focusedIndex(-1)
+       , __focusLost(false)
 {
 
 }
@@ -1076,7 +1077,7 @@ _ContextMenuListPresenter::OnTouchReleased(const _Control& source, const _TouchI
        if (__touchOutRect)
        {
                FloatRectangle itemRect = __pContextMenu->GetItemRect();
-               if (!itemRect.Contains(touchPosition))
+               if (!itemRect.Contains(touchPosition) || __focusLost)
                {
                        __selectedIndex = -1;
                        __focusedIndex = -1;
@@ -1416,6 +1417,20 @@ _ContextMenuListPresenter::ResetFocus(void)
         }
 }
 
+bool
+_ContextMenuListPresenter::OnFocusGained(const _Control& source)
+{
+       __focusLost = false;
+       return true;
+}
+
+bool
+_ContextMenuListPresenter::OnFocusLost(const _Control& source)
+{
+       __focusLost = true;
+       return true;
+}
+
 void
 _ContextMenuListPresenter::OnFontChanged(Font* pFont)
 {
index eda3447..51ccafd 100644 (file)
@@ -193,6 +193,8 @@ public:
        virtual void OnFrameMinimized(const Tizen::Ui::Controls::_Frame& source);
        virtual void OnFrameRestored(const Tizen::Ui::Controls::_Frame& source);
        virtual void OnDraw(void);
+       virtual bool OnFocusGained(const _Control& source);
+       virtual bool OnFocusLost(const _Control& source);
 
        virtual _UiTouchEventDelivery OnPreviewTouchPressed(const _Control& source, const _TouchInfo& touchinfo);
        virtual _UiTouchEventDelivery OnPreviewTouchMoved(const _Control& source, const _TouchInfo& touchinfo);
index 85fcbf4..0178b84 100644 (file)
@@ -84,6 +84,8 @@ public:
        virtual bool IsChildControlFocusManage(void) const;
        virtual void OnDrawFocus(void);
        virtual void OnFocusModeStateChanged(void);
+       virtual bool OnFocusGained(const _Control& source);
+       virtual bool OnFocusLost(const _Control& source);
 
        virtual void OnFontChanged(Tizen::Graphics::Font* pFont);
        virtual void OnFontInfoRequested(unsigned long& style, float& size);
@@ -158,6 +160,7 @@ private:
        bool __enterKeyPressed;
        bool __backKeyPressed;
        int __focusedIndex;
+       bool __focusLost;
 }; // _ContextMenuGridPresenter
 
 }}} // Tizen::Ui: Control
index 863b5f2..b13afdc 100644 (file)
@@ -84,6 +84,8 @@ public:
        virtual bool OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo);
        virtual bool IsChildControlFocusManage(void) const;
        virtual void ResetFocus(void);
+       virtual bool OnFocusGained(const _Control& source);
+       virtual bool OnFocusLost(const _Control& source);
 
        virtual void OnFontChanged(Tizen::Graphics::Font* pFont);
        virtual void OnFontInfoRequested(unsigned long& style, float& size);
@@ -152,6 +154,7 @@ private:
        bool __enterKeyPressed;
        bool __backKeyPressed;
        int __focusedIndex;
+       bool __focusLost;
 }; // _ContextMenuListPresenter
 
 }}} // Tizen::Ui: Control
index 3f074b1..e76b5e8 100644 (file)
@@ -94,6 +94,8 @@ public:
        virtual bool IsChildControlFocusManage(void) const { return false; };
        virtual void OnDrawFocus(void) {};
        virtual void OnFocusModeStateChanged(void) {};
+       virtual bool OnFocusGained(const _Control& source){return true;}
+       virtual bool OnFocusLost(const _Control& source){return true;}
 
        virtual void CalculateItemMaximumWidth(void) {};