From 2cde11b7baba1cb373af7c669339f85dfefb8b76 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Wed, 1 Jul 2015 20:07:56 +0300 Subject: MAINT-2864 FIXED Viewer crashes when clicking "Ok" on "Delete Selected Item" modal from a non existant object. --- indra/newview/llinventoryfunctions.cpp | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) (limited to 'indra/newview/llinventoryfunctions.cpp') diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp index 4075c329b9..58cab8a058 100755 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -674,6 +674,19 @@ void copy_folder_to_outbox(LLInventoryCategory* inv_cat, const LLUUID& dest_fold open_outbox(); } +static void items_removal_confirmation(const LLSD& notification, const LLSD& response, LLHandle root) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if (option == 0 && !root.isDead() && !root.get()->isDead()) + { + LLFolderView* folder_root = root.get(); + //Need to remove item from DND before item is removed from root folder view + //because once removed from root folder view the item is no longer a selected item + LLInventoryAction::removeItemFromDND(folder_root); + folder_root->removeSelectedItems(); + } +} + ///---------------------------------------------------------------------------- /// LLInventoryCollectFunctor implementations ///---------------------------------------------------------------------------- @@ -1072,7 +1085,7 @@ void LLInventoryAction::doToSelected(LLInventoryModel* model, LLFolderView* root { LLSD args; args["QUESTION"] = LLTrans::getString(root->getSelectedCount() > 1 ? "DeleteItems" : "DeleteItem"); - LLNotificationsUtil::add("DeleteItems", args, LLSD(), boost::bind(&LLInventoryAction::onItemsRemovalConfirmation, _1, _2, root)); + LLNotificationsUtil::add("DeleteItems", args, LLSD(), boost::bind(&items_removal_confirmation, _1, _2, root->getHandle())); return; } if (("copy" == action) || ("cut" == action)) @@ -1178,15 +1191,3 @@ void LLInventoryAction::removeItemFromDND(LLFolderView* root) } } } - -void LLInventoryAction::onItemsRemovalConfirmation( const LLSD& notification, const LLSD& response, LLFolderView* root ) -{ - S32 option = LLNotificationsUtil::getSelectedOption(notification, response); - if (option == 0) - { - //Need to remove item from DND before item is removed from root folder view - //because once removed from root folder view the item is no longer a selected item - removeItemFromDND(root); - root->removeSelectedItems(); - } -} -- cgit v1.2.3 From 43561e558621c98117b5fc5263d5e4e40998173e Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Tue, 4 Aug 2015 18:14:50 +0300 Subject: merge conflict fix --- indra/newview/llinventoryfunctions.cpp | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) (limited to 'indra/newview/llinventoryfunctions.cpp') diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp index 68e0c26449..991c567546 100755 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -959,19 +959,6 @@ void copy_folder_to_outbox(LLInventoryCategory* inv_cat, const LLUUID& dest_fold open_outbox(); } -static void items_removal_confirmation(const LLSD& notification, const LLSD& response, LLHandle root) -{ - S32 option = LLNotificationsUtil::getSelectedOption(notification, response); - if (option == 0 && !root.isDead() && !root.get()->isDead()) - { - LLFolderView* folder_root = root.get(); - //Need to remove item from DND before item is removed from root folder view - //because once removed from root folder view the item is no longer a selected item - LLInventoryAction::removeItemFromDND(folder_root); - folder_root->removeSelectedItems(); - } -} - ///---------------------------------------------------------------------------- // Marketplace functions // @@ -2486,7 +2473,7 @@ void LLInventoryAction::doToSelected(LLInventoryModel* model, LLFolderView* root { LLSD args; args["QUESTION"] = LLTrans::getString(root->getSelectedCount() > 1 ? "DeleteItems" : "DeleteItem"); - LLNotificationsUtil::add("DeleteItems", args, LLSD(), boost::bind(&items_removal_confirmation, _1, _2, root->getHandle())); + LLNotificationsUtil::add("DeleteItems", args, LLSD(), boost::bind(&LLInventoryAction::onItemsRemovalConfirmation, _1, _2, root->getHandle())); // Note: marketplace listings will be updated in the callback if delete confirmed return; } @@ -2596,9 +2583,21 @@ void LLInventoryAction::removeItemFromDND(LLFolderView* root) } } - - // Update the marketplace listings that have been affected by the operation - updateMarketplaceFolders(); +void LLInventoryAction::onItemsRemovalConfirmation(const LLSD& notification, const LLSD& response, LLHandle root) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if (option == 0 && !root.isDead() && !root.get()->isDead()) + { + LLFolderView* folder_root = root.get(); + //Need to remove item from DND before item is removed from root folder view + //because once removed from root folder view the item is no longer a selected item + LLInventoryAction::removeItemFromDND(folder_root); + folder_root->removeSelectedItems(); + + // Update the marketplace listings that have been affected by the operation + LLInventoryAction::updateMarketplaceFolders(); + } +} void LLInventoryAction::buildMarketplaceFolders(LLFolderView* root) { -- cgit v1.2.3