summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMnikolenko Productengine <mnikolenko@productengine.com>2017-07-18 16:17:59 +0300
committerMnikolenko Productengine <mnikolenko@productengine.com>2017-07-18 16:17:59 +0300
commitc55d9a59a25cbc311c63ca8bfee0189b090ff99a (patch)
treeef761c41412a5b65a402ff47cf45d8137308218b
parentd5a2a71327537393b0c97eed2a575eb7f47759f6 (diff)
MAINT-7607 FIXED Viewer crashes when double clicking on scroll bar arrow in Outfit Gallery tab
-rw-r--r--indra/newview/lloutfitgallery.cpp25
-rw-r--r--indra/newview/lloutfitgallery.h7
2 files changed, 16 insertions, 16 deletions
diff --git a/indra/newview/lloutfitgallery.cpp b/indra/newview/lloutfitgallery.cpp
index 31e89c0ed0..5518656f3f 100644
--- a/indra/newview/lloutfitgallery.cpp
+++ b/indra/newview/lloutfitgallery.cpp
@@ -344,7 +344,7 @@ void LLOutfitGallery::removeFromLastRow(LLOutfitGalleryItem* item)
mItemPanels.pop_back();
}
-LLOutfitGalleryItem* LLOutfitGallery::buildGalleryItem(std::string name)
+LLOutfitGalleryItem* LLOutfitGallery::buildGalleryItem(std::string name, LLUUID outfit_id)
{
LLOutfitGalleryItem::Params giparams;
LLOutfitGalleryItem* gitem = LLUICtrlFactory::create<LLOutfitGalleryItem>(giparams);
@@ -353,6 +353,7 @@ LLOutfitGalleryItem* LLOutfitGallery::buildGalleryItem(std::string name)
gitem->setFollowsLeft();
gitem->setFollowsTop();
gitem->setOutfitName(name);
+ gitem->setUUID(outfit_id);
return gitem;
}
@@ -511,7 +512,7 @@ void LLOutfitGallery::updateAddedCategory(LLUUID cat_id)
if (!cat) return;
std::string name = cat->getName();
- LLOutfitGalleryItem* item = buildGalleryItem(name);
+ LLOutfitGalleryItem* item = buildGalleryItem(name, cat_id);
mOutfitMap.insert(LLOutfitGallery::outfit_map_value_t(cat_id, item));
item->setRightMouseDownCallback(boost::bind(&LLOutfitListBase::outfitRightClickCallBack, this,
_1, _2, _3, cat_id));
@@ -661,7 +662,8 @@ LLOutfitGalleryItem::LLOutfitGalleryItem(const Params& p)
mSelected(false),
mWorn(false),
mDefaultImage(true),
- mOutfitName("")
+ mOutfitName(""),
+ mUUID(LLUUID())
{
buildFromFile("panel_outfit_gallery_item.xml");
}
@@ -745,23 +747,20 @@ BOOL LLOutfitGalleryItem::handleRightMouseDown(S32 x, S32 y, MASK mask)
return LLUICtrl::handleRightMouseDown(x, y, mask);
}
-BOOL LLOutfitGallery::handleDoubleClick(S32 x, S32 y, MASK mask)
+BOOL LLOutfitGalleryItem::handleDoubleClick(S32 x, S32 y, MASK mask)
{
LLTabContainer* appearence_tabs = LLPanelOutfitsInventory::findInstance()->getChild<LLTabContainer>("appearance_tabs");
- LLPanel* panel = NULL;
- LLAccordionCtrl* accordion = NULL;
- if (appearence_tabs != NULL)
+ if (appearence_tabs && (mUUID != LLUUID()))
{
appearence_tabs->selectTabByName("outfitslist_tab");
- panel = appearence_tabs->getCurrentPanel();
- if (panel != NULL)
+ LLPanel* panel = appearence_tabs->getCurrentPanel();
+ if (panel)
{
- accordion = panel->getChild<LLAccordionCtrl>("outfits_accordion");
+ LLAccordionCtrl* accordion = panel->getChild<LLAccordionCtrl>("outfits_accordion");
LLOutfitsList* outfit_list = dynamic_cast<LLOutfitsList*>(panel);
if (accordion != NULL && outfit_list != NULL)
{
- LLUUID item_id = getSelectedOutfitUUID();
- outfit_list->setSelectedOutfitByUUID(item_id);
+ outfit_list->setSelectedOutfitByUUID(mUUID);
LLAccordionCtrlTab* tab = accordion->getSelectedTab();
tab->showAndFocusHeader();
return TRUE;
@@ -769,7 +768,7 @@ BOOL LLOutfitGallery::handleDoubleClick(S32 x, S32 y, MASK mask)
}
}
- return LLUICtrl::handleDoubleClick(x, y, mask);
+ return LLPanel::handleDoubleClick(x, y, mask);
}
void LLOutfitGalleryItem::setImageAssetId(LLUUID image_asset_id)
diff --git a/indra/newview/lloutfitgallery.h b/indra/newview/lloutfitgallery.h
index 37e75f1109..2566247072 100644
--- a/indra/newview/lloutfitgallery.h
+++ b/indra/newview/lloutfitgallery.h
@@ -115,8 +115,6 @@ public:
void onBeforeOutfitSnapshotSave();
void onAfterOutfitSnapshotSave();
- /*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
-
protected:
/*virtual*/ void onHighlightBaseOutfit(LLUUID base_id, LLUUID prev_id);
/*virtual*/ void onSetSelectedOutfitByUUID(const LLUUID& outfit_uuid);
@@ -150,7 +148,7 @@ private:
void updateRowsIfNeeded();
void updateGalleryWidth();
- LLOutfitGalleryItem* buildGalleryItem(std::string name);
+ LLOutfitGalleryItem* buildGalleryItem(std::string name, LLUUID outfit_id);
void onTextureSelectionChanged(LLInventoryItem* itemp);
@@ -258,6 +256,7 @@ public:
/*virtual*/ void draw();
/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
/*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
+ /*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
void setDefaultImage();
void setImageAssetId(LLUUID asset_id);
@@ -265,6 +264,7 @@ public:
void setOutfitName(std::string name);
void setOutfitWorn(bool value);
void setSelected(bool value);
+ void setUUID(LLUUID outfit_id) {mUUID = outfit_id;}
std::string getItemName() {return mOutfitName;}
bool isDefaultImage() {return mDefaultImage;}
@@ -274,6 +274,7 @@ public:
private:
LLPointer<LLViewerFetchedTexture> mTexturep;
+ LLUUID mUUID;
LLUUID mImageAssetId;
LLTextBox* mOutfitNameText;
LLTextBox* mOutfitWornText;