diff options
Diffstat (limited to 'indra')
51 files changed, 297 insertions, 172 deletions
diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp index 673631f99a..28125ccaaf 100644 --- a/indra/llui/llaccordionctrl.cpp +++ b/indra/llui/llaccordionctrl.cpp @@ -40,6 +40,8 @@ #include "llfocusmgr.h" #include "lllocalcliprect.h" +#include "lltrans.h" + #include "boost/bind.hpp" static const S32 DRAGGER_BAR_MARGIN = 4; @@ -72,6 +74,7 @@ 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) { @@ -386,7 +389,7 @@ void LLAccordionCtrl::initNoTabsWidget(const LLTextBox::Params& tb_params) { LLTextBox::Params tp = tb_params; tp.rect(getLocalRect()); - mNoMatchedTabsOrigString = tp.initial_value().asString(); + mNoMatchedTabsOrigString = LLTrans::getString(tp.initial_value().asString()); mNoVisibleTabsHelpText = LLUICtrlFactory::create<LLTextBox>(tp, this); } diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt index 1c763453dc..ccdb109d95 100644 --- a/indra/newview/featuretable.txt +++ b/indra/newview/featuretable.txt @@ -1,4 +1,4 @@ -version 21 +version 22 // NOTE: This is mostly identical to featuretable_mac.txt with a few differences // Should be combined into one table @@ -59,6 +59,7 @@ RenderTextureMemoryMultiple 1 1.0 RenderShaderLightingMaxLevel 1 3 SkyUseClassicClouds 1 1 WatchdogDisabled 1 1 +RenderUseStreamVBO 1 1 // @@ -431,6 +432,10 @@ list ATIOldDriver RenderAvatarVP 0 0 RenderAvatarCloth 0 0 +// ATI cards generally perform better when not using VBOs for streaming data + +list ATI +RenderUseStreamVBO 1 0 /// Tweaked NVIDIA diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 345953f2e9..4e5fdb1219 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -3234,6 +3234,9 @@ bool LLAgent::teleportCore(bool is_local) // hide land floater too - it'll be out of date LLFloaterReg::hideInstance("about_land"); + // hide the search floater (EXT-8276) + LLFloaterReg::hideInstance("search"); + LLViewerParcelMgr::getInstance()->deselectLand(); LLViewerMediaFocus::getInstance()->clearFocus(); diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp index c70bbb985f..1ef9e34f87 100644 --- a/indra/newview/llagentcamera.cpp +++ b/indra/newview/llagentcamera.cpp @@ -2065,6 +2065,7 @@ void LLAgentCamera::changeCameraToMouselook(BOOL animate) // Menus should not remain open on switching to mouselook... LLMenuGL::sMenuContainer->hideMenus(); + LLUI::clearPopups(); // unpause avatar animation gAgent.unpauseAnimation(); diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index f8cff42412..43f6be42b6 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -403,7 +403,10 @@ void LLWearableHoldingPattern::checkMissingWearables() for (S32 type = 0; type < LLWearableType::WT_COUNT; ++type) { - llinfos << "type " << type << " requested " << requested_by_type[type] << " found " << found_by_type[type] << llendl; + if (requested_by_type[type] > found_by_type[type]) + { + llwarns << "got fewer wearables than requested, type " << type << ": requested " << requested_by_type[type] << ", found " << found_by_type[type] << llendl; + } if (found_by_type[type] > 0) continue; if ( @@ -670,12 +673,15 @@ bool LLWearableHoldingPattern::pollMissingWearables() bool timed_out = isTimedOut(); bool missing_completed = isMissingCompleted(); bool done = timed_out || missing_completed; - - llinfos << "polling missing wearables, waiting for items " << mTypesToRecover.size() - << " links " << mTypesToLink.size() - << " wearables, timed out " << timed_out - << " elapsed " << mWaitTime.getElapsedTimeF32() - << " done " << done << llendl; + + if (!done) + { + llinfos << "polling missing wearables, waiting for items " << mTypesToRecover.size() + << " links " << mTypesToLink.size() + << " wearables, timed out " << timed_out + << " elapsed " << mWaitTime.getElapsedTimeF32() + << " done " << done << llendl; + } if (done) { @@ -795,12 +801,8 @@ void LLWearableHoldingPattern::onWearableAssetFetch(LLWearable *wearable) } mResolved += 1; // just counting callbacks, not successes. - llinfos << "onWearableAssetFetch, resolved count " << mResolved << " of requested " << getFoundList().size() << llendl; - if (wearable) - { - llinfos << "wearable found, type " << wearable->getType() << " asset " << wearable->getAssetID() << llendl; - } - else + llinfos << "resolved " << mResolved << "/" << getFoundList().size() << llendl; + if (!wearable) { llwarns << "no wearable found" << llendl; } @@ -830,10 +832,14 @@ void LLWearableHoldingPattern::onWearableAssetFetch(LLWearable *wearable) LLFoundData& data = *iter; if(wearable->getAssetID() == data.mAssetID) { - data.mWearable = wearable; // Failing this means inventory or asset server are corrupted in a way we don't handle. - llassert((data.mWearableType < LLWearableType::WT_COUNT) && (wearable->getType() == data.mWearableType)); - break; + if ((data.mWearableType >= LLWearableType::WT_COUNT) || (wearable->getType() != data.mWearableType)) + { + llwarns << "recovered wearable but type invalid. inventory wearable type: " << data.mWearableType << " asset wearable type: " << wearable->getType() << llendl; + break; + } + + data.mWearable = wearable; } } } @@ -945,7 +951,7 @@ const LLUUID LLAppearanceMgr::getBaseOutfitUUID() return outfit_cat->getUUID(); } -bool LLAppearanceMgr::wearItemOnAvatar(const LLUUID& item_id_to_wear, bool do_update, bool replace) +bool LLAppearanceMgr::wearItemOnAvatar(const LLUUID& item_id_to_wear, bool do_update, bool replace, LLPointer<LLInventoryCallback> cb) { if (item_id_to_wear.isNull()) return false; @@ -999,7 +1005,7 @@ bool LLAppearanceMgr::wearItemOnAvatar(const LLUUID& item_id_to_wear, bool do_up // Remove existing body parts anyway because we must not be able to wear e.g. two skins. removeCOFLinksOfType(item_to_wear->getWearableType(), false); - addCOFItemLink(item_to_wear, do_update); + addCOFItemLink(item_to_wear, do_update, cb); break; case LLAssetType::AT_OBJECT: rez_attachment(item_to_wear, NULL); @@ -1635,7 +1641,7 @@ void LLAppearanceMgr::updateAppearanceFromCOF(bool update_base_outfit_ordering) // the saved outfit stored as a folder link updateIsDirty(); - dumpCat(getCOF(),"COF, start"); + //dumpCat(getCOF(),"COF, start"); bool follow_folder_links = true; LLUUID current_outfit_id = getCOF(); @@ -1718,7 +1724,7 @@ void LLAppearanceMgr::updateAppearanceFromCOF(bool update_base_outfit_ordering) { LLFoundData& found = *it; - llinfos << "waiting for onWearableAssetFetch callback, asset " << found.mAssetID.asString() << llendl; + lldebugs << "waiting for onWearableAssetFetch callback, asset " << found.mAssetID.asString() << llendl; // Fetch the wearables about to be worn. LLWearableList::instance().getAsset(found.mAssetID, @@ -1953,9 +1959,10 @@ bool areMatchingWearables(const LLViewerInventoryItem *a, const LLViewerInventor class LLDeferredCOFLinkObserver: public LLInventoryObserver { public: - LLDeferredCOFLinkObserver(const LLUUID& item_id, bool do_update): + LLDeferredCOFLinkObserver(const LLUUID& item_id, bool do_update, LLPointer<LLInventoryCallback> cb = NULL): mItemID(item_id), - mDoUpdate(do_update) + mDoUpdate(do_update), + mCallback(cb) { } @@ -1969,7 +1976,7 @@ public: if (item) { gInventory.removeObserver(this); - LLAppearanceMgr::instance().addCOFItemLink(item,mDoUpdate); + LLAppearanceMgr::instance().addCOFItemLink(item,mDoUpdate,mCallback); delete this; } } @@ -1977,26 +1984,27 @@ public: private: const LLUUID mItemID; bool mDoUpdate; + LLPointer<LLInventoryCallback> mCallback; }; // BAP - note that this runs asynchronously if the item is not already loaded from inventory. // Dangerous if caller assumes link will exist after calling the function. -void LLAppearanceMgr::addCOFItemLink(const LLUUID &item_id, bool do_update ) +void LLAppearanceMgr::addCOFItemLink(const LLUUID &item_id, bool do_update, LLPointer<LLInventoryCallback> cb) { const LLInventoryItem *item = gInventory.getItem(item_id); if (!item) { - LLDeferredCOFLinkObserver *observer = new LLDeferredCOFLinkObserver(item_id, do_update); + LLDeferredCOFLinkObserver *observer = new LLDeferredCOFLinkObserver(item_id, do_update, cb); gInventory.addObserver(observer); } else { - addCOFItemLink(item, do_update); + addCOFItemLink(item, do_update, cb); } } -void LLAppearanceMgr::addCOFItemLink(const LLInventoryItem *item, bool do_update ) +void LLAppearanceMgr::addCOFItemLink(const LLInventoryItem *item, bool do_update, LLPointer<LLInventoryCallback> cb) { const LLViewerInventoryItem *vitem = dynamic_cast<const LLViewerInventoryItem*>(item); if (!vitem) @@ -2057,7 +2065,10 @@ void LLAppearanceMgr::addCOFItemLink(const LLInventoryItem *item, bool do_update } else { - LLPointer<LLInventoryCallback> cb = do_update ? new ModifiedCOFCallback : 0; + if(do_update && cb.isNull()) + { + cb = new ModifiedCOFCallback; + } const std::string description = vitem->getIsLinkType() ? vitem->getDescription() : ""; link_inventory_item( gAgent.getID(), vitem->getLinkedUUID(), @@ -2489,6 +2500,14 @@ void LLAppearanceMgr::removeItemFromAvatar(const LLUUID& id_to_remove) } default: break; } + + // *HACK: Force to remove garbage from COF. + // Unworn links or objects can't be processed by existed removing functionality + // since it is not designed for such cases. As example attachment object can't be removed + // since sever don't sends message _PREHASH_KillObject in that case. + // Also we can't check is link was successfully removed from COF since in case + // deleting attachment link removing performs asynchronously in process_kill_object callback. + removeCOFItemLinks(id_to_remove,false); } bool LLAppearanceMgr::moveWearable(LLViewerInventoryItem* item, bool closer_to_body) diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h index 8834f8c395..84c911c038 100644 --- a/indra/newview/llappearancemgr.h +++ b/indra/newview/llappearancemgr.h @@ -99,7 +99,7 @@ public: const LLUUID getBaseOutfitUUID(); // Wear/attach an item (from a user's inventory) on the agent - bool wearItemOnAvatar(const LLUUID& item_to_wear, bool do_update = true, bool replace = false); + bool wearItemOnAvatar(const LLUUID& item_to_wear, bool do_update = true, bool replace = false, LLPointer<LLInventoryCallback> cb = NULL); // Update the displayed outfit name in UI. void updatePanelOutfitName(const std::string& name); @@ -124,8 +124,8 @@ public: LLPointer<LLInventoryCallback> cb); // Add COF link to individual item. - void addCOFItemLink(const LLUUID& item_id, bool do_update = true); - void addCOFItemLink(const LLInventoryItem *item, bool do_update = true); + void addCOFItemLink(const LLUUID& item_id, bool do_update = true, LLPointer<LLInventoryCallback> cb = NULL); + void addCOFItemLink(const LLInventoryItem *item, bool do_update = true, LLPointer<LLInventoryCallback> cb = NULL); // Remove COF entries void removeCOFItemLinks(const LLUUID& item_id, bool do_update = true); @@ -175,6 +175,8 @@ public: bool isOutfitLocked() { return mOutfitLocked; } + bool isInUpdateAppearanceFromCOF() { return mIsInUpdateAppearanceFromCOF; } + protected: LLAppearanceMgr(); ~LLAppearanceMgr(); diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index 5bc3b3ac8d..752a2e7504 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -60,6 +60,7 @@ #include "llimview.h" // for gIMMgr #include "llmutelist.h" #include "llnotificationsutil.h" // for LLNotificationsUtil +#include "llpaneloutfitedit.h" #include "llrecentpeople.h" #include "llsidetray.h" #include "lltrans.h" @@ -436,12 +437,28 @@ namespace action_give_inventory typedef std::set<LLUUID> uuid_set_t; /** + * Returns a pointer to 'Add More' inventory panel of Edit Outfit SP. + */ + static LLInventoryPanel* get_outfit_editor_inventory_panel() + { + LLPanelOutfitEdit* panel_outfit_edit = dynamic_cast<LLPanelOutfitEdit*>(LLSideTray::getInstance()->getPanel("panel_outfit_edit")); + if (NULL == panel_outfit_edit) return NULL; + + LLInventoryPanel* inventory_panel = panel_outfit_edit->findChild<LLInventoryPanel>("folder_view"); + return inventory_panel; + } + + /** * Checks My Inventory visibility. */ static bool is_give_inventory_acceptable() { LLInventoryPanel* active_panel = LLInventoryPanel::getActiveInventoryPanel(FALSE); - if (NULL == active_panel) return false; + if (!active_panel) + { + active_panel = get_outfit_editor_inventory_panel(); + if (!active_panel) return false; + } // check selection in the panel const uuid_set_t inventory_selected_uuids = active_panel->getRootFolder()->getSelectionList(); @@ -621,9 +638,10 @@ namespace action_give_inventory LLInventoryPanel* active_panel = LLInventoryPanel::getActiveInventoryPanel(FALSE); - if (NULL == active_panel) + if (!active_panel) { - return; + active_panel = get_outfit_editor_inventory_panel(); + if (!active_panel) return; } const uuid_set_t inventory_selected_uuids = active_panel->getRootFolder()->getSelectionList(); diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp index d83706de52..4c0f51056d 100644 --- a/indra/newview/llcofwearables.cpp +++ b/indra/newview/llcofwearables.cpp @@ -79,9 +79,7 @@ protected: } // Set proper label for the "Create new <WEARABLE_TYPE>" menu item. - LLStringUtil::format_map_t args; - args["[WEARABLE_TYPE]"] = LLWearableType::getTypeDefaultNewName(w_type); - std::string new_label = LLTrans::getString("CreateNewWearable", args); + std::string new_label = LLTrans::getString("create_new_" + LLWearableType::getTypeName(w_type)); menu_item->setLabel(new_label); } @@ -333,6 +331,10 @@ BOOL LLCOFWearables::postBuild() mBodyPartsTab = getChild<LLAccordionCtrlTab>("tab_body_parts"); mBodyPartsTab->setDropDownStateChangedCallback(boost::bind(&LLCOFWearables::onAccordionTabStateChanged, this, _1, _2)); + mTab2AssetType[mClothingTab] = LLAssetType::AT_CLOTHING; + mTab2AssetType[mAttachmentsTab] = LLAssetType::AT_OBJECT; + mTab2AssetType[mBodyPartsTab] = LLAssetType::AT_BODYPART; + return LLPanel::postBuild(); } @@ -632,49 +634,17 @@ LLAssetType::EType LLCOFWearables::getExpandedAccordionAssetType() static type_map_t type_map; static LLAccordionCtrl* accordion_ctrl = getChild<LLAccordionCtrl>("cof_wearables_accordion"); + const LLAccordionCtrlTab* expanded_tab = accordion_ctrl->getExpandedTab(); - if (type_map.empty()) - { - type_map["tab_clothing"] = LLAssetType::AT_CLOTHING; - type_map["tab_attachments"] = LLAssetType::AT_OBJECT; - type_map["tab_body_parts"] = LLAssetType::AT_BODYPART; - } - - const LLAccordionCtrlTab* tab = accordion_ctrl->getExpandedTab(); - LLAssetType::EType result = LLAssetType::AT_NONE; - - if (tab) - { - type_map_t::iterator i = type_map.find(tab->getName()); - llassert(i != type_map.end()); - result = i->second; - } - - return result; + return get_if_there(mTab2AssetType, expanded_tab, LLAssetType::AT_NONE); } LLAssetType::EType LLCOFWearables::getSelectedAccordionAssetType() { - //*TODO share the code with ::getExpandedAccordionAssetType(...) static LLAccordionCtrl* accordion_ctrl = getChild<LLAccordionCtrl>("cof_wearables_accordion"); const LLAccordionCtrlTab* selected_tab = accordion_ctrl->getSelectedTab(); - - if (selected_tab == mClothingTab) - { - return LLAssetType::AT_CLOTHING; - } - else if (selected_tab == mAttachmentsTab) - { - return LLAssetType::AT_OBJECT; - } - else if (selected_tab == mBodyPartsTab) - { - return LLAssetType::AT_BODYPART; - } - else - { - return LLAssetType::AT_NONE; - } + + return get_if_there(mTab2AssetType, selected_tab, LLAssetType::AT_NONE); } void LLCOFWearables::onListRightClick(LLUICtrl* ctrl, S32 x, S32 y, LLListContextMenu* menu) diff --git a/indra/newview/llcofwearables.h b/indra/newview/llcofwearables.h index de148e0d46..0518d59df3 100644 --- a/indra/newview/llcofwearables.h +++ b/indra/newview/llcofwearables.h @@ -116,6 +116,8 @@ protected: LLAccordionCtrlTab* mLastSelectedTab; + std::map<const LLAccordionCtrlTab*, LLAssetType::EType> mTab2AssetType; + LLCOFCallbacks mCOFCallbacks; LLListContextMenu* mClothingMenu; diff --git a/indra/newview/lldrawable.h b/indra/newview/lldrawable.h index 651dabff9e..08972853c3 100644 --- a/indra/newview/lldrawable.h +++ b/indra/newview/lldrawable.h @@ -313,8 +313,20 @@ private: inline LLFace* LLDrawable::getFace(const S32 i) const { - llassert((U32)i < mFaces.size()); - llassert(mFaces[i]); + //switch these asserts to llerrs -- davep + //llassert((U32)i < mFaces.size()); + //llassert(mFaces[i]); + + if ((U32) i >= mFaces.size()) + { + llerrs << "Invalid face index." << llendl; + } + + if (!mFaces[i]) + { + llerrs << "Null face found." << llendl; + } + return mFaces[i]; } diff --git a/indra/newview/llface.h b/indra/newview/llface.h index 67dd97e6f7..de533a6864 100644 --- a/indra/newview/llface.h +++ b/indra/newview/llface.h @@ -279,7 +279,7 @@ public: { bool operator()(const LLFace* const& lhs, const LLFace* const& rhs) { - return lhs->mDistance > rhs->mDistance; // farthest = first + return !lhs || (rhs && (lhs->mDistance > rhs->mDistance)); // farthest = first } }; diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index 98f940c233..913bb676b0 100644 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -58,6 +58,7 @@ #include "llpanellandaudio.h" #include "llpanellandmedia.h" #include "llradiogroup.h" +#include "llresmgr.h" // getMonetaryString #include "llscrolllistctrl.h" #include "llscrolllistitem.h" #include "llscrolllistcell.h" @@ -739,7 +740,8 @@ void LLPanelLandGeneral::refresh() cost_per_sqm = (F32)parcel->getSalePrice() / (F32)area; } - mSaleInfoForSale1->setTextArg("[PRICE]", llformat("%d", parcel->getSalePrice())); + S32 price = parcel->getSalePrice(); + mSaleInfoForSale1->setTextArg("[PRICE]", LLResMgr::getInstance()->getMonetaryString(price)); mSaleInfoForSale1->setTextArg("[PRICE_PER_SQM]", llformat("%.1f", cost_per_sqm)); if (can_be_sold) { diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 1ddbaaa95f..7ec6440dc3 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -2998,7 +2998,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, // BAP - should skip if dup. if (move_is_into_current_outfit) { - LLAppearanceMgr::instance().addCOFItemLink(inv_item); + LLAppearanceMgr::instance().wearItemOnAvatar(inv_item->getUUID(), true, true); } else { diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp index 70a7bf644b..7f027d299b 100644 --- a/indra/newview/llpanelclassified.cpp +++ b/indra/newview/llpanelclassified.cpp @@ -1792,6 +1792,7 @@ void LLPanelClassifiedEdit::onOpen(const LLSD& key) enableVerbs(is_new); enableEditing(is_new); + showEditing(!is_new); resetDirty(); setInfoLoaded(false); } @@ -2011,6 +2012,12 @@ void LLPanelClassifiedEdit::enableEditing(bool enable) childSetEnabled("auto_renew", enable); } +void LLPanelClassifiedEdit::showEditing(bool show) +{ + childSetVisible("price_for_listing_label", show); + childSetVisible("price_for_listing", show); +} + std::string LLPanelClassifiedEdit::makeClassifiedName() { std::string name; diff --git a/indra/newview/llpanelclassified.h b/indra/newview/llpanelclassified.h index 1157649a16..eaf652ca06 100644 --- a/indra/newview/llpanelclassified.h +++ b/indra/newview/llpanelclassified.h @@ -416,6 +416,8 @@ protected: void enableEditing(bool enable); + void showEditing(bool show); + std::string makeClassifiedName(); void setPriceForListing(S32 price); diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp index 26f0b3f48f..14f05bdb17 100644 --- a/indra/newview/llpaneleditwearable.cpp +++ b/indra/newview/llpaneleditwearable.cpp @@ -963,8 +963,7 @@ void LLPanelEditWearable::updatePanelPickerControls(LLWearableType::EType type) for_each_picker_ctrl_entry <LLColorSwatchCtrl> (panel, type, boost::bind(update_color_swatch_ctrl, this, _1, _2)); for_each_picker_ctrl_entry <LLTextureCtrl> (panel, type, boost::bind(update_texture_ctrl, this, _1, _2)); } - - if (!is_modifiable || !is_copyable) + else { // Disable controls for_each_picker_ctrl_entry <LLColorSwatchCtrl> (panel, type, boost::bind(set_enabled_color_swatch_ctrl, false, _1, _2)); diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp index c397dd5092..f8350a56ef 100644 --- a/indra/newview/llpaneloutfitedit.cpp +++ b/indra/newview/llpaneloutfitedit.cpp @@ -196,7 +196,7 @@ private: LLMenuItemCallGL::Params p; p.name = type_name; - p.label = LLWearableType::getTypeDefaultNewName(type); + p.label = LLTrans::getString(LLWearableType::getTypeDefaultNewName(type)); p.on_click.function_name = "Wearable.Create"; p.on_click.parameter = LLSD(type_name); @@ -567,13 +567,20 @@ void LLPanelOutfitEdit::onSearchEdit(const std::string& string) void LLPanelOutfitEdit::onPlusBtnClicked(void) { - LLUUID selected_id; - getCurrentItemUUID(selected_id); - - if (selected_id.isNull()) return; + uuid_vec_t selected_items; + getSelectedItemsUUID(selected_items); - //replacing instead of adding the item - LLAppearanceMgr::getInstance()->wearItemOnAvatar(selected_id, true, true); + LLPointer<LLInventoryCallback> link_waiter = new LLUpdateAppearanceOnDestroy; + + for(uuid_vec_t::iterator iter = selected_items.begin(); iter != selected_items.end(); iter++) + { + LLUUID selected_id = *iter; + if (!selected_id.isNull()) + { + //replacing instead of adding the item + LLAppearanceMgr::getInstance()->wearItemOnAvatar(selected_id, false, true, link_waiter); + } + } } void LLPanelOutfitEdit::onVisibilityChange() diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp index ef89c07c60..40c99edecd 100644 --- a/indra/newview/llscreenchannel.cpp +++ b/indra/newview/llscreenchannel.cpp @@ -297,6 +297,12 @@ void LLScreenChannel::onToastDestroyed(LLToast* toast) { mStoredToastList.erase(it); } + + // if destroyed toast is hovered - reset hovered + if (mHoveredToast == toast) + { + mHoveredToast = NULL; + } } diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index d6e9256fee..86faeeaa73 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -300,6 +300,7 @@ LLSpatialGroup::~LLSpatialGroup() } delete [] mOcclusionVerts; + mOcclusionVerts = NULL; LLMemType mt(LLMemType::MTYPE_SPACE_PARTITION); clearDrawMap(); diff --git a/indra/newview/llspatialpartition.h b/indra/newview/llspatialpartition.h index 7896488379..48070cc438 100644 --- a/indra/newview/llspatialpartition.h +++ b/indra/newview/llspatialpartition.h @@ -164,8 +164,6 @@ public: static BOOL sNoDelete; //deletion of spatial groups and draw info not allowed if TRUE typedef std::vector<LLPointer<LLSpatialGroup> > sg_vector_t; - typedef std::set<LLPointer<LLSpatialGroup> > sg_set_t; - typedef std::list<LLPointer<LLSpatialGroup> > sg_list_t; typedef std::vector<LLPointer<LLSpatialBridge> > bridge_list_t; typedef std::vector<LLPointer<LLDrawInfo> > drawmap_elem_t; typedef std::map<U32, drawmap_elem_t > draw_map_t; diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index ae244cd8a1..95c4f01e46 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -53,6 +53,7 @@ #include "llmediaentry.h" #include "llmenugl.h" #include "llmutelist.h" +#include "llresmgr.h" // getMonetaryString #include "llselectmgr.h" #include "lltoolfocus.h" #include "lltoolgrab.h" @@ -808,7 +809,8 @@ BOOL LLToolPie::handleTooltipLand(std::string line, std::string tooltip_msg) if (hover_parcel && hover_parcel->getParcelFlag(PF_FOR_SALE)) { LLStringUtil::format_map_t args; - args["[AMOUNT]"] = llformat("%d", hover_parcel->getSalePrice()); + S32 price = hover_parcel->getSalePrice(); + args["[AMOUNT]"] = LLResMgr::getInstance()->getMonetaryString(price); line = LLTrans::getString("TooltipForSaleL$", args); tooltip_msg.append(line); tooltip_msg.push_back('\n'); @@ -906,13 +908,14 @@ BOOL LLToolPie::handleTooltipObject( LLViewerObject* hover_object, std::string l || !existing_inspector->getVisible() || existing_inspector->getKey()["object_id"].asUUID() != hover_object->getID())) { - + // Add price to tooltip for items on sale bool for_sale = for_sale_selection(nodep); if(for_sale) { LLStringUtil::format_map_t args; - args["[PRICE]"] = llformat ("%d", nodep->mSaleInfo.getSalePrice()); + S32 price = nodep->mSaleInfo.getSalePrice(); + args["[AMOUNT]"] = LLResMgr::getInstance()->getMonetaryString(price); tooltip_msg.append(LLTrans::getString("TooltipPrice", args) ); } diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index 3430f265ae..1ff4d6db9e 100644 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -625,7 +625,15 @@ bool LLViewerInventoryCategory::fetch() // AIS folks are aware of the issue and have a fix in process. // see ticket for details. - std::string url = gAgent.getRegion()->getCapability("WebFetchInventoryDescendents"); + std::string url; + if (gAgent.getRegion()) + { + url = gAgent.getRegion()->getCapability("WebFetchInventoryDescendents"); + } + else + { + llwarns << "agent region is null" << llendl; + } if (!url.empty()) //Capability found. Build up LLSD and use it. { LLInventoryModelBackgroundFetch::instance().start(mUUID, false); diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 9a2866832a..6d93de2383 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -765,12 +765,19 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, { LLViewerRegion* regionp = LLWorld::getInstance()->getRegionFromHandle(region_handle); - if(regionp != mRegionp && regionp && mRegionp) + if(regionp != mRegionp && regionp && mRegionp)//region cross { + //this is the redundant position and region update, but it is necessary in case the viewer misses the following + //position and region update messages from sim. + //this redundant update should not cause any problems. LLVector3 delta_pos = mRegionp->getOriginAgent() - regionp->getOriginAgent(); - setPosition(getPosition() + delta_pos) ; //update the region position immediately. + setPositionParent(getPosition() + delta_pos); //update to the new region position immediately. + setRegion(regionp) ; //change the region. + } + else + { + mRegionp = regionp ; } - mRegionp = regionp ; } if (!mRegionp) diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 844ad6ca2d..47e35ca0c4 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -2095,8 +2095,10 @@ void LLVOAvatar::computeBodySize() if (new_body_size != mBodySize) { mBodySize = new_body_size; - if (isSelf()) + + if (isSelf() && !LLAppearanceMgr::instance().isInUpdateAppearanceFromCOF()) { // notify simulator of change in size + // but not if we are in the middle of updating appearance gAgent.sendAgentSetAppearance(); } } diff --git a/indra/newview/llvotree.cpp b/indra/newview/llvotree.cpp index eb5b6c6618..5431aec07c 100644 --- a/indra/newview/llvotree.cpp +++ b/indra/newview/llvotree.cpp @@ -313,7 +313,10 @@ U32 LLVOTree::processUpdateMessage(LLMessageSystem *mesgsys, // // Load Species-Specific data // + static const S32 MAX_TREE_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL = 32 ; //frames. mTreeImagep = LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE); + mTreeImagep->setMaxVirtualSizeResetInterval(MAX_TREE_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL); //allow to wait for at most 16 frames to reset virtual size. + mBranchLength = sSpeciesTable[mSpecies]->mBranchLength; mTrunkLength = sSpeciesTable[mSpecies]->mTrunkLength; mLeafScale = sSpeciesTable[mSpecies]->mLeafScale; diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp index 9f9a9bef35..3887f64618 100644 --- a/indra/newview/llwearableitemslist.cpp +++ b/indra/newview/llwearableitemslist.cpp @@ -576,8 +576,8 @@ LLContextMenu* LLWearableItemsList::ContextMenu::createMenu() const uuid_vec_t& ids = mUUIDs; // selected items IDs LLUUID selected_id = ids.front(); // ID of the first selected item - functor_t wear = boost::bind(&LLAppearanceMgr::wearItemOnAvatar, LLAppearanceMgr::getInstance(), _1, true, true); - functor_t add = boost::bind(&LLAppearanceMgr::wearItemOnAvatar, LLAppearanceMgr::getInstance(), _1, true, false); + functor_t wear = boost::bind(&LLAppearanceMgr::wearItemOnAvatar, LLAppearanceMgr::getInstance(), _1, true, true, LLPointer<LLInventoryCallback>(NULL)); + functor_t add = boost::bind(&LLAppearanceMgr::wearItemOnAvatar, LLAppearanceMgr::getInstance(), _1, true, false, LLPointer<LLInventoryCallback>(NULL)); functor_t take_off = boost::bind(&LLAppearanceMgr::removeItemFromAvatar, LLAppearanceMgr::getInstance(), _1); // Register handlers common for all wearable types. @@ -725,10 +725,8 @@ void LLWearableItemsList::ContextMenu::updateItemsLabels(LLContextMenu* menu) LLViewerInventoryItem* item = gInventory.getLinkedItem(mUUIDs.back()); if (!item || !item->isWearableType()) return; - LLStringUtil::format_map_t args; LLWearableType::EType w_type = item->getWearableType(); - args["[WEARABLE_TYPE]"] = LLWearableType::getTypeDefaultNewName(w_type); - std::string new_label = LLTrans::getString("CreateNewWearable", args); + std::string new_label = LLTrans::getString("create_new_" + LLWearableType::getTypeName(w_type)); LLMenuItemGL* menu_item = menu->getChild<LLMenuItemGL>("create_new"); menu_item->setLabel(new_label); diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 3716a5e9d9..7d0f763bd1 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -1794,7 +1794,7 @@ void LLPipeline::rebuildPriorityGroups() assertInitialized(); // Iterate through all drawables on the priority build queue, - for (LLSpatialGroup::sg_list_t::iterator iter = mGroupQ1.begin(); + for (LLSpatialGroup::sg_vector_t::iterator iter = mGroupQ1.begin(); iter != mGroupQ1.end(); ++iter) { LLSpatialGroup* group = *iter; @@ -2253,7 +2253,6 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result) } } } - llpushcallstacks ; { LLFastTimer ftm(FTM_STATESORT_DRAWABLE); for (LLCullResult::drawable_list_t::iterator iter = sCull->beginVisibleList(); @@ -2266,15 +2265,12 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result) } } } - llpushcallstacks ; { LLFastTimer ftm(FTM_CLIENT_COPY); LLVertexBuffer::clientCopy(); } - llpushcallstacks ; - postSort(camera); - llpushcallstacks ; + postSort(camera); } void LLPipeline::stateSort(LLSpatialGroup* group, LLCamera& camera) @@ -2544,6 +2540,7 @@ void LLPipeline::postSort(LLCamera& camera) assertInitialized(); + llpushcallstacks ; //rebuild drawable geometry for (LLCullResult::sg_list_t::iterator i = sCull->beginDrawableGroups(); i != sCull->endDrawableGroups(); ++i) { @@ -2554,7 +2551,7 @@ void LLPipeline::postSort(LLCamera& camera) group->rebuildGeom(); } } - + llpushcallstacks ; //rebuild groups sCull->assertDrawMapsEmpty(); @@ -2574,6 +2571,7 @@ void LLPipeline::postSort(LLCamera& camera) rebuildPriorityGroups(); + llpushcallstacks ; const S32 bin_count = 1024*8; @@ -2675,7 +2673,7 @@ void LLPipeline::postSort(LLCamera& camera) std::sort(sCull->beginAlphaGroups(), sCull->endAlphaGroups(), LLSpatialGroup::CompareDepthGreater()); } - + llpushcallstacks ; // only render if the flag is set. The flag is only set if we are in edit mode or the toggle is set in the menus if (LLFloaterReg::instanceVisible("beacons") && !sShadowRender) { @@ -2723,7 +2721,7 @@ void LLPipeline::postSort(LLCamera& camera) forAllVisibleDrawables(renderSoundHighlights); } } - + llpushcallstacks ; // If managing your telehub, draw beacons at telehub and currently selected spawnpoint. if (LLFloaterTelehub::renderBeacons()) { @@ -2753,6 +2751,7 @@ void LLPipeline::postSort(LLCamera& camera) } //LLSpatialGroup::sNoDelete = FALSE; + llpushcallstacks ; } diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index 89649a0682..862bfc2f30 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -584,7 +584,7 @@ protected: // LLDrawable::drawable_list_t mBuildQ1; // priority LLDrawable::drawable_list_t mBuildQ2; // non-priority - LLSpatialGroup::sg_list_t mGroupQ1; //priority + LLSpatialGroup::sg_vector_t mGroupQ1; //priority LLSpatialGroup::sg_vector_t mGroupQ2; // non-priority LLViewerObject::vobj_list_t mCreateQ; diff --git a/indra/newview/skins/default/textures/icons/Edit_Wrench.png b/indra/newview/skins/default/textures/icons/Edit_Wrench.png Binary files differindex 1c43960d02..250697b4b1 100644 --- a/indra/newview/skins/default/textures/icons/Edit_Wrench.png +++ b/indra/newview/skins/default/textures/icons/Edit_Wrench.png diff --git a/indra/newview/skins/default/textures/icons/Hierarchy_View_On.png b/indra/newview/skins/default/textures/icons/Hierarchy_View_On.png Binary files differindex c590a5a5d3..296311e797 100644 --- a/indra/newview/skins/default/textures/icons/Hierarchy_View_On.png +++ b/indra/newview/skins/default/textures/icons/Hierarchy_View_On.png diff --git a/indra/newview/skins/default/textures/icons/Shop.png b/indra/newview/skins/default/textures/icons/Shop.png Binary files differindex 9d091fed44..81c13eeabd 100644 --- a/indra/newview/skins/default/textures/icons/Shop.png +++ b/indra/newview/skins/default/textures/icons/Shop.png diff --git a/indra/newview/skins/default/xui/da/strings.xml b/indra/newview/skins/default/xui/da/strings.xml index 32f37c038e..71c9f74dc0 100644 --- a/indra/newview/skins/default/xui/da/strings.xml +++ b/indra/newview/skins/default/xui/da/strings.xml @@ -233,7 +233,7 @@ Klik for at starte secondlife:// kommando </string> <string name="CurrentURL" value=" Nuværende URL: [CurrentURL]"/> - <string name="TooltipPrice" value="L$[PRICE]-"/> + <string name="TooltipPrice" value="L$[AMOUNT]: "/> <string name="SLurlLabelTeleport"> Teleportér til </string> diff --git a/indra/newview/skins/default/xui/de/menu_cof_clothing.xml b/indra/newview/skins/default/xui/de/menu_cof_clothing.xml index 5cf31791ba..7fced273a7 100644 --- a/indra/newview/skins/default/xui/de/menu_cof_clothing.xml +++ b/indra/newview/skins/default/xui/de/menu_cof_clothing.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="COF Clothing"> <menu_item_call label="Ausziehen" name="take_off"/> + <menu_item_call label="Ersetzen" name="replace"/> <menu_item_call label="Eine Kategorie nach oben" name="move_up"/> <menu_item_call label="Eine Kategorie nach unten" name="move_down"/> <menu_item_call label="Bearbeiten" name="edit"/> diff --git a/indra/newview/skins/default/xui/de/panel_edit_alpha.xml b/indra/newview/skins/default/xui/de/panel_edit_alpha.xml index b6c53be778..4b48950341 100644 --- a/indra/newview/skins/default/xui/de/panel_edit_alpha.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_alpha.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="edit_alpha_panel" width="320"> - <panel name="avatar_alpha_color_panel" width="300"> - <texture_picker label="Alpha: Unten" name="Lower Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken" width="70"/> - <texture_picker label="Alpha: Oben" name="Upper Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken" width="66"/> +<panel name="edit_alpha_panel"> + <panel name="avatar_alpha_color_panel"> + <texture_picker label="Alpha: Unten" name="Lower Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + <texture_picker label="Alpha: Oben" name="Upper Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/> <texture_picker label="Kopf: Alpha" name="Head Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/> - <texture_picker label="Alpha: Augen" name="Eye Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken" width="72"/> - <texture_picker label="Alpha: Haare" name="Hair Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken" width="70"/> + <texture_picker label="Alpha: Augen" name="Eye Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + <texture_picker label="Alpha: Haare" name="Hair Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml index 830c7b0bb8..075a9d752a 100644 --- a/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="edit_tattoo_panel"> <panel name="avatar_tattoo_color_panel"> - <texture_picker label="Kopftattoo" name="Head Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken" width="80"/> - <texture_picker label="Obere Tattoos" name="Upper Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken" width="80"/> - <texture_picker label="Untere Tattoos" name="Lower Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken" width="80"/> + <texture_picker label="Kopftattoo" name="Head Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + <texture_picker label="Obere Tattoos" name="Upper Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + <texture_picker label="Untere Tattoos" name="Lower Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/> <color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index f6ae17239a..206017c06c 100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -248,7 +248,7 @@ Anklicken, um Befehl secondlife:// auszuführen </string> <string name="CurrentURL" value=" CurrentURL: [CurrentURL]"/> - <string name="TooltipPrice" value="[PRICE] L$"/> + <string name="TooltipPrice" value="[AMOUNT]L$: "/> <string name="SLurlLabelTeleport"> Teleportieren nach </string> 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 f25c170f33..6ce9ed6e77 100644 --- a/indra/newview/skins/default/xui/en/floater_publish_classified.xml +++ b/indra/newview/skins/default/xui/en/floater_publish_classified.xml @@ -25,10 +25,11 @@ Remember, Classified fees are non-refundable. <spinner decimal_digits="0" follows="left|top" + font="SansSerif" halign="left" height="23" increment="1" - label_width="45" + label_width="50" label="Price: L$ " v_pad="10" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index 194a93977f..a96dbe3553 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -910,29 +910,34 @@ width="75"> Group: </text> + <name_box + follows="left|top" + height="18" + initial_value="Loading..." + layout="topleft" + left_pad="23" + name="Group Name Proxy" + width="142" /> <button follows="top|left" - height="10" - image_disabled="Activate_Checkmark" - image_selected="Activate_Checkmark" - image_unselected="Activate_Checkmark" - image_color="White_50" + height="23" + image_overlay="Edit_Wrench" layout="topleft" - left_pad="0" - top_delta="0" + left_pad="3" name="button set group" tab_stop="false" tool_tip="Choose a group to share this object's permissions" - width="10" /> - <name_box + width="23" /> + <check_box + height="19" follows="left|top" - height="18" - initial_value="Loading..." + label="Share" layout="topleft" - left_pad="5" - top_delta="-1" - name="Group Name Proxy" - width="150" /> + name="checkbox share with group" + tool_tip="Allow all members of the set group to share your modify permissions for this object. You must Deed to enable role restrictions." + top_pad="10" + left="106" + width="87" /> <button follows="top|left" height="23" @@ -940,26 +945,16 @@ label_selected="Deed" layout="topleft" name="button deed" - top_pad="0" - left="108" + left_pad="3" tool_tip="Deeding gives this item away with next owner permissions. Group shared objects can be deeded by a group officer." width="80" /> - <check_box - height="19" - follows="left|top" - label="Share" - layout="topleft" - name="checkbox share with group" - tool_tip="Allow all members of the set group to share your modify permissions for this object. You must Deed to enable role restrictions." - left_pad="3" - width="100" /> <text type="string" length="1" follows="left|top" height="16" layout="topleft" - top_pad="15" + top_pad="10" left="10" name="label click action" width="98"> diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml index 5c19f1932d..c0046d8e28 100644 --- a/indra/newview/skins/default/xui/en/menu_inventory.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory.xml @@ -472,7 +472,7 @@ layout="topleft" name="Paste Separator" /> <menu_item_call - label="Remove Link" + label="Delete" layout="topleft" name="Remove Link"> <menu_item_call.on_click 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 cbdd548577..9408f193fd 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_classified.xml @@ -261,6 +261,34 @@ name="auto_renew" top_pad="15" width="250" /> + <text + follows="left|top" + 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" /> </panel> </scroll_container> <panel diff --git a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml index adc38b966c..cf174da2f0 100644 --- a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml @@ -406,6 +406,7 @@ It is calculated as border_size + 2*UIResizeBarOverlap left_pad="1" name="shop_btn_1" top="1" + tool_tip="Visit the SL Marketplace. You can also select something you are wearing, then click here to see more things like it" width="31" /> </panel> @@ -480,6 +481,7 @@ It is calculated as border_size + 2*UIResizeBarOverlap left_pad="1" name="shop_btn_2" top="1" + tool_tip="Visit the SL Marketplace. You can also select something you are wearing, then click here to see more things like it" width="31" /> </panel> 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..b43aa0a824 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="Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search]." + no_matched_tabs_text.value="NoOutfitsTabsMatched" no_matched_tabs_text.v_pad="10" - no_visible_tabs_text.value="..." + no_visible_tabs_text.value="NoOutfits" 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 1e8d0d2fe5..ece57a6682 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -67,7 +67,7 @@ <string name="SentToInvalidRegion">You were sent to an invalid region.</string> <string name="TestingDisconnect">Testing viewer disconnect</string> - <!-- Tooltip, lltooltipview.cpp --> + <!-- Tooltip --> <string name="TooltipPerson">Person</string><!-- Object under mouse pointer is an avatar --> <string name="TooltipNoName">(no name)</string> <!-- No name on an object --> <string name="TooltipOwner">Owner:</string> <!-- Owner name follows --> @@ -83,6 +83,7 @@ <string name="TooltipFlagNoScripts">No Scripts</string> <string name="TooltipLand">Land:</string> <string name="TooltipMustSingleDrop">Only a single item can be dragged here</string> + <string name="TooltipPrice" value="L$[AMOUNT]: "/> <!-- tooltips for Urls --> <string name="TooltipHttpUrl">Click to view this web page</string> @@ -103,8 +104,6 @@ <string name="TooltipMapUrl">Click to view this location on a map</string> <string name="TooltipSLAPP">Click to run the secondlife:// command</string> <string name="CurrentURL" value=" CurrentURL: [CurrentURL]" /> - <string name="TooltipPrice" value=" L$[PRICE]-" /> - <!-- text for SLURL labels --> <string name="SLurlLabelTeleport">Teleport to</string> @@ -1830,9 +1829,26 @@ Clears (deletes) the media and all params from the given face. <string name="tattoo_not_worn">Tattoo not worn</string> <string name="invalid_not_worn">invalid</string> + <!-- Create new wearable of the specified type --> + <string name="create_new_shape">Create new shape</string> + <string name="create_new_skin">Create new skin</string> + <string name="create_new_hair">Create new hair</string> + <string name="create_new_eyes">Create new eyes</string> + <string name="create_new_shirt">Create new shirt</string> + <string name="create_new_pants">Create new pants</string> + <string name="create_new_shoes">Create new shoes</string> + <string name="create_new_socks">Create new socks</string> + <string name="create_new_jacket">Create new jacket</string> + <string name="create_new_gloves">Create new gloves</string> + <string name="create_new_undershirt">Create new undershirt</string> + <string name="create_new_underpants">Create new underpants</string> + <string name="create_new_skirt">Create new skirt</string> + <string name="create_new_alpha">Create new alpha</string> + <string name="create_new_tattoo">Create new tattoo</string> + <string name="create_new_invalid">invalid</string> + <!-- Wearable List--> <string name="NewWearable">New [WEARABLE_ITEM]</string> - <string name="CreateNewWearable">Create [WEARABLE_TYPE]</string> <!-- LLGroupNotify --> <!-- used in the construction of a Group Notice blue dialog box, buttons, tooltip etc. Seems to be no longer utilized by code in Viewer 2.0 --> @@ -2172,12 +2188,17 @@ Clears (deletes) the media and all params from the given face. <string name="PanelDirEventsDateText">[mthnum,datetime,slt]/[day,datetime,slt]</string> <!-- panel contents --> + <string name="PanelContentsTooltip">Content of object</string> <string name="PanelContentsNewScript">New Script</string> <string name="PanelContentsTooltip">Content of object</string> <!-- panel preferences general --> <string name="BusyModeResponseDefault">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.</string> + <!-- Outfits Panel --> + <string name="NoOutfits">You don't have any outfits yet. Try [secondlife:///app/search/all/ Search]</string> + <string name="NoOutfitsTabsMatched">Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search].</string> + <!-- Mute --> <string name="MuteByName">(By name)</string> <string name="MuteAgent">(Resident)</string> diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml index 717665f4d9..17e9f687b2 100644 --- a/indra/newview/skins/default/xui/es/strings.xml +++ b/indra/newview/skins/default/xui/es/strings.xml @@ -236,7 +236,7 @@ Pulsa para ejecutar el comando secondlife:// </string> <string name="CurrentURL" value="URL actual: [CurrentURL]"/> - <string name="TooltipPrice" value="[PRICE] L$"/> + <string name="TooltipPrice" value="[AMOUNT]L$: "/> <string name="SLurlLabelTeleport"> Teleportarse a </string> diff --git a/indra/newview/skins/default/xui/fr/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/fr/panel_edit_tattoo.xml index 9a6939e6b7..086542dee2 100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_tattoo.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_tattoo.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="edit_tattoo_panel"> <panel name="avatar_tattoo_color_panel"> - <texture_picker label="Tatouage tête" name="Head Tattoo" tool_tip="Cliquez pour sélectionner une image" width="76"/> - <texture_picker label="Tatouage haut" name="Upper Tattoo" tool_tip="Cliquez pour sélectionner une image" width="80"/> - <texture_picker label="Tatouage bas" name="Lower Tattoo" tool_tip="Cliquez pour sélectionner une image" width="76"/> + <texture_picker label="Tatouage tête" name="Head Tattoo" tool_tip="Cliquez pour sélectionner une image"/> + <texture_picker label="Tatouage haut" name="Upper Tattoo" tool_tip="Cliquez pour sélectionner une image"/> + <texture_picker label="Tatouage bas" name="Lower Tattoo" tool_tip="Cliquez pour sélectionner une image"/> <color_swatch label="Coul./Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml index 604398a658..15368c715f 100644 --- a/indra/newview/skins/default/xui/fr/strings.xml +++ b/indra/newview/skins/default/xui/fr/strings.xml @@ -248,7 +248,7 @@ Cliquez pour exécuter la commande secondlife:// command </string> <string name="CurrentURL" value=" URL actuelle : [CurrentURL]"/> - <string name="TooltipPrice" value="[PRICE] L$-"/> + <string name="TooltipPrice" value="[AMOUNT]L$: "/> <string name="SLurlLabelTeleport"> Me téléporter vers </string> diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml index aeaf8098b9..5554a3ca4f 100644 --- a/indra/newview/skins/default/xui/it/strings.xml +++ b/indra/newview/skins/default/xui/it/strings.xml @@ -242,7 +242,7 @@ Clicca per avviare il comando secondlife:// </string> <string name="CurrentURL" value="URL attuale: [CurrentURL]"/> - <string name="TooltipPrice" value="L$ [PRICE]-"/> + <string name="TooltipPrice" value="L$[AMOUNT]: "/> <string name="SLurlLabelTeleport"> Teleportati a </string> diff --git a/indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml index c3f8c12620..f4cfe6d83f 100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="edit_tattoo_panel"> <panel name="avatar_tattoo_color_panel"> - <texture_picker label="頭部のタトゥー" name="Head Tattoo" tool_tip="クリックして写真を選択" width="70"/> - <texture_picker label="上部のタトゥー" name="Upper Tattoo" tool_tip="クリックして写真を選択" width="70"/> - <texture_picker label="下部のタトゥー" name="Lower Tattoo" tool_tip="クリックして写真を選択" width="70"/> + <texture_picker label="頭部のタトゥー" name="Head Tattoo" tool_tip="クリックして写真を選択"/> + <texture_picker label="上部のタトゥー" name="Upper Tattoo" tool_tip="クリックして写真を選択"/> + <texture_picker label="下部のタトゥー" name="Lower Tattoo" tool_tip="クリックして写真を選択"/> <color_swatch label="色・色彩配合" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml index 619f9fc9ef..5aab0875f4 100644 --- a/indra/newview/skins/default/xui/ja/strings.xml +++ b/indra/newview/skins/default/xui/ja/strings.xml @@ -248,7 +248,7 @@ クリックして secondlife:// コマンドを出します </string> <string name="CurrentURL" value=" 現在の URL: [CurrentURL]"/> - <string name="TooltipPrice" value="L$[PRICE]-"/> + <string name="TooltipPrice" value="L$[AMOUNT]: "/> <string name="SLurlLabelTeleport"> テレポート </string> diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml index f110052f68..99539a84f5 100644 --- a/indra/newview/skins/default/xui/pl/strings.xml +++ b/indra/newview/skins/default/xui/pl/strings.xml @@ -215,7 +215,7 @@ Kliknij by uruchomić secondlife:// command </string> <string name="CurrentURL" value=" Obecny Adres: [CurrentURL]"/> - <string name="TooltipPrice" value="L$[PRICE]-"/> + <string name="TooltipPrice" value="L$[AMOUNT]: "/> <string name="SLurlLabelTeleport"> Teleportuj do </string> diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml index ca32412058..701e18a58a 100644 --- a/indra/newview/skins/default/xui/pt/strings.xml +++ b/indra/newview/skins/default/xui/pt/strings.xml @@ -236,7 +236,7 @@ Clique para ativar no secondlife:// comando </string> <string name="CurrentURL" value="URL atual: [CurrentURL]"/> - <string name="TooltipPrice" value="L$[PRICE]-"/> + <string name="TooltipPrice" value="L$[AMOUNT]: "/> <string name="SLurlLabelTeleport"> Teletransportar para </string> |