diff options
| author | Merov Linden <merov@lindenlab.com> | 2014-08-19 22:34:06 -0700 | 
|---|---|---|
| committer | Merov Linden <merov@lindenlab.com> | 2014-08-19 22:34:06 -0700 | 
| commit | 51e8b7fae6ff14c58bf32ef740a60386bc15baee (patch) | |
| tree | ea6c3b90df1bf79f9891f0a6489fb0342256bc2c /indra/newview | |
| parent | 9e7caa2e1439eb75df30c0c03aab782c414b44bd (diff) | |
DD-129 : Prevent DAMA when dropping under the root of a listing, even active. Finer granularity of DAMA for all drop and cut and paste cases.
Diffstat (limited to 'indra/newview')
| -rwxr-xr-x | indra/newview/llinventorybridge.cpp | 9 | ||||
| -rwxr-xr-x | indra/newview/llinventoryfunctions.cpp | 3 | ||||
| -rwxr-xr-x | indra/newview/llmarketplacefunctions.cpp | 7 | ||||
| -rwxr-xr-x | indra/newview/llmarketplacefunctions.h | 1 | 
4 files changed, 15 insertions, 5 deletions
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index ad462648c1..51d1f088e0 100755 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -271,7 +271,8 @@ BOOL LLInvFVBridge::cutToClipboard()          const LLUUID &marketplacelistings_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false);          const BOOL cut_from_marketplacelistings = gInventory.isObjectDescendentOf(mUUID, marketplacelistings_id); -        if (cut_from_marketplacelistings && LLMarketplaceData::instance().isInActiveFolder(mUUID)) +        if (cut_from_marketplacelistings && (LLMarketplaceData::instance().isInActiveFolder(mUUID) || +                                             LLMarketplaceData::instance().isListedAndActive(mUUID)))          {              // Prompt the user if cutting from a marketplace active listing              LLNotificationsUtil::add("ConfirmMerchantActiveChange", LLSD(), LLSD(), boost::bind(&LLInvFVBridge::callback_cutToClipboard, this, _1, _2)); @@ -2493,7 +2494,8 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,              // Dropping in or out of marketplace needs (sometimes) confirmation              if (user_confirm && (move_is_from_marketplacelistings || move_is_into_marketplacelistings))              { -                if (move_is_from_marketplacelistings && LLMarketplaceData::instance().isInActiveFolder(cat_id)) +                if (move_is_from_marketplacelistings && (LLMarketplaceData::instance().isInActiveFolder(cat_id) || +                                                         LLMarketplaceData::instance().isListedAndActive(cat_id)))                  {                      if (LLMarketplaceData::instance().isListed(cat_id) || LLMarketplaceData::instance().isVersionFolder(cat_id))                      { @@ -4283,7 +4285,8 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,              // Dropping in or out of marketplace needs (sometimes) confirmation              if (user_confirm && (move_is_from_marketplacelistings || move_is_into_marketplacelistings))              { -                if ((move_is_from_marketplacelistings && LLMarketplaceData::instance().isInActiveFolder(inv_item->getUUID())) || +                if ((move_is_from_marketplacelistings && (LLMarketplaceData::instance().isInActiveFolder(inv_item->getUUID()) +                                                       || LLMarketplaceData::instance().isListedAndActive(inv_item->getUUID()))) ||                      (move_is_into_marketplacelistings && LLMarketplaceData::instance().isInActiveFolder(mUUID)))                  {                      LLNotificationsUtil::add("ConfirmMerchantActiveChange", LLSD(), LLSD(), boost::bind(&LLFolderBridge::callback_dropItemIntoFolder, this, _1, _2, inv_item)); diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp index 98f74bb1a6..8ea8e5998e 100755 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -1973,7 +1973,8 @@ void LLInventoryAction::doToSelected(LLInventoryModel* model, LLFolderView* root                  }                  // Note: we do not prompt for change when opening items (e.g. textures or note cards) on the marketplace...              } -            else if (LLMarketplaceData::instance().isInActiveFolder(viewModel->getUUID())) +            else if (LLMarketplaceData::instance().isInActiveFolder(viewModel->getUUID()) || +                     LLMarketplaceData::instance().isListedAndActive(viewModel->getUUID()))              {                  // If item is in active listing, further confirmation is required                  if ((("cut" == action) || ("delete" == action)) && (LLMarketplaceData::instance().isListed(viewModel->getUUID()) || LLMarketplaceData::instance().isVersionFolder(viewModel->getUUID()))) diff --git a/indra/newview/llmarketplacefunctions.cpp b/indra/newview/llmarketplacefunctions.cpp index b37ae30021..a23295ec20 100755 --- a/indra/newview/llmarketplacefunctions.cpp +++ b/indra/newview/llmarketplacefunctions.cpp @@ -1431,6 +1431,11 @@ bool LLMarketplaceData::isListed(const LLUUID& folder_id)      return (it != mMarketplaceItems.end());  } +bool LLMarketplaceData::isListedAndActive(const LLUUID& folder_id) +{ +    return (isListed(folder_id) && getActivationState(folder_id)); +} +  bool LLMarketplaceData::isVersionFolder(const LLUUID& folder_id)  {      marketplace_items_list_t::iterator it = mMarketplaceItems.begin(); @@ -1451,7 +1456,7 @@ bool LLMarketplaceData::isInActiveFolder(const LLUUID& obj_id)      LLUUID listing_uuid = nested_parent_id(obj_id, depth);      bool active = getActivationState(listing_uuid);      LLUUID version_uuid = getVersionFolder(listing_uuid); -    return (active && ((obj_id == listing_uuid) || (obj_id == version_uuid) || gInventory.isObjectDescendentOf(obj_id, version_uuid))); +    return (active && ((obj_id == version_uuid) || gInventory.isObjectDescendentOf(obj_id, version_uuid)));  }  // Private Modifiers diff --git a/indra/newview/llmarketplacefunctions.h b/indra/newview/llmarketplacefunctions.h index fd3d9ccfdb..e40eca9176 100755 --- a/indra/newview/llmarketplacefunctions.h +++ b/indra/newview/llmarketplacefunctions.h @@ -197,6 +197,7 @@ public:      // Probe the Marketplace data set to identify folders      bool isListed(const LLUUID& folder_id); // returns true if folder_id is a Listing folder +    bool isListedAndActive(const LLUUID& folder_id); // returns true if folder_id is an active (listed) Listing folder      bool isVersionFolder(const LLUUID& folder_id); // returns true if folder_id is a Version folder      bool isInActiveFolder(const LLUUID& obj_id); // returns true if the obj_id is buried in an active version folder  | 
