modify SetTouchCancel Api to cancel selected control
authorminkyu kim <imetjade.kim@samsung.com>
Thu, 11 Apr 2013 10:27:55 +0000 (19:27 +0900)
committerminkyu kim <imetjade.kim@samsung.com>
Thu, 11 Apr 2013 10:36:18 +0000 (19:36 +0900)
Change-Id: Ide0832336f45383d6700f8e258cc4c48716ee394

src/ui/FUi_ControlImpl.cpp
src/ui/FUi_ControlManager.cpp
src/ui/FUi_TouchGestureDetector.cpp
src/ui/FUi_TouchManager.cpp
src/ui/FUi_Window.cpp
src/ui/controls/FUiCtrl_Frame.cpp
src/ui/inc/FUi_TouchManager.h

index 75faf7d..d71f734 100644 (file)
@@ -2623,10 +2623,10 @@ _ControlImpl::OnVisibleStateChanged(void)
 
                        if (!gestureDetecting)
                        {
-                       pTouchManager->SetTouchCanceled(true);
+                               pTouchManager->SetTouchCanceled(&GetCore());
+                       }
                }
        }
-       }
 
        GetCore().OnVisibleStateChanged();
 }
index 5148a9a..dd1fe76 100644 (file)
@@ -1030,7 +1030,7 @@ _ControlManager::RotateScreen(const _Control& control, _ControlRotation screenRo
                _TouchManager* pTouchManager = _TouchManager::GetInstance();
                if (pTouchManager)
                {
-                       pTouchManager->SetTouchCanceled(true);
+                       pTouchManager->SetTouchCanceled(null);
                }
        }
 }
index 318aa07..faa2ce7 100644 (file)
@@ -1008,7 +1008,8 @@ _TouchGestureDetector::ProcessGestureCondition(void)
 
        if (pControl->IsCancelOnGestureSuccess())
        {
-               pTouchManager->SetTouchCanceled(true, true);
+               pTouchManager->SetTouchCancelOnGesture(true);
+               pTouchManager->SetTouchCanceled(null);
                pTouchManager->SetTouchCanceledOnGestureSuccess(true);
        }
 
index 6acfd5e..8f31872 100644 (file)
@@ -799,69 +799,75 @@ _TouchManager::SendEvent(_Control* pControl, const _TouchInfo& touchInfo)
 }
 
 void
-_TouchManager::SetTouchCanceled(bool canceled, bool onlyTouchEvent)
+_TouchManager::SetTouchCancelOnGesture(bool onlyTouchEvent)
 {
        __touchCanceledOnGestureSuccess = onlyTouchEvent;
+}
 
