X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fdrag-drop-detector%2Fdrag-and-drop-detector-impl.cpp;h=34be65aac5754713895a66ac4c37873772dc2bc0;hp=c26e4aef9c4c77392646b0f5753f6f983b04e146;hb=1af7db409035af02e83b06805eddb16f774fb745;hpb=ed980a3b418d7a235d4774b786d84974421650fd diff --git a/dali-toolkit/internal/drag-drop-detector/drag-and-drop-detector-impl.cpp b/dali-toolkit/internal/drag-drop-detector/drag-and-drop-detector-impl.cpp old mode 100755 new mode 100644 index c26e4ae..34be65a --- a/dali-toolkit/internal/drag-drop-detector/drag-and-drop-detector-impl.cpp +++ b/dali-toolkit/internal/drag-drop-detector/drag-and-drop-detector-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. + * Copyright (c) 2020 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -51,7 +51,7 @@ void DragAndDropDetector::Attach(Dali::Toolkit::Control& control) } mControls.push_back(control); control.TouchSignal().Connect(this, &DragAndDropDetector::OnDrag); - mFirstEnter.push_back(control.GetId()); + mFirstEnter.push_back(control.GetProperty< int >( Actor::Property::ID )); mPanGestureDetector.Attach(control); mPanGestureDetector.DetectedSignal().Connect(this, &DragAndDropDetector::OnPan); } @@ -73,7 +73,7 @@ void DragAndDropDetector::Detach(Dali::Toolkit::Control& control) { match->TouchSignal().Disconnect(this, &DragAndDropDetector::OnDrag); mPanGestureDetector.Detach(*match); - mFirstEnter.erase(std::find(mFirstEnter.begin(), mFirstEnter.end(), control.GetId())); + mFirstEnter.erase(std::find(mFirstEnter.begin(), mFirstEnter.end(), control.GetProperty< int >( Actor::Property::ID ))); mControls.erase(match); } } @@ -126,12 +126,32 @@ void DragAndDropDetector::OnPan(Dali::Actor actor, const PanGesture& gesture) if(gesture.state == Gesture::Started) { mDragLocalPosition = gesture.position; + mPointDown = true; + mDragControl = control; + mFirstEnter.clear(); + for( auto&& control : mControls) + { + mFirstEnter.push_back(control.GetProperty< int >( Actor::Property::ID )); + } + float width = control.GetProperty(Dali::Actor::Property::SIZE_WIDTH); + float height = control.GetProperty(Dali::Actor::Property::SIZE_HEIGHT); + Vector3 actorPos = control.GetProperty(Dali::Actor::Property::POSITION); + + mShadowControl = Dali::Toolkit::Control::New(); + mShadowControl.SetProperty( Actor::Property::POSITION, actorPos ); + mShadowControl.SetProperty( Actor::Property::SIZE, Vector2( width, height ) ); + mShadowControl.SetBackgroundColor(Vector4(0.3f, 0.3f, 0.3f, 0.7f)); + mShadowControl.SetProperty( Actor::Property::PARENT_ORIGIN, control.GetCurrentProperty< Vector3 >( Actor::Property::PARENT_ORIGIN ) ); + mShadowControl.SetProperty( Actor::Property::ANCHOR_POINT,control.GetCurrentProperty< Vector3 >( Actor::Property::ANCHOR_POINT )); + control.GetParent().Add(mShadowControl); + SetPosition(gesture.screenPosition); + EmitStartedSignal(control); } if(gesture.state == Gesture::Continuing) { Vector2 screenPosition = gesture.screenPosition; control.GetParent().ScreenToLocal(mLocalPosition.x, mLocalPosition.y, screenPosition.x, screenPosition.y); - mShadowControl.SetPosition(mLocalPosition.x - mDragLocalPosition.x, mLocalPosition.y - mDragLocalPosition.y); + mShadowControl.SetProperty( Actor::Property::POSITION, Vector2(mLocalPosition.x - mDragLocalPosition.x, mLocalPosition.y - mDragLocalPosition.y)); } if(gesture.state == Gesture::Finished) { @@ -144,35 +164,12 @@ bool DragAndDropDetector::OnDrag(Dali::Actor actor, const Dali::TouchData& data) { Dali::Toolkit::Control control = Dali::Toolkit::Control::DownCast(actor); PointState::Type type = data.GetState(0); - if(type == PointState::DOWN) - { - mPointDown = true; - mDragControl = control; - mFirstEnter.clear(); - for( auto&& control : mControls) - { - mFirstEnter.push_back(control.GetId()); - } - float width = control.GetProperty(Dali::Actor::Property::SIZE_WIDTH); - float height = control.GetProperty(Dali::Actor::Property::SIZE_HEIGHT); - Vector3 actorPos = control.GetProperty(Dali::Actor::Property::POSITION); - - mShadowControl = Dali::Toolkit::Control::New(); - mShadowControl.SetPosition(actorPos); - mShadowControl.SetSize(width, height); - mShadowControl.SetBackgroundColor(Vector4(0.3f, 0.3f, 0.3f, 0.7f)); - mShadowControl.SetParentOrigin(control.GetCurrentParentOrigin()); - mShadowControl.SetAnchorPoint(control.GetCurrentAnchorPoint()); - control.GetParent().Add(mShadowControl); - SetPosition(data.GetScreenPosition(0)); - EmitStartedSignal(control); - } if(type == PointState::MOTION) { if(mDragControl != control && mPointDown) { - auto found = std::find(mFirstEnter.begin(), mFirstEnter.end(), control.GetId()); + auto found = std::find(mFirstEnter.begin(), mFirstEnter.end(), control.GetProperty< int >( Actor::Property::ID )); if(mFirstEnter.end() != found) { SetPosition(data.GetScreenPosition(0)); @@ -191,7 +188,7 @@ bool DragAndDropDetector::OnDrag(Dali::Actor actor, const Dali::TouchData& data) { if(mDragControl != control && mPointDown) { - mFirstEnter.push_back(control.GetId()); + mFirstEnter.push_back(control.GetProperty< int >( Actor::Property::ID )); EmitExitedSignal(control); } } @@ -202,7 +199,7 @@ bool DragAndDropDetector::OnDrag(Dali::Actor actor, const Dali::TouchData& data) { SetPosition(data.GetScreenPosition(0)); ClearContent(); - SetContent(mDragControl.GetName()); + SetContent(mDragControl.GetProperty< std::string >( Dali::Actor::Property::NAME )); EmitDroppedSignal(control); } @@ -212,7 +209,7 @@ bool DragAndDropDetector::OnDrag(Dali::Actor actor, const Dali::TouchData& data) } mPointDown = false; } - return true; + return false; } const std::string& DragAndDropDetector::GetContent() const