From: Paul Wisbey Date: Fri, 22 May 2015 15:28:50 +0000 (+0100) Subject: Changed grab-handle behavior to work inside Popup X-Git-Tag: accepted/tizen/common/20150529.134038~5^2 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=385a58a746d2481d4725b3018e6ebf5949aab6ee;ds=sidebyside Changed grab-handle behavior to work inside Popup Change-Id: I4b94b37b3f4c00f74d67a3429868753cd1b347e3 --- diff --git a/dali-toolkit/internal/text/decorator/text-decorator.cpp b/dali-toolkit/internal/text/decorator/text-decorator.cpp index f529f70..e92866b 100644 --- a/dali-toolkit/internal/text/decorator/text-decorator.cpp +++ b/dali-toolkit/internal/text/decorator/text-decorator.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -530,6 +531,7 @@ struct Decorator::Impl : public ConnectionTracker grabHandle.grabArea.SetSizeModeFactor( DEFAULT_GRAB_HANDLE_RELATIVE_SIZE ); grabHandle.actor.Add( grabHandle.grabArea ); + grabHandle.grabArea.TouchedSignal().Connect( this, &Decorator::Impl::OnGrabHandleTouched ); mTapDetector.Attach( grabHandle.grabArea ); mPanGestureDetector.Attach( grabHandle.grabArea ); @@ -733,10 +735,6 @@ struct Decorator::Impl : public ConnectionTracker if( Gesture::Started == gesture.state ) { handle.grabDisplacementX = handle.grabDisplacementY = 0; - if( mHandleImages[type][HANDLE_IMAGE_PRESSED] ) - { - handle.actor.SetImage( mHandleImages[type][HANDLE_IMAGE_PRESSED] ); - } } handle.grabDisplacementX += gesture.displacement.x; @@ -804,16 +802,42 @@ struct Decorator::Impl : public ConnectionTracker } } + bool OnGrabHandleTouched( Actor actor, const TouchEvent& event ) + { + // Switch between pressed/release grab-handle images + if( event.GetPointCount() > 0 && + mHandle[GRAB_HANDLE].actor ) + { + const TouchPoint& point = event.GetPoint(0); + + if( TouchPoint::Down == point.state && + mHandleImages[GRAB_HANDLE][HANDLE_IMAGE_PRESSED] ) + { + mHandle[GRAB_HANDLE].actor.SetImage( mHandleImages[GRAB_HANDLE][HANDLE_IMAGE_PRESSED] ); + } + else if( TouchPoint::Up == point.state && + mHandleImages[GRAB_HANDLE][HANDLE_IMAGE_RELEASED] ) + { + mHandle[GRAB_HANDLE].actor.SetImage( mHandleImages[GRAB_HANDLE][HANDLE_IMAGE_RELEASED] ); + } + } + + // Consume to avoid pop-ups accidentally closing, when handle is outside of pop-up area + return true; + } + bool OnHandleOneTouched( Actor actor, const TouchEvent& touch ) { // TODO - return false; + // Consume to avoid pop-ups accidentally closing, when handle is outside of pop-up area + return true; } bool OnHandleTwoTouched( Actor actor, const TouchEvent& touch ) { // TODO - return false; + // Consume to avoid pop-ups accidentally closing, when handle is outside of pop-up area + return true; } // Popup