summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
Diffstat (limited to 'indra')
-rw-r--r--indra/newview/llinventorygallery.cpp29
1 files changed, 20 insertions, 9 deletions
diff --git a/indra/newview/llinventorygallery.cpp b/indra/newview/llinventorygallery.cpp
index e31b6b1527..ad4124ff5b 100644
--- a/indra/newview/llinventorygallery.cpp
+++ b/indra/newview/llinventorygallery.cpp
@@ -1061,19 +1061,30 @@ BOOL LLInventoryGalleryItem::handleHover(S32 x, S32 y, MASK mask)
{
S32 screen_x;
S32 screen_y;
- const LLInventoryItem *item = gInventory.getItem(mUUID);
-
localPointToScreen(x, y, &screen_x, &screen_y );
- if(item && LLToolDragAndDrop::getInstance()->isOverThreshold(screen_x, screen_y))
+
+ if(LLToolDragAndDrop::getInstance()->isOverThreshold(screen_x, screen_y))
{
- EDragAndDropType type = LLViewerAssetType::lookupDragAndDropType(item->getType());
- LLToolDragAndDrop::ESource src = LLToolDragAndDrop::SOURCE_LIBRARY;
- if(item->getPermissions().getOwner() == gAgent.getID())
+ const LLInventoryItem *item = gInventory.getItem(mUUID);
+ if(item)
+ {
+ EDragAndDropType type = LLViewerAssetType::lookupDragAndDropType(item->getType());
+ LLToolDragAndDrop::ESource src = LLToolDragAndDrop::SOURCE_LIBRARY;
+ if(item->getPermissions().getOwner() == gAgent.getID())
+ {
+ src = LLToolDragAndDrop::SOURCE_AGENT;
+ }
+ LLToolDragAndDrop::getInstance()->beginDrag(type, item->getUUID(), src);
+ return LLToolDragAndDrop::getInstance()->handleHover(x, y, mask );
+ }
+
+ const LLInventoryCategory *cat = gInventory.getCategory(mUUID);
+ if(cat && gInventory.isObjectDescendentOf(mUUID, gInventory.getRootFolderID())
+ && !LLFolderType::lookupIsProtectedType((cat)->getPreferredType()))
{
- src = LLToolDragAndDrop::SOURCE_AGENT;
+ LLToolDragAndDrop::getInstance()->beginDrag(LLViewerAssetType::lookupDragAndDropType(cat->getType()), cat->getUUID(), LLToolDragAndDrop::SOURCE_AGENT);
+ return LLToolDragAndDrop::getInstance()->handleHover(x, y, mask );
}
- LLToolDragAndDrop::getInstance()->beginDrag(type, item->getUUID(), src);
- return LLToolDragAndDrop::getInstance()->handleHover(x, y, mask );
}
}
return LLUICtrl::handleHover(x,y,mask);