Fixed DCM-1531
authorHeeJu Kang <mobum.kang@samsung.com>
Fri, 3 May 2013 10:32:07 +0000 (19:32 +0900)
committerHeeJu Kang <mobum.kang@samsung.com>
Fri, 3 May 2013 10:33:02 +0000 (19:33 +0900)
Change-Id: I63e62743917db53744d891191ca64fadd4809ef3
Signed-off-by: HeeJu Kang <mobum.kang@samsung.com>
src/FShell_AppWidgetPopupView.cpp
src/FShell_AppWidgetPopupView.h

index e9a6bda..4637e76 100644 (file)
@@ -71,6 +71,7 @@ _AppWidgetPopupView::_AppWidgetPopupView(_AppWidgetView& appwidgetView)
        , __pAppWidgetPopupViewEvent(_AppWidgetPopupViewEvent::CreateInstanceN(*this))
        , __firstUpdated(false)
        , __pixmap(-1)
+       , __touchInside(false)
 {
 }
 
@@ -314,11 +315,21 @@ _AppWidgetPopupView::OnDeactivated(void)
 bool
 _AppWidgetPopupView::OnTouchPressed(const _Control& source, const _TouchInfo& touchInfo)
 {
+       FloatRectangle clientBounds(GetClientBoundsF());
+
+       Point position = _CoordinateSystemUtils::ConvertToInteger(touchInfo.GetCurrentPosition());
+
+       FloatPoint floatPosition(static_cast<float>(position.x), static_cast<float>(position.y));
+
+       if (clientBounds.Contains(floatPosition))
+       {
+               __touchInside = true;
+       }
+
        double x = 0.0;
        double y = 0.0;
 
-       Point position = _CoordinateSystemUtils::ConvertToInteger(touchInfo.GetCurrentPosition());
-       GetTouchPostion(FloatPoint(static_cast<float>(position.x), static_cast<float>(position.y)), x, y);
+       GetTouchPostion(floatPosition, x, y);
 
        livebox_content_event(__pAppWidgetView->__pAppWidget, PD_MOUSE_DOWN, x, y);
 
@@ -333,11 +344,13 @@ _AppWidgetPopupView::OnTouchReleased(const _Control& source, const _TouchInfo& t
        Point position = _CoordinateSystemUtils::ConvertToInteger(touchInfo.GetCurrentPosition());
        FloatPoint floatPosition(static_cast<float>(position.x), static_cast<float>(position.y));
 
-       if (!clientBounds.Contains(floatPosition))
+       if (!__touchInside && !clientBounds.Contains(floatPosition))
        {
                PlayAnimation(false);
        }
 
+       __touchInside = false;
+
        double x = 0.0;
        double y = 0.0;
 
index 3e7266e..21f3330 100644 (file)
@@ -124,6 +124,7 @@ private:
        std::unique_ptr<_AppWidgetPopupViewEvent> __pAppWidgetPopupViewEvent;
        bool __firstUpdated;
        int __pixmap;
+       bool __touchInside;
 
        struct _EvasObjectDeleter
        {