From 6255a1172262b5cbe8c30786aabae8cde61f5630 Mon Sep 17 00:00:00 2001 From: cinder <cinder@cinderblocks.biz> Date: Fri, 18 Nov 2022 08:56:47 -0600 Subject: [PATCH] Reintroduce LLDropTarget --- indra/newview/CMakeLists.txt | 2 ++ indra/newview/lldroptarget.cpp | 60 +++++++++++++++++++++++++++++++ indra/newview/lldroptarget.h | 64 ++++++++++++++++++++++++++++++++++ 3 files changed, 126 insertions(+) create mode 100644 indra/newview/lldroptarget.cpp create mode 100644 indra/newview/lldroptarget.h diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 08954bbb8ec..5ce267b9b03 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -224,6 +224,7 @@ set(viewer_SOURCE_FILES lldrawpooltree.cpp lldrawpoolwater.cpp lldrawpoolwlsky.cpp + lldroptarget.cpp lldynamictexture.cpp llemote.cpp llenvironment.cpp @@ -915,6 +916,7 @@ set(viewer_HEADER_FILES lldrawpooltree.h lldrawpoolwater.h lldrawpoolwlsky.h + lldroptarget.h lldynamictexture.h llemote.h llenvironment.h diff --git a/indra/newview/lldroptarget.cpp b/indra/newview/lldroptarget.cpp new file mode 100644 index 00000000000..1bb17a0cdca --- /dev/null +++ b/indra/newview/lldroptarget.cpp @@ -0,0 +1,60 @@ +/* + * @file lldroptarget.cpp + * @brief Base drop target class + * @author Cinder Roxley, based on code from llpanelavatar.cpp + * + * $LicenseInfo:firstyear=2002&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2014, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "lldroptarget.h" +#include "lltooldraganddrop.h" + +static LLDefaultChildRegistry::Register<LLDropTarget> r("drop_target"); + +LLDropTarget::LLDropTarget(const LLDropTarget::Params& p) +: LLView(p), +mAgentID(p.agent_id) +{} + +void LLDropTarget::doDrop(EDragAndDropType cargo_type, void* cargo_data) +{ + LL_INFOS("") << "LLDropTarget::doDrop()" << LL_ENDL; +} + +BOOL LLDropTarget::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, + EDragAndDropType cargo_type, + void* cargo_data, + EAcceptance* accept, + std::string& tooltip_msg) +{ + if(getParent()) + { + LLToolDragAndDrop::handleGiveDragAndDrop(mAgentID, LLUUID::null, drop, + cargo_type, cargo_data, accept); + + return TRUE; + } + + return FALSE; +} diff --git a/indra/newview/lldroptarget.h b/indra/newview/lldroptarget.h new file mode 100644 index 00000000000..3ec072b6d38 --- /dev/null +++ b/indra/newview/lldroptarget.h @@ -0,0 +1,64 @@ +/* + * @file lldroptarget.h + * @brief Base drop target class + * @author Cinder Roxley, based on code from llpanelavatar.cpp + * + * $LicenseInfo:firstyear=2002&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2014, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + +#ifndef LL_DROPTARGET_H +#define LL_DROPTARGET_H + +#include "llview.h" + +class LLDropTarget : public LLView +{ +public: + struct Params : public LLInitParam::Block<Params, LLView::Params> + { + Optional<LLUUID> agent_id; + Params() + : agent_id("agent_id") + { + changeDefault(mouse_opaque, false); + changeDefault(follows.flags, FOLLOWS_ALL); + } + }; + + LLDropTarget(const Params&); + ~LLDropTarget() = default; + + void doDrop(EDragAndDropType cargo_type, void* cargo_data); + + // + // LLView functionality + BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, + EDragAndDropType cargo_type, + void* cargo_data, + EAcceptance* accept, + std::string& tooltip_msg) override; + void setAgentID(const LLUUID &agent_id) { mAgentID = agent_id; } +protected: + LLUUID mAgentID; +}; + +#endif // LL_DROPTARGET_H -- GitLab