diff options
| author | Logan Dethrow <log@lindenlab.com> | 2011-06-30 19:24:39 -0400 | 
|---|---|---|
| committer | Logan Dethrow <log@lindenlab.com> | 2011-06-30 19:24:39 -0400 | 
| commit | aec182e3dbc2e4c492167fc250583b9de5ec43f8 (patch) | |
| tree | c4a56b20693ac7ee4a203d0bd58a5992fdce66b8 | |
| parent | 73afcff635f3d25432167ca43ab0b82aadd6c687 (diff) | |
| parent | f07173a9689237bf2d8218600c15d6bf4d047cdc (diff) | |
Merge
69 files changed, 728 insertions, 524 deletions
| @@ -122,13 +122,22 @@ dac76a711da5f1489a01c1fa62ec97d99c25736d 2.6.6-release  8f2da1701c81a62352df2b8d413d27fb2cade9a6 DRTVWR-46_2.6.3-release  8f2da1701c81a62352df2b8d413d27fb2cade9a6 2.6.3-release  77e5a08344c95738ab879f9671b7758cddd712a3 DRTVWR-56_2.6.9-release +77e5a08344c95738ab879f9671b7758cddd712a3 2.6.9-release  8835e0e3c0d3a48244c287bc05811dfc2fba43ec 2.7.0-start  43c7ee846b7eed80786acbbf35d03bd016a3e85d DRTVWR-59_2.7.0-beta1  43c7ee846b7eed80786acbbf35d03bd016a3e85d 2.7.0-beta1 -77e5a08344c95738ab879f9671b7758cddd712a3 2.6.9-release  54fd44ac92e4c61435ea33effe093a3527e18d98 2.7.1-start  0c4d0c24278074f219e5a32e72b449e78301d11b DRTVWR-61_2.7.1-beta1  0c4d0c24278074f219e5a32e72b449e78301d11b 2.7.1-beta1  9f79a6ed8fdcd2f3dac33ea6b3236eeb278dccfe 2.7.2-start +e0dc8b741eaa27dcdfbc9e956bb2579b954d15eb DRTVWR-63_2.7.2-beta1 +e0dc8b741eaa27dcdfbc9e956bb2579b954d15eb 2.7.2-beta1  6a3e7e403bd19e45fdfc2fcc716867af3ab80861 2.7.3-start  6af10678de4736222b2c3f7e010e984fb5b327de 2.7.4-start +be963a4eef635542f9617d7f5fd22ba48fb71958 DRTVWR-67_2.7.4-beta1 +be963a4eef635542f9617d7f5fd22ba48fb71958 2.7.4-beta1 +a9abb9633a266c8d2fe62411cfd1c86d32da72bf DRTVWR-60_2.7.1-release +be963a4eef635542f9617d7f5fd22ba48fb71958 DRTVWR-67_2.7.4-beta1 +be963a4eef635542f9617d7f5fd22ba48fb71958 2.7.4-beta1 +a9abb9633a266c8d2fe62411cfd1c86d32da72bf 2.7.1-release +19a498fa62570f352d7d246f17e3c81cc1d82d8b 2.7.5-start diff --git a/BuildParams b/BuildParams index f34b262913..88d2c02780 100644 --- a/BuildParams +++ b/BuildParams @@ -69,29 +69,9 @@ viewer-pre-release.viewer_channel = "Second Life Release"  viewer-pre-release.login_channel = "Second Life Release"  viewer-pre-release.build_debug_release_separately = true  viewer-pre-release.build_viewer_update_version_manager = true -#viewer-pre-release.release-viewer.jira = DRTVWR-13 -viewer-pre-release.release-viewer.jira = DRTVWR-46 +#viewer-pre-release.release-viewer.jira = DRTVWR-46 -# ======================================= -# brad -# ======================================== -debug-halting.email = cg@lindenlab.com -debug-halting.build_server = false -debug-halting.build_server_tests = false -debug-halting.build_Darwin = false -debug-halting.build_Linux = false -debug-halting.build_CYGWIN_Debug = false -debug-halting.build_CYGWIN_RelWithDebInfo = false - -# ======================================== -# brad -# ======================================== - -brad-parabuild.email = brad@lindenlab.com -brad-parabuild.build_server = false -brad-parabuild.build_server_tests = false -  # ========================================  # mesh-development  # ======================================== @@ -133,73 +113,31 @@ viewer-mesh.email = shining@lists.lindenlab.com  # CG  # ======================================== -cg_viewer-development_lenny.collect_metrics = true  cg_viewer-development_lenny.show_changes_since = 4b140ce7839d  cg_viewer-development_lenny.email = cg@lindenlab.com -# ======================================== -# gooey -# ======================================== - -#gooey.email = james@lindenlab.com -gooey.build_Debug = false -gooey.build_RelWithDebInfo = false -gooey.build_server = false -gooey.build_server_tests = false -gooey.viewer_channel = "Second Life Alpha" -gooey.login_channel = "Second Life Alpha" -gooey.viewer_grid = agni -gooey.build_viewer_update_version_manager = false - -# ======================================== -# Search Project -# ======================================== - -search_project-viewer.build_debug_release_separately = true -search_project-viewer.viewer_channel = "Second Life Project Viewer - Search" -search_project-viewer.login_channel = "Second Life Project Viewer - Search" - -# ======================================== -# palange -# ======================================== - -palange_viewer-2-0.email = palange@lindenlab.com -palange_viewer-2-0.build_server = false -palange_viewer-2-0.build_server_tests = false -palange_viewer-2-0.build_CYGWIN_Debug = false - -# ======================================== -# media -# ======================================== - -media.email = skolb@lindenlab.com -media.build_server = false -media.build_server_tests = false -media.viewer_channel = "Second Life Alpha" -media.login_channel = "Second Life Alpha" -media.viewer_grid = agni -media.build_viewer_update_version_manager = false -  # ================  # oz  # ================  oz_viewer-devreview.build_debug_release_separately = true +oz_viewer-devreview.codeticket_add_context = false +  oz_project-1.build_debug_release_separately = true +oz_project-1.codeticket_add_context = false  oz_project-2.build_debug_release_separately = true -oz-project-3.build_debug_release_separately = true +oz_project-2.codeticket_add_context = false +oz_project-3.build_debug_release_separately = true +oz_project-3.codeticket_add_context = false +oz_project-4.build_debug_release_separately = true +oz_project-4.codeticket_add_context = false +  oz_viewer-beta-review.build_debug_release_separately = true +oz_viewer-beta-review.codeticket_add_context = false +  oz_viewer-poreview.build_debug_release_separately = true  oz_viewer-poreview.codeticket_add_context = false -# ======================================== -# enus -# ======================================== - -viewer-tut-teamcity.email = enus@lindenlab.com -viewer-tut-teamcity.build_server = false -viewer-tut-teamcity.build_server_tests = false -  # =================================================================  # asset delivery 2010 projects  # ================================================================= @@ -217,23 +155,4 @@ viewer-asset-delivery-metrics.email = monty@lindenlab.com  viewer-asset-delivery-metrics.build_server = false  viewer-asset-delivery-metrics.build_server_tests = false -#============================================================================== -# autobuild viewers -#============================================================================== -viewer-autobuild2010.build_debug_release_separately = true -viewer-autobuild2010.viewer_channel = "Project Viewer - VS2010" -viewer-autobuild2010.login_channel = "Project Viewer - VS2010" -viewer-autobuild2010.viewer_grid = agni -viewer-autobuild2010.build_link_parallel = false - -#========================================  -# VS2010  -#========================================  -viewer-vs2010.viewer_channel = "Project Viewer - VS2010" -viewer-vs2010.login_channel = "Project Viewer - VS2010" -viewer-vs2010.viewer_grid = agni -viewer-vs2010.build_debug_release_separately = true -viewer-vs2010.build_viewer_update_version_manager = false -viewer-vs2010.build_link_parallel = false -  # eof diff --git a/autobuild.xml b/autobuild.xml index 63701dae79..d1a7107319 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -1907,11 +1907,8 @@              <map>                <key>build</key>                <map> -                <key>arguments</key> +                <key>filters</key>                  <array> -                  <string>|</string> -                  <string>grep</string> -                  <string>-v</string>                    <string>setenv</string>                  </array>                  <key>command</key> @@ -1964,11 +1961,8 @@              <map>                <key>build</key>                <map> -                <key>arguments</key> +                <key>filters</key>                  <array> -                  <string>|</string> -                  <string>grep</string> -                  <string>-v</string>                    <string>setenv</string>                  </array>                  <key>command</key> @@ -2023,11 +2017,8 @@              <map>                <key>build</key>                <map> -                <key>arguments</key> +                <key>filters</key>                  <array> -                  <string>|</string> -                  <string>grep</string> -                  <string>-v</string>                    <string>setenv</string>                  </array>                  <key>command</key> diff --git a/doc/contributions.txt b/doc/contributions.txt index b744f4db3e..67e78e87ee 100644 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -103,6 +103,8 @@ Ales Beaumont  Alexandrea Fride      STORM-255  	STORM-960 +	STORM-1327 +	STORM-1406  Alissa Sabre  	VWR-81  	VWR-83 @@ -158,6 +160,7 @@ Ann Congrejo  	CT-193  Ansariel Hiller  	STORM-1101 +	VWR-25480  Ardy Lay  	STORM-859  	VWR-19499 @@ -443,9 +446,20 @@ Jonathan Yap  	STORM-1236  	STORM-1259  	STORM-787 +	VWR-25480 +	STORM-1334  	STORM-1313  	STORM-899  	STORM-1273 +	STORM-457 +	STORM-1452 +	STORM-1406 +	STORM-1327 +	STORM-1396 +	STORM-1292 +	STORM-1392 +	STORM-1302 +	STORM-1326  Kage Pixel  	VWR-11  Ken March @@ -778,6 +792,7 @@ Strife Onizuka  	SNOW-691  TankMaster Finesmith  	STORM-1100 +	STORM-1452  Tayra Dagostino  	SNOW-517  	SNOW-543 @@ -910,6 +925,7 @@ WolfPup Lowenhar  	STORM-825  	STORM-859  	STORM-1098 +	STORM-1393  	VWR-20741  	VWR-20933  Zai Lynch diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h index 92cd9bd46a..69720bb903 100644 --- a/indra/llcommon/llversionviewer.h +++ b/indra/llcommon/llversionviewer.h @@ -29,7 +29,7 @@  const S32 LL_VERSION_MAJOR = 2;  const S32 LL_VERSION_MINOR = 7; -const S32 LL_VERSION_PATCH = 5; +const S32 LL_VERSION_PATCH = 6;  const S32 LL_VERSION_BUILD = 0;  const char * const LL_CHANNEL = "Second Life Developer"; diff --git a/indra/llmessage/lliosocket.cpp b/indra/llmessage/lliosocket.cpp index ca84fa8bb8..8c752fbe30 100644 --- a/indra/llmessage/lliosocket.cpp +++ b/indra/llmessage/lliosocket.cpp @@ -191,7 +191,7 @@ LLSocket::ptr_t LLSocket::create(apr_pool_t* pool, EType type, U16 port)  		port = PORT_EPHEMERAL;  	}  	rv->mPort = port; -	rv->setOptions(); +	rv->setNonBlocking();  	return rv;  } @@ -206,7 +206,7 @@ LLSocket::ptr_t LLSocket::create(apr_socket_t* socket, apr_pool_t* pool)  	}  	rv = ptr_t(new LLSocket(socket, pool));  	rv->mPort = PORT_EPHEMERAL; -	rv->setOptions(); +	rv->setNonBlocking();  	return rv;  } @@ -227,10 +227,10 @@ bool LLSocket::blockingConnect(const LLHost& host)  	{  		return false;  	} -	apr_socket_timeout_set(mSocket, 1000); +	setBlocking(1000);  	ll_debug_socket("Blocking connect", mSocket);  	if(ll_apr_warn_status(apr_socket_connect(mSocket, sa))) return false; -	setOptions(); +	setNonBlocking();  	return true;  } @@ -258,11 +258,27 @@ LLSocket::~LLSocket()  	}  } -void LLSocket::setOptions() +// See http://dev.ariel-networks.com/apr/apr-tutorial/html/apr-tutorial-13.html#ss13.4 +// for an explanation of how to get non-blocking sockets and timeouts with +// consistent behavior across platforms. + +void LLSocket::setBlocking(S32 timeout) +{ +	LLMemType m1(LLMemType::MTYPE_IO_TCP); +	// set up the socket options +	ll_apr_warn_status(apr_socket_timeout_set(mSocket, timeout)); +	ll_apr_warn_status(apr_socket_opt_set(mSocket, APR_SO_NONBLOCK, 0)); +	ll_apr_warn_status(apr_socket_opt_set(mSocket, APR_SO_SNDBUF, LL_SEND_BUFFER_SIZE)); +	ll_apr_warn_status(apr_socket_opt_set(mSocket, APR_SO_RCVBUF, LL_RECV_BUFFER_SIZE)); + +} + +void LLSocket::setNonBlocking()  {  	LLMemType m1(LLMemType::MTYPE_IO_TCP);  	// set up the socket options  	ll_apr_warn_status(apr_socket_timeout_set(mSocket, 0)); +	ll_apr_warn_status(apr_socket_opt_set(mSocket, APR_SO_NONBLOCK, 1));  	ll_apr_warn_status(apr_socket_opt_set(mSocket, APR_SO_SNDBUF, LL_SEND_BUFFER_SIZE));  	ll_apr_warn_status(apr_socket_opt_set(mSocket, APR_SO_RCVBUF, LL_RECV_BUFFER_SIZE)); diff --git a/indra/llmessage/lliosocket.h b/indra/llmessage/lliosocket.h index ec60470459..5a2eaf2d44 100644 --- a/indra/llmessage/lliosocket.h +++ b/indra/llmessage/lliosocket.h @@ -153,9 +153,16 @@ protected:  	LLSocket(apr_socket_t* socket, apr_pool_t* pool);  	/**  -	 * @brief Set default socket options. +	 * @brief Set default socket options, with SO_NONBLOCK = 0 and a timeout in us. +	 * @param timeout Number of microseconds to wait on this socket. Any +	 * negative number means block-forever. TIMEOUT OF 0 IS NON-PORTABLE.  	 */ -	void setOptions(); +	void setBlocking(S32 timeout); + +	/** +	 * @brief Set default socket options, with SO_NONBLOCK = 1 and timeout = 0. +	 */ +	void setNonBlocking();  public:  	/**  diff --git a/indra/llui/llconsole.cpp b/indra/llui/llconsole.cpp index 06bad1f371..04040200d0 100644 --- a/indra/llui/llconsole.cpp +++ b/indra/llui/llconsole.cpp @@ -132,6 +132,9 @@ void LLConsole::setFontSize(S32 size_index)  void LLConsole::draw()  { +	// Units in pixels +	static const F32 padding_horizontal = 10; +	static const F32 padding_vertical = 3;  	LLGLSUIDefault gls_ui;  	// skip lines added more than mLinePersistTime ago @@ -176,11 +179,9 @@ void LLConsole::draw()  	// draw remaining lines  	F32 y_pos = 0.f; -	LLUIImagePtr imagep = LLUI::getUIImage("Rounded_Square"); +	LLUIImagePtr imagep = LLUI::getUIImage("transparent"); -//	F32 console_opacity = llclamp(gSavedSettings.getF32("ConsoleBackgroundOpacity"), 0.f, 1.f);  	F32 console_opacity = llclamp(LLUI::sSettingGroups["config"]->getF32("ConsoleBackgroundOpacity"), 0.f, 1.f); -//	LLColor4 color = LLUIColorTable::instance().getColor("ConsoleBackground");  	LLColor4 color = LLUIColorTable::instance().getColor("ConsoleBackground");  	color.mV[VALPHA] *= console_opacity; @@ -188,8 +189,8 @@ void LLConsole::draw()  	for(paragraph_it = mParagraphs.rbegin(); paragraph_it != mParagraphs.rend(); paragraph_it++)  	{ -		S32 target_height = llfloor( (*paragraph_it).mLines.size() * line_height + 8); -		S32 target_width =  llfloor( (*paragraph_it).mMaxWidth +15); +		S32 target_height = llfloor( (*paragraph_it).mLines.size() * line_height + padding_vertical); +		S32 target_width =  llfloor( (*paragraph_it).mMaxWidth + padding_horizontal);  		y_pos += ((*paragraph_it).mLines.size()) * line_height;  		imagep->drawSolid(-14, (S32)(y_pos + line_height - target_height), target_width, target_height, color); @@ -234,7 +235,7 @@ void LLConsole::draw()  				y_off += line_height;  			}  		} -		y_pos  += 8; +		y_pos  += padding_vertical;  	}  } diff --git a/indra/llvfs/CMakeLists.txt b/indra/llvfs/CMakeLists.txt index b6d1ce61e5..2c581cf8d6 100644 --- a/indra/llvfs/CMakeLists.txt +++ b/indra/llvfs/CMakeLists.txt @@ -62,11 +62,15 @@ list(APPEND llvfs_SOURCE_FILES ${llvfs_HEADER_FILES})  add_library (llvfs ${llvfs_SOURCE_FILES}) -target_link_libraries(llvfs +set(vfs_BOOST_LIBRARIES      ${BOOST_FILESYSTEM_LIBRARY}      ${BOOST_SYSTEM_LIBRARY}      ) +target_link_libraries(llvfs +    ${vfs_BOOST_LIBRARIES} +    ) +  if (DARWIN)    include(CMakeFindFrameworks)    find_library(CARBON_LIBRARY Carbon) @@ -76,15 +80,21 @@ endif (DARWIN)  # Add tests  if (LL_TESTS) -	include(LLAddBuildTest) -	# UNIT TESTS -	SET(llvfs_TEST_SOURCE_FILES -	  # none so far -	  ) -	LL_ADD_PROJECT_UNIT_TESTS(llvfs "${llvfs_TEST_SOURCE_FILES}") - -	# INTEGRATION TESTS -	set(test_libs llmath llcommon llvfs ${LLCOMMON_LIBRARIES} ${WINDOWS_LIBRARIES}) -	# TODO: Some of these need refactoring to be proper Unit tests rather than Integration tests. -	LL_ADD_INTEGRATION_TEST(lldir "" "${test_libs}") +    include(LLAddBuildTest) +    # UNIT TESTS +    SET(llvfs_TEST_SOURCE_FILES +	lldiriterator.cpp +	) + +    set_source_files_properties(lldiriterator.cpp +	PROPERTIES +	LL_TEST_ADDITIONAL_LIBRARIES "${vfs_BOOST_LIBRARIES}" +	) +    LL_ADD_PROJECT_UNIT_TESTS(llvfs "${llvfs_TEST_SOURCE_FILES}") + +    # INTEGRATION TESTS +    set(test_libs llmath llcommon llvfs ${LLCOMMON_LIBRARIES} ${WINDOWS_LIBRARIES}) + +    # TODO: Some of these need refactoring to be proper Unit tests rather than Integration tests. +    LL_ADD_INTEGRATION_TEST(lldir "" "${test_libs}")  endif (LL_TESTS) diff --git a/indra/llvfs/lldiriterator.cpp b/indra/llvfs/lldiriterator.cpp index 041436ed92..25550321f0 100644 --- a/indra/llvfs/lldiriterator.cpp +++ b/indra/llvfs/lldiriterator.cpp @@ -121,6 +121,14 @@ bool LLDirIterator::Impl::next(std::string &fname)  	return found;  } +/** +Converts the incoming glob into a regex. This involves +converting incoming glob expressions to regex equivilents and +at the same time, escaping any regex meaningful characters which +do not have glob meaning, i.e. +            .()+|^$  +in the input. +*/  std::string glob_to_regex(const std::string& glob)  {  	std::string regex; @@ -135,9 +143,6 @@ std::string glob_to_regex(const std::string& glob)  		switch (c)  		{ -			case '.': -				regex+="\\."; -				break;  			case '*':  				if (glob.begin() == i)  				{ @@ -170,8 +175,16 @@ std::string glob_to_regex(const std::string& glob)  			case '!':  				regex+= square_brace_open ? '^' : c;  				break; +			case '.': // This collection have different regex meaning +			case '^': // and so need escaping. +			case '(':  +			case ')': +			case '+': +			case '|': +			case '$': +				regex += '\\';   			default: -				regex+=c; +				regex += c;  				break;  		} diff --git a/indra/llvfs/tests/lldiriterator_test.cpp b/indra/llvfs/tests/lldiriterator_test.cpp new file mode 100644 index 0000000000..505d86faa7 --- /dev/null +++ b/indra/llvfs/tests/lldiriterator_test.cpp @@ -0,0 +1,65 @@ +/** + * @file lldiriterator_test.cpp + * @date 2011-06 + * @brief LLDirIterator test cases. + * + * $LicenseInfo:firstyear=2011&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2011, 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 + * $/LicenseInfo$ + */ + +#include "linden_common.h" +#include "lltut.h" +#include "../lldiriterator.h" + + +namespace tut +{ +     +    struct LLDirIteratorFixture +    { +        LLDirIteratorFixture() +        { +        } +    }; +    typedef test_group<LLDirIteratorFixture> LLDirIteratorTest_factory; +    typedef LLDirIteratorTest_factory::object LLDirIteratorTest_t; +    LLDirIteratorTest_factory tf("LLDirIterator"); + +    /* +    CHOP-662 was originally introduced to deal with crashes deleting files from +    a directory (VWR-25500). However, this introduced a crash looking for  +    old chat logs as the glob_to_regex function in lldiriterator wasn't escaping lots of regexp characters +    */ +    void test_chop_662(void) +    { +        //  Check a selection of bad group names from the crash reports  +        LLDirIterator iter(".","+bad-group-name]+??-??.*"); +        LLDirIterator iter1(".","))--@---bad-group-name2((??-??.*\\.txt"); +        LLDirIterator iter2(".","__^v--x)Cuide d sua vida(x--v^__??-??.*");  +    } + +    template<> template<> +	void LLDirIteratorTest_t::test<1>() +    { +       test_chop_662(); +    } + +} diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 604b1f2fc6..befc81f28e 100755..100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -5653,7 +5653,7 @@      <key>Type</key>      <string>Boolean</string>      <key>Value</key> -    <real>1</real> +    <real>0</real>    </map>    <key>MeshImportUseSLM</key>    <map> diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index cbbdcb2983..955f19c82c 100755 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -773,6 +773,10 @@ bool LLAvatarActions::canOfferTeleport(const LLUUID& id)  // static  bool LLAvatarActions::canOfferTeleport(const uuid_vec_t& ids)  { +	// We can't send more than 250 lures in a single message, so disable this +	// button when there are too many id's selected. +	if(ids.size() > 250) return false; +	  	bool result = true;  	for (uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it)  	{ diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp index 01d19c5ba0..79e6c7b66b 100644 --- a/indra/newview/llbottomtray.cpp +++ b/indra/newview/llbottomtray.cpp @@ -386,6 +386,7 @@ void LLBottomTray::onChange(EStatusType status, const std::string &channelURI, b  	{  		bool voice_status = LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking();  		getChild<LLButton>("speak_flyout_btn")->setEnabled(voice_status); +		gMenuBarView->getChild<LLView>("Nearby Voice")->setEnabled(voice_status);  		if (voice_status)  		{  			LLFirstUse::speak(true); @@ -570,7 +571,7 @@ BOOL LLBottomTray::postBuild()  	// it takes some time between logging in to world and connecting to voice channel.  	getChild<LLButton>("speak_btn")->setEnabled(false);  	getChild<LLButton>("speak_flyout_btn")->setEnabled(false); - +	gMenuBarView->getChild<LLView>("Nearby Voice")->setEnabled(false);  	// Registering Chat Bar to receive Voice client status change notifications.  	LLVoiceClient::getInstance()->addObserver(this); diff --git a/indra/newview/lldebugview.cpp b/indra/newview/lldebugview.cpp index b6d67899f8..216cc66ef8 100644 --- a/indra/newview/lldebugview.cpp +++ b/indra/newview/lldebugview.cpp @@ -62,7 +62,8 @@ void LLDebugView::init()  	LLRect r;  	LLRect rect = getLocalRect(); -	r.set(10, rect.getHeight() - 100, rect.getWidth()/2, 100); +	// Rectangle to draw debug data in (full height, 3/4 width) +	r.set(10, rect.getHeight() - 100, ((rect.getWidth()*3)/4), 100);  	LLConsole::Params cp;  	cp.name("debug console");  	cp.max_lines(20); diff --git a/indra/newview/llfloaterauction.cpp b/indra/newview/llfloaterauction.cpp index c95b046707..c6743ca13b 100644 --- a/indra/newview/llfloaterauction.cpp +++ b/indra/newview/llfloaterauction.cpp @@ -55,6 +55,7 @@  #include "llrender.h"  #include "llsdutil.h"  #include "llsdutil_math.h" +#include "lltrans.h"  ///----------------------------------------------------------------------------  /// Local function declarations, constants, enums, and typedefs @@ -457,7 +458,7 @@ void LLFloaterAuction::onClickSellToAnyone(void* data)  		LLSD args;  		args["LAND_SIZE"] = llformat("%d", area);  		args["SALE_PRICE"] = llformat("%d", sale_price); -		args["NAME"] = "Anyone"; +		args["NAME"] = LLTrans::getString("Anyone");  		LLNotification::Params params("ConfirmLandSaleChange");	// Re-use existing dialog  		params.substitutions(args) diff --git a/indra/newview/llfloatersellland.cpp b/indra/newview/llfloatersellland.cpp index 8558a1277c..3434841d09 100644 --- a/indra/newview/llfloatersellland.cpp +++ b/indra/newview/llfloatersellland.cpp @@ -41,6 +41,7 @@  #include "llviewerparcelmgr.h"  #include "lluictrlfactory.h"  #include "llviewerwindow.h" +#include "lltrans.h"  class LLAvatarName; @@ -451,7 +452,7 @@ void LLFloaterSellLandUI::doSellLand(void *userdata)  	// Do a confirmation  	S32 sale_price = self->getChild<LLUICtrl>("price")->getValue();  	S32 area = parcel->getArea(); -	std::string authorizedBuyerName = "Anyone"; +	std::string authorizedBuyerName = LLTrans::getString("Anyone");  	bool sell_to_anyone = true;  	if ("user" == self->getChild<LLUICtrl>("sell_to")->getValue().asString())  	{ diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index 0d798afdcc..33b7777d2e 100644 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -424,8 +424,7 @@ void LLFloaterTools::refresh()  	// Refresh object and prim count labels  	LLLocale locale(LLLocale::USER_LOCALE); -#if 0 -	if (gMeshRepo.meshRezEnabled()) +	if (!gMeshRepo.meshRezEnabled())  	{		  		std::string obj_count_string;  		LLResMgr::getInstance()->getIntegerString(obj_count_string, LLSelectMgr::getInstance()->getSelection()->getRootObjectCount()); @@ -449,7 +448,6 @@ void LLFloaterTools::refresh()  		getChildView("RenderingCost")->setEnabled(have_selection && sShowObjectCost);  	}  	else -#endif  	{  		// Get the number of objects selected  		std::string root_object_count_string; diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp index f8a4ce7ad0..b3910982d1 100755 --- a/indra/newview/llfloaterworldmap.cpp +++ b/indra/newview/llfloaterworldmap.cpp @@ -1527,17 +1527,24 @@ void LLFloaterWorldMap::updateSims(bool found_null_sim)  		mCompletingRegionName = "";  	} -	// if match found, highlight it and go -	if (!match.isUndefined()) +	if (num_results > 0)  	{ -		list->selectByValue(match); +		// if match found, highlight it and go +		if (!match.isUndefined()) +		{ +			list->selectByValue(match); +		} +		// else select first found item +		else +		{ +			list->selectFirstItem(); +		}  		getChild<LLUICtrl>("search_results")->setFocus(TRUE);  		onCommitSearchResult();  	} -	 -	// if we found nothing, say "none" -	if (num_results == 0) +	else  	{ +		// if we found nothing, say "none"  		list->setCommentText(LLTrans::getString("worldmap_results_none_found"));  		list->operateOnAll(LLCtrlListInterface::OP_DESELECT);  	} diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp index efc4e23838..ebb5912ace 100644 --- a/indra/newview/lllogchat.cpp +++ b/indra/newview/lllogchat.cpp @@ -230,7 +230,7 @@ std::string LLLogChat::makeLogFileName(std::string filename)  std::string LLLogChat::cleanFileName(std::string filename)  { -	std::string invalidChars = "\"\'\\/?*:.<>|"; +    std::string invalidChars = "\"\'\\/?*:.<>|[]{}~"; // Cannot match glob or illegal filename chars  	std::string::size_type position = filename.find_first_of(invalidChars);  	while (position != filename.npos)  	{ diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 6e0722bcf9..6e0722bcf9 100755..100644 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp index 11dc496311..957b6d5f94 100644 --- a/indra/newview/llnearbychathandler.cpp +++ b/indra/newview/llnearbychathandler.cpp @@ -268,6 +268,9 @@ bool	LLNearbyChatScreenChannel::createPoolToast()  	toast->setOnFadeCallback(boost::bind(&LLNearbyChatScreenChannel::onToastFade, this, _1)); +	// If the toast gets somehow prematurely destroyed, deactivate it to prevent crash (STORM-1352). +	toast->setOnToastDestroyedCallback(boost::bind(&LLNearbyChatScreenChannel::onToastDestroyed, this, _1, false)); +  	LL_DEBUGS("NearbyChat") << "Creating and pooling toast" << llendl;	  	m_toast_pool.push_back(toast->getHandle());  	return true; @@ -369,8 +372,10 @@ void LLNearbyChatScreenChannel::arrangeToasts()  	}  } -int sort_toasts_predicate(LLHandle<LLToast> first, LLHandle<LLToast> second) +static bool sort_toasts_predicate(LLHandle<LLToast> first, LLHandle<LLToast> second)  { +	if (!first.get() || !second.get()) return false; // STORM-1352 +  	F32 v1 = first.get()->getTimeLeftToLive();  	F32 v2 = second.get()->getTimeLeftToLive();  	return v1 > v2; @@ -396,7 +401,11 @@ void LLNearbyChatScreenChannel::showToastsBottom()  	for(toast_vec_t::iterator it = m_active_toasts.begin(); it != m_active_toasts.end(); ++it)  	{  		LLToast* toast = it->get(); -		if (!toast) continue; +		if (!toast) +		{ +			llwarns << "NULL found in the active chat toasts list!" << llendl; +			continue; +		}  		S32 toast_top = bottom + toast->getRect().getHeight() + margin; @@ -472,7 +481,8 @@ void LLNearbyChatHandler::initChannel() -void LLNearbyChatHandler::processChat(const LLChat& chat_msg, const LLSD &args) +void LLNearbyChatHandler::processChat(const LLChat& chat_msg,		// WARNING - not really const, see hack below changing chat_msg.mText +									  const LLSD &args)  {  	if(chat_msg.mMuted == TRUE)  		return; @@ -480,7 +490,17 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg, const LLSD &args)  	if(chat_msg.mText.empty())  		return;//don't process empty messages +	// Handle irc styled messages for toast panel +	// HACK ALERT - changes mText, stripping out IRC style "/me" prefixes  	LLChat& tmp_chat = const_cast<LLChat&>(chat_msg); +	std::string original_message = tmp_chat.mText;			// Save un-modified version of chat text +	if (tmp_chat.mChatStyle == CHAT_STYLE_IRC) +	{ +		if(!tmp_chat.mFromName.empty()) +			tmp_chat.mText = tmp_chat.mFromName + tmp_chat.mText.substr(3); +		else +			tmp_chat.mText = tmp_chat.mText.substr(3); +	}  	LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());  	{ @@ -531,7 +551,7 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg, const LLSD &args)  			LLViewerChat::getChatColor(chat_msg,txt_color); -			LLFloaterScriptDebug::addScriptLine(chat_msg.mText, +			LLFloaterScriptDebug::addScriptLine(original_message,		// Send full message with "/me" style prefix  												chat_msg.mFromName,  												txt_color,  												chat_msg.mFromID); @@ -562,15 +582,6 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg, const LLSD &args)  		|| !mChannel->getShowToasts() ) // to prevent toasts in Busy mode  		return;//no need in toast if chat is visible or if bubble chat is enabled -	// Handle irc styled messages for toast panel -	if (tmp_chat.mChatStyle == CHAT_STYLE_IRC) -	{ -		if(!tmp_chat.mFromName.empty()) -			tmp_chat.mText = tmp_chat.mFromName + tmp_chat.mText.substr(3); -		else -			tmp_chat.mText = tmp_chat.mText.substr(3); -	} -  	// arrange a channel on a screen  	if(!mChannel->getVisible())  	{ diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp index d0810d0772..27f341b4f6 100644 --- a/indra/newview/llpanellogin.cpp +++ b/indra/newview/llpanellogin.cpp @@ -34,7 +34,6 @@  #include "llmd5.h"  #include "llsecondlifeurls.h"  #include "v4color.h" -#include "llversionviewer.h"  #include "llappviewer.h"  #include "llbutton.h" @@ -748,20 +747,12 @@ void LLPanelLogin::loadLoginPage()  								   LLVersionInfo::getShortVersion().c_str(),  								   LLVersionInfo::getBuild()); -	char* curl_channel ; +	char* curl_channel = curl_escape(LLVersionInfo::getChannel().c_str(), 0);  	char* curl_version = curl_escape(version.c_str(), 0); -	if(strcmp(LLVersionInfo::getChannel().c_str(), LL_CHANNEL)) -	{ -		curl_channel = curl_escape(LLVersionInfo::getChannel().c_str(), 0); -	} -	else //if LL_CHANNEL, direct it to "Second Life Beta Viewer". -	{ -		curl_channel = curl_escape("Second Life Beta Viewer", 0);		 -	}  	oStr << "&channel=" << curl_channel;  	oStr << "&version=" << curl_version; -	 +  	curl_free(curl_channel);  	curl_free(curl_version); diff --git a/indra/newview/llpreviewnotecard.cpp b/indra/newview/llpreviewnotecard.cpp index 9f3ee6ac5d..4974dde282 100644 --- a/indra/newview/llpreviewnotecard.cpp +++ b/indra/newview/llpreviewnotecard.cpp @@ -401,15 +401,14 @@ struct LLSaveNotecardInfo  bool LLPreviewNotecard::saveIfNeeded(LLInventoryItem* copyitem)  { -	if(!gAssetStorage) +	LLViewerTextEditor* editor = getChild<LLViewerTextEditor>("Notecard Editor"); + +	if(!editor)  	{ -		llwarns << "Not connected to an asset storage system." << llendl; +		llwarns << "Cannot get handle to the notecard editor." << llendl;  		return false;  	} -	 -	LLViewerTextEditor* editor = getChild<LLViewerTextEditor>("Notecard Editor"); -  	if(!editor->isPristine())  	{  		// We need to update the asset information @@ -436,8 +435,15 @@ bool LLPreviewNotecard::saveIfNeeded(LLInventoryItem* copyitem)  		// save it out to database  		if (item)  		{			 -			std::string agent_url = gAgent.getRegion()->getCapability("UpdateNotecardAgentInventory"); -			std::string task_url = gAgent.getRegion()->getCapability("UpdateNotecardTaskInventory"); +			const LLViewerRegion* region = gAgent.getRegion(); +			if (!region) +			{ +				llwarns << "Not connected to a region, cannot save notecard." << llendl; +				return false; +			} +			std::string agent_url = region->getCapability("UpdateNotecardAgentInventory"); +			std::string task_url = region->getCapability("UpdateNotecardTaskInventory"); +  			if (mObjectUUID.isNull() && !agent_url.empty())  			{  				// Saving into agent inventory @@ -472,6 +478,11 @@ bool LLPreviewNotecard::saveIfNeeded(LLInventoryItem* copyitem)  												(void*)info,  												FALSE);  			} +			else // !gAssetStorage +			{ +				llwarns << "Not connected to an asset storage system." << llendl; +				return false; +			}  		}  	}  	return true; diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index 9ec4d33036..c38c8bad80 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -639,6 +639,7 @@ BOOL LLToolPie::handleMouseUp(S32 x, S32 y, MASK mask)  	if (click_action == CLICK_ACTION_NONE				// not doing 1-click action  		&& gSavedSettings.getBOOL("ClickToWalk")		// click to walk enabled  		&& !gAgent.getFlying()							// don't auto-navigate while flying until that works +		&& gAgentAvatarp  		&& !gAgentAvatarp->isSitting()  		&& !mBlockClickToWalk							// another behavior hasn't cancelled click to walk  		&& !mPick.mPosGlobal.isExactlyZero()			// valid coordinates for pick diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 7ab335314a..f6b01e92cb 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -1501,7 +1501,7 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&  			log_message = chatHistory_string + " " + LLTrans::getString("InvOfferGaveYou") + " " + mDesc + LLTrans::getString(".");  			LLSD args;  			args["MESSAGE"] = log_message; -			LLNotificationsUtil::add("SystemMessage", args); +			LLNotificationsUtil::add("SystemMessageTip", args);  		}  		break; @@ -1675,7 +1675,7 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const  				log_message = chatHistory_string + " " + LLTrans::getString("InvOfferGaveYou") + " " + mDesc + LLTrans::getString(".");  				LLSD args;  				args["MESSAGE"] = log_message; -				LLNotificationsUtil::add("SystemMessage", args); +				LLNotificationsUtil::add("SystemMessageTip", args);  			}  			// we will want to open this item when it comes back. @@ -1726,7 +1726,7 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const  				LLSD args;  				args["MESSAGE"] = log_message; -				LLNotificationsUtil::add("SystemMessage", args); +				LLNotificationsUtil::add("SystemMessageTip", args);  			}  			if (busy &&	(!mFromGroup && !mFromObject)) @@ -4326,8 +4326,11 @@ void process_sound_trigger(LLMessageSystem *msg, void **)  	}  	// Don't play sounds from gestures if they are not enabled. -	if (!gSavedSettings.getBOOL("EnableGestureSounds")) return; -		 +	if (object_id == owner_id && !gSavedSettings.getBOOL("EnableGestureSounds")) +	{ +		return; +	} +  	gAudiop->triggerSound(sound_id, owner_id, gain, LLAudioEngine::AUDIO_TYPE_SFX, pos_global);  } @@ -6261,6 +6264,18 @@ void send_group_notice(const LLUUID& group_id,  bool handle_lure_callback(const LLSD& notification, const LLSD& response)  { +	static const unsigned OFFER_RECIPIENT_LIMIT = 250; +	if(notification["payload"]["ids"].size() > OFFER_RECIPIENT_LIMIT)  +	{ +		// More than OFFER_RECIPIENT_LIMIT targets will overload the message +		// producing an llerror. +		LLSD args; +		args["OFFERS"] = notification["payload"]["ids"].size(); +		args["LIMIT"] = static_cast<int>(OFFER_RECIPIENT_LIMIT); +		LLNotificationsUtil::add("TooManyTeleportOffers", args); +		return false; +	} +	  	std::string text = response["message"].asString();  	LLSLURL slurl;  	LLAgentUI::buildSLURL(slurl); diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp index 6ee6822e2f..cd2bbad620 100644 --- a/indra/newview/llvoicevivox.cpp +++ b/indra/newview/llvoicevivox.cpp @@ -195,12 +195,13 @@ static LLVivoxVoiceClientFriendsObserver *friendslist_listener = NULL;  class LLVivoxVoiceClientCapResponder : public LLHTTPClient::Responder  {  public: -	LLVivoxVoiceClientCapResponder(void){}; +	LLVivoxVoiceClientCapResponder(LLVivoxVoiceClient::state requesting_state) : mRequestingState(requesting_state) {};  	virtual void error(U32 status, const std::string& reason);	// called with bad status codes  	virtual void result(const LLSD& content);  private: +	LLVivoxVoiceClient::state mRequestingState;  // state   };  void LLVivoxVoiceClientCapResponder::error(U32 status, const std::string& reason) @@ -208,6 +209,7 @@ void LLVivoxVoiceClientCapResponder::error(U32 status, const std::string& reason  	LL_WARNS("Voice") << "LLVivoxVoiceClientCapResponder::error("  		<< status << ": " << reason << ")"  		<< LL_ENDL; +	LLVivoxVoiceClient::getInstance()->sessionTerminate();  }  void LLVivoxVoiceClientCapResponder::result(const LLSD& content) @@ -216,12 +218,12 @@ void LLVivoxVoiceClientCapResponder::result(const LLSD& content)  	LL_DEBUGS("Voice") << "ParcelVoiceInfoRequest response:" << ll_pretty_print_sd(content) << LL_ENDL; +	std::string uri; +	std::string credentials; +	  	if ( content.has("voice_credentials") )  	{  		LLSD voice_credentials = content["voice_credentials"]; -		std::string uri; -		std::string credentials; -  		if ( voice_credentials.has("channel_uri") )  		{  			uri = voice_credentials["channel_uri"].asString(); @@ -231,7 +233,12 @@ void LLVivoxVoiceClientCapResponder::result(const LLSD& content)  			credentials =  				voice_credentials["channel_credentials"].asString();  		} - +	} +	 +	// set the spatial channel.  If no voice credentials or uri are  +	// available, then we simply drop out of voice spatially. +	if(LLVivoxVoiceClient::getInstance()->parcelVoiceInfoReceived(mRequestingState)) +	{  		LLVivoxVoiceClient::getInstance()->setSpatialChannel(uri, credentials);  	}  } @@ -551,18 +558,27 @@ void LLVivoxVoiceClient::userAuthorized(const std::string& user_id, const LLUUID  void LLVivoxVoiceClient::requestVoiceAccountProvision(S32 retries)  { -	if ( gAgent.getRegion() && mVoiceEnabled ) +	LLViewerRegion *region = gAgent.getRegion(); +	 +	if ( region && mVoiceEnabled )  	{  		std::string url =  -			gAgent.getRegion()->getCapability( -				"ProvisionVoiceAccountRequest"); - -		if ( url == "" ) return; - +		region->getCapability("ProvisionVoiceAccountRequest"); +		 +		if ( url.empty() )  +		{ +			// we've not received the capability yet, so return. +			// the password will remain empty, so we'll remain in +			// stateIdle +			return; +		} +		  		LLHTTPClient::post( -			url, -			LLSD(), -			new LLVivoxVoiceAccountProvisionResponder(retries)); +						   url, +						   LLSD(), +						   new LLVivoxVoiceAccountProvisionResponder(retries)); +		 +		setState(stateConnectorStart);		  	}  } @@ -673,7 +689,8 @@ std::string LLVivoxVoiceClient::state2string(LLVivoxVoiceClient::state inState)  		CASE(stateVoiceFontsWait);  		CASE(stateVoiceFontsReceived);  		CASE(stateCreatingSessionGroup); -		CASE(stateNoChannel); +		CASE(stateNoChannel);		 +		CASE(stateRetrievingParcelVoiceInfo);  		CASE(stateJoiningSession);  		CASE(stateSessionJoined);  		CASE(stateRunning); @@ -741,42 +758,6 @@ void LLVivoxVoiceClient::stateMachine()  		}  	} -	// Check for parcel boundary crossing -	{ -		LLViewerRegion *region = gAgent.getRegion(); -		LLParcel *parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); -		 -		if(region && parcel) -		{ -			S32 parcelLocalID = parcel->getLocalID(); -			std::string regionName = region->getName(); -			std::string capURI = region->getCapability("ParcelVoiceInfoRequest"); -		 -//			LL_DEBUGS("Voice") << "Region name = \"" << regionName << "\", parcel local ID = " << parcelLocalID << ", cap URI = \"" << capURI << "\"" << LL_ENDL; - -			// The region name starts out empty and gets filled in later.   -			// Also, the cap gets filled in a short time after the region cross, but a little too late for our purposes. -			// If either is empty, wait for the next time around. -			if(!regionName.empty()) -			{ -				if(!capURI.empty()) -				{ -					if((parcelLocalID != mCurrentParcelLocalID) || (regionName != mCurrentRegionName)) -					{ -						// We have changed parcels.  Initiate a parcel channel lookup. -						mCurrentParcelLocalID = parcelLocalID; -						mCurrentRegionName = regionName; -						 -						parcelChanged(); -					} -				} -				else -				{ -					LL_WARNS_ONCE("Voice") << "region doesn't have ParcelVoiceInfoRequest capability.  This is normal for a short time after teleporting, but bad if it persists for very long." << LL_ENDL; -				} -			} -		} -	}  	switch(getState())  	{ @@ -1026,22 +1007,9 @@ void LLVivoxVoiceClient::stateMachine()  			}  			else if(!mAccountName.empty())  			{ -				LLViewerRegion *region = gAgent.getRegion(); -				 -				if(region) +				if ( mAccountPassword.empty() )  				{ -					if ( region->getCapability("ProvisionVoiceAccountRequest") != "" ) -					{ -						if ( mAccountPassword.empty() ) -						{ -							requestVoiceAccountProvision(); -						} -						setState(stateConnectorStart); -					} -					else -					{ -						LL_WARNS_ONCE("Voice") << "region doesn't have ProvisionVoiceAccountRequest capability!" << LL_ENDL; -					} +					requestVoiceAccountProvision();  				}  			}  		break; @@ -1382,11 +1350,7 @@ void LLVivoxVoiceClient::stateMachine()  			setState(stateCreatingSessionGroup);  			sessionGroupCreateSendMessage();  #else -			// Not using session groups -- skip the stateCreatingSessionGroup state. -			setState(stateNoChannel); - -			// Initial kick-off of channel lookup logic -			parcelChanged();		 +			setState(stateNoChannel);				  #endif  		break; @@ -1399,19 +1363,29 @@ void LLVivoxVoiceClient::stateMachine()  			}  			else if(!mMainSessionGroupHandle.empty())  			{ -				setState(stateNoChannel); -				  				// Start looped recording (needed for "panic button" anti-griefing tool)  				recordingLoopStart(); - -				// Initial kick-off of channel lookup logic -				parcelChanged();		 +				setState(stateNoChannel);	  			}  		break; +			 +		//MARK: stateRetrievingParcelVoiceInfo +		case stateRetrievingParcelVoiceInfo:  +			// wait until parcel voice info is received. +			if(mSessionTerminateRequested || !mVoiceEnabled) +			{ +				// if a terminate request has been received, +				// bail and go to the stateSessionTerminated +				// state.  If the cap request is still pending, +				// the responder will check to see if we've moved +				// to a new session and won't change any state. +				setState(stateSessionTerminated); +			} +			break; +			  		//MARK: stateNoChannel  		case stateNoChannel: -			  			LL_DEBUGS("Voice") << "State No Channel" << LL_ENDL;  			mSpatialJoiningNum = 0;  			// Do this here as well as inside sendPositionalUpdate().   @@ -1432,6 +1406,16 @@ void LLVivoxVoiceClient::stateMachine()  			{  				setState(stateCaptureBufferPaused);  			} +			else if(checkParcelChanged() || (mNextAudioSession == NULL)) +			{ +				// the parcel is changed, or we have no pending audio sessions, +				// so try to request the parcel voice info +				// if we have the cap, we move to the appropriate state +				if(requestParcelVoiceInfo()) +				{ +					setState(stateRetrievingParcelVoiceInfo); +				} +			}  			else if(sessionNeedsRelog(mNextAudioSession))  			{  				requestRelog(); @@ -1466,32 +1450,28 @@ void LLVivoxVoiceClient::stateMachine()  				notifyStatusObservers(LLVoiceClientStatusObserver::STATUS_JOINING);  				setState(stateJoiningSession);  			} -			else if(!mSpatialSessionURI.empty()) -			{ -				// If we're not headed elsewhere and have a spatial URI, return to spatial. -				switchChannel(mSpatialSessionURI, true, false, false, mSpatialSessionCredentials); -			}  		break; - +			  		//MARK: stateJoiningSession  		case stateJoiningSession:		// waiting for session handle -		   -		  // If this is true we have problem with connection to voice server (EXT-4313). -		  // See descriptions of mSpatialJoiningNum and MAX_NORMAL_JOINING_SPATIAL_NUM. -		  if(mSpatialJoiningNum == MAX_NORMAL_JOINING_SPATIAL_NUM)  +			 +			// If this is true we have problem with connection to voice server (EXT-4313). +			// See descriptions of mSpatialJoiningNum and MAX_NORMAL_JOINING_SPATIAL_NUM. +			if(mSpatialJoiningNum == MAX_NORMAL_JOINING_SPATIAL_NUM)   		    { -		      // Notify observers to let them know there is problem with voice -		      notifyStatusObservers(LLVoiceClientStatusObserver::STATUS_VOICE_DISABLED); -		      llwarns << "There seems to be problem with connection to voice server. Disabling voice chat abilities." << llendl; +				// Notify observers to let them know there is problem with voice +				notifyStatusObservers(LLVoiceClientStatusObserver::STATUS_VOICE_DISABLED); +				llwarns << "There seems to be problem with connection to voice server. Disabling voice chat abilities." << llendl;  		    } -		   -		  // Increase mSpatialJoiningNum only for spatial sessions- it's normal to reach this case for -		  // example for p2p many times while waiting for response, so it can't be used to detect errors -		  if(mAudioSession && mAudioSession->mIsSpatial) +			 +			// Increase mSpatialJoiningNum only for spatial sessions- it's normal to reach this case for +			// example for p2p many times while waiting for response, so it can't be used to detect errors +			if(mAudioSession && mAudioSession->mIsSpatial)  		    { -		      mSpatialJoiningNum++; +				 +				mSpatialJoiningNum++;  		    } -       +			  			// joinedAudioSession() will transition from here to stateSessionJoined.  			if(!mVoiceEnabled)  			{ @@ -1511,12 +1491,13 @@ void LLVivoxVoiceClient::stateMachine()  					}  				}  			} -		break; -		 +			break; +			  		//MARK: stateSessionJoined  		case stateSessionJoined:		// session handle received -		  mSpatialJoiningNum = 0; + +			mSpatialJoiningNum = 0;  			// It appears that I need to wait for BOTH the SessionGroup.AddSession response and the SessionStateChangeEvent with state 4  			// before continuing from this state.  They can happen in either order, and if I don't wait for both, things can get stuck.  			// For now, the SessionGroup.AddSession response handler sets mSessionHandle and the SessionStateChangeEvent handler transitions to stateSessionJoined. @@ -1553,7 +1534,7 @@ void LLVivoxVoiceClient::stateMachine()  					sessionMediaDisconnectSendMessage(mAudioSession);  					setState(stateSessionTerminated);  				} -			} +			}	  		break;  		//MARK: stateRunning @@ -1565,6 +1546,7 @@ void LLVivoxVoiceClient::stateMachine()  			}  			else  			{ +				  				if(!inSpatialChannel())  				{  					// When in a non-spatial channel, never send positional updates. @@ -1572,8 +1554,22 @@ void LLVivoxVoiceClient::stateMachine()  				}  				else  				{ +					if(checkParcelChanged()) +					{ +						// if the parcel has changed, attempted to request the +						// cap for the parcel voice info.  If we can't request it +						// then we don't have the cap URL so we do nothing and will +						// recheck next time around +						if(requestParcelVoiceInfo()) +						{ +							// we did get the cap, and we made the request, +							// so go wait for the response. +							setState(stateRetrievingParcelVoiceInfo); +						} +					}  					// Do the calculation that enforces the listener<->speaker tether (and also updates the real camera position)  					enforceTether(); +					  				}  				// Do notifications for expiring Voice Fonts. @@ -3840,7 +3836,7 @@ void LLVivoxVoiceClient::participantUpdatedEvent(  					// also initialize voice moderate_mode depend on Agent's participant. See EXT-6937.  					// *TODO: remove once a way to request the current voice channel moderation mode is implemented. -					if (gAgentID == participant->mAvatarID) +					if (gAgent.getID() == participant->mAvatarID)  					{  						speaker_manager->initVoiceModerateMode();  					} @@ -4073,7 +4069,7 @@ void LLVivoxVoiceClient::messageEvent(  				}  				LL_DEBUGS("Voice") << "adding message, name " << session->mName << " session " << session->mIMSessionID << ", target " << session->mCallerID << LL_ENDL; -				gIMMgr->addMessage(session->mIMSessionID, +				LLIMMgr::getInstance()->addMessage(session->mIMSessionID,  						session->mCallerID,  						session->mName.c_str(),  						message.c_str(), @@ -4447,24 +4443,91 @@ LLVivoxVoiceClient::participantState* LLVivoxVoiceClient::findParticipantByID(co  } -void LLVivoxVoiceClient::parcelChanged() + +// Check for parcel boundary crossing +bool LLVivoxVoiceClient::checkParcelChanged(bool update)  { -	if(getState() >= stateNoChannel) +	LLViewerRegion *region = gAgent.getRegion(); +	LLParcel *parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); +	 +	if(region && parcel)  	{ -		// If the user is logged in, start a channel lookup. -		LL_DEBUGS("Voice") << "sending ParcelVoiceInfoRequest (" << mCurrentRegionName << ", " << mCurrentParcelLocalID << ")" << LL_ENDL; +		S32 parcelLocalID = parcel->getLocalID(); +		std::string regionName = region->getName(); +		 +		//			LL_DEBUGS("Voice") << "Region name = \"" << regionName << "\", parcel local ID = " << parcelLocalID << ", cap URI = \"" << capURI << "\"" << LL_ENDL; +		 +		// The region name starts out empty and gets filled in later.   +		// Also, the cap gets filled in a short time after the region cross, but a little too late for our purposes. +		// If either is empty, wait for the next time around. +		if(!regionName.empty()) +		{ +			if((parcelLocalID != mCurrentParcelLocalID) || (regionName != mCurrentRegionName)) +			{ +				// We have changed parcels.  Initiate a parcel channel lookup. +				if (update) +				{ +					mCurrentParcelLocalID = parcelLocalID; +					mCurrentRegionName = regionName; +				} +				return true; +			} +		} +	} +	return false; +} + +bool LLVivoxVoiceClient::parcelVoiceInfoReceived(state requesting_state) +{ +	// pop back to the state we were in when the parcel changed and we managed to  +	// do the request. +	if(getState() == stateRetrievingParcelVoiceInfo) +	{ +		setState(requesting_state); +		return true; +	} +	else +	{ +		// we've dropped out of stateRetrievingParcelVoiceInfo +		// before we received the cap result, due to a terminate +		// or transition to a non-voice channel.  Don't switch channels. +		return false; +	} +} + -		std::string url = gAgent.getRegion()->getCapability("ParcelVoiceInfoRequest"); +bool LLVivoxVoiceClient::requestParcelVoiceInfo() +{ +	LL_DEBUGS("Voice") << "sending ParcelVoiceInfoRequest (" << mCurrentRegionName << ", " << mCurrentParcelLocalID << ")" << LL_ENDL; + +	// grab the cap for parcel voice info from the region.   +	LLViewerRegion * region = gAgent.getRegion(); +	if (region == NULL) +	{ +		return false; +	} +	// grab the cap. +	std::string url = gAgent.getRegion()->getCapability("ParcelVoiceInfoRequest"); +	if (!url.empty()) +	{ +		// if we've already retrieved the cap from the region, go ahead and make the request, +		// and return true so we can go into the state that waits for the response. +		checkParcelChanged(true);  		LLSD data; +		LL_DEBUGS("Voice") << "sending ParcelVoiceInfoRequest (" << mCurrentRegionName << ", " << mCurrentParcelLocalID << ")" << LL_ENDL; +		  		LLHTTPClient::post( -			url, -			data, -			new LLVivoxVoiceClientCapResponder); +						   url, +						   data, +						   new LLVivoxVoiceClientCapResponder(getState())); +		return true;  	} -	else +	else   	{ -		// The transition to stateNoChannel needs to kick this off again. -		LL_INFOS("Voice") << "not logged in yet, deferring" << LL_ENDL; +		 +		// we don't have the cap yet, so return false so the caller can try again later. +		LL_DEBUGS("Voice") << "ParcelVoiceInfoRequest cap not yet available, deferring" << LL_ENDL; +		return false;  	}  } @@ -4488,6 +4551,7 @@ void LLVivoxVoiceClient::switchChannel(  		case stateJoinSessionFailed:  		case stateJoinSessionFailedWaiting:  		case stateNoChannel: +		case stateRetrievingParcelVoiceInfo:  			// Always switch to the new URI from these states.  			needsSwitch = true;  		break; @@ -4560,13 +4624,10 @@ void LLVivoxVoiceClient::switchChannel(  			mNextAudioSession->mIsP2P = is_p2p;  		} -		if(getState() <= stateNoChannel) -		{ -			// We're already set up to join a channel, just needed to fill in the session URI -		} -		else +		if(getState() >= stateRetrievingParcelVoiceInfo)  		{ -			// State machine will come around and rejoin if uri/handle is not empty. +			// If we're already in a channel, or if we're joining one, terminate +			// so we can rejoin with the new session data.  			sessionTerminate();  		}  	} @@ -6267,13 +6328,13 @@ void LLVivoxVoiceClient::avatarNameResolved(const LLUUID &id, const std::string  			{  				session->mTextInvitePending = false; -				// We don't need to call gIMMgr->addP2PSession() here.  The first incoming message will create the panel.				 +				// We don't need to call LLIMMgr::getInstance()->addP2PSession() here.  The first incoming message will create the panel.				  			}  			if(session->mVoiceInvitePending)  			{  				session->mVoiceInvitePending = false; -				gIMMgr->inviteToSession( +				LLIMMgr::getInstance()->inviteToSession(  										session->mIMSessionID,  										session->mName,  										session->mCallerID,  diff --git a/indra/newview/llvoicevivox.h b/indra/newview/llvoicevivox.h index 471545de56..1142a1a49c 100644 --- a/indra/newview/llvoicevivox.h +++ b/indra/newview/llvoicevivox.h @@ -380,7 +380,8 @@ protected:  		stateVoiceFontsWait,		// Awaiting the list of voice fonts  		stateVoiceFontsReceived,	// List of voice fonts received  		stateCreatingSessionGroup,	// Creating the main session group -		stateNoChannel,				//  +		stateNoChannel,				// Need to join a channel +		stateRetrievingParcelVoiceInfo,    // waiting for parcel voice info request to return with spatial credentials  		stateJoiningSession,		// waiting for session handle  		stateSessionJoined,			// session handle received  		stateRunning,				// in session, steady state @@ -620,6 +621,8 @@ protected:  	void sessionMediaDisconnectSendMessage(sessionState *session);  	void sessionTextDisconnectSendMessage(sessionState *session); +	 +	  	// Pokes the state machine to leave the audio session next time around.  	void sessionTerminate();	 @@ -629,6 +632,12 @@ protected:  	// Does the actual work to get out of the audio session  	void leaveAudioSession(); +	// notifies the voice client that we've received parcel voice info +	bool parcelVoiceInfoReceived(state requesting_state); +	 +	friend class LLVivoxVoiceClientCapResponder; +	 +	  	void lookupName(const LLUUID &id);  	void onAvatarNameCache(const LLUUID& id, const LLAvatarName& av_name);  	void avatarNameResolved(const LLUUID &id, const std::string &name); @@ -733,9 +742,11 @@ private:  	bool mCaptureDeviceDirty;  	bool mRenderDeviceDirty; +	 +	bool checkParcelChanged(bool update = false);  	// This should be called when the code detects we have changed parcels.  	// It initiates the call to the server that gets the parcel channel. -	void parcelChanged(); +	bool requestParcelVoiceInfo();  	void switchChannel(std::string uri = std::string(), bool spatial = true, bool no_reconnect = false, bool is_p2p = false, std::string hash = "");  	void joinSession(sessionState *session); diff --git a/indra/newview/skins/default/xui/da/floater_settings_debug.xml b/indra/newview/skins/default/xui/da/floater_settings_debug.xml index 016e5af378..f7eda56e48 100644 --- a/indra/newview/skins/default/xui/da/floater_settings_debug.xml +++ b/indra/newview/skins/default/xui/da/floater_settings_debug.xml @@ -1,8 +1,8 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater name="settings_debug" title="DEBUG INDSTILLINGER">  	<radio_group name="boolean_combo"> -		<radio_item label="SANDT" name="TRUE" value="sand"/> -		<radio_item label="FALSK" name="FALSE" value=""/> +		<radio_item label="SANDT" name="TRUE" /> +		<radio_item label="FALSK" name="FALSE" />  	</radio_group>  	<color_swatch label="Farve" name="val_color_swatch"/>  	<spinner label="x" name="val_spinner_1"/> diff --git a/indra/newview/skins/default/xui/da/panel_people.xml b/indra/newview/skins/default/xui/da/panel_people.xml index 925492b2d7..66a128cd13 100644 --- a/indra/newview/skins/default/xui/da/panel_people.xml +++ b/indra/newview/skins/default/xui/da/panel_people.xml @@ -66,16 +66,16 @@ Leder du efter nogen at være sammen med? Prøv [secondlife:///app/worldmap Verd  			<layout_panel name="view_profile_btn_lp">  				<button label="Profil" name="view_profile_btn" tool_tip="Vis billeder, grupper og anden beboer information"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="im_btn_lp">  				<button label="IM" name="im_btn" tool_tip="Åben session med privat besked (IM)"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="call_btn_lp">  				<button label="Kald" name="call_btn" tool_tip="Opkald til denne beboer"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="share_btn_lp">  				<button label="Del" name="share_btn" tool_tip="Del en genstand fra beholdning"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="teleport_btn_lp">  				<button label="Teleportér" name="teleport_btn" tool_tip="Tilbyd teleport"/>  			</layout_panel>  		</layout_stack> diff --git a/indra/newview/skins/default/xui/de/floater_about_land.xml b/indra/newview/skins/default/xui/de/floater_about_land.xml index f1e42232c8..f0fa4386d2 100644 --- a/indra/newview/skins/default/xui/de/floater_about_land.xml +++ b/indra/newview/skins/default/xui/de/floater_about_land.xml @@ -219,38 +219,38 @@ werden.  			<text name="objects_available">  				[COUNT] von [MAX] ([AVAILABLE] verfügbar)  			</text> -			<text name="Primitives parcel supports:" width="200"> +			<text name="Primitives parcel supports:">  				Von Parzelle unterstützte Prims:  			</text> -			<text left="204" name="object_contrib_text" width="152"> +			<text name="object_contrib_text">  				[COUNT]  			</text>  			<text name="Primitives on parcel:">  				Prims auf Parzelle:  			</text> -			<text left="204" name="total_objects_text" width="48"> +			<text name="total_objects_text">  				[COUNT]  			</text> -			<text left="14" name="Owned by parcel owner:" width="200"> +			<text name="Owned by parcel owner:" width="200">  				Im Eigentum des Parzellenbesitzers:  			</text> -			<text left="204" left_delta="200" name="owner_objects_text" width="48"> +			<text left_delta="204" name="owner_objects_text">  				[COUNT]  			</text> -			<button label="Anzeigen" label_selected="Anzeigen" name="ShowOwner" right="-135" width="60"/> -			<button label="Zurückgeben" label_selected="Zurückgeben..." name="ReturnOwner..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/> -			<text left="14" name="Set to group:"> +			<button label="Anzeigen" label_selected="Anzeigen" name="ShowOwner"/> +			<button label="Zurückgeben" label_selected="Zurückgeben..." name="ReturnOwner..." tool_tip="Objekte an ihre Eigentümer zurückgeben."/> +			<text name="Set to group:">  				Der Gruppe zugeordnet:  			</text> -			<text left="204" name="group_objects_text" width="48"> +			<text name="group_objects_text">  				[COUNT]  			</text> -			<button label="Anzeigen" label_selected="Anzeigen" name="ShowGroup" right="-135" width="60"/> -			<button label="Zurückgeben" label_selected="Zurückgeben..." name="ReturnGroup..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/> -			<text left="14" name="Owned by others:" width="128"> +			<button label="Anzeigen" label_selected="Anzeigen" name="ShowGroup"/> +			<button label="Zurückgeben" label_selected="Zurückgeben..." name="ReturnGroup..." tool_tip="Objekte an ihre Eigentümer zurückgeben."/> +			<text name="Owned by others:">  				Im Eigentum anderer:  			</text> -			<text left="204" name="other_objects_text" width="48"> +			<text name="other_objects_text">  				[COUNT]  			</text>  			<button label="Anzeigen" label_selected="Anzeigen" name="ShowOther"/> diff --git a/indra/newview/skins/default/xui/de/floater_perm_prefs.xml b/indra/newview/skins/default/xui/de/floater_perm_prefs.xml index fd65987aa9..9be22f3ccb 100644 --- a/indra/newview/skins/default/xui/de/floater_perm_prefs.xml +++ b/indra/newview/skins/default/xui/de/floater_perm_prefs.xml @@ -9,7 +9,7 @@  		</text>  		<check_box label="Bearbeiten" name="next_owner_modify"/>  		<check_box label="Kopieren" name="next_owner_copy"/> -		<check_box label="Verkaufen/Weggeben" left_delta="80" name="next_owner_transfer"/> +		<check_box label="Verkaufen/Weggeben" name="next_owner_transfer"/>  	</panel>  	<button label="OK" label_selected="OK" name="ok"/>  	<button label="Abbrechen" label_selected="Abbrechen" name="cancel"/> diff --git a/indra/newview/skins/default/xui/de/floater_snapshot.xml b/indra/newview/skins/default/xui/de/floater_snapshot.xml index c014b8e040..ae68c71a80 100644 --- a/indra/newview/skins/default/xui/de/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/de/floater_snapshot.xml @@ -4,7 +4,7 @@  		unbekannt  	</floater.string>  	<radio_group label="Fototyp" name="snapshot_type_radio"> -		<radio_item label="Email" name="postcard"/> +		<radio_item label="E-Mail" name="postcard"/>  		<radio_item label="Mein Inventar ([AMOUNT] L$)" name="texture"/>  		<radio_item label="Auf meinem Computer speichern" name="local"/>  	</radio_group> diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml index 258e67a138..338b609343 100644 --- a/indra/newview/skins/default/xui/de/floater_tools.xml +++ b/indra/newview/skins/default/xui/de/floater_tools.xml @@ -64,9 +64,9 @@  		<radio_item label="Fläche auswählen" name="radio select face"/>  	</radio_group>  	<check_box label="Verknüpfte Teile bearbeiten" name="checkbox edit linked parts"/> -	<button label="Link" name="link_btn"/> -	<button label="Verknüpfung auflösen" name="unlink_btn"/> -	<text name="RenderingCost" tool_tip="Zeigt die errechneten Wiedergabekosten für dieses Objekt"> +	<button label="Link" name="link_btn" width="30"/> +	<button label="Verknüpfung auflösen" name="unlink_btn" width="126"/> +	<text name="RenderingCost" tool_tip="Zeigt die errechneten Wiedergabekosten für dieses Objekt" left_pad="0">  		þ: [COUNT]  	</text>  	<check_box label="" name="checkbox uniform"/> diff --git a/indra/newview/skins/default/xui/de/panel_people.xml b/indra/newview/skins/default/xui/de/panel_people.xml index 004792bbf5..63a832a165 100644 --- a/indra/newview/skins/default/xui/de/panel_people.xml +++ b/indra/newview/skins/default/xui/de/panel_people.xml @@ -66,16 +66,16 @@ Sie suchen nach Leuten? Verwenden Sie die [secondlife:///app/worldmap Karte].  			<layout_panel name="view_profile_btn_lp">  				<button label="Profil" name="view_profile_btn" tool_tip="Bilder, Gruppen und andere Einwohner-Informationen anzeigen"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="im_btn_lp">  				<button label="IM" name="im_btn" tool_tip="Instant Messenger öffnen"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="call_btn_lp">  				<button label="Anrufen" name="call_btn" tool_tip="Diesen Einwohner anrufen"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="share_btn_lp">  				<button label="Teilen" name="share_btn" tool_tip="Inventarobjekt teilen"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="teleport_btn_lp">  				<button label="Teleportieren" name="teleport_btn" tool_tip="Teleport anbieten"/>  			</layout_panel>  		</layout_stack> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml index b874074c79..9175ea0bae 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml @@ -60,7 +60,7 @@  			m  		</text>  		<slider label="Max. Partikelzahl:" name="MaxParticleCount"/> -		<slider label="Max. Anzahl an voll dargestellten Avataren:" name="MaxNumberAvatarDrawn"/> +		<slider label="Max. Anzahl an voll dargestellten Avataren:" label_width="230" name="MaxNumberAvatarDrawn" width="315"/>  		<slider label="Post-Processing-Qualität:" name="RenderPostProcess"/>  		<text name="MeshDetailText">  			Darstellungsgrad: diff --git a/indra/newview/skins/default/xui/de/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/de/panel_scrolling_param_base.xml index 990193574e..fa659040ea 100644 --- a/indra/newview/skins/default/xui/de/panel_scrolling_param_base.xml +++ b/indra/newview/skins/default/xui/de/panel_scrolling_param_base.xml @@ -1,4 +1,4 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel name="LLScrollingPanelParamBase"> -	<slider label="[BESCHR]" name="param slider"/> +	<slider label="[DESC]" name="param slider"/>  </panel> diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml index 6e985e0476..ecd2b119c9 100644 --- a/indra/newview/skins/default/xui/en/floater_about_land.xml +++ b/indra/newview/skins/default/xui/en/floater_about_land.xml @@ -414,7 +414,7 @@               right="-10"               name="Cancel Land Sale"               left_pad="5" -             top_pad="-15" +             top_pad="7"               width="180" />              <text               type="string" @@ -488,6 +488,7 @@               width="186">                  0              </text> +              <button               enabled="false"               follows="left|top" @@ -495,9 +496,20 @@               label="Buy Land"               layout="topleft"               left_delta="52" +			 top_pad="5"               name="Buy Land..." -             top_pad="7"               width="130" /> +			<button +             enabled="false" +             follows="left|top" +             height="23" +             label="Linden Sale" +             layout="topleft" +             left="10" +             name="Linden Sale..." +             tool_tip="Land must be owned, set content, and not already for auction." +             top_pad="-23" +             width="150" />              <button               enabled="true"               follows="left|top" @@ -545,18 +557,7 @@               layout="topleft"               left_delta="0"               name="Reclaim Land..." -             top_delta="-50" -             width="180" /> -            <button -             enabled="false" -             follows="left|top" -             height="23" -             label="Linden Sale" -             layout="topleft" -             left_delta="0" -             name="Linden Sale..." -             tool_tip="Land must be owned, set content, and not already for auction." -             top_pad="2" +             top_delta="-25"               width="180" />          </panel>          <panel @@ -2125,4 +2126,4 @@ Only large parcels can be listed in search.               </panel>          </panel>      </tab_container> -</floater> +</floater>
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/floater_snapshot.xml b/indra/newview/skins/default/xui/en/floater_snapshot.xml index ec190ab656..89a0c4c287 100644 --- a/indra/newview/skins/default/xui/en/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/en/floater_snapshot.xml @@ -330,13 +330,13 @@       increment="1"       initial_value="75"       label="Image quality" -     label_width="100" +     label_width="124"       layout="topleft"       left_delta="0"       max_val="100"       name="image_quality_slider"       top_pad="5" -     width="205" /> +     width="228" />      <text       type="string"       length="1" diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index 7441b2cd9c..8b8f70b940 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -279,7 +279,7 @@       layout="topleft"       left_pad="2"       name="unlink_btn" -     width="50"> +     width="105">  	  <button.commit_callback  	     function="BuildTool.UnlinkObjects"/>      </button> diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml index 3ead67ca57..a7d1aa963c 100644 --- a/indra/newview/skins/default/xui/en/main_view.xml +++ b/indra/newview/skins/default/xui/en/main_view.xml @@ -135,6 +135,14 @@           name="login_panel_holder"           width="1024"/> +      <debug_view follows="all" +                  left="0" +                  top="0" +                  mouse_opaque="false" +                  height="500" +                  name="DebugView" +                  width="1024"/> +        <panel follows="all"                      height="500"                      left="0" @@ -154,13 +162,6 @@                        top="0"                        width="1024"/>        </panel> -      <debug_view follows="all" -                  left="0" -                  top="0" -                  mouse_opaque="false" -                  height="500" -                  name="DebugView" -                  width="1024"/>      </layout_panel>    </layout_stack>    <panel mouse_opaque="false" diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 81046e99a0..a0d0c8625e 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -232,6 +232,16 @@               function="SideTray.PanelPeopleTab"               parameter="nearby_panel" />              </menu_item_call> +        <menu_item_check +         label="Nearby Voice" +         name="Nearby Voice"> +            <menu_item_check.on_check +             function="Floater.Visible" +             parameter="voice_controls" /> +            <menu_item_check.on_click +             function="Floater.Toggle" +             parameter="voice_controls" /> +        </menu_item_check>      </menu>      <menu       create_jump_keys="true" diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 7bf742d949..cd0dc719bb 100755..100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -3698,6 +3698,19 @@ Join me in [REGION]    <notification     icon="alertmodal.tga" +   name="TooManyTeleportOffers" +   type="alertmodal"> +You attempted to make [OFFERS] teleport offers +which exceeds the limit of [LIMIT]. +    <tag>group</tag> +    <tag>fail</tag> +  <usetemplate +     name="okbutton" +     yestext="OK"/> +  </notification> + +  <notification +   icon="alertmodal.tga"     name="OfferTeleportFromGod"     type="alertmodal">  God summon Resident to your location? 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 9bd60b935f..bfc503f05b 100644 --- a/indra/newview/skins/default/xui/en/panel_nearby_media.xml +++ b/indra/newview/skins/default/xui/en/panel_nearby_media.xml @@ -104,12 +104,12 @@  		top_pad="15"  		left="10"  		name="show_text" -		width="40"> +		width="62">  	  Show:  	</text>  	<combo_box  		height="23" -		left="50" +		left="72"  		width="140"  		top_delta="-5"  		follows="left|top" diff --git a/indra/newview/skins/default/xui/en/panel_outfits_list.xml b/indra/newview/skins/default/xui/en/panel_outfits_list.xml index 9f98019c94..a0096adc01 100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_list.xml @@ -14,9 +14,7 @@       background_visible="true"       bg_alpha_color="DkGray2"       bg_opaque_color="DkGray2" -     no_matched_tabs_text.value="Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search]." -     no_matched_tabs_text.v_pad="10" -     no_visible_tabs_text.value="You don't have any outfits yet. Try [secondlife:///app/search/all/ Search]" +       follows="all"       height="400"       layout="topleft" @@ -24,6 +22,13 @@       name="outfits_accordion"       top="0"       width="309"> +       <no_matched_tabs_text +         name="no_matched_outfits_msg" +         value="Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search]." +         v_pad="10"/> +       <no_visible_tabs_text +         name="no_outfits_msg" +         value="You don't have any outfits yet. Try [secondlife:///app/search/all/ Search]"/>      </accordion>      <panel       background_visible="true" diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index 775805ad2e..cc4522f944 100644 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -110,8 +110,9 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M             <layout_panel               height="142"               layout="topleft" +             min_dim="100"               mouse_opaque="false" -             user_resize="false" +             user_resize="true"               visibility_control="NearbyListShowMap"               width="313">               <net_map @@ -128,9 +129,9 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M             <layout_panel               height="213"               layout="topleft" -             min_height="100" +             min_dim="100"               mouse_opaque="false" -             user_resize="false" +             user_resize="true"               width="313">               <avatar_list                 allow_select="true" @@ -621,7 +622,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M  			height="23"  			layout="bottomleft"  			left_pad="3" -			name="chat_btn_lp" +			name="im_btn_lp"  		    user_resize="false"   		    auto_resize="true"  			width="41"> @@ -642,7 +643,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M  			height="23"  			layout="bottomleft"  			left_pad="3" -			name="chat_btn_lp" +			name="call_btn_lp"  		    user_resize="false"   		    auto_resize="true"  			width="52"> @@ -663,7 +664,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M  			height="23"  			layout="bottomleft"  			left_pad="3" -			name="chat_btn_lp" +			name="share_btn_lp"  		    user_resize="false"   		    auto_resize="true"  			width="66"> @@ -684,7 +685,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M  			height="23"  			layout="bottomleft"  			left_pad="3" -			name="chat_btn_lp" +			name="teleport_btn_lp"  		    user_resize="false"   		    auto_resize="true"  			width="77"> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml index 1745c1e4b0..1f92244eb9 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml @@ -385,7 +385,7 @@  		height="18"  		image_name="Move_Walk_Off"  		layout="topleft" -    left_pad="170"  +		left_pad="170"   		name="avatar_icon"  		mouse_opaque="false"  		visible="true" @@ -496,8 +496,8 @@      filename="panel_sound_devices.xml"       visiblity_control="ShowDeviceSettings"       name="device_settings_panel" -    top="314" -    width="345" +    top_pad="0" +    width="480"      left="18"      class="panel_voice_device_settings"/>      </panel> diff --git a/indra/newview/skins/default/xui/en/panel_sound_devices.xml b/indra/newview/skins/default/xui/en/panel_sound_devices.xml index ccae7c5350..0a20a4a965 100644 --- a/indra/newview/skins/default/xui/en/panel_sound_devices.xml +++ b/indra/newview/skins/default/xui/en/panel_sound_devices.xml @@ -7,33 +7,46 @@   layout="topleft"   name="device_settings_panel"   width="360"> -	<panel.string -	  name="default_text"> -		Default -	</panel.string> -	<icon -		   height="18" -		   image_name="Microphone_On" -		   left_delta="4" -		   name="microphone_icon" -		   mouse_opaque="false" -		   top="7" -       layout="topleft" -		   visible="true" -		   width="18" /> -	<text +    <panel.string +      name="default_text"> +        Default +    </panel.string> +    <icon +     follows="left|top" +     height="18" +     image_name="Microphone_On" +     left_delta="-5" +     name="microphone_icon" +     mouse_opaque="false" +     top="7" +     layout="topleft" +     visible="true" +     width="18" /> +    <icon +     follows="left|top" +     height="18" +     image_name="Parcel_Voice_Dark" +     layout="topleft" +     left_pad="220"  +     name="speaker_icon" +     mouse_opaque="false" +     top_delta="0" +     visible="true" +     width="22" /> +    <text       type="string"       length="1" -      font.style="BOLD" +     font.style="BOLD"       follows="left|top"       height="16"       layout="topleft" -     left_pad="3" +     left_pad="-240" +     top_delta="5"       name="Input" -     width="70"> -		Input -	</text> -	<combo_box +     width="60"> +        Input +    </text> +    <combo_box       height="23"       control_name="VoiceInputAudioDevice"       follows="left|top" @@ -42,33 +55,57 @@       max_chars="128"       name="voice_input_device"       top_delta="-5" -     width="200" /> -	<text -	  type="string" -	  length="1" -	  follows="left|top" -	  height="16" -	  layout="topleft" -	  left_delta="-70" -	  name="My volume label" -	  top_pad="4" -	  width="200"> -		My volume: -	</text> -	<slider_bar -	  control_name="AudioLevelMic" -   follows="top|right|left" -   height="17" -   increment="0.025" -   initial_value="1.0" -   layout="topleft" -   left_delta="-6" -   max_val="2" -   name="mic_volume_slider" -   tool_tip="Change the volume using this slider" -   top_pad="-1" -   width="220" /> -	<text +     width="150" /> +    <text +     font.style="BOLD" +     type="string" +     length="1" +     follows="left|top" +     height="15" +     layout="topleft" +     left_pad="30" +     name="Output" +     top_delta="5" +     width="60"> +        Output +    </text> +    <combo_box +     control_name="VoiceOutputAudioDevice" +     height="23" +     follows="left|top" +     layout="topleft" +     left_pad="0" +     max_chars="128" +     name="voice_output_device" +     top_delta="-4" +     width="150" /> +    <text +     type="string" +     halign="left" +     length="1" +     follows="left|top" +     height="16" +     layout="topleft" +     left_delta="-300" +     name="My volume label" +     top_pad="14" +     width="200"> +        My volume: +    </text> +    <slider_bar +     control_name="AudioLevelMic" +     follows="top|right|left" +     height="17" +     increment="0.025" +     initial_value="1.0" +     layout="topleft" +     left_delta="95" +     max_val="2" +     name="mic_volume_slider" +     tool_tip="Change the volume using this slider" +     top_pad="-18" +     width="110" /> +    <text       type="string"       text_color="EmphasisColor"       length="1" @@ -79,8 +116,8 @@       name="wait_text"       top_delta="-1"       width="110"> -		Please wait -	</text> +        Please wait +    </text>    <locate       follows="right|top"       height="20" @@ -121,35 +158,4 @@       name="bar4"       top_delta="0"       width="20" /> -	<icon -	   height="18" -	   image_name="Parcel_Voice_Light" -	   left="5" -	   name="speaker_icon" -	   mouse_opaque="false" -	   top_pad="3" -	   visible="true" -	   width="22" /> -	<text -     font.style="BOLD" -     type="string" -     length="1" -     follows="left|top" -     height="15" -     layout="topleft" -     left_pad="0" -     name="Output" -     width="70"> -		Output -	</text> -	<combo_box -     control_name="VoiceOutputAudioDevice" -     height="23" -     follows="left|top" -     layout="topleft" -     left_pad="0" -     max_chars="128" -     name="voice_output_device" -     top_delta="-3" -     width="200" /> -</panel> +</panel>
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 71f48c833d..143a989d32 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -2250,6 +2250,9 @@ Returns a string with the requested data about the region  	<string name="IMMainland">mainland</string>  	<string name="IMTeen">teen</string> +    <!-- floater about land --> +    <string name="Anyone">anyone</string> +  	<!-- floater region info -->  	<!-- The following will replace variable [ALL_ESTATES] in notifications EstateAllowed*, EstateBanned*, EstateManager* -->  	<string name="RegionInfoError">error</string> diff --git a/indra/newview/skins/default/xui/es/floater_buy_currency.xml b/indra/newview/skins/default/xui/es/floater_buy_currency.xml index 2f92cb55eb..43bbf0b70f 100644 --- a/indra/newview/skins/default/xui/es/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/es/floater_buy_currency.xml @@ -18,7 +18,7 @@  	<text name="balance_amount">  		[AMT] L$  	</text> -	<text name="currency_action" width="50"> +	<text name="currency_action">  		Quiero comprar  	</text>  	<text name="currency_label"> diff --git a/indra/newview/skins/default/xui/es/floater_settings_debug.xml b/indra/newview/skins/default/xui/es/floater_settings_debug.xml index bca1839f09..1da2e491e1 100644 --- a/indra/newview/skins/default/xui/es/floater_settings_debug.xml +++ b/indra/newview/skins/default/xui/es/floater_settings_debug.xml @@ -1,8 +1,8 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater name="settings_debug" title="CONFIGURACIONES DEL DEPURADOR">  	<radio_group name="boolean_combo"> -		<radio_item label="VERDADERO" name="TRUE" value="verdadero"/> -		<radio_item label="FALSO" name="FALSE" value=""/> +		<radio_item label="VERDADERO" name="TRUE" /> +		<radio_item label="FALSO" name="FALSE" />  	</radio_group>  	<color_swatch label="Color" name="val_color_swatch"/>  	<spinner label="x" name="val_spinner_1"/> diff --git a/indra/newview/skins/default/xui/es/floater_tools.xml b/indra/newview/skins/default/xui/es/floater_tools.xml index 9d29bc40bf..78f18b745c 100644 --- a/indra/newview/skins/default/xui/es/floater_tools.xml +++ b/indra/newview/skins/default/xui/es/floater_tools.xml @@ -65,7 +65,7 @@  	</radio_group>  	<check_box label="Editar las partes enlazadas" name="checkbox edit linked parts"/>  	<button label="Enlazar" name="link_btn"/> -	<button label="Desenlazar" name="unlink_btn"/> +	<button label="Desenlazar" name="unlink_btn" width="95"/>  	<text name="RenderingCost" tool_tip="Muestra cuánto se calcula que cuesta renderizar este objeto">  		þ: [COUNT]  	</text> diff --git a/indra/newview/skins/default/xui/es/panel_navigation_bar.xml b/indra/newview/skins/default/xui/es/panel_navigation_bar.xml index e8e95c3bac..293c9ef1d9 100644 --- a/indra/newview/skins/default/xui/es/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/es/panel_navigation_bar.xml @@ -1,7 +1,7 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel name="navigation_bar">  	<panel name="navigation_panel"> -		<pull_button name="back_btn" tool_tip="Volver a lo localización anterior"/> +		<pull_button name="back_btn" tool_tip="Volver a la localización anterior"/>  		<pull_button name="forward_btn" tool_tip="Ir una localización adelante"/>  		<button name="home_btn" tool_tip="Teleportar a mi Base"/>  		<location_input label="Localización" name="location_combo"/> diff --git a/indra/newview/skins/default/xui/es/panel_people.xml b/indra/newview/skins/default/xui/es/panel_people.xml index 01149e412d..a9d38dca25 100644 --- a/indra/newview/skins/default/xui/es/panel_people.xml +++ b/indra/newview/skins/default/xui/es/panel_people.xml @@ -66,16 +66,16 @@  			<layout_panel name="view_profile_btn_lp">  				<button label="Perfil" name="view_profile_btn" tool_tip="Mostrar imágenes, grupos y otra información del Residente"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="im_btn_lp">  				<button label="MI" name="im_btn" tool_tip="Abrir una sesión de mensajes instantáneos"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="call_btn_lp">  				<button label="Llamar" name="call_btn" tool_tip="Llamar a este Residente"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="share_btn_lp">  				<button label="Compartir" name="share_btn" tool_tip="Compartir un objeto del inventario"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="teleport_btn_lp">  				<button label="Teleporte" name="teleport_btn" tool_tip="Ofrecer teleporte"/>  			</layout_panel>  		</layout_stack> diff --git a/indra/newview/skins/default/xui/es/panel_preferences_colors.xml b/indra/newview/skins/default/xui/es/panel_preferences_colors.xml index e6e4c13203..d47a6d718a 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_colors.xml @@ -39,6 +39,6 @@  	<text name="floater_opacity">  		Opacidad de la ventana:  	</text> -	<slider label="Activo:" name="active"/> -	<slider label="Inactivo:" name="inactive"/> +	<slider label="Activa:" name="active"/> +	<slider label="Inactiva:" name="inactive"/>  </panel> diff --git a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml index fa7806a75a..75d175b262 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml @@ -12,7 +12,7 @@  	<slider label="Ambiental" name="Wind Volume"/>  	<slider label="Efectos de sonido" name="SFX Volume"/>  	<slider label="Música en streaming" name="Music Volume"/> -	<check_box label="Activados" name="enable_music"/> +	<check_box label="Activada" name="enable_music"/>  	<slider label="Multimedia" name="Media Volume"/>  	<check_box label="Activados" name="enable_media"/>  	<slider label="Chat de voz" name="Voice Volume"/> diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml index 3731b6b57c..b759eed738 100644 --- a/indra/newview/skins/default/xui/es/strings.xml +++ b/indra/newview/skins/default/xui/es/strings.xml @@ -3628,6 +3628,9 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].  	<string name="LocationCtrlComboBtnTooltip">  		Historial de mis localizaciones  	</string> +	<string name="LocationCtrlForSaleTooltip"> +		Comprar este terreno +	</string>  	<string name="LocationCtrlAdultIconTooltip">  		Región Adulta  	</string> diff --git a/indra/newview/skins/default/xui/fr/panel_people.xml b/indra/newview/skins/default/xui/fr/panel_people.xml index 166f04b3e4..b24c340708 100644 --- a/indra/newview/skins/default/xui/fr/panel_people.xml +++ b/indra/newview/skins/default/xui/fr/panel_people.xml @@ -66,16 +66,16 @@ Pour rechercher des résidents avec qui passer du temps, utilisez [secondlife://  			<layout_panel name="view_profile_btn_lp">  				<button label="Profil" name="view_profile_btn" tool_tip="Afficher la photo, les groupes et autres infos des résidents"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="im_btn_lp">  				<button label="IM" name="im_btn" tool_tip="Ouvrir une session IM"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="call_btn_lp">  				<button label="Appel" name="call_btn" tool_tip="Appeler ce résident"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="share_btn_lp">  				<button label="Partager" name="share_btn" tool_tip="Partager un article de l'inventaire"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="teleport_btn_lp">  				<button label="Téléporter" name="teleport_btn" tool_tip="Proposer une téléportation"/>  			</layout_panel>  		</layout_stack> diff --git a/indra/newview/skins/default/xui/it/floater_settings_debug.xml b/indra/newview/skins/default/xui/it/floater_settings_debug.xml index aab00a26ce..489d52d3b8 100644 --- a/indra/newview/skins/default/xui/it/floater_settings_debug.xml +++ b/indra/newview/skins/default/xui/it/floater_settings_debug.xml @@ -1,8 +1,8 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater name="settings_debug" title="PARAMETRI DI DEBUG">  	<radio_group name="boolean_combo"> -		<radio_item label="VERO" name="TRUE" value="vero"/> -		<radio_item label="FALSO" name="FALSE" value=""/> +		<radio_item label="VERO" name="TRUE" /> +		<radio_item label="FALSO" name="FALSE" />  	</radio_group>  	<color_swatch label="Colore" name="val_color_swatch"/>  	<spinner label="x" name="val_spinner_1"/> diff --git a/indra/newview/skins/default/xui/it/panel_people.xml b/indra/newview/skins/default/xui/it/panel_people.xml index b24a4055f7..f903ae6e2c 100644 --- a/indra/newview/skins/default/xui/it/panel_people.xml +++ b/indra/newview/skins/default/xui/it/panel_people.xml @@ -66,16 +66,16 @@ Stai cercando persone da frequentare? Prova la [secondlife:///app/worldmap Mappa  			<layout_panel name="view_profile_btn_lp">  				<button label="Profilo" name="view_profile_btn" tool_tip="Mostra immagine, gruppi e altre informazioni del residente"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="im_btn_lp">  				<button label="IM" name="im_btn" tool_tip="Apri una sessione messaggio istantaneo"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="call_btn_lp">  				<button label="Chiama" name="call_btn" tool_tip="Chiama questo residente"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="share_btn_lp">  				<button label="Condividi" name="share_btn" tool_tip="Condividi un oggetto dell'inventario"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="teleport_btn_lp">  				<button label="Teleport" name="teleport_btn" tool_tip="Offri teleport"/>  			</layout_panel>  		</layout_stack> diff --git a/indra/newview/skins/default/xui/ja/floater_tools.xml b/indra/newview/skins/default/xui/ja/floater_tools.xml index b29f744a68..f7d77d351e 100644 --- a/indra/newview/skins/default/xui/ja/floater_tools.xml +++ b/indra/newview/skins/default/xui/ja/floater_tools.xml @@ -74,8 +74,8 @@  		両側を延ばす  	</text>  	<check_box initial_value="true" label="テクスチャを引き延ばす" name="checkbox stretch textures"/> -	<check_box initial_value="true" label="グリッドにスナップ" left_delta="27" name="checkbox snap to grid"/> -	<combo_box left_delta="60" name="combobox grid mode" tool_tip="オブジェクトの配置に使うグリッドルーラを選択します" width="76"> +	<check_box initial_value="true" label="グリッドにスナップ" name="checkbox snap to grid"/> +	<combo_box name="combobox grid mode" tool_tip="オブジェクトの配置に使うグリッドルーラを選択します" >  		<combo_box.item label="インワールドグリッド" name="World"/>  		<combo_box.item label="ローカルグリッド" name="Local"/>  		<combo_box.item label="リファレンスグリッド" name="Reference"/> @@ -137,7 +137,7 @@  	<text name="object_cost" tool_tip="[prims] / [physics complexity] として現在選択されているオブジェクトのコスト">  		料金: [COST] / [PHYSICS]  	</text> -	<tab_container name="Object Info Tabs" tab_max_width="150" tab_min_width="30"> +	<tab_container name="Object Info Tabs" >  		<panel label="一般" name="General">  			<panel.string name="text deed continued">  				譲渡 @@ -379,22 +379,22 @@  				オブジェクトの特徴を編集:  			</text>  			<check_box label="フレキシブルパス" name="Flexible1D Checkbox Ctrl" tool_tip="Z 軸を中心にオブジェクトの屈曲を有効にします(クライアント側のみ)"/> -			<spinner label="柔軟性" label_width="72" name="FlexNumSections" width="135"/> -			<spinner label="重力" label_width="72" name="FlexGravity" width="135"/> -			<spinner label="ドラッグ" label_width="72" name="FlexFriction" width="135"/> -			<spinner label="風" label_width="72" name="FlexWind" width="135"/> -			<spinner label="緊張" label_width="72" name="FlexTension" width="135"/> -			<spinner label="X 軸方向の力" label_width="72" name="FlexForceX" width="135"/> -			<spinner label="Y 軸方向の力" label_width="72" name="FlexForceY" width="135"/> -			<spinner label="Z 軸方向の力" label_width="72" name="FlexForceZ" width="135"/> +			<spinner label="柔軟性" name="FlexNumSections" /> +			<spinner label="重力" name="FlexGravity" /> +			<spinner label="ドラッグ" name="FlexFriction" /> +			<spinner label="風" name="FlexWind" /> +			<spinner label="緊張" name="FlexTension" /> +			<spinner label="X 軸方向の力" name="FlexForceX" /> +			<spinner label="Y 軸方向の力" name="FlexForceY" /> +			<spinner label="Z 軸方向の力" name="FlexForceZ" />  			<check_box label="光" name="Light Checkbox Ctrl" tool_tip="オブジェクトが発光します"/> -			<color_swatch label="" left_delta="74" name="colorswatch" tool_tip="クリックしてカラーピッカーを開きます"/> +			<color_swatch label="" name="colorswatch" tool_tip="クリックしてカラーピッカーを開きます"/>  			<texture_picker label="" name="light texture control" tool_tip="クリックで投影画を選択します(遅延レンダリング有効時のみ)"/> -			<spinner label="輝度" label_width="72" name="Light Intensity" width="135"/> +			<spinner label="輝度" name="Light Intensity" />  			<spinner label="FOV" name="Light FOV"/> -			<spinner label="半径" label_width="72" name="Light Radius" width="135"/> +			<spinner label="半径" name="Light Radius" />  			<spinner label="焦点" name="Light Focus"/> -			<spinner label="弱まる" label_width="72" name="Light Falloff" width="135"/> +			<spinner label="弱まる" name="Light Falloff" />  			<spinner label="環境" name="Light Ambiance"/>  			<text name="label physicsshapetype">  				実像の種類: @@ -496,18 +496,18 @@  			</panel>  		</panel>  		<panel label="中身" name="Contents"> -			<button label="新しいスクリプト" label_selected="新規スクリプト" name="button new script" width="120"/> -			<button label="権限" left_delta="130" name="button permissions" width="80"/> +			<button label="新しいスクリプト" label_selected="新規スクリプト" name="button new script" /> +			<button label="権限" name="button permissions" />  		</panel>  	</tab_container>  	<panel name="land info panel">  		<text name="label_parcel_info">  			区画情報  		</text> -		<text name="label_area_price" width="200"> +		<text name="label_area_price" >  			価格: [AREA] 平方メートル L$ [PRICE]  		</text> -		<text name="label_area" width="200"> +		<text name="label_area" >  			面積: [AREA] 平方メートル  		</text>  		<button label="土地情報" label_selected="土地情報" name="button about land"/> diff --git a/indra/newview/skins/default/xui/ja/panel_people.xml b/indra/newview/skins/default/xui/ja/panel_people.xml index c7f71c6de0..1c90f7327e 100644 --- a/indra/newview/skins/default/xui/ja/panel_people.xml +++ b/indra/newview/skins/default/xui/ja/panel_people.xml @@ -66,16 +66,16 @@  			<layout_panel name="view_profile_btn_lp">  				<button label="プロフィール" name="view_profile_btn" tool_tip="写真、グループ、その他住人情報を表示"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="im_btn_lp">  				<button label="IM" name="im_btn" tool_tip="インスタントメッセージを開きます"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="call_btn_lp">  				<button label="コール" name="call_btn" tool_tip="この住人にコールする"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="share_btn_lp">  				<button label="共有" name="share_btn" tool_tip="「持ち物」のアイテムを共有する"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="teleport_btn_lp">  				<button label="テレポート" name="teleport_btn" tool_tip="テレポートを送ります"/>  			</layout_panel>  		</layout_stack> diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml index a6691fb764..ff22221aab 100644 --- a/indra/newview/skins/default/xui/ja/strings.xml +++ b/indra/newview/skins/default/xui/ja/strings.xml @@ -3821,7 +3821,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ  		アドホックコンファレンス  	</string>  	<string name="conference-title-incoming"> -		[AGENT_NAME]とコンファレンスする +		[AGENT_NAME] とコンファレンスする  	</string>  	<string name="inventory_item_offered-im">  		持ち物アイテムを送りました diff --git a/indra/newview/skins/default/xui/pl/floater_settings_debug.xml b/indra/newview/skins/default/xui/pl/floater_settings_debug.xml index 7c29d52e7b..131f92d56f 100644 --- a/indra/newview/skins/default/xui/pl/floater_settings_debug.xml +++ b/indra/newview/skins/default/xui/pl/floater_settings_debug.xml @@ -1,8 +1,8 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater name="settings_debug" title="USTAWIENIA DEBUGOWANIA">  	<radio_group name="boolean_combo"> -		<radio_item label="PRAWDA" name="TRUE" value="prawda"/> -		<radio_item label="NIEPRAWDA" name="FALSE" value=""/> +		<radio_item label="PRAWDA" name="TRUE" /> +		<radio_item label="NIEPRAWDA" name="FALSE" />  	</radio_group>  	<color_swatch label="Kolor" name="val_color_swatch"/>  	<spinner label="x" name="val_spinner_1"/> diff --git a/indra/newview/skins/default/xui/pl/panel_people.xml b/indra/newview/skins/default/xui/pl/panel_people.xml index da9f84cb2e..ef52e2148b 100644 --- a/indra/newview/skins/default/xui/pl/panel_people.xml +++ b/indra/newview/skins/default/xui/pl/panel_people.xml @@ -66,16 +66,16 @@ Chcesz spotkać ludzi? Spróbuj [secondlife:///app/worldmap Mapa Świata].  			<layout_panel name="view_profile_btn_lp">  				<button label="Profil" name="view_profile_btn" tool_tip="Pokaż zdjęcie, grupy i inne informacje o Rezydencie"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="im_btn_lp">  				<button label="IM" name="im_btn" tool_tip="Otwórz wiadomości IM"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="call_btn_lp">  				<button label="Dzwoń" name="call_btn" tool_tip="Zadzwoń do tego Rezydenta"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="share_btn_lp">  				<button label="Udostępnij" name="share_btn" tool_tip="Udostępnij obiekt z Szafy"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="teleport_btn_lp">  				<button label="Teleportuj" name="teleport_btn" tool_tip="Zaproponuj teleport"/>  			</layout_panel>  		</layout_stack> diff --git a/indra/newview/skins/default/xui/pt/floater_settings_debug.xml b/indra/newview/skins/default/xui/pt/floater_settings_debug.xml index c6694d13b2..83f7b24572 100644 --- a/indra/newview/skins/default/xui/pt/floater_settings_debug.xml +++ b/indra/newview/skins/default/xui/pt/floater_settings_debug.xml @@ -1,8 +1,8 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater name="settings_debug" title="DEBUG SETTINGS">  	<radio_group name="boolean_combo"> -		<radio_item label="TRUE" name="TRUE" value="verdadeiro"/> -		<radio_item label="FALSE" name="FALSE" value=""/> +		<radio_item label="TRUE" name="TRUE" /> +		<radio_item label="FALSE" name="FALSE" />  	</radio_group>  	<color_swatch label="Cor" name="val_color_swatch"/>  	<spinner label="x" name="val_spinner_1"/> diff --git a/indra/newview/skins/default/xui/pt/panel_people.xml b/indra/newview/skins/default/xui/pt/panel_people.xml index aece30738b..f3af15b991 100644 --- a/indra/newview/skins/default/xui/pt/panel_people.xml +++ b/indra/newview/skins/default/xui/pt/panel_people.xml @@ -66,16 +66,16 @@ Em busca de alguém para conversar? Procure no [secondlife:///app/worldmap Mapa-  			<layout_panel name="view_profile_btn_lp">  				<button label="Perfil" name="view_profile_btn" tool_tip="Exibir fotografia, grupos e outras informações dos residentes"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="im_btn_lp">  				<button label="MI" name="im_btn" tool_tip="Abrir sessão de mensagem instantânea"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="call_btn_lp">  				<button label="Ligar" name="call_btn" tool_tip="Ligar para este residente"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="share_btn_lp">  				<button label="Compartilhar" name="share_btn" tool_tip="Compartilhar item de inventário"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="teleport_btn_lp">  				<button label="Teletransportar" name="teleport_btn" tool_tip="Oferecer teletransporte"/>  			</layout_panel>  		</layout_stack> diff --git a/indra/newview/skins/default/xui/zh/panel_people.xml b/indra/newview/skins/default/xui/zh/panel_people.xml index 8da75e334e..4c6d6c76be 100644 --- a/indra/newview/skins/default/xui/zh/panel_people.xml +++ b/indra/newview/skins/default/xui/zh/panel_people.xml @@ -66,16 +66,16 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M  			<layout_panel name="view_profile_btn_lp">  				<button label="檔案" name="view_profile_btn" tool_tip="Show picture, groups, and other Residents information"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="im_btn_lp">  				<button label="IM" name="im_btn" tool_tip="開啟即時訊息會話"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="call_btn_lp">  				<button label="通話" name="call_btn" tool_tip="Call this Resident"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="share_btn_lp">  				<button label="分享" name="share_btn" tool_tip="分享一個收納區物品"/>  			</layout_panel> -			<layout_panel name="chat_btn_lp"> +			<layout_panel name="teleport_btn_lp">  				<button label="瞬間傳送" name="teleport_btn" tool_tip="Offer teleport"/>  			</layout_panel>  		</layout_stack> diff --git a/scripts/gpu_table_tester b/scripts/gpu_table_tester index 52b1c8f31d..52b1c8f31d 100755..100644 --- a/scripts/gpu_table_tester +++ b/scripts/gpu_table_tester | 
