summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/llplugin/llplugincookiestore.cpp36
-rw-r--r--indra/llplugin/tests/llplugincookiestore_test.cpp2
-rw-r--r--indra/llui/llaccordionctrltab.cpp11
-rw-r--r--indra/llui/llaccordionctrltab.h2
-rw-r--r--indra/newview/app_settings/settings_per_account.xml25
-rw-r--r--indra/newview/llappviewer.cpp73
-rw-r--r--indra/newview/llappviewer.h2
-rw-r--r--indra/newview/llcallfloater.cpp2
-rw-r--r--indra/newview/llfloaterpreference.cpp6
-rw-r--r--indra/newview/llgroupactions.cpp5
-rw-r--r--indra/newview/llnearbychat.cpp71
-rw-r--r--indra/newview/llpanellandmarks.cpp17
-rw-r--r--indra/newview/llpanellandmarks.h45
-rw-r--r--indra/newview/llpanelnearbymedia.cpp64
-rw-r--r--indra/newview/llpanelnearbymedia.h38
-rw-r--r--indra/newview/llpanelplaces.cpp14
-rw-r--r--indra/newview/llpanelplaces.h2
-rw-r--r--indra/newview/llpanelplacestab.cpp1
-rw-r--r--indra/newview/llpanelplacestab.h36
-rw-r--r--indra/newview/llpanelteleporthistory.cpp16
-rw-r--r--indra/newview/llpanelteleporthistory.h1
-rw-r--r--indra/newview/llpopupview.cpp37
-rw-r--r--indra/newview/llscreenchannel.cpp32
-rw-r--r--indra/newview/llstartup.cpp9
-rw-r--r--indra/newview/lltexturecache.cpp59
-rw-r--r--indra/newview/lltexturecache.h48
-rw-r--r--indra/newview/lltoolpie.cpp31
-rw-r--r--indra/newview/llviewercontrol.cpp1
-rw-r--r--indra/newview/llviewertexture.cpp66
-rw-r--r--indra/newview/llviewerwindow.cpp46
-rw-r--r--indra/newview/llvoicechannel.cpp7
-rw-r--r--indra/newview/skins/default/xui/en/menu_login.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_main_inventory.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_nearby_media.xml12
-rw-r--r--indra/newview/skins/default/xui/en/panel_people.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_places.xml11
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_privacy.xml7
-rw-r--r--indra/newview/skins/default/xui/en/panel_toast.xml4
-rw-r--r--indra/newview/skins/default/xui/en/sidepanel_appearance.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_about_land.xml9
-rw-r--r--indra/newview/skins/default/xui/es/floater_buy_land.xml3
-rw-r--r--indra/newview/skins/default/xui/es/floater_incoming_call.xml8
-rw-r--r--indra/newview/skins/default/xui/es/floater_inventory_view_finder.xml6
-rw-r--r--indra/newview/skins/default/xui/es/floater_tools.xml2
-rw-r--r--indra/newview/skins/default/xui/es/menu_attachment_self.xml7
-rw-r--r--indra/newview/skins/default/xui/es/menu_avatar_self.xml5
-rw-r--r--indra/newview/skins/default/xui/es/menu_inspect_self_gear.xml3
-rw-r--r--indra/newview/skins/default/xui/es/menu_object.xml4
-rw-r--r--indra/newview/skins/default/xui/es/menu_participant_list.xml5
-rw-r--r--indra/newview/skins/default/xui/es/menu_viewer.xml2
-rw-r--r--indra/newview/skins/default/xui/es/notifications.xml42
-rw-r--r--indra/newview/skins/default/xui/es/panel_people.xml23
-rw-r--r--indra/newview/skins/default/xui/es/panel_preferences_chat.xml2
-rw-r--r--indra/newview/skins/default/xui/es/panel_region_general.xml8
-rw-r--r--indra/newview/skins/default/xui/es/strings.xml397
-rw-r--r--indra/newview/skins/default/xui/nl/strings.xml2
-rw-r--r--install.xml4
57 files changed, 556 insertions, 823 deletions
diff --git a/indra/llplugin/llplugincookiestore.cpp b/indra/llplugin/llplugincookiestore.cpp
index 85b1e70d78..da770c5f2e 100644
--- a/indra/llplugin/llplugincookiestore.cpp
+++ b/indra/llplugin/llplugincookiestore.cpp
@@ -99,7 +99,7 @@ bool LLPluginCookieStore::Cookie::parse(const std::string &host)
std::string::size_type cookie_end = mCookie.size();
std::string::size_type field_start = 0;
- lldebugs << "parsing cookie: " << mCookie << llendl;
+ LL_DEBUGS("CookieStoreParse") << "parsing cookie: " << mCookie << LL_ENDL;
while(field_start < cookie_end)
{
// Finding the start of the next field requires honoring special quoting rules
@@ -167,10 +167,10 @@ bool LLPluginCookieStore::Cookie::parse(const std::string &host)
++value_end;
}
- lldebugs
+ LL_DEBUGS("CookieStoreParse")
<< " field name: \"" << mCookie.substr(name_start, name_end - name_start)
<< "\", value: \"" << mCookie.substr(value_start, value_end - value_start) << "\""
- << llendl;
+ << LL_ENDL;
// See whether this field is one we know
if(first_field)
@@ -195,13 +195,13 @@ bool LLPluginCookieStore::Cookie::parse(const std::string &host)
#if 1
time_t date = curl_getdate(date_string.c_str(), NULL );
mDate.secondsSinceEpoch((F64)date);
- lldebugs << " expire date parsed to: " << mDate.asRFC1123() << llendl;
+ LL_DEBUGS("CookieStoreParse") << " expire date parsed to: " << mDate.asRFC1123() << LL_ENDL;
#else
// This doesn't work (rfc1123-format dates cause it to fail)
if(!mDate.fromString(date_string))
{
// Date failed to parse.
- llwarns << "failed to parse cookie's expire date: " << date << llendl;
+ LL_WARNS("CookieStoreParse") << "failed to parse cookie's expire date: " << date << LL_ENDL;
return false;
}
#endif
@@ -232,9 +232,14 @@ bool LLPluginCookieStore::Cookie::parse(const std::string &host)
{
// We don't care about the value of this field (yet)
}
+ else if(matchName(name_start, name_end, "httponly"))
+ {
+ // We don't care about the value of this field (yet)
+ }
else
{
// An unknown field is a parse failure
+ LL_WARNS("CookieStoreParse") << "unexpected field name: " << mCookie.substr(name_start, name_end - name_start) << LL_ENDL;
return false;
}
@@ -270,7 +275,7 @@ bool LLPluginCookieStore::Cookie::parse(const std::string &host)
mCookie += host;
mDomainEnd = mCookie.size();
- lldebugs << "added domain (" << mDomainStart << " to " << mDomainEnd << "), new cookie is: " << mCookie << llendl;
+ LL_DEBUGS("CookieStoreParse") << "added domain (" << mDomainStart << " to " << mDomainEnd << "), new cookie is: " << mCookie << LL_ENDL;
}
// If the cookie doesn't have a path, add "/".
@@ -288,7 +293,7 @@ bool LLPluginCookieStore::Cookie::parse(const std::string &host)
mCookie += "/";
mPathEnd = mCookie.size();
- lldebugs << "added path (" << mPathStart << " to " << mPathEnd << "), new cookie is: " << mCookie << llendl;
+ LL_DEBUGS("CookieStoreParse") << "added path (" << mPathStart << " to " << mPathEnd << "), new cookie is: " << mCookie << LL_ENDL;
}
@@ -566,7 +571,7 @@ void LLPluginCookieStore::setOneCookie(const std::string &s, std::string::size_t
Cookie *cookie = Cookie::createFromString(s, cookie_start, cookie_end, host);
if(cookie)
{
- lldebugs << "setting cookie: " << cookie->getCookie() << llendl;
+ LL_DEBUGS("CookieStoreUpdate") << "setting cookie: " << cookie->getCookie() << LL_ENDL;
// Create a key for this cookie
std::string key = cookie->getKey();
@@ -579,7 +584,7 @@ void LLPluginCookieStore::setOneCookie(const std::string &s, std::string::size_t
{
// If we're marking cookies as changed, we should keep it anyway since we'll need to send it out with deltas.
cookie->setDead(true);
- lldebugs << " marking dead" << llendl;
+ LL_DEBUGS("CookieStoreUpdate") << " marking dead" << LL_ENDL;
}
else
{
@@ -590,7 +595,7 @@ void LLPluginCookieStore::setOneCookie(const std::string &s, std::string::size_t
delete cookie;
cookie = NULL;
- lldebugs << " removing" << llendl;
+ LL_DEBUGS("CookieStoreUpdate") << " removing" << LL_ENDL;
}
}
@@ -607,7 +612,7 @@ void LLPluginCookieStore::setOneCookie(const std::string &s, std::string::size_t
delete cookie;
cookie = NULL;
- lldebugs << " unchanged" << llendl;
+ LL_DEBUGS("CookieStoreUpdate") << " unchanged" << LL_ENDL;
}
else
{
@@ -619,7 +624,7 @@ void LLPluginCookieStore::setOneCookie(const std::string &s, std::string::size_t
if(mark_changed)
mHasChangedCookies = true;
- lldebugs << " replacing" << llendl;
+ LL_DEBUGS("CookieStoreUpdate") << " replacing" << LL_ENDL;
}
}
else
@@ -631,10 +636,15 @@ void LLPluginCookieStore::setOneCookie(const std::string &s, std::string::size_t
if(mark_changed)
mHasChangedCookies = true;
- lldebugs << " adding" << llendl;
+ LL_DEBUGS("CookieStoreUpdate") << " adding" << LL_ENDL;
}
}
}
+ else
+ {
+ LL_WARNS("CookieStoreUpdate") << "failed to parse cookie: " << s.substr(cookie_start, cookie_end - cookie_start) << LL_ENDL;
+ }
+
}
void LLPluginCookieStore::clearCookies()
diff --git a/indra/llplugin/tests/llplugincookiestore_test.cpp b/indra/llplugin/tests/llplugincookiestore_test.cpp
index 020d9c1977..c903464c64 100644
--- a/indra/llplugin/tests/llplugincookiestore_test.cpp
+++ b/indra/llplugin/tests/llplugincookiestore_test.cpp
@@ -127,7 +127,7 @@ namespace tut
// Valid, distinct cookies:
std::string cookie01 = "cookieA=value; domain=example.com; path=/";
- std::string cookie02 = "cookieB=value; domain=example.com; path=/"; // different name
+ std::string cookie02 = "cookieB=value; Domain=example.com; Path=/; Max-Age=10; Secure; Version=1; Comment=foo!; HTTPOnly"; // cookie with every supported field, in different cases.
std::string cookie03 = "cookieA=value; domain=foo.example.com; path=/"; // different domain
std::string cookie04 = "cookieA=value; domain=example.com; path=/bar/"; // different path
std::string cookie05 = "cookieC; domain=example.com; path=/"; // empty value
diff --git a/indra/llui/llaccordionctrltab.cpp b/indra/llui/llaccordionctrltab.cpp
index 0959722aa6..dfb427f293 100644
--- a/indra/llui/llaccordionctrltab.cpp
+++ b/indra/llui/llaccordionctrltab.cpp
@@ -860,5 +860,16 @@ void LLAccordionCtrlTab::ctrlSetLeftTopAndSize(LLView* panel, S32 left, S32 top,
panel->reshape( width, height, 1);
panel->setRect(panel_rect);
}
+BOOL LLAccordionCtrlTab::handleToolTip(S32 x, S32 y, MASK mask)
+{
+ //header may be not the first child but we need to process it first
+ if(y >= (getRect().getHeight() - HEADER_HEIGHT - HEADER_HEIGHT/2) )
+ {
+ //inside tab header
+ //fix for EXT-6619
+ return TRUE;
+ }
+ return LLUICtrl::handleToolTip(x, y, mask);
+}
diff --git a/indra/llui/llaccordionctrltab.h b/indra/llui/llaccordionctrltab.h
index 4b8b22405e..fb19d17e99 100644
--- a/indra/llui/llaccordionctrltab.h
+++ b/indra/llui/llaccordionctrltab.h
@@ -148,6 +148,8 @@ public:
virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
virtual BOOL handleKey(KEY key, MASK mask, BOOL called_from_parent);
+ virtual BOOL handleToolTip(S32 x, S32 y, MASK mask);
+
virtual bool addChild(LLView* child, S32 tab_group);
bool isExpanded() { return mDisplayChildren; }
diff --git a/indra/newview/app_settings/settings_per_account.xml b/indra/newview/app_settings/settings_per_account.xml
index dc76a4e518..3ce32a05b0 100644
--- a/indra/newview/app_settings/settings_per_account.xml
+++ b/indra/newview/app_settings/settings_per_account.xml
@@ -1,26 +1,26 @@
<llsd>
<map>
- <key>BusyResponseChanged</key>
+ <key>BusyModeResponse</key>
<map>
<key>Comment</key>
- <string>Does user's busy mode message differ from default?</string>
+ <string>Auto response to instant messages while in busy mode.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
- <string>Boolean</string>
+ <string>String</string>
<key>Value</key>
- <integer>0</integer>
+ <string>The Resident you messaged is in &apos;busy mode&apos; which means they have requested not to be disturbed. Your message will still be shown in their IM panel for later viewing.</string>
</map>
- <key>BusyModeResponse</key>
+ <key>BusyModeResponse2</key>
<map>
<key>Comment</key>
- <string>Auto response to instant messages while in busy mode.</string>
+ <string>Auto response to instant messages while in busy mode, clean (unencoded) version of BusyModeResponse</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>The Resident you messaged is in &apos;busy mode&apos; which means they have requested not to be disturbed. Your message will still be shown in their IM panel for later viewing.</string>
+ <string>|TOKEN COPY BusyModeResponse|</string>
</map>
<key>InstantMessageLogPath</key>
<map>
@@ -99,17 +99,6 @@
<key>Value</key>
<integer>1</integer>
</map>
- <key>VoiceEffectDefault</key>
- <map>
- <key>Comment</key>
- <string>Selected Voice Morph</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>String</string>
- <key>Value</key>
- <string>00000000-0000-0000-0000-000000000000</string>
- </map>
<!-- Settings below are for back compatibility only.
They are not used in current viewer anymore. But they can't be removed to avoid
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 6ec4266925..0e2507db5b 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -3031,41 +3031,59 @@ void LLAppViewer::migrateCacheDirectory()
#endif // LL_WINDOWS || LL_DARWIN
}
+//static
+S32 LLAppViewer::getCacheVersion()
+{
+ static const S32 cache_version = 7;
+
+ return cache_version ;
+}
+
bool LLAppViewer::initCache()
{
mPurgeCache = false;
- // Purge cache if user requested it
- if (gSavedSettings.getBOOL("PurgeCacheOnStartup") ||
- gSavedSettings.getBOOL("PurgeCacheOnNextStartup"))
+ BOOL disable_texture_cache = FALSE ;
+ BOOL read_only = mSecondInstance ? TRUE : FALSE;
+ LLAppViewer::getTextureCache()->setReadOnly(read_only) ;
+
+ if (gSavedSettings.getS32("LocalCacheVersion") != LLAppViewer::getCacheVersion())
{
- gSavedSettings.setBOOL("PurgeCacheOnNextStartup", false);
- mPurgeCache = true;
+ if(read_only)
+ {
+ disable_texture_cache = TRUE ; //if the cache version of this viewer is different from the running one, this viewer can not use the texture cache.
+ }
+ else
+ {
+ mPurgeCache = true; // Purge cache if the version number is different.
+ gSavedSettings.setS32("LocalCacheVersion", LLAppViewer::getCacheVersion());
+ }
}
- // Purge cache if it belongs to an old version
- else
+
+ if(!read_only)
{
- static const S32 cache_version = 6;
- if (gSavedSettings.getS32("LocalCacheVersion") != cache_version)
+ // Purge cache if user requested it
+ if (gSavedSettings.getBOOL("PurgeCacheOnStartup") ||
+ gSavedSettings.getBOOL("PurgeCacheOnNextStartup"))
{
+ gSavedSettings.setBOOL("PurgeCacheOnNextStartup", false);
mPurgeCache = true;
- gSavedSettings.setS32("LocalCacheVersion", cache_version);
}
- }
- // We have moved the location of the cache directory over time.
- migrateCacheDirectory();
-
- // Setup and verify the cache location
- std::string cache_location = gSavedSettings.getString("CacheLocation");
- std::string new_cache_location = gSavedSettings.getString("NewCacheLocation");
- if (new_cache_location != cache_location)
- {
- gDirUtilp->setCacheDir(gSavedSettings.getString("CacheLocation"));
- purgeCache(); // purge old cache
- gSavedSettings.setString("CacheLocation", new_cache_location);
- gSavedSettings.setString("CacheLocationTopFolder", gDirUtilp->getBaseFileName(new_cache_location));
- }
+ // We have moved the location of the cache directory over time.
+ migrateCacheDirectory();
+ // Setup and verify the cache location
+ std::string cache_location = gSavedSettings.getString("CacheLocation");
+ std::string new_cache_location = gSavedSettings.getString("NewCacheLocation");
+ if (new_cache_location != cache_location)
+ {
+ gDirUtilp->setCacheDir(gSavedSettings.getString("CacheLocation"));
+ purgeCache(); // purge old cache
+ gSavedSettings.setString("CacheLocation", new_cache_location);
+ gSavedSettings.setString("CacheLocationTopFolder", gDirUtilp->getBaseFileName(new_cache_location));
+ }
+ }
+
if (!gDirUtilp->setCacheDir(gSavedSettings.getString("CacheLocation")))
{
LL_WARNS("AppCache") << "Unable to set cache location" << LL_ENDL;
@@ -3073,7 +3091,7 @@ bool LLAppViewer::initCache()
gSavedSettings.setString("CacheLocationTopFolder", "");
}
- if (mPurgeCache)
+ if (mPurgeCache && !read_only)
{
LLSplashScreen::update(LLTrans::getString("StartupClearingCache"));
purgeCache();
@@ -3082,14 +3100,13 @@ bool LLAppViewer::initCache()
LLSplashScreen::update(LLTrans::getString("StartupInitializingTextureCache"));
// Init the texture cache
- // Allocate 80% of the cache size for textures
- BOOL read_only = mSecondInstance ? TRUE : FALSE;
+ // Allocate 80% of the cache size for textures
const S32 MB = 1024*1024;
S64 cache_size = (S64)(gSavedSettings.getU32("CacheSize")) * MB;
const S64 MAX_CACHE_SIZE = 1024*MB;
cache_size = llmin(cache_size, MAX_CACHE_SIZE);
S64 texture_cache_size = ((cache_size * 8)/10);
- S64 extra = LLAppViewer::getTextureCache()->initCache(LL_PATH_CACHE, texture_cache_size, read_only);
+ S64 extra = LLAppViewer::getTextureCache()->initCache(LL_PATH_CACHE, texture_cache_size, disable_texture_cache);
texture_cache_size -= extra;
LLSplashScreen::update(LLTrans::getString("StartupInitializingVFS"));
diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h
index a915b7fa50..60645c46d4 100644
--- a/indra/newview/llappviewer.h
+++ b/indra/newview/llappviewer.h
@@ -102,6 +102,8 @@ public:
static LLImageDecodeThread* getImageDecodeThread() { return sImageDecodeThread; }
static LLTextureFetch* getTextureFetch() { return sTextureFetch; }
+ static S32 getCacheVersion() ;
+
const std::string& getSerialNumber() { return mSerialNumber; }
bool getPurgeCache() const { return mPurgeCache; }
diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp
index 44f1cefafe..bed5c01d7a 100644
--- a/indra/newview/llcallfloater.cpp
+++ b/indra/newview/llcallfloater.cpp
@@ -133,7 +133,7 @@ LLCallFloater::~LLCallFloater()
if(LLVoiceClient::instanceExists())
{
- gVoiceClient->removeObserver(this);
+ LLVoiceClient::instance().removeObserver(this);
}
LLTransientFloaterMgr::getInstance()->removeControlView(this);
}
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index 551884d5a2..00292eecb4 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -1137,10 +1137,8 @@ void LLFloaterPreference::onClickLogPath()
{
return; //Canceled!
}
- std::string chat_log_dir = picker.getDirName();
- std::string chat_log_top_folder= gDirUtilp->getBaseFileName(chat_log_dir);
- gSavedPerAccountSettings.setString("InstantMessageLogPath",chat_log_dir);
- gSavedPerAccountSettings.setString("InstantMessageLogFolder",chat_log_top_folder);
+
+ gSavedPerAccountSettings.setString("InstantMessageLogPath", picker.getDirName());
}
void LLFloaterPreference::setPersonalInfo(const std::string& visibility, bool im_via_email, const std::string& email)
diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp
index d4eecc8c48..438159b2e6 100644
--- a/indra/newview/llgroupactions.cpp
+++ b/indra/newview/llgroupactions.cpp
@@ -75,12 +75,13 @@ public:
return false;
}
- //*TODO by what to replace showing groups floater?
if (tokens[0].asString() == "list")
{
if (tokens[1].asString() == "show")
{
- //LLFloaterReg::showInstance("contacts", "groups");
+ LLSD params;
+ params["people_panel_tab_name"] = "groups_panel";
+ LLSideTray::getInstance()->showPanel("panel_people", params);
return true;
}
return false;
diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index 5f71d7100b..5d72827a7a 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -2,25 +2,31 @@
* @file LLNearbyChat.cpp
* @brief Nearby chat history scrolling panel implementation
*
- * $LicenseInfo:firstyear=2009&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
+ * $LicenseInfo:firstyear=2009&license=viewergpl$
+ *
+ * Copyright (c) 2009, Linden Research, Inc.
*
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
*
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
*
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
* $/LicenseInfo$
*/
@@ -43,6 +49,7 @@
#include "llchannelmanager.h"
#include "llagent.h" // gAgent
+#include "llfloaterscriptdebug.h"
#include "llchathistory.h"
#include "llstylemap.h"
@@ -100,9 +107,7 @@ BOOL LLNearbyChat::postBuild()
getDockTongue(), LLDockControl::TOP, boost::bind(&LLNearbyChat::getAllowedRect, this, _1)));
}
- //fix for EXT-4621
- //chrome="true" prevents floater from stilling capture
- setIsChrome(true);
+ setIsChrome(true);
//chrome="true" hides floater caption
if (mDragHandle)
mDragHandle->setTitleVisible(TRUE);
@@ -156,6 +161,25 @@ std::string appendTime()
void LLNearbyChat::addMessage(const LLChat& chat,bool archive,const LLSD &args)
{
+ if (chat.mChatType == CHAT_TYPE_DEBUG_MSG)
+ {
+ if(gSavedSettings.getBOOL("ShowScriptErrors") == FALSE)
+ return;
+ if (gSavedSettings.getS32("ShowScriptErrorsLocation")== 1)// show error in window //("ScriptErrorsAsChat"))
+ {
+
+ LLColor4 txt_color;
+
+ LLViewerChat::getChatColor(chat,txt_color);
+
+ LLFloaterScriptDebug::addScriptLine(chat.mText,
+ chat.mFromName,
+ txt_color,
+ chat.mFromID);
+ return;
+ }
+ }
+
LLChat& tmp_chat = const_cast<LLChat&>(chat);
if(tmp_chat.mTimeStr.empty())
@@ -327,14 +351,3 @@ void LLNearbyChat::onFocusLost()
LLPanel::onFocusLost();
}
-BOOL LLNearbyChat::handleMouseDown(S32 x, S32 y, MASK mask)
-{
- //fix for EXT-6625
- //highlight NearbyChat history whenever mouseclick happen in NearbyChat
- //setting focus to eidtor will force onFocusLost() call that in its turn will change
- //background opaque. This all happenn since NearByChat is "chrome" and didn't process focus change.
-
- if(mChatHistory)
- mChatHistory->setFocus(TRUE);
- return LLDockableFloater::handleMouseDown(x, y, mask);
-}
diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp
index 8d8c996374..a1cdbdad59 100644
--- a/indra/newview/llpanellandmarks.cpp
+++ b/indra/newview/llpanellandmarks.cpp
@@ -280,6 +280,17 @@ void LLLandmarksPanel::onShowOnMap()
doActionOnCurSelectedLandmark(boost::bind(&LLLandmarksPanel::doShowOnMap, this, _1));
}
+//virtual
+void LLLandmarksPanel::onShowProfile()
+{
+ LLFolderViewItem* cur_item = getCurSelectedItem();
+
+ if(!cur_item)
+ return;
+
+ cur_item->getListener()->performAction(mCurrentSelectedList->getModel(),"about");
+}
+
// virtual
void LLLandmarksPanel::onTeleport()
{
@@ -306,6 +317,7 @@ void LLLandmarksPanel::updateVerbs()
bool landmark_selected = isLandmarkSelected();
mTeleportBtn->setEnabled(landmark_selected && isActionEnabled("teleport"));
mShowOnMapBtn->setEnabled(landmark_selected && isActionEnabled("show_on_map"));
+ mShowProfile->setEnabled(landmark_selected && isActionEnabled("more_info"));
// TODO: mantipov: Uncomment when mShareBtn is supported
// Share button should be enabled when neither a folder nor a landmark is selected
@@ -977,13 +989,10 @@ bool LLLandmarksPanel::isActionEnabled(const LLSD& userdata) const
void LLLandmarksPanel::onCustomAction(const LLSD& userdata)
{
- LLFolderViewItem* cur_item = getCurSelectedItem();
- if(!cur_item)
- return;
std::string command_name = userdata.asString();
if("more_info" == command_name)
{
- cur_item->getListener()->performAction(mCurrentSelectedList->getModel(),"about");
+ onShowProfile();
}
else if ("teleport" == command_name)
{
diff --git a/indra/newview/llpanellandmarks.h b/indra/newview/llpanellandmarks.h
index 2b398decce..da5d683cfc 100644
--- a/indra/newview/llpanellandmarks.h
+++ b/indra/newview/llpanellandmarks.h
@@ -3,25 +3,30 @@
* @brief Landmarks tab for Side Bar "Places" panel
* class definition
*
- * $LicenseInfo:firstyear=2009&license=viewerlgpl$
+ * $LicenseInfo:firstyear=2009&license=viewergpl$
+ *
+ * Copyright (c) 2009, Linden Research, Inc.
+ *
* Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
* $/LicenseInfo$
*/
@@ -55,7 +60,6 @@ public:
/*virtual*/ void onShowProfile();
/*virtual*/ void onTeleport();
/*virtual*/ void updateVerbs();
- /*virtual*/ bool isSingleItemSelected();
void onSelectionChange(LLPlacesInventoryPanel* inventory_list, const std::deque<LLFolderViewItem*> &items, BOOL user_action);
void onSelectorButtonClicked();
@@ -138,7 +142,7 @@ private:
/**
* Processes drag-n-drop of the Landmarks and folders into trash button.
*/
- bool handleDragAndDropToTrash(BOOL drop, EDragAndDropType cargo_type, void* cargo_data, EAcceptance* accept);
+ bool handleDragAndDropToTrash(BOOL drop, EDragAndDropType cargo_type, EAcceptance* accept);
/**
* Landmark actions callbacks. Fire when a landmark is loaded from the list.
@@ -162,6 +166,7 @@ private:
LLInventoryObserver* mInventoryObserver;
LLPanel* mListCommands;
+ bool mSortByDate;
typedef std::vector<LLAccordionCtrlTab*> accordion_tabs_t;
accordion_tabs_t mAccordionTabs;
diff --git a/indra/newview/llpanelnearbymedia.cpp b/indra/newview/llpanelnearbymedia.cpp
index 811d70ade3..93ebae334f 100644
--- a/indra/newview/llpanelnearbymedia.cpp
+++ b/indra/newview/llpanelnearbymedia.cpp
@@ -2,25 +2,31 @@
* @file llpanelnearbymedia.cpp
* @brief Management interface for muting and controlling nearby media
*
- * $LicenseInfo:firstyear=2005&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
+ * $LicenseInfo:firstyear=2005&license=viewergpl$
+ *
+ * Copyright (c) 2005-2009, Linden Research, Inc.
*
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
*
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
*
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
* $/LicenseInfo$
*/
@@ -218,8 +224,8 @@ void LLPanelNearByMedia::reshape(S32 width, S32 height, BOOL called_from_parent)
{
LLPanel::reshape(width, height, called_from_parent);
- LLButton* more_btn = findChild<LLButton>("more_btn");
- if (more_btn && more_btn->getValue().asBoolean())
+ LLButton* more_less_btn = getChild<LLButton>("more_less_btn");
+ if (more_less_btn->getValue().asBoolean())
{
mMoreRect = getRect();
}
@@ -1004,7 +1010,7 @@ void LLPanelNearByMedia::updateControls()
if (NULL == impl)
{
// Just means it hasn't started yet
- showBasicControls(false, false, false, false, 0);
+ showBasicControls(false, false, false);
}
else if (impl->isMediaTimeBased())
{
@@ -1016,11 +1022,7 @@ void LLPanelNearByMedia::updateControls()
}
else {
// non-time-based parcel media
- showBasicControls(LLViewerMedia::isParcelMediaPlaying(),
- false,
- false,
- impl->getVolume() == 0.0,
- impl->getVolume());
+ showBasicControls(LLViewerMedia::isParcelMediaPlaying(), false, false);
}
}
}
@@ -1043,23 +1045,19 @@ void LLPanelNearByMedia::updateControls()
else {
showBasicControls(!impl->isMediaDisabled(),
! impl->isParcelMedia(), // include_zoom
- LLViewerMediaFocus::getInstance()->isZoomed(),
- impl->getVolume() == 0.0,
- impl->getVolume());
+ LLViewerMediaFocus::getInstance()->isZoomed());
}
}
}
}
-void LLPanelNearByMedia::showBasicControls(bool playing, bool include_zoom, bool is_zoomed, bool muted, F32 volume)
+void LLPanelNearByMedia::showBasicControls(bool playing, bool include_zoom, bool is_zoomed)
{
mStopCtrl->setVisible(playing);
mPlayCtrl->setVisible(!playing);
mPauseCtrl->setVisible(false);
- mVolumeSliderCtrl->setVisible(true);
- mMuteCtrl->setVisible(true);
- mMuteBtn->setValue(muted);
- mVolumeSlider->setValue(volume);
+ mMuteCtrl->setVisible(false);
+ mVolumeSliderCtrl->setVisible(false);
mZoomCtrl->setVisible(include_zoom && !is_zoomed);
mUnzoomCtrl->setVisible(include_zoom && is_zoomed);
mStopCtrl->setEnabled(true);
@@ -1158,7 +1156,7 @@ void LLPanelNearByMedia::onClickSelectedMediaMute()
else {
LLViewerMediaImpl* impl = (selected_media_id == PARCEL_MEDIA_LIST_ITEM_UUID) ?
((LLViewerMediaImpl*)LLViewerParcelMedia::getParcelMedia()) : LLViewerMedia::getMediaImplFromTextureID(selected_media_id);
- if (NULL != impl)
+ if (NULL != impl && impl->isMediaTimeBased())
{
F32 volume = impl->getVolume();
if(volume > 0.0)
@@ -1189,7 +1187,7 @@ void LLPanelNearByMedia::onCommitSelectedMediaVolume()
else {
LLViewerMediaImpl* impl = (selected_media_id == PARCEL_MEDIA_LIST_ITEM_UUID) ?
((LLViewerMediaImpl*)LLViewerParcelMedia::getParcelMedia()) : LLViewerMedia::getMediaImplFromTextureID(selected_media_id);
- if (NULL != impl)
+ if (NULL != impl && impl->isMediaTimeBased())
{
impl->setVolume(mVolumeSlider->getValueF32());
}
diff --git a/indra/newview/llpanelnearbymedia.h b/indra/newview/llpanelnearbymedia.h
index be4d313743..7c07867df3 100644
--- a/indra/newview/llpanelnearbymedia.h
+++ b/indra/newview/llpanelnearbymedia.h
@@ -2,25 +2,31 @@
* @file llpanelnearbymedia.h
* @brief Management interface for muting and controlling nearby media
*
- * $LicenseInfo:firstyear=2005&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
+ * $LicenseInfo:firstyear=2005&license=viewergpl$
+ *
+ * Copyright (c) 2005-2009, Linden Research, Inc.
*
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
*
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
*
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
* $/LicenseInfo$
*/
@@ -134,7 +140,7 @@ private:
bool shouldShow(LLViewerMediaImpl* impl);
- void showBasicControls(bool playing, bool include_zoom, bool is_zoomed, bool muted, F32 volume);
+ void showBasicControls(bool playing, bool include_zoom, bool is_zoomed);
void showTimeBasedControls(bool playing, bool include_zoom, bool is_zoomed, bool muted, F32 volume);
void showDisabledControls();
void updateControls();
diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp
index 54455afa4f..17784c31e3 100644
--- a/indra/newview/llpanelplaces.cpp
+++ b/indra/newview/llpanelplaces.cpp
@@ -252,6 +252,9 @@ BOOL LLPanelPlaces::postBuild()
mOverflowBtn = getChild<LLButton>("overflow_btn");
mOverflowBtn->setClickedCallback(boost::bind(&LLPanelPlaces::onOverflowButtonClicked, this));
+ mPlaceInfoBtn = getChild<LLButton>("profile_btn");
+ mPlaceInfoBtn->setClickedCallback(boost::bind(&LLPanelPlaces::onProfileButtonClicked, this));
+
LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
registrar.add("Places.OverflowMenu.Action", boost::bind(&LLPanelPlaces::onOverflowMenuItemClicked, this, _2));
LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_registrar;
@@ -745,6 +748,14 @@ void LLPanelPlaces::onOverflowButtonClicked()
LLMenuGL::showPopup(this, menu, rect.mRight, rect.mTop);
}
+void LLPanelPlaces::onProfileButtonClicked()
+{
+ if (!mActivePanel)
+ return;
+
+ mActivePanel->onShowProfile();
+}
+
bool LLPanelPlaces::onOverflowMenuItemEnable(const LLSD& param)
{
std::string value = param.asString();
@@ -1060,8 +1071,11 @@ void LLPanelPlaces::updateVerbs()
mSaveBtn->setVisible(isLandmarkEditModeOn);
mCancelBtn->setVisible(isLandmarkEditModeOn);
mCloseBtn->setVisible(is_create_landmark_visible && !isLandmarkEditModeOn);
+ mPlaceInfoBtn->setVisible(mPlaceInfoType != LANDMARK_INFO_TYPE && mPlaceInfoType != TELEPORT_HISTORY_INFO_TYPE
+ && !is_create_landmark_visible && !isLandmarkEditModeOn);
mShowOnMapBtn->setEnabled(!is_create_landmark_visible && !isLandmarkEditModeOn && have_3d_pos);
+ mPlaceInfoBtn->setEnabled(!is_create_landmark_visible && !isLandmarkEditModeOn && have_3d_pos);
if (is_place_info_visible)
{
diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h
index 97cf43d222..7a77fc9300 100644
--- a/indra/newview/llpanelplaces.h
+++ b/indra/newview/llpanelplaces.h
@@ -98,6 +98,7 @@ private:
bool onOverflowMenuItemEnable(const LLSD& param);
void onCreateLandmarkButtonClicked(const LLUUID& folder_id);
void onBackButtonClicked();
+ void onProfileButtonClicked();
void toggleMediaPanel();
void togglePickPanel(BOOL visible);
@@ -128,6 +129,7 @@ private:
LLButton* mCancelBtn;
LLButton* mCloseBtn;
LLButton* mOverflowBtn;
+ LLButton* mPlaceInfoBtn;
LLPlacesInventoryObserver* mInventoryObserver;
LLPlacesParcelObserver* mParcelObserver;
diff --git a/indra/newview/llpanelplacestab.cpp b/indra/newview/llpanelplacestab.cpp
index 9806b8c64d..42cf3b03a3 100644
--- a/indra/newview/llpanelplacestab.cpp
+++ b/indra/newview/llpanelplacestab.cpp
@@ -56,6 +56,7 @@ void LLPanelPlacesTab::setPanelPlacesButtons(LLPanelPlaces* panel)
{
mTeleportBtn = panel->getChild<LLButton>("teleport_btn");
mShowOnMapBtn = panel->getChild<LLButton>("map_btn");
+ mShowProfile = panel->getChild<LLButton>("profile_btn");
}
void LLPanelPlacesTab::onRegionResponse(const LLVector3d& landmark_global_pos,
diff --git a/indra/newview/llpanelplacestab.h b/indra/newview/llpanelplacestab.h
index 367ce46e2e..f4e93a7658 100644
--- a/indra/newview/llpanelplacestab.h
+++ b/indra/newview/llpanelplacestab.h
@@ -2,25 +2,30 @@
* @file llpanelplacestab.h
* @brief Tabs interface for Side Bar "Places" panel
*
- * $LicenseInfo:firstyear=2009&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
+ * $LicenseInfo:firstyear=2009&license=viewergpl$
+ *
+ * Copyright (c) 2009, Linden Research, Inc.
*
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
*
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
*
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
* $/LicenseInfo$
*/
@@ -42,7 +47,6 @@ public:
virtual void onShowOnMap() = 0;
virtual void onShowProfile() = 0;
virtual void onTeleport() = 0;
- virtual bool isSingleItemSelected() = 0;
bool isTabVisible(); // Check if parent TabContainer is visible.
diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index 0a34531eee..c0b2244038 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -496,6 +496,20 @@ void LLTeleportHistoryPanel::onShowOnMap()
}
}
+//virtual
+void LLTeleportHistoryPanel::onShowProfile()
+{
+ if (!mLastSelectedFlatlList)
+ return;
+
+ LLTeleportHistoryFlatItem* itemp = dynamic_cast<LLTeleportHistoryFlatItem *> (mLastSelectedFlatlList->getSelectedItem());
+
+ if(!itemp)
+ return;
+
+ LLTeleportHistoryFlatItem::showPlaceInfoPanel(itemp->getIndex());
+}
+
// virtual
void LLTeleportHistoryPanel::onTeleport()
{
@@ -544,6 +558,7 @@ void LLTeleportHistoryPanel::updateVerbs()
{
mTeleportBtn->setEnabled(false);
mShowOnMapBtn->setEnabled(false);
+ mShowProfile->setEnabled(false);
return;
}
@@ -551,6 +566,7 @@ void LLTeleportHistoryPanel::updateVerbs()
mTeleportBtn->setEnabled(NULL != itemp);
mShowOnMapBtn->setEnabled(NULL != itemp);
+ mShowProfile->setEnabled(NULL != itemp);
}
void LLTeleportHistoryPanel::getNextTab(const LLDate& item_date, S32& tab_idx, LLDate& tab_date)
diff --git a/indra/newview/llpanelteleporthistory.h b/indra/newview/llpanelteleporthistory.h
index 5e2ccc0c93..a456ca506f 100644
--- a/indra/newview/llpanelteleporthistory.h
+++ b/indra/newview/llpanelteleporthistory.h
@@ -73,6 +73,7 @@ public:
/*virtual*/ void onSearchEdit(const std::string& string);
/*virtual*/ void onShowOnMap();
+ /*virtual*/ void onShowProfile();
/*virtual*/ void onTeleport();
///*virtual*/ void onCopySLURL();
/*virtual*/ void updateVerbs();
diff --git a/indra/newview/llpopupview.cpp b/indra/newview/llpopupview.cpp
index 499b6a8f5f..7cde350d5a 100644
--- a/indra/newview/llpopupview.cpp
+++ b/indra/newview/llpopupview.cpp
@@ -2,25 +2,31 @@
* @file llpopupview.cpp
* @brief Holds transient popups
*
- * $LicenseInfo:firstyear=2001&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
+ * $LicenseInfo:firstyear=2001&license=viewergpl$
+ *
+ * Copyright (c) 2001-2010, Linden Research, Inc.
*
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
*
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
*
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
* $/LicenseInfo$
*/
#include "llviewerprecompiledheaders.h"
@@ -110,6 +116,7 @@ BOOL LLPopupView::handleMouseEvent(boost::function<BOOL(LLView*, S32, S32)> func
if (!popup
|| !predicate(popup))
{
+ ++popup_it;
continue;
}
diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp
index e9a80907b7..af440a3689 100644
--- a/indra/newview/llscreenchannel.cpp
+++ b/indra/newview/llscreenchannel.cpp
@@ -47,7 +47,6 @@
#include "llsyswellwindow.h"
#include "llimfloater.h"
#include "llscriptfloater.h"
-#include "llfontgl.h"
#include <algorithm>
@@ -582,7 +581,6 @@ void LLScreenChannel::showToastsTop()
void LLScreenChannel::createStartUpToast(S32 notif_num, F32 timer)
{
LLRect toast_rect;
- LLRect tbox_rect;
LLToast::Params p;
p.lifetime_secs = timer;
p.enable_hide_btn = false;
@@ -593,34 +591,26 @@ void LLScreenChannel::createStartUpToast(S32 notif_num, F32 timer)
mStartUpToastPanel->setOnFadeCallback(boost::bind(&LLScreenChannel::onStartUpToastHide, this));
+ LLPanel* wrapper_panel = mStartUpToastPanel->getChild<LLPanel>("wrapper_panel");
LLTextBox* text_box = mStartUpToastPanel->getChild<LLTextBox>("toast_text");
std::string text = LLTrans::getString("StartUpNotifications");
- tbox_rect = text_box->getRect();
- S32 tbox_width = tbox_rect.getWidth();
- S32 tbox_vpad = text_box->getVPad();
- S32 text_width = text_box->getDefaultFont()->getWidth(text);
- S32 text_height = text_box->getTextPixelHeight();
-
- // EXT - 3703 (Startup toast message doesn't fit toast width)
- // Calculating TextBox HEIGHT needed to include the whole string according to the given WIDTH of the TextBox.
- S32 new_tbox_height = (text_width/tbox_width + 1) * text_height;
- // Calculating TOP position of TextBox
- S32 new_tbox_top = new_tbox_height + tbox_vpad + gSavedSettings.getS32("ToastGap");
- // Calculating toast HEIGHT according to the new TextBox size
- S32 toast_height = new_tbox_height + tbox_vpad * 2;
-
- tbox_rect.setLeftTopAndSize(tbox_rect.mLeft, new_tbox_top, tbox_rect.getWidth(), new_tbox_height);
- text_box->setRect(tbox_rect);
-
toast_rect = mStartUpToastPanel->getRect();
mStartUpToastPanel->reshape(getRect().getWidth(), toast_rect.getHeight(), true);
- toast_rect.setLeftTopAndSize(0, toast_height + gSavedSettings.getS32("ToastGap"), getRect().getWidth(), toast_height);
- mStartUpToastPanel->setRect(toast_rect);
text_box->setValue(text);
text_box->setVisible(TRUE);
+
+ S32 old_height = text_box->getRect().getHeight();
+ text_box->reshapeToFitText();
+ text_box->setOrigin(text_box->getRect().mLeft, (wrapper_panel->getRect().getHeight() - text_box->getRect().getHeight())/2);
+ S32 new_height = text_box->getRect().getHeight();
+ S32 height_delta = new_height - old_height;
+
+ toast_rect.setLeftTopAndSize(0, toast_rect.getHeight() + height_delta +gSavedSettings.getS32("ToastGap"), getRect().getWidth(), toast_rect.getHeight());
+ mStartUpToastPanel->setRect(toast_rect);
+
addChild(mStartUpToastPanel);
mStartUpToastPanel->setVisible(TRUE);
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 94a32873ec..c7eb9320e4 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -889,13 +889,12 @@ bool idle_startup()
}
//Default the path if one isn't set.
- if (gSavedPerAccountSettings.getString("InstantMessageLogFolder").empty())
+ // *NOTE: unable to check variable differ from "InstantMessageLogPath" because it was
+ // provided in pre 2.0 viewer. See EXT-6661
+ if (gSavedPerAccountSettings.getString("InstantMessageLogPath").empty())
{
gDirUtilp->setChatLogsDir(gDirUtilp->getOSUserAppDir());
- std::string chat_log_dir = gDirUtilp->getChatLogsDir();
- std::string chat_log_top_folder=gDirUtilp->getBaseFileName(chat_log_dir);
- gSavedPerAccountSettings.setString("InstantMessageLogPath",chat_log_dir);
- gSavedPerAccountSettings.setString("InstantMessageLogFolder",chat_log_top_folder);
+ gSavedPerAccountSettings.setString("InstantMessageLogPath", gDirUtilp->getChatLogsDir());
}
else
{
diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp
index 651070a2ea..df79725474 100644
--- a/indra/newview/lltexturecache.cpp
+++ b/indra/newview/lltexturecache.cpp
@@ -742,7 +742,7 @@ LLTextureCache::LLTextureCache(bool threaded)
mHeaderMutex(NULL),
mListMutex(NULL),
mHeaderAPRFile(NULL),
- mReadOnly(FALSE),
+ mReadOnly(TRUE), //do not allow to change the texture cache until setReadOnly() is called.
mTexturesSizeTotal(0),
mDoPurge(FALSE)
{
@@ -929,13 +929,16 @@ U32 LLTextureCache::sCacheMaxEntries = MAX_REASONABLE_FILE_SIZE / TEXTURE_CACHE_
S64 LLTextureCache::sCacheMaxTexturesSize = 0; // no limit
const char* entries_filename = "texture.entries";
const char* cache_filename = "texture.cache";
-const char* textures_dirname = "textures";
+const char* old_textures_dirname = "textures";
+//change the location of the texture cache to prevent from being deleted by old version viewers.
+const char* textures_dirname = "texturecache";
void LLTextureCache::setDirNames(ELLPath location)
{
std::string delem = gDirUtilp->getDirDelimiter();
- mHeaderEntriesFileName = gDirUtilp->getExpandedFilename(location, entries_filename);
- mHeaderDataFileName = gDirUtilp->getExpandedFilename(location, cache_filename);
+
+ mHeaderEntriesFileName = gDirUtilp->getExpandedFilename(location, textures_dirname, entries_filename);
+ mHeaderDataFileName = gDirUtilp->getExpandedFilename(location, textures_dirname, cache_filename);
mTexturesDirName = gDirUtilp->getExpandedFilename(location, textures_dirname);
}
@@ -947,16 +950,38 @@ void LLTextureCache::purgeCache(ELLPath location)
{
setDirNames(location);
llassert_always(mHeaderAPRFile == NULL);
- LLAPRFile::remove(mHeaderEntriesFileName, getLocalAPRFilePool());
- LLAPRFile::remove(mHeaderDataFileName, getLocalAPRFilePool());
+
+ //remove the legacy cache if exists
+ std::string texture_dir = mTexturesDirName ;
+ mTexturesDirName = gDirUtilp->getExpandedFilename(location, old_textures_dirname);
+ if(LLFile::isdir(mTexturesDirName))
+ {
+ std::string file_name = gDirUtilp->getExpandedFilename(location, entries_filename);
+ LLAPRFile::remove(file_name, getLocalAPRFilePool());
+
+ file_name = gDirUtilp->getExpandedFilename(location, cache_filename);
+ LLAPRFile::remove(file_name, getLocalAPRFilePool());
+
+ purgeAllTextures(true);
+ }
+ mTexturesDirName = texture_dir ;
}
+
+ //remove the current texture cache.
purgeAllTextures(true);
}
-S64 LLTextureCache::initCache(ELLPath location, S64 max_size, BOOL read_only)
+//is called in the main thread before initCache(...) is called.
+void LLTextureCache::setReadOnly(BOOL read_only)
{
- mReadOnly = read_only;
-
+ mReadOnly = read_only ;
+}
+
+//called in the main thread.
+S64 LLTextureCache::initCache(ELLPath location, S64 max_size, BOOL disable_texture_cache)
+{
+ llassert_always(getPending() == 0) ; //should not start accessing the texture cache before initialized.
+
S64 header_size = (max_size * 2) / 10;
S64 max_entries = header_size / TEXTURE_CACHE_ENTRY_SIZE;
sCacheMaxEntries = (S32)(llmin((S64)sCacheMaxEntries, max_entries));
@@ -968,6 +993,15 @@ S64 LLTextureCache::initCache(ELLPath location, S64 max_size, BOOL read_only)
sCacheMaxTexturesSize = max_size;
max_size -= sCacheMaxTexturesSize;
+ if(disable_texture_cache) //the texture cache is disabled
+ {
+ llinfos << "The texture cache is disabled!" << llendl ;
+ setReadOnly(TRUE) ;
+ purgeAllTextures(true);
+
+ return max_size ;
+ }
+
LL_INFOS("TextureCache") << "Headers: " << sCacheMaxEntries
<< " Textures size: " << sCacheMaxTexturesSize/(1024*1024) << " MB" << LL_ENDL;
@@ -976,6 +1010,7 @@ S64 LLTextureCache::initCache(ELLPath location, S64 max_size, BOOL read_only)
if (!mReadOnly)
{
LLFile::mkdir(mTexturesDirName);
+
const char* subdirs = "0123456789abcdef";
for (S32 i=0; i<16; i++)
{
@@ -986,6 +1021,8 @@ S64 LLTextureCache::initCache(ELLPath location, S64 max_size, BOOL read_only)
readHeaderCache();
purgeTextures(true); // calc mTexturesSize and make some room in the texture cache if we need it
+ llassert_always(getPending() == 0) ; //should not start accessing the texture cache before initialized.
+
return max_size; // unused cache space
}
@@ -1462,9 +1499,9 @@ void LLTextureCache::purgeAllTextures(bool purge_directories)
}
if (purge_directories)
{
- gDirUtilp->deleteFilesInDir(mTexturesDirName,mask);
+ gDirUtilp->deleteFilesInDir(mTexturesDirName, mask);
LLFile::rmdir(mTexturesDirName);
- }
+ }
}
mHeaderIDMap.clear();
mTexturesSizeMap.clear();
diff --git a/indra/newview/lltexturecache.h b/indra/newview/lltexturecache.h
index 7f1bba56fb..5dc06ff401 100644
--- a/indra/newview/lltexturecache.h
+++ b/indra/newview/lltexturecache.h
@@ -2,25 +2,31 @@
* @file lltexturecache.h
* @brief Object for managing texture cachees.
*
- * $LicenseInfo:firstyear=2000&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
+ * $LicenseInfo:firstyear=2000&license=viewergpl$
+ *
+ * Copyright (c) 2000-2009, Linden Research, Inc.
*
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
*
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
*
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
* $/LicenseInfo$
*/
@@ -138,6 +144,7 @@ public:
protected:
// Accessed by LLTextureCacheWorker
+ bool updateTextureEntryList(const LLUUID& id, S32 size);
std::string getLocalFileName(const LLUUID& id);
std::string getTextureFileName(const LLUUID& id);
void addCompleted(Responder* responder, bool success);
@@ -148,7 +155,6 @@ protected:
private:
void setDirNames(ELLPath location);
void readHeaderCache();
- void clearCorruptedCache();
void purgeAllTextures(bool purge_directories);
void purgeTextures(bool validate);
LLAPRFile* openHeaderEntriesFile(bool readonly, S32 offset);
@@ -156,16 +162,16 @@ private:
void readEntriesHeader();
void writeEntriesHeader();
S32 openAndReadEntry(const LLUUID& id, Entry& entry, bool create);
- bool updateEntry(S32& idx, Entry& entry, S32 new_image_size, S32 new_body_size);
+ void updateEntry(S32 idx, Entry& entry, S32 new_image_size, S32 new_body_size);
void updateEntryTimeStamp(S32 idx, Entry& entry) ;
U32 openAndReadEntries(std::vector<Entry>& entries);
void writeEntriesAndClose(const std::vector<Entry>& entries);
- void readEntryFromHeaderImmediately(S32& idx, Entry& entry) ;
- void writeEntryToHeaderImmediately(S32& idx, Entry& entry, bool write_header = false) ;
+ void readEntryFromHeaderImmediately(S32 idx, Entry& entry) ;
+ void writeEntryToHeaderImmediately(S32 idx, Entry& entry, bool write_header = false) ;
void removeEntry(S32 idx, Entry& entry, std::string& filename);
void removeCachedTexture(const LLUUID& id) ;
- S32 getHeaderCacheEntry(const LLUUID& id, Entry& entry);
- S32 setHeaderCacheEntry(const LLUUID& id, Entry& entry, S32 imagesize, S32 datasize);
+ S32 getHeaderCacheEntry(const LLUUID& id, S32& imagesize);
+ S32 setHeaderCacheEntry(const LLUUID& id, S32 imagesize);
void writeUpdatedEntries() ;
void updatedHeaderEntriesFile() ;
void lockHeaders() { mHeaderMutex.lock(); }
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index 84c463495b..a9bbee784d 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -181,10 +181,10 @@ BOOL LLToolPie::pickLeftMouseDownCallback()
parent = object->getRootEdit();
}
-
- BOOL touchable = (object && object->flagHandleTouch())
- || (parent && parent->flagHandleTouch());
-
+ if (handleMediaClick(mPick))
+ {
+ return TRUE;
+ }
// If it's a left-click, and we have a special action, do it.
if (useClickAction(mask, object, parent))
@@ -286,14 +286,12 @@ BOOL LLToolPie::pickLeftMouseDownCallback()
}
}
- if (handleMediaClick(mPick))
- {
- return TRUE;
- }
-
// put focus back "in world"
gFocusMgr.setKeyboardFocus(NULL);
+ BOOL touchable = (object && object->flagHandleTouch())
+ || (parent && parent->flagHandleTouch());
+
// Switch to grab tool if physical or triggerable
if (object &&
!object->isAvatar() &&
@@ -513,21 +511,22 @@ BOOL LLToolPie::handleHover(S32 x, S32 y, MASK mask)
}
LLViewerObject* click_action_object = click_action_pick.getObject();
- if (click_action_object && useClickAction(mask, click_action_object, click_action_object->getRootEdit()))
+ if (handleMediaHover(mHoverPick))
{
+ // *NOTE: If you think the hover glow conflicts with the media outline, you
+ // could disable it here.
show_highlight = true;
- ECursorType cursor = cursor_from_object(click_action_object);
- gViewerWindow->setCursor(cursor);
+ // cursor set by media object
lldebugst(LLERR_USER_INPUT) << "hover handled by LLToolPie (inactive)" << llendl;
}
- else if (handleMediaHover(mHoverPick))
+ else if (click_action_object && useClickAction(mask, click_action_object, click_action_object->getRootEdit()))
{
- // *NOTE: If you think the hover glow conflicts with the media outline, you
- // could disable it here.
show_highlight = true;
- // cursor set by media object
+ ECursorType cursor = cursor_from_object(click_action_object);
+ gViewerWindow->setCursor(cursor);
lldebugst(LLERR_USER_INPUT) << "hover handled by LLToolPie (inactive)" << llendl;
}
+
else if ((object && !object->isAvatar() && object->usePhysics())
|| (parent && !parent->isAvatar() && parent->usePhysics()))
{
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index d14b8595eb..3fa6b0c8c2 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -404,7 +404,6 @@ bool handleHighResSnapshotChanged(const LLSD& newvalue)
bool handleVoiceClientPrefsChanged(const LLSD& newvalue)
{
- if(LLVoiceClient::getInstance())
LLVoiceClient::getInstance()->updateSettings();
return true;
}
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index 9b5b210bf7..a5adb11c53 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -492,7 +492,6 @@ void LLViewerTexture::init(bool firstinit)
mTextureState = NO_DELETE ;
mDontDiscard = FALSE;
- mCanResetMaxVirtualSize = true ;
mMaxVirtualSize = 0.f;
mNeedsGLTexture = FALSE ;
mNeedsResetMaxVirtualSize = FALSE ;
@@ -591,11 +590,6 @@ void LLViewerTexture::forceImmediateUpdate()
{
}
-void LLViewerTexture::setResetMaxVirtualSizeFlag(bool flag)
-{
- mCanResetMaxVirtualSize = flag ;
-}
-
void LLViewerTexture::addTextureStats(F32 virtual_size, BOOL needs_gltexture) const
{
if(needs_gltexture)
@@ -619,7 +613,7 @@ void LLViewerTexture::addTextureStats(F32 virtual_size, BOOL needs_gltexture) co
void LLViewerTexture::resetTextureStats()
{
- mMaxVirtualSize = 0.0f ;
+ mMaxVirtualSize = 0.0f;
mAdditionalDecodePriority = 0.f ;
mNeedsResetMaxVirtualSize = FALSE ;
}
@@ -1077,7 +1071,6 @@ void LLViewerFetchedTexture::init(bool firstinit)
mRequestedDiscardLevel = -1;
mRequestedDownloadPriority = 0.f;
mFullyLoaded = FALSE;
- mCanUseHTTP = true ;
mDesiredDiscardLevel = MAX_DISCARD_LEVEL + 1;
mMinDesiredDiscardLevel = MAX_DISCARD_LEVEL + 1;
@@ -1447,14 +1440,8 @@ void LLViewerFetchedTexture::setKnownDrawSize(S32 width, S32 height)
//virtual
void LLViewerFetchedTexture::processTextureStats()
{
- if(mFullyLoaded)
+ if(mFullyLoaded)//already loaded
{
- if(mDesiredDiscardLevel <= mMinDesiredDiscardLevel)//already loaded
- {
- return ;
- }
- mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, mMinDesiredDiscardLevel) ;
- mFullyLoaded = FALSE ;
return ;
}
@@ -1488,7 +1475,6 @@ void LLViewerFetchedTexture::processTextureStats()
mDesiredDiscardLevel = (S8)llmin(log((F32)mFullWidth / mKnownDrawWidth) / log_2,
log((F32)mFullHeight / mKnownDrawHeight) / log_2) ;
mDesiredDiscardLevel = llclamp(mDesiredDiscardLevel, (S8)0, (S8)getMaxDiscardLevel()) ;
- mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, mMinDesiredDiscardLevel) ;
}
mKnownDrawSizeChanged = FALSE ;
@@ -1521,7 +1507,7 @@ F32 LLViewerFetchedTexture::calcDecodePriority()
}
if(mFullyLoaded && !mForceToSaveRawImage)//already loaded for static texture
{
- return -1.0f ; //alreay fetched
+ return -4.0f ; //alreay fetched
}
S32 cur_discard = getCurrentDiscardLevelForFetching();
@@ -1535,16 +1521,16 @@ F32 LLViewerFetchedTexture::calcDecodePriority()
}
else if(mDesiredDiscardLevel >= cur_discard && cur_discard > -1)
{
- priority = -2.0f ;
+ priority = -1.0f ;
}
else if(mCachedRawDiscardLevel > -1 && mDesiredDiscardLevel >= mCachedRawDiscardLevel)
{
- priority = -3.0f;
+ priority = -1.0f;
}
else if (mDesiredDiscardLevel > getMaxDiscardLevel())
{
// Don't decode anything we don't need
- priority = -4.0f;
+ priority = -1.0f;
}
else if ((mBoostLevel == LLViewerTexture::BOOST_UI || mBoostLevel == LLViewerTexture::BOOST_ICON) && !have_all_data)
{
@@ -1558,14 +1544,9 @@ F32 LLViewerFetchedTexture::calcDecodePriority()
// Always want high boosted images
priority = 1.f;
}
- else if(mForceToSaveRawImage)
- {
- //force to fetch the raw image.
- priority = 1.f;
- }
else
{
- priority = -5.f; //stop fetching
+ priority = -1.f; //stop fetching
}
}
else if (cur_discard < 0)
@@ -1581,7 +1562,11 @@ F32 LLViewerFetchedTexture::calcDecodePriority()
else if ((mMinDiscardLevel > 0) && (cur_discard <= mMinDiscardLevel))
{
// larger mips are corrupted
- priority = -6.0f;
+ priority = -3.0f;
+ }
+ else if (cur_discard <= mDesiredDiscardLevel)
+ {
+ priority = -4.0f;
}
else
{
@@ -1684,11 +1669,7 @@ void LLViewerFetchedTexture::updateVirtualSize()
setAdditionalDecodePriority(facep->getImportanceToCamera()) ;
}
}
-
- if(mCanResetMaxVirtualSize)
- {
- mNeedsResetMaxVirtualSize = TRUE ;
- }
+ mNeedsResetMaxVirtualSize = TRUE ;
reorganizeFaceList() ;
reorganizeVolumeList();
}
@@ -1769,7 +1750,7 @@ bool LLViewerFetchedTexture::updateFetch()
else
{
mFetchState = LLAppViewer::getTextureFetch()->getFetchState(mID, mDownloadProgress, mRequestedDownloadPriority,
- mFetchPriority, mFetchDeltaTime, mRequestDeltaTime, mCanUseHTTP);
+ mFetchPriority, mFetchDeltaTime, mRequestDeltaTime);
}
// We may have data ready regardless of whether or not we are finished (e.g. waiting on write)
@@ -1905,17 +1886,11 @@ bool LLViewerFetchedTexture::updateFetch()
h = mGLTexturep->getHeight(0);
c = mComponents;
}
-
- const U32 override_tex_discard_level = gSavedSettings.getU32("TextureDiscardLevel");
- if (override_tex_discard_level != 0)
- {
- desired_discard = override_tex_discard_level;
- }
// bypass texturefetch directly by pulling from LLTextureCache
bool fetch_request_created = false;
fetch_request_created = LLAppViewer::getTextureFetch()->createRequest(mUrl, getID(),getTargetHost(), decode_priority,
- w, h, c, desired_discard, needsAux(), mCanUseHTTP);
+ w, h, c, desired_discard, needsAux());
if (fetch_request_created)
{
@@ -1923,7 +1898,7 @@ bool LLViewerFetchedTexture::updateFetch()
mIsFetching = TRUE;
mRequestedDiscardLevel = desired_discard;
mFetchState = LLAppViewer::getTextureFetch()->getFetchState(mID, mDownloadProgress, mRequestedDownloadPriority,
- mFetchPriority, mFetchDeltaTime, mRequestDeltaTime, mCanUseHTTP);
+ mFetchPriority, mFetchDeltaTime, mRequestDeltaTime);
}
// if createRequest() failed, we're finishing up a request for this UUID,
@@ -2064,13 +2039,10 @@ bool LLViewerFetchedTexture::doLoadedCallbacks()
bool run_raw_callbacks = false;
bool need_readback = false;
- mMinDesiredDiscardLevel = MAX_DISCARD_LEVEL + 1;
for(callback_list_t::iterator iter = mLoadedCallbackList.begin();
iter != mLoadedCallbackList.end(); )
{
LLLoadedCallbackEntry *entryp = *iter++;
- mMinDesiredDiscardLevel = llmin(mMinDesiredDiscardLevel, (S8)entryp->mDesiredDiscard) ;
-
if (entryp->mNeedsImageRaw)
{
if (mNeedsAux)
@@ -2202,7 +2174,6 @@ bool LLViewerFetchedTexture::doLoadedCallbacks()
if (mLoadedCallbackList.empty())
{
gTextureList.mCallbackList.erase(this);
- mMinDesiredDiscardLevel = MAX_DISCARD_LEVEL + 1;
}
// Done with any raw image data at this point (will be re-created if we still have callbacks)
@@ -3324,10 +3295,7 @@ F32 LLViewerMediaTexture::getMaxVirtualSize()
}
}
- if(mCanResetMaxVirtualSize)
- {
- mNeedsResetMaxVirtualSize = TRUE ;
- }
+ mNeedsResetMaxVirtualSize = TRUE ;
reorganizeFaceList() ;
reorganizeVolumeList();
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 35632a745e..0fc38e8561 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -838,7 +838,7 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi
LLPanelLogin::refreshLocation( true );
LLPanelLogin::updateLocationUI();
}
- return LLWindowCallbacks::DND_MOVE;
+ return LLWindowCallbacks::DND_COPY;
};
}
@@ -857,7 +857,11 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi
if (obj && !obj->getRegion()->getCapability("ObjectMedia").empty())
{
LLTextureEntry *te = obj->getTE(object_face);
- if (te)
+
+ // can modify URL if we can modify the object or we have navigate permissions
+ bool allow_modify_url = obj->permModify() || obj->hasMediaPermission( te->getMediaData(), LLVOVolume::MEDIA_PERM_INTERACT );
+
+ if (te && allow_modify_url )
{
if (drop)
{
@@ -888,29 +892,24 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi
// URL passes the whitelist
if (te->getMediaData()->checkCandidateUrl( url ) )
{
- // we are allowed to modify the object or we have navigate permissions
- // NOTE: Design states you you can change the URL if you have media
- // navigate permissions even if you do not have prim modify rights
- if ( obj->permModify() || obj->hasMediaPermission( te->getMediaData(), LLVOVolume::MEDIA_PERM_INTERACT ) )
+ // just navigate to the URL
+ if (obj->getMediaImpl(object_face))
{
- // just navigate to the URL
- if (obj->getMediaImpl(object_face))
- {
- obj->getMediaImpl(object_face)->navigateTo(url);
- }
- else
- {
- // This is very strange. Navigation should
- // happen via the Impl, but we don't have one.
- // This sends it to the server, which /should/
- // trigger us getting it. Hopefully.
- LLSD media_data;
- media_data[LLMediaEntry::CURRENT_URL_KEY] = url;
- obj->syncMediaData(object_face, media_data, true, true);
- obj->sendMediaDataUpdate();
- }
- result = LLWindowCallbacks::DND_LINK;
+ obj->getMediaImpl(object_face)->navigateTo(url);
}
+ else
+ {
+ // This is very strange. Navigation should
+ // happen via the Impl, but we don't have one.
+ // This sends it to the server, which /should/
+ // trigger us getting it. Hopefully.
+ LLSD media_data;
+ media_data[LLMediaEntry::CURRENT_URL_KEY] = url;
+ obj->syncMediaData(object_face, media_data, true, true);
+ obj->sendMediaDataUpdate();
+ }
+ result = LLWindowCallbacks::DND_LINK;
+
}
}
LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject);
@@ -930,6 +929,7 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi
LLSelectMgr::getInstance()->highlightObjectOnly(mDragHoveredObject);
}
result = (! te->hasMedia()) ? LLWindowCallbacks::DND_COPY : LLWindowCallbacks::DND_LINK;
+
}
}
}
diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp
index fac7fa6a18..7bb1006e93 100644
--- a/indra/newview/llvoicechannel.cpp
+++ b/indra/newview/llvoicechannel.cpp
@@ -139,13 +139,10 @@ LLVoiceChannel::LLVoiceChannel(const LLUUID& session_id, const std::string& sess
LLVoiceChannel::~LLVoiceChannel()
{
- // Don't use LLVoiceClient::getInstance() here -- this can get called during atexit() time and that singleton MAY have already been destroyed.
- // Using call of instanceExists() instead of gVoiceClient in check to avoid crash in LLVoiceClient::removeObserver()
- // when quitting viewer by closing console window before login (though in case of such quit crash will occur
- // later in other destructors anyway). EXT-5524
+ // Must check instance exists here, the singleton MAY have already been destroyed.
if(LLVoiceClient::instanceExists())
{
- gVoiceClient->removeObserver(this);
+ LLVoiceClient::instance().removeObserver(this);
}
sVoiceChannelMap.erase(mSessionID);
diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml
index 4655fa8c46..e95300a4b3 100644
--- a/indra/newview/skins/default/xui/en/menu_login.xml
+++ b/indra/newview/skins/default/xui/en/menu_login.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<menu_bar
- follows="left|top|right"
+ follows="left|top"
height="18"
layout="topleft"
left_delta="0"
diff --git a/indra/newview/skins/default/xui/en/panel_main_inventory.xml b/indra/newview/skins/default/xui/en/panel_main_inventory.xml
index 1b04d01abf..27d66945d9 100644
--- a/indra/newview/skins/default/xui/en/panel_main_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_main_inventory.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
background_visible="true"
+ default_tab_group="1"
follows="all"
height="408"
label="Things"
@@ -61,6 +62,7 @@
left="7"
name="inventory filter tabs"
tab_height="30"
+ tab_group="1"
tab_position="top"
tab_min_width="100"
top_pad="10"
diff --git a/indra/newview/skins/default/xui/en/panel_nearby_media.xml b/indra/newview/skins/default/xui/en/panel_nearby_media.xml
index 8c13ced8f3..ff2aae645b 100644
--- a/indra/newview/skins/default/xui/en/panel_nearby_media.xml
+++ b/indra/newview/skins/default/xui/en/panel_nearby_media.xml
@@ -1,11 +1,13 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
+ can_resize="true"
+ can_close="false"
bg_opaque_image="Volume_Background"
bg_alpha_image="Volume_Background"
background_opaque="true"
background_visible="true"
layout="topleft"
- width="328"
+ width="270"
height="230"
name="nearby_media"
help_topic="nearby_media">
@@ -27,7 +29,7 @@
follows="left"
tool_tip="Turn all nearby media off"
left="8"
- width="95"
+ width="66"
height="22"
label="Stop All">
<button.commit_callback
@@ -38,7 +40,7 @@
follows="left"
tool_tip="Turn all nearby media on"
left_pad="4"
- width="95"
+ width="66"
height="22"
label="Start All">
<button.commit_callback
@@ -56,6 +58,7 @@
top_delta="0"
left_pad="4"
height="22"
+ min_width="28"
width="28">
<button.commit_callback
function="MediaListCtrl.GoMediaPrefs" />
@@ -104,7 +107,6 @@
follows="top|left"
font="SansSerif"
left="10"
- name="nearby_media_title"
width="100">
Nearby Media
</text>
@@ -115,7 +117,6 @@
font="SansSerif"
top_pad="15"
left="10"
- name="show_text"
width="40">
Show:
</text>
@@ -187,7 +188,6 @@
bevel_style="in"
background_visible="false"
follows="left|right|bottom"
- name="media_controls_panel"
top_pad="5"
height="30"
left="10"
diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml
index 6152dd1587..8131b75b70 100644
--- a/indra/newview/skins/default/xui/en/panel_people.xml
+++ b/indra/newview/skins/default/xui/en/panel_people.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<!-- Side tray panel -->
<panel
+ default_tab_group="1"
follows="all"
height="449"
label="People"
@@ -56,6 +57,7 @@
layout="topleft"
left="5"
name="tabs"
+ tab_group="1"
tab_min_width="70"
tab_height="30"
tab_position="top"
diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml
index c61007a9e1..a7a0efcdb3 100644
--- a/indra/newview/skins/default/xui/en/panel_places.xml
+++ b/indra/newview/skins/default/xui/en/panel_places.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
background_visible="true"
+ default_tab_group="1"
follows="all"
height="570"
label="Places"
@@ -37,6 +38,7 @@ background_visible="true"
name="Places Tabs"
tab_min_width="80"
tab_height="30"
+ tab_group="1"
tab_position="top"
top_pad="10"
width="315" />
@@ -132,5 +134,14 @@ background_visible="true"
right="-10"
top="1"
width="60" />
+ <button
+ follows="bottom|left"
+ height="23"
+ label="Profile"
+ layout="topleft"
+ name="profile_btn"
+ right="-1"
+ top="1"
+ width="111" />
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
index 4ebd4c76f8..fca9b4bca1 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
@@ -162,9 +162,8 @@
name="block_list"
top_pad="20"
width="145">
- <!--<button.commit_callback
- function="SideTray.ShowPanel"-->
- <button.commit_callback
- function="Pref.BlockList"/>
+ <button.commit_callback
+ function="SideTray.ShowPanel"
+ parameter="panel_block_list_sidetray" />
</button>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_toast.xml b/indra/newview/skins/default/xui/en/panel_toast.xml
index 42f64c3a76..e7384fa77f 100644
--- a/indra/newview/skins/default/xui/en/panel_toast.xml
+++ b/indra/newview/skins/default/xui/en/panel_toast.xml
@@ -31,6 +31,8 @@
can_close="false"
can_dock="false"
border_visible = "false"
+ border_drop_shadow_visible = "false"
+ drop_shadow_visible = "false"
border = "false"
>
<panel
@@ -53,7 +55,7 @@
clip_partial="true"
visible="false"
follows="left|top|right|bottom"
- font="SansSerif"
+ font="SansSerifBold"
height="20"
layout="topleft"
left="20"
diff --git a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
index c5efa2e221..73650a19dc 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
background_visible="true"
+default_tab_group="1"
follows="all"
height="570"
label="Outfits"
@@ -90,6 +91,7 @@ width="333">
min_height="410"
width="320"
left="0"
+ tab_group="1"
top_pad="6"
follows="all" />
<!-- <button
diff --git a/indra/newview/skins/default/xui/es/floater_about_land.xml b/indra/newview/skins/default/xui/es/floater_about_land.xml
index c672f68c5c..49bf2a7442 100644
--- a/indra/newview/skins/default/xui/es/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/es/floater_about_land.xml
@@ -63,9 +63,6 @@
No se ha seleccionado una parcela.
Vaya al menú Mundo &gt; Acerca del terreno o seleccione otra parcela para ver sus características.
</panel.string>
- <panel.string name="time_stamp_template">
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
- </panel.string>
<text name="Name:">
Nombre:
</text>
@@ -266,8 +263,8 @@ Vaya al menú Mundo &gt; Acerca del terreno o seleccione otra parcela para ver s
<text left="204" name="selected_objects_text" width="48">
[COUNT]
</text>
- <text name="Autoreturn">
- Devolución automát. de objetos de otros (en min., 0 la desactiva):
+ <text left="4" name="Autoreturn" width="412">
+ Devolución automática de objetos de otros (en min., 0 para desactivarla):
</text>
<line_editor name="clean other time" right="-20"/>
<text name="Object Owners:" width="150">
@@ -278,7 +275,7 @@ Vaya al menú Mundo &gt; Acerca del terreno o seleccione otra parcela para ver s
<name_list name="owner list">
<name_list.columns label="Tipo" name="type"/>
<name_list.columns label="Nombre" name="name"/>
- <name_list.columns label="Núm." name="count"/>
+ <name_list.columns label="Número" name="count"/>
<name_list.columns label="Más recientes" name="mostrecent"/>
</name_list>
</panel>
diff --git a/indra/newview/skins/default/xui/es/floater_buy_land.xml b/indra/newview/skins/default/xui/es/floater_buy_land.xml
index 74243a4d06..a40f65d5d0 100644
--- a/indra/newview/skins/default/xui/es/floater_buy_land.xml
+++ b/indra/newview/skins/default/xui/es/floater_buy_land.xml
@@ -126,6 +126,9 @@ para cubrir esta parcela.
<floater.string name="no_parcel_selected">
(No se ha seleccionado una parcela)
</floater.string>
+ <floater.string name="icon_PG" value="Parcel_PG_Dark"/>
+ <floater.string name="icon_M" value="Parcel_M_Dark"/>
+ <floater.string name="icon_R" value="Parcel_R_Dark"/>
<text name="region_name_label">
Región:
</text>
diff --git a/indra/newview/skins/default/xui/es/floater_incoming_call.xml b/indra/newview/skins/default/xui/es/floater_incoming_call.xml
index 88cfc9575a..021e5fb6b7 100644
--- a/indra/newview/skins/default/xui/es/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/es/floater_incoming_call.xml
@@ -16,13 +16,7 @@
ha entrado en un chat de voz en multiconferencia.
</floater.string>
<floater.string name="VoiceInviteGroup">
- acaba de entrar en el canal de voz &apos;[GROUP]&apos;.
- </floater.string>
- <floater.string name="VoiceInviteQuestionGroup">
- ¿Quieres dejar [CURRENT_CHAT] e incorporarte a la llamada con &apos;[GROUP]&apos;?
- </floater.string>
- <floater.string name="VoiceInviteQuestionDefault">
- ¿Quieres dejar [CURRENT_CHAT] y entrar en este chat de voz?
+ ha hecho una llamada de voz al grupo [GROUP].
</floater.string>
<text name="question">
¿Quieres dejar [CURRENT_CHAT] y entrar a este chat de voz?
diff --git a/indra/newview/skins/default/xui/es/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/es/floater_inventory_view_finder.xml
index c9d639d8cf..36e7e40e59 100644
--- a/indra/newview/skins/default/xui/es/floater_inventory_view_finder.xml
+++ b/indra/newview/skins/default/xui/es/floater_inventory_view_finder.xml
@@ -11,9 +11,9 @@
<check_box label="Sonidos" name="check_sound"/>
<check_box label="Texturas" name="check_texture"/>
<check_box label="Fotos" name="check_snapshot"/>
- <button label="Todos" label_selected="Todo" name="All"/>
- <button label="Ninguno" label_selected="Nada" name="None"/>
- <check_box label="Mostrar siempre las carpetas" name="check_show_empty"/>
+ <button label="Todos" label_selected="Todo" name="All" width="70"/>
+ <button label="Ninguno" label_selected="Nada" name="None" width="70" bottom_delta="0" left="83"/>
+ <check_box label="Mostrar siempre las&#10;carpetas" name="check_show_empty"/>
<check_box label="Desde el fin de sesión" name="check_since_logoff" bottom_delta="-36"/>
<text name="- OR -">
- o -
diff --git a/indra/newview/skins/default/xui/es/floater_tools.xml b/indra/newview/skins/default/xui/es/floater_tools.xml
index a3851ea2b0..59f953c239 100644
--- a/indra/newview/skins/default/xui/es/floater_tools.xml
+++ b/indra/newview/skins/default/xui/es/floater_tools.xml
@@ -182,7 +182,7 @@
<button label="Configurar..." label_selected="Configurar..." name="button set group" tool_tip="Elige un grupo con el que compartir los permisos de este objeto"/>
<name_box initial_value="Cargando..." name="Group Name Proxy"/>
<button label="Transferir" label_selected="Transferir" name="button deed" tool_tip="La transferencia entrega este objeto con los permisos del próximo propietario. Los objetos compartidos por el grupo pueden ser transferidos por un oficial del grupo."/>
- <check_box label="Comprtir" name="checkbox share with group" tool_tip="Permite que todos los miembros del grupo compartan tus permisos de modificación en este objeto. Debes transferirlo para activar las restricciones según los roles."/>
+ <check_box label="Compartir" name="checkbox share with group" tool_tip="Permite que todos los miembros del grupo compartan tus permisos de modificación en este objeto. Debes transferirlo para activar las restricciones según los roles."/>
<text name="label click action" width="180">
Al tocarlo:
</text>
diff --git a/indra/newview/skins/default/xui/es/menu_attachment_self.xml b/indra/newview/skins/default/xui/es/menu_attachment_self.xml
index dc4efa1ce8..8cbe4299a8 100644
--- a/indra/newview/skins/default/xui/es/menu_attachment_self.xml
+++ b/indra/newview/skins/default/xui/es/menu_attachment_self.xml
@@ -3,13 +3,10 @@
<menu_item_call label="Tocar" name="Attachment Object Touch"/>
<menu_item_call label="Editar" name="Edit..."/>
<menu_item_call label="Quitar" name="Detach"/>
+ <menu_item_call label="Soltar" name="Drop"/>
<menu_item_call label="Levantarme" name="Stand Up"/>
- <menu_item_call label="Cambiar vestuario" name="Change Outfit"/>
- <menu_item_call label="Editar mi vestuario" name="Edit Outfit"/>
- <menu_item_call label="Editar mi anatomía" name="Edit My Shape"/>
+ <menu_item_call label="Mi apariencia" name="Appearance..."/>
<menu_item_call label="Mis amigos" name="Friends..."/>
<menu_item_call label="Mis grupos" name="Groups..."/>
<menu_item_call label="Mi perfil" name="Profile..."/>
- <menu_item_call label="Depurar las texturas" name="Debug..."/>
- <menu_item_call label="Soltar" name="Drop"/>
</context_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_avatar_self.xml b/indra/newview/skins/default/xui/es/menu_avatar_self.xml
index d347a7d0c4..67e56844b1 100644
--- a/indra/newview/skins/default/xui/es/menu_avatar_self.xml
+++ b/indra/newview/skins/default/xui/es/menu_avatar_self.xml
@@ -20,11 +20,8 @@
<context_menu label="Desanexar ▶" name="Object Detach"/>
<menu_item_call label="Quitarse todo" name="Detach All"/>
</context_menu>
- <menu_item_call label="Cambiar vestuario" name="Chenge Outfit"/>
- <menu_item_call label="Editar mi vestuario" name="Edit Outfit"/>
- <menu_item_call label="Editar mi anatomía" name="Edit My Shape"/>
+ <menu_item_call label="Mi apariencia" name="Appearance..."/>
<menu_item_call label="Mis amigos" name="Friends..."/>
<menu_item_call label="Mis grupos" name="Groups..."/>
<menu_item_call label="Mi perfil" name="Profile..."/>
- <menu_item_call label="Depurar las texturas" name="Debug..."/>
</context_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/es/menu_inspect_self_gear.xml
index 4b56984541..f21866e54f 100644
--- a/indra/newview/skins/default/xui/es/menu_inspect_self_gear.xml
+++ b/indra/newview/skins/default/xui/es/menu_inspect_self_gear.xml
@@ -1,9 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<menu name="Gear Menu">
<menu_item_call label="Levantarme" name="stand_up"/>
- <menu_item_call label="Cambiar vestuario" name="change_outfit"/>
+ <menu_item_call label="Mi apariencia" name="my_appearance"/>
<menu_item_call label="Mi perfil" name="my_profile"/>
<menu_item_call label="Mis amigos" name="my_friends"/>
<menu_item_call label="Mis grupos" name="my_groups"/>
- <menu_item_call label="Depurar las texturas" name="Debug..."/>
</menu>
diff --git a/indra/newview/skins/default/xui/es/menu_object.xml b/indra/newview/skins/default/xui/es/menu_object.xml
index 060d806c55..d2743cd4fc 100644
--- a/indra/newview/skins/default/xui/es/menu_object.xml
+++ b/indra/newview/skins/default/xui/es/menu_object.xml
@@ -1,8 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<context_menu name="Object Pie">
- <menu_item_call label="Tocar" name="Object Touch">
- <on_enable parameter="Tocar" name="EnableTouch"/>
- </menu_item_call>
+ <menu_item_call label="Tocar" name="Object Touch"/>
<menu_item_call label="Editar" name="Edit..."/>
<menu_item_call label="Construir" name="Build"/>
<menu_item_call label="Abrir" name="Open"/>
diff --git a/indra/newview/skins/default/xui/es/menu_participant_list.xml b/indra/newview/skins/default/xui/es/menu_participant_list.xml
index fd8bd05230..ed69683de9 100644
--- a/indra/newview/skins/default/xui/es/menu_participant_list.xml
+++ b/indra/newview/skins/default/xui/es/menu_participant_list.xml
@@ -8,14 +8,13 @@
<menu_item_call label="Llamar" name="Call"/>
<menu_item_call label="Compartir" name="Share"/>
<menu_item_call label="Pagar" name="Pay"/>
- <menu_item_check label="Ver los iconos de la gente" name="View Icons"/>
<menu_item_check label="Ignorar la voz" name="Block/Unblock"/>
<menu_item_check label="Ignorar el texto" name="MuteText"/>
<context_menu label="Opciones del moderador &gt;" name="Moderator Options">
<menu_item_check label="Permitir el chat de texto" name="AllowTextChat"/>
<menu_item_call label="Ignorar a este participante" name="ModerateVoiceMuteSelected"/>
+ <menu_item_call label="Silenciar a todos los demás" name="ModerateVoiceMuteOthers"/>
<menu_item_call label="Quitar el silencio a este participante" name="ModerateVoiceUnMuteSelected"/>
- <menu_item_call label="Silenciar a todos" name="ModerateVoiceMute"/>
- <menu_item_call label="Quitar el silencio a todos" name="ModerateVoiceUnmute"/>
+ <menu_item_call label="Quitar el silencio a todos los demás" name="ModerateVoiceUnMuteOthers"/>
</context_menu>
</context_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml
index 93964a2f4f..bef803b45c 100644
--- a/indra/newview/skins/default/xui/es/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/es/menu_viewer.xml
@@ -19,7 +19,7 @@
<menu_item_call label="Dejar el estatus de Administrador" name="Leave Admin Options"/>
<menu_item_call label="Salir de [APP_NAME]" name="Quit"/>
</menu>
- <menu label="Comunicarse" name="Communicate">
+ <menu label="Comunicarme" name="Communicate">
<menu_item_call label="Mis amigos" name="My Friends"/>
<menu_item_call label="Mis grupos" name="My Groups"/>
<menu_item_check label="Chat" name="Nearby Chat"/>
diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml
index df18b88832..082841af31 100644
--- a/indra/newview/skins/default/xui/es/notifications.xml
+++ b/indra/newview/skins/default/xui/es/notifications.xml
@@ -74,7 +74,7 @@ Detalles del error: la notificación de nombre &apos;[_NAME]&apos; no se ha enco
<notification name="LoginFailedNoNetwork">
No se puede conectar con [SECOND_LIFE_GRID].
&apos;[DIAGNOSTIC]&apos;
-Asegúrate de que tu conexión a internet está funcionando adecuadamente.
+Asegúrate de que tu conexión a Internet está funcionando adecuadamente.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="MessageTemplateNotFound">
@@ -86,19 +86,19 @@ Asegúrate de que tu conexión a internet está funcionando adecuadamente.
<usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="No guardarlos" yestext="Guardarlos"/>
</notification>
<notification name="CompileQueueSaveText">
- Hubo un problema al subir el texto de un script por la siguiente razón: [REASON]. Por favor, inténtelo más tarde.
+ Hubo un problema al subir el texto de un script por la siguiente razón: [REASON]. Por favor, inténtalo más tarde.
</notification>
<notification name="CompileQueueSaveBytecode">
- Hubo un problema al subir el script compilado por la siguiente razón: [REASON]. Por favor, inténtelo más tarde.
+ Hubo un problema al subir el script compilado por la siguiente razón: [REASON]. Por favor, inténtalo más tarde.
</notification>
<notification name="WriteAnimationFail">
- Hubo un problema al escribir los datos de la animación. Por favor, inténtelo más tarde.
+ Hubo un problema al escribir los datos de la animación. Por favor, inténtalo más tarde.
</notification>
<notification name="UploadAuctionSnapshotFail">
Hubo un problema al subir la foto de la subasta por la siguiente razón: [REASON]
</notification>
<notification name="UnableToViewContentsMoreThanOne">
- No se puede ver a la vez los contenidos de más de un ítem. Por favor, elija un solo objeto y vuelva a intentarlo.
+ No se puede ver a la vez los contenidos de más de un ítem. Por favor, elige un solo objeto y vuelve a intentarlo.
</notification>
<notification name="SaveClothingBodyChanges">
¿Guardar todos los cambios en la ropa y partes del cuerpo?
@@ -119,11 +119,11 @@ Asegúrate de que tu conexión a internet está funcionando adecuadamente.
<usetemplate name="okcancelbuttons" notext="No" yestext="Sí"/>
</notification>
<notification name="RevokeModifyRights">
- ¿Quiere revocar los derechos de modificación a [FIRST_NAME] [LAST_NAME]?
+ ¿Quieres revocar los derechos de modificación a [FIRST_NAME] [LAST_NAME]?
<usetemplate name="okcancelbuttons" notext="No" yestext="Sí"/>
</notification>
<notification name="RevokeModifyRightsMultiple">
- ¿Quiere revocar los derechos de modificación a los residentes seleccionados?
+ ¿Quieres revocar los derechos de modificación a los residentes seleccionados?
<usetemplate name="okcancelbuttons" notext="No" yestext="Sí"/>
</notification>
<notification name="UnableToCreateGroup">
@@ -188,7 +188,7 @@ Por favor, invita a miembros en las próximas 48 horas.
<usetemplate canceltext="Cancelar" name="okcancelbuttons" notext="Cancelar" yestext="Crear un grupo por 100 L$"/>
</notification>
<notification name="LandBuyPass">
- Por [COST] L$ puede entrar a este terreno (&apos;[PARCEL_NAME]&apos;) durante [TIME] horas. ¿Comprar un pase?
+ Por [COST] L$ puedes entrar a este terreno (&apos;[PARCEL_NAME]&apos;) durante [TIME] horas. ¿Comprar un pase?
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
</notification>
<notification name="SalePriceRestriction">
@@ -208,7 +208,7 @@ El precio de venta será de [SALE_PRICE] L$ y se autoriza la compra a [NAME].
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
</notification>
<notification name="ReturnObjectsDeededToGroup">
- ¿Estás seguros de que quieres devolver todos los objetos de esta parcela que estén compartidos con el grupo &apos;[NAME]&apos; al inventario de su propietario anterior?
+ ¿Estás seguro de que quieres devolver todos los objetos de esta parcela que estén compartidos con el grupo &apos;[NAME]&apos; al inventario de su propietario anterior?
*ATENCIÓN* ¡Esto borrará los objetos no transferibles que se hayan cedido al grupo!
@@ -304,7 +304,7 @@ debes estar dentro de ella.
La carpeta del vestuario contiene partes del cuerpo, u objetos a anexar o que no son ropa.
</notification>
<notification name="CannotWearTrash">
- No puede vestirte ropas o partes del cuerpo que estén en la Papelera
+ No puedes vestirte ropas o partes del cuerpo que estén en la Papelera
</notification>
<notification name="MaxAttachmentsOnOutfit">
No se puede anexar el objeto.
@@ -426,7 +426,7 @@ El objeto debe de haber sido borrado o estar fuera de rango (&apos;out of range&
Al guardar un script compilado, hubo un problema por: [REASON]. Por favor, vuelve a intentar guardarlo más tarde..
</notification>
<notification name="StartRegionEmpty">
- Perdon, no está definida tu Posición inicial.
+ Perdón, no está definida tu Posición inicial.
Por favor, escribe el nombre de la región en el cajetín de Posición inicial, o elige para esa posición Mi Base o Mi última posición.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
@@ -639,22 +639,22 @@ Por favor, inténtalo más tarde.
</notification>
<notification name="CannotRecompileSelectObjectsNoScripts">
No se pudo &apos;recompilar&apos;.
-Seleccione un objeto con script.
+Selecciona un objeto con script.
</notification>
<notification name="CannotRecompileSelectObjectsNoPermission">
No se pudo &apos;recompilar&apos;.
-Seleccione objetos con scripts en los que usted tenga permiso para modificarlos.
+Selecciona objetos con scripts en los que tengas permiso para modificarlos.
</notification>
<notification name="CannotResetSelectObjectsNoScripts">
No se pudo &apos;reiniciar&apos;.
-Seleccione objetos con scripts.
+Selecciona objetos con scripts.
</notification>
<notification name="CannotResetSelectObjectsNoPermission">
No se pudo &apos;reiniciar&apos;.
-Seleccione objetos con scripts en los que usted tenga permiso para modificarlos.
+Selecciona objetos con scripts en los que tengas permiso para modificarlos.
</notification>
<notification name="CannotOpenScriptObjectNoMod">
Imposible abrir el script del objeto sin modificar los permisos.
@@ -662,7 +662,7 @@ Seleccione objetos con scripts en los que usted tenga permiso para modificarlos.
<notification name="CannotSetRunningSelectObjectsNoScripts">
No se puede configurar ningún script como &apos;ejecutándose&apos;.
-Seleccione objetos con scripts.
+Selecciona objetos con scripts.
</notification>
<notification name="CannotSetRunningNotSelectObjectsNoScripts">
No se puede configurar ningún script como &apos;no ejecutándose&apos;.
@@ -770,7 +770,7 @@ no se ha seleccionado una parcela.
</notification>
<notification name="CannotDeedLandNoGroup">
No se ha podido transferir el terreno:
-no ha seleccionado un grupo.
+no has seleccionado un grupo.
</notification>
<notification name="CannotDeedLandNoRegion">
No se ha podido transferir el terreno:
@@ -800,7 +800,7 @@ Vuelve a intentarlo en unos segundos.
</notification>
<notification name="CannotReleaseLandSelected">
No se ha podido abandonar el terreno:
-no es propietario de todas las parcelas seleccionadas.
+no eres propietario de todas las parcelas seleccionadas.
Por favor, selecciona una sola parcela.
</notification>
@@ -903,7 +903,7 @@ Deberás reconfigurar el nombre y las opciones de la nueva parcela.
Generalmente, esto es un fallo pasajero. Por favor, personaliza y guarda el ítem de aquí a unos minutos.
</notification>
<notification name="YouHaveBeenLoggedOut">
- Vaya, se ha cerrado tu sesión en [SECOND_LIFE]
+ Vaya, se ha cerrado tu sesión en [SECOND_LIFE].
[MESSAGE]
<usetemplate name="okcancelbuttons" notext="Salir" yestext="Ver MI y Chat"/>
</notification>
@@ -1093,9 +1093,9 @@ Si es la primera vez que usas [SECOND_LIFE], debes crear una cuenta antes de pod
<usetemplate name="okcancelbuttons" notext="Continuar" yestext="Cuenta nueva..."/>
</notification>
<notification name="LoginPacketNeverReceived">
- Tenemos problemas de conexión. Puede deberse a un problema de tu conexión a internet o de [SECOND_LIFE_GRID].
+ Tenemos problemas de conexión. Puede deberse a un problema de tu conexión a Internet o de [SECOND_LIFE_GRID].
-Puedes revisar tu conexión a internet y volver a intentarlo en unos minutos, pulsar Ayuda para conectarte a [SUPPORT_SITE], o pulsar Teleporte para intentar teleportarte a tu Base.
+Puedes revisar tu conexión a Internet y volver a intentarlo en unos minutos, pulsar Ayuda para conectarte a [SUPPORT_SITE], o pulsar Teleporte para intentar teleportarte a tu Base.
<url name="url">
http://es.secondlife.com/support/
</url>
diff --git a/indra/newview/skins/default/xui/es/panel_people.xml b/indra/newview/skins/default/xui/es/panel_people.xml
index 13f584ff28..376aea5278 100644
--- a/indra/newview/skins/default/xui/es/panel_people.xml
+++ b/indra/newview/skins/default/xui/es/panel_people.xml
@@ -1,23 +1,14 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Side tray panel -->
<panel label="Gente" name="people_panel">
- <string name="no_recent_people" value="No hay nadie reciente. ¿Buscas gente con la que pasar el rato? Prueba la [secondlife:///app/search/people Búsqueda] o el [secondlife:///app/worldmap Mapa del mundo]."/>
- <string name="no_filtered_recent_people" value="¿No encuentras lo que buscas? Prueba con [secondlife:///app/search/people/[SEARCH_TERM] Buscar]."/>
- <string name="no_one_near" value="No hay nadie cerca. ¿Buscas gente con la que pasar el rato? Prueba la [secondlife:///app/search/people Búsqueda] o el [secondlife:///app/worldmap Mapa del mundo]."/>
- <string name="no_one_filtered_near" value="¿No encuentras lo que buscas? Prueba con [secondlife:///app/search/people/[SEARCH_TERM] Buscar]."/>
+ <string name="no_people" value="No hay nadie"/>
+ <string name="no_one_near" value="No hay nadie cerca"/>
<string name="no_friends_online" value="No hay amigos conectados"/>
<string name="no_friends" value="No hay amigos"/>
- <string name="no_friends_msg">
- Busca amigos usando la [secondlife:///app/search/people Búsqueda] o pulsa con el botón derecho del ratón en un Residente para añadirle como amigo.
-¿Buscas gente con la que pasar el rato? Prueba el [secondlife:///app/worldmap Mapa del mundo].
- </string>
- <string name="no_filtered_friends_msg">
- ¿No encuentras lo que buscas? Prueba con [secondlife:///app/search/people/[SEARCH_TERM] Buscar].
- </string>
<string name="people_filter_label" value="Filtrar a la gente"/>
<string name="groups_filter_label" value="Filtrar a los grupos"/>
- <string name="no_filtered_groups_msg" value="¿No encuentras lo que buscas? Prueba con [secondlife:///app/search/groups/[SEARCH_TERM] Buscar]."/>
- <string name="no_groups_msg" value="¿Buscas grupos en que participar? Prueba la [secondlife:///app/search/groups Búsqueda]."/>
+ <string name="no_filtered_groups_msg" value="[secondlife:///app/search/groups Intenta encontrar el grupo con una búsqueda]"/>
+ <string name="no_groups_msg" value="[secondlife:///app/search/groups Intenta encontrar grupos a los que unirte.]"/>
<filter_editor label="Filtrar" name="filter_input"/>
<tab_container name="tabs">
<panel label="CERCANA" name="nearby_panel">
@@ -36,6 +27,10 @@
<button name="add_btn" tool_tip="Ofrecer amistad a un Residente"/>
<button name="del_btn" tool_tip="Quitar a la persona seleccionada de tu lista de amigos"/>
</panel>
+ <text name="no_friends_msg">
+ Para añadir amigos, prueba a hacer una [secondlife:///app/search/people búsqueda general] o pulsa en un usuario para añadirle como amigo.
+Si estás buscando gente para pasar el rato, [secondlife:///app/worldmap usa el mapa].
+ </text>
</panel>
<panel label="MIS GRUPOS" name="groups_panel">
<panel label="bottom_panel" name="bottom_panel">
@@ -55,7 +50,7 @@
<button label="Perfil" name="view_profile_btn" tool_tip="Mostrar imágenes, grupos y otra información del Residente"/>
<button label="MI" name="im_btn" tool_tip="Abrir un mensaje instantáneo"/>
<button label="Llamar" name="call_btn" tool_tip="Llamar a este Residente"/>
- <button label="Compartir" name="share_btn" tool_tip="Compartir un objeto del inventario"/>
+ <button label="Compartir" name="share_btn"/>
<button label="Teleportar" name="teleport_btn" tool_tip="Ofrecer teleporte"/>
<button label="Perfil del grupo" name="group_info_btn" tool_tip="Ver la información del grupo"/>
<button label="Chat de grupo" name="chat_btn" tool_tip="Abrir el chat"/>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
index 46d8984889..7a65eb32bc 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
@@ -49,7 +49,7 @@
Mostrar los MI en:
</text>
<text name="requires_restart_label">
- (requiere reiniciar)
+ (requiere reiniciar)
</text>
<radio_group name="chat_window" tool_tip="Muestra tus mensajes instantáneos en varias ventanas flotantes o en una sola con varias pestañas (requiere que reinicies)">
<radio_item label="Varias ventanas" name="radio" value="0"/>
diff --git a/indra/newview/skins/default/xui/es/panel_region_general.xml b/indra/newview/skins/default/xui/es/panel_region_general.xml
index fe7f51c74e..9ee7bef493 100644
--- a/indra/newview/skins/default/xui/es/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/es/panel_region_general.xml
@@ -30,10 +30,10 @@
<text label="Calificación" name="access_text">
Calificación:
</text>
- <icons_combo_box label="Moderado" name="access_combo">
- <icons_combo_box.item label="Adulto" name="Adult" value="42"/>
- <icons_combo_box.item label="Moderado" name="Mature" value="21"/>
- <icons_combo_box.item label="General" name="PG" value="13"/>
+ <icons_combo_box label="&apos;Mature&apos;" name="access_combo">
+ <icons_combo_box.item label="&apos;Adult&apos;" name="Adult" value="42"/>
+ <icons_combo_box.item label="&apos;Mature&apos;" name="Mature" value="21"/>
+ <icons_combo_box.item label="&apos;PG&apos;" name="PG" value="13"/>
</icons_combo_box>
<button label="Aplicar" name="apply_btn"/>
<button label="Teleportar a su Base a un Residente..." name="kick_btn"/>
diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml
index 9f5f1f99e7..4cee677420 100644
--- a/indra/newview/skins/default/xui/es/strings.xml
+++ b/indra/newview/skins/default/xui/es/strings.xml
@@ -88,24 +88,6 @@
<string name="LoginDownloadingClothing">
Descargando la ropa...
</string>
- <string name="InvalidCertificate">
- El servidor devolvió un certificado no válido o dañado. Ponte en contacto con el administrador de la cuadrícula.
- </string>
- <string name="CertInvalidHostname">
- El nombre de host utilizado para acceder al servidor no es válido. Comprueba tu SLURL o el nombre de host de la cuadrícula.
- </string>
- <string name="CertExpired">
- Parece que el certificado que devolvió la cuadrícula está caducado. Comprueba el reloj del sistema o consulta al administrador de la cuadrícula.
- </string>
- <string name="CertKeyUsage">
- El certificado que devolvió el servidor no puede utilizarse para SSL. Ponte en contacto con el administrador de la cuadrícula.
- </string>
- <string name="CertBasicConstraints">
- La cadena de certificado del servidor contenía demasiados certificados. Ponte en contacto con el administrador de la cuadrícula.
- </string>
- <string name="CertInvalidSignature">
- No se pudo verificar la firma del certificado devuelta por el servidor de la cuadrícula. Ponte en contacto con el administrador de la cuadrícula.
- </string>
<string name="LoginFailedNoNetwork">
Error de red: no se ha podido conectar; por favor, revisa tu conexión a Internet.
</string>
@@ -184,7 +166,6 @@
<string name="TooltipMustSingleDrop">
Aquí se puede arrastrar sólo un ítem
</string>
- <string name="TooltipPrice" value="[AMOUNT] L$:"/>
<string name="TooltipHttpUrl">
Pulsa para ver esta página web
</string>
@@ -237,6 +218,7 @@
Pulsa para ejecutar el comando secondlife://
</string>
<string name="CurrentURL" value="URL actual: [CurrentURL]"/>
+ <string name="TooltipPrice" value="[PRICE] L$"/>
<string name="SLurlLabelTeleport">
Teleportarse a
</string>
@@ -267,9 +249,6 @@
<string name="BUTTON_CLOSE_WIN">
Cerrar (Ctrl+W)
</string>
- <string name="BUTTON_CLOSE_CHROME">
- Cerrar
- </string>
<string name="BUTTON_RESTORE">
Maximizar
</string>
@@ -297,9 +276,6 @@
<string name="ReleaseNotes">
Notas de la versión
</string>
- <string name="RELEASE_NOTES_BASE_URL">
- http://wiki.secondlife.com/wiki/Release_Notes/
- </string>
<string name="LoadingData">
Cargando...
</string>
@@ -312,9 +288,6 @@
<string name="GroupNameNone">
(ninguno)
</string>
- <string name="AvalineCaller">
- Avaline: [ORDER]
- </string>
<string name="AssetErrorNone">
No hay ningún error
</string>
@@ -645,9 +618,6 @@
<string name="worldmap_offline">
Sin conexión
</string>
- <string name="worldmap_item_tooltip_format">
- [PRICE] L$ por [AREA] m²
- </string>
<string name="worldmap_results_none_found">
No se ha encontrado.
</string>
@@ -738,12 +708,6 @@
<string name="land_type_unknown">
(desconocido)
</string>
- <string name="Estate / Full Region">
- Estado /Región completa
- </string>
- <string name="Mainland / Full Region">
- Continente / Región completa
- </string>
<string name="all_files">
Todos los archivos
</string>
@@ -849,93 +813,6 @@
<string name="invalid">
inválido/a
</string>
- <string name="none">
- ninguno
- </string>
- <string name="shirt_not_worn">
- Camisa no puesta
- </string>
- <string name="pants_not_worn">
- Pantalones no puestos
- </string>
- <string name="shoes_not_worn">
- Zapatos no puestos
- </string>
- <string name="socks_not_worn">
- Calcetines no puestos
- </string>
- <string name="jacket_not_worn">
- Chaqueta no puesta
- </string>
- <string name="gloves_not_worn">
- Guantes no puestos
- </string>
- <string name="undershirt_not_worn">
- Camiseta no puesta
- </string>
- <string name="underpants_not_worn">
- Ropa interior no puesta
- </string>
- <string name="skirt_not_worn">
- Falda no puesta
- </string>
- <string name="alpha_not_worn">
- Alfa no puesta
- </string>
- <string name="tattoo_not_worn">
- Tatuaje no puesto
- </string>
- <string name="invalid_not_worn">
- no válido/a
- </string>
- <string name="create_new_shape">
- Crear una anatomía nueva
- </string>
- <string name="create_new_skin">
- Crear una piel nueva
- </string>
- <string name="create_new_hair">
- Crear pelo nuevo
- </string>
- <string name="create_new_eyes">
- Crear ojos nuevos
- </string>
- <string name="create_new_shirt">
- Crear una camisa nueva
- </string>
- <string name="create_new_pants">
- Crear unos pantalones nuevos
- </string>
- <string name="create_new_shoes">
- Crear unos zapatos nuevos
- </string>
- <string name="create_new_socks">
- Crear unos calcetines nuevos
- </string>
- <string name="create_new_jacket">
- Crear una chaqueta nueva
- </string>
- <string name="create_new_gloves">
- Crear unos guantes nuevos
- </string>
- <string name="create_new_undershirt">
- Crear una camiseta nueva
- </string>
- <string name="create_new_underpants">
- Crear ropa interior nueva
- </string>
- <string name="create_new_skirt">
- Crear una falda nueva
- </string>
- <string name="create_new_alpha">
- Crear una capa alfa nueva
- </string>
- <string name="create_new_tattoo">
- Crear un tatuaje nuevo
- </string>
- <string name="create_new_invalid">
- no válido/a
- </string>
<string name="NewWearable">
Nuevo [WEARABLE_ITEM]
</string>
@@ -1006,10 +883,7 @@
Pulsa ESC para salir de la vista subjetiva
</string>
<string name="InventoryNoMatchingItems">
- ¿No encuentras lo que buscas? Prueba con [secondlife:///app/search/all/[SEARCH_TERM] Buscar].
- </string>
- <string name="PlacesNoMatchingItems">
- ¿No encuentras lo que buscas? Prueba con [secondlife:///app/search/places/[SEARCH_TERM] Buscar].
+ No se han encontrado tales ítems en el inventario. Intenta con [secondlife:///app/search/groups &quot;Buscar&quot;].
</string>
<string name="FavoritesNoMatchingItems">
Arrastra aquí un hito para tenerlo en tus favoritos.
@@ -1037,10 +911,8 @@
<string name="AnimFlagStop" value="Parar la animación:"/>
<string name="AnimFlagStart" value="Empezar la animación:"/>
<string name="Wave" value="Onda"/>
- <string name="GestureActionNone" value="Ninguno"/>
<string name="HelloAvatar" value="¡Hola, avatar!"/>
<string name="ViewAllGestures" value="Ver todos &gt;&gt;"/>
- <string name="GetMoreGestures" value="Obtener más &gt;&gt;"/>
<string name="Animations" value="Animaciones,"/>
<string name="Calling Cards" value="Tarjetas de visita,"/>
<string name="Clothing" value="Ropa,"/>
@@ -1117,15 +989,12 @@
<string name="InvFolder Gestures">
Gestos
</string>
- <string name="InvFolder Favorite">
+ <string name="InvFolder favorite">
Favoritos
</string>
<string name="InvFolder Current Outfit">
Vestuario actual
</string>
- <string name="InvFolder Initial Outfits">
- Vestuario inicial
- </string>
<string name="InvFolder My Outfits">
Mis vestuarios
</string>
@@ -1445,7 +1314,6 @@
<string name="SummaryForTheWeek" value="Resumen de esta semana, empezando el"/>
<string name="NextStipendDay" value="El próximo día de pago es el"/>
<string name="GroupIndividualShare" value="Grupo Aportaciones individuales"/>
- <string name="GroupColumn" value="Grupo"/>
<string name="Balance">
Saldo
</string>
@@ -1641,44 +1509,32 @@
<string name="ATTACH_HUD_BOTTOM_RIGHT">
HUD: abajo der.
</string>
- <string name="Bad attachment point">
- Punto de colocación no válido
- </string>
<string name="CursorPos">
Línea [LINE], Columna [COLUMN]
</string>
<string name="PanelDirCountFound">
[COUNT] resultados
</string>
- <string name="PanelContentsTooltip">
- Contenido del objeto
- </string>
<string name="PanelContentsNewScript">
Script nuevo
</string>
+ <string name="PanelContentsTooltip">
+ Contenido del objeto
+ </string>
<string name="BusyModeResponseDefault">
El Residente al que has enviado un mensaje ha solicitado que no se le moleste porque está en modo ocupado. Podrá ver tu mensaje más adelante, ya que éste aparecerá en su panel de MI.
</string>
- <string name="NoOutfits">
- Todavía no tienes vestuario. Intenta con [secondlife:///app/search/all/ Buscar]
- </string>
- <string name="NoOutfitsTabsMatched">
- ¿No encuentras lo que buscas? Intenta con [secondlife:///app/search/all/[SEARCH_TERM] Buscar].
- </string>
<string name="MuteByName">
- (Por el nombre)
+ (por el nombre)
</string>
<string name="MuteAgent">
(Residente)
</string>
<string name="MuteObject">
- (Objeto)
+ (objeto)
</string>
<string name="MuteGroup">
- (Grupo)
- </string>
- <string name="MuteExternal">
- (Externo)
+ (grupo)
</string>
<string name="RegionNoCovenant">
No se ha aportado un contrato para este estado.
@@ -1686,7 +1542,9 @@
<string name="RegionNoCovenantOtherOwner">
No se ha aportado un contrato para este estado. El terreno de este estado lo vende el propietario del estado, no Linden Lab. Por favor, contacta con ese propietario para informarte sobre la venta.
</string>
- <string name="covenant_last_modified" value="Última modificación:"/>
+ <string name="covenant_last_modified">
+ Última modificación:
+ </string>
<string name="none_text" value="(no hay)"/>
<string name="never_text" value=" (nunca)"/>
<string name="GroupOwned">
@@ -3363,15 +3221,6 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
<string name="LocationCtrlComboBtnTooltip">
Historial de mis localizaciones
</string>
- <string name="LocationCtrlAdultIconTooltip">
- Región Adulta
- </string>
- <string name="LocationCtrlModerateIconTooltip">
- Región Moderada
- </string>
- <string name="LocationCtrlGeneralIconTooltip">
- Región General
- </string>
<string name="UpdaterWindowTitle">
Actualizar [APP_NAME]
</string>
@@ -3402,12 +3251,6 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
<string name="UpdaterFailStartTitle">
Fallo al iniciar el visor
</string>
- <string name="ItemsComingInTooFastFrom">
- [APP_NAME]: Los ítems se reciben muy rápido de [FROM_NAME]; desactivada la vista previa automática durante [TIME] sgs.
- </string>
- <string name="ItemsComingInTooFast">
- [APP_NAME]: Los ítems se reciben muy rápido; desactivada la vista previa automática durante [TIME] sgs.
- </string>
<string name="IM_logging_string">
-- Activado el registro de los mensajes instantáneos --
</string>
@@ -3435,17 +3278,11 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
<string name="IM_moderator_label">
(Moderador)
</string>
- <string name="answered_call">
- Han respondido a tu llamada
- </string>
- <string name="you_started_call">
- Has iniciado una llamada de voz
+ <string name="started_call">
+ Llamada de voz iniciada
</string>
- <string name="you_joined_call">
- Has entrado en la llamada de voz
- </string>
- <string name="name_started_call">
- [NAME] inició una llamada de voz
+ <string name="joined_call">
+ Entrando a la llamada de voz
</string>
<string name="ringing-im">
Haciendo la llamada de voz...
@@ -3522,21 +3359,12 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
<string name="unread_chat_multiple">
[SOURCES] ha dicho algo nuevo
</string>
- <string name="session_initialization_timed_out_error">
- Se ha agotado el tiempo del inicio de sesión
- </string>
- <string name="voice_morphing_url">
- http://secondlife.com/landing/voicemorphing
- </string>
<string name="paid_you_ldollars">
[NAME] te ha pagado [AMOUNT] L$
</string>
<string name="you_paid_ldollars">
Has pagado [AMOUNT] L$ a [NAME] por [REASON].
</string>
- <string name="you_paid_ldollars_no_info">
- Has pagado[AMOUNT] L$
- </string>
<string name="you_paid_ldollars_no_reason">
Has pagado [AMOUNT] L$ a [NAME].
</string>
@@ -3585,9 +3413,6 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
<string name="group_role_owners">
Propietarios
</string>
- <string name="group_member_status_online">
- Conectado/a
- </string>
<string name="uploading_abuse_report">
Subiendo...
@@ -3641,203 +3466,13 @@ Denuncia de infracción
<string name="Invalid Wearable">
No se puede poner
</string>
- <string name="New Gesture">
- Gesto nuevo
- </string>
<string name="New Script">
Script nuevo
</string>
- <string name="New Note">
- Nota nueva
- </string>
<string name="New Folder">
Carpeta nueva
</string>
<string name="Contents">
Contenidos
</string>
- <string name="Gesture">
- Gestos
- </string>
- <string name="Male Gestures">
- Gestos de hombre
- </string>
- <string name="Female Gestures">
- Gestos de mujer
- </string>
- <string name="Other Gestures">
- Otros gestos
- </string>
- <string name="Speech Gestures">
- Gestos al hablar
- </string>
- <string name="Common Gestures">
- Gestos corrientes
- </string>
- <string name="Male - Excuse me">
- Varón - Disculpa
- </string>
- <string name="Male - Get lost">
- Varón – Déjame en paz
- </string>
- <string name="Male - Blow kiss">
- Varón - Lanzar un beso
- </string>
- <string name="Male - Boo">
- Varón - Abucheo
- </string>
- <string name="Male - Bored">
- Varón - Aburrido
- </string>
- <string name="Male - Hey">
- Varón – ¡Eh!
- </string>
- <string name="Male - Laugh">
- Varón - Risa
- </string>
- <string name="Male - Repulsed">
- Varón - Rechazo
- </string>
- <string name="Male - Shrug">
- Varón - Encogimiento de hombros
- </string>
- <string name="Male - Stick tougue out">
- Varón - Sacando la lengua
- </string>
- <string name="Male - Wow">
- Varón - Admiración
- </string>
- <string name="Female - Chuckle">
- Mujer - Risa suave
- </string>
- <string name="Female - Cry">
- Mujer - Llorar
- </string>
- <string name="Female - Embarrassed">
- Mujer - Ruborizada
- </string>
- <string name="Female - Excuse me">
- Mujer - Disculpa
- </string>
- <string name="Female - Get lost">
- Mujer – Déjame en paz
- </string>
- <string name="Female - Blow kiss">
- Mujer - Lanzar un beso
- </string>
- <string name="Female - Boo">
- Mujer - Abucheo
- </string>
- <string name="Female - Bored">
- Mujer - Aburrida
- </string>
- <string name="Female - Hey">
- Mujer - ¡Eh!
- </string>
- <string name="Female - Hey baby">
- Mujer - ¡Eh, encanto!
- </string>
- <string name="Female - Laugh">
- Mujer - Risa
- </string>
- <string name="Female - Looking good">
- Mujer - Buen aspecto
- </string>
- <string name="Female - Over here">
- Mujer - Por aquí
- </string>
- <string name="Female - Please">
- Mujer - Por favor
- </string>
- <string name="Female - Repulsed">
- Mujer - Rechazo
- </string>
- <string name="Female - Shrug">
- Mujer - Encogimiento de hombros
- </string>
- <string name="Female - Stick tougue out">
- Mujer - Sacando la lengua
- </string>
- <string name="Female - Wow">
- Mujer - Admiración
- </string>
- <string name="AvatarBirthDateFormat">
- [day,datetime,slt]/[mthnum,datetime,slt]/[year,datetime,slt]
- </string>
- <string name="DefaultMimeType">
- ninguno/ninguno
- </string>
- <string name="texture_load_dimensions_error">
- No se puede subir imágenes mayores de [WIDTH]*[HEIGHT]
- </string>
- <string name="words_separator" value=","/>
- <string name="server_is_down">
- Parece que hay algún problema que ha escapado a nuestros controles.
-
- Visita status.secondlifegrid.net para ver si hay alguna incidencia conocida que esté afectando al servicio.
- Si sigues teniendo problemas, comprueba la configuración de la red y del servidor de seguridad.
- </string>
- <string name="dateTimeWeekdaysNames">
- Domingo:Lunes:Martes:Miércoles:Jueves:Viernes:Sábado
- </string>
- <string name="dateTimeWeekdaysShortNames">
- Dom:Lun:Mar:Mié:Jue:Vie:Sáb
- </string>
- <string name="dateTimeMonthNames">
- Enero:Febrero:Marzo:Abril:Mayo:Junio:Julio:Agosto:Septiembre:Octubre:Noviembre:Diciembre
- </string>
- <string name="dateTimeMonthShortNames">
- Ene:Feb:Mar:Abr:May:Jun:Jul:Ago:Sep:Oct:Nov:Dic
- </string>
- <string name="dateTimeDayFormat">
- [MDAY]
- </string>
- <string name="dateTimeAM">
- AM
- </string>
- <string name="dateTimePM">
- PM
- </string>
- <string name="LocalEstimateUSD">
- [AMOUNT] dólares estadounidenses
- </string>
- <string name="Membership">
- Membresía
- </string>
- <string name="Roles">
- Roles
- </string>
- <string name="Group Identity">
- Indentidad de grupo
- </string>
- <string name="Parcel Management">
- Gestión de la parcela
- </string>
- <string name="Parcel Identity">
- Identidad de la parcela
- </string>
- <string name="Parcel Settings">
- Configuración de la parcela
- </string>
- <string name="Parcel Powers">
- Poder de la parcela
- </string>
- <string name="Parcel Access">
- Acceso a la parcela
- </string>
- <string name="Parcel Content">
- Contenido de la parcela
- </string>
- <string name="Object Management">
- Manejo de objetos
- </string>
- <string name="Accounting">
- Contabilidad
- </string>
- <string name="Notices">
- Avisos
- </string>
- <string name="Chat">
- Chat
- </string>
</strings>
diff --git a/indra/newview/skins/default/xui/nl/strings.xml b/indra/newview/skins/default/xui/nl/strings.xml
index 25071b5460..ae8d3b89dc 100644
--- a/indra/newview/skins/default/xui/nl/strings.xml
+++ b/indra/newview/skins/default/xui/nl/strings.xml
@@ -909,7 +909,7 @@
<string name="InvFolder Gestures">
Gebaren
</string>
- <string name="InvFolder Favorite">
+ <string name="InvFolder favorite">
Favoriten
</string>
<string name="InvFolder Current Outfit">
diff --git a/install.xml b/install.xml
index 899bd0a6cc..fefa4d729e 100644
--- a/install.xml
+++ b/install.xml
@@ -955,9 +955,9 @@ anguage Infrstructure (CLI) international standard</string>
<key>linux</key>
<map>
<key>md5sum</key>
- <string>455d9ce60837366a7e744751bdc8b6c3</string>
+ <string>a90135a68d2821eef742d15cb06b15b9</string>
<key>url</key>
- <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-linux-20100329.tar.bz2</uri>
+ <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-linux-20100407-cookie-api.tar.bz2</uri>
</map>
<key>windows</key>
<map>