summaryrefslogtreecommitdiff
path: root/indra/newview/lltooldraganddrop.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/lltooldraganddrop.cpp')
-rw-r--r--indra/newview/lltooldraganddrop.cpp919
1 files changed, 226 insertions, 693 deletions
diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp
index 125c62474e..8a8bdd2dba 100644
--- a/indra/newview/lltooldraganddrop.cpp
+++ b/indra/newview/lltooldraganddrop.cpp
@@ -37,7 +37,7 @@
#include "llnotificationsutil.h"
// project headers
#include "llagent.h"
-#include "llagentui.h"
+#include "llagentcamera.h"
#include "llagentwearables.h"
#include "llappearancemgr.h"
#include "lldictionary.h"
@@ -45,29 +45,26 @@
#include "llfloaterreg.h"
#include "llfloatertools.h"
#include "llgesturemgr.h"
+#include "llgiveinventory.h"
#include "llhudmanager.h"
#include "llhudeffecttrail.h"
-#include "llimview.h"
+//#include "llimview.h"
#include "llinventorybridge.h"
-#include "llmutelist.h"
+#include "llinventorydefines.h"
+#include "llinventoryfunctions.h"
#include "llpreviewnotecard.h"
-#include "llrecentpeople.h"
#include "llrootview.h"
#include "llselectmgr.h"
#include "lltoolmgr.h"
#include "lltooltip.h"
#include "lltrans.h"
#include "llviewerobjectlist.h"
+#include "llviewerregion.h"
#include "llviewerstats.h"
#include "llviewerwindow.h"
#include "llvoavatarself.h"
#include "llworld.h"
-// MAX ITEMS is based on (sizeof(uuid)+2) * count must be < MTUBYTES
-// or 18 * count < 1200 => count < 1200/18 => 66. I've cut it down a
-// bit from there to give some pad.
-const S32 MAX_ITEMS = 42;
-
// syntactic sugar
#define callMemberFunction(object,ptrToMember) ((object).*(ptrToMember))
@@ -79,7 +76,7 @@ public:
virtual bool operator()(LLInventoryCategory* cat,
LLInventoryItem* item)
{
- if(cat && (cat->getPreferredType() == LLFolderType::FT_NONE))
+ if (cat && (cat->getPreferredType() == LLFolderType::FT_NONE))
{
return true;
}
@@ -95,8 +92,8 @@ public:
virtual bool operator()(LLInventoryCategory* cat,
LLInventoryItem* item)
{
- if(item) return true;
- if(cat && (cat->getPreferredType() == LLFolderType::FT_NONE))
+ if (item) return true;
+ if (cat && (cat->getPreferredType() == LLFolderType::FT_NONE))
{
return true;
}
@@ -123,18 +120,18 @@ bool LLDroppableItem::operator()(LLInventoryCategory* cat,
LLInventoryItem* item)
{
bool allowed = false;
- if(item)
+ if (item)
{
allowed = itemTransferCommonlyAllowed(item);
- if(allowed
+ if (allowed
&& mIsTransfer
&& !item->getPermissions().allowOperationBy(PERM_TRANSFER,
gAgent.getID()))
{
allowed = false;
}
- if(allowed && !item->getPermissions().allowCopyBy(gAgent.getID()))
+ if (allowed && !item->getPermissions().allowCopyBy(gAgent.getID()))
{
++mCountLosing;
}
@@ -142,29 +139,6 @@ bool LLDroppableItem::operator()(LLInventoryCategory* cat,
return allowed;
}
-class LLUncopyableItems : public LLInventoryCollectFunctor
-{
-public:
- LLUncopyableItems() {}
- virtual ~LLUncopyableItems() {}
- virtual bool operator()(LLInventoryCategory* cat, LLInventoryItem* item);
-};
-
-bool LLUncopyableItems::operator()(LLInventoryCategory* cat,
- LLInventoryItem* item)
-{
- bool uncopyable = false;
- if(item)
- {
- if (itemTransferCommonlyAllowed(item) &&
- !item->getPermissions().allowCopyBy(gAgent.getID()))
- {
- uncopyable = true;
- }
- }
- return uncopyable;
-}
-
class LLDropCopyableItems : public LLInventoryCollectFunctor
{
public:
@@ -179,10 +153,10 @@ bool LLDropCopyableItems::operator()(
LLInventoryItem* item)
{
bool allowed = false;
- if(item)
+ if (item)
{
allowed = itemTransferCommonlyAllowed(item);
- if(allowed &&
+ if (allowed &&
!item->getPermissions().allowCopyBy(gAgent.getID()))
{
// whoops, can't copy it - don't allow it.
@@ -192,47 +166,16 @@ bool LLDropCopyableItems::operator()(
return allowed;
}
-class LLGiveable : public LLInventoryCollectFunctor
-{
-public:
- LLGiveable() : mCountLosing(0) {}
- virtual ~LLGiveable() {}
- virtual bool operator()(LLInventoryCategory* cat, LLInventoryItem* item);
-
- S32 countNoCopy() const { return mCountLosing; }
-protected:
- S32 mCountLosing;
-};
-
-bool LLGiveable::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
-{
- // All categories can be given.
- if (cat)
- return true;
-
- bool allowed = false;
- if(item)
- {
- allowed = itemTransferCommonlyAllowed(item);
- if(allowed &&
- !item->getPermissions().allowOperationBy(PERM_TRANSFER,
- gAgent.getID()))
- {
- allowed = FALSE;
- }
- if(allowed &&
- !item->getPermissions().allowCopyBy(gAgent.getID()))
- {
- ++mCountLosing;
- }
- }
- return allowed;
-}
-
+// Starts a fetch on folders and items. This is really not used
+// as an observer in the traditional sense; we're just using it to
+// request a fetch and we don't care about when/if the response arrives.
class LLCategoryFireAndForget : public LLInventoryFetchComboObserver
{
public:
- LLCategoryFireAndForget() {}
+ LLCategoryFireAndForget(const uuid_vec_t& folder_ids,
+ const uuid_vec_t& item_ids) :
+ LLInventoryFetchComboObserver(folder_ids, item_ids)
+ {}
~LLCategoryFireAndForget() {}
virtual void done()
{
@@ -241,11 +184,13 @@ public:
}
};
-class LLCategoryDropObserver : public LLInventoryFetchObserver
+class LLCategoryDropObserver : public LLInventoryFetchItemsObserver
{
public:
LLCategoryDropObserver(
+ const uuid_vec_t& ids,
const LLUUID& obj_id, LLToolDragAndDrop::ESource src) :
+ LLInventoryFetchItemsObserver(ids),
mObjectID(obj_id),
mSource(src)
{}
@@ -261,16 +206,16 @@ void LLCategoryDropObserver::done()
{
gInventory.removeObserver(this);
LLViewerObject* dst_obj = gObjectList.findObject(mObjectID);
- if(dst_obj)
+ if (dst_obj)
{
// *FIX: coalesce these...
LLInventoryItem* item = NULL;
- item_ref_t::iterator it = mComplete.begin();
- item_ref_t::iterator end = mComplete.end();
+ uuid_vec_t::iterator it = mComplete.begin();
+ uuid_vec_t::iterator end = mComplete.end();
for(; it < end; ++it)
{
item = gInventory.getItem(*it);
- if(item)
+ if (item)
{
LLToolDragAndDrop::dropInventory(
dst_obj,
@@ -282,7 +227,7 @@ void LLCategoryDropObserver::done()
}
delete this;
}
-
+/* Doesn't seem to be used anymore.
class LLCategoryDropDescendentsObserver : public LLInventoryFetchDescendentsObserver
{
public:
@@ -303,8 +248,8 @@ void LLCategoryDropDescendentsObserver::done()
{
gInventory.removeObserver(this);
- folder_ref_t::iterator it = mCompleteFolders.begin();
- folder_ref_t::iterator end = mCompleteFolders.end();
+ uuid_vec_t::iterator it = mComplete.begin();
+ uuid_vec_t::iterator end = mComplete.end();
LLViewerInventoryCategory::cat_array_t cats;
LLViewerInventoryItem::item_array_t items;
for(; it != end; ++it)
@@ -317,20 +262,20 @@ void LLCategoryDropDescendentsObserver::done()
}
S32 count = items.count();
- if(count)
+ if (count)
{
std::set<LLUUID> unique_ids;
for(S32 i = 0; i < count; ++i)
{
unique_ids.insert(items.get(i)->getUUID());
}
- LLInventoryFetchObserver::item_ref_t ids;
- std::back_insert_iterator<LLInventoryFetchObserver::item_ref_t> copier(ids);
+ uuid_vec_t ids;
+ std::back_insert_iterator<uuid_vec_t> copier(ids);
std::copy(unique_ids.begin(), unique_ids.end(), copier);
LLCategoryDropObserver* dropper;
- dropper = new LLCategoryDropObserver(mObjectID, mSource);
- dropper->fetchItems(ids);
- if(dropper->isEverythingComplete())
+ dropper = new LLCategoryDropObserver(ids, mObjectID, mSource);
+ dropper->startFetch();
+ if (dropper->isDone())
{
dropper->done();
}
@@ -341,6 +286,7 @@ void LLCategoryDropDescendentsObserver::done()
}
delete this;
}
+*/
LLToolDragAndDrop::DragAndDropEntry::DragAndDropEntry(dragOrDrop3dImpl f_none,
dragOrDrop3dImpl f_self,
@@ -410,9 +356,12 @@ void LLToolDragAndDrop::setDragStart(S32 x, S32 y)
BOOL LLToolDragAndDrop::isOverThreshold(S32 x,S32 y)
{
- const S32 MIN_MANHATTAN_DIST = 3;
- S32 manhattan_dist = llabs( x - mDragStartX ) + llabs( y - mDragStartY );
- return manhattan_dist >= MIN_MANHATTAN_DIST;
+ static LLCachedControl<S32> drag_and_drop_threshold(gSavedSettings,"DragAndDropDistanceThreshold");
+
+ S32 mouse_delta_x = x - mDragStartX;
+ S32 mouse_delta_y = y - mDragStartY;
+
+ return (mouse_delta_x * mouse_delta_x) + (mouse_delta_y * mouse_delta_y) > drag_and_drop_threshold * drag_and_drop_threshold;
}
void LLToolDragAndDrop::beginDrag(EDragAndDropType type,
@@ -421,7 +370,7 @@ void LLToolDragAndDrop::beginDrag(EDragAndDropType type,
const LLUUID& source_id,
const LLUUID& object_id)
{
- if(type == DAD_NONE)
+ if (type == DAD_NONE)
{
llwarns << "Attempted to start drag without a cargo type" << llendl;
return;
@@ -437,24 +386,24 @@ void LLToolDragAndDrop::beginDrag(EDragAndDropType type,
setMouseCapture( TRUE );
LLToolMgr::getInstance()->setTransientTool( this );
mCursor = UI_CURSOR_NO;
- if((mCargoTypes[0] == DAD_CATEGORY)
+ if ((mCargoTypes[0] == DAD_CATEGORY)
&& ((mSource == SOURCE_AGENT) || (mSource == SOURCE_LIBRARY)))
{
LLInventoryCategory* cat = gInventory.getCategory(cargo_id);
// go ahead and fire & forget the descendents if we are not
// dragging a protected folder.
- if(cat)
+ if (cat)
{
LLViewerInventoryCategory::cat_array_t cats;
LLViewerInventoryItem::item_array_t items;
LLNoPreferredTypeOrItem is_not_preferred;
- LLInventoryFetchComboObserver::folder_ref_t folder_ids;
- LLInventoryFetchComboObserver::item_ref_t item_ids;
- if(is_not_preferred(cat, NULL))
+ uuid_vec_t folder_ids;
+ uuid_vec_t item_ids;
+ if (is_not_preferred(cat, NULL))
{
folder_ids.push_back(cargo_id);
}
- gInventory.collectDescendentsIf(
+ gInventory.collectDescendentsIf (
cargo_id,
cats,
items,
@@ -471,10 +420,11 @@ void LLToolDragAndDrop::beginDrag(EDragAndDropType type,
{
item_ids.push_back(items.get(i)->getUUID());
}
- if(!folder_ids.empty() || !item_ids.empty())
+ if (!folder_ids.empty() || !item_ids.empty())
{
- LLCategoryFireAndForget fetcher;
- fetcher.fetch(folder_ids, item_ids);
+ LLCategoryFireAndForget *fetcher = new LLCategoryFireAndForget(folder_ids, item_ids);
+ fetcher->startFetch();
+ delete fetcher;
}
}
}
@@ -482,7 +432,7 @@ void LLToolDragAndDrop::beginDrag(EDragAndDropType type,
void LLToolDragAndDrop::beginMultiDrag(
const std::vector<EDragAndDropType> types,
- const std::vector<LLUUID>& cargo_ids,
+ const uuid_vec_t& cargo_ids,
ESource source,
const LLUUID& source_id)
{
@@ -492,7 +442,7 @@ void LLToolDragAndDrop::beginMultiDrag(
std::vector<EDragAndDropType>::const_iterator types_it;
for (types_it = types.begin(); types_it != types.end(); ++types_it)
{
- if(DAD_NONE == *types_it)
+ if (DAD_NONE == *types_it)
{
llwarns << "Attempted to start drag without a cargo type" << llendl;
return;
@@ -506,7 +456,7 @@ void LLToolDragAndDrop::beginMultiDrag(
setMouseCapture( TRUE );
LLToolMgr::getInstance()->setTransientTool( this );
mCursor = UI_CURSOR_NO;
- if((mSource == SOURCE_AGENT) || (mSource == SOURCE_LIBRARY))
+ if ((mSource == SOURCE_AGENT) || (mSource == SOURCE_LIBRARY))
{
// find categories (i.e. inventory folders) in the cargo.
LLInventoryCategory* cat = NULL;
@@ -515,16 +465,16 @@ void LLToolDragAndDrop::beginMultiDrag(
for(S32 i = 0; i < count; ++i)
{
cat = gInventory.getCategory(cargo_ids[i]);
- if(cat)
+ if (cat)
{
LLViewerInventoryCategory::cat_array_t cats;
LLViewerInventoryItem::item_array_t items;
LLNoPreferredType is_not_preferred;
- if(is_not_preferred(cat, NULL))
+ if (is_not_preferred(cat, NULL))
{
cat_ids.insert(cat->getUUID());
}
- gInventory.collectDescendentsIf(
+ gInventory.collectDescendentsIf (
cat->getUUID(),
cats,
items,
@@ -537,14 +487,13 @@ void LLToolDragAndDrop::beginMultiDrag(
}
}
}
- if(!cat_ids.empty())
+ if (!cat_ids.empty())
{
- LLInventoryFetchComboObserver::folder_ref_t folder_ids;
- LLInventoryFetchComboObserver::item_ref_t item_ids;
- std::back_insert_iterator<LLInventoryFetchDescendentsObserver::folder_ref_t> copier(folder_ids);
+ uuid_vec_t folder_ids;
+ uuid_vec_t item_ids;
+ std::back_insert_iterator<uuid_vec_t> copier(folder_ids);
std::copy(cat_ids.begin(), cat_ids.end(), copier);
- LLCategoryFireAndForget fetcher;
- fetcher.fetch(folder_ids, item_ids);
+ LLCategoryFireAndForget fetcher(folder_ids, item_ids);
}
}
}
@@ -569,7 +518,7 @@ void LLToolDragAndDrop::onMouseCaptureLost()
BOOL LLToolDragAndDrop::handleMouseUp( S32 x, S32 y, MASK mask )
{
- if( hasMouseCapture() )
+ if (hasMouseCapture())
{
EAcceptance acceptance = ACCEPT_NO;
dragOrDrop( x, y, mask, TRUE, &acceptance );
@@ -580,7 +529,7 @@ BOOL LLToolDragAndDrop::handleMouseUp( S32 x, S32 y, MASK mask )
ECursorType LLToolDragAndDrop::acceptanceToCursor( EAcceptance acceptance )
{
- switch( acceptance )
+ switch (acceptance)
{
case ACCEPT_YES_MULTI:
if (mCargoIDs.size() > 1)
@@ -697,7 +646,7 @@ void LLToolDragAndDrop::dragOrDrop( S32 x, S32 y, MASK mask, BOOL drop,
mToolTipMsg.clear();
- if(top_view)
+ if (top_view)
{
handled = TRUE;
@@ -762,7 +711,7 @@ void LLToolDragAndDrop::dragOrDrop( S32 x, S32 y, MASK mask, BOOL drop,
}
}
- if(!handled)
+ if (!handled)
{
handled = TRUE;
@@ -820,7 +769,7 @@ void LLToolDragAndDrop::dragOrDrop( S32 x, S32 y, MASK mask, BOOL drop,
}
}
- if ( !handled )
+ if (!handled)
{
dragOrDrop3D( x, y, mask, drop, acceptance );
}
@@ -873,7 +822,7 @@ void LLToolDragAndDrop::pick(const LLPickInfo& pick_info)
if (hit_obj->isAttachment() && !hit_obj->isHUDAttachment())
{
LLVOAvatar* avatar = LLVOAvatar::findAvatarFromAttachment( hit_obj );
- if( !avatar )
+ if (!avatar)
{
mLastAccept = ACCEPT_NO;
mCursor = UI_CURSOR_NO;
@@ -885,7 +834,7 @@ void LLToolDragAndDrop::pick(const LLPickInfo& pick_info)
if (hit_obj->isAvatar())
{
- if(((LLVOAvatar*) hit_obj)->isSelf())
+ if (((LLVOAvatar*) hit_obj)->isSelf())
{
target = DT_SELF;
hit_face = -1;
@@ -959,7 +908,7 @@ void LLToolDragAndDrop::pick(const LLPickInfo& pick_info)
gViewerWindow->getWindow()->setCursor( cursor );
mLastHitPos = pick_info.mPosGlobal;
- mLastCameraPos = gAgent.getCameraPositionGlobal();
+ mLastCameraPos = gAgentCamera.getCameraPositionGlobal();
}
// static
@@ -971,7 +920,7 @@ BOOL LLToolDragAndDrop::handleDropTextureProtections(LLViewerObject* hit_obj,
// Always succeed if....
// texture is from the library
// or already in the contents of the object
- if(SOURCE_LIBRARY == source)
+ if (SOURCE_LIBRARY == source)
{
// dropping a texture from the library always just works.
return TRUE;
@@ -999,7 +948,7 @@ BOOL LLToolDragAndDrop::handleDropTextureProtections(LLViewerObject* hit_obj,
if (!item) return FALSE;
LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item);
- if(!item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID()))
+ if (!item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID()))
{
// Check that we can add the texture as inventory to the object
if (willObjectAcceptInventory(hit_obj,item) < ACCEPT_YES_COPY_SINGLE )
@@ -1007,20 +956,20 @@ BOOL LLToolDragAndDrop::handleDropTextureProtections(LLViewerObject* hit_obj,
return FALSE;
}
// make sure the object has the texture in it's inventory.
- if(SOURCE_AGENT == source)
+ if (SOURCE_AGENT == source)
{
// Remove the texture from local inventory. The server
// will actually remove the item from agent inventory.
gInventory.deleteObject(item->getUUID());
gInventory.notifyObservers();
}
- else if(SOURCE_WORLD == source)
+ else if (SOURCE_WORLD == source)
{
// *FIX: if the objects are in different regions, and the
// source region has crashed, you can bypass these
// permissions.
LLViewerObject* src_obj = gObjectList.findObject(src_id);
- if(src_obj)
+ if (src_obj)
{
src_obj->removeInventory(item->getUUID());
}
@@ -1035,7 +984,7 @@ BOOL LLToolDragAndDrop::handleDropTextureProtections(LLViewerObject* hit_obj,
// TODO: Check to see if adding the item was successful; if not, then
// we should return false here.
}
- else if(!item->getPermissions().allowOperationBy(PERM_TRANSFER,
+ else if (!item->getPermissions().allowOperationBy(PERM_TRANSFER,
gAgent.getID()))
{
// Check that we can add the texture as inventory to the object
@@ -1067,7 +1016,7 @@ void LLToolDragAndDrop::dropTextureAllFaces(LLViewerObject* hit_obj,
}
LLUUID asset_id = item->getAssetUUID();
BOOL success = handleDropTextureProtections(hit_obj, item, source, src_id);
- if(!success)
+ if (!success)
{
return;
}
@@ -1109,7 +1058,7 @@ void LLToolDragAndDrop::dropTextureOneFace(LLViewerObject* hit_obj,
}
LLUUID asset_id = item->getAssetUUID();
BOOL success = handleDropTextureProtections(hit_obj, item, source, src_id);
- if(!success)
+ if (!success)
{
return;
}
@@ -1132,32 +1081,32 @@ void LLToolDragAndDrop::dropScript(LLViewerObject* hit_obj,
{
// *HACK: In order to resolve SL-22177, we need to block drags
// from notecards and objects onto other objects.
- if((SOURCE_WORLD == LLToolDragAndDrop::getInstance()->mSource)
+ if ((SOURCE_WORLD == LLToolDragAndDrop::getInstance()->mSource)
|| (SOURCE_NOTECARD == LLToolDragAndDrop::getInstance()->mSource))
{
llwarns << "Call to LLToolDragAndDrop::dropScript() from world"
<< " or notecard." << llendl;
return;
}
- if(hit_obj && item)
+ if (hit_obj && item)
{
LLPointer<LLViewerInventoryItem> new_script = new LLViewerInventoryItem(item);
- if(!item->getPermissions().allowCopyBy(gAgent.getID()))
+ if (!item->getPermissions().allowCopyBy(gAgent.getID()))
{
- if(SOURCE_AGENT == source)
+ if (SOURCE_AGENT == source)
{
// Remove the script from local inventory. The server
// will actually remove the item from agent inventory.
gInventory.deleteObject(item->getUUID());
gInventory.notifyObservers();
}
- else if(SOURCE_WORLD == source)
+ else if (SOURCE_WORLD == source)
{
// *FIX: if the objects are in different regions, and
// the source region has crashed, you can bypass
// these permissions.
LLViewerObject* src_obj = gObjectList.findObject(src_id);
- if(src_obj)
+ if (src_obj)
{
src_obj->removeInventory(item->getUUID());
}
@@ -1173,7 +1122,7 @@ void LLToolDragAndDrop::dropScript(LLViewerObject* hit_obj,
// VEFFECT: SetScript
LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE);
- effectp->setSourceObject(gAgent.getAvatarObject());
+ effectp->setSourceObject(gAgentAvatarp);
effectp->setTargetObject(hit_obj);
effectp->setDuration(LL_HUD_DUR_SHORT);
effectp->setColor(LLColor4U(gAgent.getEffectColor()));
@@ -1197,7 +1146,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,
LLViewerInventoryItem* item;
LLViewerInventoryCategory* cat;
locateInventory(item, cat);
- if(!item || !item->isComplete()) return;
+ if (!item || !item->isFinished()) return;
//if (regionp
// && (regionp->getRegionFlags() & REGION_FLAGS_SANDBOX))
@@ -1208,7 +1157,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,
// this will remove the object from inventory after rez. Only
// bother with this check if we would not normally remove from
// inventory.
- if(!remove_from_inventory
+ if (!remove_from_inventory
&& !item->getPermissions().allowCopyBy(gAgent.getID()))
{
remove_from_inventory = TRUE;
@@ -1219,7 +1168,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,
// hitting objects that were clipped by the near plane or culled
// on the viewer.
LLUUID ray_target_id;
- if( raycast_target )
+ if (raycast_target)
{
ray_target_id = raycast_target->getID();
}
@@ -1231,7 +1180,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,
// Check if it's in the trash.
bool is_in_trash = false;
const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
- if(gInventory.isObjectDescendentOf(item->getUUID(), trash_id))
+ if (gInventory.isObjectDescendentOf(item->getUUID(), trash_id))
{
is_in_trash = true;
remove_from_inventory = TRUE;
@@ -1289,7 +1238,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,
pack_permissions_slam(msg, item->getFlags(), item->getPermissions());
LLUUID folder_id = item->getParentUUID();
- if((SOURCE_LIBRARY == mSource) || (is_in_trash))
+ if ((SOURCE_LIBRARY == mSource) || (is_in_trash))
{
// since it's coming from the library or trash, we want to not
// 'take' it back to the same place.
@@ -1323,7 +1272,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,
gViewerWindow->getWindow()->incBusyCount();
}
- if(remove_from_inventory)
+ if (remove_from_inventory)
{
// Delete it from inventory immediately so that users cannot
// easily bypass copy protection in laggy situations. If the
@@ -1334,7 +1283,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,
// VEFFECT: DropObject
LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE);
- effectp->setSourceObject(gAgent.getAvatarObject());
+ effectp->setSourceObject(gAgentAvatarp);
effectp->setPositionGlobal(mLastHitPos);
effectp->setDuration(LL_HUD_DUR_SHORT);
effectp->setColor(LLColor4U(gAgent.getEffectColor()));
@@ -1349,7 +1298,7 @@ void LLToolDragAndDrop::dropInventory(LLViewerObject* hit_obj,
{
// *HACK: In order to resolve SL-22177, we need to block drags
// from notecards and objects onto other objects.
- if((SOURCE_WORLD == LLToolDragAndDrop::getInstance()->mSource)
+ if ((SOURCE_WORLD == LLToolDragAndDrop::getInstance()->mSource)
|| (SOURCE_NOTECARD == LLToolDragAndDrop::getInstance()->mSource))
{
llwarns << "Call to LLToolDragAndDrop::dropInventory() from world"
@@ -1361,9 +1310,9 @@ void LLToolDragAndDrop::dropInventory(LLViewerObject* hit_obj,
time_t creation_date = time_corrected();
new_item->setCreationDate(creation_date);
- if(!item->getPermissions().allowCopyBy(gAgent.getID()))
+ if (!item->getPermissions().allowCopyBy(gAgent.getID()))
{
- if(SOURCE_AGENT == source)
+ if (SOURCE_AGENT == source)
{
// Remove the inventory item from local inventory. The
// server will actually remove the item from agent
@@ -1371,13 +1320,13 @@ void LLToolDragAndDrop::dropInventory(LLViewerObject* hit_obj,
gInventory.deleteObject(item->getUUID());
gInventory.notifyObservers();
}
- else if(SOURCE_WORLD == source)
+ else if (SOURCE_WORLD == source)
{
// *FIX: if the objects are in different regions, and the
// source region has crashed, you can bypass these
// permissions.
LLViewerObject* src_obj = gObjectList.findObject(src_id);
- if(src_obj)
+ if (src_obj)
{
src_obj->removeInventory(item->getUUID());
}
@@ -1397,423 +1346,13 @@ void LLToolDragAndDrop::dropInventory(LLViewerObject* hit_obj,
// VEFFECT: AddToInventory
LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE);
- effectp->setSourceObject(gAgent.getAvatarObject());
+ effectp->setSourceObject(gAgentAvatarp);
effectp->setTargetObject(hit_obj);
effectp->setDuration(LL_HUD_DUR_SHORT);
effectp->setColor(LLColor4U(gAgent.getEffectColor()));
gFloaterTools->dirty();
}
-void LLToolDragAndDrop::giveInventory(const LLUUID& to_agent,
- LLInventoryItem* item,
- const LLUUID& im_session_id)
-
-{
- llinfos << "LLToolDragAndDrop::giveInventory()" << llendl;
- if(!isInventoryGiveAcceptable(item))
- {
- return;
- }
- if(item->getPermissions().allowCopyBy(gAgent.getID()))
- {
- // just give it away.
- LLToolDragAndDrop::commitGiveInventoryItem(to_agent, item, im_session_id);
- }
- else
- {
- // ask if the agent is sure.
- LLSD payload;
- payload["agent_id"] = to_agent;
- payload["item_id"] = item->getUUID();
- LLNotificationsUtil::add("CannotCopyWarning", LLSD(), payload,
- &LLToolDragAndDrop::handleCopyProtectedItem);
- }
-}
-// static
-bool LLToolDragAndDrop::handleCopyProtectedItem(const LLSD& notification, const LLSD& response)
-{
- S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
- LLInventoryItem* item = NULL;
- switch(option)
- {
- case 0: // "Yes"
- item = gInventory.getItem(notification["payload"]["item_id"].asUUID());
- if(item)
- {
- LLToolDragAndDrop::commitGiveInventoryItem(notification["payload"]["agent_id"].asUUID(),
- item);
- // delete it for now - it will be deleted on the server
- // quickly enough.
- gInventory.deleteObject(notification["payload"]["item_id"].asUUID());
- gInventory.notifyObservers();
- }
- else
- {
- LLNotificationsUtil::add("CannotGiveItem");
- }
- break;
-
- default: // no, cancel, whatever, who cares, not yes.
- LLNotificationsUtil::add("TransactionCancelled");
- break;
- }
- return false;
-}
-
-// static
-void LLToolDragAndDrop::commitGiveInventoryItem(const LLUUID& to_agent,
- LLInventoryItem* item,
- const LLUUID& im_session_id)
-{
- if(!item) return;
- std::string name;
- LLAgentUI::buildFullname(name);
- LLUUID transaction_id;
- transaction_id.generate();
- const S32 BUCKET_SIZE = sizeof(U8) + UUID_BYTES;
- U8 bucket[BUCKET_SIZE];
- bucket[0] = (U8)item->getType();
- memcpy(&bucket[1], &(item->getUUID().mData), UUID_BYTES); /* Flawfinder: ignore */
- pack_instant_message(
- gMessageSystem,
- gAgent.getID(),
- FALSE,
- gAgent.getSessionID(),
- to_agent,
- name,
- item->getName(),
- IM_ONLINE,
- IM_INVENTORY_OFFERED,
- transaction_id,
- 0,
- LLUUID::null,
- gAgent.getPositionAgent(),
- NO_TIMESTAMP,
- bucket,
- BUCKET_SIZE);
- gAgent.sendReliableMessage();
-
- // VEFFECT: giveInventory
- LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE);
- effectp->setSourceObject(gAgent.getAvatarObject());
- effectp->setTargetObject(gObjectList.findObject(to_agent));
- effectp->setDuration(LL_HUD_DUR_SHORT);
- effectp->setColor(LLColor4U(gAgent.getEffectColor()));
- gFloaterTools->dirty();
-
- LLMuteList::getInstance()->autoRemove(to_agent, LLMuteList::AR_INVENTORY);
-
- // If this item was given by drag-and-drop into an IM panel, log this action in the IM panel chat.
- if (im_session_id != LLUUID::null)
- {
- LLSD args;
- gIMMgr->addSystemMessage(im_session_id, "inventory_item_offered", args);
- }
-
- // add buddy to recent people list
- LLRecentPeople::instance().add(to_agent);
-}
-
-void LLToolDragAndDrop::giveInventoryCategory(const LLUUID& to_agent,
- LLInventoryCategory* cat,
- const LLUUID& im_session_id)
-
-{
- if(!cat) return;
- llinfos << "LLToolDragAndDrop::giveInventoryCategory() - "
- << cat->getUUID() << llendl;
-
- LLVOAvatar* my_avatar = gAgent.getAvatarObject();
- if( !my_avatar )
- {
- return;
- }
-
- // Test out how many items are being given.
- LLViewerInventoryCategory::cat_array_t cats;
- LLViewerInventoryItem::item_array_t items;
- LLGiveable giveable;
- gInventory.collectDescendentsIf(cat->getUUID(),
- cats,
- items,
- LLInventoryModel::EXCLUDE_TRASH,
- giveable);
- S32 count = cats.count();
- bool complete = true;
- for(S32 i = 0; i < count; ++i)
- {
- if(!gInventory.isCategoryComplete(cats.get(i)->getUUID()))
- {
- complete = false;
- break;
- }
- }
- if(!complete)
- {
- LLNotificationsUtil::add("IncompleteInventory");
- return;
- }
- count = items.count() + cats.count();
- if(count > MAX_ITEMS)
- {
- LLNotificationsUtil::add("TooManyItems");
- return;
- }
- else if(count == 0)
- {
- LLNotificationsUtil::add("NoItems");
- return;
- }
- else
- {
- if(0 == giveable.countNoCopy())
- {
- LLToolDragAndDrop::commitGiveInventoryCategory(to_agent, cat, im_session_id);
- }
- else
- {
- LLSD args;
- args["COUNT"] = llformat("%d",giveable.countNoCopy());
- LLSD payload;
- payload["agent_id"] = to_agent;
- payload["folder_id"] = cat->getUUID();
- LLNotificationsUtil::add("CannotCopyCountItems", args, payload, &LLToolDragAndDrop::handleCopyProtectedCategory);
- }
- }
-}
-
-
-// static
-bool LLToolDragAndDrop::handleCopyProtectedCategory(const LLSD& notification, const LLSD& response)
-{
- S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
- LLInventoryCategory* cat = NULL;
- switch(option)
- {
- case 0: // "Yes"
- cat = gInventory.getCategory(notification["payload"]["folder_id"].asUUID());
- if(cat)
- {
- LLToolDragAndDrop::commitGiveInventoryCategory(notification["payload"]["agent_id"].asUUID(),
- cat);
- LLViewerInventoryCategory::cat_array_t cats;
- LLViewerInventoryItem::item_array_t items;
- LLUncopyableItems remove;
- gInventory.collectDescendentsIf(cat->getUUID(),
- cats,
- items,
- LLInventoryModel::EXCLUDE_TRASH,
- remove);
- S32 count = items.count();
- for(S32 i = 0; i < count; ++i)
- {
- gInventory.deleteObject(items.get(i)->getUUID());
- }
- gInventory.notifyObservers();
- }
- else
- {
- LLNotificationsUtil::add("CannotGiveCategory");
- }
- break;
-
- default: // no, cancel, whatever, who cares, not yes.
- LLNotificationsUtil::add("TransactionCancelled");
- break;
- }
- return false;
-}
-
-// static
-void LLToolDragAndDrop::commitGiveInventoryCategory(const LLUUID& to_agent,
- LLInventoryCategory* cat,
- const LLUUID& im_session_id)
-
-{
- if(!cat) return;
- llinfos << "LLToolDragAndDrop::commitGiveInventoryCategory() - "
- << cat->getUUID() << llendl;
-
- // add buddy to recent people list
- LLRecentPeople::instance().add(to_agent);
-
- // Test out how many items are being given.
- LLViewerInventoryCategory::cat_array_t cats;
- LLViewerInventoryItem::item_array_t items;
- LLGiveable giveable;
- gInventory.collectDescendentsIf(cat->getUUID(),
- cats,
- items,
- LLInventoryModel::EXCLUDE_TRASH,
- giveable);
-
- // MAX ITEMS is based on (sizeof(uuid)+2) * count must be <
- // MTUBYTES or 18 * count < 1200 => count < 1200/18 =>
- // 66. I've cut it down a bit from there to give some pad.
- S32 count = items.count() + cats.count();
- if(count > MAX_ITEMS)
- {
- LLNotificationsUtil::add("TooManyItems");
- return;
- }
- else if(count == 0)
- {
- LLNotificationsUtil::add("NoItems");
- return;
- }
- else
- {
- std::string name;
- LLAgentUI::buildFullname(name);
- LLUUID transaction_id;
- transaction_id.generate();
- S32 bucket_size = (sizeof(U8) + UUID_BYTES) * (count + 1);
- U8* bucket = new U8[bucket_size];
- U8* pos = bucket;
- U8 type = (U8)cat->getType();
- memcpy(pos, &type, sizeof(U8)); /* Flawfinder: ignore */
- pos += sizeof(U8);
- memcpy(pos, &(cat->getUUID()), UUID_BYTES); /* Flawfinder: ignore */
- pos += UUID_BYTES;
- S32 i;
- count = cats.count();
- for(i = 0; i < count; ++i)
- {
- memcpy(pos, &type, sizeof(U8)); /* Flawfinder: ignore */
- pos += sizeof(U8);
- memcpy(pos, &(cats.get(i)->getUUID()), UUID_BYTES); /* Flawfinder: ignore */
- pos += UUID_BYTES;
- }
- count = items.count();
- for(i = 0; i < count; ++i)
- {
- type = (U8)items.get(i)->getType();
- memcpy(pos, &type, sizeof(U8)); /* Flawfinder: ignore */
- pos += sizeof(U8);
- memcpy(pos, &(items.get(i)->getUUID()), UUID_BYTES); /* Flawfinder: ignore */
- pos += UUID_BYTES;
- }
- pack_instant_message(
- gMessageSystem,
- gAgent.getID(),
- FALSE,
- gAgent.getSessionID(),
- to_agent,
- name,
- cat->getName(),
- IM_ONLINE,
- IM_INVENTORY_OFFERED,
- transaction_id,
- 0,
- LLUUID::null,
- gAgent.getPositionAgent(),
- NO_TIMESTAMP,
- bucket,
- bucket_size);
- gAgent.sendReliableMessage();
- delete[] bucket;
-
- // VEFFECT: giveInventoryCategory
- LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE);
- effectp->setSourceObject(gAgent.getAvatarObject());
- effectp->setTargetObject(gObjectList.findObject(to_agent));
- effectp->setDuration(LL_HUD_DUR_SHORT);
- effectp->setColor(LLColor4U(gAgent.getEffectColor()));
- gFloaterTools->dirty();
-
- LLMuteList::getInstance()->autoRemove(to_agent, LLMuteList::AR_INVENTORY);
-
- // If this item was given by drag-and-drop into an IM panel, log this action in the IM panel chat.
- if (im_session_id != LLUUID::null)
- {
- LLSD args;
- gIMMgr->addSystemMessage(im_session_id, "inventory_item_offered", args);
- }
- }
-}
-
-// static
-BOOL LLToolDragAndDrop::isInventoryGiveAcceptable(LLInventoryItem* item)
-{
- if(!item)
- {
- return FALSE;
- }
- if(!item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID()))
- {
- return FALSE;
- }
- BOOL copyable = FALSE;
- if(item->getPermissions().allowCopyBy(gAgent.getID())) copyable = TRUE;
-
- LLVOAvatarSelf* my_avatar = gAgent.getAvatarObject();
- if(!my_avatar)
- {
- return FALSE;
- }
-
- BOOL acceptable = TRUE;
- switch(item->getType())
- {
- case LLAssetType::AT_OBJECT:
- if(my_avatar->isWearingAttachment(item->getUUID()))
- {
- acceptable = FALSE;
- }
- break;
- case LLAssetType::AT_BODYPART:
- case LLAssetType::AT_CLOTHING:
- if(!copyable && gAgentWearables.isWearingItem(item->getUUID()))
- {
- acceptable = FALSE;
- }
- break;
- default:
- break;
- }
- return acceptable;
-}
-
-// Static
-BOOL LLToolDragAndDrop::isInventoryGroupGiveAcceptable(LLInventoryItem* item)
-{
- if(!item)
- {
- return FALSE;
- }
-
- // These permissions are double checked in the simulator in
- // LLGroupNoticeInventoryItemFetch::result().
- if(!item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID()))
- {
- return FALSE;
- }
- if(!item->getPermissions().allowCopyBy(gAgent.getID()))
- {
- return FALSE;
- }
-
- LLVOAvatarSelf* my_avatar = gAgent.getAvatarObject();
- if(!my_avatar)
- {
- return FALSE;
- }
-
- BOOL acceptable = TRUE;
- switch(item->getType())
- {
- case LLAssetType::AT_OBJECT:
- if(my_avatar->isWearingAttachment(item->getUUID()))
- {
- acceptable = FALSE;
- }
- break;
- default:
- break;
- }
- return acceptable;
-}
-
// accessor that looks at permissions, copyability, and names of
// inventory items to determine if a drop would be ok.
EAcceptance LLToolDragAndDrop::willObjectAcceptInventory(LLViewerObject* obj, LLInventoryItem* item)
@@ -1822,14 +1361,14 @@ EAcceptance LLToolDragAndDrop::willObjectAcceptInventory(LLViewerObject* obj, LL
if (!item || !obj) return ACCEPT_NO;
// HACK: downcast
LLViewerInventoryItem* vitem = (LLViewerInventoryItem*)item;
- if (!vitem->isComplete()) return ACCEPT_NO;
+ if (!vitem->isFinished()) return ACCEPT_NO;
if (vitem->getIsLinkType()) return ACCEPT_NO; // No giving away links
// deny attempts to drop from an object onto itself. This is to
// help make sure that drops that are from an object to an object
// don't have to worry about order of evaluation. Think of this
// like check for self in assignment.
- if(obj->getID() == item->getParentUUID())
+ if (obj->getID() == item->getParentUUID())
{
return ACCEPT_NO;
}
@@ -1838,19 +1377,17 @@ EAcceptance LLToolDragAndDrop::willObjectAcceptInventory(LLViewerObject* obj, LL
// gAgent.getGroupID())
// && (obj->mPermModify || obj->mFlagAllowInventoryAdd));
BOOL worn = FALSE;
- LLVOAvatarSelf* my_avatar = NULL;
switch(item->getType())
{
case LLAssetType::AT_OBJECT:
- my_avatar = gAgent.getAvatarObject();
- if(my_avatar && my_avatar->isWearingAttachment(item->getUUID()))
+ if (isAgentAvatarValid() && gAgentAvatarp->isWearingAttachment(item->getUUID()))
{
worn = TRUE;
}
break;
case LLAssetType::AT_BODYPART:
case LLAssetType::AT_CLOTHING:
- if(gAgentWearables.isWearingItem(item->getUUID()))
+ if (gAgentWearables.isWearingItem(item->getUUID()))
{
worn = TRUE;
}
@@ -1861,7 +1398,7 @@ EAcceptance LLToolDragAndDrop::willObjectAcceptInventory(LLViewerObject* obj, LL
const LLPermissions& perm = item->getPermissions();
BOOL modify = (obj->permModify() || obj->flagAllowInventoryAdd());
BOOL transfer = FALSE;
- if((obj->permYouOwner() && (perm.getOwner() == gAgent.getID()))
+ if ((obj->permYouOwner() && (perm.getOwner() == gAgent.getID()))
|| perm.allowOperationBy(PERM_TRANSFER, gAgent.getID()))
{
transfer = TRUE;
@@ -1869,15 +1406,15 @@ EAcceptance LLToolDragAndDrop::willObjectAcceptInventory(LLViewerObject* obj, LL
BOOL volume = (LL_PCODE_VOLUME == obj->getPCode());
BOOL attached = obj->isAttachment();
BOOL unrestricted = ((perm.getMaskBase() & PERM_ITEM_UNRESTRICTED) == PERM_ITEM_UNRESTRICTED) ? TRUE : FALSE;
- if(attached && !unrestricted)
+ if (attached && !unrestricted)
{
return ACCEPT_NO_LOCKED;
}
- else if(modify && transfer && volume && !worn)
+ else if (modify && transfer && volume && !worn)
{
return ACCEPT_YES_MULTI;
}
- else if(!modify)
+ else if (!modify)
{
return ACCEPT_NO_LOCKED;
}
@@ -1908,14 +1445,14 @@ bool LLToolDragAndDrop::handleGiveDragAndDrop(LLUUID dest_agent, LLUUID session_
case DAD_CALLINGCARD:
{
LLViewerInventoryItem* inv_item = (LLViewerInventoryItem*)cargo_data;
- if(gInventory.getItem(inv_item->getUUID())
- && LLToolDragAndDrop::isInventoryGiveAcceptable(inv_item))
+ if (gInventory.getItem(inv_item->getUUID())
+ && LLGiveInventory::isInventoryGiveAcceptable(inv_item))
{
// *TODO: get multiple object transfers working
*accept = ACCEPT_YES_COPY_SINGLE;
- if(drop)
+ if (drop)
{
- LLToolDragAndDrop::giveInventory(dest_agent, inv_item, session_id);
+ LLGiveInventory::doGiveInventoryItem(dest_agent, inv_item, session_id);
}
}
else
@@ -1931,13 +1468,13 @@ bool LLToolDragAndDrop::handleGiveDragAndDrop(LLUUID dest_agent, LLUUID session_
case DAD_CATEGORY:
{
LLViewerInventoryCategory* inv_cat = (LLViewerInventoryCategory*)cargo_data;
- if( gInventory.getCategory( inv_cat->getUUID() ) )
+ if (gInventory.getCategory(inv_cat->getUUID()))
{
// *TODO: get multiple object transfers working
*accept = ACCEPT_YES_COPY_SINGLE;
- if(drop)
+ if (drop)
{
- LLToolDragAndDrop::giveInventoryCategory(dest_agent, inv_cat, session_id);
+ LLGiveInventory::doGiveInventoryCategory(dest_agent, inv_cat, session_id);
}
}
else
@@ -1976,7 +1513,7 @@ EAcceptance LLToolDragAndDrop::dad3dRezAttachmentFromInv(
{
lldebugs << "LLToolDragAndDrop::dad3dRezAttachmentFromInv()" << llendl;
// must be in the user's inventory
- if(mSource != SOURCE_AGENT && mSource != SOURCE_LIBRARY)
+ if (mSource != SOURCE_AGENT && mSource != SOURCE_LIBRARY)
{
return ACCEPT_NO;
}
@@ -1984,25 +1521,24 @@ EAcceptance LLToolDragAndDrop::dad3dRezAttachmentFromInv(
LLViewerInventoryItem* item;
LLViewerInventoryCategory* cat;
locateInventory(item, cat);
- if(!item || !item->isComplete()) return ACCEPT_NO;
+ if (!item || !item->isFinished()) return ACCEPT_NO;
// must not be in the trash
const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
- if( gInventory.isObjectDescendentOf( item->getUUID(), trash_id ) )
+ if (gInventory.isObjectDescendentOf(item->getUUID(), trash_id))
{
return ACCEPT_NO;
}
// must not be already wearing it
- LLVOAvatarSelf* avatar = gAgent.getAvatarObject();
- if( !avatar || avatar->isWearingAttachment(item->getUUID()) )
+ if (!isAgentAvatarValid() || gAgentAvatarp->isWearingAttachment(item->getUUID()))
{
return ACCEPT_NO;
}
- if( drop )
+ if (drop)
{
- if(mSource == SOURCE_LIBRARY)
+ if (mSource == SOURCE_LIBRARY)
{
LLPointer<LLInventoryCallback> cb = new RezAttachmentCallback(0);
copy_inventory_item(
@@ -2034,10 +1570,9 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnLand(
LLViewerInventoryItem* item;
LLViewerInventoryCategory* cat;
locateInventory(item, cat);
- if(!item || !item->isComplete()) return ACCEPT_NO;
+ if (!item || !item->isFinished()) return ACCEPT_NO;
- LLVOAvatarSelf* my_avatar = gAgent.getAvatarObject();
- if( !my_avatar || my_avatar->isWearingAttachment( item->getUUID() ) )
+ if (!isAgentAvatarValid() || gAgentAvatarp->isWearingAttachment(item->getUUID()))
{
return ACCEPT_NO;
}
@@ -2062,7 +1597,7 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnLand(
// check if the item can be copied. If not, send that to the sim
// which will remove the inventory item.
- if(!item->getPermissions().allowCopyBy(gAgent.getID()))
+ if (!item->getPermissions().allowCopyBy(gAgent.getID()))
{
accept = ACCEPT_YES_SINGLE;
remove_inventory = TRUE;
@@ -2070,13 +1605,13 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnLand(
// Check if it's in the trash.
const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
- if(gInventory.isObjectDescendentOf(item->getUUID(), trash_id))
+ if (gInventory.isObjectDescendentOf(item->getUUID(), trash_id))
{
accept = ACCEPT_YES_SINGLE;
remove_inventory = TRUE;
}
- if(drop)
+ if (drop)
{
dropObject(obj, TRUE, FALSE, remove_inventory);
}
@@ -2097,24 +1632,23 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnObject(
LLViewerInventoryItem* item;
LLViewerInventoryCategory* cat;
locateInventory(item, cat);
- if(!item || !item->isComplete()) return ACCEPT_NO;
- LLVOAvatarSelf* my_avatar = gAgent.getAvatarObject();
- if( !my_avatar || my_avatar->isWearingAttachment( item->getUUID() ) )
+ if (!item || !item->isFinished()) return ACCEPT_NO;
+ if (!isAgentAvatarValid() || gAgentAvatarp->isWearingAttachment(item->getUUID()))
{
return ACCEPT_NO;
}
- if((mask & MASK_CONTROL))
+ if ((mask & MASK_CONTROL))
{
// *HACK: In order to resolve SL-22177, we need to block drags
// from notecards and objects onto other objects.
- if(mSource == SOURCE_NOTECARD)
+ if (mSource == SOURCE_NOTECARD)
{
return ACCEPT_NO;
}
EAcceptance rv = willObjectAcceptInventory(obj, item);
- if(drop && (ACCEPT_YES_SINGLE <= rv))
+ if (drop && (ACCEPT_YES_SINGLE <= rv))
{
dropInventory(obj, item, mSource, mSourceID);
}
@@ -2140,7 +1674,7 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnObject(
// check if the item can be copied. If not, send that to the sim
// which will remove the inventory item.
- if(!item->getPermissions().allowCopyBy(gAgent.getID()))
+ if (!item->getPermissions().allowCopyBy(gAgent.getID()))
{
accept = ACCEPT_YES_SINGLE;
remove_inventory = TRUE;
@@ -2148,13 +1682,13 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnObject(
// Check if it's in the trash.
const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
- if(gInventory.isObjectDescendentOf(item->getUUID(), trash_id))
+ if (gInventory.isObjectDescendentOf(item->getUUID(), trash_id))
{
accept = ACCEPT_YES_SINGLE;
remove_inventory = TRUE;
}
- if(drop)
+ if (drop)
{
dropObject(obj, FALSE, FALSE, remove_inventory);
}
@@ -2169,7 +1703,7 @@ EAcceptance LLToolDragAndDrop::dad3dRezScript(
// *HACK: In order to resolve SL-22177, we need to block drags
// from notecards and objects onto other objects.
- if((SOURCE_WORLD == mSource) || (SOURCE_NOTECARD == mSource))
+ if ((SOURCE_WORLD == mSource) || (SOURCE_NOTECARD == mSource))
{
return ACCEPT_NO;
}
@@ -2177,9 +1711,9 @@ EAcceptance LLToolDragAndDrop::dad3dRezScript(
LLViewerInventoryItem* item;
LLViewerInventoryCategory* cat;
locateInventory(item, cat);
- if(!item || !item->isComplete()) return ACCEPT_NO;
+ if (!item || !item->isFinished()) return ACCEPT_NO;
EAcceptance rv = willObjectAcceptInventory(obj, item);
- if(drop && (ACCEPT_YES_SINGLE <= rv))
+ if (drop && (ACCEPT_YES_SINGLE <= rv))
{
// rez in the script active by default, rez in inactive if the
// control key is being held down.
@@ -2207,7 +1741,7 @@ EAcceptance LLToolDragAndDrop::dad3dTextureObject(
// *HACK: In order to resolve SL-22177, we need to block drags
// from notecards and objects onto other objects.
- if((SOURCE_WORLD == mSource) || (SOURCE_NOTECARD == mSource))
+ if ((SOURCE_WORLD == mSource) || (SOURCE_NOTECARD == mSource))
{
return ACCEPT_NO;
}
@@ -2215,29 +1749,29 @@ EAcceptance LLToolDragAndDrop::dad3dTextureObject(
LLViewerInventoryItem* item;
LLViewerInventoryCategory* cat;
locateInventory(item, cat);
- if(!item || !item->isComplete()) return ACCEPT_NO;
+ if (!item || !item->isFinished()) return ACCEPT_NO;
EAcceptance rv = willObjectAcceptInventory(obj, item);
- if((mask & MASK_CONTROL))
+ if ((mask & MASK_CONTROL))
{
- if((ACCEPT_YES_SINGLE <= rv) && drop)
+ if ((ACCEPT_YES_SINGLE <= rv) && drop)
{
dropInventory(obj, item, mSource, mSourceID);
}
return rv;
}
- if(!obj->permModify())
+ if (!obj->permModify())
{
return ACCEPT_NO_LOCKED;
}
//If texture !copyable don't texture or you'll never get it back.
- if(!item->getPermissions().allowCopyBy(gAgent.getID()))
+ if (!item->getPermissions().allowCopyBy(gAgent.getID()))
{
return ACCEPT_NO;
}
- if(drop && (ACCEPT_YES_SINGLE <= rv))
+ if (drop && (ACCEPT_YES_SINGLE <= rv))
{
- if((mask & MASK_SHIFT))
+ if ((mask & MASK_SHIFT))
{
dropTextureAllFaces(obj, item, mSource, mSourceID);
}
@@ -2248,7 +1782,7 @@ EAcceptance LLToolDragAndDrop::dad3dTextureObject(
// VEFFECT: SetTexture
LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE);
- effectp->setSourceObject(gAgent.getAvatarObject());
+ effectp->setSourceObject(gAgentAvatarp);
effectp->setTargetObject(obj);
effectp->setDuration(LL_HUD_DUR_SHORT);
effectp->setColor(LLColor4U(gAgent.getEffectColor()));
@@ -2262,9 +1796,9 @@ EAcceptance LLToolDragAndDrop::dad3dTextureSelf(
LLViewerObject* obj, S32 face, MASK mask, BOOL drop)
{
lldebugs << "LLToolDragAndDrop::dad3dTextureAvatar()" << llendl;
- if(drop)
+ if (drop)
{
- if( !(mask & MASK_SHIFT) )
+ if (!(mask & MASK_SHIFT))
{
dropTextureOneFaceAvatar( (LLVOAvatar*)obj, face, (LLInventoryItem*)mCargoData);
}
@@ -2280,18 +1814,18 @@ EAcceptance LLToolDragAndDrop::dad3dWearItem(
LLViewerInventoryItem* item;
LLViewerInventoryCategory* cat;
locateInventory(item, cat);
- if(!item || !item->isComplete()) return ACCEPT_NO;
+ if (!item || !item->isFinished()) return ACCEPT_NO;
- if(mSource == SOURCE_AGENT || mSource == SOURCE_LIBRARY)
+ if (mSource == SOURCE_AGENT || mSource == SOURCE_LIBRARY)
{
// it's in the agent inventory
const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
- if( gInventory.isObjectDescendentOf( item->getUUID(), trash_id ) )
+ if (gInventory.isObjectDescendentOf(item->getUUID(), trash_id))
{
return ACCEPT_NO;
}
- if( drop )
+ if (drop)
{
// Don't wear anything until initial wearables are loaded, can
// destroy clothing items.
@@ -2301,7 +1835,7 @@ EAcceptance LLToolDragAndDrop::dad3dWearItem(
return ACCEPT_NO;
}
- if(mSource == SOURCE_LIBRARY)
+ if (mSource == SOURCE_LIBRARY)
{
// create item based on that one, and put it on if that
// was a success.
@@ -2335,21 +1869,21 @@ EAcceptance LLToolDragAndDrop::dad3dActivateGesture(
LLViewerInventoryItem* item;
LLViewerInventoryCategory* cat;
locateInventory(item, cat);
- if(!item || !item->isComplete()) return ACCEPT_NO;
+ if (!item || !item->isFinished()) return ACCEPT_NO;
- if(mSource == SOURCE_AGENT || mSource == SOURCE_LIBRARY)
+ if (mSource == SOURCE_AGENT || mSource == SOURCE_LIBRARY)
{
// it's in the agent inventory
const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
- if( gInventory.isObjectDescendentOf( item->getUUID(), trash_id ) )
+ if (gInventory.isObjectDescendentOf(item->getUUID(), trash_id))
{
return ACCEPT_NO;
}
- if( drop )
+ if (drop)
{
LLUUID item_id;
- if(mSource == SOURCE_LIBRARY)
+ if (mSource == SOURCE_LIBRARY)
{
// create item based on that one, and put it on if that
// was a success.
@@ -2364,7 +1898,7 @@ EAcceptance LLToolDragAndDrop::dad3dActivateGesture(
}
else
{
- LLGestureManager::instance().activateGesture(item->getUUID());
+ LLGestureMgr::instance().activateGesture(item->getUUID());
gInventory.updateItem(item);
gInventory.notifyObservers();
}
@@ -2384,7 +1918,7 @@ EAcceptance LLToolDragAndDrop::dad3dWearCategory(
LLViewerInventoryItem* item;
LLViewerInventoryCategory* category;
locateInventory(item, category);
- if(!category) return ACCEPT_NO;
+ if (!category) return ACCEPT_NO;
if (drop)
{
@@ -2397,26 +1931,26 @@ EAcceptance LLToolDragAndDrop::dad3dWearCategory(
}
}
- if(mSource == SOURCE_AGENT)
+ if (mSource == SOURCE_AGENT)
{
const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
- if( gInventory.isObjectDescendentOf( category->getUUID(), trash_id ) )
+ if (gInventory.isObjectDescendentOf(category->getUUID(), trash_id))
{
return ACCEPT_NO;
}
- if(drop)
+ if (drop)
{
BOOL append = ( (mask & MASK_SHIFT) ? TRUE : FALSE );
- LLAppearanceManager::instance().wearInventoryCategory(category, false, append);
+ LLAppearanceMgr::instance().wearInventoryCategory(category, false, append);
}
return ACCEPT_YES_MULTI;
}
- else if(mSource == SOURCE_LIBRARY)
+ else if (mSource == SOURCE_LIBRARY)
{
- if(drop)
+ if (drop)
{
- LLAppearanceManager::instance().wearInventoryCategory(category, true, false);
+ LLAppearanceMgr::instance().wearInventoryCategory(category, true, false);
}
return ACCEPT_YES_MULTI;
}
@@ -2435,7 +1969,7 @@ EAcceptance LLToolDragAndDrop::dad3dUpdateInventory(
// *HACK: In order to resolve SL-22177, we need to block drags
// from notecards and objects onto other objects.
- if((SOURCE_WORLD == mSource) || (SOURCE_NOTECARD == mSource))
+ if ((SOURCE_WORLD == mSource) || (SOURCE_NOTECARD == mSource))
{
return ACCEPT_NO;
}
@@ -2443,7 +1977,7 @@ EAcceptance LLToolDragAndDrop::dad3dUpdateInventory(
LLViewerInventoryItem* item;
LLViewerInventoryCategory* cat;
locateInventory(item, cat);
- if(!item || !item->isComplete()) return ACCEPT_NO;
+ if (!item || !item->isFinished()) return ACCEPT_NO;
LLViewerObject* root_object = obj;
if (obj && obj->getParent())
{
@@ -2455,7 +1989,7 @@ EAcceptance LLToolDragAndDrop::dad3dUpdateInventory(
}
EAcceptance rv = willObjectAcceptInventory(root_object, item);
- if(root_object && drop && (ACCEPT_YES_COPY_SINGLE <= rv))
+ if (root_object && drop && (ACCEPT_YES_COPY_SINGLE <= rv))
{
dropInventory(root_object, item, mSource, mSourceID);
}
@@ -2499,7 +2033,7 @@ EAcceptance LLToolDragAndDrop::dad3dUpdateInventoryCategory(
LLDroppableItem droppable(!obj->permYouOwner());
LLInventoryModel::cat_array_t cats;
LLInventoryModel::item_array_t items;
- gInventory.collectDescendentsIf(cat->getUUID(),
+ gInventory.collectDescendentsIf (cat->getUUID(),
cats,
items,
LLInventoryModel::EXCLUDE_TRASH,
@@ -2528,7 +2062,7 @@ EAcceptance LLToolDragAndDrop::dad3dUpdateInventoryCategory(
{
const LLViewerInventoryCategory *cat = (*cat_iter);
rv = gInventory.isCategoryComplete(cat->getUUID()) ? ACCEPT_YES_MULTI : ACCEPT_NO;
- if(rv < ACCEPT_YES_SINGLE)
+ if (rv < ACCEPT_YES_SINGLE)
{
lldebugs << "Category " << cat->getUUID() << "is not complete." << llendl;
break;
@@ -2561,7 +2095,7 @@ EAcceptance LLToolDragAndDrop::dad3dUpdateInventoryCategory(
// If every item is accepted, send it on
if (drop && (ACCEPT_YES_COPY_SINGLE <= rv))
{
- LLInventoryFetchObserver::item_ref_t ids;
+ uuid_vec_t ids;
for (LLInventoryModel::item_array_t::const_iterator item_iter = items.begin();
item_iter != items.end();
++item_iter)
@@ -2569,9 +2103,9 @@ EAcceptance LLToolDragAndDrop::dad3dUpdateInventoryCategory(
const LLViewerInventoryItem *item = (*item_iter);
ids.push_back(item->getUUID());
}
- LLCategoryDropObserver* dropper = new LLCategoryDropObserver(obj->getID(), mSource);
- dropper->fetchItems(ids);
- if(dropper->isEverythingComplete())
+ LLCategoryDropObserver* dropper = new LLCategoryDropObserver(ids, obj->getID(), mSource);
+ dropper->startFetch();
+ if (dropper->isFinished())
{
dropper->done();
}
@@ -2596,29 +2130,28 @@ EAcceptance LLToolDragAndDrop::dad3dGiveInventoryObject(
lldebugs << "LLToolDragAndDrop::dad3dGiveInventoryObject()" << llendl;
// item has to be in agent inventory.
- if(mSource != SOURCE_AGENT) return ACCEPT_NO;
+ if (mSource != SOURCE_AGENT) return ACCEPT_NO;
// find the item now.
LLViewerInventoryItem* item;
LLViewerInventoryCategory* cat;
locateInventory(item, cat);
- if(!item || !item->isComplete()) return ACCEPT_NO;
- if(!item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID()))
+ if (!item || !item->isFinished()) return ACCEPT_NO;
+ if (!item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID()))
{
// cannot give away no-transfer objects
return ACCEPT_NO;
}
- LLVOAvatarSelf* avatar = gAgent.getAvatarObject();
- if(avatar && avatar->isWearingAttachment( item->getUUID() ) )
+ if (isAgentAvatarValid() && gAgentAvatarp->isWearingAttachment(item->getUUID()))
{
// You can't give objects that are attached to you
return ACCEPT_NO;
}
- if( obj && avatar )
+ if (obj && isAgentAvatarValid())
{
- if(drop)
+ if (drop)
{
- giveInventory(obj->getID(), item );
+ LLGiveInventory::doGiveInventoryItem(obj->getID(), item );
}
// *TODO: deal with all the issues surrounding multi-object
// inventory transfers.
@@ -2633,18 +2166,18 @@ EAcceptance LLToolDragAndDrop::dad3dGiveInventory(
{
lldebugs << "LLToolDragAndDrop::dad3dGiveInventory()" << llendl;
// item has to be in agent inventory.
- if(mSource != SOURCE_AGENT) return ACCEPT_NO;
+ if (mSource != SOURCE_AGENT) return ACCEPT_NO;
LLViewerInventoryItem* item;
LLViewerInventoryCategory* cat;
locateInventory(item, cat);
- if(!item || !item->isComplete()) return ACCEPT_NO;
- if(!isInventoryGiveAcceptable(item))
+ if (!item || !item->isFinished()) return ACCEPT_NO;
+ if (!LLGiveInventory::isInventoryGiveAcceptable(item))
{
return ACCEPT_NO;
}
- if(drop && obj)
+ if (drop && obj)
{
- giveInventory(obj->getID(), item);
+ LLGiveInventory::doGiveInventoryItem(obj->getID(), item);
}
// *TODO: deal with all the issues surrounding multi-object
// inventory transfers.
@@ -2655,13 +2188,13 @@ EAcceptance LLToolDragAndDrop::dad3dGiveInventoryCategory(
LLViewerObject* obj, S32 face, MASK mask, BOOL drop)
{
lldebugs << "LLToolDragAndDrop::dad3dGiveInventoryCategory()" << llendl;
- if(drop && obj)
+ if (drop && obj)
{
LLViewerInventoryItem* item;
LLViewerInventoryCategory* cat;
locateInventory(item, cat);
- if(!cat) return ACCEPT_NO;
- giveInventoryCategory(obj->getID(), cat);
+ if (!cat) return ACCEPT_NO;
+ LLGiveInventory::doGiveInventoryCategory(obj->getID(), cat);
}
// *TODO: deal with all the issues surrounding multi-object
// inventory transfers.
@@ -2676,14 +2209,14 @@ EAcceptance LLToolDragAndDrop::dad3dRezFromObjectOnLand(
LLViewerInventoryItem* item = NULL;
LLViewerInventoryCategory* cat = NULL;
locateInventory(item, cat);
- if(!item || !item->isComplete()) return ACCEPT_NO;
+ if (!item || !item->isFinished()) return ACCEPT_NO;
- if(!gAgent.allowOperation(PERM_COPY, item->getPermissions())
+ if (!gAgent.allowOperation(PERM_COPY, item->getPermissions())
|| !item->getPermissions().allowTransferTo(LLUUID::null))
{
return ACCEPT_NO_LOCKED;
}
- if(drop)
+ if (drop)
{
dropObject(obj, TRUE, TRUE, FALSE);
}
@@ -2697,8 +2230,8 @@ EAcceptance LLToolDragAndDrop::dad3dRezFromObjectOnObject(
LLViewerInventoryItem* item;
LLViewerInventoryCategory* cat;
locateInventory(item, cat);
- if(!item || !item->isComplete()) return ACCEPT_NO;
- if((mask & MASK_CONTROL))
+ if (!item || !item->isFinished()) return ACCEPT_NO;
+ if ((mask & MASK_CONTROL))
{
// *HACK: In order to resolve SL-22177, we need to block drags
// from notecards and objects onto other objects.
@@ -2706,19 +2239,19 @@ EAcceptance LLToolDragAndDrop::dad3dRezFromObjectOnObject(
// *HACK: uncomment this when appropriate
//EAcceptance rv = willObjectAcceptInventory(obj, item);
- //if(drop && (ACCEPT_YES_SINGLE <= rv))
+ //if (drop && (ACCEPT_YES_SINGLE <= rv))
//{
// dropInventory(obj, item, mSource, mSourceID);
//}
//return rv;
}
- if(!item->getPermissions().allowCopyBy(gAgent.getID(),
+ if (!item->getPermissions().allowCopyBy(gAgent.getID(),
gAgent.getGroupID())
|| !item->getPermissions().allowTransferTo(LLUUID::null))
{
return ACCEPT_NO_LOCKED;
}
- if(drop)
+ if (drop)
{
dropObject(obj, FALSE, TRUE, FALSE);
}
@@ -2734,23 +2267,23 @@ EAcceptance LLToolDragAndDrop::dad3dCategoryOnLand(
LLInventoryItem* item;
LLInventoryCategory* cat;
locateInventory(item, cat);
- if(!cat) return ACCEPT_NO;
+ if (!cat) return ACCEPT_NO;
EAcceptance rv = ACCEPT_NO;
// find all the items in the category
LLViewerInventoryCategory::cat_array_t cats;
LLViewerInventoryItem::item_array_t items;
LLDropCopyableItems droppable;
- gInventory.collectDescendentsIf(cat->getUUID(),
+ gInventory.collectDescendentsIf (cat->getUUID(),
cats,
items,
LLInventoryModel::EXCLUDE_TRASH,
droppable);
- if(items.count() > 0)
+ if (items.count() > 0)
{
rv = ACCEPT_YES_SINGLE;
}
- if((rv >= ACCEPT_YES_COPY_SINGLE) && drop)
+ if ((rv >= ACCEPT_YES_COPY_SINGLE) && drop)
{
createContainer(items, cat->getName());
return ACCEPT_NO;
@@ -2773,19 +2306,19 @@ EAcceptance LLToolDragAndDrop::dad3dAssetOnLand(
LLViewerInventoryItem::item_array_t items;
LLViewerInventoryItem::item_array_t copyable_items;
locateMultipleInventory(items, cats);
- if(!items.count()) return ACCEPT_NO;
+ if (!items.count()) return ACCEPT_NO;
EAcceptance rv = ACCEPT_NO;
for (S32 i = 0; i < items.count(); i++)
{
LLInventoryItem* item = items[i];
- if(item->getPermissions().allowCopyBy(gAgent.getID()))
+ if (item->getPermissions().allowCopyBy(gAgent.getID()))
{
copyable_items.put(item);
rv = ACCEPT_YES_SINGLE;
}
}
- if((rv >= ACCEPT_YES_COPY_SINGLE) && drop)
+ if ((rv >= ACCEPT_YES_COPY_SINGLE) && drop)
{
createContainer(copyable_items, NULL);
}
@@ -2800,20 +2333,20 @@ LLInventoryObject* LLToolDragAndDrop::locateInventory(
{
item = NULL;
cat = NULL;
- if(mCargoIDs.empty()) return NULL;
- if((mSource == SOURCE_AGENT) || (mSource == SOURCE_LIBRARY))
+ if (mCargoIDs.empty()) return NULL;
+ if ((mSource == SOURCE_AGENT) || (mSource == SOURCE_LIBRARY))
{
// The object should be in user inventory.
item = (LLViewerInventoryItem*)gInventory.getItem(mCargoIDs[mCurItemIndex]);
cat = (LLViewerInventoryCategory*)gInventory.getCategory(mCargoIDs[mCurItemIndex]);
}
- else if(mSource == SOURCE_WORLD)
+ else if (mSource == SOURCE_WORLD)
{
// This object is in some task inventory somewhere.
LLViewerObject* obj = gObjectList.findObject(mSourceID);
- if(obj)
+ if (obj)
{
- if((mCargoTypes[mCurItemIndex] == DAD_CATEGORY)
+ if ((mCargoTypes[mCurItemIndex] == DAD_CATEGORY)
|| (mCargoTypes[mCurItemIndex] == DAD_ROOT_CATEGORY))
{
cat = (LLViewerInventoryCategory*)obj->getInventoryObject(mCargoIDs[mCurItemIndex]);
@@ -2824,16 +2357,16 @@ LLInventoryObject* LLToolDragAndDrop::locateInventory(
}
}
}
- else if(mSource == SOURCE_NOTECARD)
+ else if (mSource == SOURCE_NOTECARD)
{
LLPreviewNotecard* preview = LLFloaterReg::findTypedInstance<LLPreviewNotecard>("preview_notecard", mSourceID);
- if(preview)
+ if (preview)
{
item = (LLViewerInventoryItem*)preview->getDragItem();
}
}
- if(item) return item;
- if(cat) return cat;
+ if (item) return item;
+ if (cat) return cat;
return NULL;
}
@@ -2841,8 +2374,8 @@ LLInventoryObject* LLToolDragAndDrop::locateInventory(
LLInventoryObject* LLToolDragAndDrop::locateMultipleInventory(LLViewerInventoryCategory::cat_array_t& cats,
LLViewerInventoryItem::item_array_t& items)
{
- if(mCargoIDs.count() == 0) return NULL;
- if((mSource == SOURCE_AGENT) || (mSource == SOURCE_LIBRARY))
+ if (mCargoIDs.count() == 0) return NULL;
+ if ((mSource == SOURCE_AGENT) || (mSource == SOURCE_LIBRARY))
{
// The object should be in user inventory.
for (S32 i = 0; i < mCargoIDs.count(); i++)
@@ -2859,13 +2392,13 @@ LLInventoryObject* LLToolDragAndDrop::locateMultipleInventory(LLViewerInventoryC
}
}
}
- else if(mSource == SOURCE_WORLD)
+ else if (mSource == SOURCE_WORLD)
{
// This object is in some task inventory somewhere.
LLViewerObject* obj = gObjectList.findObject(mSourceID);
- if(obj)
+ if (obj)
{
- if((mCargoType == DAD_CATEGORY)
+ if ((mCargoType == DAD_CATEGORY)
|| (mCargoType == DAD_ROOT_CATEGORY))
{
// The object should be in user inventory.
@@ -2891,17 +2424,17 @@ LLInventoryObject* LLToolDragAndDrop::locateMultipleInventory(LLViewerInventoryC
}
}
}
- else if(mSource == SOURCE_NOTECARD)
+ else if (mSource == SOURCE_NOTECARD)
{
LLPreviewNotecard* card;
card = (LLPreviewNotecard*)LLPreview::find(mSourceID);
- if(card)
+ if (card)
{
items.put((LLInventoryItem*)card->getDragItem());
}
}
- if(items.count()) return items[0];
- if(cats.count()) return cats[0];
+ if (items.count()) return items[0];
+ if (cats.count()) return cats[0];
return NULL;
}
*/