diff --git a/indra/llui/llstatbar.cpp b/indra/llui/llstatbar.cpp
index 402dea7771..d8f0bda543 100644
--- a/indra/llui/llstatbar.cpp
+++ b/indra/llui/llstatbar.cpp
@@ -726,6 +726,13 @@ void LLStatBar::drawLabelAndValue( F32 value, std::string &label, LLRect &bar_re
void LLStatBar::drawTicks( F32 min, F32 max, F32 value_scale, LLRect &bar_rect )
{
+ // FIRE-33481 - FS hangs on login, progress bar full
+ LL_DEBUGS("STATBAR") << "name: " << this->getName() << "min: " << min << ", max: " << max << ", value_scale: " << value_scale << LL_ENDL;
+ if ( value_scale == INFINITY )
+ {
+ return;
+ }
+ //
if (!llisnan(min) && (mAutoScaleMax || mAutoScaleMin))
{
F32 u = LLSmoothInterpolation::getInterpolant(10.f);
diff --git a/indra/newview/fsdiscordconnect.cpp b/indra/newview/fsdiscordconnect.cpp
index 7705d56a31..fd8a433b99 100644
--- a/indra/newview/fsdiscordconnect.cpp
+++ b/indra/newview/fsdiscordconnect.cpp
@@ -44,21 +44,20 @@
#include "llfloaterreg.h"
-#include "discord-rpc/discord_rpc.h"
-
-#include "boost/algorithm/string/case_conv.hpp"
+#include
+#include
#include "fsdiscordkey.h"
#include "llviewernetwork.h"
-boost::scoped_ptr FSDiscordConnect::sStateWatcher(new LLEventStream("DiscordConnectState"));
-boost::scoped_ptr FSDiscordConnect::sInfoWatcher(new LLEventStream("DiscordConnectInfo"));
+std::unique_ptr FSDiscordConnect::sStateWatcher = std::make_unique("DiscordConnectState");
+std::unique_ptr FSDiscordConnect::sInfoWatcher = std::make_unique("DiscordConnectInfo");
// Returns false when the file exists and has not our UUID
// Or, put simply, returns true if someone else is using it
-bool FSDiscordConnect::checkMarkerFile()
+bool FSDiscordConnect::checkMarkerFile() const
{
if (!LLFile::isfile(mMarkerFilename))
{
@@ -94,7 +93,7 @@ void FSDiscordConnect::clearMarkerFile()
LLFile::remove(mMarkerFilename);
}
-void handleDiscordReady(const DiscordUser *request)
+static void handleDiscordReady(const DiscordUser *request)
{
LLSD info;
info["name"] = request->username;
@@ -102,12 +101,12 @@ void handleDiscordReady(const DiscordUser *request)
FSDiscordConnect::getInstance()->setConnectionState(FSDiscordConnect::DISCORD_CONNECTED);
}
-void handleDiscordError(int errorCode, const char* message)
+static void handleDiscordError(int errorCode, const char* message)
{
LL_WARNS("DiscordConnect") << "Discord error, errorCode: \"" << errorCode << "\", message: \"" << message << "\"" << LL_ENDL;
}
-void handleDiscordDisconnected(int errorCode, const char* message)
+static void handleDiscordDisconnected(int errorCode, const char* message)
{
LL_INFOS("DiscordConnect") << "Discord disconnected, errorCode: \"" << errorCode << "\", message: \"" << message << "\"" << LL_ENDL;
FSDiscordConnect::getInstance()->setConnectionState(FSDiscordConnect::DISCORD_NOT_CONNECTED);
@@ -157,7 +156,7 @@ void FSDiscordConnect::discordConnectedCoro(bool autoConnect)
}
-bool isRegionVisible(LLViewerRegion* region)
+static bool isRegionVisible(LLViewerRegion* region)
{
U8 rating = region->getSimAccess();
bool visible = true;
@@ -183,9 +182,9 @@ bool isRegionVisible(LLViewerRegion* region)
return visible;
}
-void FSDiscordConnect::updateRichPresence()
+void FSDiscordConnect::updateRichPresence() const
{
- LLViewerRegion * region = gAgent.getRegion();
+ LLViewerRegion* region = gAgent.getRegion();
if (!isConnected() || !region)
{
return;
@@ -238,7 +237,8 @@ void FSDiscordConnect::updateRichPresence()
discordPresence.largeImageKey = "secondlife_512";
#endif
- discordPresence.largeImageText = LLGridManager::getInstance()->getGridLabel().c_str();
+ auto gridLabel = LLGridManager::getInstance()->getGridLabel();
+ discordPresence.largeImageText = gridLabel.c_str();
discordPresence.smallImageKey = "firestorm_512";
std::string appName = std::string("via " + APP_NAME);
discordPresence.smallImageText = appName.c_str();
@@ -256,10 +256,11 @@ FSDiscordConnect::FSDiscordConnect()
: mConnectionState(DISCORD_NOT_CONNECTED),
mConnected(false),
mInfo(),
- mRefreshInfo(false)
+ mRefreshInfo(false),
+ mConnectTime(0)
{
mMarkerFilename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "discord_in_use_marker");
- LLEventPumps::instance().obtain("mainloop").listen("FSDiscordConnect", boost::bind(&FSDiscordConnect::Tick, this, _1));
+ LLEventPumps::instance().obtain("mainloop").listen("FSDiscordConnect", std::bind(&FSDiscordConnect::Tick, this, std::placeholders::_1));
}
FSDiscordConnect::~FSDiscordConnect()
@@ -270,7 +271,7 @@ FSDiscordConnect::~FSDiscordConnect()
void FSDiscordConnect::connectToDiscord()
{
LLCoros::instance().launch("FSDiscordConnect::discordConnectCoro",
- boost::bind(&FSDiscordConnect::discordConnectCoro, this));
+ std::bind(&FSDiscordConnect::discordConnectCoro, this));
}
void FSDiscordConnect::disconnectFromDiscord()
@@ -278,13 +279,13 @@ void FSDiscordConnect::disconnectFromDiscord()
setConnectionState(FSDiscordConnect::DISCORD_DISCONNECTING);
LLCoros::instance().launch("FSDiscordConnect::discordDisconnectCoro",
- boost::bind(&FSDiscordConnect::discordDisconnectCoro, this));
+ std::bind(&FSDiscordConnect::discordDisconnectCoro, this));
}
void FSDiscordConnect::checkConnectionToDiscord(bool auto_connect)
{
LLCoros::instance().launch("FSDiscordConnect::discordConnectedCoro",
- boost::bind(&FSDiscordConnect::discordConnectedCoro, this, auto_connect));
+ std::bind(&FSDiscordConnect::discordConnectedCoro, this, auto_connect));
}
bool FSDiscordConnect::Tick(const LLSD&)
diff --git a/indra/newview/fsdiscordconnect.h b/indra/newview/fsdiscordconnect.h
index 037672c9ca..e06d3b37ac 100644
--- a/indra/newview/fsdiscordconnect.h
+++ b/indra/newview/fsdiscordconnect.h
@@ -60,10 +60,10 @@ public:
void setConnectionState(EConnectionState connection_state);
void setConnected(bool connected);
- bool isConnected() { return mConnected; }
+ bool isConnected() const { return mConnected; }
EConnectionState getConnectionState() { return mConnectionState; }
- void updateRichPresence();
+ void updateRichPresence() const;
bool Tick(const LLSD&);
@@ -74,15 +74,14 @@ private:
LLSD mInfo;
bool mRefreshInfo;
- static boost::scoped_ptr sStateWatcher;
- static boost::scoped_ptr sInfoWatcher;
- static boost::scoped_ptr sContentWatcher;
+ static std::unique_ptr sStateWatcher;
+ static std::unique_ptr sInfoWatcher;
void discordConnectCoro();
void discordDisconnectCoro();
void discordConnectedCoro(bool autoConnect);
- bool checkMarkerFile();
+ bool checkMarkerFile() const;
void setMarkerFile();
void clearMarkerFile();
diff --git a/indra/newview/llflickrconnect.cpp b/indra/newview/llflickrconnect.cpp
index 80fe26ddbd..9e947a99b5 100644
--- a/indra/newview/llflickrconnect.cpp
+++ b/indra/newview/llflickrconnect.cpp
@@ -44,23 +44,22 @@
#include "llfloaterreg.h"
#include "llcorehttputil.h"
-boost::scoped_ptr LLFlickrConnect::sStateWatcher(new LLEventStream("FlickrConnectState"));
-boost::scoped_ptr LLFlickrConnect::sInfoWatcher(new LLEventStream("FlickrConnectInfo"));
-boost::scoped_ptr LLFlickrConnect::sContentWatcher(new LLEventStream("FlickrConnectContent"));
+std::unique_ptr LLFlickrConnect::sStateWatcher = std::make_unique("FlickrConnectState");
+std::unique_ptr LLFlickrConnect::sInfoWatcher = std::make_unique("FlickrConnectInfo");
// Local functions
-void log_flickr_connect_error(const std::string& request, U32 status, const std::string& reason, const std::string& code, const std::string& description)
+static void log_flickr_connect_error(const std::string& request, U32 status, const std::string& reason, const std::string& code, const std::string& description)
{
// Note: 302 (redirect) is *not* an error that warrants logging
if (status != 302)
{
- LL_WARNS("FlickrConnect") << request << " request failed with a " << status << " " << reason << ". Reason: " << code << " (" << description << ")" << LL_ENDL;
+ LL_WARNS("FlickrConnect") << request << " request failed with a " << status << " " << reason << ". Reason: " << code << " (" << description << ")" << LL_ENDL;
}
}
-void toast_user_for_flickr_success()
+static void toast_user_for_flickr_success()
{
- LLSD args;
+ LLSD args;
args["MESSAGE"] = LLTrans::getString("flickr_post_success");
LLNotificationsUtil::add("FlickrConnect", args);
}
@@ -437,19 +436,19 @@ std::string LLFlickrConnect::getFlickrConnectURL(const std::string& route, bool
void LLFlickrConnect::connectToFlickr(const std::string& request_token, const std::string& oauth_verifier)
{
LLCoros::instance().launch("LLFlickrConnect::flickrConnectCoro",
- boost::bind(&LLFlickrConnect::flickrConnectCoro, this, request_token, oauth_verifier));
+ std::bind(&LLFlickrConnect::flickrConnectCoro, this, request_token, oauth_verifier));
}
void LLFlickrConnect::disconnectFromFlickr()
{
LLCoros::instance().launch("LLFlickrConnect::flickrDisconnectCoro",
- boost::bind(&LLFlickrConnect::flickrDisconnectCoro, this));
+ std::bind(&LLFlickrConnect::flickrDisconnectCoro, this));
}
void LLFlickrConnect::checkConnectionToFlickr(bool auto_connect)
{
LLCoros::instance().launch("LLFlickrConnect::flickrConnectedCoro",
- boost::bind(&LLFlickrConnect::flickrConnectedCoro, this, auto_connect));
+ std::bind(&LLFlickrConnect::flickrConnectedCoro, this, auto_connect));
}
void LLFlickrConnect::loadFlickrInfo()
@@ -457,7 +456,7 @@ void LLFlickrConnect::loadFlickrInfo()
if(mRefreshInfo)
{
LLCoros::instance().launch("LLFlickrConnect::flickrInfoCoro",
- boost::bind(&LLFlickrConnect::flickrInfoCoro, this));
+ std::bind(&LLFlickrConnect::flickrInfoCoro, this));
}
}
@@ -473,7 +472,7 @@ void LLFlickrConnect::uploadPhoto(const std::string& image_url, const std::strin
setConnectionState(LLFlickrConnect::FLICKR_POSTING);
LLCoros::instance().launch("LLFlickrConnect::flickrShareCoro",
- boost::bind(&LLFlickrConnect::flickrShareCoro, this, body));
+ std::bind(&LLFlickrConnect::flickrShareCoro, this, body));
}
void LLFlickrConnect::uploadPhoto(LLPointer image, const std::string& title, const std::string& description, const std::string& tags, int safety_level)
@@ -481,7 +480,7 @@ void LLFlickrConnect::uploadPhoto(LLPointer image, const std::
setConnectionState(LLFlickrConnect::FLICKR_POSTING);
LLCoros::instance().launch("LLFlickrConnect::flickrShareImageCoro",
- boost::bind(&LLFlickrConnect::flickrShareImageCoro, this, image,
+ std::bind(&LLFlickrConnect::flickrShareImageCoro, this, image,
title, description, tags, safety_level));
}
diff --git a/indra/newview/llflickrconnect.h b/indra/newview/llflickrconnect.h
index 5374cb7fa9..d2f862c8ba 100644
--- a/indra/newview/llflickrconnect.h
+++ b/indra/newview/llflickrconnect.h
@@ -78,8 +78,8 @@ public:
void setConnectionState(EConnectionState connection_state);
void setConnected(bool connected);
- bool isConnected() { return mConnected; }
- bool isTransactionOngoing() { return ((mConnectionState == FLICKR_CONNECTION_IN_PROGRESS) || (mConnectionState == FLICKR_POSTING) || (mConnectionState == FLICKR_DISCONNECTING)); }
+ bool isConnected() const { return mConnected; }
+ bool isTransactionOngoing() const { return ((mConnectionState == FLICKR_CONNECTION_IN_PROGRESS) || (mConnectionState == FLICKR_POSTING) || (mConnectionState == FLICKR_DISCONNECTING)); }
EConnectionState getConnectionState() { return mConnectionState; }
void openFlickrWeb(std::string url);
@@ -94,9 +94,8 @@ private:
bool mRefreshInfo;
bool mReadFromMaster;
- static boost::scoped_ptr sStateWatcher;
- static boost::scoped_ptr sInfoWatcher;
- static boost::scoped_ptr sContentWatcher;
+ static std::unique_ptr sStateWatcher;
+ static std::unique_ptr sInfoWatcher;
bool testShareStatus(LLSD &result);
void flickrConnectCoro(std::string requestToken, std::string oauthVerifier);
diff --git a/indra/newview/llinspecttexture.cpp b/indra/newview/llinspecttexture.cpp
index da4e3c0949..3efbbd1003 100644
--- a/indra/newview/llinspecttexture.cpp
+++ b/indra/newview/llinspecttexture.cpp
@@ -191,8 +191,10 @@ LLTextureToolTip::LLTextureToolTip(const LLToolTip::Params& p)
mMaxWidth = llmax(mMaxWidth, mPreviewSize);
// Currently has to share params with LLToolTip, override values
- setBackgroundColor(LLColor4::black);
- setTransparentColor(LLColor4::black);
+ // Make the texture tooltip not look ugly
+ //setBackgroundColor(LLColor4::black);
+ //setTransparentColor(LLColor4::black);
+ //
setBorderVisible(true);
}
@@ -226,22 +228,27 @@ void LLTextureToolTip::initFromParams(const LLToolTip::Params& p)
// Currently has to share params with LLToolTip, override values manually
// Todo: provide from own params instead, may be like object inspector does it
- LLViewBorder::Params border_params;
- border_params.border_thickness(LLPANEL_BORDER_WIDTH);
- border_params.highlight_light_color(LLColor4::white);
- border_params.highlight_dark_color(LLColor4::white);
- border_params.shadow_light_color(LLColor4::white);
- border_params.shadow_dark_color(LLColor4::white);
- addBorder(border_params);
- setBorderVisible(true);
+ // Make the texture tooltip not look ugly
+ //LLViewBorder::Params border_params;
+ //border_params.border_thickness(LLPANEL_BORDER_WIDTH);
+ //border_params.highlight_light_color(LLColor4::white);
+ //border_params.highlight_dark_color(LLColor4::white);
+ //border_params.shadow_light_color(LLColor4::white);
+ //border_params.shadow_dark_color(LLColor4::white);
+ //addBorder(border_params);
+ //setBorderVisible(true);
+ //
- setBackgroundColor(LLColor4::black);
+ // Make the texture tooltip not look ugly
+ // setBackgroundColor(LLColor4::black);
setBackgroundVisible(true);
setBackgroundOpaque(true);
- setBackgroundImage(nullptr);
+ // Make the texture tooltip not look ugly
+ //setBackgroundImage(nullptr);
setTransparentImage(nullptr);
- mTextBox->setColor(LLColor4::white);
+ // Make the texture tooltip not look ugly
+ //mTextBox->setColor(LLColor4::white);
snapToChildren();
}
diff --git a/indra/newview/llinventorylistitem.cpp b/indra/newview/llinventorylistitem.cpp
index 74452fc32b..1620257d33 100644
--- a/indra/newview/llinventorylistitem.cpp
+++ b/indra/newview/llinventorylistitem.cpp
@@ -41,6 +41,10 @@
#include "llinventorymodel.h"
#include "llviewerinventory.h"
+#include "llinspecttexture.h"
+#include "lltooltip.h"
+#include "llviewercontrol.h"
+
static LLWidgetNameRegistry::StaticRegistrar sRegisterPanelInventoryListItemBaseParams(&typeid(LLPanelInventoryListItemBase::Params), "inventory_list_item");
static const S32 WIDGET_SPACING = 3;
@@ -418,7 +422,35 @@ void LLPanelInventoryListItemBase::setTitle(const std::string& title,
BOOL LLPanelInventoryListItemBase::handleToolTip( S32 x, S32 y, MASK mask)
{
- LLRect text_box_rect = mTitleCtrl->getRect();
+ const LLRect& text_box_rect = mTitleCtrl->getRect();
+
+ // Make inventory thumbnail tooltips work with inventory lists
+ static LLCachedControl showInventoryThumbnailTooltips(gSavedSettings, "FSShowInventoryThumbnailTooltips");
+ if (showInventoryThumbnailTooltips && text_box_rect.pointInRect(x, y))
+ {
+ if (auto inventoryItem = gInventory.getItem(mInventoryItemUUID); inventoryItem)
+ {
+ if (const LLUUID& thumbnailUUID = inventoryItem->getThumbnailUUID(); !thumbnailUUID.isNull())
+ {
+ static LLCachedControl inventoryThumbnailTooltipsDelay(gSavedSettings, "FSInventoryThumbnailTooltipsDelay");
+ static LLCachedControl tooltip_fast_delay(gSavedSettings, "ToolTipFastDelay");
+ F32 tooltipDelay = LLToolTipMgr::instance().toolTipVisible() ? tooltip_fast_delay() : inventoryThumbnailTooltipsDelay();
+
+ LLSD params;
+ params["thumbnail_id"] = thumbnailUUID;
+
+ LLToolTipMgr::instance().show(LLToolTip::Params()
+ .message(inventoryItem->getName())
+ .sticky_rect(calcScreenRect())
+ .delay_time(tooltipDelay)
+ .create_callback(boost::bind(&LLInspectTextureUtil::createInventoryToolTip, _1))
+ .create_params(params));
+ return TRUE;
+ }
+ }
+ }
+ //
+
if (text_box_rect.pointInRect(x, y) &&
mTitleCtrl->getTextPixelWidth() <= text_box_rect.getWidth())
{
diff --git a/indra/newview/skins/default/xui/en/floater_toybox.xml b/indra/newview/skins/default/xui/en/floater_toybox.xml
index a899c5a229..fe874c897e 100644
--- a/indra/newview/skins/default/xui/en/floater_toybox.xml
+++ b/indra/newview/skins/default/xui/en/floater_toybox.xml
@@ -81,11 +81,11 @@
+ top="485" />
@@ -108,7 +108,7 @@
layout="topleft"
left="335"
name="btn_restore_defaults"
- top="462"
+ top="495"
width="130">
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_UI.xml b/indra/newview/skins/default/xui/fr/panel_preferences_UI.xml
index cedd1ef97f..f4f16a6a5c 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_UI.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_UI.xml
@@ -57,6 +57,11 @@
+
+
+
+ sec
+
sec