summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md13
-rwxr-xr-xdoc/contributions.txt9
-rwxr-xr-xindra/linux_crash_logger/linux_crash_logger.cpp2
-rwxr-xr-xindra/llcommon/llerror.h9
-rwxr-xr-xindra/llmath/llcalcparser.h6
-rwxr-xr-xindra/llui/llkeywords.cpp14
-rwxr-xr-xindra/llui/lltextbase.cpp1
-rwxr-xr-xindra/llui/lltextbase.h1
-rwxr-xr-xindra/llui/lltexteditor.cpp8
-rwxr-xr-xindra/llui/lltexteditor.h2
-rwxr-xr-xindra/llui/llurlaction.cpp2
-rwxr-xr-xindra/mac_crash_logger/mac_crash_logger.cpp2
-rwxr-xr-xindra/newview/llnetmap.cpp6
-rwxr-xr-xindra/newview/llpanelprofile.cpp2
-rwxr-xr-xindra/newview/llviewermenu.cpp2
-rwxr-xr-xindra/newview/skins/default/xui/en/notifications.xml5
-rwxr-xr-xindra/newview/skins/default/xui/en/panel_preferences_general.xml14
17 files changed, 69 insertions, 29 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000000..431db7ed59
--- /dev/null
+++ b/README.md
@@ -0,0 +1,13 @@
+Second Life Viewer
+==================
+
+This project manages the source code for the
+[Second Life](https://www.secondlife.com) Viewer.
+
+This source is available as open source; for details on licensing, see
+[https://wiki.secondlife.com/wiki/Linden_Lab_Official:Second_Life_Viewer_Licensing_Program](the
+licensing page on the Second Life wiki)
+
+For information on how to use and contribute to this, see
+[https://wiki.secondlife.com/wiki/Open_Source_Portal](the open source
+portal on the wiki).
diff --git a/doc/contributions.txt b/doc/contributions.txt
index 53df40d172..f627145e19 100755
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -185,6 +185,9 @@ Ansariel Hiller
BUG-3764
STORM-1984
STORM-1979
+ STORM-2083
+ STORM-2094
+ MAINT-4677
Aralara Rajal
Arare Chantilly
CHUIBUG-191
@@ -328,6 +331,7 @@ Cinder Roxley
STORM-2037
STORM-2053
STORM-2113
+ STORM-2098
Clara Young
Coaldust Numbers
VWR-1095
@@ -723,6 +727,11 @@ Jonathan Yap
STORM-2034
STORM-2018
STORM-2082
+ STORM-2086
+ STORM-2085
+ STORM-2088
+ STORM-2094
+ STORM-2099
Kadah Coba
STORM-1060
STORM-1843
diff --git a/indra/linux_crash_logger/linux_crash_logger.cpp b/indra/linux_crash_logger/linux_crash_logger.cpp
index 36f62451d7..9d5ec33fed 100755
--- a/indra/linux_crash_logger/linux_crash_logger.cpp
+++ b/indra/linux_crash_logger/linux_crash_logger.cpp
@@ -42,7 +42,7 @@ int main(int argc, char **argv)
if (!(options.has("pid") && options.has("dumpdir")))
{
- llwarns << "Insufficient parameters to crash report." << llendl;
+ LL_WARNS() << "Insufficient parameters to crash report." << LL_ENDL;
}
if (! app.init())
diff --git a/indra/llcommon/llerror.h b/indra/llcommon/llerror.h
index 63040e1772..73544cb914 100755
--- a/indra/llcommon/llerror.h
+++ b/indra/llcommon/llerror.h
@@ -362,13 +362,4 @@ typedef LLError::NoClassInfo _LL_CLASS_TO_LOG;
#define LL_INFOS_ONCE(...) lllog(LLError::LEVEL_INFO, true, ##__VA_ARGS__)
#define LL_WARNS_ONCE(...) lllog(LLError::LEVEL_WARN, true, ##__VA_ARGS__)
-// DEPRECATED: Use the new macros that allow tags and *look* like macros.
-#define lldebugs LL_COMPILE_TIME_MESSAGE("Warning: lldebugs deprecated, use LL_DEBUGS() instead") LL_DEBUGS()
-#define llinfos LL_COMPILE_TIME_MESSAGE("Warning: llinfos deprecated, use LL_INFOS() instead") LL_INFOS()
-#define llwarns LL_COMPILE_TIME_MESSAGE("Warning: llwarns deprecated, use LL_WARNS() instead") LL_WARNS()
-#define llerrs LL_COMPILE_TIME_MESSAGE("Warning: llerrs deprecated, use LL_ERRS() instead") LL_ERRS()
-#define llcont LL_COMPILE_TIME_MESSAGE("Warning: llcont deprecated, use LL_CONT instead") LL_CONT
-#define llendl LL_COMPILE_TIME_MESSAGE("Warning: llendl deprecated, use LL_ENDL instead") LL_ENDL
-
-
#endif // LL_LLERROR_H
diff --git a/indra/llmath/llcalcparser.h b/indra/llmath/llcalcparser.h
index faa699ff7b..e2388d6702 100755
--- a/indra/llmath/llcalcparser.h
+++ b/indra/llmath/llcalcparser.h
@@ -167,9 +167,9 @@ private:
F32 _sin(const F32& a) const { return sin(DEG_TO_RAD * a); }
F32 _cos(const F32& a) const { return cos(DEG_TO_RAD * a); }
F32 _tan(const F32& a) const { return tan(DEG_TO_RAD * a); }
- F32 _asin(const F32& a) const { return asin(a * RAD_TO_DEG); }
- F32 _acos(const F32& a) const { return acos(a * RAD_TO_DEG); }
- F32 _atan(const F32& a) const { return atan(a * RAD_TO_DEG); }
+ F32 _asin(const F32& a) const { return asin(a) * RAD_TO_DEG; }
+ F32 _acos(const F32& a) const { return acos(a) * RAD_TO_DEG; }
+ F32 _atan(const F32& a) const { return atan(a) * RAD_TO_DEG; }
F32 _sqrt(const F32& a) const { return sqrt(a); }
F32 _log(const F32& a) const { return log(a); }
F32 _exp(const F32& a) const { return exp(a); }
diff --git a/indra/llui/llkeywords.cpp b/indra/llui/llkeywords.cpp
index 6750ee482a..6c1333a2af 100755
--- a/indra/llui/llkeywords.cpp
+++ b/indra/llui/llkeywords.cpp
@@ -673,7 +673,7 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW
S32 seg_start = cur - base;
S32 seg_end = seg_start + seg_len;
- // llinfos << "Seg: [" << word.c_str() << "]" << llendl;
+ // LL_INFOS("SyntaxLSL") << "Seg: [" << word.c_str() << "]" << LL_ENDL;
insertSegments(wtext, *seg_list,cur_token, text_len, seg_start, seg_end, defaultColor, editor);
}
@@ -740,10 +740,10 @@ void LLKeywords::insertSegment(std::vector<LLTextSegmentPtr>& seg_list, LLTextSe
#ifdef _DEBUG
void LLKeywords::dump()
{
- llinfos << "LLKeywords" << llendl;
+ LL_INFOS() << "LLKeywords" << LL_ENDL;
- llinfos << "LLKeywords::sWordTokenMap" << llendl;
+ LL_INFOS() << "LLKeywords::sWordTokenMap" << LL_ENDL;
word_token_map_t::iterator word_token_iter = mWordTokenMap.begin();
while( word_token_iter != mWordTokenMap.end() )
{
@@ -752,7 +752,7 @@ void LLKeywords::dump()
++word_token_iter;
}
- llinfos << "LLKeywords::sLineTokenList" << llendl;
+ LL_INFOS() << "LLKeywords::sLineTokenList" << LL_ENDL;
for (token_list_t::iterator iter = mLineTokenList.begin();
iter != mLineTokenList.end(); ++iter)
{
@@ -761,7 +761,7 @@ void LLKeywords::dump()
}
- llinfos << "LLKeywords::sDelimiterTokenList" << llendl;
+ LL_INFOS() << "LLKeywords::sDelimiterTokenList" << LL_ENDL;
for (token_list_t::iterator iter = mDelimiterTokenList.begin();
iter != mDelimiterTokenList.end(); ++iter)
{
@@ -772,12 +772,12 @@ void LLKeywords::dump()
void LLKeywordToken::dump()
{
- llinfos << "[" <<
+ LL_INFOS() << "[" <<
mColor.mV[VX] << ", " <<
mColor.mV[VY] << ", " <<
mColor.mV[VZ] << "] [" <<
wstring_to_utf8str(mToken) << "]" <<
- llendl;
+ LL_ENDL;
}
#endif // DEBUG
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 602a703450..20ec243ec5 100755
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -1316,6 +1316,7 @@ void LLTextBase::replaceWithSuggestion(U32 index)
setCursorPos(it->first + (S32)suggestion.length());
+ onSpellCheckPerformed();
break;
}
diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h
index dfc10923f3..0698e9b53c 100755
--- a/indra/llui/lltextbase.h
+++ b/indra/llui/lltextbase.h
@@ -362,6 +362,7 @@ public:
std::string getMisspelledWord(U32 pos) const;
bool isMisspelledWord(U32 pos) const;
void onSpellCheckSettingsChange();
+ virtual void onSpellCheckPerformed(){}
// used by LLTextSegment layout code
bool getWordWrap() { return mWordWrap; }
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index 926326aaff..d170d17f94 100755
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -2380,6 +2380,14 @@ void LLTextEditor::removeTextFromEnd(S32 num_chars)
//----------------------------------------------------------------------------
+void LLTextEditor::onSpellCheckPerformed()
+{
+ if (isPristine())
+ {
+ mBaseDocIsPristine = FALSE;
+ }
+}
+
void LLTextEditor::makePristine()
{
mPristineCmd = mLastCmd;
diff --git a/indra/llui/lltexteditor.h b/indra/llui/lltexteditor.h
index f6bdf917b4..26702b2412 100755
--- a/indra/llui/lltexteditor.h
+++ b/indra/llui/lltexteditor.h
@@ -160,6 +160,8 @@ public:
autoreplace_callback_t mAutoreplaceCallback;
void setAutoreplaceCallback(autoreplace_callback_t cb) { mAutoreplaceCallback = cb; }
+ /*virtual*/ void onSpellCheckPerformed();
+
//
// Text manipulation
//
diff --git a/indra/llui/llurlaction.cpp b/indra/llui/llurlaction.cpp
index 12537d9dd1..c28dbb8577 100755
--- a/indra/llui/llurlaction.cpp
+++ b/indra/llui/llurlaction.cpp
@@ -227,6 +227,6 @@ void LLUrlAction::blockObject(std::string url)
std::string object_name = getObjectName(url);
if (LLUUID::validate(object_id))
{
- executeSLURL("secondlife:///app/agent/" + object_id + "/block/" + object_name);
+ executeSLURL("secondlife:///app/agent/" + object_id + "/block/" + LLURI::escape(object_name));
}
}
diff --git a/indra/mac_crash_logger/mac_crash_logger.cpp b/indra/mac_crash_logger/mac_crash_logger.cpp
index d6b913829e..b65a80331e 100755
--- a/indra/mac_crash_logger/mac_crash_logger.cpp
+++ b/indra/mac_crash_logger/mac_crash_logger.cpp
@@ -41,7 +41,7 @@ int main(int argc, char **argv)
if (!(options.has("pid") && options.has("dumpdir")))
{
- llwarns << "Insufficient parameters to crash report." << llendl;
+ LL_WARNS() << "Insufficient parameters to crash report." << LL_ENDL;
}
if (! app.init())
diff --git a/indra/newview/llnetmap.cpp b/indra/newview/llnetmap.cpp
index d7e7f13e87..5fc73c67d1 100755
--- a/indra/newview/llnetmap.cpp
+++ b/indra/newview/llnetmap.cpp
@@ -96,13 +96,13 @@ LLNetMap::LLNetMap (const Params & p)
mToolTipMsg(),
mPopupMenu(NULL)
{
+ mScale = gSavedSettings.getF32("MiniMapScale");
+ mPixelsPerMeter = mScale / REGION_WIDTH_METERS;
mDotRadius = llmax(DOT_SCALE * mPixelsPerMeter, MIN_DOT_RADIUS);
- setScale(gSavedSettings.getF32("MiniMapScale"));
}
LLNetMap::~LLNetMap()
{
- gSavedSettings.setF32("MiniMapScale", mScale);
}
BOOL LLNetMap::postBuild()
@@ -137,6 +137,8 @@ void LLNetMap::setScale( F32 scale )
mPixelsPerMeter = mScale / REGION_WIDTH_METERS;
mDotRadius = llmax(DOT_SCALE * mPixelsPerMeter, MIN_DOT_RADIUS);
+ gSavedSettings.setF32("MiniMapScale", mScale);
+
mUpdateNow = true;
}
diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp
index f91c4110c0..e795e7eedb 100755
--- a/indra/newview/llpanelprofile.cpp
+++ b/indra/newview/llpanelprofile.cpp
@@ -168,7 +168,7 @@ public:
{
if (params.size() > 2)
{
- const std::string object_name = params[2].asString();
+ const std::string object_name = LLURI::unescape(params[2].asString());
LLMute mute(avatar_id, object_name, LLMute::OBJECT);
LLMuteList::getInstance()->add(mute);
LLPanelBlockedList::showPanelAndSelect(mute.mID);
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 3096d8c7ce..7e8bd9a4e0 100755
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -2831,6 +2831,8 @@ BOOL enable_object_build(void*)
bool enable_object_edit()
{
+ if (!isAgentAvatarValid()) return false;
+
// *HACK: The new "prelude" Help Islands have a build sandbox area,
// so users need the Edit and Create pie menu options when they are
// there. Eventually this needs to be replaced with code that only
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 24131495c3..506b110afe 100755
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -2481,8 +2481,9 @@ This is usually a temporary failure. Please customize and save the wearable agai
icon="alertmodal.tga"
name="YouHaveBeenLoggedOut"
type="alertmodal">
-Darn. You have been logged out of [SECOND_LIFE]
- [MESSAGE]
+Darn. You have been logged out of [SECOND_LIFE].
+
+[MESSAGE]
<usetemplate
name="okcancelbuttons"
notext="Quit"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_general.xml b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
index f6665a1d5d..9da044ab64 100755
--- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
@@ -39,7 +39,12 @@
enabled="true"
label="English"
name="English"
- value="en" />
+ value="en" />
+ <combo_box.item
+ enabled="true"
+ label="Dansk (Danish) - Beta"
+ name="Danish"
+ value="da" />
<combo_box.item
enabled="true"
label="Deutsch (German) - Beta"
@@ -59,7 +64,12 @@
enabled="true"
label="Italiano (Italian) - Beta"
name="Italian"
- value="it" />
+ value="it" />
+ <combo_box.item
+ enabled="true"
+ label="Polski (Polish) - Beta"
+ name="Polish"
+ value="pl" />
<combo_box.item
enabled="true"
label="Português (Portuguese) - Beta"