summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llappearancemgr.cpp24
-rw-r--r--indra/newview/llappearancemgr.h7
-rw-r--r--indra/newview/llchannelmanager.h1
-rw-r--r--indra/newview/llimview.cpp4
-rw-r--r--indra/newview/llinventoryfilter.cpp45
-rw-r--r--indra/newview/llinventoryfilter.h18
-rw-r--r--indra/newview/llinventorypanel.cpp4
-rw-r--r--indra/newview/llinventorypanel.h2
-rw-r--r--indra/newview/llnavigationbar.h11
-rw-r--r--indra/newview/lloutfitslist.cpp2
-rw-r--r--indra/newview/llpanelmaininventory.cpp7
-rw-r--r--indra/newview/llpaneloutfitsinventory.cpp8
-rw-r--r--indra/newview/llpanelplaceinfo.cpp1
-rw-r--r--indra/newview/llpaneltopinfobar.h15
-rw-r--r--indra/newview/llscreenchannel.cpp7
-rw-r--r--indra/newview/llsidepaneliteminfo.cpp19
-rw-r--r--indra/newview/llsidetray.cpp13
-rw-r--r--indra/newview/lltexturectrl.cpp2
-rw-r--r--indra/newview/lltoast.cpp8
-rw-r--r--indra/newview/lltoast.h2
-rw-r--r--indra/newview/llwearableitemslist.cpp22
-rw-r--r--indra/newview/skins/default/colors.xml6
-rw-r--r--indra/newview/skins/default/xui/en/floater_publish_classified.xml26
-rw-r--r--indra/newview/skins/default/xui/en/menu_object.xml8
-rw-r--r--indra/newview/skins/default/xui/en/menu_outfit_gear.xml1
-rw-r--r--indra/newview/skins/default/xui/en/menu_wearable_list_item.xml9
-rw-r--r--indra/newview/skins/default/xui/en/menu_wearing_gear.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_classified.xml29
-rw-r--r--indra/newview/skins/default/xui/en/panel_outfits_inventory.xml11
-rw-r--r--indra/newview/skins/default/xui/en/sidepanel_appearance.xml8
-rw-r--r--indra/newview/skins/default/xui/en/sidepanel_item_info.xml10
-rw-r--r--indra/newview/skins/default/xui/en/sidepanel_task_info.xml2
-rw-r--r--indra/newview/skins/default/xui/en/strings.xml2
-rw-r--r--indra/newview/skins/default/xui/en/widgets/accordion_tab.xml2
34 files changed, 223 insertions, 114 deletions
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 547dfd7006..3051aa3cef 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -207,8 +207,9 @@ public:
};
-LLUpdateAppearanceOnDestroy::LLUpdateAppearanceOnDestroy():
- mFireCount(0)
+LLUpdateAppearanceOnDestroy::LLUpdateAppearanceOnDestroy(bool update_base_outfit_ordering):
+ mFireCount(0),
+ mUpdateBaseOrder(update_base_outfit_ordering)
{
}
@@ -218,7 +219,7 @@ LLUpdateAppearanceOnDestroy::~LLUpdateAppearanceOnDestroy()
if (!LLApp::isExiting())
{
- LLAppearanceMgr::instance().updateAppearanceFromCOF();
+ LLAppearanceMgr::instance().updateAppearanceFromCOF(mUpdateBaseOrder);
}
}
@@ -1436,7 +1437,7 @@ void LLAppearanceMgr::updateCOF(const LLUUID& category, bool append)
// Create links to new COF contents.
llinfos << "creating LLUpdateAppearanceOnDestroy" << llendl;
- LLPointer<LLInventoryCallback> link_waiter = new LLUpdateAppearanceOnDestroy;
+ LLPointer<LLInventoryCallback> link_waiter = new LLUpdateAppearanceOnDestroy(!append);
#ifndef LL_RELEASE_FOR_DOWNLOAD
llinfos << "Linking body items" << llendl;
@@ -1617,7 +1618,7 @@ void LLAppearanceMgr::enforceItemCountLimits()
}
}
-void LLAppearanceMgr::updateAppearanceFromCOF()
+void LLAppearanceMgr::updateAppearanceFromCOF(bool update_base_outfit_ordering)
{
if (mIsInUpdateAppearanceFromCOF)
{
@@ -1631,7 +1632,7 @@ void LLAppearanceMgr::updateAppearanceFromCOF()
//checking integrity of the COF in terms of ordering of wearables,
//checking and updating links' descriptions of wearables in the COF (before analyzed for "dirty" state)
- updateClothingOrderingInfo();
+ updateClothingOrderingInfo(LLUUID::null, update_base_outfit_ordering);
// Remove duplicate or excess wearables. Should normally be enforced at the UI level, but
// this should catch anything that gets through.
@@ -2336,11 +2337,19 @@ struct WearablesOrderComparator
U32 mControlSize;
};
-void LLAppearanceMgr::updateClothingOrderingInfo(LLUUID cat_id)
+void LLAppearanceMgr::updateClothingOrderingInfo(LLUUID cat_id, bool update_base_outfit_ordering)
{
if (cat_id.isNull())
{
cat_id = getCOF();
+ if (update_base_outfit_ordering)
+ {
+ const LLUUID base_outfit_id = getBaseOutfitUUID();
+ if (base_outfit_id.notNull())
+ {
+ updateClothingOrderingInfo(base_outfit_id,false);
+ }
+ }
}
// COF is processed if cat_id is not specified
@@ -2373,6 +2382,7 @@ void LLAppearanceMgr::updateClothingOrderingInfo(LLUUID cat_id)
item->setComplete(TRUE);
item->updateServer(FALSE);
gInventory.updateItem(item);
+
inventory_changed = true;
}
}
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index afd1bf3ade..8834f8c395 100644
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -54,7 +54,7 @@ class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
public:
typedef std::vector<LLInventoryModel::item_array_t> wearables_by_type_t;
- void updateAppearanceFromCOF();
+ void updateAppearanceFromCOF(bool update_base_outfit_ordering = false);
bool needToSaveCOF();
void updateCOF(const LLUUID& category, bool append = false);
void wearInventoryCategory(LLInventoryCategory* category, bool copy, bool append);
@@ -171,7 +171,7 @@ public:
//Check ordering information on wearables stored in links' descriptions and update if it is invalid
// COF is processed if cat_id is not specified
- void updateClothingOrderingInfo(LLUUID cat_id = LLUUID::null);
+ void updateClothingOrderingInfo(LLUUID cat_id = LLUUID::null, bool update_base_outfit_ordering = false);
bool isOutfitLocked() { return mOutfitLocked; }
@@ -226,12 +226,13 @@ public:
class LLUpdateAppearanceOnDestroy: public LLInventoryCallback
{
public:
- LLUpdateAppearanceOnDestroy();
+ LLUpdateAppearanceOnDestroy(bool update_base_outfit_ordering = false);
virtual ~LLUpdateAppearanceOnDestroy();
/* virtual */ void fire(const LLUUID& inv_item);
private:
U32 mFireCount;
+ bool mUpdateBaseOrder;
};
diff --git a/indra/newview/llchannelmanager.h b/indra/newview/llchannelmanager.h
index 8c725f2660..2d6aa181c5 100644
--- a/indra/newview/llchannelmanager.h
+++ b/indra/newview/llchannelmanager.h
@@ -119,6 +119,7 @@ public:
*/
static LLNotificationsUI::LLScreenChannel* getNotificationScreenChannel();
+ std::vector<ChannelElem>& getChannelList() { return mChannelList;}
private:
LLScreenChannel* createChannel(LLChannelManager::Params& p);
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 6d3998bb96..a2b72e7d74 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -1929,9 +1929,9 @@ BOOL LLIncomingCallDialog::postBuild()
mLifetimeTimer.stop();
}
- //it's not possible to connect to existing Ad-Hoc chat through incoming ad-hoc call
+ //it's not possible to connect to existing Ad-Hoc/Group chat through incoming ad-hoc call
//and no IM for avaline
- childSetVisible("Start IM", is_avatar && notify_box_type != "VoiceInviteAdHoc");
+ childSetVisible("Start IM", is_avatar && notify_box_type != "VoiceInviteAdHoc" && notify_box_type != "VoiceInviteGroup");
setCanDrag(FALSE);
diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp
index 6e829f2dc2..f8241320cf 100644
--- a/indra/newview/llinventoryfilter.cpp
+++ b/indra/newview/llinventoryfilter.cpp
@@ -57,7 +57,7 @@ LLInventoryFilter::FilterOps::FilterOps() :
mPermissions(PERM_NONE),
mFilterTypes(FILTERTYPE_OBJECT),
mFilterUUID(LLUUID::null),
- mIncludeLinks(TRUE)
+ mFilterLinks(FILTERLINK_INCLUDE_LINKS)
{
}
@@ -104,8 +104,10 @@ BOOL LLInventoryFilter::check(const LLFolderViewItem* item)
const BOOL passed_filtertype = checkAgainstFilterType(item);
const BOOL passed_permissions = checkAgainstPermissions(item);
+ const BOOL passed_filterlink = checkAgainstFilterLinks(item);
const BOOL passed = (passed_filtertype &&
- passed_permissions &&
+ passed_permissions &&
+ passed_filterlink &&
(mFilterSubString.size() == 0 || mSubStringMatchOffset != std::string::npos));
return passed;
@@ -229,6 +231,21 @@ BOOL LLInventoryFilter::checkAgainstPermissions(const LLFolderViewItem* item) co
return (perm & mFilterOps.mPermissions) == mFilterOps.mPermissions;
}
+BOOL LLInventoryFilter::checkAgainstFilterLinks(const LLFolderViewItem* item) const
+{
+ const LLFolderViewEventListener* listener = item->getListener();
+ if (!listener) return FALSE;
+
+ const LLUUID object_id = listener->getUUID();
+ const LLInventoryObject *object = gInventory.getObject(object_id);
+ const BOOL is_link = object->getIsLinkType();
+ if (is_link && (mFilterOps.mFilterLinks == FILTERLINK_EXCLUDE_LINKS))
+ return FALSE;
+ if (!is_link && (mFilterOps.mFilterLinks == FILTERLINK_ONLY_LINKS))
+ return FALSE;
+ return TRUE;
+}
+
const std::string& LLInventoryFilter::getFilterSubString(BOOL trim) const
{
return mFilterSubString;
@@ -246,6 +263,7 @@ BOOL LLInventoryFilter::isNotDefault() const
|| mFilterOps.mFilterCategoryTypes != mDefaultFilterOps.mFilterCategoryTypes
|| mFilterOps.mFilterWearableTypes != mDefaultFilterOps.mFilterWearableTypes
|| mFilterOps.mFilterTypes != FILTERTYPE_OBJECT
+ || mFilterOps.mFilterLinks != FILTERLINK_INCLUDE_LINKS
|| mFilterSubString.size()
|| mFilterOps.mPermissions != mDefaultFilterOps.mPermissions
|| mFilterOps.mMinDate != mDefaultFilterOps.mMinDate
@@ -259,6 +277,7 @@ BOOL LLInventoryFilter::isActive() const
|| mFilterOps.mFilterCategoryTypes != 0xffffffffffffffffULL
|| mFilterOps.mFilterWearableTypes != 0xffffffffffffffffULL
|| mFilterOps.mFilterTypes != FILTERTYPE_OBJECT
+ || mFilterOps.mFilterLinks != FILTERLINK_INCLUDE_LINKS
|| mFilterSubString.size()
|| mFilterOps.mPermissions != PERM_NONE
|| mFilterOps.mMinDate != time_min()
@@ -410,6 +429,11 @@ void LLInventoryFilter::setFilterSubString(const std::string& string)
mFilterOps.mFilterUUID == LLUUID::null;
setModified(FILTER_RESTART);
}
+
+ // Cancel out filter links once the search string is modified
+ {
+ mFilterOps.mFilterLinks = FILTERLINK_INCLUDE_LINKS;
+ }
}
}
@@ -508,16 +532,17 @@ void LLInventoryFilter::setHoursAgo(U32 hours)
mFilterOps.mFilterTypes |= FILTERTYPE_DATE;
}
-void LLInventoryFilter::setIncludeLinks(BOOL include_links)
+void LLInventoryFilter::setFilterLinks(U64 filter_links)
{
- if (mFilterOps.mIncludeLinks != include_links)
+ if (mFilterOps.mFilterLinks != filter_links)
{
- if (!mFilterOps.mIncludeLinks)
- setModified(FILTER_LESS_RESTRICTIVE);
- else
+ if (mFilterOps.mFilterLinks == FILTERLINK_EXCLUDE_LINKS ||
+ mFilterOps.mFilterLinks == FILTERLINK_ONLY_LINKS)
setModified(FILTER_MORE_RESTRICTIVE);
+ else
+ setModified(FILTER_LESS_RESTRICTIVE);
}
- mFilterOps.mIncludeLinks = include_links;
+ mFilterOps.mFilterLinks = filter_links;
}
void LLInventoryFilter::setShowFolderState(EFolderShow state)
@@ -895,9 +920,9 @@ U32 LLInventoryFilter::getHoursAgo() const
{
return mFilterOps.mHoursAgo;
}
-BOOL LLInventoryFilter::getIncludeLinks() const
+U64 LLInventoryFilter::getFilterLinks() const
{
- return mFilterOps.mIncludeLinks;
+ return mFilterOps.mFilterLinks;
}
LLInventoryFilter::EFolderShow LLInventoryFilter::getShowFolderState() const
{
diff --git a/indra/newview/llinventoryfilter.h b/indra/newview/llinventoryfilter.h
index f740a6b333..3d476e4795 100644
--- a/indra/newview/llinventoryfilter.h
+++ b/indra/newview/llinventoryfilter.h
@@ -56,8 +56,7 @@ public:
FILTER_MORE_RESTRICTIVE // if you didn't pass the previous filter, you definitely won't pass this one
};
- enum EFilterType
- {
+ enum EFilterType {
FILTERTYPE_NONE = 0,
FILTERTYPE_OBJECT = 0x1 << 0, // normal default search-by-object-type
FILTERTYPE_CATEGORY = 0x1 << 1, // search by folder type
@@ -66,6 +65,13 @@ public:
FILTERTYPE_WEARABLE = 0x1 << 4 // search by wearable type
};
+ enum EFilterLink
+ {
+ FILTERLINK_INCLUDE_LINKS, // show links too
+ FILTERLINK_EXCLUDE_LINKS, // don't show links
+ FILTERLINK_ONLY_LINKS // only show links
+ };
+
// REFACTOR: Change this to an enum.
static const U32 SO_DATE = 1;
static const U32 SO_FOLDERS_BY_NAME = 2;
@@ -100,8 +106,8 @@ public:
void setHoursAgo(U32 hours);
U32 getHoursAgo() const;
- void setIncludeLinks(BOOL include_links);
- BOOL getIncludeLinks() const;
+ void setFilterLinks(U64 filter_link);
+ U64 getFilterLinks() const;
// +-------------------------------------------------------------------+
// + Execution And Results
@@ -109,6 +115,8 @@ public:
BOOL check(const LLFolderViewItem* item);
BOOL checkAgainstFilterType(const LLFolderViewItem* item) const;
BOOL checkAgainstPermissions(const LLFolderViewItem* item) const;
+ BOOL checkAgainstFilterLinks(const LLFolderViewItem* item) const;
+
std::string::size_type getStringMatchOffset() const;
// +-------------------------------------------------------------------+
@@ -179,7 +187,7 @@ private:
U32 mHoursAgo;
EFolderShow mShowFolderState;
PermissionMask mPermissions;
- BOOL mIncludeLinks;
+ U64 mFilterLinks;
};
U32 mOrder;
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 72d35af3b7..5af99f3c8f 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -256,9 +256,9 @@ void LLInventoryPanel::setHoursAgo(U32 hours)
getFilter()->setHoursAgo(hours);
}
-void LLInventoryPanel::setIncludeLinks(BOOL include_links)
+void LLInventoryPanel::setFilterLinks(U64 filter_links)
{
- getFilter()->setIncludeLinks(include_links);
+ getFilter()->setFilterLinks(filter_links);
}
void LLInventoryPanel::setShowFolderState(LLInventoryFilter::EFolderShow show)
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index 84603e8b4f..c9e317f816 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -145,7 +145,7 @@ public:
void setSinceLogoff(BOOL sl);
void setHoursAgo(U32 hours);
BOOL getSinceLogoff();
- void setIncludeLinks(BOOL include_links);
+ void setFilterLinks(U64 filter_links);
void setShowFolderState(LLInventoryFilter::EFolderShow show);
LLInventoryFilter::EFolderShow getShowFolderState();
diff --git a/indra/newview/llnavigationbar.h b/indra/newview/llnavigationbar.h
index b512f2a79c..03f17af09b 100644
--- a/indra/newview/llnavigationbar.h
+++ b/indra/newview/llnavigationbar.h
@@ -87,9 +87,10 @@ protected:
* Web browser-like navigation bar.
*/
class LLNavigationBar
- : public LLPanel, public LLSingleton<LLNavigationBar>
+ : public LLPanel, public LLSingleton<LLNavigationBar>, private LLDestroyClass<LLNavigationBar>
{
LOG_CLASS(LLNavigationBar);
+ friend class LLDestroyClass<LLNavigationBar>;
public:
LLNavigationBar();
@@ -136,6 +137,14 @@ private:
void fillSearchComboBox();
+ static void destroyClass()
+ {
+ if (LLNavigationBar::instanceExists())
+ {
+ LLNavigationBar::getInstance()->setEnabled(FALSE);
+ }
+ }
+
LLMenuGL* mTeleportHistoryMenu;
LLPullButton* mBtnBack;
LLPullButton* mBtnForward;
diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp
index 075cfa0543..23c7e64cce 100644
--- a/indra/newview/lloutfitslist.cpp
+++ b/indra/newview/lloutfitslist.cpp
@@ -548,6 +548,7 @@ void LLOutfitsList::highlightBaseOutfit()
if (mOutfitsMap[mHighlightedOutfitUUID])
{
mOutfitsMap[mHighlightedOutfitUUID]->setTitleFontStyle("NORMAL");
+ mOutfitsMap[mHighlightedOutfitUUID]->setTitleColor(LLUIColorTable::instance().getColor("AccordionHeaderTextColor"));
}
mHighlightedOutfitUUID = base_id;
@@ -555,6 +556,7 @@ void LLOutfitsList::highlightBaseOutfit()
if (mOutfitsMap[base_id])
{
mOutfitsMap[base_id]->setTitleFontStyle("BOLD");
+ mOutfitsMap[base_id]->setTitleColor(LLUIColorTable::instance().getColor("SelectedOutfitTextColor"));
}
}
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index 9eece81861..fa7e06d323 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -392,6 +392,7 @@ void LLPanelMainInventory::onClearSearch()
{
mActivePanel->setFilterSubString(LLStringUtil::null);
mActivePanel->setFilterTypes(0xffffffff);
+ mActivePanel->setFilterLinks(LLInventoryFilter::FILTERLINK_INCLUDE_LINKS);
}
if (finder)
@@ -1068,6 +1069,7 @@ void LLPanelMainInventory::onCustomAction(const LLSD& userdata)
mFilterEditor->setFocus(TRUE);
filter->setFilterUUID(item_id);
filter->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
+ filter->setFilterLinks(LLInventoryFilter::FILTERLINK_ONLY_LINKS);
}
}
@@ -1134,7 +1136,10 @@ BOOL LLPanelMainInventory::isActionEnabled(const LLSD& userdata)
if (command_name == "find_links")
{
- LLFolderViewItem* current_item = getActivePanel()->getRootFolder()->getCurSelectedItem();
+ LLFolderView* root = getActivePanel()->getRootFolder();
+ std::set<LLUUID> selection_set = root->getSelectionList();
+ if (selection_set.size() != 1) return FALSE;
+ LLFolderViewItem* current_item = root->getCurSelectedItem();
if (!current_item) return FALSE;
const LLUUID& item_id = current_item->getListener()->getUUID();
const LLInventoryObject *obj = gInventory.getObject(item_id);
diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp
index 462ba2dfa5..c5d259e517 100644
--- a/indra/newview/llpaneloutfitsinventory.cpp
+++ b/indra/newview/llpaneloutfitsinventory.cpp
@@ -262,6 +262,14 @@ void LLPanelOutfitsInventory::updateListCommands()
mListCommands->childSetEnabled("wear_btn", wear_enabled);
mListCommands->childSetVisible("wear_btn", wear_visible);
mSaveComboBtn->setMenuItemEnabled("save_outfit", make_outfit_enabled);
+ if (mMyOutfitsPanel->hasItemSelected())
+ {
+ mListCommands->childSetToolTip("wear_btn", getString("wear_items_tooltip"));
+ }
+ else
+ {
+ mListCommands->childSetToolTip("wear_btn", getString("wear_outfit_tooltip"));
+ }
}
void LLPanelOutfitsInventory::showGearMenu()
diff --git a/indra/newview/llpanelplaceinfo.cpp b/indra/newview/llpanelplaceinfo.cpp
index db305b25fa..8c1f5d0915 100644
--- a/indra/newview/llpanelplaceinfo.cpp
+++ b/indra/newview/llpanelplaceinfo.cpp
@@ -123,6 +123,7 @@ void LLPanelPlaceInfo::setParcelID(const LLUUID& parcel_id)
void LLPanelPlaceInfo::setInfoType(EInfoType type)
{
mTitle->setText(mCurrentTitle);
+ mTitle->setToolTip(mCurrentTitle);
mInfoType = type;
}
diff --git a/indra/newview/llpaneltopinfobar.h b/indra/newview/llpaneltopinfobar.h
index e417a06a64..6e6fbc08ab 100644
--- a/indra/newview/llpaneltopinfobar.h
+++ b/indra/newview/llpaneltopinfobar.h
@@ -40,10 +40,12 @@ class LLTextBox;
class LLIconCtrl;
class LLParcelChangeObserver;
-class LLPanelTopInfoBar : public LLPanel, public LLSingleton<LLPanelTopInfoBar>
+class LLPanelTopInfoBar : public LLPanel, public LLSingleton<LLPanelTopInfoBar>, private LLDestroyClass<LLPanelTopInfoBar>
{
LOG_CLASS(LLPanelTopInfoBar);
+ friend class LLDestroyClass<LLPanelTopInfoBar>;
+
public:
LLPanelTopInfoBar();
~LLPanelTopInfoBar();
@@ -145,6 +147,17 @@ private:
*/
void setParcelInfoText(const std::string& new_text);
+ /**
+ * Implementation of LLDestroyClass<LLSideTray>
+ */
+ static void destroyClass()
+ {
+ if (LLPanelTopInfoBar::instanceExists())
+ {
+ LLPanelTopInfoBar::getInstance()->setEnabled(FALSE);
+ }
+ }
+
LLButton* mInfoBtn;
LLTextBox* mParcelInfoText;
LLTextBox* mDamageText;
diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp
index 55c8809184..ef89c07c60 100644
--- a/indra/newview/llscreenchannel.cpp
+++ b/indra/newview/llscreenchannel.cpp
@@ -136,8 +136,11 @@ void LLScreenChannelBase::updatePositionAndSize(LLRect old_world_rect, LLRect ne
void LLScreenChannelBase::init(S32 channel_left, S32 channel_right)
{
- LLSideTray* side_bar = LLSideTray::getInstance();
- side_bar->getCollapseSignal().connect(boost::bind(&LLScreenChannelBase::resetPositionAndSize, this, _2));
+ if(LLSideTray::instanceCreated())
+ {
+ LLSideTray* side_bar = LLSideTray::getInstance();
+ side_bar->getCollapseSignal().connect(boost::bind(&LLScreenChannelBase::resetPositionAndSize, this, _2));
+ }
S32 channel_top = gViewerWindow->getWorldViewRectScaled().getHeight();
S32 channel_bottom = gViewerWindow->getWorldViewRectScaled().mBottom + gSavedSettings.getS32("ChannelBottomPanelMargin");
diff --git a/indra/newview/llsidepaneliteminfo.cpp b/indra/newview/llsidepaneliteminfo.cpp
index 6ccd89dddb..d9870e81c5 100644
--- a/indra/newview/llsidepaneliteminfo.cpp
+++ b/indra/newview/llsidepaneliteminfo.cpp
@@ -323,6 +323,19 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)
childSetText("LabelOwnerName",getString("public"));
}
+ ////////////
+ // ORIGIN //
+ ////////////
+
+ if (object)
+ {
+ childSetText("origin",getString("origin_inworld"));
+ }
+ else
+ {
+ childSetText("origin",getString("origin_inventory"));
+ }
+
//////////////////
// ACQUIRE DATE //
//////////////////
@@ -341,9 +354,9 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)
childSetText ("LabelAcquiredDate", timeStr);
}
- /////////////////////////////////////
- // PERMISSIONS AND SALE ITEM HIDING
- /////////////////////////////////////
+ //////////////////////////////////////
+ // PERMISSIONS AND SALE ITEM HIDING //
+ //////////////////////////////////////
const std::string perm_and_sale_items[]={
"perms_inv",
diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp
index fed39c362e..98282c1673 100644
--- a/indra/newview/llsidetray.cpp
+++ b/indra/newview/llsidetray.cpp
@@ -49,12 +49,15 @@
#include "llfloater.h" //for gFloaterView
#include "lliconctrl.h"//for OpenClose tab icon
#include "llsidetraypanelcontainer.h"
+#include "llscreenchannel.h"
+#include "llchannelmanager.h"
#include "llwindow.h"//for SetCursor
#include "lltransientfloatermgr.h"
//#include "llscrollcontainer.h"
using namespace std;
+using namespace LLNotificationsUI;
static LLRootViewRegistry::Register<LLSideTray> t1("side_tray");
static LLDefaultChildRegistry::Register<LLSideTrayTab> t2("sidetray_tab");
@@ -276,6 +279,16 @@ BOOL LLSideTray::postBuild()
LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&LLSideTray::handleLoginComplete, this));
+ //EXT-8045
+ //connect all already created channels to reflect sidetray collapse/expand
+ std::vector<LLChannelManager::ChannelElem>& channels = LLChannelManager::getInstance()->getChannelList();
+ for(std::vector<LLChannelManager::ChannelElem>::iterator it = channels.begin();it!=channels.end();++it)
+ {
+ if ((*it).channel)
+ {
+ getCollapseSignal().connect(boost::bind(&LLScreenChannelBase::resetPositionAndSize, (*it).channel, _2));
+ }
+ }
return true;
}
diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp
index f3530b69db..0b86cefa1d 100644
--- a/indra/newview/lltexturectrl.cpp
+++ b/indra/newview/lltexturectrl.cpp
@@ -825,7 +825,7 @@ void LLFloaterTexturePicker::onFilterEdit(const std::string& search_string )
}
}
- mInventoryPanel->setFilterSubString(upper_case_search_string);
+ mInventoryPanel->setFilterSubString(search_string);
}
void LLFloaterTexturePicker::onTextureSelect( const LLTextureEntry& te )
diff --git a/indra/newview/lltoast.cpp b/indra/newview/lltoast.cpp
index 9abfab300c..2bb573c263 100644
--- a/indra/newview/lltoast.cpp
+++ b/indra/newview/lltoast.cpp
@@ -112,6 +112,14 @@ LLToast::LLToast(const LLToast::Params& p)
mOnMouseEnterSignal.connect(p.on_mouse_enter());
}
+void LLToast::reshape(S32 width, S32 height, BOOL called_from_parent)
+{
+ // We shouldn't use reshape from LLModalDialog since it changes toasts position.
+ // Toasts position should be controlled only by toast screen channel, see LLScreenChannelBase.
+ // see EXT-8044
+ LLFloater::reshape(width, height, called_from_parent);
+}
+
//--------------------------------------------------------------------------
BOOL LLToast::postBuild()
{
diff --git a/indra/newview/lltoast.h b/indra/newview/lltoast.h
index 4211f21ef1..c0da656685 100644
--- a/indra/newview/lltoast.h
+++ b/indra/newview/lltoast.h
@@ -106,6 +106,8 @@ public:
virtual ~LLToast();
BOOL postBuild();
+ /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
+
// Toast handlers
virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp
index cf165f8f66..868322699e 100644
--- a/indra/newview/llwearableitemslist.cpp
+++ b/indra/newview/llwearableitemslist.cpp
@@ -621,6 +621,7 @@ void LLWearableItemsList::ContextMenu::updateItemsVisibility(LLContextMenu* menu
U32 mask = 0; // mask of selected items' types
U32 n_items = ids.size(); // number of selected items
U32 n_worn = 0; // number of worn items among the selected ones
+ U32 n_already_worn = 0; // number of items worn of same type as selected items
U32 n_links = 0; // number of links among the selected items
U32 n_editable = 0; // number of editable items among the selected ones
@@ -638,10 +639,11 @@ void LLWearableItemsList::ContextMenu::updateItemsVisibility(LLContextMenu* menu
updateMask(mask, item->getType());
- bool is_link = item->getIsLinkType();
- bool is_worn = get_is_item_worn(id);
- bool is_editable = gAgentWearables.isWearableModifiable(id);
-
+ const LLWearableType::EType wearable_type = item->getWearableType();
+ const bool is_link = item->getIsLinkType();
+ const bool is_worn = get_is_item_worn(id);
+ const bool is_editable = gAgentWearables.isWearableModifiable(id);
+ const bool is_already_worn = gAgentWearables.selfHasWearable(wearable_type);
if (is_worn)
{
++n_worn;
@@ -654,14 +656,20 @@ void LLWearableItemsList::ContextMenu::updateItemsVisibility(LLContextMenu* menu
{
++n_links;
}
+ if (is_already_worn)
+ {
+ ++n_already_worn;
+ }
} // for
bool standalone = mParent ? mParent->isStandalone() : false;
// *TODO: eliminate multiple traversals over the menu items
- setMenuItemVisible(menu, "wear_add", mask == MASK_CLOTHING && n_worn == 0);
- setMenuItemEnabled(menu, "wear_add", n_items == 1 && canAddWearable(ids.front()));
- setMenuItemVisible(menu, "wear", n_worn == 0);
+ setMenuItemVisible(menu, "wear_wear", n_already_worn == 0);
+ setMenuItemEnabled(menu, "wear_wear", n_already_worn == 0);
+ setMenuItemVisible(menu, "wear_add", mask == MASK_CLOTHING && n_worn == 0 && n_already_worn != 0);
+ setMenuItemEnabled(menu, "wear_add", n_items == 1 && canAddWearable(ids.front()) && n_already_worn != 0);
+ setMenuItemVisible(menu, "wear_replace", n_worn == 0 && n_already_worn != 0);
//visible only when one item selected and this item is worn
setMenuItemVisible(menu, "edit", !standalone && mask & (MASK_CLOTHING|MASK_BODYPART) && n_worn == n_items && n_worn == 1);
setMenuItemEnabled(menu, "edit", n_editable == 1 && n_worn == 1 && n_items == 1);
diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml
index e8a893e31b..2188c71ff9 100644
--- a/indra/newview/skins/default/colors.xml
+++ b/indra/newview/skins/default/colors.xml
@@ -97,6 +97,9 @@
<!-- UI Definitions -->
<color
+ name="AccordionHeaderTextColor"
+ reference="LtGray" />
+ <color
name="AgentChatColor"
reference="White" />
<color
@@ -646,6 +649,9 @@
name="ScrollbarTrackColor"
reference="Black" />
<color
+ name="SelectedOutfitTextColor"
+ reference="EmphasisColor" />
+ <color
name="SilhouetteChildColor"
value="0.13 0.42 0.77 1" />
<color
diff --git a/indra/newview/skins/default/xui/en/floater_publish_classified.xml b/indra/newview/skins/default/xui/en/floater_publish_classified.xml
index 3225843d09..f25c170f33 100644
--- a/indra/newview/skins/default/xui/en/floater_publish_classified.xml
+++ b/indra/newview/skins/default/xui/en/floater_publish_classified.xml
@@ -5,7 +5,6 @@
height="200"
layout="topleft"
name="publish_classified"
- help_topic="price_for_listing"
title="Publishing Classified"
width="320">
<text
@@ -29,8 +28,8 @@ Remember, Classified fees are non-refundable.
halign="left"
height="23"
increment="1"
- label_width="70"
- label="Price for Ad: "
+ label_width="45"
+ label="Price: L$ "
v_pad="10"
layout="topleft"
left="15"
@@ -41,27 +40,6 @@ Remember, Classified fees are non-refundable.
top_pad="10"
tool_tip="Price for listing."
width="150" />
- <text
- follows="top|left"
- font="SansSerif"
- height="60"
- layout="topleft"
- left_pad="5"
- top_delta="0"
- word_wrap="true"
- value="L$"
- name="l$_text" />
- <text
- follows="top|right"
- font="SansSerif"
- height="20"
- layout="topleft"
- left="15"
- name="more_info_text"
- top_pad="-20"
- width="300">
-More info (link to classified help)
- </text>
<button
follows="top|left"
height="22"
diff --git a/indra/newview/skins/default/xui/en/menu_object.xml b/indra/newview/skins/default/xui/en/menu_object.xml
index 6ca8766e3f..397e61c97a 100644
--- a/indra/newview/skins/default/xui/en/menu_object.xml
+++ b/indra/newview/skins/default/xui/en/menu_object.xml
@@ -18,7 +18,7 @@
name="Edit...">
<menu_item_call.on_click
function="Object.Edit" />
- <menu_item_call.on_visible
+ <menu_item_call.on_enable
function="EnableEdit"/>
</menu_item_call>
<menu_item_call
@@ -26,7 +26,7 @@
name="Build">
<menu_item_call.on_click
function="Object.Build" />
- <menu_item_call.on_visible
+ <menu_item_call.on_enable
function="EnableEdit"/>
</menu_item_call>
<menu_item_call
@@ -44,7 +44,7 @@
name="Object Sit">
<menu_item_call.on_click
function="Object.SitOrStand" />
- <menu_item_call.on_visible
+ <menu_item_call.on_enable
function="Object.SitVisible" />
<menu_item_call.on_enable
function="Object.EnableSitOrStand"
@@ -56,7 +56,7 @@
name="Object Stand Up">
<menu_item_call.on_click
function="Object.SitOrStand" />
- <menu_item_call.on_visible
+ <menu_item_call.on_enable
function="Object.StandUpVisible" />
<menu_item_call.on_enable
function="Object.EnableSitOrStand"
diff --git a/indra/newview/skins/default/xui/en/menu_outfit_gear.xml b/indra/newview/skins/default/xui/en/menu_outfit_gear.xml
index c4c7a5034a..732b8a788d 100644
--- a/indra/newview/skins/default/xui/en/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_outfit_gear.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<menu
layout="topleft"
+ visible="false"
name="Gear Outfit">
<menu_item_call
label="Wear - Replace Current Outfit"
diff --git a/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml
index 23eb89e448..c3adbb7904 100644
--- a/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml
+++ b/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml
@@ -4,11 +4,18 @@
<menu_item_call
label="Replace"
layout="topleft"
- name="wear">
+ name="wear_replace">
<on_click
function="Wearable.Wear" />
</menu_item_call>
<menu_item_call
+ label="Wear"
+ layout="topleft"
+ name="wear_wear">
+ <on_click
+ function="Wearable.Add" />
+ </menu_item_call>
+ <menu_item_call
label="Add"
layout="topleft"
name="wear_add">
diff --git a/indra/newview/skins/default/xui/en/menu_wearing_gear.xml b/indra/newview/skins/default/xui/en/menu_wearing_gear.xml
index 84431a2f69..747352cb29 100644
--- a/indra/newview/skins/default/xui/en/menu_wearing_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_wearing_gear.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<menu
layout="topleft"
+ visible="false"
name="Gear Wearing">
<menu_item_call
label="Edit Outfit"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_classified.xml b/indra/newview/skins/default/xui/en/panel_edit_classified.xml
index 3f41973b72..cbdd548577 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_classified.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_classified.xml
@@ -253,35 +253,6 @@
width="20"/>
</icons_combo_box.item>
</icons_combo_box>
- <text
- follows="left|top"
- font.style="BOLD"
- height="10"
- layout="topleft"
- left="10"
- name="price_for_listing_label"
- text_color="white"
- top_pad="15"
- value="Price for listing:"
- width="250" />
- <spinner
- decimal_digits="0"
- follows="left|top"
- halign="left"
- height="23"
- increment="1"
- label_width="20"
- label="L$"
- v_pad="10"
- layout="topleft"
- left="10"
- value="50"
- min_val="50"
- max_val="99999"
- name="price_for_listing"
- top_pad="5"
- tool_tip="Price for listing."
- width="105" />
<check_box
height="16"
label="Auto renew each week"
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
index 58d3dbcc37..82b69ba8dc 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
@@ -12,13 +12,21 @@
min_width="240"
width="320"
border="false">
+ <panel.string
+ name="wear_outfit_tooltip">
+ Wear selected outfit
+ </panel.string>
+ <panel.string
+ name="wear_items_tooltip">
+ Wear selected items
+ </panel.string>
<tab_container
follows="all"
height="539"
layout="topleft"
left="5"
name="appearance_tabs"
- tab_min_width="140"
+ tab_min_width="150"
tab_height="30"
tab_position="top"
halign="center"
@@ -89,7 +97,6 @@
layout="topleft"
name="wear_btn"
left_pad="3"
- tool_tip="Wear selected outfit"
width="152" />
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
index 9a07d3a48a..10d8c7dbb8 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
@@ -61,7 +61,7 @@ width="333">
top="0"
width="32" />
<text
- font="SansSerifSmallBold"
+ font="SansSerifSmall"
text_color="EmphasisColor"
width="300"
height="10"
@@ -89,15 +89,15 @@ width="333">
</text>
<button
follows="left|top"
- height="23"
+ height="28"
image_overlay="Edit_Wrench"
label=""
layout="topleft"
left="265"
name="edit_outfit_btn"
tool_tip="Edit this outfit"
- top="7"
- width="30" />
+ top="3"
+ width="28" />
<loading_indicator
follows="left|top"
height="24"
diff --git a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
index f3912b5133..50df227fbf 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
@@ -26,6 +26,14 @@
name="acquiredDate">
[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
</panel.string>
+ <panel.string
+ name="origin_inventory">
+ (Inventory)
+ </panel.string>
+ <panel.string
+ name="origin_inworld">
+ (Inworld)
+ </panel.string>
<icon
follows="top|right"
height="18"
@@ -65,7 +73,7 @@
height="13"
layout="topleft"
left="45"
- name="where"
+ name="origin"
text_color="LtGray_50"
value="(Inventory)"
width="150" />
diff --git a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
index ef7ec74b5a..843015cb8b 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
@@ -85,7 +85,7 @@
left="45"
name="where"
text_color="LtGray_50"
- value="(inworld)"
+ value="(Inworld)"
width="150" />
<panel
follows="all"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 799d440292..f7611b6833 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -1939,7 +1939,7 @@ Clears (deletes) the media and all params from the given face.
<string name="InvFolder Uncompressed Sounds">Uncompressed Sounds</string>
<string name="InvFolder Animations">Animations</string>
<string name="InvFolder Gestures">Gestures</string>
- <string name="InvFolder favorite">Favorites</string>
+ <string name="InvFolder Favorite">Favorites</string>
<string name="InvFolder Current Outfit">Current Outfit</string>
<string name="InvFolder My Outfits">My Outfits</string>
<string name="InvFolder Accessories">Accessories</string>
diff --git a/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml b/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml
index 102dc0c16d..6f68c99021 100644
--- a/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml
+++ b/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml
@@ -9,6 +9,6 @@
header_image_over="Accordion_Over"
header_image_pressed="Accordion_Press"
header_image_focused="Accordion_Selected"
- header_text_color="LtGray"
+ header_text_color="AccordionHeaderTextColor"
font="SansSerif"
/>