From b6b0465bbcb4c05e1c0a000224dd03b54afa477f Mon Sep 17 00:00:00 2001 From: Alexei Arabadji Date: Fri, 9 Jul 2010 17:19:22 +0300 Subject: EXT-7911 FIXED Avoided saving unresolved LLDialog notifications. Details: Made ScriptDialogGroup, ScriptDialog, LoadWebPage notifications non-persistent. reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/711/ --HG-- branch : product-engine --- indra/newview/skins/default/xui/en/notifications.xml | 3 --- 1 file changed, 3 deletions(-) (limited to 'indra') diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 04a8a02ecd..60d3fb708e 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -5493,7 +5493,6 @@ If you stay in this region you will be logged out. Load web page [URL]? @@ -5593,7 +5592,6 @@ Grant this request? [FIRST] [LAST]'s '[TITLE]' [MESSAGE] @@ -5608,7 +5606,6 @@ Grant this request? [GROUPNAME]'s '[TITLE]' [MESSAGE] -- cgit v1.2.3 From eaf114fdfd7967178c168c907ca24f2faa97a7cf Mon Sep 17 00:00:00 2001 From: Igor Borovkov Date: Fri, 9 Jul 2010 17:47:33 +0300 Subject: EXT-7786 FIXED COF Wearables List is updated only when visible (panel outfit eidt) Every single delete/create operation in the COF causes LLCOFWearables to be updated - on each update its contained LLFlatListView is repopulated. That means massive creation of LLPanel's instances (LLUICtrlFactory::buildPanel(...)). Half of the panel creation time is spent in the EXPAT xml library on parsing the .xml files of the panel item. I've forbidden updates of LLCOFWearables when Panel Outfit Edit is not in the visible chain. Panel Outfit Edit is now updated only when it is visible Also LLCOFWearables refures to refresh its content if COF category version hasn't been changed since the last refresh. Reviewed by Neal Orman at https://codereview.productengine.com/secondlife/r/715 --HG-- branch : product-engine --- indra/newview/llcofwearables.cpp | 22 ++++++++++++++++++++-- indra/newview/llcofwearables.h | 4 ++++ indra/newview/llpaneloutfitedit.cpp | 19 ++++++++++++++++--- indra/newview/llpaneloutfitedit.h | 3 ++- 4 files changed, 42 insertions(+), 6 deletions(-) (limited to 'indra') diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp index 4c0f51056d..f613fae42d 100644 --- a/indra/newview/llcofwearables.cpp +++ b/indra/newview/llcofwearables.cpp @@ -283,7 +283,8 @@ LLCOFWearables::LLCOFWearables() : LLPanel(), mClothingTab(NULL), mAttachmentsTab(NULL), mBodyPartsTab(NULL), - mLastSelectedTab(NULL) + mLastSelectedTab(NULL), + mCOFVersion(-1) { mClothingMenu = new CofClothingContextMenu(this); mAttachmentMenu = new CofAttachmentContextMenu(this); @@ -378,6 +379,23 @@ void LLCOFWearables::onAccordionTabStateChanged(LLUICtrl* ctrl, const LLSD& expa void LLCOFWearables::refresh() { + const LLUUID cof_id = LLAppearanceMgr::instance().getCOF(); + if (cof_id.isNull()) + { + llwarns << "COF ID cannot be NULL" << llendl; + return; + } + + LLViewerInventoryCategory* catp = gInventory.getCategory(cof_id); + if (!catp) + { + llwarns << "COF category cannot be NULL" << llendl; + return; + } + + if (mCOFVersion == catp->getVersion()) return; + mCOFVersion = catp->getVersion(); + typedef std::vector values_vector_t; typedef std::map selection_map_t; @@ -393,7 +411,7 @@ void LLCOFWearables::refresh() LLInventoryModel::cat_array_t cats; LLInventoryModel::item_array_t cof_items; - gInventory.collectDescendents(LLAppearanceMgr::getInstance()->getCOF(), cats, cof_items, LLInventoryModel::EXCLUDE_TRASH); + gInventory.collectDescendents(cof_id, cats, cof_items, LLInventoryModel::EXCLUDE_TRASH); populateAttachmentsAndBodypartsLists(cof_items); diff --git a/indra/newview/llcofwearables.h b/indra/newview/llcofwearables.h index 0518d59df3..d005b75eaa 100644 --- a/indra/newview/llcofwearables.h +++ b/indra/newview/llcofwearables.h @@ -81,6 +81,7 @@ public: LLPanel* getSelectedItem(); void getSelectedItems(std::vector& selected_items) const; + /* Repopulate the COF wearables list if the COF category has been changed since the last refresh */ void refresh(); void clear(); @@ -123,6 +124,9 @@ protected: LLListContextMenu* mClothingMenu; LLListContextMenu* mAttachmentMenu; LLListContextMenu* mBodyPartMenu; + + /* COF category version since last refresh */ + S32 mCOFVersion; }; diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp index f8350a56ef..827ecb1c92 100644 --- a/indra/newview/llpaneloutfitedit.cpp +++ b/indra/newview/llpaneloutfitedit.cpp @@ -263,7 +263,7 @@ LLPanelOutfitEdit::LLPanelOutfitEdit() observer.addBOFReplacedCallback(boost::bind(&LLPanelOutfitEdit::updateCurrentOutfitName, this)); observer.addBOFChangedCallback(boost::bind(&LLPanelOutfitEdit::updateVerbs, this)); observer.addOutfitLockChangedCallback(boost::bind(&LLPanelOutfitEdit::updateVerbs, this)); - observer.addCOFChangedCallback(boost::bind(&LLPanelOutfitEdit::update, this)); + observer.addCOFChangedCallback(boost::bind(&LLPanelOutfitEdit::onCOFChanged, this)); gAgentWearables.addLoadingStartedCallback(boost::bind(&LLPanelOutfitEdit::onOutfitChanging, this, true)); gAgentWearables.addLoadedCallback(boost::bind(&LLPanelOutfitEdit::onOutfitChanging, this, false)); @@ -331,7 +331,7 @@ BOOL LLPanelOutfitEdit::postBuild() childSetCommitCallback("shop_btn_1", boost::bind(&LLPanelOutfitEdit::onShopButtonClicked, this), NULL); childSetCommitCallback("shop_btn_2", boost::bind(&LLPanelOutfitEdit::onShopButtonClicked, this), NULL); - setVisibleCallback(boost::bind(&LLPanelOutfitEdit::onVisibilityChange, this)); + setVisibleCallback(boost::bind(&LLPanelOutfitEdit::onVisibilityChange, this, _2)); mCOFWearables = getChild("cof_wearables_list"); mCOFWearables->setCommitCallback(boost::bind(&LLPanelOutfitEdit::filterWearablesBySelectedItem, this)); @@ -583,11 +583,16 @@ void LLPanelOutfitEdit::onPlusBtnClicked(void) } } -void LLPanelOutfitEdit::onVisibilityChange() +void LLPanelOutfitEdit::onVisibilityChange(const LLSD &in_visible_chain) { showAddWearablesPanel(false); mWearableItemsList->resetSelection(); mInventoryItemsPanel->clearSelection(); + + if (in_visible_chain.asBoolean()) + { + update(); + } } void LLPanelOutfitEdit::onAddWearableClicked(void) @@ -1014,5 +1019,13 @@ void LLPanelOutfitEdit::getSelectedItemsUUID(uuid_vec_t& uuid_list) // return selected_id; } +void LLPanelOutfitEdit::onCOFChanged() +{ + //the panel is only updated when is visible to a user + if (!isInVisibleChain()) return; + + update(); +} + // EOF diff --git a/indra/newview/llpaneloutfitedit.h b/indra/newview/llpaneloutfitedit.h index fb9a35411c..1eef211276 100644 --- a/indra/newview/llpaneloutfitedit.h +++ b/indra/newview/llpaneloutfitedit.h @@ -148,7 +148,7 @@ public: void onInventorySelectionChange(); void onPlusBtnClicked(void); - void onVisibilityChange(); + void onVisibilityChange(const LLSD &in_visible_chain); void applyFolderViewFilter(EFolderViewItemType type); void applyListViewFilter(EListViewItemType type); @@ -196,6 +196,7 @@ private: void onOutfitChanging(bool started); void getSelectedItemsUUID(uuid_vec_t& uuid_list); void getCurrentItemUUID(LLUUID& selected_id); + void onCOFChanged(); LLTextBox* mCurrentOutfitName; LLTextBox* mStatus; -- cgit v1.2.3 From 96631f6d4ef15f77775ef643091b4d62579dca3e Mon Sep 17 00:00:00 2001 From: Igor Borovkov Date: Fri, 9 Jul 2010 19:08:46 +0300 Subject: EXT-7406 FIXED excluded inventory links from Add More list view (panel outfit edit) Reviewed by Neal Orman at https://codereview.productengine.com/secondlife/r/723 --HG-- branch : product-engine --- indra/newview/llinventoryfunctions.h | 17 ++++++++++++++--- indra/newview/llpaneloutfitedit.cpp | 6 +++--- 2 files changed, 17 insertions(+), 6 deletions(-) (limited to 'indra') diff --git a/indra/newview/llinventoryfunctions.h b/indra/newview/llinventoryfunctions.h index 1c3f82c531..a6d7fcd956 100644 --- a/indra/newview/llinventoryfunctions.h +++ b/indra/newview/llinventoryfunctions.h @@ -271,9 +271,7 @@ public: }; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// Class LLFindNonLinksByMask -// -// +// Class LLFindByMask //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ class LLFindByMask : public LLInventoryCollectFunctor { @@ -382,6 +380,19 @@ public: } }; +/* Filters out items of a particular asset type */ +class LLIsTypeActual : public LLIsType +{ +public: + LLIsTypeActual(LLAssetType::EType type) : LLIsType(type) {} + virtual ~LLIsTypeActual() {} + virtual bool operator()(LLInventoryCategory* cat, LLInventoryItem* item) + { + if (item && item->getIsLinkType()) return false; + return LLIsType::operator()(cat, item); + } +}; + // Collect non-removable folders and items. class LLFindNonRemovableObjects : public LLInventoryCollectFunctor { diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp index 827ecb1c92..31c427d2ba 100644 --- a/indra/newview/llpaneloutfitedit.cpp +++ b/indra/newview/llpaneloutfitedit.cpp @@ -297,9 +297,9 @@ BOOL LLPanelOutfitEdit::postBuild() mFolderViewItemTypes[FVIT_ATTACHMENT] = LLLookItemType(getString("Filter.Objects"), ATTACHMENT_MASK); //order is important, see EListViewItemType for order information - mListViewItemTypes.push_back(new LLFilterItem(getString("Filter.All"), new LLFindByMask(ALL_ITEMS_MASK))); - mListViewItemTypes.push_back(new LLFilterItem(getString("Filter.Clothing"), new LLIsType(LLAssetType::AT_CLOTHING))); - mListViewItemTypes.push_back(new LLFilterItem(getString("Filter.Bodyparts"), new LLIsType(LLAssetType::AT_BODYPART))); + mListViewItemTypes.push_back(new LLFilterItem(getString("Filter.All"), new LLFindNonLinksByMask(ALL_ITEMS_MASK))); + mListViewItemTypes.push_back(new LLFilterItem(getString("Filter.Clothing"), new LLIsTypeActual(LLAssetType::AT_CLOTHING))); + mListViewItemTypes.push_back(new LLFilterItem(getString("Filter.Bodyparts"), new LLIsTypeActual(LLAssetType::AT_BODYPART))); mListViewItemTypes.push_back(new LLFilterItem(getString("Filter.Objects"), new LLFindByMask(ATTACHMENT_MASK)));; mListViewItemTypes.push_back(new LLFilterItem(LLTrans::getString("shape"), new LLFindActualWearablesOfType(LLWearableType::WT_SHAPE))); mListViewItemTypes.push_back(new LLFilterItem(LLTrans::getString("skin"), new LLFindActualWearablesOfType(LLWearableType::WT_SKIN))); -- cgit v1.2.3 From 331ccee1f5cea9fab944c934b3beeb70fc7f6504 Mon Sep 17 00:00:00 2001 From: Vadim Savchuk Date: Fri, 9 Jul 2010 20:10:26 +0300 Subject: EXT-8259 FIXED Fixed occasional truncation of the "More" link in expandable textboxes. The bug seems to happen when the text contains trailing newlines. So the workaround is to strip those newlines. I use a workaround because a proper fix might require changing LLTextBase which is undesirable at this point. Reviewed by Mike Antipov at https://codereview.productengine.com/secondlife/r/722/ --HG-- branch : product-engine --- indra/newview/llexpandabletextbox.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'indra') diff --git a/indra/newview/llexpandabletextbox.cpp b/indra/newview/llexpandabletextbox.cpp index 149ba2478d..92fda31cc2 100644 --- a/indra/newview/llexpandabletextbox.cpp +++ b/indra/newview/llexpandabletextbox.cpp @@ -140,7 +140,13 @@ void LLExpandableTextBox::LLTextBoxEx::setText(const LLStringExplicit& text,cons // LLTextBox::setText will obliterate the expander segment, so make sure // we generate it again by clearing mExpanderVisible mExpanderVisible = false; - LLTextEditor::setText(text, input_params); + + // Workaround for EXT-8259: trim text before rendering it. + { + std::string trimmed_text(text); + LLStringUtil::trim(trimmed_text); + LLTextEditor::setText(trimmed_text, input_params); + } // text contents have changed, segments are cleared out // so hide the expander and determine if we need it -- cgit v1.2.3 From 75c1c70b2595ff28d41fb059b7fbce0234c975e7 Mon Sep 17 00:00:00 2001 From: Eli Linden Date: Fri, 9 Jul 2010 10:52:57 -0700 Subject: ND-47580 WIP FR linguistic --- indra/newview/skins/default/xui/fr/floater_pay.xml | 2 +- indra/newview/skins/default/xui/fr/floater_pay_object.xml | 2 +- indra/newview/skins/default/xui/fr/floater_snapshot.xml | 6 +++--- indra/newview/skins/default/xui/fr/menu_bottomtray.xml | 2 +- indra/newview/skins/default/xui/fr/menu_landmark.xml | 4 ++-- indra/newview/skins/default/xui/fr/menu_picks_plus.xml | 2 +- indra/newview/skins/default/xui/fr/menu_place.xml | 2 +- .../newview/skins/default/xui/fr/menu_places_gear_landmark.xml | 2 +- indra/newview/skins/default/xui/fr/notifications.xml | 2 +- indra/newview/skins/default/xui/fr/panel_group_land_money.xml | 2 +- indra/newview/skins/default/xui/fr/panel_group_notices.xml | 2 +- indra/newview/skins/default/xui/fr/panel_me.xml | 2 +- indra/newview/skins/default/xui/fr/panel_picks.xml | 2 +- .../skins/default/xui/fr/panel_preferences_graphics1.xml | 4 ++-- indra/newview/skins/default/xui/fr/panel_region_general.xml | 2 +- indra/newview/skins/default/xui/fr/role_actions.xml | 10 +++++----- 16 files changed, 24 insertions(+), 24 deletions(-) (limited to 'indra') diff --git a/indra/newview/skins/default/xui/fr/floater_pay.xml b/indra/newview/skins/default/xui/fr/floater_pay.xml index 30e510efb5..06cc7df522 100644 --- a/indra/newview/skins/default/xui/fr/floater_pay.xml +++ b/indra/newview/skins/default/xui/fr/floater_pay.xml @@ -18,7 +18,7 @@