From ef4a84dfecb695f1d3a0560efa828c53ed51dd60 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Tue, 2 Sep 2014 09:07:55 +0200 Subject: [PATCH] FIRE-14517: "Move to Default Folder" can be used to move items out of protected folders --- indra/newview/llinventorybridge.cpp | 18 +++++++++++++----- indra/newview/llinventorybridge.h | 2 +- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index a4c57a7c32..cb5b23c790 100755 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -678,7 +678,7 @@ void LLInvFVBridge::checkMoveToDefaultFolder(menuentry_vec_t& items, menuentry_v { const LLInventoryObject* obj = getInventoryObject(); - if (isAgentInventory() && !isOutboxFolder() && obj && + if (isAgentInventory() && !isOutboxFolder() && !isProtectedFolder(true) && obj && obj->getActualType() != LLAssetType::AT_CATEGORY && obj->getActualType() != LLAssetType::AT_LINK_FOLDER && obj->getActualType() != LLAssetType::AT_LINK @@ -1085,19 +1085,27 @@ BOOL LLInvFVBridge::isCOFFolder() const } // Client LSL Bridge (also for #AO) -BOOL LLInvFVBridge::isProtectedFolder() const +BOOL LLInvFVBridge::isProtectedFolder(bool ignore_setting /*= false*/) const { const LLInventoryModel* model = getInventoryModel(); - if(!model) return FALSE; + if (!model) + { + return FALSE; + } + if ((mUUID == FSLSLBridge::instance().getBridgeFolder() || model->isObjectDescendentOf(mUUID, FSLSLBridge::instance().getBridgeFolder())) - && gSavedPerAccountSettings.getBOOL("ProtectBridgeFolder")) + && (gSavedPerAccountSettings.getBOOL("ProtectBridgeFolder") || ignore_setting)) + { return TRUE; + } if ((mUUID == AOEngine::instance().getAOFolder() || model->isObjectDescendentOf(mUUID, AOEngine::instance().getAOFolder())) - && gSavedPerAccountSettings.getBOOL("ProtectAOFolders")) + && (gSavedPerAccountSettings.getBOOL("ProtectAOFolders") || ignore_setting)) + { return TRUE; + } return FALSE; } diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h index 3d83904156..7232457a99 100755 --- a/indra/newview/llinventorybridge.h +++ b/indra/newview/llinventorybridge.h @@ -165,7 +165,7 @@ protected: // [/SL:KB] BOOL isCOFFolder() const; // true if COF or descendent of // Client LSL Bridge - BOOL isProtectedFolder() const; + BOOL isProtectedFolder(bool ignore_setting = false) const; // BOOL isInboxFolder() const; // true if COF or descendent of marketplace inbox BOOL isOutboxFolder() const; // true if COF or descendent of marketplace outbox