diff options
-rw-r--r-- | indra/newview/llmaterialeditor.cpp | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/indra/newview/llmaterialeditor.cpp b/indra/newview/llmaterialeditor.cpp index 27b5d508e0..dfb43dfe0d 100644 --- a/indra/newview/llmaterialeditor.cpp +++ b/indra/newview/llmaterialeditor.cpp @@ -941,7 +941,27 @@ bool LLMaterialEditor::saveIfNeeded() create_inventory_item(gAgent.getID(), gAgent.getSessionID(), parent, tid, mMaterialName, res_desc, LLAssetType::AT_MATERIAL, LLInventoryType::IT_MATERIAL, subtype, next_owner_perm, - new LLBoostFuncInventoryCallback([output = buffer](LLUUID const& inv_item_id) { + new LLBoostFuncInventoryCallback([output = buffer](LLUUID const& inv_item_id) + { + LLViewerInventoryItem* item = gInventory.getItem(inv_item_id); + if (item) + { + // create_inventory_item doesn't allow presetting some permissions, fix it now + LLPermissions perm = item->getPermissions(); + if (perm.getMaskEveryone() != LLFloaterPerms::getEveryonePerms("Uploads") + || perm.getMaskGroup() != LLFloaterPerms::getGroupPerms("Uploads")) + { + perm.setMaskEveryone(LLFloaterPerms::getEveryonePerms("Uploads")); + perm.setMaskGroup(LLFloaterPerms::getGroupPerms("Uploads")); + + item->setPermissions(perm); + + item->updateServer(FALSE); + gInventory.updateItem(item); + gInventory.notifyObservers(); + } + } + // from reference in LLSettingsVOBase::createInventoryItem()/updateInventoryItem() LLResourceUploadInfo::ptr_t uploadInfo = std::make_shared<LLBufferedAssetUploadInfo>( @@ -966,7 +986,7 @@ bool LLMaterialEditor::saveIfNeeded() } LLViewerAssetUpload::EnqueueInventoryUpload(agent_url, uploadInfo); } - }) + }) ); // We do not update floater with uploaded asset yet, so just close it. |