EXT-4678: Don't hyperlink sim URLs in About window.
Added support for specifying a black list of URLs on a per-widget basis. URLs on this black list will not be hyperlinked in the text widget. The About dialog adds the sim hostname to this black list.master
parent
fbf605ea32
commit
0a38adfd8a
|
|
@ -1511,6 +1511,25 @@ void LLTextBase::setText(const LLStringExplicit &utf8str, const LLStyle::Params&
|
|||
onValueChange(0, getLength());
|
||||
}
|
||||
|
||||
void LLTextBase::addBlackListUrl(const std::string &url)
|
||||
{
|
||||
mBlackListUrls.push_back(url);
|
||||
}
|
||||
|
||||
bool LLTextBase::isBlackListUrl(const std::string &url) const
|
||||
{
|
||||
std::vector<std::string>::const_iterator it;
|
||||
for (it = mBlackListUrls.begin(); it != mBlackListUrls.end(); ++it)
|
||||
{
|
||||
const std::string &blacklist_url = *it;
|
||||
if (url.find(blacklist_url) != std::string::npos)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//virtual
|
||||
std::string LLTextBase::getText() const
|
||||
{
|
||||
|
|
@ -1585,20 +1604,29 @@ void LLTextBase::appendText(const std::string &new_text, bool prepend_newline, c
|
|||
prepend_newline = false;
|
||||
}
|
||||
}
|
||||
// output the styled Url
|
||||
appendAndHighlightText(match.getLabel(), prepend_newline, part, link_params);
|
||||
prepend_newline = false;
|
||||
|
||||
// set the tooltip for the Url label
|
||||
if (! match.getTooltip().empty())
|
||||
// output the styled Url (unless we've been asked to suppress it)
|
||||
if (isBlackListUrl(match.getUrl()))
|
||||
{
|
||||
segment_set_t::iterator it = getSegIterContaining(getLength()-1);
|
||||
if (it != mSegments.end())
|
||||
std::string orig_url = text.substr(start, end-start);
|
||||
appendAndHighlightText(orig_url, prepend_newline, part, style_params);
|
||||
}
|
||||
else
|
||||
{
|
||||
appendAndHighlightText(match.getLabel(), prepend_newline, part, link_params);
|
||||
|
||||
// set the tooltip for the Url label
|
||||
if (! match.getTooltip().empty())
|
||||
{
|
||||
LLTextSegmentPtr segment = *it;
|
||||
segment->setToolTip(match.getTooltip());
|
||||
segment_set_t::iterator it = getSegIterContaining(getLength()-1);
|
||||
if (it != mSegments.end())
|
||||
{
|
||||
LLTextSegmentPtr segment = *it;
|
||||
segment->setToolTip(match.getTooltip());
|
||||
}
|
||||
}
|
||||
}
|
||||
prepend_newline = false;
|
||||
|
||||
// move on to the rest of the text after the Url
|
||||
if (end < (S32)text.length())
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@
|
|||
#include "llpanel.h"
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <set>
|
||||
|
||||
#include <boost/signals2.hpp>
|
||||
|
|
@ -186,6 +187,9 @@ public:
|
|||
const LLFontGL* getDefaultFont() const { return mDefaultFont; }
|
||||
LLStyle::Params getDefaultStyle();
|
||||
|
||||
// tell the text object to suppress auto highlighting of a specific URL
|
||||
void addBlackListUrl(const std::string &url);
|
||||
|
||||
public:
|
||||
// Fired when a URL link is clicked
|
||||
commit_signal_t mURLClickSignal;
|
||||
|
|
@ -308,6 +312,7 @@ protected:
|
|||
void updateRects();
|
||||
void needsScroll() { mScrollNeeded = TRUE; }
|
||||
void replaceUrlLabel(const std::string &url, const std::string &label);
|
||||
bool isBlackListUrl(const std::string &url) const;
|
||||
|
||||
protected:
|
||||
// text segmentation and flow
|
||||
|
|
@ -359,6 +364,9 @@ protected:
|
|||
LLView* mDocumentView;
|
||||
class LLScrollContainer* mScroller;
|
||||
|
||||
// list of URLs to suppress from automatic hyperlinking
|
||||
std::vector<std::string> mBlackListUrls;
|
||||
|
||||
// transient state
|
||||
bool mReflowNeeded; // need to reflow text because of change to text contents or display region
|
||||
bool mScrollNeeded; // need to change scroll region because of change to cursor position
|
||||
|
|
|
|||
|
|
@ -187,6 +187,12 @@ BOOL LLFloaterAbout::postBuild()
|
|||
support << '\n' << getString("AboutTraffic", args);
|
||||
}
|
||||
|
||||
// don't make the sim hostname be a hyperlink
|
||||
if (info.has("HOSTNAME"))
|
||||
{
|
||||
support_widget->addBlackListUrl(info["HOSTNAME"].asString());
|
||||
}
|
||||
|
||||
support_widget->appendText(support.str(),
|
||||
FALSE,
|
||||
LLStyle::Params()
|
||||
|
|
|
|||
Loading…
Reference in New Issue