-       if (canceled)
+void
+_TouchManager::SetTouchCanceled(_Control* pControl)
+{
+       if (GetTouchControlSource() && GetTouchControlSource()->IsAttachedToMainTree())
        {
-               if (GetTouchControlSource() && GetTouchControlSource()->IsAttachedToMainTree())
+               if (pControl != null && pControl != GetTouchControlSource())
                {
-                       FloatPoint currentPoint(0, 0);
-                       _TouchInfo touchInfo;
+                       return;
+               }
 
-                       if (GetTouchControlSource()->IsMultiTouchEnabled())
-                       {
-                               currentPoint.x = GetScreenPoint(GetCurrentPointId()).x;
-                               currentPoint.y = GetScreenPoint(GetCurrentPointId()).y;
+               FloatPoint currentPoint(0, 0);
+               _TouchInfo touchInfo;
 
-                               _TouchInfo multiTouchInfo(GetCurrentPointId(), _TOUCH_CANCELED, currentPoint, false, 0);
-                               touchInfo = multiTouchInfo;
-                       }
-                       else
-                       {
-                               currentPoint.x = GetScreenPoint(SINGLE_POINT_ID).x;
-                               currentPoint.y = GetScreenPoint(SINGLE_POINT_ID).y;
+               if (GetTouchControlSource()->IsMultiTouchEnabled())
+               {
+                       currentPoint.x = GetScreenPoint(GetCurrentPointId()).x;
+                       currentPoint.y = GetScreenPoint(GetCurrentPointId()).y;
 
-                               _TouchInfo singleTouchInfo(SINGLE_POINT_ID, _TOUCH_CANCELED, currentPoint, false, 0);
-                               touchInfo = singleTouchInfo;
-                       }
+                       _TouchInfo multiTouchInfo(GetCurrentPointId(), _TOUCH_CANCELED, currentPoint, false, 0);
+                       touchInfo = multiTouchInfo;
+               }
+               else
+               {
+                       currentPoint.x = GetScreenPoint(SINGLE_POINT_ID).x;
+                       currentPoint.y = GetScreenPoint(SINGLE_POINT_ID).y;
 
-                       _UiTouchEvent event(GetTouchControlSource()->GetHandle(), touchInfo);
+                       _TouchInfo singleTouchInfo(SINGLE_POINT_ID, _TOUCH_CANCELED, currentPoint, false, 0);
+                       touchInfo = singleTouchInfo;
+               }
+
+               _UiTouchEvent event(GetTouchControlSource()->GetHandle(), touchInfo);
 
-                       _UiEventManager* pEventManager = _UiEventManager::GetInstance();
-                       SysTryReturnVoidResult(NID_UI, pEventManager, E_SYSTEM, "[E_SYSTEM] _UiEventManager does not exist.");
+               _UiEventManager* pEventManager = _UiEventManager::GetInstance();
+               SysTryReturnVoidResult(NID_UI, pEventManager, E_SYSTEM, "[E_SYSTEM] _UiEventManager does not exist.");
 
-                       pEventManager->SendEvent(event);
+               pEventManager->SendEvent(event);
 
-                       _TouchManager* pTouchManager = _TouchManager::GetInstance();
-                       SysTryReturnVoidResult(NID_UI, pTouchManager, E_SYSTEM, "[E_SYSTEM] _TouchManager does not exist.");
+               _TouchManager* pTouchManager = _TouchManager::GetInstance();
+               SysTryReturnVoidResult(NID_UI, pTouchManager, E_SYSTEM, "[E_SYSTEM] _TouchManager does not exist.");
 
-                       IListT<_FingerInfo*>* pFingerInfoList = pTouchManager->GetMultiFingerInfoListN();
-                       SysTryReturnVoidResult(NID_UI, pFingerInfoList, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
+               IListT<_FingerInfo*>* pFingerInfoList = pTouchManager->GetMultiFingerInfoListN();
+               SysTryReturnVoidResult(NID_UI, pFingerInfoList, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
 
-                       int count = pFingerInfoList->GetCount();
+               int count = pFingerInfoList->GetCount();
 
-                       for (int i = 0; i < count; i++)
+               for (int i = 0; i < count; i++)
+               {
+                       _FingerInfo* pFingerInfo = null;
+                       pFingerInfoList->GetAt(i, pFingerInfo);
+                       if (pFingerInfo == null)
                        {
-                               _FingerInfo* pFingerInfo = null;
-                               pFingerInfoList->GetAt(i, pFingerInfo);
-                               if (pFingerInfo == null)
-                               {
-                                       continue;
-                               }
+                               continue;
+                       }
 
-                               if (pFingerInfo->GetPointId() == touchInfo.GetPointId())
-                               {
-                                       pFingerInfo->SetPointId(INVALID_POINT_ID);
-                                       break;
-                               }
+                       if (pFingerInfo->GetPointId() == touchInfo.GetPointId())
+                       {
+                               pFingerInfo->SetPointId(INVALID_POINT_ID);
+                               break;
                        }
-                       delete pFingerInfoList;
                }
-               SetLastResult(E_SUCCESS);
-               _ResourceManager::GetInstance()->ResetFeedback();
+               delete pFingerInfoList;
        }
+       SetLastResult(E_SUCCESS);
+       _ResourceManager::GetInstance()->ResetFeedback();
 }
 
 void
index 9965e52..a5bc3e7 100644 (file)
@@ -427,7 +427,7 @@ _Window::OnActivated(void)
        _TouchManager* pTouchMgr = _TouchManager::GetInstance();
        if (pTouchMgr)
        {
-               pTouchMgr->SetTouchCanceled(true);
+               pTouchMgr->SetTouchCanceled(null);
        }
 }
 
index 407763f..0c6c7af 100644 (file)
@@ -299,7 +299,7 @@ _Frame::OnFrameDeactivated(void)
        _TouchManager* pTouchManager = _TouchManager::GetInstance();
        if (pTouchManager)
        {
-               pTouchManager->SetTouchCanceled(true);
+               pTouchManager->SetTouchCanceled(null);
        }
 }
 
index b15818b..5e3fe26 100644 (file)
@@ -262,11 +262,18 @@ public:
        result SendEvent(_Control* pControl, const _TouchInfo& touchInfo);
 
        /**
+        * This method sets touch cancelled status for gesture
+        *
+        * @since 2.0
+        */
+       void SetTouchCancelOnGesture(bool onlyTouchEvent);
+
+       /**
         * This method sets touch cancelled status
         *
         * @since 2.0
         */
-       void SetTouchCanceled(bool canceled, bool onlyTouchEvent = false);
+       void SetTouchCanceled(_Control* pControl);
 
        /**
         * This method sets touch released status