summaryrefslogtreecommitdiff
path: root/indra/newview/llappearancemgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llappearancemgr.cpp')
-rw-r--r--indra/newview/llappearancemgr.cpp55
1 files changed, 35 insertions, 20 deletions
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 1050deaa27..c06098689d 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -39,7 +39,7 @@
#include "llgesturemgr.h"
#include "llinventorybridge.h"
#include "llinventoryobserver.h"
-#include "llnotifications.h"
+#include "llnotificationsutil.h"
#include "llsidepanelappearance.h"
#include "llsidetray.h"
#include "llvoavatar.h"
@@ -512,6 +512,21 @@ void LLAppearanceManager::updateCOF(const LLUUID& category, bool append)
{
const LLUUID cof = getCOF();
+ // Deactivate currently active gestures in the COF, if replacing outfit
+ if (!append)
+ {
+ LLInventoryModel::item_array_t gest_items;
+ getDescendentsOfAssetType(cof, gest_items, LLAssetType::AT_GESTURE, false);
+ for(S32 i = 0; i < gest_items.count(); ++i)
+ {
+ LLViewerInventoryItem *gest_item = gest_items.get(i);
+ if ( LLGestureManager::instance().isGestureActive( gest_item->getLinkedUUID()) )
+ {
+ LLGestureManager::instance().deactivateGesture( gest_item->getLinkedUUID() );
+ }
+ }
+ }
+
// Collect and filter descendents to determine new COF contents.
// - Body parts: always include COF contents as a fallback in case any
@@ -560,30 +575,31 @@ void LLAppearanceManager::updateCOF(const LLUUID& category, bool append)
linkAll(cof, gest_items, link_waiter);
// Add link to outfit if category is an outfit.
- const LLViewerInventoryCategory* catp = gInventory.getCategory(category);
- LLSidepanelAppearance* panel_appearance = dynamic_cast<LLSidepanelAppearance *>(LLSideTray::getInstance()->getPanel("sidepanel_appearance"));
-
- if (!append && catp && catp->getPreferredType() == LLFolderType::FT_OUTFIT)
+ LLViewerInventoryCategory* catp = gInventory.getCategory(category);
+ if (!append)
{
- link_inventory_item(gAgent.getID(), category, cof, catp->getName(),
- LLAssetType::AT_LINK_FOLDER, link_waiter);
-
- // Update the current outfit name of the appearance sidepanel.
- if (panel_appearance)
+ std::string new_outfit_name = "";
+ if (catp && catp->getPreferredType() == LLFolderType::FT_OUTFIT)
{
- panel_appearance->refreshCurrentOutfitName(catp->getName());
+ link_inventory_item(gAgent.getID(), category, cof, catp->getName(),
+ LLAssetType::AT_LINK_FOLDER, link_waiter);
+ new_outfit_name = catp->getName();
}
+ updatePanelOutfitName(new_outfit_name);
}
- else
+}
+
+void LLAppearanceManager::updatePanelOutfitName(const std::string& name)
+{
+ LLSidepanelAppearance* panel_appearance =
+ dynamic_cast<LLSidepanelAppearance *>(LLSideTray::getInstance()->getPanel("sidepanel_appearance"));
+ if (panel_appearance)
{
- // Update the current outfit name of the appearance sidepanel.
- if (panel_appearance)
- {
- panel_appearance->refreshCurrentOutfitName();
- }
+ panel_appearance->refreshCurrentOutfitName(name);
}
}
+
void LLAppearanceManager::updateAgentWearables(LLWearableHoldingPattern* holder, bool append)
{
lldebugs << "updateAgentWearables()" << llendl;
@@ -639,7 +655,7 @@ void LLAppearanceManager::updateAppearanceFromCOF()
if( !wear_items.count() && !obj_items.count() && !gest_items.count())
{
- LLNotifications::instance().add("CouldNotPutOnOutfit");
+ LLNotificationsUtil::add("CouldNotPutOnOutfit");
return;
}
@@ -858,7 +874,7 @@ bool areMatchingWearables(const LLViewerInventoryItem *a, const LLViewerInventor
void LLAppearanceManager::addCOFItemLink(const LLUUID &item_id, bool do_update )
{
const LLInventoryItem *item = gInventory.getItem(item_id);
- addCOFItemLink(item);
+ addCOFItemLink(item, do_update);
}
void LLAppearanceManager::addCOFItemLink(const LLInventoryItem *item, bool do_update )
@@ -1029,7 +1045,6 @@ void LLAppearanceManager::registerAttachment(const LLUUID& item_id)
if (mAttachmentInvLinkEnabled)
{
- //LLAppearanceManager::dumpCat(LLAppearanceManager::getCOF(),"Adding attachment link:");
LLAppearanceManager::addCOFItemLink(item_id, false); // Add COF link for item.
}
else