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(+) 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(-) 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(-) 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(-) 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(+) 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(+) 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 dcf21a1287ed20806260aa38959b6fb585ee139a Mon Sep 17 00:00:00 2001 From: Vadim Savchuk Date: Mon, 12 Jul 2010 16:52:34 +0300 Subject: Fixed Linux build. --HG-- branch : product-engine --- indra/llui/lluictrlfactory.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llui/lluictrlfactory.h b/indra/llui/lluictrlfactory.h index ff99712c5f..dc43b311a7 100644 --- a/indra/llui/lluictrlfactory.h +++ b/indra/llui/lluictrlfactory.h @@ -182,7 +182,7 @@ public: void popFactoryFunctions(); template - static T* createWidget(typename const T::Params& params, LLView* parent = NULL) + static T* createWidget(const typename T::Params& params, LLView* parent = NULL) { T* widget = NULL; -- 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/llui/llaccordionctrl.cpp | 5 +---- indra/newview/skins/default/xui/en/panel_outfits_list.xml | 4 ++-- indra/newview/skins/default/xui/en/strings.xml | 5 ----- 3 files changed, 3 insertions(+), 11 deletions(-) diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp index 28125ccaaf..673631f99a 100644 --- a/indra/llui/llaccordionctrl.cpp +++ b/indra/llui/llaccordionctrl.cpp @@ -40,8 +40,6 @@ #include "llfocusmgr.h" #include "lllocalcliprect.h" -#include "lltrans.h" - #include "boost/bind.hpp" static const S32 DRAGGER_BAR_MARGIN = 4; @@ -74,7 +72,6 @@ LLAccordionCtrl::LLAccordionCtrl(const Params& params):LLPanel(params) { initNoTabsWidget(params.no_matched_tabs_text); - mNoVisibleTabsOrigString = LLTrans::getString(params.no_visible_tabs_text.initial_value().asString()); mSingleExpansion = params.single_expansion; if(mFitParent && !mSingleExpansion) { @@ -389,7 +386,7 @@ void LLAccordionCtrl::initNoTabsWidget(const LLTextBox::Params& tb_params) { LLTextBox::Params tp = tb_params; tp.rect(getLocalRect()); - mNoMatchedTabsOrigString = LLTrans::getString(tp.initial_value().asString()); + mNoMatchedTabsOrigString = tp.initial_value().asString(); mNoVisibleTabsHelpText = LLUICtrlFactory::create(tp, this); } 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(-) 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(+) 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(-) 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(+) 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(-) 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(-) 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 From efb72e66d0e091121e9e616125b3162fb69e97b5 Mon Sep 17 00:00:00 2001 From: Aimee Linden Date: Mon, 12 Jul 2010 17:54:02 +0100 Subject: SNOW-484/DEV-51808 FIXED Recursive animations can crash viewer --- doc/contributions.txt | 1 + indra/llcharacter/llkeyframemotion.cpp | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/doc/contributions.txt b/doc/contributions.txt index 8c6bd5e0fe..c8125c675f 100644 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -517,6 +517,7 @@ Ringo Tuxing Robin Cornelius SNOW-108 SNOW-204 + SNOW-484 VWR-2488 VWR-9557 VWR-11128 diff --git a/indra/llcharacter/llkeyframemotion.cpp b/indra/llcharacter/llkeyframemotion.cpp index f4dc3b927b..7bc9e97eb1 100644 --- a/indra/llcharacter/llkeyframemotion.cpp +++ b/indra/llcharacter/llkeyframemotion.cpp @@ -1248,6 +1248,12 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp) return FALSE; } + if(mJointMotionList->mEmoteName==mID.asString()) + { + llwarns << "Malformed animation mEmoteName==mID" << llendl; + return FALSE; + } + //------------------------------------------------------------------------- // get loop //------------------------------------------------------------------------- -- cgit v1.2.3 From 2630252a9fb7e1bc884386546d9ba13da36b008c Mon Sep 17 00:00:00 2001 From: "Nyx (Neal Orman)" Date: Mon, 12 Jul 2010 16:22:48 -0400 Subject: EXT-8151 FIX multi-selection breakage Original patch merged poorly with a coverity cleanup, resulting in us not passing the callback on to the proper functions for clothing (we did for bodyparts). Added the callback and wearing clothing works again! Code reviewed by Monroe --- indra/newview/llappearancemgr.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 43f6be42b6..df048fef02 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -995,7 +995,7 @@ bool LLAppearanceMgr::wearItemOnAvatar(const LLUUID& item_id_to_wear, bool do_up { removeCOFItemLinks(gAgentWearables.getWearableItemID(item_to_wear->getWearableType(), wearable_count-1), false); } - addCOFItemLink(item_to_wear, do_update); + addCOFItemLink(item_to_wear, do_update, cb); } break; case LLAssetType::AT_BODYPART: -- cgit v1.2.3 From a2b9af626f2faa486a4fea13f10f1c8c2cc069c0 Mon Sep 17 00:00:00 2001 From: Richard Nelson Date: Mon, 12 Jul 2010 13:30:05 -0700 Subject: fix for idiotic gcc --- indra/newview/llviewerinventory.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h index dc3d3f7423..1dd6597388 100644 --- a/indra/newview/llviewerinventory.h +++ b/indra/newview/llviewerinventory.h @@ -302,7 +302,7 @@ private: class LLInventoryCallbackManager : public LLDestroyClass { - friend LLDestroyClass; + friend class LLDestroyClass; public: LLInventoryCallbackManager(); ~LLInventoryCallbackManager(); -- cgit v1.2.3 From 68982388d365b779e1f68e7e40fc71c11e278061 Mon Sep 17 00:00:00 2001 From: Monroe Linden Date: Mon, 12 Jul 2010 13:35:21 -0700 Subject: Fix for EXT-8314 Made LLPipeline::generateWaterReflection() not try to call LLVOAvatarSelf::updateAttachmentVisibility() if isAgentAvatarValid() returns false. Reviewed by Nyx at http://codereview.lindenlab.com/2585007 --- indra/newview/pipeline.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 7d0f763bd1..b578cb9f69 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -7111,7 +7111,7 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in) if (LLPipeline::sWaterReflections && assertInitialized() && LLDrawPoolWater::sNeedsReflectionUpdate) { BOOL skip_avatar_update = FALSE; - if (gAgentCamera.getCameraAnimating() || gAgentCamera.getCameraMode() != CAMERA_MODE_MOUSELOOK) + if (!isAgentAvatarValid() || gAgentCamera.getCameraAnimating() || gAgentCamera.getCameraMode() != CAMERA_MODE_MOUSELOOK) { skip_avatar_update = TRUE; } -- cgit v1.2.3 From 4797f54b0fe456c317752da14c32bcdd203001e8 Mon Sep 17 00:00:00 2001 From: Richard Nelson Date: Mon, 12 Jul 2010 15:04:56 -0700 Subject: EXT-8305 FIX [crashhunters] Crash in LLTabContainer::findChildView --- indra/newview/llpanelmaininventory.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp index 29ce3449d1..3e12f0ba9a 100644 --- a/indra/newview/llpanelmaininventory.cpp +++ b/indra/newview/llpanelmaininventory.cpp @@ -197,14 +197,15 @@ BOOL LLPanelMainInventory::postBuild() mFilterEditor->setCommitCallback(boost::bind(&LLPanelMainInventory::onFilterEdit, this, _2)); } + initListCommandsHandlers(); + // *TODO:Get the cost info from the server const std::string upload_cost("10"); - childSetLabelArg("Upload Image", "[COST]", upload_cost); - childSetLabelArg("Upload Sound", "[COST]", upload_cost); - childSetLabelArg("Upload Animation", "[COST]", upload_cost); - childSetLabelArg("Bulk Upload", "[COST]", upload_cost); + mMenuAdd->getChild("Upload Image")->setLabelArg("[COST]", upload_cost); + mMenuAdd->getChild("Upload Sound")->setLabelArg("[COST]", upload_cost); + mMenuAdd->getChild("Upload Animation")->setLabelArg("[COST]", upload_cost); + mMenuAdd->getChild("Bulk Upload")->setLabelArg("[COST]", upload_cost); - initListCommandsHandlers(); return TRUE; } -- cgit v1.2.3 From fd11c24de01b66ba862ad048b0b7dad827d78005 Mon Sep 17 00:00:00 2001 From: Eli Linden Date: Tue, 13 Jul 2010 11:45:07 -0700 Subject: ND-47671 WIP FR PT IT linguistic --- .../skins/default/xui/fr/panel_group_general.xml | 2 +- .../skins/default/xui/it/floater_about_land.xml | 10 ++--- .../skins/default/xui/it/floater_buy_currency.xml | 6 +-- .../newview/skins/default/xui/it/panel_people.xml | 2 +- .../default/xui/pt/floater_preview_gesture.xml | 22 +++++------ .../newview/skins/default/xui/pt/floater_tools.xml | 44 +++++++++++----------- .../skins/default/xui/pt/floater_voice_effect.xml | 2 +- .../skins/default/xui/pt/floater_world_map.xml | 8 ++-- .../skins/default/xui/pt/menu_inventory.xml | 8 ++-- .../skins/default/xui/pt/panel_landmark_info.xml | 16 ++++---- .../skins/default/xui/pt/panel_place_profile.xml | 16 ++++---- .../default/xui/pt/panel_preferences_privacy.xml | 4 +- .../newview/skins/default/xui/pt/role_actions.xml | 4 +- 13 files changed, 72 insertions(+), 72 deletions(-) diff --git a/indra/newview/skins/default/xui/fr/panel_group_general.xml b/indra/newview/skins/default/xui/fr/panel_group_general.xml index ec6d995274..a2655dcd45 100644 --- a/indra/newview/skins/default/xui/fr/panel_group_general.xml +++ b/indra/newview/skins/default/xui/fr/panel_group_general.xml @@ -48,7 +48,7 @@ Faites glisser le pointeur de la souris sur les options pour en savoir plus. - - Sélectionner une catégorie de contenu - + - Catégorie de contenu - diff --git a/indra/newview/skins/default/xui/it/floater_about_land.xml b/indra/newview/skins/default/xui/it/floater_about_land.xml index c9a004be9f..af83a38746 100644 --- a/indra/newview/skins/default/xui/it/floater_about_land.xml +++ b/indra/newview/skins/default/xui/it/floater_about_land.xml @@ -320,7 +320,7 @@ Solamente terreni più grandi possono essere abilitati nella ricerca. Permetti ad altri residenti di: - + Creare oggetti: @@ -328,7 +328,7 @@ Solamente terreni più grandi possono essere abilitati nella ricerca. - Entrata oggetti: + Immissione oggetti: @@ -340,9 +340,9 @@ Solamente terreni più grandi possono essere abilitati nella ricerca. Opzioni per il terreno: - + - + @@ -421,7 +421,7 @@ Texture: - pixels + pixel Opzioni diff --git a/indra/newview/skins/default/xui/it/floater_buy_currency.xml b/indra/newview/skins/default/xui/it/floater_buy_currency.xml index 1327e8b172..0a499a6c44 100644 --- a/indra/newview/skins/default/xui/it/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/it/floater_buy_currency.xml @@ -1,7 +1,7 @@ - Acquista [LINDENS] L$ per circa [LOCALAMOUNT] + acquistare [LINDENS] L$ per circa [LOCALAMOUNT] Ti servono più L$ @@ -57,8 +57,8 @@ Non stai acquistando abbastanza L$. Aumenta l'importo. -