summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormaxim_productengine <mnikolenko@productengine.com>2018-05-02 12:24:14 +0300
committermaxim_productengine <mnikolenko@productengine.com>2018-05-02 12:24:14 +0300
commit46cc8496f0c2405342b0892a673bcf69cc13847b (patch)
tree0adb60347ae73cc949912149625586da298d2bdc
parent4e1f8165cd6eaf4a55c68668b90d0833993b1521 (diff)
MAINT-8553 Allow copy a link or copy a folder containing a link in inventory.
-rw-r--r--indra/newview/app_settings/settings.xml2
-rw-r--r--indra/newview/llinventorybridge.cpp26
-rw-r--r--indra/newview/llinventoryfunctions.cpp6
3 files changed, 19 insertions, 15 deletions
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 45e2fc9bf0..379c05a66c 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -4798,7 +4798,7 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>0</integer>
+ <integer>1</integer>
</map>
<key>InventoryOutboxDisplayBoth</key>
<map>
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 67b51f11b3..29e63e4bca 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -779,6 +779,14 @@ void LLInvFVBridge::getClipboardEntries(bool show_asset_id,
if (obj)
{
+
+ items.push_back(std::string("Copy Separator"));
+ items.push_back(std::string("Copy"));
+ if (!isItemCopyable())
+ {
+ disabled_items.push_back(std::string("Copy"));
+ }
+
if (obj->getIsLinkType())
{
items.push_back(std::string("Find Original"));
@@ -821,13 +829,6 @@ void LLInvFVBridge::getClipboardEntries(bool show_asset_id,
disabled_items.push_back(std::string("Copy Asset UUID"));
}
}
- items.push_back(std::string("Copy Separator"));
-
- items.push_back(std::string("Copy"));
- if (!isItemCopyable())
- {
- disabled_items.push_back(std::string("Copy"));
- }
items.push_back(std::string("Cut"));
if (!isItemMovable() || !isItemRemovable())
@@ -2104,12 +2105,6 @@ BOOL LLItemBridge::isItemCopyable() const
return FALSE;
}
- // You can never copy a link.
- if (item->getIsLinkType())
- {
- return FALSE;
- }
-
return item->getPermissions().allowCopyBy(gAgent.getID()) || gSavedSettings.getBOOL("InventoryLinking");
}
return FALSE;
@@ -3812,6 +3807,11 @@ void LLFolderBridge::perform_pasteFromClipboard()
break;
}
}
+ else if (item->getIsLinkType())
+ {
+ link_inventory_object(parent_id, item_id,
+ LLPointer<LLInventoryCallback>(NULL));
+ }
else
{
copy_inventory_item(
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index e056ccebee..4914490319 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -425,7 +425,11 @@ void copy_inventory_category(LLInventoryModel* model,
LLInventoryItem* item = *iter;
LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(boost::bind(update_folder_cb, new_cat_uuid));
- if (!item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID(), gAgent.getGroupID()))
+ if (item->getIsLinkType())
+ {
+ link_inventory_object(new_cat_uuid, item->getLinkedUUID(), cb);
+ }
+ else if(!item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID(), gAgent.getGroupID()))
{
// If the item is nocopy, we do nothing or, optionally, move it
if (move_no_copy_items)