void UIDragDrop::DragEnd() { SharedPtr<UIDragObject> dragObject = dragObject_; WeakPtr<UIWidget> currentTargetWidget = currentTargetWidget_; // clean up currentTargetWidget_ = 0; dragObject_ = 0; dragSourceWidget_ = 0; dragLayout_->SetVisibility(UI_WIDGET_VISIBILITY_GONE); if (currentTargetWidget.Null()) { return; } VariantMap dropData; dropData[DragEnded::P_TARGET] = currentTargetWidget; dropData[DragEnded::P_DRAGOBJECT] = dragObject; currentTargetWidget->SendEvent(E_DRAGENDED, dropData); }