diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 774932a198..a4c57a7c32 100755
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -673,6 +673,22 @@ void LLInvFVBridge::checkInventoryLinkReplace(menuentry_vec_t& items, menuentry_
}
//
+// Move to default folder
+void LLInvFVBridge::checkMoveToDefaultFolder(menuentry_vec_t& items, menuentry_vec_t& disables_items)
+{
+ const LLInventoryObject* obj = getInventoryObject();
+
+ if (isAgentInventory() && !isOutboxFolder() && obj &&
+ obj->getActualType() != LLAssetType::AT_CATEGORY &&
+ obj->getActualType() != LLAssetType::AT_LINK_FOLDER &&
+ obj->getActualType() != LLAssetType::AT_LINK
+ )
+ {
+ items.push_back(std::string("Move to Default Folder"));
+ }
+}
+//
+
// Helper for commonly-used entries
void LLInvFVBridge::getClipboardEntries(bool show_asset_id,
menuentry_vec_t &items,
@@ -860,6 +876,9 @@ void LLInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
// Inventory Links Replace
checkInventoryLinkReplace(items, disabled_items);
+ // Move to default folder
+ checkMoveToDefaultFolder(items, disabled_items);
+
hide_context_entries(menu, items, disabled_items);
}
@@ -4892,6 +4911,9 @@ void LLTextureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
// Inventory Links Replace
checkInventoryLinkReplace(items, disabled_items);
+ // Move to default folder
+ checkMoveToDefaultFolder(items, disabled_items);
+
hide_context_entries(menu, items, disabled_items);
}
@@ -4965,6 +4987,9 @@ void LLSoundBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
// Inventory Links Replace
checkInventoryLinkReplace(items, disabled_items);
+ // Move to default folder
+ checkMoveToDefaultFolder(items, disabled_items);
+
hide_context_entries(menu, items, disabled_items);
}
@@ -5037,6 +5062,9 @@ void LLLandmarkBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
// Inventory Links Replace
checkInventoryLinkReplace(items, disabled_items);
+ // Move to default folder
+ checkMoveToDefaultFolder(items, disabled_items);
+
hide_context_entries(menu, items, disabled_items);
}
@@ -5364,6 +5392,9 @@ void LLCallingCardBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
// Inventory Links Replace
checkInventoryLinkReplace(items, disabled_items);
+ // Move to default folder
+ checkMoveToDefaultFolder(items, disabled_items);
+
hide_context_entries(menu, items, disabled_items);
}
@@ -5616,6 +5647,9 @@ void LLGestureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
// Inventory Links Replace
checkInventoryLinkReplace(items, disabled_items);
+ // Move to default folder
+ checkMoveToDefaultFolder(items, disabled_items);
+
hide_context_entries(menu, items, disabled_items);
}
@@ -5674,6 +5708,9 @@ void LLAnimationBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
// Inventory Links Replace
checkInventoryLinkReplace(items, disabled_items);
+ // Move to default folder
+ checkMoveToDefaultFolder(items, disabled_items);
+
hide_context_entries(menu, items, disabled_items);
}
@@ -6142,6 +6179,9 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
// Inventory Links Replace
checkInventoryLinkReplace(items, disabled_items);
+ // Move to default folder
+ checkMoveToDefaultFolder(items, disabled_items);
+
hide_context_entries(menu, items, disabled_items);
}
@@ -6396,6 +6436,9 @@ void LLWearableBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
// Inventory Links Replace
checkInventoryLinkReplace(items, disabled_items);
+ // Move to default folder
+ checkMoveToDefaultFolder(items, disabled_items);
+
hide_context_entries(menu, items, disabled_items);
}
@@ -6623,6 +6666,9 @@ void LLMeshBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
// Inventory Links Replace
checkInventoryLinkReplace(items, disabled_items);
+ // Move to default folder
+ checkMoveToDefaultFolder(items, disabled_items);
+
hide_context_entries(menu, items, disabled_items);
}
diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h
index 3b12ffac8b..3d83904156 100755
--- a/indra/newview/llinventorybridge.h
+++ b/indra/newview/llinventorybridge.h
@@ -175,6 +175,9 @@ protected:
// Inventory Links Replace
void checkInventoryLinkReplace(menuentry_vec_t& items, menuentry_vec_t& disables_items);
+ // Move to default folder
+ void checkMoveToDefaultFolder(menuentry_vec_t& items, menuentry_vec_t& disables_items);
+
virtual BOOL isItemPermissive() const;
static void changeItemParent(LLInventoryModel* model,
LLViewerInventoryItem* item,
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index 17cdba5852..658d7cefac 100755
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -1207,6 +1207,53 @@ void LLInventoryAction::doToSelected(LLInventoryModel* model, LLFolderView* root
return;
}
//
+ // Move to default folder
+ if ("move_to_default_folder" == action)
+ {
+ std::set selected_items = root->getSelectionList();
+ std::set::iterator set_iter;
+ LLUUID outbox_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_OUTBOX);
+ LLUUID cof_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
+
+ for (set_iter = selected_items.begin(); set_iter != selected_items.end(); ++set_iter)
+ {
+ LLFolderViewItem* folder_item = *set_iter;
+ if (!folder_item)
+ {
+ continue;
+ }
+
+ LLInvFVBridge* bridge = (LLInvFVBridge*)folder_item->getViewModelItem();
+ if (!bridge)
+ {
+ continue;
+ }
+
+ LLInventoryObject* obj = bridge->getInventoryObject();
+ if (!obj)
+ {
+ continue;
+ }
+
+ if (obj->getActualType() == LLAssetType::AT_CATEGORY)
+ {
+ continue;
+ }
+
+ if (gInventory.isObjectDescendentOf(obj->getUUID(), outbox_folder_id) ||
+ gInventory.isObjectDescendentOf(obj->getUUID(), cof_folder_id))
+ {
+ continue;
+ }
+
+ LLUUID target_cat_id = gInventory.findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(obj->getActualType()));
+ if (target_cat_id.notNull()
+ {
+ move_inventory_item(gAgentID, gAgentSessionID, obj->getUUID(), target_cat_id, obj->getName(), LLPointer(NULL));
+ }
+ }
+ }
+ //
static const std::string change_folder_string = "change_folder_type_";
if (action.length() > change_folder_string.length() &&
diff --git a/indra/newview/skins/default/xui/de/menu_inventory.xml b/indra/newview/skins/default/xui/de/menu_inventory.xml
index fdeb9ed648..0e3d842e97 100755
--- a/indra/newview/skins/default/xui/de/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/de/menu_inventory.xml
@@ -68,6 +68,7 @@
+
diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml
index 9b5520e5c3..9ee6a27eb4 100755
--- a/indra/newview/skins/default/xui/en/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory.xml
@@ -527,6 +527,14 @@
function="Inventory.DoToSelected"
parameter="delete" />
+
+
+