diff --git a/indra/llappearance/llavatarappearance.h b/indra/llappearance/llavatarappearance.h index 3e3bb24ded..5ac37706e2 100644 --- a/indra/llappearance/llavatarappearance.h +++ b/indra/llappearance/llavatarappearance.h @@ -142,7 +142,7 @@ public: // This map gets queried a huge amount of time. // typedef std::map joint_map_t; - typedef boost::unordered_map< U32, LLJoint*> joint_map_t; + typedef std::unordered_map joint_map_t; // joint_map_t mJointMap; diff --git a/indra/llaudio/llstreamingaudio_fmodstudio.h b/indra/llaudio/llstreamingaudio_fmodstudio.h index 13501c2710..b09519bd4f 100644 --- a/indra/llaudio/llstreamingaudio_fmodstudio.h +++ b/indra/llaudio/llstreamingaudio_fmodstudio.h @@ -51,9 +51,9 @@ public: /*virtual*/ void start(const std::string& url); /*virtual*/ void stop(); - /*virtual*/ void pause(S32 pause); + /*virtual*/ void pause(int pause); /*virtual*/ void update(); - /*virtual*/ S32 isPlaying(); + /*virtual*/ int isPlaying(); /*virtual*/ void setGain(F32 vol); /*virtual*/ F32 getGain(); /*virtual*/ std::string getURL(); diff --git a/indra/llcharacter/lljoint.cpp b/indra/llcharacter/lljoint.cpp index c6f9d96a40..676042bcc8 100644 --- a/indra/llcharacter/lljoint.cpp +++ b/indra/llcharacter/lljoint.cpp @@ -36,24 +36,20 @@ #include // Query by JointKey rather than just a string, the key can be a U32 index for faster lookup -#include +#include -boost::unordered_map< std::string, U32 > mpStringToKeys; +std::unordered_map mpStringToKeys; -JointKey JointKey::construct( std::string aName ) +JointKey JointKey::construct(const std::string& aName) { - boost::unordered_map< std::string, U32 >::iterator itr = mpStringToKeys.find( aName ); - - if( mpStringToKeys.end() == itr ) + if (const auto itr = mpStringToKeys.find(aName); itr != mpStringToKeys.end()) { - U32 size = mpStringToKeys.size() + 1; - JointKey key{ aName, size }; - mpStringToKeys[ aName ] = size; - return key; + return { aName, itr->second }; } - return JointKey{ aName, itr->second }; - + U32 size = mpStringToKeys.size() + 1; + mpStringToKeys.try_emplace(aName, size); + return { aName, size }; } // @@ -272,10 +268,13 @@ LLJoint *LLJoint::findJoint( const std::string &name ) for (LLJoint* joint : mChildren) { - LLJoint *found = joint->findJoint(name); - if (found) - { - return found; + if(joint) + { + LLJoint *found = joint->findJoint(name); + if (found) + { + return found; + } } } diff --git a/indra/llcharacter/lljoint.h b/indra/llcharacter/lljoint.h index 8607e72d74..2b6d217a53 100644 --- a/indra/llcharacter/lljoint.h +++ b/indra/llcharacter/lljoint.h @@ -46,7 +46,7 @@ struct JointKey std::string mName; U32 mKey; - static JointKey construct( std::string aName ); + static JointKey construct(const std::string& aName); }; inline bool operator==(JointKey const &aLHS, JointKey const &aRHS) @@ -63,7 +63,6 @@ inline std::ostream& operator<<(std::ostream &aLHS, JointKey const &aRHS) { return aLHS << aRHS.mName << " (" << aRHS.mKey << ")"; } - // const S32 LL_CHARACTER_MAX_JOINTS_PER_MESH = 15; diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index b03ac6d20b..03114431c1 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -2065,6 +2065,7 @@ set(viewer_APPSETTINGS_FILES packages-info.txt featuretable.txt featuretable_mac.txt + featuretable_linux.txt ) if (WINDOWS) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 5b1a0d58a3..90ac5f8871 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -19473,7 +19473,6 @@ Change of this parameter will affect the layout of buttons in notification toast world_map preferences flickr - twitter Backup 0 @@ -26716,5 +26715,27 @@ Change of this parameter will affect the layout of buttons in notification toast Value 1 + FSInventoryThumbnailTooltipsDelay + + Comment + Sets the delay of the inventory item thumbnail tooltip + Persist + 1 + Type + F32 + Value + 0.7 + + FSShowInventoryThumbnailTooltips + + Comment + Shows the inventory item thumbnail as tooltip + Persist + 1 + Type + Boolean + Value + 1 + diff --git a/indra/newview/llaisapi.cpp b/indra/newview/llaisapi.cpp index 41684c35c2..d5027b17ea 100644 --- a/indra/newview/llaisapi.cpp +++ b/indra/newview/llaisapi.cpp @@ -1378,6 +1378,15 @@ void AISUpdate::parseCategory(const LLSD& category_map, S32 depth) { LL_WARNS() << "Got stale folder, known: " << curr_cat->getVersion() << ", received: " << version << LL_ENDL; + // FIRE-33337 workaround for rename issue until proper fix is in place and tested + // Also servers a general handler for version de-sync bugs in the future. + if( version < curr_cat->getVersion() ) + { + // AIS version is considered canonical, so we need to refetch + curr_cat->setVersion(LLViewerInventoryCategory::VERSION_UNKNOWN); + curr_cat->fetch(); + } + // return; } @@ -1644,7 +1653,7 @@ void AISUpdate::doUpdate() checkTimeout(); // Do version/descendant accounting. - for (std::map::const_iterator catit = mCatDescendentDeltas.begin(); + for (std::map::const_iterator catit = mCatDescendentDeltas.begin(); catit != mCatDescendentDeltas.end(); ++catit) { LL_DEBUGS("Inventory") << "descendant accounting for " << catit->first << LL_ENDL; diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index ec9d3fd0d5..c71eb8573b 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -1465,15 +1465,63 @@ BOOL LLInventoryPanel::handleHover(S32 x, S32 y, MASK mask) BOOL LLInventoryPanel::handleToolTip(S32 x, S32 y, MASK mask) { + // FIRE-33356: Option to turn off thumbnail tooltips + static LLCachedControl showInventoryThumbnailTooltips(gSavedSettings, "FSShowInventoryThumbnailTooltips"); + if (!showInventoryThumbnailTooltips) + return LLPanel::handleToolTip(x, y, mask); + // + + // FIRE-33285: Explicit timeout for inventory thumbnail tooltips + static LLCachedControl inventoryThumbnailTooltipsDelay(gSavedSettings, "FSInventoryThumbnailTooltipsDelay"); + static LLCachedControl tooltip_fast_delay(gSavedSettings, "ToolTipFastDelay"); + F32 tooltipDelay = LLToolTipMgr::instance().toolTipVisible() ? tooltip_fast_delay() : inventoryThumbnailTooltipsDelay(); + // + if (const LLFolderViewItem* hover_item_p = (!mFolderRoot.isDead()) ? mFolderRoot.get()->getHoveredItem() : nullptr) { if (const LLFolderViewModelItemInventory* vm_item_p = static_cast(hover_item_p->getViewModelItem())) { LLSD params; params["inv_type"] = vm_item_p->getInventoryType(); - params["thumbnail_id"] = vm_item_p->getThumbnailUUID(); + //params["thumbnail_id"] = vm_item_p->getThumbnailUUID(); params["item_id"] = vm_item_p->getUUID(); + // FIRE-33423: Only show tooltip for inventory items with thumbnail or if it exceeds the width of the window + // This is more or less copied from LLInspectTextureUtil::createInventoryToolTip + LLUUID thumbnailUUID = vm_item_p->getThumbnailUUID(); + if (thumbnailUUID.isNull() && vm_item_p->getInventoryType() == LLInventoryType::IT_CATEGORY) + { + LLViewerInventoryCategory* cat = static_cast(vm_item_p->getInventoryObject()); + if (cat && cat->getPreferredType() == LLFolderType::FT_OUTFIT) + { + LLInventoryModel::cat_array_t cats; + LLInventoryModel::item_array_t items; + // Not LLIsOfAssetType, because we allow links + LLIsTextureType f; + gInventory.getDirectDescendentsOf(vm_item_p->getUUID(), cats, items, f); + + // Exactly one texture found => show the texture tooltip + if (1 == items.size()) + { + LLViewerInventoryItem* item = items.front(); + if (item && item->getIsLinkType()) + { + item = item->getLinkedItem(); + } + if (item) + { + thumbnailUUID = item->getAssetUUID(); + } + } + } + } + + if (thumbnailUUID.isNull()) + return LLPanel::handleToolTip(x, y, mask); + else + params["thumbnail_id"] = thumbnailUUID; + // + // tooltip should only show over folder, but screen // rect includes items under folder as well LLRect actionable_rect = hover_item_p->calcScreenRect(); @@ -1485,7 +1533,9 @@ BOOL LLInventoryPanel::handleToolTip(S32 x, S32 y, MASK mask) LLToolTipMgr::instance().show(LLToolTip::Params() .message(hover_item_p->getToolTip()) .sticky_rect(actionable_rect) - .delay_time(LLView::getTooltipTimeout()) + // FIRE-33285: Explicit timeout for inventory thumbnail tooltips + //.delay_time(LLView::getTooltipTimeout()) + .delay_time(tooltipDelay) .create_callback(boost::bind(&LLInspectTextureUtil::createInventoryToolTip, _1)) .create_params(params)); return TRUE; diff --git a/indra/newview/llpanelgroupgeneral.h b/indra/newview/llpanelgroupgeneral.h index 5764626468..c5852617f7 100644 --- a/indra/newview/llpanelgroupgeneral.h +++ b/indra/newview/llpanelgroupgeneral.h @@ -29,7 +29,7 @@ #include "llpanelgroup.h" -#include +#include class LLLineEditor; class LLTextBox; @@ -127,7 +127,7 @@ private: S32 sortMembersList(S32,const LLScrollListItem*,const LLScrollListItem*); LLGroupMgrGroupData::member_list_t::iterator mMemberProgress; - typedef boost::unordered_map avatar_name_cache_connection_map_t; + typedef std::unordered_map avatar_name_cache_connection_map_t; avatar_name_cache_connection_map_t mAvatarNameCacheConnections; BOOL mPendingMemberUpdate; diff --git a/indra/newview/llpreview.cpp b/indra/newview/llpreview.cpp index 1afc6002d0..9136634540 100644 --- a/indra/newview/llpreview.cpp +++ b/indra/newview/llpreview.cpp @@ -127,10 +127,21 @@ const LLInventoryItem *LLPreview::getItem() const else if (mObjectUUID.isNull()) { // [SL:KB] - Patch: UI-Notecards | Checked: 2010-09-11 (Catznip-2.1.2d) | Added: Catznip-2.1.2d - if (LLInventoryType::IT_NONE == mAuxItem->getInventoryType() && mItemUUID.notNull()) - item = gInventory.getItem(mItemUUID); - else if (!mIsMaterialPreview) // FIRE-33196: Fix materials upload conflicting with embedded items in notecards fix - item = mAuxItem; + if (mIsMaterialPreview) + { + if (mItemUUID.notNull()) + { + // it's an inventory item, so get the item. + item = gInventory.getItem(mItemUUID); + } + } + else + { + if (LLInventoryType::IT_NONE == mAuxItem->getInventoryType()) + item = gInventory.getItem(mItemUUID); + else + item = mAuxItem; + } // [/SL:KB] //if (mItemUUID.notNull()) //{ diff --git a/indra/newview/skins/ansastorm/xui/es/panel_main_inventory.xml b/indra/newview/skins/ansastorm/xui/es/panel_main_inventory.xml index 5a88af1267..418e5978ce 100644 --- a/indra/newview/skins/ansastorm/xui/es/panel_main_inventory.xml +++ b/indra/newview/skins/ansastorm/xui/es/panel_main_inventory.xml @@ -61,29 +61,39 @@ - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/indra/newview/skins/ansastorm/xui/ru/panel_main_inventory.xml b/indra/newview/skins/ansastorm/xui/ru/panel_main_inventory.xml index a5d12fe212..c3e431c567 100644 --- a/indra/newview/skins/ansastorm/xui/ru/panel_main_inventory.xml +++ b/indra/newview/skins/ansastorm/xui/ru/panel_main_inventory.xml @@ -9,7 +9,6 @@ Обнаружено [ITEM_COUNT] элементов [FILTER] - @@ -77,30 +76,40 @@ - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/az/panel_main_inventory.xml b/indra/newview/skins/default/xui/az/panel_main_inventory.xml index 47814a6985..daa5c08f3a 100644 --- a/indra/newview/skins/default/xui/az/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/az/panel_main_inventory.xml @@ -12,32 +12,44 @@ Obyektlər: - -