From d8e26b7b73b734e1745795788c844f6aab3360fe Mon Sep 17 00:00:00 2001 From: Mike Antipov Date: Mon, 12 Jul 2010 11:28:51 +0300 Subject: EXT-8246 FIXED Disabling an adding of items into Recent People list in case of incoming ad-hoc chat. REASON: it was implemented in EXT-5694 to add all ad-hoc participants when user send a message to session created himself. Participants IDs are known in this case. But in case of incoming ad-hoc chat those IDs are not known. Container used to get IDs contains only Ad-hoc Session ID. So, (???) is expected in this case in Recent People Panel. FIX: disabling adding of items into Recent People list in case of incoming ad-hoc chat. Note: participants will be added to the list once they send a message to chat. Reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/724/ --HG-- branch : product-engine --- indra/newview/llimview.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'indra/newview') diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index a2b72e7d74..21313f9df7 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -1022,6 +1022,14 @@ void LLIMModel::sendMessage(const std::string& utf8_text, } else { + // IM_SESSION_INVITE means that this is an Ad-hoc incoming chat + // (it can be also Group chat but it is checked above) + // In this case mInitialTargetIDs contains Ad-hoc session ID and it should not be added + // to Recent People to prevent showing of an item with (???)(???). See EXT-8246. + // Concrete participants will be added into this list once they sent message in chat. + if (IM_SESSION_INVITE == dialog) return; + + // implemented adding of all participants of an outgoing to Recent People List. See EXT-5694. for(uuid_vec_t::iterator it = session->mInitialTargetIDs.begin(); it!=session->mInitialTargetIDs.end();++it) { -- cgit v1.2.3 From 50e6e5e49b252b38e48c2020a98e19215a74ca55 Mon Sep 17 00:00:00 2001 From: Mike Antipov Date: Mon, 12 Jul 2010 14:24:18 +0300 Subject: EXT-4301 FIXED Now instance of the LLAvalineListItem is created with "hide phone number" = false. Note: changes in the llparticipantlist.cpp is a fix of initial implementation in 79c0487c2280 changeset. "waiting" is shown instead of phone number. It was not reproduced before because phone was not shown anywhere until this patch. Reviewed by Aimee Walton at https://codereview.productengine.com/secondlife/r/729/ --HG-- branch : product-engine --- indra/newview/llavatarlist.cpp | 2 +- indra/newview/llparticipantlist.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp index 3275d784a3..99156b9d9d 100644 --- a/indra/newview/llavatarlist.cpp +++ b/indra/newview/llavatarlist.cpp @@ -211,7 +211,7 @@ void LLAvatarList::setDirty(bool val /*= true*/, bool force_refresh /*= false*/) void LLAvatarList::addAvalineItem(const LLUUID& item_id, const LLUUID& session_id, const std::string& item_name) { LL_DEBUGS("Avaline") << "Adding avaline item into the list: " << item_name << "|" << item_id << ", session: " << session_id << LL_ENDL; - LLAvalineListItem* item = new LLAvalineListItem; + LLAvalineListItem* item = new LLAvalineListItem(/*hide_number=*/false); item->setAvatarId(item_id, session_id, true, false); item->setName(item_name); diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp index 8fe78a0f81..f2e6969998 100644 --- a/indra/newview/llparticipantlist.cpp +++ b/indra/newview/llparticipantlist.cpp @@ -582,7 +582,7 @@ void LLParticipantList::addAvatarIDExceptAgent(const LLUUID& avatar_id) else { std::string display_name = LLVoiceClient::getInstance()->getDisplayName(avatar_id); - mAvatarList->addAvalineItem(avatar_id, mSpeakerMgr->getSessionID(), display_name.empty() ? display_name : LLTrans::getString("AvatarNameWaiting")); + mAvatarList->addAvalineItem(avatar_id, mSpeakerMgr->getSessionID(), display_name.empty() ? LLTrans::getString("AvatarNameWaiting") : display_name); mAvalineUpdater->watchAvalineCaller(avatar_id); } adjustParticipant(avatar_id); -- cgit v1.2.3 From 4f6badf216144a37dc86c578d832c3a8f84df73e Mon Sep 17 00:00:00 2001 From: Alexei Arabadji Date: Mon, 12 Jul 2010 16:34:38 +0300 Subject: EXT-8124 FIXED Avoided saving processed notifications that spawns script floater. Details: 1 Avoided memory leak in LLScriptFloaterManager caused not destroying processed notifications. 2 Provided destroying notification if user initiate closing script floater and not destroying if viewer exit. reviewed by Mike Antipov at https://codereview.productengine.com/secondlife/r/721/ --HG-- branch : product-engine --- indra/newview/llchiclet.cpp | 4 ++-- indra/newview/llscriptfloater.cpp | 27 +++++++++++++++++++++++---- indra/newview/llscriptfloater.h | 5 +++++ indra/newview/llsyswellwindow.cpp | 4 ++-- 4 files changed, 32 insertions(+), 8 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp index 6897f4ee8e..2826899cb0 100644 --- a/indra/newview/llchiclet.cpp +++ b/indra/newview/llchiclet.cpp @@ -1886,7 +1886,7 @@ void LLScriptChiclet::onMenuItemClicked(const LLSD& user_data) if("end" == action) { - LLScriptFloaterManager::instance().onRemoveNotification(getSessionId()); + LLScriptFloaterManager::instance().removeNotification(getSessionId()); } } @@ -1969,7 +1969,7 @@ void LLInvOfferChiclet::onMenuItemClicked(const LLSD& user_data) if("end" == action) { - LLScriptFloaterManager::instance().onRemoveNotification(getSessionId()); + LLScriptFloaterManager::instance().removeNotification(getSessionId()); } } diff --git a/indra/newview/llscriptfloater.cpp b/indra/newview/llscriptfloater.cpp index b68fc3b002..75797dae81 100644 --- a/indra/newview/llscriptfloater.cpp +++ b/indra/newview/llscriptfloater.cpp @@ -176,7 +176,15 @@ void LLScriptFloater::onClose(bool app_quitting) if(getNotificationId().notNull()) { - LLScriptFloaterManager::getInstance()->onRemoveNotification(getNotificationId()); + // we shouldn't kill notification on exit since it may be used as persistent. + if (app_quitting) + { + LLScriptFloaterManager::getInstance()->onRemoveNotification(getNotificationId()); + } + else + { + LLScriptFloaterManager::getInstance()->removeNotification(getNotificationId()); + } } } @@ -352,7 +360,7 @@ void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id) set_new_message |= !floater->hasFocus(); } - onRemoveNotification(it->first); + removeNotification(it->first); } } @@ -379,6 +387,17 @@ void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id) toggleScriptFloater(notification_id, set_new_message); } +void LLScriptFloaterManager::removeNotification(const LLUUID& notification_id) +{ + LLNotificationPtr notification = LLNotifications::instance().find(notification_id); + if (notification != NULL && !notification->isCancelled()) + { + LLNotificationsUtil::cancel(notification); + } + + onRemoveNotification(notification_id); +} + void LLScriptFloaterManager::onRemoveNotification(const LLUUID& notification_id) { if(notification_id.isNull()) @@ -392,6 +411,8 @@ void LLScriptFloaterManager::onRemoveNotification(const LLUUID& notification_id) LLIMWellWindow::getInstance()->removeObjectRow(notification_id); + mNotifications.erase(notification_id); + // close floater LLScriptFloater* floater = LLFloaterReg::findTypedInstance("script_floater", notification_id); if(floater) @@ -400,8 +421,6 @@ void LLScriptFloaterManager::onRemoveNotification(const LLUUID& notification_id) floater->setNotificationId(LLUUID::null); floater->closeFloater(); } - - mNotifications.erase(notification_id); } void LLScriptFloaterManager::toggleScriptFloater(const LLUUID& notification_id, bool set_new_message) diff --git a/indra/newview/llscriptfloater.h b/indra/newview/llscriptfloater.h index dc0cfc2400..6990234fd7 100644 --- a/indra/newview/llscriptfloater.h +++ b/indra/newview/llscriptfloater.h @@ -64,6 +64,11 @@ public: */ void onAddNotification(const LLUUID& notification_id); + /** + * Removes notification. + */ + void removeNotification(const LLUUID& notification_id); + /** * Handles notification removal. * Removes script notification toast, removes script chiclet, closes script floater diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp index e6b4aeb6c2..1a8c2b8fc0 100644 --- a/indra/newview/llsyswellwindow.cpp +++ b/indra/newview/llsyswellwindow.cpp @@ -371,7 +371,7 @@ LLIMWellWindow::ObjectRowPanel::~ObjectRowPanel() //--------------------------------------------------------------------------------- void LLIMWellWindow::ObjectRowPanel::onClosePanel() { - LLScriptFloaterManager::getInstance()->onRemoveNotification(mChiclet->getSessionId()); + LLScriptFloaterManager::getInstance()->removeNotification(mChiclet->getSessionId()); } void LLIMWellWindow::ObjectRowPanel::initChiclet(const LLUUID& notification_id, bool new_message/* = false*/) @@ -832,7 +832,7 @@ void LLIMWellWindow::closeAllImpl() ObjectRowPanel* obj_panel = dynamic_cast (panel); if (obj_panel) { - LLScriptFloaterManager::instance().onRemoveNotification(*iter); + LLScriptFloaterManager::instance().removeNotification(*iter); } } } -- cgit v1.2.3 From 15c944cd47359931d897f4734991d8849ee77ffe Mon Sep 17 00:00:00 2001 From: Vadim Savchuk Date: Mon, 12 Jul 2010 17:22:29 +0300 Subject: EXT-8209 FIXED Avoid escaping human-readable location when copying text from the location input. Reason: LLSLURL constructor failed to determine invalid SLURLs (see EXT-8335). It's late to try fixing it, so I introduced a workaround. By the way, fixed a regression with SLURLs not being shown unescaped in the location input. Reviewed by Mike Antipov at https://codereview.productengine.com/secondlife/r/726/ --HG-- branch : product-engine --- indra/newview/lllocationinputctrl.cpp | 2 +- indra/newview/llurllineeditorctrl.cpp | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp index b8590d838e..46ebb54786 100644 --- a/indra/newview/lllocationinputctrl.cpp +++ b/indra/newview/lllocationinputctrl.cpp @@ -1052,7 +1052,7 @@ void LLLocationInputCtrl::changeLocationPresentation() //needs unescaped one LLSLURL slurl; LLAgentUI::buildSLURL(slurl, false); - mTextEntry->setText(slurl.getSLURLString()); + mTextEntry->setText(LLURI::unescape(slurl.getSLURLString())); mTextEntry->selectAll(); mMaturityButton->setVisible(FALSE); diff --git a/indra/newview/llurllineeditorctrl.cpp b/indra/newview/llurllineeditorctrl.cpp index 8488527185..333f682e8f 100644 --- a/indra/newview/llurllineeditorctrl.cpp +++ b/indra/newview/llurllineeditorctrl.cpp @@ -89,9 +89,10 @@ void LLURLLineEditor::copyEscapedURLToClipboard() const std::string unescaped_text = wstring_to_utf8str(mText.getWString().substr(left_pos, length)); LLWString text_to_copy; - if (LLSLURL(unescaped_text).isValid()) + // *HACK: Because LLSLURL is currently broken we cannot use it to check if unescaped_text is a valid SLURL (see EXT-8335). + if (LLStringUtil::startsWith(unescaped_text, "http://")) // SLURL text_to_copy = utf8str_to_wstring(LLWeb::escapeURL(unescaped_text)); - else + else // human-readable location text_to_copy = utf8str_to_wstring(unescaped_text); gClipboard.copyFromString( text_to_copy ); -- cgit v1.2.3 From cbf5dc148c7a3fa0669d31c71a0f9701edf08318 Mon Sep 17 00:00:00 2001 From: Igor Borovkov Date: Mon, 12 Jul 2010 17:44:17 +0300 Subject: EXT-8323 FIXED added "name" attributes to facilitate translation Reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/733/ --HG-- branch : product-engine --- indra/newview/skins/default/xui/en/panel_nearby_media.xml | 2 ++ 1 file changed, 2 insertions(+) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/en/panel_nearby_media.xml b/indra/newview/skins/default/xui/en/panel_nearby_media.xml index d8675b3512..584ca8b3b5 100644 --- a/indra/newview/skins/default/xui/en/panel_nearby_media.xml +++ b/indra/newview/skins/default/xui/en/panel_nearby_media.xml @@ -104,6 +104,7 @@ follows="top|left" font="SansSerif" left="10" + name="nearby_media_title" width="100"> Nearby Media @@ -114,6 +115,7 @@ font="SansSerif" top_pad="15" left="10" + name="show_text" width="40"> Show: -- cgit v1.2.3 From 38d763b34fe8411684c0f73627dc018ff9171c87 Mon Sep 17 00:00:00 2001 From: Sergei Litovchuk Date: Mon, 12 Jul 2010 16:46:50 +0300 Subject: EXT-5403 FIXED Disabled auto selecting first filtered item because it takes away selection from the item set by LLTextureCtrl owning the texture picker floater. Reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/679/. --HG-- branch : product-engine --- indra/newview/llfolderview.h | 1 + indra/newview/lltexturectrl.cpp | 4 ++++ 2 files changed, 5 insertions(+) (limited to 'indra/newview') diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h index 55eb543f5f..3944fa53c9 100644 --- a/indra/newview/llfolderview.h +++ b/indra/newview/llfolderview.h @@ -262,6 +262,7 @@ public: BOOL needsAutoSelect() { return mNeedsAutoSelect && !mAutoSelectOverride; } BOOL needsAutoRename() { return mNeedsAutoRename; } void setNeedsAutoRename(BOOL val) { mNeedsAutoRename = val; } + void setAutoSelectOverride(BOOL val) { mAutoSelectOverride = val; } void setCallbackRegistrar(LLUICtrl::CommitCallbackRegistry::ScopedRegistrar* registrar) { mCallbackRegistrar = registrar; } diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index fcb9deb20b..0b02861b75 100644 --- a/indra/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -423,6 +423,10 @@ BOOL LLFloaterTexturePicker::postBuild() mInventoryPanel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS); mInventoryPanel->setAllowMultiSelect(FALSE); + // Disable auto selecting first filtered item because it takes away + // selection from the item set by LLTextureCtrl owning this floater. + mInventoryPanel->getRootFolder()->setAutoSelectOverride(TRUE); + // Commented out to scroll to currently selected texture. See EXT-5403. // // store this filter as the default one // mInventoryPanel->getRootFolder()->getFilter()->markDefault(); -- cgit v1.2.3 From 1c66ca72b54eb01db2c71776526462cfc5e18832 Mon Sep 17 00:00:00 2001 From: Mike Antipov Date: Mon, 12 Jul 2010 17:43:04 +0300 Subject: Backed out changeset: 412588eb49a2 That patch leaded to two issues: * broken message for empty accordion in Teleport History Panel. For now it looks like "Missing String (Didn't find... [Search].)" * there are multiple warnings like "LLTrans::getString: ONCE (10th time seen): Missing String in strings.xml: []" for accordions which have empty default strings (Friends list for ex.) --HG-- branch : product-engine --- indra/newview/skins/default/xui/en/panel_outfits_list.xml | 4 ++-- indra/newview/skins/default/xui/en/strings.xml | 5 ----- 2 files changed, 2 insertions(+), 7 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/en/panel_outfits_list.xml b/indra/newview/skins/default/xui/en/panel_outfits_list.xml index b43aa0a824..27e23440df 100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_list.xml @@ -14,9 +14,9 @@ background_visible="true" bg_alpha_color="DkGray2" bg_opaque_color="DkGray2" - no_matched_tabs_text.value="NoOutfitsTabsMatched" + no_matched_tabs_text.value="Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search]." no_matched_tabs_text.v_pad="10" - no_visible_tabs_text.value="NoOutfits" + no_visible_tabs_text.value="..." follows="all" height="400" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index e43c61b202..1e8d0d2fe5 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -2172,17 +2172,12 @@ Clears (deletes) the media and all params from the given face. [mthnum,datetime,slt]/[day,datetime,slt] - Content of object New Script Content of object The Resident you messaged is in 'busy mode' which means they have requested not to be disturbed. Your message will still be shown in their IM panel for later viewing. - - You don't have any outfits yet. Try [secondlife:///app/search/all/ Search] - Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search]. - (By name) (Resident) -- cgit v1.2.3 From 1cdf970d10198c0f50790226c78e16d2a809a3d3 Mon Sep 17 00:00:00 2001 From: Alexei Arabadji Date: Mon, 12 Jul 2010 17:49:46 +0300 Subject: EXT-8274 FIXED Avoided message truncation on tip toasts. Details: Made max message line count configurable and by default 10 lines. reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/730/ --HG-- branch : product-engine --- indra/newview/app_settings/settings.xml | 11 +++++++++++ indra/newview/llpanelgenerictip.cpp | 6 ++++-- indra/newview/llpanelonlinestatus.cpp | 5 +++-- 3 files changed, 18 insertions(+), 4 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index d51498f6d1..1c32f33290 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -11857,5 +11857,16 @@ Value 1 + TipToastMessageLineCount + + Comment + Max line count of text message on tip toast. + Persist + 1 + Type + S32 + Value + 10 + diff --git a/indra/newview/llpanelgenerictip.cpp b/indra/newview/llpanelgenerictip.cpp index e0658554a4..8ba2e6d01c 100644 --- a/indra/newview/llpanelgenerictip.cpp +++ b/indra/newview/llpanelgenerictip.cpp @@ -35,6 +35,7 @@ #include "llpanelgenerictip.h" #include "llnotifications.h" +#include "llviewercontrol.h" // for gSavedSettings LLPanelGenericTip::LLPanelGenericTip( @@ -45,7 +46,8 @@ LLPanelGenericTip::LLPanelGenericTip( childSetValue("message", notification->getMessage()); - // set line max count to 3 in case of a very long name - snapToMessageHeight(getChild ("message"), 3); + + S32 max_line_count = gSavedSettings.getS32("TipToastMessageLineCount"); + snapToMessageHeight(getChild ("message"), max_line_count); } diff --git a/indra/newview/llpanelonlinestatus.cpp b/indra/newview/llpanelonlinestatus.cpp index 6ba015b11c..b21fd7d385 100644 --- a/indra/newview/llpanelonlinestatus.cpp +++ b/indra/newview/llpanelonlinestatus.cpp @@ -34,6 +34,7 @@ #include "llnotifications.h" #include "llpanelonlinestatus.h" +#include "llviewercontrol.h" // for gSavedSettings LLPanelOnlineStatus::LLPanelOnlineStatus( const LLNotificationPtr& notification) : @@ -54,7 +55,7 @@ LLPanelOnlineStatus::LLPanelOnlineStatus( notification, notification->getResponseTemplate())); } - // set line max count to 3 in case of a very long name - snapToMessageHeight(getChild ("message"), 3); + S32 max_line_count = gSavedSettings.getS32("TipToastMessageLineCount"); + snapToMessageHeight(getChild ("message"), max_line_count); } -- cgit v1.2.3 From 815bc40e8911b286034011759dbb1be7d18c90c2 Mon Sep 17 00:00:00 2001 From: Mike Antipov Date: Mon, 12 Jul 2010 17:53:10 +0300 Subject: Restored "PanelContentsTooltip" string committed in 412588eb49a2 by mistake (and backed out in b9dbc7055df2) --HG-- branch : product-engine --- indra/newview/skins/default/xui/en/strings.xml | 1 + 1 file changed, 1 insertion(+) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index bb9e21b132..e21e083b83 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -2188,6 +2188,7 @@ Clears (deletes) the media and all params from the given face. [mthnum,datetime,slt]/[day,datetime,slt] + Content of object New Script -- cgit v1.2.3 From 8435d93653e4aa3e1c7602c5eaf34b4fed1c74f2 Mon Sep 17 00:00:00 2001 From: Mike Antipov Date: Mon, 12 Jul 2010 18:24:36 +0300 Subject: EXT-8048 FIXED Implemented fix in more proper way after 412588eb49a2 (EXT-8003 FIX, EXT-8048 FIX) is backed out. Restoring string "You don't have any outfits yet. Try [secondlife:///app/search/all/ Search]" for case when there are no any outfits yet after backout. --HG-- branch : product-engine --- indra/newview/skins/default/xui/en/panel_outfits_list.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/en/panel_outfits_list.xml b/indra/newview/skins/default/xui/en/panel_outfits_list.xml index 27e23440df..d18f0d57ca 100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_list.xml @@ -16,7 +16,7 @@ bg_opaque_color="DkGray2" no_matched_tabs_text.value="Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search]." no_matched_tabs_text.v_pad="10" - no_visible_tabs_text.value="..." + no_visible_tabs_text.value="You don't have any outfits yet. Try [secondlife:///app/search/all/ Search]" follows="all" height="400" layout="topleft" -- cgit v1.2.3 From ca9d38eb950d080da2663db7aa11c69b0dd6c115 Mon Sep 17 00:00:00 2001 From: Mike Antipov Date: Mon, 12 Jul 2010 18:44:32 +0300 Subject: EXT-8322 FIXED Added second string for the Favorites folder with name="InvFolder favorite". "Favorites" folder is created on first login for new account. Historically it can have default name started from "f" or "F" on different accounts. So, we have to localize both of them with the same value. Reviewed by Loren Shih at https://codereview.productengine.com/secondlife/r/731/ --HG-- branch : product-engine --- indra/newview/skins/default/xui/en/strings.xml | 3 +++ 1 file changed, 3 insertions(+) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index e21e083b83..b91acbe27d 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -1956,6 +1956,9 @@ Clears (deletes) the media and all params from the given face. Animations Gestures Favorites + + Favorites Current Outfit My Outfits Accessories -- cgit v1.2.3 From 88f055ebf6ccff7826368da2aad0d1d14a0c581a Mon Sep 17 00:00:00 2001 From: Andrew Polunin Date: Mon, 12 Jul 2010 18:54:11 +0300 Subject: EXT-7884 (\"Set Default Upload Permissions\" may make more sense in the Upload sub-menu) - In viewer menu 'Set Default Upload Permissions' menu item was moved from 'Options' menu to the 'Upload' menu. - 'Set Default Upload Permissions' menu item was added to the inventory menu. - Removed stray separators. Reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/734/ --HG-- branch : product-engine --- .../newview/skins/default/xui/en/menu_inventory_add.xml | 9 +++++++-- indra/newview/skins/default/xui/en/menu_viewer.xml | 16 +++++++--------- 2 files changed, 14 insertions(+), 11 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/en/menu_inventory_add.xml b/indra/newview/skins/default/xui/en/menu_inventory_add.xml index 5ad099e2d9..ae98abf4fb 100644 --- a/indra/newview/skins/default/xui/en/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory_add.xml @@ -50,8 +50,13 @@ function="File.UploadBulk" parameter="" /> - + + + - - - @@ -873,8 +866,13 @@ function="File.UploadBulk" parameter="" /> - + + + Date: Sat, 10 Jul 2010 00:34:36 +0300 Subject: EXT-8190 PARTIAL FIX Fixed loading indicator infinite spins upon pressing 'Save' for outfit with non-link items. - Added inventory collector functor to select items by their actual type. - Fixed outfit "dirtiness" calculation so only link items are checked. Reviewed by Neal Orman at https://codereview.productengine.com/secondlife/r/728/. --HG-- branch : product-engine --- indra/newview/llappearancemgr.cpp | 22 +++++++--------------- indra/newview/llinventoryfunctions.cpp | 13 +++++++++++++ indra/newview/llinventoryfunctions.h | 19 +++++++++++++++++++ 3 files changed, 39 insertions(+), 15 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 43f6be42b6..562401cd89 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -2179,17 +2179,19 @@ void LLAppearanceMgr::updateIsDirty() } else { + LLIsOfAssetType collector = LLIsOfAssetType(LLAssetType::AT_LINK); + LLInventoryModel::cat_array_t cof_cats; LLInventoryModel::item_array_t cof_items; - gInventory.collectDescendents(cof, cof_cats, cof_items, - LLInventoryModel::EXCLUDE_TRASH); + gInventory.collectDescendentsIf(cof, cof_cats, cof_items, + LLInventoryModel::EXCLUDE_TRASH, collector); LLInventoryModel::cat_array_t outfit_cats; LLInventoryModel::item_array_t outfit_items; - gInventory.collectDescendents(base_outfit, outfit_cats, outfit_items, - LLInventoryModel::EXCLUDE_TRASH); + gInventory.collectDescendentsIf(base_outfit, outfit_cats, outfit_items, + LLInventoryModel::EXCLUDE_TRASH, collector); - if(outfit_items.count() != cof_items.count() -1) + if(outfit_items.count() != cof_items.count()) { // Current outfit folder should have one more item than the outfit folder. // this one item is the link back to the outfit folder itself. @@ -2197,16 +2199,6 @@ void LLAppearanceMgr::updateIsDirty() return; } - //getting rid of base outfit folder link to simplify comparison - for (LLInventoryModel::item_array_t::iterator it = cof_items.begin(); it != cof_items.end(); ++it) - { - if (*it == base_outfit_item) - { - cof_items.erase(it); - break; - } - } - //"dirty" - also means a difference in linked UUIDs and/or a difference in wearables order (links' descriptions) std::sort(cof_items.begin(), cof_items.end(), sort_by_linked_uuid); std::sort(outfit_items.begin(), outfit_items.end(), sort_by_linked_uuid); diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp index 2d11337955..f20acbd016 100644 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -507,6 +507,19 @@ bool LLIsNotType::operator()(LLInventoryCategory* cat, LLInventoryItem* item) return TRUE; } +bool LLIsOfAssetType::operator()(LLInventoryCategory* cat, LLInventoryItem* item) +{ + if(mType == LLAssetType::AT_CATEGORY) + { + if(cat) return TRUE; + } + if(item) + { + if(item->getActualType() == mType) return TRUE; + } + return FALSE; +} + bool LLIsTypeWithPermissions::operator()(LLInventoryCategory* cat, LLInventoryItem* item) { if(mType == LLAssetType::AT_CATEGORY) diff --git a/indra/newview/llinventoryfunctions.h b/indra/newview/llinventoryfunctions.h index a6d7fcd956..4a7721098d 100644 --- a/indra/newview/llinventoryfunctions.h +++ b/indra/newview/llinventoryfunctions.h @@ -174,6 +174,25 @@ protected: LLAssetType::EType mType; }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Class LLIsOfAssetType +// +// Implementation of a LLInventoryCollectFunctor which returns TRUE if +// the item or category is of asset type passed in during construction. +// Link types are treated as links, not as the types they point to. +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +class LLIsOfAssetType : public LLInventoryCollectFunctor +{ +public: + LLIsOfAssetType(LLAssetType::EType type) : mType(type) {} + virtual ~LLIsOfAssetType() {} + virtual bool operator()(LLInventoryCategory* cat, + LLInventoryItem* item); +protected: + LLAssetType::EType mType; +}; + class LLIsTypeWithPermissions : public LLInventoryCollectFunctor { public: -- cgit v1.2.3