diff options
727 files changed, 3332 insertions, 3042 deletions
diff --git a/.github/release.yaml b/.github/release.yaml index 0f4884c944..f550e52020 100644 --- a/.github/release.yaml +++ b/.github/release.yaml @@ -1,18 +1,18 @@ -changelog:
 -  exclude:
 -    labels:
 -      - ignore-for-release
 -    authors:
 -      - dependabot 
 -  categories:
 -    - title: Breaking Changes 🛠
 -      labels:
 -        - semver-major
 -        - breaking-change
 -    - title: New Features 🎉
 -      labels:
 -        - semver-minor
 -        - enhancement
 -    - title: Other Changes
 -      labels:
 -        - '*'
 +changelog: +  exclude: +    labels: +      - ignore-for-release +    authors: +      - dependabot +  categories: +    - title: Breaking Changes 🛠 +      labels: +        - semver-major +        - breaking-change +    - title: New Features 🎉 +      labels: +        - semver-minor +        - enhancement +    - title: Other Changes +      labels: +        - '*' diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 849c10d62e..19a6a0ef6f 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -24,6 +24,7 @@ jobs:      outputs:        viewer_channel: ${{ steps.build.outputs.viewer_channel }}        viewer_version: ${{ steps.build.outputs.viewer_version }} +      viewer_branch:  ${{ steps.which-branch.outputs.branch }}        imagename: ${{ steps.build.outputs.imagename }}      env:        AUTOBUILD_ADDRSIZE: 64 @@ -33,6 +34,9 @@ jobs:        AUTOBUILD_GITHUB_TOKEN: ${{ secrets.SHARED_AUTOBUILD_GITHUB_TOKEN }}        AUTOBUILD_INSTALLABLE_CACHE: ${{ github.workspace }}/.autobuild-installables        AUTOBUILD_VARIABLES_FILE: ${{ github.workspace }}/.build-variables/variables +      # Direct autobuild to store vcs_url, vcs_branch and vcs_revision in +      # autobuild-package.xml. +      AUTOBUILD_VCS_INFO: "true"        AUTOBUILD_VSVER: "170"        DEVELOPER_DIR: ${{ matrix.developer_dir }}        # Ensure that Linden viewer builds engage Bugsplat. @@ -70,7 +74,7 @@ jobs:          uses: actions/checkout@v4          with:            repository: secondlife/build-variables -          ref: viewer +          ref: master            path: .build-variables        - name: Checkout master-message-template @@ -96,10 +100,17 @@ jobs:          if: runner.os == 'Windows'          run: choco install nsis-unicode +      - name: Determine source branch +        id: which-branch +        uses: secondlife/viewer-build-util/which-branch@v1 +        with: +          token: ${{ github.token }} +        - name: Build          id: build          shell: bash          env: +          AUTOBUILD_VCS_BRANCH: ${{ steps.which-branch.outputs.branch }}            RUNNER_OS: ${{ runner.os }}          run: |            # set up things the viewer's build.sh script expects @@ -150,7 +161,7 @@ jobs:            }            repo_branch()            { -            git -C "$1" branch | grep '^* ' | cut -c 3- +            echo "$AUTOBUILD_VCS_BRANCH"            }            record_dependencies_graph()            { @@ -324,7 +335,7 @@ jobs:            version: ${{ needs.build.outputs.viewer_version }}    release: -    needs: [sign-and-package-windows, sign-and-package-mac] +    needs: [build, sign-and-package-windows, sign-and-package-mac]      runs-on: ubuntu-latest      if: github.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life_')      steps: @@ -360,8 +371,15 @@ jobs:            # name the release page for the build number so we can find it            # easily (analogous to looking up a codeticket build page)            name: "v${{ github.run_id }}" +          # SL-20546: want the channel and version to be visible on the +          # release page +          body: | +            ${{ needs.build.outputs.viewer_channel }} +            ${{ needs.build.outputs.viewer_version }} +            ${{ needs.build.outputs.viewer_branch }}            prerelease: true            generate_release_notes: true +          append_body: true            # the only reason we generate a GH release is to post build products            fail_on_unmatched_files: true            files: | diff --git a/autobuild.xml b/autobuild.xml index 0e5a5a2a25..268a0c0975 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -1468,11 +1468,11 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>e50ea94bbaa4ff41bf53b84b7192df1a694c5337</string> +              <string>3a3e14563cd5fc019c3f139b82aa46ec79847709</string>                <key>hash_algorithm</key>                <string>sha1</string>                <key>url</key> -              <string>https://github.com/secondlife/llca/releases/download/v202310121525.0-d22bd98/llca-202310121530.0-common-d22bd98.tar.zst</string> +              <string>https://github.com/secondlife/llca/releases/download/v202312051403.17-0f5d9c3/llca-202312051404.0-common-0f5d9c3.tar.zst</string>              </map>              <key>name</key>              <string>common</string> @@ -1486,7 +1486,7 @@          <string>Copyright (c) 2016, Linden Research, Inc.; data provided by the Mozilla NSS Project.        </string>          <key>version</key> -        <string>202310121530.0</string> +        <string>202312051404.0</string>          <key>name</key>          <string>llca</string>        </map> @@ -2933,7 +2933,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>                    <string>-DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE</string>                    <string>-DROOT_PROJECT_NAME:STRING=SecondLife</string>                    <string>-DINSTALL_PROPRIETARY=TRUE</string> -</array> +                </array>                </map>                <key>build</key>                <map> @@ -2953,11 +2953,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>                    <string>-DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE</string>                    <string>-DROOT_PROJECT_NAME:STRING=SecondLife</string>                    <string>-DINSTALL_PROPRIETARY=FALSE</string> -</array> +                </array>                  <key>arguments</key>                  <array>                    <string>../indra</string> -</array> +                </array>                </map>                <key>name</key>                <string>RelWithDebInfoOS</string> @@ -2974,7 +2974,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>                    <string>-DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE</string>                    <string>-DROOT_PROJECT_NAME:STRING=SecondLife</string>                    <string>-DINSTALL_PROPRIETARY=TRUE</string> -</array> +                </array>                </map>                <key>build</key>                <map> @@ -2994,11 +2994,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>                    <string>-DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE</string>                    <string>-DROOT_PROJECT_NAME:STRING=SecondLife</string>                    <string>-DINSTALL_PROPRIETARY=FALSE</string> -</array> +                </array>                  <key>arguments</key>                  <array>                    <string>../indra</string> -</array> +                </array>                </map>                <key>name</key>                <string>ReleaseOS</string> @@ -3019,11 +3019,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>                  <array>                    <string>-G</string>                    <string>Xcode</string> -</array> +                </array>                  <key>arguments</key>                  <array>                    <string>../indra</string> -</array> +                </array>                </map>                <key>build</key>                <map> @@ -3036,7 +3036,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>                    <string>-project</string>                    <string>SecondLife.xcodeproj</string>                    <string>-parallelizeTargets</string> -</array> +                </array>                </map>                <key>default</key>                <string>True</string> @@ -3051,7 +3051,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>                  <array>                    <string>-G</string>                    <string>Xcode</string> -</array> +                </array>                </map>                <key>build</key>                <map> @@ -3064,7 +3064,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>                    <string>-project</string>                    <string>SecondLife.xcodeproj</string>                    <string>-parallelizeTargets</string> -</array> +                </array>                </map>                <key>name</key>                <string>RelWithDebInfoOS</string> @@ -3077,11 +3077,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>                  <array>                    <string>-G</string>                    <string>Xcode</string> -</array> +                </array>                  <key>arguments</key>                  <array>                    <string>../indra</string> -</array> +                </array>                </map>                <key>build</key>                <map> @@ -3094,7 +3094,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>                    <string>-project</string>                    <string>SecondLife.xcodeproj</string>                    <string>-parallelizeTargets</string> -</array> +                </array>                </map>                <key>name</key>                <string>Release</string> @@ -3107,7 +3107,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>                  <array>                    <string>-G</string>                    <string>Xcode</string> -</array> +                </array>                </map>                <key>build</key>                <map> @@ -3120,7 +3120,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>                    <string>-project</string>                    <string>SecondLife.xcodeproj</string>                    <string>-parallelizeTargets</string> -</array> +                </array>                </map>                <key>name</key>                <string>ReleaseOS</string> @@ -3144,11 +3144,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>                    <string>-G</string>                    <string>Ninja</string>                    <string>-DLL_TESTS=Off</string> -</array> +                </array>                  <key>arguments</key>                  <array>                    <string>../indra</string> -</array> +                </array>                </map>                <key>build</key>                <map> @@ -3169,7 +3169,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>                    <string>-G</string>                    <string>Ninja</string>                    <string>-DLL_TESTS=Off</string> -</array> +                </array>                </map>                <key>build</key>                <map> @@ -3207,11 +3207,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>                    <string>${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN}</string>                    <string>-A</string>                    <string>${AUTOBUILD_WIN_VSPLATFORM|NOTWIN}</string> -</array> +                </array>                  <key>arguments</key>                  <array>                    <string>..\indra</string> -</array> +                </array>                </map>                <key>build</key>                <map> @@ -3221,11 +3221,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>                  <array>                    <string>/build</string>                    <string>RelWithDebInfo|${AUTOBUILD_WIN_VSPLATFORM|NOTWIN}</string> -</array> +                </array>                  <key>arguments</key>                  <array>                    <string>SecondLife.sln</string> -</array> +                </array>                </map>                <key>default</key>                <string>True</string> @@ -3245,11 +3245,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>                    <string>-DINSTALL_PROPRIETARY=FALSE</string>                    <string>-DUSE_KDU=FALSE</string>                    <string>-DUSE_OPENAL:BOOL=ON</string> -</array> +                </array>                  <key>arguments</key>                  <array>                    <string>..\indra</string> -</array> +                </array>                </map>                <key>build</key>                <map> @@ -3263,11 +3263,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>                    <string>/p:useenv=true</string>                    <string>/verbosity:minimal</string>                    <string>/p:VCBuildAdditionalOptions= /incremental</string> -</array> +                </array>                  <key>arguments</key>                  <array>                    <string>SecondLife.sln</string> -</array> +                </array>                </map>                <key>name</key>                <string>RelWithDebInfoOS</string> @@ -3282,11 +3282,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>                    <string>${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN}</string>                    <string>-A</string>                    <string>${AUTOBUILD_WIN_VSPLATFORM|NOTWIN}</string> -</array> +                </array>                  <key>arguments</key>                  <array>                    <string>..\indra</string> -</array> +                </array>                </map>                <key>build</key>                <map> @@ -3296,11 +3296,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>                  <array>                    <string>/build</string>                    <string>Release|${AUTOBUILD_WIN_VSPLATFORM|NOTWIN}</string> -</array> +                </array>                  <key>arguments</key>                  <array>                    <string>SecondLife.sln</string> -</array> +                </array>                </map>                <key>name</key>                <string>Release</string> @@ -3319,11 +3319,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>                    <string>-DINSTALL_PROPRIETARY=FALSE</string>                    <string>-DUSE_KDU=FALSE</string>                    <string>-DUSE_OPENAL:BOOL=ON</string> -</array> +                </array>                  <key>arguments</key>                  <array>                    <string>..\indra</string> -</array> +                </array>                </map>                <key>build</key>                <map> @@ -3337,11 +3337,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>                    <string>/p:useenv=true</string>                    <string>/verbosity:minimal</string>                    <string>/p:VCBuildAdditionalOptions= /incremental</string> -</array> +                </array>                  <key>arguments</key>                  <array>                    <string>SecondLife.sln</string> -</array> +                </array>                </map>                <key>name</key>                <string>ReleaseOS</string> @@ -112,7 +112,8 @@ installer_CYGWIN()    fi  } -[[ -n "$GITHUB_OUTPUT" ]] || fatal "Need to export GITHUB_OUTPUT" +# if someone wants to run build.sh outside the GitHub environment +[[ -n "$GITHUB_OUTPUT" ]] || export GITHUB_OUTPUT='/dev/null'  # The following is based on the Warning for GitHub multiline output strings:  # https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#multiline-strings  EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) diff --git a/doc/contributions.txt b/doc/contributions.txt index a097aad7f6..271a685102 100755 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -292,6 +292,7 @@ Beq Janus  	SL-18637  	SL-19317  	SL-19660 +	SL-20610  Beth Walcher  Bezilon Kasei  Biancaluce Robbiani diff --git a/indra/llcommon/classic_callback.h b/indra/llcommon/classic_callback.h index 1ad6dbc58f..009c25d67c 100644 --- a/indra/llcommon/classic_callback.h +++ b/indra/llcommon/classic_callback.h @@ -119,11 +119,11 @@ public:       * ClassicCallback must not itself be copied or moved! Once you've passed       * get_userdata() to some API, this object MUST remain at that address.       */ -    // However, we can't yet count on C++17 Class Template Argument Deduction, -    // which means makeClassicCallback() is still useful, which means we MUST -    // be able to return one to construct into caller's instance (move ctor). -    // Possible defense: bool 'referenced' data member set by get_userdata(), -    // with an llassert_always(! referenced) check in the move constructor. +    // However, makeClassicCallback() is useful for deducing the CALLABLE +    // type, which means we MUST be able to return one to construct into +    // caller's instance (move ctor). Possible defense: bool 'referenced' data +    // member set by get_userdata(), with an llassert_always(! referenced) +    // check in the move constructor.      ClassicCallback(ClassicCallback const&) = delete;      ClassicCallback(ClassicCallback&&) = default; // delete;      ClassicCallback& operator=(ClassicCallback const&) = delete; diff --git a/indra/llcommon/llapp.cpp b/indra/llcommon/llapp.cpp index b99166991f..90d0c28eb1 100644 --- a/indra/llcommon/llapp.cpp +++ b/indra/llcommon/llapp.cpp @@ -104,7 +104,6 @@ BOOL LLApp::sLogInSignal = FALSE;  // Keeps track of application status  LLScalarCond<LLApp::EAppStatus> LLApp::sStatus{LLApp::APP_STATUS_STOPPED};  LLAppErrorHandler LLApp::sErrorHandler = NULL; -BOOL LLApp::sErrorThreadRunning = FALSE;  LLApp::LLApp() @@ -787,13 +786,8 @@ void default_unix_signal_handler(int signum, siginfo_t *info, void *)  				return;  			}		 -			// Flag status to ERROR, so thread_error does its work. +			// Flag status to ERROR  			LLApp::setError(); -			// Block in the signal handler until somebody says that we're done. -			while (LLApp::sErrorThreadRunning && !LLApp::isStopped()) -			{ -				ms_sleep(10); -			}  			if (LLApp::sLogInSignal)  			{ diff --git a/indra/llcommon/llapp.h b/indra/llcommon/llapp.h index c832c8b142..a892bfeb1e 100644 --- a/indra/llcommon/llapp.h +++ b/indra/llcommon/llapp.h @@ -291,7 +291,6 @@ protected:  	static void setStatus(EAppStatus status);		// Use this to change the application status.  	static LLScalarCond<EAppStatus> sStatus; // Reflects current application status -	static BOOL sErrorThreadRunning; // Set while the error thread is running  	static BOOL sDisableCrashlogger; // Let the OS handle crashes for us.  	std::wstring mCrashReportPipeStr;  //Name of pipe to use for crash reporting. diff --git a/indra/llcommon/llcoros.cpp b/indra/llcommon/llcoros.cpp index 3ab97b557f..3deed2e199 100644 --- a/indra/llcommon/llcoros.cpp +++ b/indra/llcommon/llcoros.cpp @@ -123,7 +123,7 @@ LLCoros::LLCoros():      // Previously we used      // boost::context::guarded_stack_allocator::default_stacksize();      // empirically this is insufficient. -    mStackSize(768*1024), +    mStackSize(900*1024),      // mCurrent does NOT own the current CoroData instance -- it simply      // points to it. So initialize it with a no-op deleter.      mCurrent{ [](CoroData*){} } diff --git a/indra/llcommon/lldictionary.h b/indra/llcommon/lldictionary.h index 5800ec5e5d..18664e340e 100644 --- a/indra/llcommon/lldictionary.h +++ b/indra/llcommon/lldictionary.h @@ -87,11 +87,10 @@ protected:  	}  	void addEntry(Index index, Entry *entry)  	{ -		if (lookup(index)) +		if (!this->emplace(index, entry).second)   		{  			LL_ERRS() << "Dictionary entry already added (attempted to add duplicate entry)" << LL_ENDL;  		} -		(*this)[index] = entry;  	}  }; diff --git a/indra/llcommon/llpointer.h b/indra/llcommon/llpointer.h index f9de0c7929..64aceddf32 100644 --- a/indra/llcommon/llpointer.h +++ b/indra/llcommon/llpointer.h @@ -46,33 +46,32 @@  template <class Type> class LLPointer  {  public: - -	LLPointer() :  +	LLPointer() :  		mPointer(NULL)  	{  	} -	LLPointer(Type* ptr) :  +	LLPointer(Type* ptr) :  		mPointer(ptr)  	{  		ref();  	} -	LLPointer(const LLPointer<Type>& ptr) :  +	LLPointer(const LLPointer<Type>& ptr) :  		mPointer(ptr.mPointer)  	{  		ref();  	} -	// support conversion up the type hierarchy.  See Item 45 in Effective C++, 3rd Ed. +	// Support conversion up the type hierarchy. See Item 45 in Effective C++, 3rd Ed.  	template<typename Subclass> -	LLPointer(const LLPointer<Subclass>& ptr) :  +	LLPointer(const LLPointer<Subclass>& ptr) :  		mPointer(ptr.get())  	{  		ref();  	} -	~LLPointer()								 +	~LLPointer()  	{  		unref();  	} @@ -83,39 +82,39 @@ public:  	const Type&	operator*() const				{ return *mPointer; }  	Type&	operator*()							{ return *mPointer; } -	operator BOOL()  const						{ return (mPointer != NULL); } -	operator bool()  const						{ return (mPointer != NULL); } +	operator BOOL() const						{ return (mPointer != NULL); } +	operator bool() const						{ return (mPointer != NULL); }  	bool operator!() const						{ return (mPointer == NULL); }  	bool isNull() const							{ return (mPointer == NULL); }  	bool notNull() const						{ return (mPointer != NULL); } -	operator Type*()       const				{ return mPointer; } -	bool operator !=(Type* ptr) const           { return (mPointer != ptr); 	} -	bool operator ==(Type* ptr) const           { return (mPointer == ptr); 	} -	bool operator ==(const LLPointer<Type>& ptr) const           { return (mPointer == ptr.mPointer); 	} -	bool operator < (const LLPointer<Type>& ptr) const           { return (mPointer < ptr.mPointer); 	} -	bool operator > (const LLPointer<Type>& ptr) const           { return (mPointer > ptr.mPointer); 	} +	operator Type*() const						{ return mPointer; } +	bool operator !=(Type* ptr) const			{ return (mPointer != ptr); } +	bool operator ==(Type* ptr) const			{ return (mPointer == ptr); } +	bool operator ==(const LLPointer<Type>& ptr) const { return (mPointer == ptr.mPointer); } +	bool operator < (const LLPointer<Type>& ptr) const { return (mPointer < ptr.mPointer); } +	bool operator > (const LLPointer<Type>& ptr) const { return (mPointer > ptr.mPointer); } -	LLPointer<Type>& operator =(Type* ptr)                    -	{  +	LLPointer<Type>& operator =(Type* ptr) +	{  		assign(ptr); -		return *this;  +		return *this;  	} -	LLPointer<Type>& operator =(const LLPointer<Type>& ptr)   -	{  +	LLPointer<Type>& operator =(const LLPointer<Type>& ptr) +	{  		assign(ptr); -		return *this;  +		return *this;  	}  	// support assignment up the type hierarchy. See Item 45 in Effective C++, 3rd Ed.  	template<typename Subclass> -	LLPointer<Type>& operator =(const LLPointer<Subclass>& ptr)   -	{  +	LLPointer<Type>& operator =(const LLPointer<Subclass>& ptr) +	{  		assign(ptr.get()); -		return *this;  +		return *this;  	} -	 +  	// Just exchange the pointers, which will not change the reference counts.  	static void swap(LLPointer<Type>& a, LLPointer<Type>& b)  	{ @@ -129,16 +128,6 @@ protected:  	void ref();                               	void unref();  #else - -	void assign(const LLPointer<Type>& ptr) -	{ -		if( mPointer != ptr.mPointer ) -		{ -			unref();  -			mPointer = ptr.mPointer; -			ref(); -		} -	}  	void ref()                               	{   		if (mPointer) @@ -161,7 +150,18 @@ protected:  			}  		}  	} -#endif +#endif // LL_LIBRARY_INCLUDE + +	void assign(const LLPointer<Type>& ptr) +	{ +		if (mPointer != ptr.mPointer) +		{ +			unref(); +			mPointer = ptr.mPointer; +			ref(); +		} +	} +  protected:  	Type*	mPointer;  }; @@ -169,18 +169,18 @@ protected:  template <class Type> class LLConstPointer  {  public: -	LLConstPointer() :  +	LLConstPointer() :  		mPointer(NULL)  	{  	} -	LLConstPointer(const Type* ptr) :  +	LLConstPointer(const Type* ptr) :  		mPointer(ptr)  	{  		ref();  	} -	LLConstPointer(const LLConstPointer<Type>& ptr) :  +	LLConstPointer(const LLConstPointer<Type>& ptr) :  		mPointer(ptr.mPointer)  	{  		ref(); @@ -188,7 +188,7 @@ public:  	// support conversion up the type hierarchy.  See Item 45 in Effective C++, 3rd Ed.  	template<typename Subclass> -	LLConstPointer(const LLConstPointer<Subclass>& ptr) :  +	LLConstPointer(const LLConstPointer<Subclass>& ptr) :  		mPointer(ptr.get())  	{  		ref(); @@ -203,55 +203,55 @@ public:  	const Type*	operator->() const				{ return mPointer; }  	const Type&	operator*() const				{ return *mPointer; } -	operator BOOL()  const						{ return (mPointer != NULL); } -	operator bool()  const						{ return (mPointer != NULL); } +	operator BOOL() const						{ return (mPointer != NULL); } +	operator bool() const						{ return (mPointer != NULL); }  	bool operator!() const						{ return (mPointer == NULL); }  	bool isNull() const							{ return (mPointer == NULL); }  	bool notNull() const						{ return (mPointer != NULL); } -	operator const Type*()       const			{ return mPointer; } -	bool operator !=(const Type* ptr) const     { return (mPointer != ptr); 	} -	bool operator ==(const Type* ptr) const     { return (mPointer == ptr); 	} -	bool operator ==(const LLConstPointer<Type>& ptr) const           { return (mPointer == ptr.mPointer); 	} -	bool operator < (const LLConstPointer<Type>& ptr) const           { return (mPointer < ptr.mPointer); 	} -	bool operator > (const LLConstPointer<Type>& ptr) const           { return (mPointer > ptr.mPointer); 	} +	operator const Type*() const				{ return mPointer; } +	bool operator !=(const Type* ptr) const		{ return (mPointer != ptr); } +	bool operator ==(const Type* ptr) const		{ return (mPointer == ptr); } +	bool operator ==(const LLConstPointer<Type>& ptr) const { return (mPointer == ptr.mPointer); } +	bool operator < (const LLConstPointer<Type>& ptr) const { return (mPointer < ptr.mPointer); } +	bool operator > (const LLConstPointer<Type>& ptr) const { return (mPointer > ptr.mPointer); } -	LLConstPointer<Type>& operator =(const Type* ptr)                    +	LLConstPointer<Type>& operator =(const Type* ptr)  	{  		if( mPointer != ptr )  		{ -			unref();  -			mPointer = ptr;  +			unref(); +			mPointer = ptr;  			ref();  		} -		return *this;  +		return *this;  	} -	LLConstPointer<Type>& operator =(const LLConstPointer<Type>& ptr)   -	{  +	LLConstPointer<Type>& operator =(const LLConstPointer<Type>& ptr) +	{  		if( mPointer != ptr.mPointer )  		{ -			unref();  +			unref();  			mPointer = ptr.mPointer;  			ref();  		} -		return *this;  +		return *this;  	}  	// support assignment up the type hierarchy. See Item 45 in Effective C++, 3rd Ed.  	template<typename Subclass> -	LLConstPointer<Type>& operator =(const LLConstPointer<Subclass>& ptr)   -	{  +	LLConstPointer<Type>& operator =(const LLConstPointer<Subclass>& ptr) +	{  		if( mPointer != ptr.get() )  		{ -			unref();  +			unref();  			mPointer = ptr.get();  			ref();  		} -		return *this;  +		return *this;  	} -	 +  	// Just exchange the pointers, which will not change the reference counts.  	static void swap(LLConstPointer<Type>& a, LLConstPointer<Type>& b)  	{ @@ -262,11 +262,11 @@ public:  protected:  #ifdef LL_LIBRARY_INCLUDE -	void ref();                              +	void ref();  	void unref(); -#else -	void ref()                              -	{  +#else // LL_LIBRARY_INCLUDE +	void ref() +	{  		if (mPointer)  		{  			mPointer->ref(); @@ -277,9 +277,9 @@ protected:  	{  		if (mPointer)  		{ -			const Type *tempp = mPointer; +			const Type *temp = mPointer;  			mPointer = NULL; -			tempp->unref(); +			temp->unref();  			if (mPointer != NULL)  			{  				LL_WARNS() << "Unreference did assignment to non-NULL because of destructor" << LL_ENDL; @@ -287,7 +287,8 @@ protected:  			}  		}  	} -#endif +#endif // LL_LIBRARY_INCLUDE +  protected:  	const Type*	mPointer;  }; @@ -297,13 +298,13 @@ class LLCopyOnWritePointer : public LLPointer<Type>  {  public:  	typedef LLCopyOnWritePointer<Type> self_t; -    typedef LLPointer<Type> pointer_t; -     -	LLCopyOnWritePointer()  +	typedef LLPointer<Type> pointer_t; + +	LLCopyOnWritePointer()  	:	mStayUnique(false)  	{} -	LLCopyOnWritePointer(Type* ptr)  +	LLCopyOnWritePointer(Type* ptr)  	:	LLPointer<Type>(ptr),  		mStayUnique(false)  	{} diff --git a/indra/llcommon/llrand.cpp b/indra/llcommon/llrand.cpp index 33afc50cf7..e4065e23bf 100644 --- a/indra/llcommon/llrand.cpp +++ b/indra/llcommon/llrand.cpp @@ -58,7 +58,9 @@   * to restore uniform distribution.   */ -static LLRandLagFib2281 gRandomGenerator(LLUUID::getRandomSeed()); +// gRandomGenerator is a stateful static object, which is therefore not +// inherently thread-safe. +static thread_local LLRandLagFib2281 gRandomGenerator(LLUUID::getRandomSeed());  // no default implementation, only specific F64 and F32 specializations  template <typename REAL> @@ -71,7 +73,7 @@ inline F64 ll_internal_random<F64>()  	// CPUs (or at least multi-threaded processes) seem to  	// occasionally give an obviously incorrect random number -- like  	// 5^15 or something. Sooooo, clamp it as described above. -	F64 rv = gRandomGenerator(); +	F64 rv{ gRandomGenerator() };  	if(!((rv >= 0.0) && (rv < 1.0))) return fmod(rv, 1.0);  	return rv;  } @@ -79,7 +81,13 @@ inline F64 ll_internal_random<F64>()  template <>  inline F32 ll_internal_random<F32>()  { -    return F32(ll_internal_random<F64>()); +	// *HACK: clamp the result as described above. +	// Per Monty, it's important to clamp using the correct fmodf() rather +	// than expanding to F64 for fmod() and then truncating back to F32. Prior +	// to this change, we were getting sporadic ll_frand() == 1.0 results. +	F32 rv{ narrow(gRandomGenerator()) }; +	if(!((rv >= 0.0f) && (rv < 1.0f))) return fmodf(rv, 1.0f); +	return rv;  }  /*------------------------------ F64 aliases -------------------------------*/ diff --git a/indra/llcommon/llrefcount.cpp b/indra/llcommon/llrefcount.cpp index 6852b5536a..3da94e7a8d 100644 --- a/indra/llcommon/llrefcount.cpp +++ b/indra/llcommon/llrefcount.cpp @@ -30,7 +30,7 @@  #include "llerror.h"  // maximum reference count before sounding memory leak alarm -const S32 gMaxRefCount = S32_MAX; +const S32 gMaxRefCount = LL_REFCOUNT_FREE;  LLRefCount::LLRefCount(const LLRefCount& other)  :	mRef(0) @@ -49,7 +49,7 @@ LLRefCount::LLRefCount() :  }  LLRefCount::~LLRefCount() -{  +{  	if (mRef != LL_REFCOUNT_FREE && mRef != 0)  	{  		LL_ERRS() << "deleting non-zero reference" << LL_ENDL; diff --git a/indra/llcommon/llrefcount.h b/indra/llcommon/llrefcount.h index 2080da1565..15e7175fc8 100644 --- a/indra/llcommon/llrefcount.h +++ b/indra/llcommon/llrefcount.h @@ -51,24 +51,20 @@ protected:  public:  	LLRefCount(); -    inline void validateRefCount() const -    { -        llassert(mRef > 0); // ref count below 0, likely corrupted -        llassert(mRef < gMaxRefCount); // ref count excessive, likely memory leak -    } -  	inline void ref() const -	{  -		mRef++;  -        validateRefCount(); -	}  +	{ +		llassert(mRef != LL_REFCOUNT_FREE); // object is deleted +		mRef++; +		llassert(mRef < gMaxRefCount); // ref count excessive, likely memory leak +	}  	inline S32 unref() const  	{ -        validateRefCount(); +		llassert(mRef != LL_REFCOUNT_FREE); // object is deleted +		llassert(mRef > 0); // ref count below 1, likely corrupted  		if (0 == --mRef)  		{ -            mRef = LL_REFCOUNT_FREE; // set to nonsense yet recognizable value to aid in debugging +			mRef = LL_REFCOUNT_FREE; // set to nonsense yet recognizable value to aid in debugging  			delete this;  			return 0;  		} @@ -82,8 +78,8 @@ public:  		return mRef;  	} -private:  -	mutable S32	mRef;  +private: +	mutable S32	mRef;  }; @@ -106,7 +102,7 @@ protected:  public:  	LLThreadSafeRefCount();  	LLThreadSafeRefCount(const LLThreadSafeRefCount&); -	LLThreadSafeRefCount& operator=(const LLThreadSafeRefCount& ref)  +	LLThreadSafeRefCount& operator=(const LLThreadSafeRefCount& ref)  	{  		mRef = 0;  		return *this; @@ -114,8 +110,8 @@ public:  	void ref()  	{ -		mRef++;  -	}  +		mRef++; +	}  	void unref()  	{ @@ -136,36 +132,36 @@ public:  		return currentVal;  	} -private:  -	LLAtomicS32 mRef;  +private: +	LLAtomicS32 mRef;  };  /**   * intrusive pointer support for LLThreadSafeRefCount   * this allows you to use boost::intrusive_ptr with any LLThreadSafeRefCount-derived type   */ -inline void intrusive_ptr_add_ref(LLThreadSafeRefCount* p)  +inline void intrusive_ptr_add_ref(LLThreadSafeRefCount* p)  {  	p->ref();  } -inline void intrusive_ptr_release(LLThreadSafeRefCount* p)  +inline void intrusive_ptr_release(LLThreadSafeRefCount* p)  { -	p->unref();  +	p->unref();  }  /**   * intrusive pointer support   * this allows you to use boost::intrusive_ptr with any LLRefCount-derived type   */ -inline void intrusive_ptr_add_ref(LLRefCount* p)  +inline void intrusive_ptr_add_ref(LLRefCount* p)  {  	p->ref();  } -inline void intrusive_ptr_release(LLRefCount* p)  +inline void intrusive_ptr_release(LLRefCount* p)  { -	p->unref();  +	p->unref();  }  #endif diff --git a/indra/llcommon/llstring.cpp b/indra/llcommon/llstring.cpp index f6629803ee..f40e7ad45f 100644 --- a/indra/llcommon/llstring.cpp +++ b/indra/llcommon/llstring.cpp @@ -1235,9 +1235,17 @@ bool LLStringUtil::formatDatetime(std::string& replacement, std::string token,  		}  		else  		{ +#if 0 +			// EXT-1565 : Zai Lynch, James Linden : 15/Oct/09 +			// [BSI] Feedback: Viewer clock mentions SLT, but would prefer it to show PST/PDT  			// "slt" = Second Life Time, which is deprecated.  			// If not utc or user local time, fallback to Pacific time  			replacement = LLStringOps::getPacificDaylightTime() ? "PDT" : "PST"; +#else +			// SL-20370 : Steeltoe Linden : 29/Sep/23 +			// Change "PDT" to "SLT" on menu bar +			replacement = "SLT"; +#endif  		}  		return true;  	} diff --git a/indra/llcommon/llthread.cpp b/indra/llcommon/llthread.cpp index 4eaa05c335..cd4975d9d3 100644 --- a/indra/llcommon/llthread.cpp +++ b/indra/llcommon/llthread.cpp @@ -113,15 +113,16 @@ LL_COMMON_API bool on_main_thread()      return (LLThread::currentID() == main_thread());  } -LL_COMMON_API void assert_main_thread() +LL_COMMON_API bool assert_main_thread()  {      auto curr = LLThread::currentID();      auto main = main_thread(); -    if (curr != main) -    { -        LL_WARNS() << "Illegal execution from thread id " << curr -            << " outside main thread " << main << LL_ENDL; -    } +    if (curr == main) +        return true; + +    LL_WARNS() << "Illegal execution from thread id " << curr +               << " outside main thread " << main << LL_ENDL; +    return false;  }  // this function has become moot diff --git a/indra/llcommon/llthread.h b/indra/llcommon/llthread.h index 50202631e7..9f1c589fcd 100644 --- a/indra/llcommon/llthread.h +++ b/indra/llcommon/llthread.h @@ -152,7 +152,7 @@ public:  //============================================================================ -extern LL_COMMON_API void assert_main_thread(); +extern LL_COMMON_API bool assert_main_thread();  extern LL_COMMON_API bool on_main_thread();  #endif // LL_LLTHREAD_H diff --git a/indra/llcommon/lltrace.cpp b/indra/llcommon/lltrace.cpp index ff671a8370..bce186054f 100644 --- a/indra/llcommon/lltrace.cpp +++ b/indra/llcommon/lltrace.cpp @@ -33,8 +33,6 @@  namespace LLTrace  { -MemStatHandle gTraceMemStat("LLTrace"); -  StatBase::StatBase( const char* name, const char* description )   :	mName(name),  	mDescription(description ? description : "") diff --git a/indra/llcommon/lltrace.h b/indra/llcommon/lltrace.h index 580cf0a5fd..21a5803a76 100644 --- a/indra/llcommon/lltrace.h +++ b/indra/llcommon/lltrace.h @@ -193,61 +193,6 @@ void add(CountStatHandle<T>& count, VALUE_T value)  #endif  } -template<> -class StatType<MemAccumulator::AllocationFacet> -:	public StatType<MemAccumulator> -{ -public: - -	StatType(const char* name, const char* description = "") -	:	StatType<MemAccumulator>(name, description) -	{} -}; - -template<> -class StatType<MemAccumulator::DeallocationFacet> -:	public StatType<MemAccumulator> -{ -public: - -	StatType(const char* name, const char* description = "") -	:	StatType<MemAccumulator>(name, description) -	{} -}; - -class MemStatHandle : public StatType<MemAccumulator> -{ -public: -	typedef StatType<MemAccumulator> stat_t; -	MemStatHandle(const char* name, const char* description = "") -	:	stat_t(name, description) -	{ -		mName = name; -	} - -	void setName(const char* name) -	{ -        LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; -		mName = name; -		setKey(name); -	} - -	/*virtual*/ const char* getUnitLabel() const { return "KB"; } - -	StatType<MemAccumulator::AllocationFacet>& allocations()  -	{ -        LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; -		return static_cast<StatType<MemAccumulator::AllocationFacet>&>(*(StatType<MemAccumulator>*)this); -	} - -	StatType<MemAccumulator::DeallocationFacet>& deallocations()  -	{ -        LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; -		return static_cast<StatType<MemAccumulator::DeallocationFacet>&>(*(StatType<MemAccumulator>*)this); -	} -}; - -  // measures effective memory footprint of specified type  // specialize to cover different types  template<typename T, typename IS_MEM_TRACKABLE = void, typename IS_UNITS = void> @@ -334,33 +279,6 @@ struct MeasureMem<std::basic_string<T>, IS_MEM_TRACKABLE, IS_BYTES>  	}  }; - -template<typename T> -inline void claim_alloc(MemStatHandle& measurement, const T& value) -{ -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; -#if LL_TRACE_ENABLED -	auto size = MeasureMem<T>::measureFootprint(value); -	if(size == 0) return; -	MemAccumulator& accumulator = measurement.getCurrentAccumulator(); -	accumulator.mSize.sample(accumulator.mSize.hasValue() ? accumulator.mSize.getLastValue() + (F64)size : (F64)size); -	accumulator.mAllocations.record(size); -#endif -} - -template<typename T> -inline void disclaim_alloc(MemStatHandle& measurement, const T& value) -{ -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; -#if LL_TRACE_ENABLED -	auto size = MeasureMem<T>::measureFootprint(value); -	if(size == 0) return; -	MemAccumulator& accumulator = measurement.getCurrentAccumulator(); -	accumulator.mSize.sample(accumulator.mSize.hasValue() ? accumulator.mSize.getLastValue() - (F64)size : -(F64)size); -	accumulator.mDeallocations.add(size); -#endif -} -  }  #endif // LL_LLTRACE_H diff --git a/indra/llcommon/lltraceaccumulators.cpp b/indra/llcommon/lltraceaccumulators.cpp index 6bd886ae98..5fafb53832 100644 --- a/indra/llcommon/lltraceaccumulators.cpp +++ b/indra/llcommon/lltraceaccumulators.cpp @@ -1,24 +1,24 @@ -/**  +/**   * @file lltracesampler.cpp   *   * $LicenseInfo:firstyear=2001&license=viewerlgpl$   * Second Life Viewer Source Code   * Copyright (C) 2012, 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$   */ @@ -32,66 +32,45 @@  namespace LLTrace  { -extern MemStatHandle gTraceMemStat; - -  ///////////////////////////////////////////////////////////////////////  // AccumulatorBufferGroup  /////////////////////////////////////////////////////////////////////// -AccumulatorBufferGroup::AccumulatorBufferGroup()  +AccumulatorBufferGroup::AccumulatorBufferGroup()  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; -	claim_alloc(gTraceMemStat, mCounts.capacity() * sizeof(CountAccumulator)); -	claim_alloc(gTraceMemStat, mSamples.capacity() * sizeof(SampleAccumulator)); -	claim_alloc(gTraceMemStat, mEvents.capacity() * sizeof(EventAccumulator)); -	claim_alloc(gTraceMemStat, mStackTimers.capacity() * sizeof(TimeBlockAccumulator)); -	claim_alloc(gTraceMemStat, mMemStats.capacity() * sizeof(MemAccumulator)); +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  }  AccumulatorBufferGroup::AccumulatorBufferGroup(const AccumulatorBufferGroup& other)  :	mCounts(other.mCounts),  	mSamples(other.mSamples),  	mEvents(other.mEvents), -	mStackTimers(other.mStackTimers), -	mMemStats(other.mMemStats) +	mStackTimers(other.mStackTimers)  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; -	claim_alloc(gTraceMemStat, mCounts.capacity() * sizeof(CountAccumulator)); -	claim_alloc(gTraceMemStat, mSamples.capacity() * sizeof(SampleAccumulator)); -	claim_alloc(gTraceMemStat, mEvents.capacity() * sizeof(EventAccumulator)); -	claim_alloc(gTraceMemStat, mStackTimers.capacity() * sizeof(TimeBlockAccumulator)); -	claim_alloc(gTraceMemStat, mMemStats.capacity() * sizeof(MemAccumulator)); +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  }  AccumulatorBufferGroup::~AccumulatorBufferGroup()  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; -	disclaim_alloc(gTraceMemStat, mCounts.capacity() * sizeof(CountAccumulator)); -	disclaim_alloc(gTraceMemStat, mSamples.capacity() * sizeof(SampleAccumulator)); -	disclaim_alloc(gTraceMemStat, mEvents.capacity() * sizeof(EventAccumulator)); -	disclaim_alloc(gTraceMemStat, mStackTimers.capacity() * sizeof(TimeBlockAccumulator)); -	disclaim_alloc(gTraceMemStat, mMemStats.capacity() * sizeof(MemAccumulator)); +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  }  void AccumulatorBufferGroup::handOffTo(AccumulatorBufferGroup& other)  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	other.mCounts.reset(&mCounts);  	other.mSamples.reset(&mSamples);  	other.mEvents.reset(&mEvents);  	other.mStackTimers.reset(&mStackTimers); -	other.mMemStats.reset(&mMemStats);  }  void AccumulatorBufferGroup::makeCurrent()  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	mCounts.makeCurrent();  	mSamples.makeCurrent();  	mEvents.makeCurrent();  	mStackTimers.makeCurrent(); -	mMemStats.makeCurrent();  	ThreadRecorder* thread_recorder = get_thread_recorder();  	AccumulatorBuffer<TimeBlockAccumulator>& timer_accumulator_buffer = mStackTimers; @@ -109,12 +88,11 @@ void AccumulatorBufferGroup::makeCurrent()  //static  void AccumulatorBufferGroup::clearCurrent()  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; -	AccumulatorBuffer<CountAccumulator>::clearCurrent();	 +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	AccumulatorBuffer<CountAccumulator>::clearCurrent();  	AccumulatorBuffer<SampleAccumulator>::clearCurrent();  	AccumulatorBuffer<EventAccumulator>::clearCurrent();  	AccumulatorBuffer<TimeBlockAccumulator>::clearCurrent(); -	AccumulatorBuffer<MemAccumulator>::clearCurrent();  }  bool AccumulatorBufferGroup::isCurrent() const @@ -124,44 +102,39 @@ bool AccumulatorBufferGroup::isCurrent() const  void AccumulatorBufferGroup::append( const AccumulatorBufferGroup& other )  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	mCounts.addSamples(other.mCounts, SEQUENTIAL);  	mSamples.addSamples(other.mSamples, SEQUENTIAL);  	mEvents.addSamples(other.mEvents, SEQUENTIAL); -	mMemStats.addSamples(other.mMemStats, SEQUENTIAL);  	mStackTimers.addSamples(other.mStackTimers, SEQUENTIAL);  }  void AccumulatorBufferGroup::merge( const AccumulatorBufferGroup& other)  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	mCounts.addSamples(other.mCounts, NON_SEQUENTIAL);  	mSamples.addSamples(other.mSamples, NON_SEQUENTIAL);  	mEvents.addSamples(other.mEvents, NON_SEQUENTIAL); -	mMemStats.addSamples(other.mMemStats, NON_SEQUENTIAL);  	// for now, hold out timers from merge, need to be displayed per thread  	//mStackTimers.addSamples(other.mStackTimers, NON_SEQUENTIAL);  }  void AccumulatorBufferGroup::reset(AccumulatorBufferGroup* other)  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	mCounts.reset(other ? &other->mCounts : NULL);  	mSamples.reset(other ? &other->mSamples : NULL);  	mEvents.reset(other ? &other->mEvents : NULL);  	mStackTimers.reset(other ? &other->mStackTimers : NULL); -	mMemStats.reset(other ? &other->mMemStats : NULL);  }  void AccumulatorBufferGroup::sync()  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	if (isCurrent())  	{  		F64SecondsImplicit time_stamp = LLTimer::getTotalSeconds(); -  		mSamples.sync(time_stamp); -		mMemStats.sync(time_stamp);  	}  } @@ -197,10 +170,9 @@ F64 SampleAccumulator::mergeSumsOfSquares(const SampleAccumulator& a, const Samp  	return a.getSumOfSquares();  } -  void SampleAccumulator::addSamples( const SampleAccumulator& other, EBufferAppendType append_type )  { -    if (append_type == NON_SEQUENTIAL) +	if (append_type == NON_SEQUENTIAL)  	{  		return;  	} @@ -299,7 +271,7 @@ void EventAccumulator::addSamples( const EventAccumulator& other, EBufferAppendT  void EventAccumulator::reset( const EventAccumulator* other )  { -    mNumSamples = 0; +	mNumSamples = 0;  	mSum = 0;  	mMin = F32(NaN);  	mMax = F32(NaN); @@ -308,5 +280,4 @@ void EventAccumulator::reset( const EventAccumulator* other )  	mLastValue = other ? other->mLastValue : NaN;  } -  } diff --git a/indra/llcommon/lltraceaccumulators.h b/indra/llcommon/lltraceaccumulators.h index 7267a44300..b9d577be9e 100644 --- a/indra/llcommon/lltraceaccumulators.h +++ b/indra/llcommon/lltraceaccumulators.h @@ -1,26 +1,26 @@ -/**  +/**   * @file lltraceaccumulators.h   * @brief Storage for accumulating statistics   *   * $LicenseInfo:firstyear=2001&license=viewerlgpl$   * Second Life Viewer Source Code   * Copyright (C) 2012, 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$   */ @@ -28,7 +28,6 @@  #ifndef LL_LLTRACEACCUMULATORS_H  #define LL_LLTRACEACCUMULATORS_H -  #include "stdtypes.h"  #include "llpreprocessor.h"  #include "llunits.h" @@ -66,7 +65,7 @@ namespace LLTrace  			: mStorageSize(0),  			mStorage(NULL)  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			const AccumulatorBuffer& other = *getDefaultBuffer();  			resize(sNextStorageSlot);  			for (S32 i = 0; i < sNextStorageSlot; i++) @@ -77,7 +76,7 @@ namespace LLTrace  		~AccumulatorBuffer()  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			if (isCurrent())  			{  				LLThreadLocalSingletonPointer<ACCUMULATOR>::setInstance(NULL); @@ -85,14 +84,14 @@ namespace LLTrace  			delete[] mStorage;  		} -		LL_FORCE_INLINE ACCUMULATOR& operator[](size_t index)  -		{  -			return mStorage[index];  +		LL_FORCE_INLINE ACCUMULATOR& operator[](size_t index) +		{ +			return mStorage[index];  		}  		LL_FORCE_INLINE const ACCUMULATOR& operator[](size_t index) const -		{  -			return mStorage[index];  +		{ +			return mStorage[index];  		} @@ -100,7 +99,7 @@ namespace LLTrace  			: mStorageSize(0),  			mStorage(NULL)  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			resize(sNextStorageSlot);  			for (S32 i = 0; i < sNextStorageSlot; i++)  			{ @@ -110,7 +109,7 @@ namespace LLTrace  		void addSamples(const AccumulatorBuffer<ACCUMULATOR>& other, EBufferAppendType append_type)  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			llassert(mStorageSize >= sNextStorageSlot && other.mStorageSize >= sNextStorageSlot);  			for (size_t i = 0; i < sNextStorageSlot; i++)  			{ @@ -120,7 +119,7 @@ namespace LLTrace  		void copyFrom(const AccumulatorBuffer<ACCUMULATOR>& other)  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			llassert(mStorageSize >= sNextStorageSlot && other.mStorageSize >= sNextStorageSlot);  			for (size_t i = 0; i < sNextStorageSlot; i++)  			{ @@ -130,7 +129,7 @@ namespace LLTrace  		void reset(const AccumulatorBuffer<ACCUMULATOR>* other = NULL)  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			llassert(mStorageSize >= sNextStorageSlot);  			for (size_t i = 0; i < sNextStorageSlot; i++)  			{ @@ -140,7 +139,7 @@ namespace LLTrace  		void sync(F64SecondsImplicit time_stamp)  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			llassert(mStorageSize >= sNextStorageSlot);  			for (size_t i = 0; i < sNextStorageSlot; i++)  			{ @@ -160,13 +159,13 @@ namespace LLTrace  		static void clearCurrent()  		{ -            LLThreadLocalSingletonPointer<ACCUMULATOR>::setInstance(NULL); +			LLThreadLocalSingletonPointer<ACCUMULATOR>::setInstance(NULL);  		}  		// NOTE: this is not thread-safe.  We assume that slots are reserved in the main thread before any child threads are spawned  		size_t reserveSlot()  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			size_t next_slot = sNextStorageSlot++;  			if (next_slot >= mStorageSize)  			{ @@ -180,7 +179,7 @@ namespace LLTrace  		void resize(size_t new_size)  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			if (new_size <= mStorageSize) return;  			ACCUMULATOR* old_storage = mStorage; @@ -214,14 +213,14 @@ namespace LLTrace  			return mStorageSize;  		} -		static size_t getNumIndices()  +		static size_t getNumIndices()  		{  			return sNextStorageSlot;  		}  		static self_t* getDefaultBuffer()  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			static bool sInitialized = false;  			if (!sInitialized)  			{ @@ -336,7 +335,7 @@ namespace LLTrace  		void sample(F64 value)  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			F64SecondsImplicit time_stamp = LLTimer::getTotalSeconds();  			// store effect of last value @@ -399,7 +398,7 @@ namespace LLTrace  		F64		mMean,  				mSumOfSquares; -		F64SecondsImplicit	 +		F64SecondsImplicit  				mLastSampleTimeStamp,  				mTotalSamplingTime; @@ -409,7 +408,7 @@ namespace LLTrace  		S32		mNumSamples;  		// distinct from mNumSamples, since we might have inherited a last value from  		// a previous sampling period -		bool	mHasValue;		 +		bool	mHasValue;  	};  	class CountAccumulator @@ -457,14 +456,14 @@ namespace LLTrace  	class alignas(32) TimeBlockAccumulator  	{ -    public: +	public:  		typedef F64Seconds value_t;  		static F64Seconds getDefaultValue() { return F64Seconds(0); }  		typedef TimeBlockAccumulator self_t;  		// fake classes that allows us to view different facets of underlying statistic -		struct CallCountFacet  +		struct CallCountFacet  		{  			typedef S32 value_t;  		}; @@ -515,12 +514,12 @@ namespace LLTrace  		BlockTimerStatHandle* getParent() { return mParent; }  		BlockTimerStatHandle*					mBlock; -		BlockTimerStatHandle*					mParent;	 +		BlockTimerStatHandle*					mParent;  		std::vector<BlockTimerStatHandle*>		mChildren;  		bool						mCollapsed;  		bool						mNeedsSorting;  	}; -	 +  	struct BlockTimerStackRecord  	{  		class BlockTimer*	mActiveTimer; @@ -528,65 +527,6 @@ namespace LLTrace  		U64					mChildTime;  	}; -	struct MemAccumulator -	{ -		typedef F64Bytes value_t; -		static F64Bytes getDefaultValue() { return F64Bytes(0); } - -		typedef MemAccumulator self_t; - -		// fake classes that allows us to view different facets of underlying statistic -		struct AllocationFacet  -		{ -			typedef F64Bytes value_t; -			static F64Bytes getDefaultValue() { return F64Bytes(0); } -		}; - -		struct DeallocationFacet  -		{ -			typedef F64Bytes value_t; -			static F64Bytes getDefaultValue() { return F64Bytes(0); } -		}; - -		void addSamples(const MemAccumulator& other, EBufferAppendType append_type) -		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; -			mAllocations.addSamples(other.mAllocations, append_type); -			mDeallocations.addSamples(other.mDeallocations, append_type); - -			if (append_type == SEQUENTIAL) -			{ -				mSize.addSamples(other.mSize, SEQUENTIAL); -			} -			else -			{ -				F64 allocation_delta(other.mAllocations.getSum() - other.mDeallocations.getSum()); -				mSize.sample(mSize.hasValue()  -					? mSize.getLastValue() + allocation_delta  -					: allocation_delta); -			} -		} - -		void reset(const MemAccumulator* other) -		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; -			mSize.reset(other ? &other->mSize : NULL); -			mAllocations.reset(other ? &other->mAllocations : NULL); -			mDeallocations.reset(other ? &other->mDeallocations : NULL); -		} - -		void sync(F64SecondsImplicit time_stamp)  -		{ -			mSize.sync(time_stamp); -		} - -		bool hasValue() const			 { return mSize.hasValue(); } - -		SampleAccumulator	mSize; -		EventAccumulator	mAllocations; -		CountAccumulator	mDeallocations; -	}; -  	struct AccumulatorBufferGroup : public LLRefCount  	{  		AccumulatorBufferGroup(); @@ -607,9 +547,7 @@ namespace LLTrace  		AccumulatorBuffer<SampleAccumulator>	mSamples;  		AccumulatorBuffer<EventAccumulator>		mEvents;  		AccumulatorBuffer<TimeBlockAccumulator> mStackTimers; -		AccumulatorBuffer<MemAccumulator> 	mMemStats;  	};  }  #endif // LL_LLTRACEACCUMULATORS_H - diff --git a/indra/llcommon/lltracerecording.cpp b/indra/llcommon/lltracerecording.cpp index bb3d667a42..075e7c1d28 100644 --- a/indra/llcommon/lltracerecording.cpp +++ b/indra/llcommon/lltracerecording.cpp @@ -1,24 +1,24 @@ -/**  +/**   * @file lltracesampler.cpp   *   * $LicenseInfo:firstyear=2001&license=viewerlgpl$   * Second Life Viewer Source Code   * Copyright (C) 2012, 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$   */ @@ -32,7 +32,7 @@  #include "lltracethreadrecorder.h"  #include "llthread.h" -inline F64 lerp(F64 a, F64 b, F64 u)  +inline F64 lerp(F64 a, F64 b, F64 u)  {  	return a + ((b - a) * u);  } @@ -40,34 +40,29 @@ inline F64 lerp(F64 a, F64 b, F64 u)  namespace LLTrace  { -extern MemStatHandle gTraceMemStat; -  ///////////////////////////////////////////////////////////////////////  // Recording  /////////////////////////////////////////////////////////////////////// -Recording::Recording(EPlayState state)  +Recording::Recording(EPlayState state)  :	mElapsedSeconds(0),  	mActiveBuffers(NULL)  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; -	claim_alloc(gTraceMemStat, this); +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	mBuffers = new AccumulatorBufferGroup(); -	claim_alloc(gTraceMemStat, mBuffers);  	setPlayState(state);  }  Recording::Recording( const Recording& other )  :	mActiveBuffers(NULL)  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; -	claim_alloc(gTraceMemStat, this); +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	*this = other;  }  Recording& Recording::operator = (const Recording& other)  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	// this will allow us to seamlessly start without affecting any data we've acquired from other  	setPlayState(PAUSED); @@ -85,14 +80,11 @@ Recording& Recording::operator = (const Recording& other)  	return *this;  } -  Recording::~Recording()  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; -	disclaim_alloc(gTraceMemStat, this); -	disclaim_alloc(gTraceMemStat, mBuffers); +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; -	// allow recording destruction without thread recorder running,  +	// allow recording destruction without thread recorder running,  	// otherwise thread shutdown could crash if a recording outlives the thread recorder  	// besides, recording construction and destruction is fine without a recorder...just don't attempt to start one  	if (isStarted() && LLTrace::get_thread_recorder() != NULL) @@ -107,14 +99,14 @@ void Recording::update()  #if LL_TRACE_ENABLED  	if (isStarted())  	{ -        LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +		LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  		mElapsedSeconds += mSamplingTimer.getElapsedTimeF64(); -		// must have  -		llassert(mActiveBuffers != NULL  +		// must have +		llassert(mActiveBuffers != NULL  				&& LLTrace::get_thread_recorder() != NULL); -		if(!mActiveBuffers->isCurrent() && LLTrace::get_thread_recorder() != NULL) +		if (!mActiveBuffers->isCurrent() && LLTrace::get_thread_recorder() != NULL)  		{  			AccumulatorBufferGroup* buffers = mBuffers.write();  			LLTrace::get_thread_recorder()->deactivate(buffers); @@ -128,7 +120,7 @@ void Recording::update()  void Recording::handleReset()  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  #if LL_TRACE_ENABLED  	mBuffers.write()->reset(); @@ -139,7 +131,7 @@ void Recording::handleReset()  void Recording::handleStart()  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  #if LL_TRACE_ENABLED  	mSamplingTimer.reset();  	mBuffers.setStayUnique(true); @@ -151,7 +143,7 @@ void Recording::handleStart()  void Recording::handleStop()  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  #if LL_TRACE_ENABLED  	mElapsedSeconds += mSamplingTimer.getElapsedTimeF64();  	// must have thread recorder running on this thread @@ -204,7 +196,6 @@ F64Seconds Recording::getSum(const StatType<TimeBlockAccumulator::SelfTimeFacet>  	return F64Seconds(((F64)(accumulator.mSelfTimeCounter) + (F64)(active_accumulator ? active_accumulator->mSelfTimeCounter : 0)) / (F64)LLTrace::BlockTimer::countsPerSecond());  } -  S32 Recording::getSum(const StatType<TimeBlockAccumulator::CallCountFacet>& stat)  {  	update(); @@ -219,7 +210,7 @@ F64Seconds Recording::getPerSec(const StatType<TimeBlockAccumulator>& stat)  	const TimeBlockAccumulator& accumulator = mBuffers->mStackTimers[stat.getIndex()];  	const TimeBlockAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mStackTimers[stat.getIndex()] : NULL; -	return F64Seconds((F64)(accumulator.mTotalTimeCounter + (active_accumulator ? active_accumulator->mTotalTimeCounter : 0))  +	return F64Seconds((F64)(accumulator.mTotalTimeCounter + (active_accumulator ? active_accumulator->mTotalTimeCounter : 0))  				/ ((F64)LLTrace::BlockTimer::countsPerSecond() * mElapsedSeconds.value()));  } @@ -241,144 +232,9 @@ F32 Recording::getPerSec(const StatType<TimeBlockAccumulator::CallCountFacet>& s  	return (F32)(accumulator.mCalls + (active_accumulator ? active_accumulator->mCalls : 0)) / mElapsedSeconds.value();  } -bool Recording::hasValue(const StatType<MemAccumulator>& stat) -{ -	update(); -	const MemAccumulator& accumulator = mBuffers->mMemStats[stat.getIndex()]; -	const MemAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mMemStats[stat.getIndex()] : NULL; -	return accumulator.mSize.hasValue() || (active_accumulator && active_accumulator->mSize.hasValue() ? active_accumulator->mSize.hasValue() : false); -} - -F64Kilobytes Recording::getMin(const StatType<MemAccumulator>& stat) -{ -	update(); -	const MemAccumulator& accumulator = mBuffers->mMemStats[stat.getIndex()]; -	const MemAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mMemStats[stat.getIndex()] : NULL; -	return F64Bytes(llmin(accumulator.mSize.getMin(), (active_accumulator && active_accumulator->mSize.hasValue() ? active_accumulator->mSize.getMin() : F32_MAX))); -} - -F64Kilobytes Recording::getMean(const StatType<MemAccumulator>& stat) -{ -	update(); -	const MemAccumulator& accumulator = mBuffers->mMemStats[stat.getIndex()]; -	const MemAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mMemStats[stat.getIndex()] : NULL; -	 -	if (active_accumulator && active_accumulator->mSize.hasValue()) -	{ -        F32 t = 0.0f; -        S32 div = accumulator.mSize.getSampleCount() + active_accumulator->mSize.getSampleCount(); -        if (div > 0) -        { -            t = active_accumulator->mSize.getSampleCount() / div; -        } -		return F64Bytes(lerp(accumulator.mSize.getMean(), active_accumulator->mSize.getMean(), t)); -	} -	else -	{ -		return F64Bytes(accumulator.mSize.getMean()); -	} -} - -F64Kilobytes Recording::getMax(const StatType<MemAccumulator>& stat) -{ -    update(); -	const MemAccumulator& accumulator = mBuffers->mMemStats[stat.getIndex()]; -	const MemAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mMemStats[stat.getIndex()] : NULL; -	return F64Bytes(llmax(accumulator.mSize.getMax(), active_accumulator && active_accumulator->mSize.hasValue() ? active_accumulator->mSize.getMax() : F32_MIN)); -} - -F64Kilobytes Recording::getStandardDeviation(const StatType<MemAccumulator>& stat) -{ -    update(); -	const MemAccumulator& accumulator = mBuffers->mMemStats[stat.getIndex()]; -	const MemAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mMemStats[stat.getIndex()] : NULL; -	if (active_accumulator && active_accumulator->hasValue()) -	{ -		F64 sum_of_squares = SampleAccumulator::mergeSumsOfSquares(accumulator.mSize, active_accumulator->mSize); -		return F64Bytes(sqrtf(sum_of_squares / (accumulator.mSize.getSamplingTime().value() + active_accumulator->mSize.getSamplingTime().value()))); -	} -	else -	{ -		return F64Bytes(accumulator.mSize.getStandardDeviation()); -	} -} - -F64Kilobytes Recording::getLastValue(const StatType<MemAccumulator>& stat) -{ -    update(); -	const MemAccumulator& accumulator = mBuffers->mMemStats[stat.getIndex()]; -	const MemAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mMemStats[stat.getIndex()] : NULL; -	return F64Bytes(active_accumulator ? active_accumulator->mSize.getLastValue() : accumulator.mSize.getLastValue()); -} - -bool Recording::hasValue(const StatType<MemAccumulator::AllocationFacet>& stat) -{ -    update(); -	const MemAccumulator& accumulator = mBuffers->mMemStats[stat.getIndex()]; -	const MemAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mMemStats[stat.getIndex()] : NULL; -	return accumulator.mAllocations.hasValue() || (active_accumulator ? active_accumulator->mAllocations.hasValue() : false); -} - -F64Kilobytes Recording::getSum(const StatType<MemAccumulator::AllocationFacet>& stat) -{ -    update(); -	const MemAccumulator& accumulator = mBuffers->mMemStats[stat.getIndex()]; -	const MemAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mMemStats[stat.getIndex()] : NULL; -	return F64Bytes(accumulator.mAllocations.getSum() + (active_accumulator ? active_accumulator->mAllocations.getSum() : 0)); -} - -F64Kilobytes Recording::getPerSec(const StatType<MemAccumulator::AllocationFacet>& stat) -{ -    update(); -	const MemAccumulator& accumulator = mBuffers->mMemStats[stat.getIndex()]; -	const MemAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mMemStats[stat.getIndex()] : NULL; -	return F64Bytes((accumulator.mAllocations.getSum() + (active_accumulator ? active_accumulator->mAllocations.getSum() : 0)) / mElapsedSeconds.value()); -} - -S32 Recording::getSampleCount(const StatType<MemAccumulator::AllocationFacet>& stat) -{ -    update(); -	const MemAccumulator& accumulator = mBuffers->mMemStats[stat.getIndex()]; -	const MemAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mMemStats[stat.getIndex()] : NULL; -	return accumulator.mAllocations.getSampleCount() + (active_accumulator ? active_accumulator->mAllocations.getSampleCount() : 0); -} - -bool Recording::hasValue(const StatType<MemAccumulator::DeallocationFacet>& stat) -{ -    update(); -	const MemAccumulator& accumulator = mBuffers->mMemStats[stat.getIndex()]; -	const MemAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mMemStats[stat.getIndex()] : NULL; -	return accumulator.mDeallocations.hasValue() || (active_accumulator ? active_accumulator->mDeallocations.hasValue() : false); -} - - -F64Kilobytes Recording::getSum(const StatType<MemAccumulator::DeallocationFacet>& stat) -{ -    update(); -	const MemAccumulator& accumulator = mBuffers->mMemStats[stat.getIndex()]; -	const MemAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mMemStats[stat.getIndex()] : NULL; -	return F64Bytes(accumulator.mDeallocations.getSum() + (active_accumulator ? active_accumulator->mDeallocations.getSum() : 0)); -} - -F64Kilobytes Recording::getPerSec(const StatType<MemAccumulator::DeallocationFacet>& stat) -{ -    update(); -	const MemAccumulator& accumulator = mBuffers->mMemStats[stat.getIndex()]; -	const MemAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mMemStats[stat.getIndex()] : NULL; -	return F64Bytes((accumulator.mDeallocations.getSum() + (active_accumulator ? active_accumulator->mDeallocations.getSum() : 0)) / mElapsedSeconds.value()); -} - -S32 Recording::getSampleCount(const StatType<MemAccumulator::DeallocationFacet>& stat) -{ -    update(); -	const MemAccumulator& accumulator = mBuffers->mMemStats[stat.getIndex()]; -	const MemAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mMemStats[stat.getIndex()] : NULL; -	return accumulator.mDeallocations.getSampleCount() + (active_accumulator ? active_accumulator->mDeallocations.getSampleCount() : 0); -} -  bool Recording::hasValue(const StatType<CountAccumulator>& stat)  { -    update(); +	update();  	const CountAccumulator& accumulator = mBuffers->mCounts[stat.getIndex()];  	const CountAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mCounts[stat.getIndex()] : NULL;  	return accumulator.hasValue() || (active_accumulator ? active_accumulator->hasValue() : false); @@ -386,7 +242,7 @@ bool Recording::hasValue(const StatType<CountAccumulator>& stat)  F64 Recording::getSum(const StatType<CountAccumulator>& stat)  { -    update(); +	update();  	const CountAccumulator& accumulator = mBuffers->mCounts[stat.getIndex()];  	const CountAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mCounts[stat.getIndex()] : NULL;  	return accumulator.getSum() + (active_accumulator ? active_accumulator->getSum() : 0); @@ -394,7 +250,7 @@ F64 Recording::getSum(const StatType<CountAccumulator>& stat)  F64 Recording::getPerSec( const StatType<CountAccumulator>& stat )  { -    update(); +	update();  	const CountAccumulator& accumulator = mBuffers->mCounts[stat.getIndex()];  	const CountAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mCounts[stat.getIndex()] : NULL;  	F64 sum = accumulator.getSum() + (active_accumulator ? active_accumulator->getSum() : 0); @@ -403,7 +259,7 @@ F64 Recording::getPerSec( const StatType<CountAccumulator>& stat )  S32 Recording::getSampleCount( const StatType<CountAccumulator>& stat )  { -    update(); +	update();  	const CountAccumulator& accumulator = mBuffers->mCounts[stat.getIndex()];  	const CountAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mCounts[stat.getIndex()] : NULL;  	return accumulator.getSampleCount() + (active_accumulator ? active_accumulator->getSampleCount() : 0); @@ -411,7 +267,7 @@ S32 Recording::getSampleCount( const StatType<CountAccumulator>& stat )  bool Recording::hasValue(const StatType<SampleAccumulator>& stat)  { -    update(); +	update();  	const SampleAccumulator& accumulator = mBuffers->mSamples[stat.getIndex()];  	const SampleAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mSamples[stat.getIndex()] : NULL;  	return accumulator.hasValue() || (active_accumulator && active_accumulator->hasValue()); @@ -419,7 +275,7 @@ bool Recording::hasValue(const StatType<SampleAccumulator>& stat)  F64 Recording::getMin( const StatType<SampleAccumulator>& stat )  { -    update(); +	update();  	const SampleAccumulator& accumulator = mBuffers->mSamples[stat.getIndex()];  	const SampleAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mSamples[stat.getIndex()] : NULL;  	return llmin(accumulator.getMin(), active_accumulator && active_accumulator->hasValue() ? active_accumulator->getMin() : F32_MAX); @@ -427,7 +283,7 @@ F64 Recording::getMin( const StatType<SampleAccumulator>& stat )  F64 Recording::getMax( const StatType<SampleAccumulator>& stat )  { -    update(); +	update();  	const SampleAccumulator& accumulator = mBuffers->mSamples[stat.getIndex()];  	const SampleAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mSamples[stat.getIndex()] : NULL;  	return llmax(accumulator.getMax(), active_accumulator && active_accumulator->hasValue() ? active_accumulator->getMax() : F32_MIN); @@ -435,17 +291,17 @@ F64 Recording::getMax( const StatType<SampleAccumulator>& stat )  F64 Recording::getMean( const StatType<SampleAccumulator>& stat )  { -    update(); +	update();  	const SampleAccumulator& accumulator = mBuffers->mSamples[stat.getIndex()];  	const SampleAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mSamples[stat.getIndex()] : NULL;  	if (active_accumulator && active_accumulator->hasValue())  	{ -        F32 t = 0.0f; -        S32 div = accumulator.getSampleCount() + active_accumulator->getSampleCount(); -        if (div > 0) -        { -            t = active_accumulator->getSampleCount() / div; -        } +		F32 t = 0.0f; +		S32 div = accumulator.getSampleCount() + active_accumulator->getSampleCount(); +		if (div > 0) +		{ +			t = active_accumulator->getSampleCount() / div; +		}  		return lerp(accumulator.getMean(), active_accumulator->getMean(), t);  	}  	else @@ -456,7 +312,7 @@ F64 Recording::getMean( const StatType<SampleAccumulator>& stat )  F64 Recording::getStandardDeviation( const StatType<SampleAccumulator>& stat )  { -    update(); +	update();  	const SampleAccumulator& accumulator = mBuffers->mSamples[stat.getIndex()];  	const SampleAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mSamples[stat.getIndex()] : NULL; @@ -473,7 +329,7 @@ F64 Recording::getStandardDeviation( const StatType<SampleAccumulator>& stat )  F64 Recording::getLastValue( const StatType<SampleAccumulator>& stat )  { -    update(); +	update();  	const SampleAccumulator& accumulator = mBuffers->mSamples[stat.getIndex()];  	const SampleAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mSamples[stat.getIndex()] : NULL;  	return (active_accumulator && active_accumulator->hasValue() ? active_accumulator->getLastValue() : accumulator.getLastValue()); @@ -481,7 +337,7 @@ F64 Recording::getLastValue( const StatType<SampleAccumulator>& stat )  S32 Recording::getSampleCount( const StatType<SampleAccumulator>& stat )  { -    update(); +	update();  	const SampleAccumulator& accumulator = mBuffers->mSamples[stat.getIndex()];  	const SampleAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mSamples[stat.getIndex()] : NULL;  	return accumulator.getSampleCount() + (active_accumulator && active_accumulator->hasValue() ? active_accumulator->getSampleCount() : 0); @@ -489,7 +345,7 @@ S32 Recording::getSampleCount( const StatType<SampleAccumulator>& stat )  bool Recording::hasValue(const StatType<EventAccumulator>& stat)  { -    update(); +	update();  	const EventAccumulator& accumulator = mBuffers->mEvents[stat.getIndex()];  	const EventAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mEvents[stat.getIndex()] : NULL;  	return accumulator.hasValue() || (active_accumulator && active_accumulator->hasValue()); @@ -497,7 +353,7 @@ bool Recording::hasValue(const StatType<EventAccumulator>& stat)  F64 Recording::getSum( const StatType<EventAccumulator>& stat)  { -    update(); +	update();  	const EventAccumulator& accumulator = mBuffers->mEvents[stat.getIndex()];  	const EventAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mEvents[stat.getIndex()] : NULL;  	return (F64)(accumulator.getSum() + (active_accumulator && active_accumulator->hasValue() ? active_accumulator->getSum() : 0)); @@ -505,7 +361,7 @@ F64 Recording::getSum( const StatType<EventAccumulator>& stat)  F64 Recording::getMin( const StatType<EventAccumulator>& stat )  { -    update(); +	update();  	const EventAccumulator& accumulator = mBuffers->mEvents[stat.getIndex()];  	const EventAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mEvents[stat.getIndex()] : NULL;  	return llmin(accumulator.getMin(), active_accumulator && active_accumulator->hasValue() ? active_accumulator->getMin() : F32_MAX); @@ -513,7 +369,7 @@ F64 Recording::getMin( const StatType<EventAccumulator>& stat )  F64 Recording::getMax( const StatType<EventAccumulator>& stat )  { -    update(); +	update();  	const EventAccumulator& accumulator = mBuffers->mEvents[stat.getIndex()];  	const EventAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mEvents[stat.getIndex()] : NULL;  	return llmax(accumulator.getMax(), active_accumulator && active_accumulator->hasValue() ? active_accumulator->getMax() : F32_MIN); @@ -521,17 +377,17 @@ F64 Recording::getMax( const StatType<EventAccumulator>& stat )  F64 Recording::getMean( const StatType<EventAccumulator>& stat )  { -    update(); +	update();  	const EventAccumulator& accumulator = mBuffers->mEvents[stat.getIndex()];  	const EventAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mEvents[stat.getIndex()] : NULL;  	if (active_accumulator && active_accumulator->hasValue())  	{  		F32 t = 0.0f; -        S32 div = accumulator.getSampleCount() + active_accumulator->getSampleCount(); -        if (div > 0) -        { -            t = active_accumulator->getSampleCount() / div; -        } +		S32 div = accumulator.getSampleCount() + active_accumulator->getSampleCount(); +		if (div > 0) +		{ +			t = active_accumulator->getSampleCount() / div; +		}  		return lerp(accumulator.getMean(), active_accumulator->getMean(), t);  	}  	else @@ -542,7 +398,7 @@ F64 Recording::getMean( const StatType<EventAccumulator>& stat )  F64 Recording::getStandardDeviation( const StatType<EventAccumulator>& stat )  { -    update(); +	update();  	const EventAccumulator& accumulator = mBuffers->mEvents[stat.getIndex()];  	const EventAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mEvents[stat.getIndex()] : NULL; @@ -559,7 +415,7 @@ F64 Recording::getStandardDeviation( const StatType<EventAccumulator>& stat )  F64 Recording::getLastValue( const StatType<EventAccumulator>& stat )  { -    update(); +	update();  	const EventAccumulator& accumulator = mBuffers->mEvents[stat.getIndex()];  	const EventAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mEvents[stat.getIndex()] : NULL;  	return active_accumulator ? active_accumulator->getLastValue() : accumulator.getLastValue(); @@ -567,7 +423,7 @@ F64 Recording::getLastValue( const StatType<EventAccumulator>& stat )  S32 Recording::getSampleCount( const StatType<EventAccumulator>& stat )  { -    update(); +	update();  	const EventAccumulator& accumulator = mBuffers->mEvents[stat.getIndex()];  	const EventAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mEvents[stat.getIndex()] : NULL;  	return accumulator.getSampleCount() + (active_accumulator ? active_accumulator->getSampleCount() : 0); @@ -577,7 +433,7 @@ S32 Recording::getSampleCount( const StatType<EventAccumulator>& stat )  // PeriodicRecording  /////////////////////////////////////////////////////////////////////// -PeriodicRecording::PeriodicRecording( size_t num_periods, EPlayState state)  +PeriodicRecording::PeriodicRecording( size_t num_periods, EPlayState state)  :	mAutoResize(num_periods == 0),  	mCurPeriod(0),  	mNumRecordedPeriods(0), @@ -585,15 +441,13 @@ PeriodicRecording::PeriodicRecording( size_t num_periods, EPlayState state)  	// code in several methods.  	mRecordingPeriods(num_periods ? num_periods : 1)  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	setPlayState(state); -	claim_alloc(gTraceMemStat, this);  }  PeriodicRecording::~PeriodicRecording()  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; -	disclaim_alloc(gTraceMemStat, this); +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  }  void PeriodicRecording::nextPeriod() @@ -615,12 +469,11 @@ void PeriodicRecording::nextPeriod()  void PeriodicRecording::appendRecording(Recording& recording)  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	getCurRecording().appendRecording(recording);  	nextPeriod();  } -  void PeriodicRecording::appendPeriodicRecording( PeriodicRecording& other )  {  	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; @@ -693,16 +546,14 @@ F64Seconds PeriodicRecording::getDuration() const  	return duration;  } -  LLTrace::Recording PeriodicRecording::snapshotCurRecording() const  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	Recording recording_copy(getCurRecording());  	recording_copy.stop();  	return recording_copy;  } -  Recording& PeriodicRecording::getLastRecording()  {  	return getPrevRecording(1); @@ -737,19 +588,19 @@ const Recording& PeriodicRecording::getPrevRecording( size_t offset ) const  void PeriodicRecording::handleStart()  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	getCurRecording().start();  }  void PeriodicRecording::handleStop()  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	getCurRecording().pause();  }  void PeriodicRecording::handleReset()  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	getCurRecording().stop();  	if (mAutoResize) @@ -771,13 +622,13 @@ void PeriodicRecording::handleReset()  void PeriodicRecording::handleSplitTo(PeriodicRecording& other)  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	getCurRecording().splitTo(other.getCurRecording());  }  F64 PeriodicRecording::getPeriodMin( const StatType<EventAccumulator>& stat, size_t num_periods /*= std::numeric_limits<size_t>::max()*/ )  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	num_periods = llmin(num_periods, getNumRecordedPeriods());  	bool has_value = false; @@ -792,14 +643,14 @@ F64 PeriodicRecording::getPeriodMin( const StatType<EventAccumulator>& stat, siz  		}  	} -	return has_value  -			? min_val  +	return has_value +			? min_val  			: NaN;  }  F64 PeriodicRecording::getPeriodMax( const StatType<EventAccumulator>& stat, size_t num_periods /*= std::numeric_limits<size_t>::max()*/ )  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	num_periods = llmin(num_periods, getNumRecordedPeriods());  	bool has_value = false; @@ -814,15 +665,15 @@ F64 PeriodicRecording::getPeriodMax( const StatType<EventAccumulator>& stat, siz  		}  	} -	return has_value  -			? max_val  +	return has_value +			? max_val  			: NaN;  }  // calculates means using aggregates per period  F64 PeriodicRecording::getPeriodMean( const StatType<EventAccumulator>& stat, size_t num_periods /*= std::numeric_limits<size_t>::max()*/ )  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	num_periods = llmin(num_periods, getNumRecordedPeriods());  	F64 mean = 0; @@ -838,14 +689,14 @@ F64 PeriodicRecording::getPeriodMean( const StatType<EventAccumulator>& stat, si  		}  	} -	return valid_period_count  +	return valid_period_count  			? mean / (F64)valid_period_count  			: NaN;  }  F64 PeriodicRecording::getPeriodStandardDeviation( const StatType<EventAccumulator>& stat, size_t num_periods /*= std::numeric_limits<size_t>::max()*/ )  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	num_periods = llmin(num_periods, getNumRecordedPeriods());  	F64 period_mean = getPeriodMean(stat, num_periods); @@ -870,7 +721,7 @@ F64 PeriodicRecording::getPeriodStandardDeviation( const StatType<EventAccumulat  F64 PeriodicRecording::getPeriodMin( const StatType<SampleAccumulator>& stat, size_t num_periods /*= std::numeric_limits<size_t>::max()*/ )  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	num_periods = llmin(num_periods, getNumRecordedPeriods());  	bool has_value = false; @@ -885,14 +736,14 @@ F64 PeriodicRecording::getPeriodMin( const StatType<SampleAccumulator>& stat, si  		}  	} -	return has_value  -			? min_val  +	return has_value +			? min_val  			: NaN;  }  F64 PeriodicRecording::getPeriodMax(const StatType<SampleAccumulator>& stat, size_t num_periods /*= std::numeric_limits<size_t>::max()*/)  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	num_periods = llmin(num_periods, getNumRecordedPeriods());  	bool has_value = false; @@ -907,15 +758,15 @@ F64 PeriodicRecording::getPeriodMax(const StatType<SampleAccumulator>& stat, siz  		}  	} -	return has_value  -			? max_val  +	return has_value +			? max_val  			: NaN;  }  F64 PeriodicRecording::getPeriodMean( const StatType<SampleAccumulator>& stat, size_t num_periods /*= std::numeric_limits<size_t>::max()*/ )  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	num_periods = llmin(num_periods, getNumRecordedPeriods());  	S32 valid_period_count = 0; @@ -938,7 +789,7 @@ F64 PeriodicRecording::getPeriodMean( const StatType<SampleAccumulator>& stat, s  F64 PeriodicRecording::getPeriodMedian( const StatType<SampleAccumulator>& stat, size_t num_periods /*= std::numeric_limits<size_t>::max()*/ )  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	num_periods = llmin(num_periods, getNumRecordedPeriods());  	std::vector<F64> buf; @@ -964,7 +815,7 @@ F64 PeriodicRecording::getPeriodMedian( const StatType<SampleAccumulator>& stat,  F64 PeriodicRecording::getPeriodStandardDeviation( const StatType<SampleAccumulator>& stat, size_t num_periods /*= std::numeric_limits<size_t>::max()*/ )  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	num_periods = llmin(num_periods, getNumRecordedPeriods());  	F64 period_mean = getPeriodMean(stat, num_periods); @@ -987,105 +838,13 @@ F64 PeriodicRecording::getPeriodStandardDeviation( const StatType<SampleAccumula  			: NaN;  } - -F64Kilobytes PeriodicRecording::getPeriodMin( const StatType<MemAccumulator>& stat, size_t num_periods /*= std::numeric_limits<size_t>::max()*/ ) -{ -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; -	num_periods = llmin(num_periods, getNumRecordedPeriods()); - -	F64Kilobytes min_val(std::numeric_limits<F64>::max()); -	for (size_t i = 1; i <= num_periods; i++) -	{ -		Recording& recording = getPrevRecording(i); -		min_val = llmin(min_val, recording.getMin(stat)); -	} - -	return min_val; -} - -F64Kilobytes PeriodicRecording::getPeriodMin(const MemStatHandle& stat, size_t num_periods) -{ -	return getPeriodMin(static_cast<const StatType<MemAccumulator>&>(stat), num_periods); -} - -F64Kilobytes PeriodicRecording::getPeriodMax(const StatType<MemAccumulator>& stat, size_t num_periods /*= std::numeric_limits<size_t>::max()*/) -{ -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; -	num_periods = llmin(num_periods, getNumRecordedPeriods()); - -	F64Kilobytes max_val(0.0); -	for (size_t i = 1; i <= num_periods; i++) -	{ -		Recording& recording = getPrevRecording(i); -		max_val = llmax(max_val, recording.getMax(stat)); -	} - -	return max_val; -} - -F64Kilobytes PeriodicRecording::getPeriodMax(const MemStatHandle& stat, size_t num_periods) -{ -	return getPeriodMax(static_cast<const StatType<MemAccumulator>&>(stat), num_periods); -} - -F64Kilobytes PeriodicRecording::getPeriodMean( const StatType<MemAccumulator>& stat, size_t num_periods /*= std::numeric_limits<size_t>::max()*/ ) -{ -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; -	num_periods = llmin(num_periods, getNumRecordedPeriods()); - -	F64Kilobytes mean(0); - -	for (size_t i = 1; i <= num_periods; i++) -	{ -		Recording& recording = getPrevRecording(i); -		mean += recording.getMean(stat); -	} - -	return mean / F64(num_periods); -} - -F64Kilobytes PeriodicRecording::getPeriodMean(const MemStatHandle& stat, size_t num_periods) -{ -	return getPeriodMean(static_cast<const StatType<MemAccumulator>&>(stat), num_periods); -} - -F64Kilobytes PeriodicRecording::getPeriodStandardDeviation( const StatType<MemAccumulator>& stat, size_t num_periods /*= std::numeric_limits<size_t>::max()*/ ) -{ -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; -	num_periods = llmin(num_periods, getNumRecordedPeriods()); - -	F64Kilobytes period_mean = getPeriodMean(stat, num_periods); -	S32 valid_period_count = 0; -	F64 sum_of_squares = 0; - -	for (size_t i = 1; i <= num_periods; i++) -	{ -		Recording& recording = getPrevRecording(i); -		if (recording.hasValue(stat)) -		{ -			F64Kilobytes delta = recording.getMean(stat) - period_mean; -			sum_of_squares += delta.value() * delta.value(); -			valid_period_count++; -		} -	} - -	return F64Kilobytes(valid_period_count -			? sqrt(sum_of_squares / (F64)valid_period_count) -			: NaN); -} - -F64Kilobytes PeriodicRecording::getPeriodStandardDeviation(const MemStatHandle& stat, size_t num_periods) -{ -	return getPeriodStandardDeviation(static_cast<const StatType<MemAccumulator>&>(stat), num_periods); -} -  ///////////////////////////////////////////////////////////////////////  // ExtendableRecording  ///////////////////////////////////////////////////////////////////////  void ExtendableRecording::extend()  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	// push the data back to accepted recording  	mAcceptedRecording.appendRecording(mPotentialRecording);  	// flush data, so we can start from scratch @@ -1094,76 +853,72 @@ void ExtendableRecording::extend()  void ExtendableRecording::handleStart()  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	mPotentialRecording.start();  }  void ExtendableRecording::handleStop()  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	mPotentialRecording.pause();  }  void ExtendableRecording::handleReset()  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	mAcceptedRecording.reset();  	mPotentialRecording.reset();  }  void ExtendableRecording::handleSplitTo(ExtendableRecording& other)  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	mPotentialRecording.splitTo(other.mPotentialRecording);  } -  ///////////////////////////////////////////////////////////////////////  // ExtendablePeriodicRecording  /////////////////////////////////////////////////////////////////////// - -ExtendablePeriodicRecording::ExtendablePeriodicRecording()  -:	mAcceptedRecording(0),  +ExtendablePeriodicRecording::ExtendablePeriodicRecording() +:	mAcceptedRecording(0),  	mPotentialRecording(0)  {}  void ExtendablePeriodicRecording::extend()  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	// push the data back to accepted recording  	mAcceptedRecording.appendPeriodicRecording(mPotentialRecording);  	// flush data, so we can start from scratch  	mPotentialRecording.reset();  } -  void ExtendablePeriodicRecording::handleStart()  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	mPotentialRecording.start();  }  void ExtendablePeriodicRecording::handleStop()  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	mPotentialRecording.pause();  }  void ExtendablePeriodicRecording::handleReset()  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	mAcceptedRecording.reset();  	mPotentialRecording.reset();  }  void ExtendablePeriodicRecording::handleSplitTo(ExtendablePeriodicRecording& other)  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	mPotentialRecording.splitTo(other.mPotentialRecording);  } -  PeriodicRecording& get_frame_recording()  {  	static thread_local PeriodicRecording sRecording(200, PeriodicRecording::STARTED); @@ -1174,7 +929,7 @@ PeriodicRecording& get_frame_recording()  void LLStopWatchControlsMixinCommon::start()  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	switch (mPlayState)  	{  	case STOPPED: @@ -1196,7 +951,7 @@ void LLStopWatchControlsMixinCommon::start()  void LLStopWatchControlsMixinCommon::stop()  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	switch (mPlayState)  	{  	case STOPPED: @@ -1216,7 +971,7 @@ void LLStopWatchControlsMixinCommon::stop()  void LLStopWatchControlsMixinCommon::pause()  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	switch (mPlayState)  	{  	case STOPPED: @@ -1236,7 +991,7 @@ void LLStopWatchControlsMixinCommon::pause()  void LLStopWatchControlsMixinCommon::unpause()  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	switch (mPlayState)  	{  	case STOPPED: @@ -1256,7 +1011,7 @@ void LLStopWatchControlsMixinCommon::unpause()  void LLStopWatchControlsMixinCommon::resume()  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	switch (mPlayState)  	{  	case STOPPED: @@ -1277,7 +1032,7 @@ void LLStopWatchControlsMixinCommon::resume()  void LLStopWatchControlsMixinCommon::restart()  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	switch (mPlayState)  	{  	case STOPPED: @@ -1301,13 +1056,13 @@ void LLStopWatchControlsMixinCommon::restart()  void LLStopWatchControlsMixinCommon::reset()  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	handleReset();  }  void LLStopWatchControlsMixinCommon::setPlayState( EPlayState state )  { -    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  	switch(state)  	{  	case STOPPED: diff --git a/indra/llcommon/lltracerecording.h b/indra/llcommon/lltracerecording.h index a6b1a67d02..61b9096ae2 100644 --- a/indra/llcommon/lltracerecording.h +++ b/indra/llcommon/lltracerecording.h @@ -1,25 +1,25 @@ -/**  +/**   * @file lltracerecording.h   * @brief Sampling object for collecting runtime statistics originating from lltrace.   *   * $LicenseInfo:firstyear=2001&license=viewerlgpl$   * Second Life Viewer Source Code   * Copyright (C) 2012, 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$   */ @@ -112,7 +112,6 @@ private:  	// atomically stop this object while starting the other  	// no data can be missed in between stop and start  	virtual void handleSplitTo(DERIVED& other) {}; -  };  namespace LLTrace @@ -129,8 +128,6 @@ namespace LLTrace  	template<typename T>  	class EventStatHandle; -	class MemStatHandle; -  	template<typename T>  	struct RelatedTypes  	{ @@ -152,7 +149,7 @@ namespace LLTrace  		typedef S32 sum_t;  	}; -	class Recording  +	class Recording  	:	public LLStopWatchControlsMixin<Recording>  	{  	public: @@ -182,24 +179,6 @@ namespace LLTrace  		F64Seconds getPerSec(const StatType<TimeBlockAccumulator::SelfTimeFacet>& stat);  		F32 getPerSec(const StatType<TimeBlockAccumulator::CallCountFacet>& stat); -		// Memory accessors -		bool hasValue(const StatType<MemAccumulator>& stat); -		F64Kilobytes getMin(const StatType<MemAccumulator>& stat); -		F64Kilobytes getMean(const StatType<MemAccumulator>& stat); -		F64Kilobytes getMax(const StatType<MemAccumulator>& stat); -		F64Kilobytes getStandardDeviation(const StatType<MemAccumulator>& stat); -		F64Kilobytes getLastValue(const StatType<MemAccumulator>& stat); - -		bool hasValue(const StatType<MemAccumulator::AllocationFacet>& stat); -		F64Kilobytes getSum(const StatType<MemAccumulator::AllocationFacet>& stat); -		F64Kilobytes getPerSec(const StatType<MemAccumulator::AllocationFacet>& stat); -		S32 getSampleCount(const StatType<MemAccumulator::AllocationFacet>& stat); - -		bool hasValue(const StatType<MemAccumulator::DeallocationFacet>& stat); -		F64Kilobytes getSum(const StatType<MemAccumulator::DeallocationFacet>& stat); -		F64Kilobytes getPerSec(const StatType<MemAccumulator::DeallocationFacet>& stat); -		S32 getSampleCount(const StatType<MemAccumulator::DeallocationFacet>& stat); -  		// CountStatHandle accessors  		bool hasValue(const StatType<CountAccumulator>& stat);  		F64 getSum(const StatType<CountAccumulator>& stat); @@ -318,7 +297,7 @@ namespace LLTrace  		/*virtual*/ void handleSplitTo(Recording& other);  		// returns data for current thread -		class ThreadRecorder* getThreadRecorder();  +		class ThreadRecorder* getThreadRecorder();  		LLTimer											mSamplingTimer;  		F64Seconds										mElapsedSeconds; @@ -335,10 +314,10 @@ namespace LLTrace  		~PeriodicRecording();  		void nextPeriod(); -		auto getNumRecordedPeriods()  -		{  +		auto getNumRecordedPeriods() +		{  			// current period counts if not active -			return mNumRecordedPeriods + (isStarted() ? 0 : 1);  +			return mNumRecordedPeriods + (isStarted() ? 0 : 1);  		}  		F64Seconds getDuration() const; @@ -367,7 +346,7 @@ namespace LLTrace  			}  			return num_samples;  		} -         +  		//  		// PERIODIC MIN  		// @@ -376,7 +355,7 @@ namespace LLTrace  		template <typename T>  		typename T::value_t getPeriodMin(const StatType<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			num_periods = llmin(num_periods, getNumRecordedPeriods());  			bool has_value = false; @@ -391,15 +370,15 @@ namespace LLTrace  				}  			} -			return has_value  -				? min_val  +			return has_value +				? min_val  				: T::getDefaultValue();  		}  		template<typename T>  		T getPeriodMin(const CountStatHandle<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			return T(getPeriodMin(static_cast<const StatType<CountAccumulator>&>(stat), num_periods));  		} @@ -407,7 +386,7 @@ namespace LLTrace  		template<typename T>  		T getPeriodMin(const SampleStatHandle<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			return T(getPeriodMin(static_cast<const StatType<SampleAccumulator>&>(stat), num_periods));  		} @@ -415,17 +394,14 @@ namespace LLTrace  		template<typename T>  		T getPeriodMin(const EventStatHandle<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			return T(getPeriodMin(static_cast<const StatType<EventAccumulator>&>(stat), num_periods));  		} -		F64Kilobytes getPeriodMin(const StatType<MemAccumulator>& stat, size_t num_periods = std::numeric_limits<size_t>::max()); -		F64Kilobytes getPeriodMin(const MemStatHandle& stat, size_t num_periods = std::numeric_limits<size_t>::max()); -  		template <typename T>  		typename RelatedTypes<typename T::value_t>::fractional_t getPeriodMinPerSec(const StatType<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			num_periods = llmin(num_periods, getNumRecordedPeriods());  			typename RelatedTypes<typename T::value_t>::fractional_t min_val(std::numeric_limits<F64>::max()); @@ -440,7 +416,7 @@ namespace LLTrace  		template<typename T>  		typename RelatedTypes<T>::fractional_t getPeriodMinPerSec(const CountStatHandle<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			return typename RelatedTypes<T>::fractional_t(getPeriodMinPerSec(static_cast<const StatType<CountAccumulator>&>(stat), num_periods));  		} @@ -452,7 +428,7 @@ namespace LLTrace  		template <typename T>  		typename T::value_t getPeriodMax(const StatType<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			num_periods = llmin(num_periods, getNumRecordedPeriods());  			bool has_value = false; @@ -467,15 +443,15 @@ namespace LLTrace  				}  			} -			return has_value  -				? max_val  +			return has_value +				? max_val  				: T::getDefaultValue();  		}  		template<typename T>  		T getPeriodMax(const CountStatHandle<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			return T(getPeriodMax(static_cast<const StatType<CountAccumulator>&>(stat), num_periods));  		} @@ -483,7 +459,7 @@ namespace LLTrace  		template<typename T>  		T getPeriodMax(const SampleStatHandle<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			return T(getPeriodMax(static_cast<const StatType<SampleAccumulator>&>(stat), num_periods));  		} @@ -491,17 +467,14 @@ namespace LLTrace  		template<typename T>  		T getPeriodMax(const EventStatHandle<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			return T(getPeriodMax(static_cast<const StatType<EventAccumulator>&>(stat), num_periods));  		} -		F64Kilobytes getPeriodMax(const StatType<MemAccumulator>& stat, size_t num_periods = std::numeric_limits<size_t>::max()); -		F64Kilobytes getPeriodMax(const MemStatHandle& stat, size_t num_periods = std::numeric_limits<size_t>::max()); -  		template <typename T>  		typename RelatedTypes<typename T::value_t>::fractional_t getPeriodMaxPerSec(const StatType<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			num_periods = llmin(num_periods, getNumRecordedPeriods());  			F64 max_val = std::numeric_limits<F64>::min(); @@ -516,7 +489,7 @@ namespace LLTrace  		template<typename T>  		typename RelatedTypes<T>::fractional_t getPeriodMaxPerSec(const CountStatHandle<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			return typename RelatedTypes<T>::fractional_t(getPeriodMaxPerSec(static_cast<const StatType<CountAccumulator>&>(stat), num_periods));  		} @@ -528,7 +501,7 @@ namespace LLTrace  		template <typename T>  		typename RelatedTypes<typename T::value_t>::fractional_t getPeriodMean(const StatType<T >& stat, size_t num_periods = std::numeric_limits<size_t>::max())  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			num_periods = llmin(num_periods, getNumRecordedPeriods());  			typename RelatedTypes<typename T::value_t>::fractional_t mean(0); @@ -549,14 +522,14 @@ namespace LLTrace  		template<typename T>  		typename RelatedTypes<T>::fractional_t getPeriodMean(const CountStatHandle<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			return typename RelatedTypes<T>::fractional_t(getPeriodMean(static_cast<const StatType<CountAccumulator>&>(stat), num_periods));  		}  		F64 getPeriodMean(const StatType<SampleAccumulator>& stat, size_t num_periods = std::numeric_limits<size_t>::max()); -		template<typename T>  +		template<typename T>  		typename RelatedTypes<T>::fractional_t getPeriodMean(const SampleStatHandle<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			return typename RelatedTypes<T>::fractional_t(getPeriodMean(static_cast<const StatType<SampleAccumulator>&>(stat), num_periods));  		} @@ -564,17 +537,14 @@ namespace LLTrace  		template<typename T>  		typename RelatedTypes<T>::fractional_t getPeriodMean(const EventStatHandle<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			return typename RelatedTypes<T>::fractional_t(getPeriodMean(static_cast<const StatType<EventAccumulator>&>(stat), num_periods));  		} -		F64Kilobytes getPeriodMean(const StatType<MemAccumulator>& stat, size_t num_periods = std::numeric_limits<size_t>::max()); -		F64Kilobytes getPeriodMean(const MemStatHandle& stat, size_t num_periods = std::numeric_limits<size_t>::max()); -		  		template <typename T>  		typename RelatedTypes<typename T::value_t>::fractional_t getPeriodMeanPerSec(const StatType<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			num_periods = llmin(num_periods, getNumRecordedPeriods());  			typename RelatedTypes<typename T::value_t>::fractional_t mean = 0; @@ -596,7 +566,7 @@ namespace LLTrace  		template<typename T>  		typename RelatedTypes<T>::fractional_t getPeriodMeanPerSec(const CountStatHandle<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			return typename RelatedTypes<T>::fractional_t(getPeriodMeanPerSec(static_cast<const StatType<CountAccumulator>&>(stat), num_periods));  		} @@ -635,10 +605,10 @@ namespace LLTrace  		F64 getPeriodStandardDeviation(const StatType<SampleAccumulator>& stat, size_t num_periods = std::numeric_limits<size_t>::max()); -		template<typename T>  +		template<typename T>  		typename RelatedTypes<T>::fractional_t getPeriodStandardDeviation(const SampleStatHandle<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			return typename RelatedTypes<T>::fractional_t(getPeriodStandardDeviation(static_cast<const StatType<SampleAccumulator>&>(stat), num_periods));  		} @@ -646,13 +616,10 @@ namespace LLTrace  		template<typename T>  		typename RelatedTypes<T>::fractional_t getPeriodStandardDeviation(const EventStatHandle<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())  		{ -            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS; +			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;  			return typename RelatedTypes<T>::fractional_t(getPeriodStandardDeviation(static_cast<const StatType<EventAccumulator>&>(stat), num_periods));  		} -		F64Kilobytes getPeriodStandardDeviation(const StatType<MemAccumulator>& stat, size_t num_periods = std::numeric_limits<size_t>::max()); -		F64Kilobytes getPeriodStandardDeviation(const MemStatHandle& stat, size_t num_periods = std::numeric_limits<size_t>::max()); -  	private:  		// implementation for LLStopWatchControlsMixin  		/*virtual*/ void handleStart(); @@ -731,7 +698,7 @@ namespace LLTrace  		PeriodicRecording& getResults()				{ return mAcceptedRecording; }  		const PeriodicRecording& getResults() const	{return mAcceptedRecording;} -		 +  		void nextPeriod() { mPotentialRecording.nextPeriod(); }  	private: diff --git a/indra/llcommon/lltracethreadrecorder.cpp b/indra/llcommon/lltracethreadrecorder.cpp index 282c454a2a..914bfb55dc 100644 --- a/indra/llcommon/lltracethreadrecorder.cpp +++ b/indra/llcommon/lltracethreadrecorder.cpp @@ -32,7 +32,7 @@  namespace LLTrace  { -extern MemStatHandle gTraceMemStat; +//extern MemStatHandle gTraceMemStat;  static ThreadRecorder* sMasterThreadRecorder = NULL; @@ -81,9 +81,9 @@ void ThreadRecorder::init()  	BlockTimer::getRootTimeBlock().getCurrentAccumulator().mActiveCount = 1; -	claim_alloc(gTraceMemStat, this); -	claim_alloc(gTraceMemStat, mRootTimer); -	claim_alloc(gTraceMemStat, sizeof(TimeBlockTreeNode) * mNumTimeBlockTreeNodes); +	//claim_alloc(gTraceMemStat, this); +	//claim_alloc(gTraceMemStat, mRootTimer); +	//claim_alloc(gTraceMemStat, sizeof(TimeBlockTreeNode) * mNumTimeBlockTreeNodes);  #endif  } @@ -101,9 +101,9 @@ ThreadRecorder::~ThreadRecorder()  #if LL_TRACE_ENABLED  	LLThreadLocalSingletonPointer<BlockTimerStackRecord>::setInstance(NULL); -	disclaim_alloc(gTraceMemStat, this); -	disclaim_alloc(gTraceMemStat, sizeof(BlockTimer)); -	disclaim_alloc(gTraceMemStat, sizeof(TimeBlockTreeNode) * mNumTimeBlockTreeNodes); +	//disclaim_alloc(gTraceMemStat, this); +	//disclaim_alloc(gTraceMemStat, sizeof(BlockTimer)); +	//disclaim_alloc(gTraceMemStat, sizeof(TimeBlockTreeNode) * mNumTimeBlockTreeNodes);  	deactivate(&mThreadRecordingBuffers); diff --git a/indra/llcommon/stdtypes.h b/indra/llcommon/stdtypes.h index 0b43d7ad4b..3aba9dda00 100644 --- a/indra/llcommon/stdtypes.h +++ b/indra/llcommon/stdtypes.h @@ -156,18 +156,15 @@ typedef int intptr_t;   * type.   */  // narrow_holder is a struct that accepts the passed value as its original -// type and provides templated conversion functions to other types. Once we're -// building with compilers that support Class Template Argument Deduction, we -// can rename this class template 'narrow' and eliminate the narrow() factory -// function below. +// type and provides templated conversion functions to other types.  template <typename FROM> -class narrow_holder +class narrow  {  private:      FROM mValue;  public: -    narrow_holder(FROM value): mValue(value) {} +    narrow(FROM value): mValue(value) {}      /*---------------------- Narrowing unsigned to signed ----------------------*/      template <typename TO, @@ -207,13 +204,4 @@ public:      }  }; -/// narrow() factory function returns a narrow_holder<FROM>(), which can be -/// implicitly converted to the target type. -template <typename FROM> -inline -narrow_holder<FROM> narrow(FROM value) -{ -    return { value }; -} -  #endif diff --git a/indra/llcommon/tests/threadsafeschedule_test.cpp b/indra/llcommon/tests/threadsafeschedule_test.cpp index c421cc7b1c..8851590189 100644 --- a/indra/llcommon/tests/threadsafeschedule_test.cpp +++ b/indra/llcommon/tests/threadsafeschedule_test.cpp @@ -46,11 +46,12 @@ namespace tut          // the real time required for each push() call. Explicitly increment          // the timestamp for each one -- but since we're passing explicit          // timestamps, make the queue reorder them. -        queue.push(Queue::TimeTuple(Queue::Clock::now() + 200ms, "ghi")); +        auto now{ Queue::Clock::now() }; +        queue.push(Queue::TimeTuple(now + 200ms, "ghi"));          // Given the various push() overloads, you have to match the type          // exactly: conversions are ambiguous.          queue.push("abc"s); -        queue.push(Queue::Clock::now() + 100ms, "def"); +        queue.push(now + 100ms, "def");          queue.close();          auto entry = queue.pop();          ensure_equals("failed to pop first", std::get<0>(entry), "abc"s); diff --git a/indra/llcommon/threadpool.cpp b/indra/llcommon/threadpool.cpp index 3a9a5a2062..a063a01b82 100644 --- a/indra/llcommon/threadpool.cpp +++ b/indra/llcommon/threadpool.cpp @@ -60,12 +60,15 @@ struct sleepy_robin: public boost::fibers::algo::round_robin  /*****************************************************************************  *   ThreadPoolBase  *****************************************************************************/ -LL::ThreadPoolBase::ThreadPoolBase(const std::string& name, size_t threads, -                                   WorkQueueBase* queue): +LL::ThreadPoolBase::ThreadPoolBase(const std::string& name, +                                   size_t threads, +                                   WorkQueueBase* queue, +                                   bool auto_shutdown):      super(name),      mName("ThreadPool:" + name),      mThreadCount(getConfiguredWidth(name, threads)), -    mQueue(queue) +    mQueue(queue), +    mAutomaticShutdown(auto_shutdown)  {}  void LL::ThreadPoolBase::start() @@ -79,6 +82,14 @@ void LL::ThreadPoolBase::start()                  run(tname);              });      } + +    if (!mAutomaticShutdown) +    { +        // Some threads, like main window's might need to run a bit longer +        // to wait for a proper shutdown message +        return; +    } +      // Listen on "LLApp", and when the app is shutting down, close the queue      // and join the workers.      LLEventPumps::instance().obtain("LLApp").listen( diff --git a/indra/llcommon/threadpool.h b/indra/llcommon/threadpool.h index 60f4a0ce1b..fa16c6fe71 100644 --- a/indra/llcommon/threadpool.h +++ b/indra/llcommon/threadpool.h @@ -40,7 +40,7 @@ namespace LL           * overrides this parameter.           */          ThreadPoolBase(const std::string& name, size_t threads, -                       WorkQueueBase* queue); +                       WorkQueueBase* queue, bool auto_shutdown = true);          virtual ~ThreadPoolBase();          /** @@ -87,6 +87,7 @@ namespace LL      protected:          std::unique_ptr<WorkQueueBase> mQueue; +        bool mAutomaticShutdown;      private:          void run(const std::string& name); @@ -117,8 +118,11 @@ namespace LL           * Constraining the queue can cause a submitter to block. Do not           * constrain any ThreadPool accepting work from the main thread.           */ -        ThreadPoolUsing(const std::string& name, size_t threads=1, size_t capacity=1024*1024): -            ThreadPoolBase(name, threads, new queue_t(name, capacity)) +        ThreadPoolUsing(const std::string& name, +                        size_t threads=1, +                        size_t capacity=1024*1024, +                        bool auto_shutdown = true): +            ThreadPoolBase(name, threads, new queue_t(name, capacity), auto_shutdown)          {}          ~ThreadPoolUsing() override {} diff --git a/indra/llimage/llimagedimensionsinfo.cpp b/indra/llimage/llimagedimensionsinfo.cpp index 97b543f3b6..9dd69ff132 100644 --- a/indra/llimage/llimagedimensionsinfo.cpp +++ b/indra/llimage/llimagedimensionsinfo.cpp @@ -50,6 +50,7 @@ bool LLImageDimensionsInfo::load(const std::string& src_filename,U32 codec)  	if (file_size == 0)  	{ +        mWarning = "texture_load_empty_file";  		setLastError("File is empty",src_filename);  		return false;  	} @@ -90,6 +91,7 @@ bool LLImageDimensionsInfo::getImageDimensionsBmp()  	if (signature[0] != 'B' || signature[1] != 'M')  	{  		LL_WARNS() << "Not a BMP" << LL_ENDL; +        mWarning = "texture_load_format_error";  		return false;  	} @@ -140,6 +142,7 @@ bool LLImageDimensionsInfo::getImageDimensionsPng()  	if (memcmp(signature, png_magic, PNG_MAGIC_SIZE) != 0)  	{  		LL_WARNS() << "Not a PNG" << LL_ENDL; +        mWarning = "texture_load_format_error";  		return false;  	} @@ -183,6 +186,7 @@ bool LLImageDimensionsInfo::getImageDimensionsJpeg()  	if (memcmp(signature, jpeg_magic, JPEG_MAGIC_SIZE) != 0)  	{  		LL_WARNS() << "Not a JPEG" << LL_ENDL; +        mWarning = "texture_load_format_error";  		return false;  	}  	fseek(fp, 0, SEEK_SET); // go back to start of the file diff --git a/indra/llimage/llimagedimensionsinfo.h b/indra/llimage/llimagedimensionsinfo.h index 8f716c5d02..ade283bb85 100644 --- a/indra/llimage/llimagedimensionsinfo.h +++ b/indra/llimage/llimagedimensionsinfo.h @@ -55,6 +55,12 @@ public:  	{  		return mLastError;  	} + +    const std::string& getWarningName() +    { +        return mWarning; +    } +  protected:  	void clean() @@ -129,6 +135,7 @@ protected:  	std::string mSrcFilename;  	std::string mLastError; +    std::string mWarning;  	U8* mData; diff --git a/indra/llimage/llimageworker.cpp b/indra/llimage/llimageworker.cpp index c1ee052997..fd59daad3d 100644 --- a/indra/llimage/llimageworker.cpp +++ b/indra/llimage/llimageworker.cpp @@ -35,8 +35,10 @@ class ImageRequest  {  public:  	ImageRequest(const LLPointer<LLImageFormatted>& image, -				 S32 discard, BOOL needs_aux, -				 const LLPointer<LLImageDecodeThread::Responder>& responder); +                 S32 discard, +                 BOOL needs_aux, +                 const LLPointer<LLImageDecodeThread::Responder>& responder, +                 U32 request_id);  	virtual ~ImageRequest();  	/*virtual*/ bool processRequest(); @@ -48,6 +50,7 @@ private:  	// input  	LLPointer<LLImageFormatted> mFormattedImage;  	S32 mDiscardLevel; +    U32 mRequestId;  	BOOL mNeedsAux;  	// output  	LLPointer<LLImageRaw> mDecodedImageRaw; @@ -62,6 +65,7 @@ private:  // MAIN THREAD  LLImageDecodeThread::LLImageDecodeThread(bool /*threaded*/) +    : mDecodeCount(0)  {      mThreadPool.reset(new LL::ThreadPool("ImageDecode", 8));      mThreadPool->start(); @@ -92,9 +96,10 @@ LLImageDecodeThread::handle_t LLImageDecodeThread::decodeImage(  {      LL_PROFILE_ZONE_SCOPED_CATEGORY_TEXTURE; +    U32 decode_id = ++mDecodeCount;      // Instantiate the ImageRequest right in the lambda, why not?      bool posted = mThreadPool->getQueue().post( -        [req = ImageRequest(image, discard, needs_aux, responder)] +        [req = ImageRequest(image, discard, needs_aux, responder, decode_id)]          () mutable          {              auto done = req.processRequest(); @@ -103,13 +108,10 @@ LLImageDecodeThread::handle_t LLImageDecodeThread::decodeImage(      if (! posted)      {          LL_DEBUGS() << "Tried to start decoding on shutdown" << LL_ENDL; -        // should this return 0? +        return 0;      } -    // It's important to our consumer (LLTextureFetchWorker) that we return a -    // nonzero handle. It is NOT important that the nonzero handle be unique: -    // nothing is ever done with it except to compare it to zero, or zero it. -    return 17; +    return decode_id;  }  void LLImageDecodeThread::shutdown() @@ -123,15 +125,18 @@ LLImageDecodeThread::Responder::~Responder()  //---------------------------------------------------------------------------- -ImageRequest::ImageRequest(const LLPointer<LLImageFormatted>& image,  -							S32 discard, BOOL needs_aux, -							const LLPointer<LLImageDecodeThread::Responder>& responder) +ImageRequest::ImageRequest(const LLPointer<LLImageFormatted>& image, +                           S32 discard, +                           BOOL needs_aux, +                           const LLPointer<LLImageDecodeThread::Responder>& responder, +                           U32 request_id)  	: mFormattedImage(image),  	  mDiscardLevel(discard),  	  mNeedsAux(needs_aux),  	  mDecodedRaw(FALSE),  	  mDecodedAux(FALSE), -	  mResponder(responder) +	  mResponder(responder), +	  mRequestId(request_id)  {  } @@ -199,7 +204,7 @@ void ImageRequest::finishRequest(bool completed)  	if (mResponder.notNull())  	{  		bool success = completed && mDecodedRaw && (!mNeedsAux || mDecodedAux); -		mResponder->completed(success, mDecodedImageRaw, mDecodedImageAux); +		mResponder->completed(success, mDecodedImageRaw, mDecodedImageAux, mRequestId);  	}  	// Will automatically be deleted  } diff --git a/indra/llimage/llimageworker.h b/indra/llimage/llimageworker.h index ca4c0d93d0..b4ab9432e6 100644 --- a/indra/llimage/llimageworker.h +++ b/indra/llimage/llimageworker.h @@ -39,7 +39,7 @@ public:  	protected:  		virtual ~Responder();  	public: -		virtual void completed(bool success, LLImageRaw* raw, LLImageRaw* aux) = 0; +		virtual void completed(bool success, LLImageRaw* raw, LLImageRaw* aux, U32 request_id) = 0;  	};  public: @@ -53,6 +53,7 @@ public:  						 const LLPointer<Responder>& responder);  	size_t getPending();  	size_t update(F32 max_time_ms); +    S32 getTotalDecodeCount() { return mDecodeCount; }  	void shutdown();  private: @@ -60,6 +61,7 @@ private:  	// LLQueuedThread - instead this is the API by which we submit work to the  	// "ImageDecode" ThreadPool.  	std::unique_ptr<LL::ThreadPool> mThreadPool; +    LLAtomicU32 mDecodeCount;  };  #endif diff --git a/indra/llmessage/llxfer.cpp b/indra/llmessage/llxfer.cpp index 93d5cfc131..212d0619d1 100644 --- a/indra/llmessage/llxfer.cpp +++ b/indra/llmessage/llxfer.cpp @@ -386,12 +386,3 @@ std::ostream& operator<< (std::ostream& os, LLXfer &hh)  	os << hh.getFileName() ;  	return os;  } - - - - - - - - - diff --git a/indra/llprimitive/llmodel.cpp b/indra/llprimitive/llmodel.cpp index 99a5697a84..d56ffdc317 100644 --- a/indra/llprimitive/llmodel.cpp +++ b/indra/llprimitive/llmodel.cpp @@ -1041,7 +1041,12 @@ LLModel::weight_list& LLModel::getJointInfluences(const LLVector3& pos)  	weight_map::iterator iterPos = mSkinWeights.begin();  	weight_map::iterator iterEnd = mSkinWeights.end(); -    llassert(!mSkinWeights.empty()); +    if (mSkinWeights.empty()) +    { +        // function calls iter->second on all return paths +        // everything that calls this function should precheck that there is data. +        LL_ERRS() << "called getJointInfluences with empty weights list" << LL_ENDL; +    }  	for ( ; iterPos!=iterEnd; ++iterPos )  	{ @@ -1068,11 +1073,16 @@ LLModel::weight_list& LLModel::getJointInfluences(const LLVector3& pos)  		const F32 epsilon = 1e-5f;  		weight_map::iterator iter_up = mSkinWeights.lower_bound(pos);  		weight_map::iterator iter_down = iter_up; -		if (iter_up != mSkinWeights.end()) -		{ -			iter_down = ++iter_up; -		} -		weight_map::iterator best = iter_up; +        weight_map::iterator best = iter_up; +        if (iter_up != mSkinWeights.end()) +        { +            iter_down = ++iter_up; +        } +        else +        { +            // Assumes that there is at least one element +            --best; +        }  		F32 min_dist = (iter->first - pos).magVec(); diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp index 4c7c8e6f5c..f7fb46e310 100644 --- a/indra/llrender/llgl.cpp +++ b/indra/llrender/llgl.cpp @@ -94,6 +94,17 @@ void APIENTRY gl_debug_callback(GLenum source,          return;      }*/ +    if (gGLManager.mIsDisabled && +        severity == GL_DEBUG_SEVERITY_HIGH_ARB && +        source == GL_DEBUG_SOURCE_API_ARB && +        type == GL_DEBUG_TYPE_ERROR_ARB && +        id == GL_INVALID_VALUE) +    { +        // Suppress messages about deleting already deleted objects called from LLViewerWindow::stopGL() +        // "GL_INVALID_VALUE error generated. Handle does not refer to an object generated by OpenGL." +        return; +    } +      // list of messages to suppress      const char* suppress[] =      { @@ -148,8 +159,9 @@ void APIENTRY gl_debug_callback(GLenum source,          glGetBufferParameteriv(GL_UNIFORM_BUFFER, GL_BUFFER_SIZE, &ubo_size);          glGetBufferParameteriv(GL_UNIFORM_BUFFER, GL_BUFFER_IMMUTABLE_STORAGE, &ubo_immutable);      } -     -    if (severity == GL_DEBUG_SEVERITY_HIGH) + +    // No needs to halt when is called from LLViewerWindow::stopGL() +    if (severity == GL_DEBUG_SEVERITY_HIGH && !gGLManager.mIsDisabled)      {          LL_ERRS() << "Halting on GL Error" << LL_ENDL;      } diff --git a/indra/llui/llaccordionctrltab.h b/indra/llui/llaccordionctrltab.h index 896a34cac4..496c34c38b 100644 --- a/indra/llui/llaccordionctrltab.h +++ b/indra/llui/llaccordionctrltab.h @@ -126,12 +126,12 @@ public:  	void setSelected(bool is_selected); -	bool getCollapsible() {return mCollapsible;}; +	bool getCollapsible() { return mCollapsible; }; -	void setCollapsible(bool collapsible) {mCollapsible = collapsible;}; +	void setCollapsible(bool collapsible) { mCollapsible = collapsible; };  	void changeOpenClose(bool is_open); -	void canOpenClose(bool can_open_close) { mCanOpenClose = can_open_close;}; +	void canOpenClose(bool can_open_close) { mCanOpenClose = can_open_close; };  	bool canOpenClose() const { return mCanOpenClose; };  	virtual BOOL postBuild(); @@ -142,8 +142,8 @@ public:  	void draw(); -	void    storeOpenCloseState		(); -	void    restoreOpenCloseState	(); +	void storeOpenCloseState(); +	void restoreOpenCloseState();  protected:  	LLAccordionCtrlTab(const LLAccordionCtrlTab::Params&); diff --git a/indra/llui/llcontainerview.cpp b/indra/llui/llcontainerview.cpp index 727fbe850e..1c33088e8d 100644 --- a/indra/llui/llcontainerview.cpp +++ b/indra/llui/llcontainerview.cpp @@ -288,7 +288,7 @@ void LLContainerView::setLabel(const std::string& label)  	mLabel = label;  } -void LLContainerView::setDisplayChildren(const BOOL displayChildren) +void LLContainerView::setDisplayChildren(BOOL displayChildren)  {  	mDisplayChildren = displayChildren;  	for (child_list_const_iter_t child_iter = getChildList()->begin(); diff --git a/indra/llui/llcontainerview.h b/indra/llui/llcontainerview.h index 99267d978a..8e75aaef6e 100644 --- a/indra/llui/llcontainerview.h +++ b/indra/llui/llcontainerview.h @@ -78,7 +78,7 @@ public:  	void setLabel(const std::string& label);  	void showLabel(BOOL show) { mShowLabel = show; } -	void setDisplayChildren(const BOOL displayChildren); +	void setDisplayChildren(BOOL displayChildren);  	BOOL getDisplayChildren() { return mDisplayChildren; }  	void setScrollContainer(LLScrollContainer* scroll) {mScrollContainer = scroll;} diff --git a/indra/llui/llflatlistview.cpp b/indra/llui/llflatlistview.cpp index 460bd0945b..fd4c33df30 100644 --- a/indra/llui/llflatlistview.cpp +++ b/indra/llui/llflatlistview.cpp @@ -1361,26 +1361,28 @@ void LLFlatListViewEx::setForceShowingUnmatchedItems(bool show)  	mForceShowingUnmatchedItems = show;  } -void LLFlatListViewEx::setFilterSubString(const std::string& filter_str) +void LLFlatListViewEx::setFilterSubString(const std::string& filter_str, bool notify_parent)  {  	if (0 != LLStringUtil::compareInsensitive(filter_str, mFilterSubString))  	{  		mFilterSubString = filter_str;  		updateNoItemsMessage(mFilterSubString); -		filterItems(); +		filterItems(false, notify_parent);  	}  } -void LLFlatListViewEx::updateItemVisibility(LLPanel* item, const LLSD &action) +bool LLFlatListViewEx::updateItemVisibility(LLPanel* item, const LLSD &action)  { -	if (!item) return; +    if (!item) +        return false; + +	BOOL visible = TRUE;  	// 0 signifies that filter is matched,  	// i.e. we don't hide items that don't support 'match_filter' action, separators etc.  	if (0 == item->notify(action))  	{  		mHasMatchedItems = true; -		item->setVisible(true);  	}  	else  	{ @@ -1388,34 +1390,45 @@ void LLFlatListViewEx::updateItemVisibility(LLPanel* item, const LLSD &action)  		if (!mForceShowingUnmatchedItems)  		{  			selectItem(item, false); +			visible = FALSE;  		} -		item->setVisible(mForceShowingUnmatchedItems);  	} + +	if (item->getVisible() != visible) +	{ +		item->setVisible(visible); +		return true; +	} + +	return false;  } -void LLFlatListViewEx::filterItems() +void LLFlatListViewEx::filterItems(bool re_sort, bool notify_parent)  { -	typedef std::vector <LLPanel*> item_panel_list_t; -  	std::string cur_filter = mFilterSubString;  	LLStringUtil::toUpper(cur_filter);  	LLSD action;  	action.with("match_filter", cur_filter); -	item_panel_list_t items; -	getItems(items); -  	mHasMatchedItems = false; -    item_panel_list_t::iterator iter = items.begin(), iter_end = items.end(); -	while (iter < iter_end) +	bool visibility_changed = false; +	pairs_const_iterator_t iter = getItemPairs().begin(), iter_end = getItemPairs().end(); +	while (iter != iter_end)  	{ -		LLPanel* pItem = *(iter++); -		updateItemVisibility(pItem, action); +		LLPanel* pItem = (*(iter++))->first; +		visibility_changed |= updateItemVisibility(pItem, action);  	} -	sort(); -	notifyParentItemsRectChanged(); +    if (re_sort) +    { +        sort(); +    } + +    if (visibility_changed && notify_parent) +    { +        notifyParentItemsRectChanged(); +    }  }  bool LLFlatListViewEx::hasMatchedItems() diff --git a/indra/llui/llflatlistview.h b/indra/llui/llflatlistview.h index d47c1cf333..adb0e3e553 100644 --- a/indra/llui/llflatlistview.h +++ b/indra/llui/llflatlistview.h @@ -300,6 +300,7 @@ public:  	virtual S32	notify(const LLSD& info) ;  	virtual ~LLFlatListView(); +  protected:  	/** Pairs LLpanel representing a single item LLPanel and LLSD associated with it */ @@ -375,7 +376,9 @@ protected:  	LLRect getLastSelectedItemRect(); -	void   ensureSelectedVisible(); +	void ensureSelectedVisible(); + +	const pairs_list_t& getItemPairs() { return mItemPairs; }  private: @@ -482,14 +485,14 @@ public:  	/**  	 * Sets up new filter string and filters the list.  	 */ -	void setFilterSubString(const std::string& filter_str); +	void setFilterSubString(const std::string& filter_str, bool notify_parent);  	std::string getFilterSubString() { return mFilterSubString; }  	/**  	 * Filters the list, rearranges and notifies parent about shape changes.  	 * Derived classes may want to overload rearrangeItems() to exclude repeated separators after filtration.  	 */ -	void filterItems(); +	void filterItems(bool re_sort, bool notify_parent);  	/**  	 * Returns true if last call of filterItems() found at least one matching item @@ -513,7 +516,7 @@ protected:  	* @param item - item we are changing  	* @param item - action - parameters to determin visibility from  	*/ -	void updateItemVisibility(LLPanel* item, const LLSD &action); +	bool updateItemVisibility(LLPanel* item, const LLSD &action);  private:  	std::string mNoFilteredItemsMsg; diff --git a/indra/llui/llfolderviewitem.cpp b/indra/llui/llfolderviewitem.cpp index 0dc66bf37a..36d2b165e8 100644 --- a/indra/llui/llfolderviewitem.cpp +++ b/indra/llui/llfolderviewitem.cpp @@ -187,14 +187,18 @@ LLFolderViewItem::~LLFolderViewItem()  BOOL LLFolderViewItem::postBuild()  { -    LLFolderViewModelItem& vmi = *getViewModelItem(); -    // getDisplayName() is expensive (due to internal getLabelSuffix() and name building) -    // it also sets search strings so it requires a filter reset -    mLabel = vmi.getDisplayName(); -    setToolTip(vmi.getName()); +    LLFolderViewModelItem* vmi = getViewModelItem(); +    llassert(vmi); // not supposed to happen, if happens, find out why and fix +    if (vmi) +    { +        // getDisplayName() is expensive (due to internal getLabelSuffix() and name building) +        // it also sets search strings so it requires a filter reset +        mLabel = vmi->getDisplayName(); +        setToolTip(vmi->getName()); -    // Dirty the filter flag of the model from the view (CHUI-849) -    vmi.dirtyFilter(); +        // Dirty the filter flag of the model from the view (CHUI-849) +        vmi->dirtyFilter(); +    }      // Don't do full refresh on constructor if it is possible to avoid      // it significantly slows down bulk view creation. diff --git a/indra/llui/llkeywords.cpp b/indra/llui/llkeywords.cpp index 69e338ddb9..341ddb83f3 100644 --- a/indra/llui/llkeywords.cpp +++ b/indra/llui/llkeywords.cpp @@ -479,7 +479,7 @@ LLTrace::BlockTimerStatHandle FTM_SYNTAX_COLORING("Syntax Coloring");  // Walk through a string, applying the rules specified by the keyword token list and  // create a list of color segments. -void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLWString& wtext, const LLColor4 &defaultColor, LLTextEditor& editor) +void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLWString& wtext, LLTextEditor& editor, LLStyleConstSP style)  {  	LL_RECORD_BLOCK_TIME(FTM_SYNTAX_COLORING);  	seg_list->clear(); @@ -491,7 +491,7 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW  	S32 text_len = wtext.size() + 1; -	seg_list->push_back( new LLNormalTextSegment( defaultColor, 0, text_len, editor ) ); +	seg_list->push_back( new LLNormalTextSegment( style, 0, text_len, editor ) );  	const llwchar* base = wtext.c_str();  	const llwchar* cur = base; @@ -501,9 +501,9 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW  		{  			if( *cur == '\n' )  			{ -				LLTextSegmentPtr text_segment = new LLLineBreakTextSegment(cur-base); +				LLTextSegmentPtr text_segment = new LLLineBreakTextSegment(style, cur-base);  				text_segment->setToken( 0 ); -				insertSegment( *seg_list, text_segment, text_len, defaultColor, editor); +				insertSegment( *seg_list, text_segment, text_len, style, editor);  				cur++;  				if( !*cur || *cur == '\n' )  				{ @@ -541,7 +541,7 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW  						S32 seg_end = cur - base;  						//create segments from seg_start to seg_end -						insertSegments(wtext, *seg_list,cur_token, text_len, seg_start, seg_end, defaultColor, editor); +						insertSegments(wtext, *seg_list,cur_token, text_len, seg_start, seg_end, style, editor);  						line_done = TRUE; // to break out of second loop.  						break;  					} @@ -648,7 +648,7 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW  						seg_end = seg_start + between_delimiters + cur_delimiter->getLengthHead();  					} -					insertSegments(wtext, *seg_list,cur_delimiter, text_len, seg_start, seg_end, defaultColor, editor); +					insertSegments(wtext, *seg_list,cur_delimiter, text_len, seg_start, seg_end, style, editor);  					/*  					LLTextSegmentPtr text_segment = new LLNormalTextSegment( cur_delimiter->getColor(), seg_start, seg_end, editor );  					text_segment->setToken( cur_delimiter ); @@ -682,7 +682,7 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW  						// LL_INFOS("SyntaxLSL") << "Seg: [" << word.c_str() << "]" << LL_ENDL; -						insertSegments(wtext, *seg_list,cur_token, text_len, seg_start, seg_end, defaultColor, editor); +						insertSegments(wtext, *seg_list,cur_token, text_len, seg_start, seg_end, style, editor);  					}  					cur += seg_len;  					continue; @@ -697,30 +697,32 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW  	}  } -void LLKeywords::insertSegments(const LLWString& wtext, std::vector<LLTextSegmentPtr>& seg_list, LLKeywordToken* cur_token, S32 text_len, S32 seg_start, S32 seg_end, const LLColor4 &defaultColor, LLTextEditor& editor ) +void LLKeywords::insertSegments(const LLWString& wtext, std::vector<LLTextSegmentPtr>& seg_list, LLKeywordToken* cur_token, S32 text_len, S32 seg_start, S32 seg_end, LLStyleConstSP style, LLTextEditor& editor )  {  	std::string::size_type pos = wtext.find('\n',seg_start); +     +    LLStyleConstSP cur_token_style = new LLStyle(LLStyle::Params().font(style->getFont()).color(cur_token->getColor()));  	while (pos!=-1 && pos < (std::string::size_type)seg_end)  	{  		if (pos!=seg_start)  		{ -			LLTextSegmentPtr text_segment = new LLNormalTextSegment( cur_token->getColor(), seg_start, pos, editor ); +            LLTextSegmentPtr text_segment = new LLNormalTextSegment(cur_token_style, seg_start, pos, editor);  			text_segment->setToken( cur_token ); -			insertSegment( seg_list, text_segment, text_len, defaultColor, editor); +			insertSegment( seg_list, text_segment, text_len, style, editor);  		} -		LLTextSegmentPtr text_segment = new LLLineBreakTextSegment(pos); +		LLTextSegmentPtr text_segment = new LLLineBreakTextSegment(style, pos);  		text_segment->setToken( cur_token ); -		insertSegment( seg_list, text_segment, text_len, defaultColor, editor); +		insertSegment( seg_list, text_segment, text_len, style, editor);  		seg_start = pos+1;  		pos = wtext.find('\n',seg_start);  	} -	LLTextSegmentPtr text_segment = new LLNormalTextSegment( cur_token->getColor(), seg_start, seg_end, editor ); +	LLTextSegmentPtr text_segment = new LLNormalTextSegment(cur_token_style, seg_start, seg_end, editor);  	text_segment->setToken( cur_token ); -	insertSegment( seg_list, text_segment, text_len, defaultColor, editor); +	insertSegment( seg_list, text_segment, text_len, style, editor);  }  void LLKeywords::insertSegment(std::vector<LLTextSegmentPtr>& seg_list, LLTextSegmentPtr new_segment, S32 text_len, const LLColor4 &defaultColor, LLTextEditor& editor ) @@ -744,6 +746,27 @@ void LLKeywords::insertSegment(std::vector<LLTextSegmentPtr>& seg_list, LLTextSe  	}  } +void LLKeywords::insertSegment(std::vector<LLTextSegmentPtr>& seg_list, LLTextSegmentPtr new_segment, S32 text_len, LLStyleConstSP style, LLTextEditor& editor ) +{ +	LLTextSegmentPtr last = seg_list.back(); +	S32 new_seg_end = new_segment->getEnd(); + +	if( new_segment->getStart() == last->getStart() ) +	{ +		seg_list.pop_back(); +	} +	else +	{ +		last->setEnd( new_segment->getStart() ); +	} +	seg_list.push_back( new_segment ); + +	if( new_seg_end < text_len ) +	{ +		seg_list.push_back( new LLNormalTextSegment( style, new_seg_end, text_len, editor ) ); +	} +} +  #ifdef _DEBUG  void LLKeywords::dump()  { diff --git a/indra/llui/llkeywords.h b/indra/llui/llkeywords.h index 18e2ed06c5..2410fe7d5a 100644 --- a/indra/llui/llkeywords.h +++ b/indra/llui/llkeywords.h @@ -29,6 +29,7 @@  #include "lldir.h" +#include "llstyle.h"  #include "llstring.h"  #include "v3color.h"  #include "v4color.h" @@ -115,8 +116,8 @@ public:  	void		findSegments(std::vector<LLTextSegmentPtr> *seg_list,  							 const LLWString& text, -							 const LLColor4 &defaultColor, -							 class LLTextEditor& editor); +							 class LLTextEditor& editor, +                             LLStyleConstSP style);  	void		initialize(LLSD SyntaxXML);  	void		processTokens(); @@ -181,9 +182,11 @@ protected:  							   S32 text_len,  							   S32 seg_start,  							   S32 seg_end, -							   const LLColor4 &defaultColor, +							   LLStyleConstSP style,  							   LLTextEditor& editor); +    void insertSegment(std::vector<LLTextSegmentPtr>& seg_list, LLTextSegmentPtr new_segment, S32 text_len, LLStyleConstSP style, LLTextEditor& editor ); +  	bool		mLoaded;  	LLSD		mSyntax;  	word_token_map_t mWordTokenMap; diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp index cebca70b59..c26b0b9828 100644 --- a/indra/llui/llmenugl.cpp +++ b/indra/llui/llmenugl.cpp @@ -1783,7 +1783,8 @@ LLMenuGL::LLMenuGL(const LLMenuGL::Params& p)  	mNeedsArrange(FALSE),  	mAlwaysShowMenu(FALSE),  	mResetScrollPositionOnShow(true), -	mShortcutPad(p.shortcut_pad) +	mShortcutPad(p.shortcut_pad), +    mFont(p.font)  {  	typedef boost::tokenizer<boost::char_separator<char> > tokenizer;  	boost::char_separator<char> sep("_"); @@ -3642,6 +3643,7 @@ BOOL LLMenuBarGL::appendMenu( LLMenuGL* menu )  	p.disabled_color=LLUIColorTable::instance().getColor("MenuItemDisabledColor");  	p.highlight_bg_color=LLUIColorTable::instance().getColor("MenuItemHighlightBgColor");  	p.highlight_fg_color=LLUIColorTable::instance().getColor("MenuItemHighlightFgColor"); +    p.font = menu->getFont();  	LLMenuItemBranchDownGL* branch = LLUICtrlFactory::create<LLMenuItemBranchDownGL>(p);  	success &= branch->addToAcceleratorList(&mAccelerators); diff --git a/indra/llui/llmenugl.h b/indra/llui/llmenugl.h index 87e3f18ebc..0e6139ce78 100644 --- a/indra/llui/llmenugl.h +++ b/indra/llui/llmenugl.h @@ -562,7 +562,9 @@ public:  	// add a context menu branch  	BOOL appendContextSubMenu(LLMenuGL *menu); -protected: +    const LLFontGL *getFont() const { return mFont; } + +  protected:  	void createSpilloverBranch();  	void cleanupSpilloverBranch();  	// Add the menu item to this menu. @@ -594,6 +596,9 @@ protected:  	BOOL			mKeepFixedSize;  	BOOL			mNeedsArrange; +    // Font for top menu items only +    const LLFontGL* mFont; +  private: diff --git a/indra/llui/llstatbar.cpp b/indra/llui/llstatbar.cpp index 2449100952..fc3024c0de 100644 --- a/indra/llui/llstatbar.cpp +++ b/indra/llui/llstatbar.cpp @@ -181,7 +181,7 @@ LLStatBar::LLStatBar(const Params& p)  	mTargetMinBar(llmin(p.bar_min, p.bar_max)),  	mTargetMaxBar(llmax(p.bar_max, p.bar_min)),  	mCurMaxBar(p.bar_max), -    mCurMinBar(0), +	mCurMinBar(0),  	mDecimalDigits(p.decimal_digits),  	mNumHistoryFrames(p.num_frames),  	mNumShortHistoryFrames(p.num_frames_short), @@ -222,9 +222,6 @@ BOOL LLStatBar::handleHover(S32 x, S32 y, MASK mask)  	case STAT_SAMPLE:  		LLToolTipMgr::instance().show(LLToolTip::Params().message(mStat.sampleStatp->getDescription()).sticky_rect(calcScreenRect()));  		break; -	case STAT_MEM: -		LLToolTipMgr::instance().show(LLToolTip::Params().message(mStat.memStatp->getDescription()).sticky_rect(calcScreenRect())); -		break;  	default:  		break;  	} @@ -373,18 +370,6 @@ void LLStatBar::draw()  			}  		}  		break; -	case STAT_MEM: -		{ -			const LLTrace::StatType<LLTrace::MemAccumulator>& mem_stat = *mStat.memStatp; - -			unit_label        = mUnitLabel.empty() ? mem_stat.getUnitLabel() : mUnitLabel; -			current           = last_frame_recording.getLastValue(mem_stat).value(); -			min               = frame_recording.getPeriodMin(mem_stat, num_frames).value(); -			max               = frame_recording.getPeriodMax(mem_stat, num_frames).value(); -			mean              = frame_recording.getPeriodMean(mem_stat, num_frames).value(); -			display_value	  = current; -		} -		break;  	default:  		break;  	} @@ -500,11 +485,6 @@ void LLStatBar::draw()  							max_value		= recording.getMax(*mStat.sampleStatp);  							num_samples		= recording.getSampleCount(*mStat.sampleStatp);  							break; -						case STAT_MEM: -							min_value       = recording.getMin(*mStat.memStatp).value(); -							max_value		= recording.getMax(*mStat.memStatp).value(); -							num_samples = 1; -							break;  						default:  							break;  					} @@ -583,14 +563,8 @@ void LLStatBar::setStat(const std::string& stat_name)  		mStat.sampleStatp = sample_stat.get();  		mStatType = STAT_SAMPLE;  	} -	else if (auto mem_stat = StatType<MemAccumulator>::getInstance(stat_name)) -	{ -		mStat.memStatp = mem_stat.get(); -		mStatType = STAT_MEM; -	}  } -  void LLStatBar::setRange(F32 bar_min, F32 bar_max)  {  	mTargetMinBar		= llmin(bar_min, bar_max); diff --git a/indra/llui/llstatbar.h b/indra/llui/llstatbar.h index 6b481ca68f..384d0950a6 100644 --- a/indra/llui/llstatbar.h +++ b/indra/llui/llstatbar.h @@ -95,17 +95,15 @@ private:  		STAT_NONE,  		STAT_COUNT,  		STAT_EVENT, -		STAT_SAMPLE, -		STAT_MEM +		STAT_SAMPLE  	} mStatType;  	union  	{ -		void*														valid; +		void*													valid;  		const LLTrace::StatType<LLTrace::CountAccumulator>*		countStatp;  		const LLTrace::StatType<LLTrace::EventAccumulator>*		eventStatp; -		const LLTrace::StatType<LLTrace::SampleAccumulator>*		sampleStatp; -		const LLTrace::StatType<LLTrace::MemAccumulator>*		memStatp; +		const LLTrace::StatType<LLTrace::SampleAccumulator>*	sampleStatp;  	} mStat;  	LLUIString   mLabel; diff --git a/indra/llui/llstatview.cpp b/indra/llui/llstatview.cpp index bb4969c81f..03f2fb7cc0 100644 --- a/indra/llui/llstatview.cpp +++ b/indra/llui/llstatview.cpp @@ -58,10 +58,7 @@ LLStatView::~LLStatView()  	}  } -  static StatViewRegistry::Register<LLStatBar> r1("stat_bar");  static StatViewRegistry::Register<LLStatView> r2("stat_view");  // stat_view can be a child of panels/etc.  static LLDefaultChildRegistry::Register<LLStatView> r3("stat_view"); - - diff --git a/indra/llui/llstatview.h b/indra/llui/llstatview.h index af4db7d7ea..044f0a8679 100644 --- a/indra/llui/llstatview.h +++ b/indra/llui/llstatview.h @@ -63,7 +63,7 @@ protected:  	friend class LLUICtrlFactory;  protected: -	std::string mSetting; - +	const std::string mSetting;  }; +  #endif // LL_STATVIEW_ diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp index cb36f72f6e..6aeae0f291 100644 --- a/indra/llui/lltabcontainer.cpp +++ b/indra/llui/lltabcontainer.cpp @@ -1516,25 +1516,23 @@ BOOL LLTabContainer::selectTab(S32 which)  	LLTabTuple* selected_tuple = getTab(which);  	if (!selected_tuple) -	{  		return FALSE; -	} -	 +  	LLSD cbdata;  	if (selected_tuple->mTabPanel)  		cbdata = selected_tuple->mTabPanel->getName(); -	BOOL res = FALSE; -	if( !mValidateSignal || (*mValidateSignal)( this, cbdata ) ) +	BOOL result = FALSE; +	if (!mValidateSignal || (*mValidateSignal)(this, cbdata))  	{ -		res = setTab(which); -		if (res && mCommitSignal) +		result = setTab(which); +		if (result && mCommitSignal)  		{  			(*mCommitSignal)(this, cbdata);  		}  	} -	 -	return res; + +	return result;  }  // private diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index e0697cb454..b6d27a3211 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -3437,7 +3437,7 @@ BOOL LLNormalTextSegment::handleToolTip(S32 x, S32 y, MASK mask)  	if (mToken && !mToken->getToolTip().empty())  	{  		const LLWString& wmsg = mToken->getToolTip(); -		LLToolTipMgr::instance().show(wstring_to_utf8str(wmsg)); +        LLToolTipMgr::instance().show(wstring_to_utf8str(wmsg), (mToken->getType() == LLKeywordToken::TT_FUNCTION));  		return TRUE;  	}  	// or do we have an explicitly set tooltip (e.g., for Urls) diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index 3d2a426913..c83ed4c3e1 100644 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -1779,7 +1779,8 @@ BOOL LLTextEditor::handleKeyHere(KEY key, MASK mask )  	else   	{  		if (mEnableTooltipPaste && -			LLToolTipMgr::instance().toolTipVisible() &&  +			LLToolTipMgr::instance().toolTipVisible() && +            LLToolTipMgr::instance().isTooltipPastable() &&  			KEY_TAB == key)  		{	// Paste the first line of a tooltip into the editor  			std::string message; diff --git a/indra/llui/lltooltip.cpp b/indra/llui/lltooltip.cpp index a6552d4ff1..75fc86b226 100644 --- a/indra/llui/lltooltip.cpp +++ b/indra/llui/lltooltip.cpp @@ -154,7 +154,8 @@ LLToolTip::Params::Params()  	text_color("text_color"),  	time_based_media("time_based_media", false),  	web_based_media("web_based_media", false), -	media_playing("media_playing", false) +	media_playing("media_playing", false), +    allow_paste_tooltip("allow_paste_tooltip", false)  {  	changeDefault(chrome, true);  } @@ -167,7 +168,8 @@ LLToolTip::LLToolTip(const LLToolTip::Params& p)  	mTextBox(NULL),  	mInfoButton(NULL),  	mPlayMediaButton(NULL), -	mHomePageButton(NULL) +	mHomePageButton(NULL), +    mIsTooltipPastable(p.allow_paste_tooltip)  {  	LLTextBox::Params params;  	params.name = params.initial_value().asString(); @@ -289,6 +291,8 @@ void LLToolTip::initFromParams(const LLToolTip::Params& p)  		mTextBox->setText(p.message());  	} +	mIsTooltipPastable = p.allow_paste_tooltip; +  	updateTextBox();  	snapToChildren();  } @@ -483,9 +487,9 @@ void LLToolTipMgr::createToolTip(const LLToolTip::Params& params)  } -void LLToolTipMgr::show(const std::string& msg) +void LLToolTipMgr::show(const std::string& msg, bool allow_paste_tooltip)  { -	show(LLToolTip::Params().message(msg)); +    show(LLToolTip::Params().message(msg).allow_paste_tooltip(allow_paste_tooltip));  }  void LLToolTipMgr::show(const LLToolTip::Params& params) @@ -626,5 +630,13 @@ void LLToolTipMgr::getToolTipMessage(std::string & message)  	}  } +bool LLToolTipMgr::isTooltipPastable() +{ +    if (toolTipVisible()) +    { +        return mToolTip->isTooltipPastable(); +    } +    return false; + }  // EOF diff --git a/indra/llui/lltooltip.h b/indra/llui/lltooltip.h index 86943625ff..fef5e7c75f 100644 --- a/indra/llui/lltooltip.h +++ b/indra/llui/lltooltip.h @@ -94,6 +94,8 @@ public:  									padding;  		Optional<bool>				wrap; +        Optional<bool> allow_paste_tooltip; +  		Params();  	};  	/*virtual*/ void draw(); @@ -109,6 +111,7 @@ public:  	virtual void initFromParams(const LLToolTip::Params& params);  	void getToolTipMessage(std::string & message); +    bool isTooltipPastable() { return mIsTooltipPastable; }  protected:  	void updateTextBox(); @@ -125,6 +128,8 @@ protected:  	bool			mHasClickCallback;  	S32				mPadding;	// pixels  	S32				mMaxWidth; + +    bool mIsTooltipPastable;  };  // used for the inspector tooltips which need different background images etc. @@ -142,7 +147,7 @@ class LLToolTipMgr : public LLSingleton<LLToolTipMgr>  public:  	void show(const LLToolTip::Params& params); -	void show(const std::string& message); +	void show(const std::string& message, bool allow_paste_tooltip = false);  	void unblockToolTips();  	void blockToolTips(); @@ -154,6 +159,7 @@ public:  	void updateToolTipVisibility();  	void getToolTipMessage(std::string & message); +    bool isTooltipPastable();  private:  	void createToolTip(const LLToolTip::Params& params); diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index 057d7a700e..4b72ade469 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -412,8 +412,8 @@ struct LLWindowWin32::LLWindowWin32Thread : public LL::ThreadPool      using FuncType = std::function<void()>;      // call GetMessage() and pull enqueue messages for later processing      void gatherInput(); -    HWND mWindowHandle = NULL; -    HDC mhDC = 0; +    HWND mWindowHandleThrd = NULL; +    HDC mhDCThrd = 0;      // *HACK: Attempt to prevent startup crashes by deferring memory accounting      // until after some graphics setup. See SL-20177. -Cosmic,2023-09-18 @@ -987,23 +987,23 @@ void LLWindowWin32::close()  	LL_DEBUGS("Window") << "Destroying Window" << LL_ENDL; -    mWindowThread->post([=]() +    mWindowThread->post([this, self = mWindowThread]()          { -            if (IsWindow(mWindowHandle)) +            if (IsWindow(self->mWindowHandleThrd))              { -                if (mhDC) +                if (self->mhDCThrd)                  { -                    if (!ReleaseDC(mWindowHandle, mhDC)) +                    if (!ReleaseDC(self->mWindowHandleThrd, self->mhDCThrd))                      {                          LL_WARNS("Window") << "Release of ghDC failed!" << LL_ENDL;                      }                  }                  // Make sure we don't leave a blank toolbar button. -                ShowWindow(mWindowHandle, SW_HIDE); +                ShowWindow(self->mWindowHandleThrd, SW_HIDE);                  // This causes WM_DESTROY to be sent *immediately* -                if (!destroy_window_handler(mWindowHandle)) +                if (!destroy_window_handler(self->mWindowHandleThrd))                  {                      OSMessageBox(mCallbacks->translateString("MBDestroyWinFailed"),                          mCallbacks->translateString("MBShutdownErr"), @@ -1015,17 +1015,18 @@ void LLWindowWin32::close()                  // Something killed the window while we were busy destroying gl or handle somehow got broken                  LL_WARNS("Window") << "Failed to destroy Window, invalid handle!" << LL_ENDL;              } - +            self->mWindowHandleThrd = NULL; +            self->mhDCThrd = NULL; +            self->mGLReady = false;          }); -    // Window thread might be waiting for a getMessage(), give it -    // a push to enshure it will process destroy_window_handler -    kickWindowThread(); -    // Even though the above lambda might not yet have run, we've already -    // bound mWindowHandle into it by value, which should suffice for the -    // operations we're asking. That's the last time WE should touch it.      mhDC = NULL;      mWindowHandle = NULL; + +    // Window thread might be waiting for a getMessage(), give it +    // a push to enshure it will process destroy_window_handler +    kickWindowThread(); +          mWindowThread->close();  } @@ -1777,8 +1778,8 @@ void LLWindowWin32::recreateWindow(RECT window_rect, DWORD dw_ex_style, DWORD dw          ()          {              LL_DEBUGS("Window") << "recreateWindow(): window_work entry" << LL_ENDL; -            self->mWindowHandle = 0; -            self->mhDC = 0; +            self->mWindowHandleThrd = 0; +            self->mhDCThrd = 0;              if (oldWindowHandle)              { @@ -1813,20 +1814,20 @@ void LLWindowWin32::recreateWindow(RECT window_rect, DWORD dw_ex_style, DWORD dw              {                  // Failed to create window: clear the variables. This                  // assignment is valid because we're running on mWindowThread. -                self->mWindowHandle = NULL; -                self->mhDC = 0; +                self->mWindowHandleThrd = NULL; +                self->mhDCThrd = 0;              }              else              {                  // Update mWindowThread's own mWindowHandle and mhDC. -                self->mWindowHandle = handle; -                self->mhDC = GetDC(handle); +                self->mWindowHandleThrd = handle; +                self->mhDCThrd = GetDC(handle);              }              updateWindowRect();              // It's important to wake up the future either way. -            promise.set_value(std::make_pair(self->mWindowHandle, self->mhDC)); +            promise.set_value(std::make_pair(self->mWindowHandleThrd, self->mhDCThrd));              LL_DEBUGS("Window") << "recreateWindow(): window_work done" << LL_ENDL;          };      // But how we pass window_work to the window thread depends on whether we @@ -3656,6 +3657,9 @@ void LLSplashScreenWin32::showImpl()  		NULL,	// no parent  		(DLGPROC) LLSplashScreenWin32::windowProc);   	ShowWindow(mWindow, SW_SHOW); + +    // Should set taskbar text without creating a header for the window (caption) +    SetWindowTextA(mWindow, "Second Life");  } @@ -4589,7 +4593,7 @@ U32 LLWindowWin32::getAvailableVRAMMegabytes()  #endif // LL_WINDOWS  inline LLWindowWin32::LLWindowWin32Thread::LLWindowWin32Thread() -    : LL::ThreadPool("Window Thread", 1, MAX_QUEUE_SIZE) +    : LL::ThreadPool("Window Thread", 1, MAX_QUEUE_SIZE, false)  {      LL::ThreadPool::start();  } @@ -4745,7 +4749,7 @@ void LLWindowWin32::LLWindowWin32Thread::initD3D()  {      if (!mGLReady) { return; } -    if (mDXGIAdapter == NULL && mD3DDevice == NULL && mWindowHandle != 0) +    if (mDXGIAdapter == NULL && mD3DDevice == NULL && mWindowHandleThrd != 0)      {          mD3D = Direct3DCreate9(D3D_SDK_VERSION); @@ -4755,7 +4759,7 @@ void LLWindowWin32::LLWindowWin32Thread::initD3D()          d3dpp.Windowed = TRUE;          d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; -        HRESULT res = mD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, mWindowHandle, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &mD3DDevice); +        HRESULT res = mD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, mWindowHandleThrd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &mD3DDevice);          if (FAILED(res))          { @@ -4861,7 +4865,7 @@ void LLWindowWin32::LLWindowWin32Thread::run()          // lazily call initD3D inside this loop to catch when mGLReady has been set to true          initDX(); -        if (mWindowHandle != 0) +        if (mWindowHandleThrd != 0)          {              // lazily call initD3D inside this loop to catch when mWindowHandle has been set, and mGLReady has been set to true              // *TODO: Shutdown if this fails when mWindowHandle exists @@ -4869,16 +4873,16 @@ void LLWindowWin32::LLWindowWin32Thread::run()              MSG msg;              BOOL status; -            if (mhDC == 0) +            if (mhDCThrd == 0)              {                  LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("w32t - PeekMessage"); -                logger.onChange("PeekMessage(", std::hex, mWindowHandle, ")"); -                status = PeekMessage(&msg, mWindowHandle, 0, 0, PM_REMOVE); +                logger.onChange("PeekMessage(", std::hex, mWindowHandleThrd, ")"); +                status = PeekMessage(&msg, mWindowHandleThrd, 0, 0, PM_REMOVE);              }              else              {                  LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("w32t - GetMessage"); -                logger.always("GetMessage(", std::hex, mWindowHandle, ")"); +                logger.always("GetMessage(", std::hex, mWindowHandleThrd, ")");                  status = GetMessage(&msg, NULL, 0, 0);              }              if (status > 0) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 00b59f9a4d..697449e4c2 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -5431,6 +5431,17 @@        <key>Value</key>        <string>http://wiki.secondlife.com/wiki/[LSL_STRING]</string>      </map> +    <key>LSLFontSizeName</key> +    <map> +        <key>Comment</key> +        <string>Text font size in LSL editor</string> +        <key>Persist</key> +        <integer>1</integer> +        <key>Type</key> +        <string>String</string> +        <key>Value</key> +        <string>Monospace</string> +    </map>      <key>GridStatusRSS</key>      <map>        <key>Comment</key> @@ -7507,10 +7518,21 @@        <key>Value</key>        <integer>1</integer>      </map> +    <key>OpenDebugStatBasic</key> +    <map> +      <key>Comment</key> +      <string>Expand Basic performance stats display</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>Boolean</string> +      <key>Value</key> +      <integer>1</integer> +    </map>      <key>OpenDebugStatAdvanced</key>      <map>        <key>Comment</key> -      <string>Expand advanced performance stats display</string> +      <string>Expand Advanced performance stats display</string>        <key>Persist</key>        <integer>1</integer>        <key>Type</key> @@ -7518,10 +7540,10 @@        <key>Value</key>        <integer>0</integer>      </map> -    <key>OpenDebugStatBasic</key> +    <key>OpenDebugStatRender</key>      <map>        <key>Comment</key> -      <string>Expand basic performance stats display</string> +      <string>Expand Render performance stats display</string>        <key>Persist</key>        <integer>1</integer>        <key>Type</key> @@ -7529,10 +7551,21 @@        <key>Value</key>        <integer>1</integer>      </map> -    <key>OpenDebugStatNet</key> +    <key>OpenDebugStatTexture</key> +    <map> +      <key>Comment</key> +      <string>Expand Texture performance stats display</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>Boolean</string> +      <key>Value</key> +      <integer>0</integer> +    </map> +    <key>OpenDebugStatMemory</key>      <map>        <key>Comment</key> -      <string>Expand network stats display</string> +      <string>Expand Memory Usage stats display</string>        <key>Persist</key>        <integer>1</integer>        <key>Type</key> @@ -7540,10 +7573,10 @@        <key>Value</key>        <integer>1</integer>      </map> -    <key>OpenDebugStatRender</key> +    <key>OpenDebugStatNet</key>      <map>        <key>Comment</key> -      <string>Expand render stats display</string> +      <string>Expand Network performance stats display</string>        <key>Persist</key>        <integer>1</integer>        <key>Type</key> @@ -7554,7 +7587,7 @@      <key>OpenDebugStatSim</key>      <map>        <key>Comment</key> -      <string>Expand simulator performance stats display</string> +      <string>Expand Simulator performance stats display</string>        <key>Persist</key>        <integer>1</integer>        <key>Type</key> @@ -7562,10 +7595,10 @@        <key>Value</key>        <integer>1</integer>      </map> -    <key>OpenDebugStatTexture</key> +    <key>OpenDebugStatPhysicsDetails</key>      <map>        <key>Comment</key> -      <string>Expand Texture performance stats display</string> +      <string>Expand Physics Details performance stats display</string>        <key>Persist</key>        <integer>1</integer>        <key>Type</key> @@ -7573,10 +7606,10 @@        <key>Value</key>        <integer>0</integer>      </map> -    <key>OpenDebugStatPhysicsDetails</key> +    <key>OpenDebugStatPathfinding</key>      <map>        <key>Comment</key> -      <string>Expand Physics Details performance stats display</string> +      <string>Expand Pathfinding performance stats display</string>        <key>Persist</key>        <integer>1</integer>        <key>Type</key> diff --git a/indra/newview/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml index 2cdd86267e..aef402d4db 100644 --- a/indra/newview/character/avatar_lad.xml +++ b/indra/newview/character/avatar_lad.xml @@ -2021,7 +2021,7 @@       value_min="-1"       value_max="1">        <param_skeleton> -	   +          <bone           name="mEyeLeft"           scale="0 0 0" @@ -2031,9 +2031,8 @@           name="mEyeRight"           scale="0 0 0"           offset="-.005 0 0" /> -		  -	   -<bone + +        <bone           name="mFaceEyeAltLeft"           scale="0 0 0"           offset="-.005 0 0" /> @@ -2042,7 +2041,7 @@           name="mFaceEyeAltRight"           scale="0 0 0"           offset="-.005 0 0" /> -	   +          <bone           name="mFaceEyeLidLowerRight"           scale="0 0.3 0.7" @@ -2053,7 +2052,7 @@           scale="0 0.3 0.7"           offset="0 0 0" /> -		 <bone +        <bone           name="mFaceEyeLidUpperRight"           scale="0 0.3 0.7"           offset=" 0 0 0" /> @@ -2062,17 +2061,17 @@           name="mFaceEyeLidUpperLeft"           scale="0 0.3 0.7"           offset=" 0 0 0" /> -		  +          <bone           name="mFaceEyecornerInnerLeft"           scale="0 0 0"           offset="-0.005 -0.008 0.0" /> -		  +          <bone           name="mFaceEyecornerInnerRight"           scale="0 0 0"           offset="-0.005 0.008 0.0" /> -		  +        </param_skeleton>      </param> diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 4a43133ff6..f094170ff5 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1892,6 +1892,9 @@ bool LLAppViewer::cleanup()  		LL_INFOS() << "ViewerWindow deleted" << LL_ENDL;  	} +    LLSplashScreen::show(); +    LLSplashScreen::update(LLTrans::getString("ShuttingDown")); +  	LL_INFOS() << "Cleaning up Keyboard & Joystick" << LL_ENDL;  	// viewer UI relies on keyboard so keep it aound until viewer UI isa gone @@ -2170,6 +2173,8 @@ bool LLAppViewer::cleanup()  	// deleteSingleton() methods.  	LLSingletonBase::deleteAll(); +    LLSplashScreen::hide(); +      LL_INFOS() << "Goodbye!" << LL_ENDL;  	removeDumpDir(); @@ -2944,13 +2949,14 @@ bool LLAppViewer::initConfiguration()  	if (mSecondInstance)  	{ -		// This is the second instance of SL. Turn off voice support, +		// This is the second instance of SL. Mute voice,  		// but make sure the setting is *not* persisted. -		LLControlVariable* disable_voice = gSavedSettings.getControl("CmdLineDisableVoice"); -		if(disable_voice) +		// Also see LLVivoxVoiceClient::voiceEnabled() +		LLControlVariable* enable_voice = gSavedSettings.getControl("EnableVoiceChat"); +		if(enable_voice)  		{  			const BOOL DO_NOT_PERSIST = FALSE; -			disable_voice->setValue(LLSD(TRUE), DO_NOT_PERSIST); +			enable_voice->setValue(LLSD(FALSE), DO_NOT_PERSIST);  		}  	} @@ -5058,6 +5064,9 @@ void LLAppViewer::idleShutdown()  		&& gLogoutTimer.getElapsedTimeF32() < SHUTDOWN_UPLOAD_SAVE_TIME  		&& !logoutRequestSent())  	{ +        gViewerWindow->setShowProgress(TRUE); +        gViewerWindow->setProgressPercent(100.f); +        gViewerWindow->setProgressString(LLTrans::getString("LoggingOut"));  		return;  	} @@ -5422,9 +5431,18 @@ void LLAppViewer::forceErrorBadMemoryAccess()  void LLAppViewer::forceErrorInfiniteLoop()  {     	LL_WARNS() << "Forcing a deliberate infinite loop" << LL_ENDL; +    // Loop is intentionally complicated to fool basic loop detection +    LLTimer timer_total; +    LLTimer timer_expiry; +    const S32 report_frequency = 10; +    timer_expiry.setTimerExpirySec(report_frequency);      while(true)      { -        ; +        if (timer_expiry.hasExpired()) +        { +            LL_INFOS() << "Infinite loop time : " << timer_total.getElapsedSeconds() << LL_ENDL; +            timer_expiry.setTimerExpirySec(report_frequency); +        }      }      return;  } @@ -5435,6 +5453,13 @@ void LLAppViewer::forceErrorSoftwareException()      LLTHROW(LLException("User selected Force Software Exception"));  } +void LLAppViewer::forceErrorOSSpecificException() +{ +    // Virtual, MacOS only +    const std::string exception_text = "User selected Force OS Exception, Not implemented on this OS"; +    throw std::runtime_error(exception_text); +} +  void LLAppViewer::forceErrorDriverCrash()  {     	LL_WARNS() << "Forcing a deliberate driver crash" << LL_ENDL; diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h index 6d1496d517..c5faa67120 100644 --- a/indra/newview/llappviewer.h +++ b/indra/newview/llappviewer.h @@ -156,6 +156,7 @@ public:      virtual void forceErrorBadMemoryAccess();      virtual void forceErrorInfiniteLoop();      virtual void forceErrorSoftwareException(); +    virtual void forceErrorOSSpecificException();      virtual void forceErrorDriverCrash();      virtual void forceErrorCoroutineCrash();      virtual void forceErrorThreadCrash(); diff --git a/indra/newview/llappviewermacosx-objc.h b/indra/newview/llappviewermacosx-objc.h index c6dcec8e34..3721151aba 100644 --- a/indra/newview/llappviewermacosx-objc.h +++ b/indra/newview/llappviewermacosx-objc.h @@ -33,4 +33,6 @@  //Why?  Because BOOL  void launchApplication(const std::string* app_name, const std::vector<std::string>* args); +void force_ns_sxeption(); +  #endif // LL_LLAPPVIEWERMACOSX_OBJC_H diff --git a/indra/newview/llappviewermacosx-objc.mm b/indra/newview/llappviewermacosx-objc.mm index 17301847e8..5d9ca24db2 100644 --- a/indra/newview/llappviewermacosx-objc.mm +++ b/indra/newview/llappviewermacosx-objc.mm @@ -71,3 +71,9 @@ void launchApplication(const std::string* app_name, const std::vector<std::strin      [pool release];  	return;  } + +void force_ns_sxeption() +{ +    NSException *exception = [NSException exceptionWithName:@"Forced NSException" reason:nullptr userInfo:nullptr]; +    @throw exception; +} diff --git a/indra/newview/llappviewermacosx.cpp b/indra/newview/llappviewermacosx.cpp index 8b313a321b..c42c3b3daf 100644 --- a/indra/newview/llappviewermacosx.cpp +++ b/indra/newview/llappviewermacosx.cpp @@ -250,6 +250,11 @@ bool LLAppViewerMacOSX::init()      return LLAppViewer::init();  } +void LLAppViewerMacOSX::forceErrorOSSpecificException() +{ +    force_ns_sxeption(); +} +  // MacOSX may add and addition command line arguement for the process serial number.  // The option takes a form like '-psn_0_12345'. The following method should be able to recognize  // and either ignore or return a pair of values for the option. diff --git a/indra/newview/llappviewermacosx.h b/indra/newview/llappviewermacosx.h index b0e325a955..15c55c44a6 100644 --- a/indra/newview/llappviewermacosx.h +++ b/indra/newview/llappviewermacosx.h @@ -42,6 +42,8 @@ public:  	//  	virtual bool init();			// Override to do application initialization +    virtual void forceErrorOSSpecificException(); +  protected:  	virtual bool restoreErrorTrap(); diff --git a/indra/newview/llcontrolavatar.cpp b/indra/newview/llcontrolavatar.cpp index 7def9c045f..50b9af668b 100644 --- a/indra/newview/llcontrolavatar.cpp +++ b/indra/newview/llcontrolavatar.cpp @@ -379,6 +379,7 @@ void LLControlAvatar::idleUpdate(LLAgent &agent, const F64 &time)  void LLControlAvatar::markDead()  { +    mRootVolp = NULL;      super::markDead();      mControlAVBridge = NULL;  } diff --git a/indra/newview/llconversationmodel.cpp b/indra/newview/llconversationmodel.cpp index 9ec4fb085b..9e043dbac0 100644 --- a/indra/newview/llconversationmodel.cpp +++ b/indra/newview/llconversationmodel.cpp @@ -90,6 +90,8 @@ LLConversationItem::~LLConversationItem()  	{  		mAvatarNameCacheConnection.disconnect();  	} + +    clearChildren();  }  //virtual @@ -254,6 +256,11 @@ LLConversationItemSession::LLConversationItemSession(const LLUUID& uuid, LLFolde  	mConvType = CONV_SESSION_UNKNOWN;  } +LLConversationItemSession::~LLConversationItemSession() +{ +    clearAndDeparentModels(); +} +  bool LLConversationItemSession::hasChildren() const  {  	return getChildrenCount() > 0; diff --git a/indra/newview/llconversationmodel.h b/indra/newview/llconversationmodel.h index 0cbfad8b73..436c9c00ab 100644 --- a/indra/newview/llconversationmodel.h +++ b/indra/newview/llconversationmodel.h @@ -157,6 +157,7 @@ class LLConversationItemSession : public LLConversationItem  public:  	LLConversationItemSession(std::string display_name, const LLUUID& uuid, LLFolderViewModelInterface& root_view_model);  	LLConversationItemSession(const LLUUID& uuid, LLFolderViewModelInterface& root_view_model); +    ~LLConversationItemSession();  	/*virtual*/ bool hasChildren() const;      LLPointer<LLUIImage> getIcon() const { return NULL; } diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp index 5b8ca6c49c..a7998f6e9e 100644 --- a/indra/newview/llfasttimerview.cpp +++ b/indra/newview/llfasttimerview.cpp @@ -947,7 +947,7 @@ void LLFastTimerView::printLineStats()  	{  		std::string legend_stat;  		bool first = true; -		for(block_timer_tree_df_iterator_t it = LLTrace::begin_block_timer_tree_df(FTM_FRAME); +		for(LLTrace::block_timer_tree_df_iterator_t it = LLTrace::begin_block_timer_tree_df(FTM_FRAME);  			it != LLTrace::end_block_timer_tree_df();  			++it)  		{ @@ -969,7 +969,7 @@ void LLFastTimerView::printLineStats()  		std::string timer_stat;  		first = true; -		for(block_timer_tree_df_iterator_t it = LLTrace::begin_block_timer_tree_df(FTM_FRAME); +		for(LLTrace::block_timer_tree_df_iterator_t it = LLTrace::begin_block_timer_tree_df(FTM_FRAME);  			it != LLTrace::end_block_timer_tree_df();  			++it)  		{ @@ -1046,7 +1046,7 @@ void LLFastTimerView::drawLineGraph()  	F32Seconds cur_max(0);  	U32 cur_max_calls = 0; -	for(block_timer_tree_df_iterator_t it = LLTrace::begin_block_timer_tree_df(FTM_FRAME); +	for(LLTrace::block_timer_tree_df_iterator_t it = LLTrace::begin_block_timer_tree_df(FTM_FRAME);  		it != LLTrace::end_block_timer_tree_df();  		++it)  	{ @@ -1195,8 +1195,8 @@ void LLFastTimerView::drawLegend()  		S32 scroll_offset = 0; // element's y offset from top of the inner scroll's rect  		ft_display_idx.clear();  		std::map<BlockTimerStatHandle*, S32> display_line; -		for (block_timer_tree_df_iterator_t it = LLTrace::begin_block_timer_tree_df(FTM_FRAME); -			it != block_timer_tree_df_iterator_t(); +		for (LLTrace::block_timer_tree_df_iterator_t it = LLTrace::begin_block_timer_tree_df(FTM_FRAME); +			it != LLTrace::end_block_timer_tree_df();  			++it)  		{  			BlockTimerStatHandle* idp = (*it); @@ -1311,8 +1311,8 @@ void LLFastTimerView::generateUniqueColors()  		F32 hue = 0.f; -		for (block_timer_tree_df_iterator_t it = LLTrace::begin_block_timer_tree_df(FTM_FRAME); -			it != block_timer_tree_df_iterator_t(); +		for (LLTrace::block_timer_tree_df_iterator_t it = LLTrace::begin_block_timer_tree_df(FTM_FRAME); +			it != LLTrace::end_block_timer_tree_df();  			++it)  		{  			BlockTimerStatHandle* idp = (*it); diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp index cdce6f7156..c1d8828229 100644 --- a/indra/newview/llfavoritesbar.cpp +++ b/indra/newview/llfavoritesbar.cpp @@ -320,6 +320,7 @@ public:  		if (item)  		{ +            LLFavoritesBarCtrl::sWaitingForCallabck = 0.f;  			LLFavoritesOrderStorage::instance().setSortIndex(item, mSortField);  			item->setComplete(TRUE); @@ -365,6 +366,9 @@ struct LLFavoritesSort  	}  }; + +F64 LLFavoritesBarCtrl::sWaitingForCallabck = 0.f; +  LLFavoritesBarCtrl::Params::Params()  : image_drag_indication("image_drag_indication"),    more_button("more_button"), @@ -381,7 +385,7 @@ LLFavoritesBarCtrl::LLFavoritesBarCtrl(const LLFavoritesBarCtrl::Params& p)  	mShowDragMarker(FALSE),  	mLandingTab(NULL),  	mLastTab(NULL), -	mTabsHighlightEnabled(TRUE), +    mItemsListDirty(false),  	mUpdateDropDownItems(true),  	mRestoreOverflowMenu(false),  	mGetPrevItems(true), @@ -618,6 +622,9 @@ void LLFavoritesBarCtrl::handleNewFavoriteDragAndDrop(LLInventoryItem *item, con  	int sortField = 0;  	LLPointer<LLItemCopiedCallback> cb; +    const F64 CALLBACK_WAIT_TIME = 30.f; +    sWaitingForCallabck = LLTimer::getTotalSeconds() + CALLBACK_WAIT_TIME; +  	// current order is saved by setting incremental values (1, 2, 3, ...) for the sort field  	for (LLInventoryModel::item_array_t::iterator i = mItems.begin(); i != mItems.end(); ++i)  	{ @@ -691,16 +698,22 @@ void LLFavoritesBarCtrl::changed(U32 mask)  			LLFavoritesOrderStorage::instance().getSLURL((*i)->getAssetUUID());  		} -		updateButtons(); -		if (!mItemsChangedTimer.getStarted()) -		{ -			mItemsChangedTimer.start(); -		} -		else -		{ -			mItemsChangedTimer.reset(); -		} - +        if (sWaitingForCallabck < LLTimer::getTotalSeconds()) +        { +            updateButtons(); +            if (!mItemsChangedTimer.getStarted()) +            { +                mItemsChangedTimer.start(); +            } +            else +            { +                mItemsChangedTimer.reset(); +            } +        } +        else +        { +            mItemsListDirty = true; +        }  	}  } @@ -754,6 +767,18 @@ void LLFavoritesBarCtrl::draw()  		mItemsChangedTimer.start();  	} +    if (mItemsListDirty && sWaitingForCallabck < LLTimer::getTotalSeconds()) +    { +        updateButtons(); +        if (!mItemsChangedTimer.getStarted()) +        { +            mItemsChangedTimer.start(); +        } +        else +        { +            mItemsChangedTimer.reset(); +        } +    }  }  const LLButton::Params& LLFavoritesBarCtrl::getButtonParams() @@ -782,6 +807,7 @@ void LLFavoritesBarCtrl::updateButtons(bool force_update)          return;      } +    mItemsListDirty = false;  	mItems.clear();  	if (!collectFavoriteItems(mItems)) diff --git a/indra/newview/llfavoritesbar.h b/indra/newview/llfavoritesbar.h index 3b439b31fd..68a679e27f 100644 --- a/indra/newview/llfavoritesbar.h +++ b/indra/newview/llfavoritesbar.h @@ -53,6 +53,7 @@ public:  protected:  	LLFavoritesBarCtrl(const Params&);  	friend class LLUICtrlFactory; +    friend class LLItemCopiedCallback;  public:  	virtual ~LLFavoritesBarCtrl(); @@ -84,7 +85,6 @@ protected:  	void onButtonRightClick(LLUUID id,LLView* button,S32 x,S32 y,MASK mask);  	void onButtonMouseDown(LLUUID id, LLUICtrl* button, S32 x, S32 y, MASK mask); -	void onOverflowMenuItemMouseDown(LLUUID id, LLUICtrl* item, S32 x, S32 y, MASK mask);  	void onButtonMouseUp(LLUUID id, LLUICtrl* button, S32 x, S32 y, MASK mask);  	void onEndDrag(); @@ -164,7 +164,8 @@ private:  	BOOL mStartDrag;  	LLInventoryModel::item_array_t mItems; -	BOOL mTabsHighlightEnabled; +    static F64 sWaitingForCallabck; +    bool mItemsListDirty;  	S32 mMouseX;  	S32 mMouseY; diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp index f997dc9910..635aee64ff 100644 --- a/indra/newview/llfloaterimcontainer.cpp +++ b/indra/newview/llfloaterimcontainer.cpp @@ -1770,6 +1770,7 @@ void LLFloaterIMContainer::setTimeNow(const LLUUID& session_id, const LLUUID& pa  	LLConversationItemSession* item = dynamic_cast<LLConversationItemSession*>(getSessionModel(session_id));  	if (item)  	{ +        item->setTimeNow(participant_id);  		mConversationViewModel.requestSortAll();  		mConversationsRoot->arrangeAll();  	} diff --git a/indra/newview/llfloaterimnearbychathandler.cpp b/indra/newview/llfloaterimnearbychathandler.cpp index 4cd91c53d8..eb7bd843d3 100644 --- a/indra/newview/llfloaterimnearbychathandler.cpp +++ b/indra/newview/llfloaterimnearbychathandler.cpp @@ -522,6 +522,8 @@ void LLFloaterIMNearbyChatHandler::processChat(const LLChat& chat_msg,  	// errors in separate window.  	if (chat_msg.mChatType == CHAT_TYPE_DEBUG_MSG)  	{ +        if (LLFloater::isQuitRequested()) return; +  		if(gSavedSettings.getBOOL("ShowScriptErrors") == FALSE)  			return; diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index aa723eb3a8..b65d727948 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -113,6 +113,7 @@  #include "llpresetsmanager.h"  #include "llviewercontrol.h"  #include "llpresetsmanager.h" +#include "llinventoryfunctions.h"  #include "llsearchableui.h"  #include "llperfstats.h" @@ -1628,25 +1629,6 @@ void LLFloaterPreference::onChangeMaturity()  	getChild<LLIconCtrl>("rating_icon_adult")->setVisible(sim_access == SIM_ACCESS_ADULT);  } -std::string get_category_path(LLUUID cat_id) -{ -    LLViewerInventoryCategory* cat = gInventory.getCategory(cat_id); -    std::string localized_cat_name; -    if (!LLTrans::findString(localized_cat_name, "InvFolder " + cat->getName())) -    { -        localized_cat_name = cat->getName(); -    } - -    if (cat->getParentUUID().notNull()) -    { -        return get_category_path(cat->getParentUUID()) + " > " + localized_cat_name; -    } -    else -    { -        return localized_cat_name; -    } -} -  std::string get_category_path(LLFolderType::EType cat_type)  {      LLUUID cat_id = gInventory.findUserDefinedCategoryUUIDForType(cat_type); diff --git a/indra/newview/llfloaterprofiletexture.cpp b/indra/newview/llfloaterprofiletexture.cpp index bf1f56a6d1..ec2e627165 100644 --- a/indra/newview/llfloaterprofiletexture.cpp +++ b/indra/newview/llfloaterprofiletexture.cpp @@ -58,6 +58,8 @@ LLFloaterProfileTexture::~LLFloaterProfileTexture()          mImage->setBoostLevel(mImageOldBoostLevel);          mImage = NULL;      } + +    LLLoadedCallbackEntry::cleanUpCallbackList(&mCallbackTextureList);  }  // virtual diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index d4eb40ff92..187ac9d323 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -144,7 +144,7 @@ public:  		const LLUUID& invoice,  		const sparam_t& strings); -	LLSD getIDs( sparam_t::const_iterator it, sparam_t::const_iterator end, S32 count ); +	static LLSD getIDs( sparam_t::const_iterator it, sparam_t::const_iterator end, S32 count );  }; @@ -2450,11 +2450,12 @@ bool LLDispatchSetEstateAccess::operator()(  	return true;  } +// static  LLSD LLDispatchSetEstateExperience::getIDs( sparam_t::const_iterator it, sparam_t::const_iterator end, S32 count )  {  	LLSD idList = LLSD::emptyArray();  	LLUUID id; -	while(count--> 0) +	while (count-- > 0 && it < end)  	{  		memcpy(id.mData, (*(it++)).data(), UUID_BYTES);  		idList.append(id); @@ -2468,7 +2469,7 @@ LLSD LLDispatchSetEstateExperience::getIDs( sparam_t::const_iterator it, sparam_  // strings[2] = str(num blocked)  // strings[3] = str(num trusted)  // strings[4] = str(num allowed) -// strings[8] = bin(uuid) ... +// strings[5] = bin(uuid) ...  // ...  bool LLDispatchSetEstateExperience::operator()(  	const LLDispatcher* dispatcher, @@ -2477,23 +2478,30 @@ bool LLDispatchSetEstateExperience::operator()(  	const sparam_t& strings)  {  	LLPanelRegionExperiences* panel = LLFloaterRegionInfo::getPanelExperiences(); -	if (!panel) return true; +	if (!panel) +		return true; + +	const sparam_t::size_type MIN_SIZE = 5; +	if (strings.size() < MIN_SIZE) +		return true; +	// Skip 2 parameters  	sparam_t::const_iterator it = strings.begin();  	++it; // U32 estate_id = strtol((*it).c_str(), NULL, 10);  	++it; // U32 send_to_agent_only = strtoul((*(++it)).c_str(), NULL, 10); +	// Read 3 parameters  	LLUUID id;  	S32 num_blocked = strtol((*(it++)).c_str(), NULL, 10);  	S32 num_trusted = strtol((*(it++)).c_str(), NULL, 10);  	S32 num_allowed = strtol((*(it++)).c_str(), NULL, 10);  	LLSD ids = LLSD::emptyMap() -		.with("blocked", getIDs(it,								strings.end(), num_blocked)) -		.with("trusted", getIDs(it + (num_blocked),				strings.end(), num_trusted)) -		.with("allowed", getIDs(it + (num_blocked+num_trusted),	strings.end(), num_allowed)); +		.with("blocked", getIDs(it, strings.end(), num_blocked)) +		.with("trusted", getIDs(it + num_blocked, strings.end(), num_trusted)) +		.with("allowed", getIDs(it + num_blocked + num_trusted, strings.end(), num_allowed)); -	panel->processResponse(ids);			 +	panel->processResponse(ids);  	return true;  } diff --git a/indra/newview/llfloatersidepanelcontainer.cpp b/indra/newview/llfloatersidepanelcontainer.cpp index a875d33679..532e7da67f 100644 --- a/indra/newview/llfloatersidepanelcontainer.cpp +++ b/indra/newview/llfloatersidepanelcontainer.cpp @@ -67,14 +67,14 @@ void LLFloaterSidePanelContainer::closeFloater(bool app_quitting)  		if (parent == this )  		{  			LLSidepanelAppearance* panel_appearance = dynamic_cast<LLSidepanelAppearance*>(getPanel("appearance")); -			if ( panel_appearance ) +			if (panel_appearance)  			{  				LLPanelEditWearable *edit_wearable_ptr = panel_appearance->getWearable();  				if (edit_wearable_ptr)  				{  					edit_wearable_ptr->onClose();  				} -				if(!app_quitting) +				if (!app_quitting)  				{  					panel_appearance->showOutfitsInventoryPanel();  				} @@ -116,11 +116,16 @@ LLFloater* LLFloaterSidePanelContainer::getTopmostInventoryFloater()  LLPanel* LLFloaterSidePanelContainer::openChildPanel(const std::string& panel_name, const LLSD& params)  {  	LLView* view = findChildView(panel_name, true); -	if (!view) return NULL; +	if (!view) +		return NULL;  	if (!getVisible())  	{ -	openFloater(); +		openFloater(); +	} +	else if (!hasFocus()) +	{ +		setFocus(TRUE);  	}  	LLPanel* panel = NULL; diff --git a/indra/newview/llhudnametag.cpp b/indra/newview/llhudnametag.cpp index 26fc899eb5..5524bb7f09 100644 --- a/indra/newview/llhudnametag.cpp +++ b/indra/newview/llhudnametag.cpp @@ -897,6 +897,15 @@ void LLHUDNameTag::shift(const LLVector3& offset)  	mPositionAgent += offset;  } +F32 LLHUDNameTag::getWorldHeight() const +{ +	const LLViewerCamera* camera = LLViewerCamera::getInstance(); +	F32 height_meters = mLastDistance * (F32)tan(camera->getView() / 2.f); +	F32 height_pixels = camera->getViewHeightInPixels() / 2.f; +	F32 meters_per_pixel = height_meters / height_pixels; +	return mHeight * meters_per_pixel * gViewerWindow->getDisplayScale().mV[VY]; +} +  //static   void LLHUDNameTag::addPickable(std::set<LLViewerObject*> &pick_list)  { diff --git a/indra/newview/llhudnametag.h b/indra/newview/llhudnametag.h index 361e4d4f4b..592ab5518f 100644 --- a/indra/newview/llhudnametag.h +++ b/indra/newview/llhudnametag.h @@ -127,11 +127,12 @@ public:  	/*virtual*/ void markDead();  	friend class LLHUDObject;  	/*virtual*/ F32 getDistance() const { return mLastDistance; } -	S32  getLOD() { return mLOD; } -	BOOL getVisible() { return mVisible; } +	S32  getLOD() const { return mLOD; } +	BOOL getVisible() const { return mVisible; }  	BOOL getHidden() const { return mHidden; }  	void setHidden( BOOL hide ) { mHidden = hide; }  	void shift(const LLVector3& offset); +	F32 getWorldHeight() const;  	BOOL lineSegmentIntersect(const LLVector4a& start, const LLVector4a& end, LLVector4a& intersection, BOOL debug_render = FALSE); diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 932a0316dd..7a9d0ff7a7 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -1778,7 +1778,7 @@ void LLItemBridge::performAction(LLInventoryModel* model, std::string action)  	}  	else if ("show_in_main_panel" == action)  	{ -		LLInventoryPanel::openInventoryPanelAndSetSelection(TRUE, mUUID, TRUE); +		LLInventoryPanel::openInventoryPanelAndSetSelection(true, mUUID, true);  		return;  	}  	else if ("cut" == action) @@ -3409,7 +3409,7 @@ void LLFolderBridge::performAction(LLInventoryModel* model, std::string action)  	}  	else if ("show_in_main_panel" == action)  	{ -		LLInventoryPanel::openInventoryPanelAndSetSelection(TRUE, mUUID, TRUE); +		LLInventoryPanel::openInventoryPanelAndSetSelection(true, mUUID, true);  		return;  	}  	else if ("cut" == action) diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp index 4aeacae6ed..8122f3bcf5 100644 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -2151,6 +2151,24 @@ void move_items_to_new_subfolder(const uuid_vec_t& selected_uuids, const std::st      gInventory.createNewCategory(first_item->getParentUUID(), LLFolderType::FT_NONE, folder_name, func);  } +std::string get_category_path(LLUUID cat_id) +{ +    LLViewerInventoryCategory *cat = gInventory.getCategory(cat_id); +    std::string localized_cat_name; +    if (!LLTrans::findString(localized_cat_name, "InvFolder " + cat->getName())) +    { +        localized_cat_name = cat->getName(); +    } + +    if (cat->getParentUUID().notNull()) +    { +        return get_category_path(cat->getParentUUID()) + " > " + localized_cat_name; +    } +    else +    { +        return localized_cat_name; +    } +}  // Returns true if the item can be moved to Current Outfit or any outfit folder.  bool can_move_to_outfit(LLInventoryItem* inv_item, BOOL move_is_into_current_outfit)  { diff --git a/indra/newview/llinventoryfunctions.h b/indra/newview/llinventoryfunctions.h index 925217dda3..fcbef57101 100644 --- a/indra/newview/llinventoryfunctions.h +++ b/indra/newview/llinventoryfunctions.h @@ -106,6 +106,7 @@ void move_items_to_new_subfolder(const uuid_vec_t& selected_uuids, const std::st  void move_items_to_folder(const LLUUID& new_cat_uuid, const uuid_vec_t& selected_uuids);  bool is_only_cats_selected(const uuid_vec_t& selected_uuids);  bool is_only_items_selected(const uuid_vec_t& selected_uuids); +std::string get_category_path(LLUUID cat_id);  bool can_move_to_outfit(LLInventoryItem* inv_item, BOOL move_is_into_current_outfit);  bool can_move_to_landmarks(LLInventoryItem* inv_item); diff --git a/indra/newview/llinventoryitemslist.cpp b/indra/newview/llinventoryitemslist.cpp index 23129f7d44..cac859387c 100644 --- a/indra/newview/llinventoryitemslist.cpp +++ b/indra/newview/llinventoryitemslist.cpp @@ -240,7 +240,7 @@ void LLInventoryItemsList::refresh()      case REFRESH_LIST_SORT:          {              // Filter, sort, rearrange and notify parent about shape changes -            filterItems(); +            filterItems(true, true);              if (mAddedItems.size() == 0)              { diff --git a/indra/newview/llinventoryitemslist.h b/indra/newview/llinventoryitemslist.h index ce41105f98..5b83298bb9 100644 --- a/indra/newview/llinventoryitemslist.h +++ b/indra/newview/llinventoryitemslist.h @@ -51,20 +51,20 @@ public:  	/**  	 * Let list know items need to be refreshed in next doIdle()  	 */ -	void setNeedsRefresh(bool needs_refresh){ mRefreshState = needs_refresh ? REFRESH_ALL : REFRESH_COMPLETE; } +	void setNeedsRefresh(bool needs_refresh) { mRefreshState = needs_refresh ? REFRESH_ALL : REFRESH_COMPLETE; } -	U32 getNeedsRefresh(){ return mRefreshState; } +	U32 getNeedsRefresh() { return mRefreshState; }  	/**  	 * Sets the flag indicating that the list needs to be refreshed even if it is  	 * not currently visible.  	 */ -	void setForceRefresh(bool force_refresh){ mForceRefresh = force_refresh; } +	void setForceRefresh(bool force_refresh) { mForceRefresh = force_refresh; }  	/**  	* If refreshes when invisible.  	*/ -	bool getForceRefresh(){ return mForceRefresh;  } +	bool getForceRefresh() { return mForceRefresh; }  	virtual bool selectItemByValue(const LLSD& value, bool select = true); diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index 154d8e2e18..ab04a8589a 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -1887,46 +1887,52 @@ LLInventoryPanel* LLInventoryPanel::getActiveInventoryPanel(BOOL auto_open)  }  //static -void LLInventoryPanel::openInventoryPanelAndSetSelection(BOOL auto_open, const LLUUID& obj_id, BOOL use_main_panel, BOOL take_keyboard_focus, BOOL reset_filter) +void LLInventoryPanel::openInventoryPanelAndSetSelection(bool auto_open, const LLUUID& obj_id, +	bool use_main_panel, bool take_keyboard_focus, bool reset_filter)  {  	LLSidepanelInventory* sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");  	sidepanel_inventory->showInventoryPanel(); -	bool in_inbox = (gInventory.isObjectDescendentOf(obj_id, gInventory.findCategoryUUIDForType(LLFolderType::FT_INBOX))); - -	if (!in_inbox && (use_main_panel || !sidepanel_inventory->getMainInventoryPanel()->isRecentItemsPanelSelected())) +	LLUUID cat_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_INBOX); +	bool in_inbox = gInventory.isObjectDescendentOf(obj_id, cat_id); +	if (!in_inbox && use_main_panel)  	{  		sidepanel_inventory->selectAllItemsPanel();  	} -    LLFloater* inventory_floater = LLFloaterSidePanelContainer::getTopmostInventoryFloater(); -    if(!auto_open && inventory_floater && inventory_floater->getVisible()) +    if (!auto_open)      { -        LLSidepanelInventory *inventory_panel = inventory_floater->findChild<LLSidepanelInventory>("main_panel"); -        LLPanelMainInventory* main_panel = inventory_panel->getMainInventoryPanel(); -        if(main_panel->isSingleFolderMode() && main_panel->isGalleryViewMode()) +        LLFloater* inventory_floater = LLFloaterSidePanelContainer::getTopmostInventoryFloater(); +        if (inventory_floater && inventory_floater->getVisible())          { -            LL_DEBUGS("Inventory") << "Opening gallery panel for item" << obj_id << LL_ENDL; -            main_panel->setGallerySelection(obj_id); -            return; +            LLSidepanelInventory *inventory_panel = inventory_floater->findChild<LLSidepanelInventory>("main_panel"); +            LLPanelMainInventory* main_panel = inventory_panel->getMainInventoryPanel(); +            if (main_panel->isSingleFolderMode() && main_panel->isGalleryViewMode()) +            { +                LL_DEBUGS("Inventory") << "Opening gallery panel for item" << obj_id << LL_ENDL; +                main_panel->setGallerySelection(obj_id); +                return; +            }          }      } -    LLPanelMainInventory* main_inventory = sidepanel_inventory->getMainInventoryPanel(); -    if (main_inventory && main_inventory->isSingleFolderMode() -        && use_main_panel) +    if (use_main_panel)      { -        const LLInventoryObject *obj = gInventory.getObject(obj_id); -        if (obj) +        LLPanelMainInventory* main_inventory = sidepanel_inventory->getMainInventoryPanel(); +        if (main_inventory && main_inventory->isSingleFolderMode())          { -            LL_DEBUGS("Inventory") << "Opening main inventory panel for item" << obj_id << LL_ENDL; -            main_inventory->setSingleFolderViewRoot(obj->getParentUUID(), false); -            main_inventory->setGallerySelection(obj_id); -            return; +            const LLInventoryObject *obj = gInventory.getObject(obj_id); +            if (obj) +            { +                LL_DEBUGS("Inventory") << "Opening main inventory panel for item" << obj_id << LL_ENDL; +                main_inventory->setSingleFolderViewRoot(obj->getParentUUID(), false); +                main_inventory->setGallerySelection(obj_id); +                return; +            }          }      } -	LLInventoryPanel *active_panel = LLInventoryPanel::getActiveInventoryPanel(auto_open); +	LLInventoryPanel *active_panel = LLInventoryPanel::getActiveInventoryPanel(auto_open);  	if (active_panel)  	{  		LL_DEBUGS("Messaging", "Inventory") << "Highlighting" << obj_id  << LL_ENDL; @@ -1938,11 +1944,8 @@ void LLInventoryPanel::openInventoryPanelAndSetSelection(BOOL auto_open, const L  		if (in_inbox)  		{ -			 -			LLInventoryPanel * inventory_panel = NULL;  			sidepanel_inventory->openInbox(); -			inventory_panel = sidepanel_inventory->getInboxPanel(); - +			LLInventoryPanel* inventory_panel = sidepanel_inventory->getInboxPanel();  			if (inventory_panel)  			{  				inventory_panel->setSelection(obj_id, take_keyboard_focus); @@ -1967,7 +1970,6 @@ void LLInventoryPanel::openInventoryPanelAndSetSelection(BOOL auto_open, const L  void LLInventoryPanel::setSFViewAndOpenFolder(const LLInventoryPanel* panel, const LLUUID& folder_id)  { -      LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("inventory");      for (LLFloaterReg::const_instance_list_t::const_iterator iter = inst_list.begin(); iter != inst_list.end(); ++iter)      { diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h index b68433bab0..97300596f9 100644 --- a/indra/newview/llinventorypanel.h +++ b/indra/newview/llinventorypanel.h @@ -244,12 +244,12 @@ public:  	// "Auto_open" determines if we open an inventory panel if none are open.  	static LLInventoryPanel *getActiveInventoryPanel(BOOL auto_open = TRUE); -	static void openInventoryPanelAndSetSelection(BOOL auto_open, +	static void openInventoryPanelAndSetSelection(bool auto_open,  													const LLUUID& obj_id, -													BOOL use_main_panel = FALSE, -													BOOL take_keyboard_focus = TAKE_FOCUS_YES, -													BOOL reset_filter = FALSE); -    static void setSFViewAndOpenFolder(const LLInventoryPanel* panel, const LLUUID& folder_id); +													bool use_main_panel = false, +													bool take_keyboard_focus = true, +													bool reset_filter = false); +	static void setSFViewAndOpenFolder(const LLInventoryPanel* panel, const LLUUID& folder_id);  	void addItemID(const LLUUID& id, LLFolderViewItem* itemp);  	void removeItemID(const LLUUID& id);  	LLFolderViewItem* getItemByID(const LLUUID& id); diff --git a/indra/newview/lllocalbitmaps.cpp b/indra/newview/lllocalbitmaps.cpp index 5a5fb7474c..1e42773777 100644 --- a/indra/newview/lllocalbitmaps.cpp +++ b/indra/newview/lllocalbitmaps.cpp @@ -1081,6 +1081,13 @@ bool LLLocalBitmapMgr::checkTextureDimensions(std::string filename)  	LLImageDimensionsInfo image_info;  	if (!image_info.load(filename,codec))  	{ +        LLSD args; +        args["NAME"] = gDirUtilp->getBaseFileName(filename); +        if (!image_info.getWarningName().empty()) +        { +            args["REASON"] = LLTrans::getString(image_info.getWarningName()); +        } +        LLNotificationsUtil::add("CannotUploadTexture", args);  		return false;  	} @@ -1096,6 +1103,7 @@ bool LLLocalBitmapMgr::checkTextureDimensions(std::string filename)  		LLSD notif_args;  		notif_args["REASON"] = mImageLoadError; +        notif_args["NAME"] = gDirUtilp->getBaseFileName(filename);  		LLNotificationsUtil::add("CannotUploadTexture", notif_args);  		return false; diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 01d6469010..1398c1acdb 100644 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -5503,7 +5503,7 @@ void on_new_single_inventory_upload_complete(          }          else          { -            LLInventoryPanel::openInventoryPanelAndSetSelection(TRUE, server_response["new_inventory_item"].asUUID(), TRUE, TAKE_FOCUS_NO, TRUE); +            LLInventoryPanel::openInventoryPanelAndSetSelection(true, server_response["new_inventory_item"].asUUID(), true, false, true);          }          // restore keyboard focus diff --git a/indra/newview/llmodelpreview.cpp b/indra/newview/llmodelpreview.cpp index ccae1030f1..8fbcf8e18d 100644 --- a/indra/newview/llmodelpreview.cpp +++ b/indra/newview/llmodelpreview.cpp @@ -249,7 +249,7 @@ void LLModelPreview::updateDimentionsAndOffsets()          {              accounted.insert(instance.mModel); -            //update instance skin info for each lods pelvisZoffset  +            // update instance skin info for each lods pelvisZoffset              for (int j = 0; j<LLModel::NUM_LODS; ++j)              {                  if (instance.mLOD[j]) @@ -271,6 +271,7 @@ void LLModelPreview::rebuildUploadData()  {      assert_main_thread(); +    mDefaultPhysicsShapeP = NULL;      mUploadData.clear();      mTextureSet.clear(); @@ -310,7 +311,7 @@ void LLModelPreview::rebuildUploadData()          mat *= scale_mat;          for (LLModelLoader::model_instance_list::iterator model_iter = iter->second.begin(); model_iter != iter->second.end();) -        { //for each instance with said transform applied  +        { // for each instance with said transform applied              LLModelInstance instance = *model_iter++;              LLModel* base_model = instance.mModel; @@ -573,7 +574,7 @@ void LLModelPreview::rebuildUploadData()      else if (getLoadState() == LLModelLoader::ERROR_MATERIALS               || getLoadState() == LLModelLoader::WARNING_BIND_SHAPE_ORIENTATION)      { -        // This is only valid for these two error types because they are  +        // This is only valid for these two error types because they are          // only used inside rebuildUploadData() and updateStatusMessages()          // updateStatusMessages() is called after rebuildUploadData()          setLoadState(LLModelLoader::DONE); @@ -798,7 +799,7 @@ void LLModelPreview::loadModel(std::string filename, S32 lod, bool force_disable          // it tends to force the UI into strange checkbox options          // which cannot be altered. -        //only try to load from slm if viewer is configured to do so and this is the  +        //only try to load from slm if viewer is configured to do so and this is the          //initial model load (not an LoD or physics shape)          mModelLoader->mTrySLM = gSavedSettings.getBOOL("MeshImportUseSLM") && mUploadData.empty();      } @@ -884,12 +885,13 @@ void LLModelPreview::clearIncompatible(S32 lod)          // Check if already started          bool subscribe_for_generation = mLodsQuery.empty(); -         +          // Remove previously scheduled work          mLodsQuery.clear();          LLFloaterModelPreview* fmp = LLFloaterModelPreview::sInstance; -        if (!fmp) return; +        if (!fmp) +            return;          // Schedule new work          for (S32 i = LLModel::LOD_HIGH; i >= 0; --i) @@ -1719,7 +1721,7 @@ F32 LLModelPreview::genMeshOptimizerPerFace(LLModel *base_model, LLModel *target      ll_aligned_free_16(output_indices);      ll_aligned_free_16(shadow_indices); -      +      if (size_new_indices < 3)      {          // At least one triangle is needed @@ -1912,7 +1914,7 @@ void LLModelPreview::genMeshOptimizerLODs(S32 which_lod, S32 meshopt_mode, U32 d                  {                      precise_ratio = genMeshOptimizerPerModel(base, target_model, indices_decimator, lod_error_threshold, MESH_OPTIMIZER_NO_UVS);                  } -                 +                  if (precise_ratio < 0 || (precise_ratio * allowed_ratio_drift < indices_decimator))                  {                      // Try sloppy variant if normal one failed to simplify model enough. diff --git a/indra/newview/lloutfitgallery.cpp b/indra/newview/lloutfitgallery.cpp index de988555c5..e621c32911 100644 --- a/indra/newview/lloutfitgallery.cpp +++ b/indra/newview/lloutfitgallery.cpp @@ -433,8 +433,7 @@ bool compareGalleryItem(LLOutfitGalleryItem* item1, LLOutfitGalleryItem* item2)  }  void LLOutfitGallery::reArrangeRows(S32 row_diff) -{ -  +{       std::vector<LLOutfitGalleryItem*> buf_items = mItems;      for (std::vector<LLOutfitGalleryItem*>::const_reverse_iterator it = buf_items.rbegin(); it != buf_items.rend(); ++it)      { @@ -446,16 +445,24 @@ void LLOutfitGallery::reArrangeRows(S32 row_diff)      }      mHiddenItems.clear(); -    mItemsInRow+= row_diff; +    mItemsInRow += row_diff;      updateGalleryWidth();      std::sort(buf_items.begin(), buf_items.end(), compareGalleryItem); -     + +    std::string cur_filter = getFilterSubString(); +    LLStringUtil::toUpper(cur_filter); +      for (std::vector<LLOutfitGalleryItem*>::const_iterator it = buf_items.begin(); it != buf_items.end(); ++it)      { -    	(*it)->setHidden(false); -    	applyFilter(*it,sFilterSubString); +        std::string outfit_name = (*it)->getItemName(); +        LLStringUtil::toUpper(outfit_name); + +        bool hidden = (std::string::npos == outfit_name.find(cur_filter)); +        (*it)->setHidden(hidden); +      	addToGallery(*it);      } +      updateMessageVisibility();  } @@ -725,9 +732,9 @@ LLOutfitGallery::~LLOutfitGallery()      }  } -void LLOutfitGallery::setFilterSubString(const std::string& string) +// virtual +void LLOutfitGallery::onFilterSubStringChanged(const std::string& new_string, const std::string& old_string)  { -    sFilterSubString = string;      reArrangeRows();  } @@ -743,20 +750,6 @@ void LLOutfitGallery::onHighlightBaseOutfit(LLUUID base_id, LLUUID prev_id)      }  } -void LLOutfitGallery::applyFilter(LLOutfitGalleryItem* item, const std::string& filter_substring) -{ -    if (!item) return; - -    std::string outfit_name = item->getItemName(); -    LLStringUtil::toUpper(outfit_name); - -    std::string cur_filter = filter_substring; -    LLStringUtil::toUpper(cur_filter); - -    bool hidden = (std::string::npos == outfit_name.find(cur_filter)); -    item->setHidden(hidden); -} -  void LLOutfitGallery::onSetSelectedOutfitByUUID(const LLUUID& outfit_uuid)  {  } @@ -904,11 +897,11 @@ bool LLOutfitGallery::hasDefaultImage(const LLUUID& outfit_cat_id)  void LLOutfitGallery::updateMessageVisibility()  { -    if(mItems.empty()) +    if (mItems.empty())      {          mMessageTextBox->setVisible(TRUE);          mScrollPanel->setVisible(FALSE); -        std::string message = sFilterSubString.empty()? getString("no_outfits_msg") : getString("no_matched_outfits_msg"); +        std::string message = getString(getFilterSubString().empty() ? "no_outfits_msg" : "no_matched_outfits_msg");          mMessageTextBox->setValue(message);      }      else diff --git a/indra/newview/lloutfitgallery.h b/indra/newview/lloutfitgallery.h index 9915752962..f2366e6494 100644 --- a/indra/newview/lloutfitgallery.h +++ b/indra/newview/lloutfitgallery.h @@ -90,7 +90,7 @@ public:      void wearSelectedOutfit(); -    /*virtual*/ void setFilterSubString(const std::string& string); +    /*virtual*/ void onFilterSubStringChanged(const std::string& new_string, const std::string& old_string);      /*virtual*/ void getCurrentCategories(uuid_vec_t& vcur);      /*virtual*/ void updateAddedCategory(LLUUID cat_id); @@ -117,8 +117,6 @@ protected:      /*virtual*/ void onExpandAllFolders() {}      /*virtual*/ LLOutfitListGearMenuBase* createGearMenu(); -    void applyFilter(LLOutfitGalleryItem* item, const std::string& filter_substring); -  private:      LLUUID getPhotoAssetId(const LLUUID& outfit_id);      LLUUID getDefaultPhoto(); diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp index 5c7792b0df..27d73fc4ae 100644 --- a/indra/newview/lloutfitslist.cpp +++ b/indra/newview/lloutfitslist.cpp @@ -188,7 +188,7 @@ void LLOutfitsList::updateAddedCategory(LLUUID cat_id)      list->setCommitCallback(boost::bind(&LLOutfitsList::onListSelectionChange, this, _1));      // Setting list refresh callback to apply filter on list change. -    list->setRefreshCompleteCallback(boost::bind(&LLOutfitsList::onFilteredWearableItemsListRefresh, this, _1)); +    list->setRefreshCompleteCallback(boost::bind(&LLOutfitsList::onRefreshComplete, this, _1));      list->setRightMouseDownCallback(boost::bind(&LLOutfitsList::onWearableItemsListRightClick, this, _1, _2, _3)); @@ -199,19 +199,17 @@ void LLOutfitsList::updateAddedCategory(LLUUID cat_id)      // Further list updates will be triggered by the category observer.      list->updateList(cat_id); -    // If filter is currently applied we store the initial tab state and -    // open it to show matched items if any. -    if (!sFilterSubString.empty()) +    // If filter is currently applied we store the initial tab state. +    if (!getFilterSubString().empty())      {          tab->notifyChildren(LLSD().with("action", "store_state")); -        tab->setDisplayChildren(true);          // Setting mForceRefresh flag will make the list refresh its contents          // even if it is not currently visible. This is required to apply the          // filter to the newly added list.          list->setForceRefresh(true); -        list->setFilterSubString(sFilterSubString); +        list->setFilterSubString(getFilterSubString(), false);      }  } @@ -314,14 +312,6 @@ void LLOutfitsList::onSetSelectedOutfitByUUID(const LLUUID& outfit_uuid)  }  // virtual -void LLOutfitsList::setFilterSubString(const std::string& string) -{ -	applyFilter(string); - -	sFilterSubString = string; -} - -// virtual  bool LLOutfitListBase::isActionEnabled(const LLSD& userdata)  {  	if (mSelectedOutfitUUID.isNull()) return false; @@ -494,9 +484,9 @@ void LLOutfitsList::restoreOutfitSelection(LLAccordionCtrlTab* tab, const LLUUID  	}  } -void LLOutfitsList::onFilteredWearableItemsListRefresh(LLUICtrl* ctrl) +void LLOutfitsList::onRefreshComplete(LLUICtrl* ctrl)  { -	if (!ctrl || sFilterSubString.empty()) +	if (!ctrl || getFilterSubString().empty())  		return;  	for (outfits_map_t::iterator @@ -510,57 +500,50 @@ void LLOutfitsList::onFilteredWearableItemsListRefresh(LLUICtrl* ctrl)  		LLWearableItemsList* list = dynamic_cast<LLWearableItemsList*>(tab->getAccordionView());  		if (list != ctrl) continue; -		applyFilterToTab(iter->first, tab, sFilterSubString); +		applyFilterToTab(iter->first, tab, getFilterSubString());  	}  } -void LLOutfitsList::applyFilter(const std::string& new_filter_substring) +// virtual +void LLOutfitsList::onFilterSubStringChanged(const std::string& new_string, const std::string& old_string)  { -	mAccordion->setFilterSubString(new_filter_substring); +	mAccordion->setFilterSubString(new_string); -	for (outfits_map_t::iterator -			 iter = mOutfitsMap.begin(), -			 iter_end = mOutfitsMap.end(); -		 iter != iter_end; ++iter) +	outfits_map_t::iterator iter = mOutfitsMap.begin(), iter_end = mOutfitsMap.end(); +	while (iter != iter_end)  	{ -		LLAccordionCtrlTab* tab = iter->second; +		const LLUUID& category_id = iter->first; +		LLAccordionCtrlTab* tab = iter++->second;  		if (!tab) continue; -		bool more_restrictive = sFilterSubString.size() < new_filter_substring.size() && !new_filter_substring.substr(0, sFilterSubString.size()).compare(sFilterSubString); - -		// Restore tab visibility in case of less restrictive filter -		// to compare it with updated string if it was previously hidden. -		if (!more_restrictive) -		{ -			tab->setVisible(TRUE); -		} -  		LLWearableItemsList* list = dynamic_cast<LLWearableItemsList*>(tab->getAccordionView());  		if (list)  		{ -			list->setFilterSubString(new_filter_substring); +			list->setFilterSubString(new_string, tab->getDisplayChildren());  		} -		if(sFilterSubString.empty() && !new_filter_substring.empty()) +		if (old_string.empty())  		{ -			//store accordion tab state when filter is not empty -			tab->notifyChildren(LLSD().with("action","store_state")); +			// Store accordion tab state when filter is not empty +			tab->notifyChildren(LLSD().with("action", "store_state"));  		} -		if (!new_filter_substring.empty()) +		if (!new_string.empty())  		{ -			applyFilterToTab(iter->first, tab, new_filter_substring); +			applyFilterToTab(category_id, tab, new_string);  		}  		else  		{ -			// restore tab title when filter is empty +			tab->setVisible(TRUE); + +			// Restore tab title when filter is empty  			tab->setTitle(tab->getTitle()); -			//restore accordion state after all those accodrion tab manipulations -			tab->notifyChildren(LLSD().with("action","restore_state")); +			// Restore accordion state after all those accodrion tab manipulations +			tab->notifyChildren(LLSD().with("action", "restore_state"));  			// Try restoring the tab selection. -			restoreOutfitSelection(tab, iter->first); +			restoreOutfitSelection(tab, category_id);  		}  	} @@ -586,11 +569,11 @@ void LLOutfitsList::applyFilterToTab(  	if (std::string::npos == title.find(cur_filter))  	{ -		// hide tab if its title doesn't pass filter -		// and it has no visible items +		// Hide tab if its title doesn't pass filter +		// and it has no matched items  		tab->setVisible(list->hasMatchedItems()); -		// remove title highlighting because it might +		// Remove title highlighting because it might  		// have been previously highlighted by less restrictive filter  		tab->setTitle(tab->getTitle()); @@ -602,18 +585,6 @@ void LLOutfitsList::applyFilterToTab(  		// Try restoring the tab selection.  		restoreOutfitSelection(tab, category_id);  	} - -	if (tab->getVisible()) -	{ -		// Open tab if it has passed the filter. -		tab->setDisplayChildren(true); -	} -	else -	{ -		// Set force refresh flag to refresh not visible list -		// when some changes occur in it. -		list->setForceRefresh(true); -	}  }  bool LLOutfitsList::canWearSelected() @@ -698,11 +669,10 @@ void LLOutfitsList::onCOFChanged()  	// These links UUIDs are not the same UUIDs that we have in each wearable items list.  	// So we collect base items' UUIDs to find them or links that point to them in wearable  	// items lists and update their worn state there. -	for (LLInventoryModel::item_array_t::const_iterator iter = item_array.begin(); -		iter != item_array.end(); -		++iter) +	LLInventoryModel::item_array_t::const_iterator array_iter = item_array.begin(), array_end = item_array.end(); +	while (array_iter < array_end)  	{ -		vnew.push_back((*iter)->getLinkedUUID()); +		vnew.push_back((*(array_iter++))->getLinkedUUID());  	}  	// We need to update only items that were added or removed from COF. @@ -711,20 +681,20 @@ void LLOutfitsList::onCOFChanged()  	// Store the ids of items currently linked from COF.  	mCOFLinkedItems = vnew; -	for (outfits_map_t::iterator iter = mOutfitsMap.begin(); -			iter != mOutfitsMap.end(); -			++iter) +	// Append removed ids to added ids because we should update all of them. +	vadded.reserve(vadded.size() + vremoved.size()); +	vadded.insert(vadded.end(), vremoved.begin(), vremoved.end()); +	vremoved.clear(); + +	outfits_map_t::iterator map_iter = mOutfitsMap.begin(), map_end = mOutfitsMap.end(); +	while (map_iter != map_end)  	{ -		LLAccordionCtrlTab* tab = iter->second; +		LLAccordionCtrlTab* tab = (map_iter++)->second;  		if (!tab) continue;  		LLWearableItemsList* list = dynamic_cast<LLWearableItemsList*>(tab->getAccordionView());  		if (!list) continue; -		// Append removed ids to added ids because we should update all of them. -		vadded.reserve(vadded.size() + vremoved.size()); -		vadded.insert(vadded.end(), vremoved.begin(), vremoved.end()); -  		// Every list updates the labels of changed items  or  		// the links that point to these items.  		list->updateChangedItems(vadded); @@ -835,7 +805,6 @@ void LLOutfitListBase::onOpen(const LLSD& info)          // arrive.          category->fetch();          refreshList(outfits); -        highlightBaseOutfit();          mIsInitialized = true;      } @@ -843,6 +812,9 @@ void LLOutfitListBase::onOpen(const LLSD& info)  void LLOutfitListBase::refreshList(const LLUUID& category_id)  { +    bool wasNull = mRefreshListState.CategoryUUID.isNull(); +    mRefreshListState.CategoryUUID.setNull(); +      LLInventoryModel::cat_array_t cat_array;      LLInventoryModel::item_array_t item_array; @@ -855,27 +827,81 @@ void LLOutfitListBase::refreshList(const LLUUID& category_id)          LLInventoryModel::EXCLUDE_TRASH,          is_category); -    uuid_vec_t vadded; -    uuid_vec_t vremoved; +    // Memorize item names for each UUID +    std::map<LLUUID, std::string> names; +    for (const LLPointer<LLViewerInventoryCategory>& cat : cat_array) +    { +        names.emplace(std::make_pair(cat->getUUID(), cat->getName())); +    } + +    // Fill added and removed items vectors. +    mRefreshListState.Added.clear(); +    mRefreshListState.Removed.clear(); +    computeDifference(cat_array, mRefreshListState.Added, mRefreshListState.Removed); +    // Sort added items vector by item name. +    std::sort(mRefreshListState.Added.begin(), mRefreshListState.Added.end(), +        [names](const LLUUID& a, const LLUUID& b) +        { +            return LLStringUtil::compareDict(names.at(a), names.at(b)) < 0; +        }); +    // Initialize iterators for added and removed items vectors. +    mRefreshListState.AddedIterator = mRefreshListState.Added.begin(); +    mRefreshListState.RemovedIterator = mRefreshListState.Removed.begin(); + +    LL_INFOS() << "added: " << mRefreshListState.Added.size() << +        ", removed: " << mRefreshListState.Removed.size() << +        ", changed: " << gInventory.getChangedIDs().size() << +        LL_ENDL; + +    mRefreshListState.CategoryUUID = category_id; +    if (wasNull) +    { +        gIdleCallbacks.addFunction(onIdle, this); +    } +} + +// static +void LLOutfitListBase::onIdle(void* userdata) +{ +    LLOutfitListBase* self = (LLOutfitListBase*)userdata; -    // Create added and removed items vectors. -    computeDifference(cat_array, vadded, vremoved); +    self->onIdleRefreshList(); +} + +void LLOutfitListBase::onIdleRefreshList() +{ +    if (mRefreshListState.CategoryUUID.isNull()) +        return; + +    const F64 MAX_TIME = 0.05f; +    F64 curent_time = LLTimer::getTotalSeconds(); +    const F64 end_time = curent_time + MAX_TIME;      // Handle added tabs. -    for (uuid_vec_t::const_iterator iter = vadded.begin(); -        iter != vadded.end(); -        ++iter) +    while (mRefreshListState.AddedIterator < mRefreshListState.Added.end())      { -        const LLUUID cat_id = (*iter); +        const LLUUID cat_id = (*mRefreshListState.AddedIterator++);          updateAddedCategory(cat_id); + +        curent_time = LLTimer::getTotalSeconds(); +        if (curent_time >= end_time) +            return;      } +    mRefreshListState.Added.clear(); +    mRefreshListState.AddedIterator = mRefreshListState.Added.end();      // Handle removed tabs. -    for (uuid_vec_t::const_iterator iter = vremoved.begin(); iter != vremoved.end(); ++iter) +    while (mRefreshListState.RemovedIterator < mRefreshListState.Removed.end())      { -        const LLUUID cat_id = (*iter); +        const LLUUID cat_id = (*mRefreshListState.RemovedIterator++);          updateRemovedCategory(cat_id); + +        curent_time = LLTimer::getTotalSeconds(); +        if (curent_time >= end_time) +            return;      } +    mRefreshListState.Removed.clear(); +    mRefreshListState.RemovedIterator = mRefreshListState.Removed.end();      // Get changed items from inventory model and update outfit tabs      // which might have been renamed. @@ -888,9 +914,9 @@ void LLOutfitListBase::refreshList(const LLUUID& category_id)          if (!cat)          {              LLInventoryObject* obj = gInventory.getObject(*items_iter); -            if(!obj || (obj->getType() != LLAssetType::AT_CATEGORY)) +            if (!obj || (obj->getType() != LLAssetType::AT_CATEGORY))              { -                return; +                break;              }              cat = (LLViewerInventoryCategory*)obj;          } @@ -900,6 +926,12 @@ void LLOutfitListBase::refreshList(const LLUUID& category_id)      }      sortOutfits(); +    highlightBaseOutfit(); + +    gIdleCallbacks.deleteFunction(onIdle, this); +    mRefreshListState.CategoryUUID.setNull(); + +    LL_INFOS() << "done" << LL_ENDL;  }  void LLOutfitListBase::computeDifference( @@ -936,7 +968,6 @@ void LLOutfitListBase::highlightBaseOutfit()          mHighlightedOutfitUUID = base_id;          onHighlightBaseOutfit(base_id, prev_id);      } -  }  void LLOutfitListBase::removeSelected() diff --git a/indra/newview/lloutfitslist.h b/indra/newview/lloutfitslist.h index 66b3165169..43c3ba75b5 100644 --- a/indra/newview/lloutfitslist.h +++ b/indra/newview/lloutfitslist.h @@ -116,8 +116,20 @@ protected:      void onOutfitsRemovalConfirmation(const LLSD& notification, const LLSD& response);      virtual void onChangeOutfitSelection(LLWearableItemsList* list, const LLUUID& category_id) = 0; +    static void onIdle(void* userdata); +    void onIdleRefreshList(); + +    struct +    { +        LLUUID						CategoryUUID; +        uuid_vec_t					Added; +        uuid_vec_t					Removed; +        uuid_vec_t::const_iterator	AddedIterator; +        uuid_vec_t::const_iterator	RemovedIterator; +    } mRefreshListState; +      bool                            mIsInitialized; -    LLInventoryCategoriesObserver* 	mCategoriesObserver;     +    LLInventoryCategoriesObserver* 	mCategoriesObserver;      LLUUID							mSelectedOutfitUUID;      // id of currently highlited outfit      LLUUID							mHighlightedOutfitUUID; @@ -225,7 +237,7 @@ public:  	//void performAction(std::string action); -	/*virtual*/ void setFilterSubString(const std::string& string); +	/*virtual*/ void onFilterSubStringChanged(const std::string& new_string, const std::string& old_string);  	/*virtual*/ void getSelectedItemsUUIDs(uuid_vec_t& selected_uuids) const; @@ -295,12 +307,7 @@ private:  	 * Called upon list refresh event to update tab visibility depending on  	 * the results of applying filter to the title and list items of the tab.  	 */ -	void onFilteredWearableItemsListRefresh(LLUICtrl* ctrl); - -	/** -	 * Highlights filtered items and hides tabs which haven't passed filter. -	 */ -	void applyFilter(const std::string& new_filter_substring); +	void onRefreshComplete(LLUICtrl* ctrl);  	/**  	 * Applies filter to the given tab diff --git a/indra/newview/llpanelappearancetab.cpp b/indra/newview/llpanelappearancetab.cpp index 8fa8867c69..16bd8a1380 100644 --- a/indra/newview/llpanelappearancetab.cpp +++ b/indra/newview/llpanelappearancetab.cpp @@ -28,12 +28,35 @@  #include "llpanelappearancetab.h" -  #include "llinventoryfunctions.h"  #include "llinventorymodel.h"  #include "llviewerinventory.h" -//virtual +std::string LLPanelAppearanceTab::sRecentFilterSubString; + +void LLPanelAppearanceTab::setFilterSubString(const std::string& new_string) +{ +    if (new_string != mFilterSubString) +    { +        std::string old_string = mFilterSubString; +        mFilterSubString = new_string; +        onFilterSubStringChanged(mFilterSubString, old_string); +    } + +    sRecentFilterSubString = new_string; +} + +void LLPanelAppearanceTab::checkFilterSubString() +{ +    if (sRecentFilterSubString != mFilterSubString) +    { +        std::string old_string = mFilterSubString; +        mFilterSubString = sRecentFilterSubString; +        onFilterSubStringChanged(mFilterSubString, old_string); +    } +} + +// virtual  bool LLPanelAppearanceTab::canTakeOffSelected()  {  	uuid_vec_t selected_uuids; diff --git a/indra/newview/llpanelappearancetab.h b/indra/newview/llpanelappearancetab.h index 2ed6b00497..e81394dd3c 100644 --- a/indra/newview/llpanelappearancetab.h +++ b/indra/newview/llpanelappearancetab.h @@ -35,13 +35,17 @@ public:  	LLPanelAppearanceTab() : LLPanel() {}  	virtual ~LLPanelAppearanceTab() {} -	virtual void setFilterSubString(const std::string& string) = 0; +	void setFilterSubString(const std::string& new_string); + +    void checkFilterSubString(); + +    virtual void onFilterSubStringChanged(const std::string& new_string, const std::string& old_string) = 0;  	virtual bool isActionEnabled(const LLSD& userdata) = 0;  	virtual void getSelectedItemsUUIDs(uuid_vec_t& selected_uuids) const {} -	static const std::string& getFilterSubString() { return sFilterSubString; } +	const std::string& getFilterSubString() { return mFilterSubString; }  protected: @@ -50,7 +54,10 @@ protected:  	 */  	bool canTakeOffSelected(); -	static std::string		sFilterSubString; +private: +    std::string mFilterSubString; + +    static std::string sRecentFilterSubString;  };  #endif //LL_LLPANELAPPEARANCETAB_H diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp index cb69f72288..c06d17410e 100644 --- a/indra/newview/llpaneleditwearable.cpp +++ b/indra/newview/llpaneleditwearable.cpp @@ -97,7 +97,7 @@ enum ESubpart {          SUBPART_SKIRT,          SUBPART_ALPHA,          SUBPART_TATTOO, -		SUBPART_UNIVERSAL, +        SUBPART_UNIVERSAL,          SUBPART_PHYSICS_BREASTS_UPDOWN,          SUBPART_PHYSICS_BREASTS_INOUT,          SUBPART_PHYSICS_BREASTS_LEFTRIGHT, @@ -120,7 +120,7 @@ class LLEditWearableDictionary : public LLSingleton<LLEditWearableDictionary>          //--------------------------------------------------------------------          LLSINGLETON(LLEditWearableDictionary);          virtual ~LLEditWearableDictionary(); -         +          //--------------------------------------------------------------------          // Wearable Types          //-------------------------------------------------------------------- @@ -214,7 +214,6 @@ public:  LLEditWearableDictionary::LLEditWearableDictionary()  { -  }  //virtual  @@ -227,23 +226,23 @@ LLEditWearableDictionary::Wearables::Wearables()          // note the subpart that is listed first is treated as "default", regardless of what order is in enum.          // Please match the order presented in XUI. -Nyx          // this will affect what camera angle is shown when first editing a wearable -        addEntry(LLWearableType::WT_SHAPE,              new WearableEntry(LLWearableType::WT_SHAPE,"edit_shape_title","shape_desc_text", texture_vec_t(), texture_vec_t(), subpart_vec_t{SUBPART_SHAPE_WHOLE, SUBPART_SHAPE_HEAD,        SUBPART_SHAPE_EYES,     SUBPART_SHAPE_EARS,     SUBPART_SHAPE_NOSE,     SUBPART_SHAPE_MOUTH, SUBPART_SHAPE_CHIN, SUBPART_SHAPE_TORSO, SUBPART_SHAPE_LEGS})); -        addEntry(LLWearableType::WT_SKIN,               new WearableEntry(LLWearableType::WT_SKIN,"edit_skin_title","skin_desc_text", texture_vec_t(), texture_vec_t{TEX_HEAD_BODYPAINT, TEX_UPPER_BODYPAINT, TEX_LOWER_BODYPAINT}, subpart_vec_t{SUBPART_SKIN_COLOR, SUBPART_SKIN_FACEDETAIL, SUBPART_SKIN_MAKEUP, SUBPART_SKIN_BODYDETAIL})); -        addEntry(LLWearableType::WT_HAIR,               new WearableEntry(LLWearableType::WT_HAIR,"edit_hair_title","hair_desc_text", texture_vec_t(), texture_vec_t{TEX_HAIR}, subpart_vec_t{SUBPART_HAIR_COLOR,       SUBPART_HAIR_STYLE,     SUBPART_HAIR_EYEBROWS, SUBPART_HAIR_FACIAL})); -        addEntry(LLWearableType::WT_EYES,               new WearableEntry(LLWearableType::WT_EYES,"edit_eyes_title","eyes_desc_text", texture_vec_t(), texture_vec_t{TEX_EYES_IRIS}, subpart_vec_t{SUBPART_EYES})); -        addEntry(LLWearableType::WT_SHIRT,              new WearableEntry(LLWearableType::WT_SHIRT,"edit_shirt_title","shirt_desc_text", texture_vec_t{TEX_UPPER_SHIRT}, texture_vec_t{TEX_UPPER_SHIRT}, subpart_vec_t{SUBPART_SHIRT})); -        addEntry(LLWearableType::WT_PANTS,              new WearableEntry(LLWearableType::WT_PANTS,"edit_pants_title","pants_desc_text", texture_vec_t{TEX_LOWER_PANTS}, texture_vec_t{TEX_LOWER_PANTS}, subpart_vec_t{SUBPART_PANTS})); -        addEntry(LLWearableType::WT_SHOES,              new WearableEntry(LLWearableType::WT_SHOES,"edit_shoes_title","shoes_desc_text", texture_vec_t{TEX_LOWER_SHOES}, texture_vec_t{TEX_LOWER_SHOES}, subpart_vec_t{SUBPART_SHOES})); -        addEntry(LLWearableType::WT_SOCKS,              new WearableEntry(LLWearableType::WT_SOCKS,"edit_socks_title","socks_desc_text", texture_vec_t{TEX_LOWER_SOCKS}, texture_vec_t{TEX_LOWER_SOCKS}, subpart_vec_t{SUBPART_SOCKS})); +        addEntry(LLWearableType::WT_SHAPE,      new WearableEntry(LLWearableType::WT_SHAPE,"edit_shape_title","shape_desc_text", texture_vec_t(), texture_vec_t(), subpart_vec_t{SUBPART_SHAPE_WHOLE, SUBPART_SHAPE_HEAD,        SUBPART_SHAPE_EYES,     SUBPART_SHAPE_EARS,     SUBPART_SHAPE_NOSE,     SUBPART_SHAPE_MOUTH, SUBPART_SHAPE_CHIN, SUBPART_SHAPE_TORSO, SUBPART_SHAPE_LEGS})); +        addEntry(LLWearableType::WT_SKIN,       new WearableEntry(LLWearableType::WT_SKIN,"edit_skin_title","skin_desc_text", texture_vec_t(), texture_vec_t{TEX_HEAD_BODYPAINT, TEX_UPPER_BODYPAINT, TEX_LOWER_BODYPAINT}, subpart_vec_t{SUBPART_SKIN_COLOR, SUBPART_SKIN_FACEDETAIL, SUBPART_SKIN_MAKEUP, SUBPART_SKIN_BODYDETAIL})); +        addEntry(LLWearableType::WT_HAIR,       new WearableEntry(LLWearableType::WT_HAIR,"edit_hair_title","hair_desc_text", texture_vec_t(), texture_vec_t{TEX_HAIR}, subpart_vec_t{SUBPART_HAIR_COLOR,       SUBPART_HAIR_STYLE,     SUBPART_HAIR_EYEBROWS, SUBPART_HAIR_FACIAL})); +        addEntry(LLWearableType::WT_EYES,       new WearableEntry(LLWearableType::WT_EYES,"edit_eyes_title","eyes_desc_text", texture_vec_t(), texture_vec_t{TEX_EYES_IRIS}, subpart_vec_t{SUBPART_EYES})); +        addEntry(LLWearableType::WT_SHIRT,      new WearableEntry(LLWearableType::WT_SHIRT,"edit_shirt_title","shirt_desc_text", texture_vec_t{TEX_UPPER_SHIRT}, texture_vec_t{TEX_UPPER_SHIRT}, subpart_vec_t{SUBPART_SHIRT})); +        addEntry(LLWearableType::WT_PANTS,      new WearableEntry(LLWearableType::WT_PANTS,"edit_pants_title","pants_desc_text", texture_vec_t{TEX_LOWER_PANTS}, texture_vec_t{TEX_LOWER_PANTS}, subpart_vec_t{SUBPART_PANTS})); +        addEntry(LLWearableType::WT_SHOES,      new WearableEntry(LLWearableType::WT_SHOES,"edit_shoes_title","shoes_desc_text", texture_vec_t{TEX_LOWER_SHOES}, texture_vec_t{TEX_LOWER_SHOES}, subpart_vec_t{SUBPART_SHOES})); +        addEntry(LLWearableType::WT_SOCKS,      new WearableEntry(LLWearableType::WT_SOCKS,"edit_socks_title","socks_desc_text", texture_vec_t{TEX_LOWER_SOCKS}, texture_vec_t{TEX_LOWER_SOCKS}, subpart_vec_t{SUBPART_SOCKS}));          addEntry(LLWearableType::WT_JACKET,     new WearableEntry(LLWearableType::WT_JACKET,"edit_jacket_title","jacket_desc_text", texture_vec_t{TEX_UPPER_JACKET}, texture_vec_t{TEX_UPPER_JACKET, TEX_LOWER_JACKET}, subpart_vec_t{SUBPART_JACKET}));          addEntry(LLWearableType::WT_GLOVES,     new WearableEntry(LLWearableType::WT_GLOVES,"edit_gloves_title","gloves_desc_text", texture_vec_t{TEX_UPPER_GLOVES}, texture_vec_t{TEX_UPPER_GLOVES}, subpart_vec_t{SUBPART_GLOVES}));          addEntry(LLWearableType::WT_UNDERSHIRT, new WearableEntry(LLWearableType::WT_UNDERSHIRT,"edit_undershirt_title","undershirt_desc_text", texture_vec_t{TEX_UPPER_UNDERSHIRT}, texture_vec_t{TEX_UPPER_UNDERSHIRT}, subpart_vec_t{SUBPART_UNDERSHIRT}));          addEntry(LLWearableType::WT_UNDERPANTS, new WearableEntry(LLWearableType::WT_UNDERPANTS,"edit_underpants_title","underpants_desc_text", texture_vec_t{TEX_LOWER_UNDERPANTS}, texture_vec_t{TEX_LOWER_UNDERPANTS}, subpart_vec_t{SUBPART_UNDERPANTS})); -        addEntry(LLWearableType::WT_SKIRT,              new WearableEntry(LLWearableType::WT_SKIRT,"edit_skirt_title","skirt_desc_text", texture_vec_t{TEX_SKIRT}, texture_vec_t{TEX_SKIRT}, subpart_vec_t{SUBPART_SKIRT})); -        addEntry(LLWearableType::WT_ALPHA,              new WearableEntry(LLWearableType::WT_ALPHA,"edit_alpha_title","alpha_desc_text", texture_vec_t(), texture_vec_t{TEX_LOWER_ALPHA, TEX_UPPER_ALPHA, TEX_HEAD_ALPHA, TEX_EYES_ALPHA, TEX_HAIR_ALPHA}, subpart_vec_t{SUBPART_ALPHA})); +        addEntry(LLWearableType::WT_SKIRT,      new WearableEntry(LLWearableType::WT_SKIRT,"edit_skirt_title","skirt_desc_text", texture_vec_t{TEX_SKIRT}, texture_vec_t{TEX_SKIRT}, subpart_vec_t{SUBPART_SKIRT})); +        addEntry(LLWearableType::WT_ALPHA,      new WearableEntry(LLWearableType::WT_ALPHA,"edit_alpha_title","alpha_desc_text", texture_vec_t(), texture_vec_t{TEX_LOWER_ALPHA, TEX_UPPER_ALPHA, TEX_HEAD_ALPHA, TEX_EYES_ALPHA, TEX_HAIR_ALPHA}, subpart_vec_t{SUBPART_ALPHA}));          addEntry(LLWearableType::WT_TATTOO,     new WearableEntry(LLWearableType::WT_TATTOO,"edit_tattoo_title","tattoo_desc_text", texture_vec_t{TEX_HEAD_TATTOO}, texture_vec_t{TEX_LOWER_TATTOO, TEX_UPPER_TATTOO, TEX_HEAD_TATTOO}, subpart_vec_t{SUBPART_TATTOO})); -		addEntry(LLWearableType::WT_UNIVERSAL, new WearableEntry(LLWearableType::WT_UNIVERSAL, "edit_universal_title", "universal_desc_text", texture_vec_t{ TEX_HEAD_UNIVERSAL_TATTOO }, texture_vec_t{ TEX_HEAD_UNIVERSAL_TATTOO, TEX_UPPER_UNIVERSAL_TATTOO, TEX_LOWER_UNIVERSAL_TATTOO, TEX_SKIRT_TATTOO, TEX_HAIR_TATTOO, TEX_EYES_TATTOO, TEX_LEFT_ARM_TATTOO, TEX_LEFT_LEG_TATTOO, TEX_AUX1_TATTOO, TEX_AUX2_TATTOO, TEX_AUX3_TATTOO }, subpart_vec_t{ SUBPART_UNIVERSAL })); -		addEntry(LLWearableType::WT_PHYSICS,    new WearableEntry(LLWearableType::WT_PHYSICS,"edit_physics_title","physics_desc_text", texture_vec_t(), texture_vec_t(), subpart_vec_t{SUBPART_PHYSICS_BREASTS_UPDOWN, SUBPART_PHYSICS_BREASTS_INOUT, SUBPART_PHYSICS_BREASTS_LEFTRIGHT, SUBPART_PHYSICS_BELLY_UPDOWN, SUBPART_PHYSICS_BUTT_UPDOWN, SUBPART_PHYSICS_BUTT_LEFTRIGHT, SUBPART_PHYSICS_ADVANCED})); +        addEntry(LLWearableType::WT_UNIVERSAL,  new WearableEntry(LLWearableType::WT_UNIVERSAL, "edit_universal_title", "universal_desc_text", texture_vec_t{ TEX_HEAD_UNIVERSAL_TATTOO }, texture_vec_t{ TEX_HEAD_UNIVERSAL_TATTOO, TEX_UPPER_UNIVERSAL_TATTOO, TEX_LOWER_UNIVERSAL_TATTOO, TEX_SKIRT_TATTOO, TEX_HAIR_TATTOO, TEX_EYES_TATTOO, TEX_LEFT_ARM_TATTOO, TEX_LEFT_LEG_TATTOO, TEX_AUX1_TATTOO, TEX_AUX2_TATTOO, TEX_AUX3_TATTOO }, subpart_vec_t{ SUBPART_UNIVERSAL })); +        addEntry(LLWearableType::WT_PHYSICS,    new WearableEntry(LLWearableType::WT_PHYSICS, "edit_physics_title", "physics_desc_text", texture_vec_t(), texture_vec_t(), subpart_vec_t{ SUBPART_PHYSICS_BREASTS_UPDOWN, SUBPART_PHYSICS_BREASTS_INOUT, SUBPART_PHYSICS_BREASTS_LEFTRIGHT, SUBPART_PHYSICS_BELLY_UPDOWN, SUBPART_PHYSICS_BUTT_UPDOWN, SUBPART_PHYSICS_BUTT_LEFTRIGHT, SUBPART_PHYSICS_ADVANCED }));  }  LLEditWearableDictionary::WearableEntry::WearableEntry(LLWearableType::EType type, @@ -259,52 +258,59 @@ LLEditWearableDictionary::WearableEntry::WearableEntry(LLWearableType::EType typ          mSubparts(subparts),          mColorSwatchCtrls(color_swatches),          mTextureCtrls(texture_pickers) -{} +{ +}  LLEditWearableDictionary::Subparts::Subparts()  { -        addEntry(SUBPART_SHAPE_WHOLE, new SubpartEntry(SUBPART_SHAPE_WHOLE, "mPelvis", "shape_body","shape_body_param_list", "shape_body_tab", LLVector3d(0.f, 0.f, 0.1f), LLVector3d(-2.5f, 0.5f, 0.8f),SEX_BOTH)); -        addEntry(SUBPART_SHAPE_HEAD, new SubpartEntry(SUBPART_SHAPE_HEAD, "mHead", "shape_head", "shape_head_param_list", "shape_head_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); -        addEntry(SUBPART_SHAPE_EYES, new SubpartEntry(SUBPART_SHAPE_EYES, "mHead", "shape_eyes", "shape_eyes_param_list", "shape_eyes_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); -        addEntry(SUBPART_SHAPE_EARS, new SubpartEntry(SUBPART_SHAPE_EARS, "mHead", "shape_ears", "shape_ears_param_list", "shape_ears_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); -        addEntry(SUBPART_SHAPE_NOSE, new SubpartEntry(SUBPART_SHAPE_NOSE, "mHead", "shape_nose", "shape_nose_param_list", "shape_nose_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); -        addEntry(SUBPART_SHAPE_MOUTH, new SubpartEntry(SUBPART_SHAPE_MOUTH, "mHead", "shape_mouth", "shape_mouth_param_list", "shape_mouth_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); -        addEntry(SUBPART_SHAPE_CHIN, new SubpartEntry(SUBPART_SHAPE_CHIN, "mHead", "shape_chin", "shape_chin_param_list", "shape_chin_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); -        addEntry(SUBPART_SHAPE_TORSO, new SubpartEntry(SUBPART_SHAPE_TORSO, "mTorso", "shape_torso", "shape_torso_param_list", "shape_torso_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(-1.f, 0.15f, 0.3f),SEX_BOTH)); -        addEntry(SUBPART_SHAPE_LEGS, new SubpartEntry(SUBPART_SHAPE_LEGS, "mPelvis", "shape_legs", "shape_legs_param_list", "shape_legs_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH)); - -        addEntry(SUBPART_SKIN_COLOR, new SubpartEntry(SUBPART_SKIN_COLOR, "mHead", "skin_color", "skin_color_param_list", "skin_color_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); +        // WT_SHAPE +        addEntry(SUBPART_SHAPE_WHOLE,     new SubpartEntry(SUBPART_SHAPE_WHOLE, "mPelvis", "shape_body","shape_body_param_list", "shape_body_tab", LLVector3d(0.f, 0.f, 0.1f), LLVector3d(-2.5f, 0.5f, 0.8f),SEX_BOTH)); +        addEntry(SUBPART_SHAPE_HEAD,      new SubpartEntry(SUBPART_SHAPE_HEAD, "mHead", "shape_head", "shape_head_param_list", "shape_head_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); +        addEntry(SUBPART_SHAPE_EYES,      new SubpartEntry(SUBPART_SHAPE_EYES, "mHead", "shape_eyes", "shape_eyes_param_list", "shape_eyes_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); +        addEntry(SUBPART_SHAPE_EARS,      new SubpartEntry(SUBPART_SHAPE_EARS, "mHead", "shape_ears", "shape_ears_param_list", "shape_ears_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); +        addEntry(SUBPART_SHAPE_NOSE,      new SubpartEntry(SUBPART_SHAPE_NOSE, "mHead", "shape_nose", "shape_nose_param_list", "shape_nose_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); +        addEntry(SUBPART_SHAPE_MOUTH,     new SubpartEntry(SUBPART_SHAPE_MOUTH, "mHead", "shape_mouth", "shape_mouth_param_list", "shape_mouth_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); +        addEntry(SUBPART_SHAPE_CHIN,      new SubpartEntry(SUBPART_SHAPE_CHIN, "mHead", "shape_chin", "shape_chin_param_list", "shape_chin_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); +        addEntry(SUBPART_SHAPE_TORSO,     new SubpartEntry(SUBPART_SHAPE_TORSO, "mTorso", "shape_torso", "shape_torso_param_list", "shape_torso_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(-1.f, 0.15f, 0.3f),SEX_BOTH)); +        addEntry(SUBPART_SHAPE_LEGS,      new SubpartEntry(SUBPART_SHAPE_LEGS, "mPelvis", "shape_legs", "shape_legs_param_list", "shape_legs_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH)); + +        // WT_SKIN +        addEntry(SUBPART_SKIN_COLOR,      new SubpartEntry(SUBPART_SKIN_COLOR, "mHead", "skin_color", "skin_color_param_list", "skin_color_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH));          addEntry(SUBPART_SKIN_FACEDETAIL, new SubpartEntry(SUBPART_SKIN_FACEDETAIL, "mHead", "skin_facedetail", "skin_face_param_list", "skin_face_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); -        addEntry(SUBPART_SKIN_MAKEUP, new SubpartEntry(SUBPART_SKIN_MAKEUP, "mHead", "skin_makeup", "skin_makeup_param_list", "skin_makeup_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); +        addEntry(SUBPART_SKIN_MAKEUP,     new SubpartEntry(SUBPART_SKIN_MAKEUP, "mHead", "skin_makeup", "skin_makeup_param_list", "skin_makeup_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH));          addEntry(SUBPART_SKIN_BODYDETAIL, new SubpartEntry(SUBPART_SKIN_BODYDETAIL, "mPelvis", "skin_bodydetail", "skin_body_param_list", "skin_body_tab", LLVector3d(0.f, 0.f, -0.2f), LLVector3d(-2.5f, 0.5f, 0.5f),SEX_BOTH)); -        addEntry(SUBPART_HAIR_COLOR, new SubpartEntry(SUBPART_HAIR_COLOR, "mHead", "hair_color", "hair_color_param_list", "hair_color_tab", LLVector3d(0.f, 0.f, 0.10f), LLVector3d(-0.4f, 0.05f, 0.10f),SEX_BOTH)); -        addEntry(SUBPART_HAIR_STYLE, new SubpartEntry(SUBPART_HAIR_STYLE, "mHead", "hair_style", "hair_style_param_list", "hair_style_tab", LLVector3d(0.f, 0.f, 0.10f), LLVector3d(-0.4f, 0.05f, 0.10f),SEX_BOTH)); -        addEntry(SUBPART_HAIR_EYEBROWS, new SubpartEntry(SUBPART_HAIR_EYEBROWS, "mHead", "hair_eyebrows", "hair_eyebrows_param_list", "hair_eyebrows_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); -        addEntry(SUBPART_HAIR_FACIAL, new SubpartEntry(SUBPART_HAIR_FACIAL, "mHead", "hair_facial", "hair_facial_param_list", "hair_facial_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_MALE)); - -        addEntry(SUBPART_EYES, new SubpartEntry(SUBPART_EYES, "mHead", "eyes", "eyes_main_param_list", "eyes_main_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); - -        addEntry(SUBPART_SHIRT, new SubpartEntry(SUBPART_SHIRT, "mTorso", "shirt", "shirt_main_param_list", "shirt_main_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(-1.f, 0.15f, 0.3f),SEX_BOTH)); -        addEntry(SUBPART_PANTS, new SubpartEntry(SUBPART_PANTS, "mPelvis", "pants", "pants_main_param_list", "pants_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH)); -        addEntry(SUBPART_SHOES, new SubpartEntry(SUBPART_SHOES, "mPelvis", "shoes", "shoes_main_param_list", "shoes_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH)); -        addEntry(SUBPART_SOCKS, new SubpartEntry(SUBPART_SOCKS, "mPelvis", "socks", "socks_main_param_list", "socks_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH)); -        addEntry(SUBPART_JACKET, new SubpartEntry(SUBPART_JACKET, "mTorso", "jacket", "jacket_main_param_list", "jacket_main_tab", LLVector3d(0.f, 0.f, 0.f), LLVector3d(-2.f, 0.1f, 0.3f),SEX_BOTH)); -        addEntry(SUBPART_SKIRT, new SubpartEntry(SUBPART_SKIRT, "mPelvis", "skirt", "skirt_main_param_list", "skirt_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH)); -        addEntry(SUBPART_GLOVES, new SubpartEntry(SUBPART_GLOVES, "mTorso", "gloves", "gloves_main_param_list", "gloves_main_tab", LLVector3d(0.f, 0.f, 0.f), LLVector3d(-1.f, 0.15f, 0.f),SEX_BOTH)); -        addEntry(SUBPART_UNDERSHIRT, new SubpartEntry(SUBPART_UNDERSHIRT, "mTorso", "undershirt", "undershirt_main_param_list", "undershirt_main_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(-1.f, 0.15f, 0.3f),SEX_BOTH)); -        addEntry(SUBPART_UNDERPANTS, new SubpartEntry(SUBPART_UNDERPANTS, "mPelvis", "underpants", "underpants_main_param_list", "underpants_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH)); -        addEntry(SUBPART_ALPHA, new SubpartEntry(SUBPART_ALPHA, "mPelvis", "alpha", "alpha_main_param_list", "alpha_main_tab", LLVector3d(0.f, 0.f, 0.1f), LLVector3d(-2.5f, 0.5f, 0.8f),SEX_BOTH)); -        addEntry(SUBPART_TATTOO, new SubpartEntry(SUBPART_TATTOO, "mPelvis", "tattoo", "tattoo_main_param_list", "tattoo_main_tab", LLVector3d(0.f, 0.f, 0.1f), LLVector3d(-2.5f, 0.5f, 0.8f),SEX_BOTH)); -		addEntry(SUBPART_UNIVERSAL, new SubpartEntry(SUBPART_UNIVERSAL, "mPelvis", "universal", "universal_main_param_list", "universal_main_tab", LLVector3d(0.f, 0.f, 0.1f), LLVector3d(-2.5f, 0.5f, 0.8f), SEX_BOTH)); - -		addEntry(SUBPART_PHYSICS_BREASTS_UPDOWN, new SubpartEntry(SUBPART_PHYSICS_BREASTS_UPDOWN, "mTorso", "physics_breasts_updown", "physics_breasts_updown_param_list", "physics_breasts_updown_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_FEMALE)); -        addEntry(SUBPART_PHYSICS_BREASTS_INOUT, new SubpartEntry(SUBPART_PHYSICS_BREASTS_INOUT, "mTorso", "physics_breasts_inout", "physics_breasts_inout_param_list", "physics_breasts_inout_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_FEMALE)); +        // WT_HAIR +        addEntry(SUBPART_HAIR_COLOR,      new SubpartEntry(SUBPART_HAIR_COLOR, "mHead", "hair_color", "hair_color_param_list", "hair_color_tab", LLVector3d(0.f, 0.f, 0.10f), LLVector3d(-0.4f, 0.05f, 0.10f),SEX_BOTH)); +        addEntry(SUBPART_HAIR_STYLE,      new SubpartEntry(SUBPART_HAIR_STYLE, "mHead", "hair_style", "hair_style_param_list", "hair_style_tab", LLVector3d(0.f, 0.f, 0.10f), LLVector3d(-0.4f, 0.05f, 0.10f), SEX_BOTH)); +        addEntry(SUBPART_HAIR_EYEBROWS,   new SubpartEntry(SUBPART_HAIR_EYEBROWS, "mHead", "hair_eyebrows", "hair_eyebrows_param_list", "hair_eyebrows_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); +        addEntry(SUBPART_HAIR_FACIAL,     new SubpartEntry(SUBPART_HAIR_FACIAL, "mHead", "hair_facial", "hair_facial_param_list", "hair_facial_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_MALE)); + +        // WT_EYES +        addEntry(SUBPART_EYES,            new SubpartEntry(SUBPART_EYES, "mHead", "eyes", "eyes_main_param_list", "eyes_main_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); + +        // WT_SHIRT, WT_PANTS, WT_SHOES, WT_SOCKS, WT_JACKET, WT_GLOVES, WT_UNDERSHIRT, WT_UNDERPANTS, WT_SKIRT, WT_ALPHA, WT_TATTOO, WT_UNIVERSAL +        addEntry(SUBPART_SHIRT,           new SubpartEntry(SUBPART_SHIRT, "mTorso", "shirt", "shirt_main_param_list", "shirt_main_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(-1.f, 0.15f, 0.3f),SEX_BOTH)); +        addEntry(SUBPART_PANTS,           new SubpartEntry(SUBPART_PANTS, "mPelvis", "pants", "pants_main_param_list", "pants_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH)); +        addEntry(SUBPART_SHOES,           new SubpartEntry(SUBPART_SHOES, "mPelvis", "shoes", "shoes_main_param_list", "shoes_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH)); +        addEntry(SUBPART_SOCKS,           new SubpartEntry(SUBPART_SOCKS, "mPelvis", "socks", "socks_main_param_list", "socks_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH)); +        addEntry(SUBPART_JACKET,          new SubpartEntry(SUBPART_JACKET, "mTorso", "jacket", "jacket_main_param_list", "jacket_main_tab", LLVector3d(0.f, 0.f, 0.f), LLVector3d(-2.f, 0.1f, 0.3f),SEX_BOTH)); +        addEntry(SUBPART_GLOVES,          new SubpartEntry(SUBPART_GLOVES, "mTorso", "gloves", "gloves_main_param_list", "gloves_main_tab", LLVector3d(0.f, 0.f, 0.f), LLVector3d(-1.f, 0.15f, 0.f),SEX_BOTH)); +        addEntry(SUBPART_UNDERSHIRT,      new SubpartEntry(SUBPART_UNDERSHIRT, "mTorso", "undershirt", "undershirt_main_param_list", "undershirt_main_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(-1.f, 0.15f, 0.3f),SEX_BOTH)); +        addEntry(SUBPART_UNDERPANTS,      new SubpartEntry(SUBPART_UNDERPANTS, "mPelvis", "underpants", "underpants_main_param_list", "underpants_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH)); +        addEntry(SUBPART_SKIRT,           new SubpartEntry(SUBPART_SKIRT, "mPelvis", "skirt", "skirt_main_param_list", "skirt_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH)); +        addEntry(SUBPART_ALPHA,           new SubpartEntry(SUBPART_ALPHA, "mPelvis", "alpha", "alpha_main_param_list", "alpha_main_tab", LLVector3d(0.f, 0.f, 0.1f), LLVector3d(-2.5f, 0.5f, 0.8f),SEX_BOTH)); +        addEntry(SUBPART_TATTOO,          new SubpartEntry(SUBPART_TATTOO, "mPelvis", "tattoo", "tattoo_main_param_list", "tattoo_main_tab", LLVector3d(0.f, 0.f, 0.1f), LLVector3d(-2.5f, 0.5f, 0.8f),SEX_BOTH)); +        addEntry(SUBPART_UNIVERSAL,       new SubpartEntry(SUBPART_UNIVERSAL, "mPelvis", "universal", "universal_main_param_list", "universal_main_tab", LLVector3d(0.f, 0.f, 0.1f), LLVector3d(-2.5f, 0.5f, 0.8f), SEX_BOTH)); + +        // WT_PHYSICS +        addEntry(SUBPART_PHYSICS_BREASTS_UPDOWN,    new SubpartEntry(SUBPART_PHYSICS_BREASTS_UPDOWN, "mTorso", "physics_breasts_updown", "physics_breasts_updown_param_list", "physics_breasts_updown_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f), SEX_FEMALE)); +        addEntry(SUBPART_PHYSICS_BREASTS_INOUT,     new SubpartEntry(SUBPART_PHYSICS_BREASTS_INOUT, "mTorso", "physics_breasts_inout", "physics_breasts_inout_param_list", "physics_breasts_inout_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_FEMALE));          addEntry(SUBPART_PHYSICS_BREASTS_LEFTRIGHT, new SubpartEntry(SUBPART_PHYSICS_BREASTS_LEFTRIGHT, "mTorso", "physics_breasts_leftright", "physics_breasts_leftright_param_list", "physics_breasts_leftright_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_FEMALE)); -        addEntry(SUBPART_PHYSICS_BELLY_UPDOWN, new SubpartEntry(SUBPART_PHYSICS_BELLY_UPDOWN, "mTorso", "physics_belly_updown", "physics_belly_updown_param_list", "physics_belly_updown_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_BOTH)); -        addEntry(SUBPART_PHYSICS_BUTT_UPDOWN, new SubpartEntry(SUBPART_PHYSICS_BUTT_UPDOWN, "mTorso", "physics_butt_updown", "physics_butt_updown_param_list", "physics_butt_updown_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_BOTH)); -        addEntry(SUBPART_PHYSICS_BUTT_LEFTRIGHT, new SubpartEntry(SUBPART_PHYSICS_BUTT_LEFTRIGHT, "mTorso", "physics_butt_leftright", "physics_butt_leftright_param_list", "physics_butt_leftright_tab", LLVector3d(0.f, 0.f, 0.f), LLVector3d(0.f, 0.f, 0.f),SEX_BOTH)); -        addEntry(SUBPART_PHYSICS_ADVANCED, new SubpartEntry(SUBPART_PHYSICS_ADVANCED, "mTorso", "physics_advanced", "physics_advanced_param_list", "physics_advanced_tab", LLVector3d(0.f, 0.f, 0.f), LLVector3d(0.f, 0.f, 0.f),SEX_BOTH)); +        addEntry(SUBPART_PHYSICS_BELLY_UPDOWN,      new SubpartEntry(SUBPART_PHYSICS_BELLY_UPDOWN, "mTorso", "physics_belly_updown", "physics_belly_updown_param_list", "physics_belly_updown_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_BOTH)); +        addEntry(SUBPART_PHYSICS_BUTT_UPDOWN,       new SubpartEntry(SUBPART_PHYSICS_BUTT_UPDOWN, "mTorso", "physics_butt_updown", "physics_butt_updown_param_list", "physics_butt_updown_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_BOTH)); +        addEntry(SUBPART_PHYSICS_BUTT_LEFTRIGHT,    new SubpartEntry(SUBPART_PHYSICS_BUTT_LEFTRIGHT, "mTorso", "physics_butt_leftright", "physics_butt_leftright_param_list", "physics_butt_leftright_tab", LLVector3d(0.f, 0.f, 0.f), LLVector3d(0.f, 0.f, 0.f),SEX_BOTH)); +        addEntry(SUBPART_PHYSICS_ADVANCED,          new SubpartEntry(SUBPART_PHYSICS_ADVANCED, "mTorso", "physics_advanced", "physics_advanced_param_list", "physics_advanced_tab", LLVector3d(0.f, 0.f, 0.f), LLVector3d(0.f, 0.f, 0.f),SEX_BOTH));  }  LLEditWearableDictionary::SubpartEntry::SubpartEntry(ESubpart part, @@ -329,55 +335,55 @@ LLEditWearableDictionary::SubpartEntry::SubpartEntry(ESubpart part,  LLEditWearableDictionary::ColorSwatchCtrls::ColorSwatchCtrls()  { -        addEntry ( TEX_UPPER_SHIRT,  new PickerControlEntry (TEX_UPPER_SHIRT, "Color/Tint" )); -        addEntry ( TEX_LOWER_PANTS,  new PickerControlEntry (TEX_LOWER_PANTS, "Color/Tint" )); -        addEntry ( TEX_LOWER_SHOES,  new PickerControlEntry (TEX_LOWER_SHOES, "Color/Tint" )); -        addEntry ( TEX_LOWER_SOCKS,  new PickerControlEntry (TEX_LOWER_SOCKS, "Color/Tint" )); -        addEntry ( TEX_UPPER_JACKET, new PickerControlEntry (TEX_UPPER_JACKET, "Color/Tint" )); -        addEntry ( TEX_SKIRT,  new PickerControlEntry (TEX_SKIRT, "Color/Tint" )); -        addEntry ( TEX_UPPER_GLOVES, new PickerControlEntry (TEX_UPPER_GLOVES, "Color/Tint" )); -        addEntry ( TEX_UPPER_UNDERSHIRT, new PickerControlEntry (TEX_UPPER_UNDERSHIRT, "Color/Tint" )); -        addEntry ( TEX_LOWER_UNDERPANTS, new PickerControlEntry (TEX_LOWER_UNDERPANTS, "Color/Tint" )); -        addEntry ( TEX_HEAD_TATTOO, new PickerControlEntry(TEX_HEAD_TATTOO, "Color/Tint" )); -		addEntry (TEX_HEAD_UNIVERSAL_TATTOO, new PickerControlEntry(TEX_HEAD_UNIVERSAL_TATTOO, "Color/Tint")); +        addEntry(TEX_UPPER_SHIRT, new PickerControlEntry(TEX_UPPER_SHIRT, "Color/Tint")); +        addEntry(TEX_LOWER_PANTS, new PickerControlEntry(TEX_LOWER_PANTS, "Color/Tint")); +        addEntry(TEX_LOWER_SHOES, new PickerControlEntry(TEX_LOWER_SHOES, "Color/Tint")); +        addEntry(TEX_LOWER_SOCKS, new PickerControlEntry(TEX_LOWER_SOCKS, "Color/Tint")); +        addEntry(TEX_UPPER_JACKET, new PickerControlEntry(TEX_UPPER_JACKET, "Color/Tint")); +        addEntry(TEX_SKIRT, new PickerControlEntry(TEX_SKIRT, "Color/Tint")); +        addEntry(TEX_UPPER_GLOVES, new PickerControlEntry(TEX_UPPER_GLOVES, "Color/Tint")); +        addEntry(TEX_UPPER_UNDERSHIRT, new PickerControlEntry(TEX_UPPER_UNDERSHIRT, "Color/Tint")); +        addEntry(TEX_LOWER_UNDERPANTS, new PickerControlEntry(TEX_LOWER_UNDERPANTS, "Color/Tint")); +        addEntry(TEX_HEAD_TATTOO, new PickerControlEntry(TEX_HEAD_TATTOO, "Color/Tint")); +        addEntry(TEX_HEAD_UNIVERSAL_TATTOO, new PickerControlEntry(TEX_HEAD_UNIVERSAL_TATTOO, "Color/Tint"));  }  LLEditWearableDictionary::TextureCtrls::TextureCtrls()  { -        addEntry ( TEX_HEAD_BODYPAINT,  new PickerControlEntry (TEX_HEAD_BODYPAINT,  "Head", LLUUID::null, TRUE )); -        addEntry ( TEX_UPPER_BODYPAINT, new PickerControlEntry (TEX_UPPER_BODYPAINT, "Upper Body", LLUUID::null, TRUE )); -        addEntry ( TEX_LOWER_BODYPAINT, new PickerControlEntry (TEX_LOWER_BODYPAINT, "Lower Body", LLUUID::null, TRUE )); -        addEntry ( TEX_HAIR, new PickerControlEntry (TEX_HAIR, "Texture", LLUUID( gSavedSettings.getString( "UIImgDefaultHairUUID" ) ), FALSE )); -        addEntry ( TEX_EYES_IRIS, new PickerControlEntry (TEX_EYES_IRIS, "Iris", LLUUID( gSavedSettings.getString( "UIImgDefaultEyesUUID" ) ), FALSE )); -        addEntry ( TEX_UPPER_SHIRT, new PickerControlEntry (TEX_UPPER_SHIRT, "Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultShirtUUID" ) ), FALSE )); -        addEntry ( TEX_LOWER_PANTS, new PickerControlEntry (TEX_LOWER_PANTS, "Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultPantsUUID" ) ), FALSE )); -        addEntry ( TEX_LOWER_SHOES, new PickerControlEntry (TEX_LOWER_SHOES, "Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultShoesUUID" ) ), FALSE )); -        addEntry ( TEX_LOWER_SOCKS, new PickerControlEntry (TEX_LOWER_SOCKS, "Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultSocksUUID" ) ), FALSE )); -        addEntry ( TEX_UPPER_JACKET, new PickerControlEntry (TEX_UPPER_JACKET, "Upper Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultJacketUUID" ) ), FALSE )); -        addEntry ( TEX_LOWER_JACKET, new PickerControlEntry (TEX_LOWER_JACKET, "Lower Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultJacketUUID" ) ), FALSE )); -        addEntry ( TEX_SKIRT, new PickerControlEntry (TEX_SKIRT, "Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultSkirtUUID" ) ), FALSE )); -        addEntry ( TEX_UPPER_GLOVES, new PickerControlEntry (TEX_UPPER_GLOVES, "Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultGlovesUUID" ) ), FALSE )); -        addEntry ( TEX_UPPER_UNDERSHIRT, new PickerControlEntry (TEX_UPPER_UNDERSHIRT, "Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultUnderwearUUID" ) ), FALSE )); -        addEntry ( TEX_LOWER_UNDERPANTS, new PickerControlEntry (TEX_LOWER_UNDERPANTS, "Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultUnderwearUUID" ) ), FALSE )); -        addEntry ( TEX_LOWER_ALPHA, new PickerControlEntry (TEX_LOWER_ALPHA, "Lower Alpha", LLUUID( gSavedSettings.getString( "UIImgDefaultAlphaUUID" ) ), TRUE )); -        addEntry ( TEX_UPPER_ALPHA, new PickerControlEntry (TEX_UPPER_ALPHA, "Upper Alpha", LLUUID( gSavedSettings.getString( "UIImgDefaultAlphaUUID" ) ), TRUE )); -        addEntry ( TEX_HEAD_ALPHA, new PickerControlEntry (TEX_HEAD_ALPHA, "Head Alpha", LLUUID( gSavedSettings.getString( "UIImgDefaultAlphaUUID" ) ), TRUE )); -        addEntry ( TEX_EYES_ALPHA, new PickerControlEntry (TEX_EYES_ALPHA, "Eye Alpha", LLUUID( gSavedSettings.getString( "UIImgDefaultAlphaUUID" ) ), TRUE )); -        addEntry ( TEX_HAIR_ALPHA, new PickerControlEntry (TEX_HAIR_ALPHA, "Hair Alpha", LLUUID( gSavedSettings.getString( "UIImgDefaultAlphaUUID" ) ), TRUE )); -        addEntry ( TEX_LOWER_TATTOO, new PickerControlEntry (TEX_LOWER_TATTOO, "Lower Tattoo", LLUUID::null, TRUE )); -        addEntry ( TEX_UPPER_TATTOO, new PickerControlEntry (TEX_UPPER_TATTOO, "Upper Tattoo", LLUUID::null, TRUE )); -        addEntry ( TEX_HEAD_TATTOO, new PickerControlEntry (TEX_HEAD_TATTOO, "Head Tattoo", LLUUID::null, TRUE )); -		addEntry ( TEX_LOWER_UNIVERSAL_TATTOO, new PickerControlEntry( TEX_LOWER_UNIVERSAL_TATTOO, "Lower Universal Tattoo", LLUUID::null, TRUE)); -		addEntry ( TEX_UPPER_UNIVERSAL_TATTOO, new PickerControlEntry( TEX_UPPER_UNIVERSAL_TATTOO, "Upper Universal Tattoo", LLUUID::null, TRUE)); -		addEntry ( TEX_HEAD_UNIVERSAL_TATTOO, new PickerControlEntry( TEX_HEAD_UNIVERSAL_TATTOO, "Head Universal Tattoo", LLUUID::null, TRUE)); -		addEntry ( TEX_SKIRT_TATTOO, new PickerControlEntry(TEX_SKIRT_TATTOO, "Skirt Tattoo", LLUUID::null, TRUE)); -		addEntry ( TEX_HAIR_TATTOO, new PickerControlEntry(TEX_HAIR_TATTOO, "Hair Tattoo", LLUUID::null, TRUE)); -		addEntry ( TEX_EYES_TATTOO, new PickerControlEntry(TEX_EYES_TATTOO, "Eyes Tattoo", LLUUID::null, TRUE)); -		addEntry (TEX_LEFT_ARM_TATTOO, new PickerControlEntry(TEX_LEFT_ARM_TATTOO, "Left Arm Tattoo", LLUUID::null, TRUE)); -		addEntry (TEX_LEFT_LEG_TATTOO, new PickerControlEntry(TEX_LEFT_LEG_TATTOO, "Left Leg Tattoo", LLUUID::null, TRUE)); -		addEntry (TEX_AUX1_TATTOO, new PickerControlEntry(TEX_AUX1_TATTOO, "Aux1 Tattoo", LLUUID::null, TRUE)); -		addEntry (TEX_AUX2_TATTOO, new PickerControlEntry(TEX_AUX2_TATTOO, "Aux2 Tattoo", LLUUID::null, TRUE)); -		addEntry (TEX_AUX3_TATTOO, new PickerControlEntry(TEX_AUX3_TATTOO, "Aux3 Tattoo", LLUUID::null, TRUE)); +        addEntry(TEX_HEAD_BODYPAINT, new PickerControlEntry(TEX_HEAD_BODYPAINT, "Head", LLUUID::null, TRUE)); +        addEntry(TEX_UPPER_BODYPAINT, new PickerControlEntry(TEX_UPPER_BODYPAINT, "Upper Body", LLUUID::null, TRUE)); +        addEntry(TEX_LOWER_BODYPAINT, new PickerControlEntry(TEX_LOWER_BODYPAINT, "Lower Body", LLUUID::null, TRUE)); +        addEntry(TEX_HAIR, new PickerControlEntry(TEX_HAIR, "Texture", LLUUID(gSavedSettings.getString("UIImgDefaultHairUUID")), FALSE)); +        addEntry(TEX_EYES_IRIS, new PickerControlEntry(TEX_EYES_IRIS, "Iris", LLUUID(gSavedSettings.getString("UIImgDefaultEyesUUID")), FALSE)); +        addEntry(TEX_UPPER_SHIRT, new PickerControlEntry(TEX_UPPER_SHIRT, "Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultShirtUUID")), FALSE)); +        addEntry(TEX_LOWER_PANTS, new PickerControlEntry(TEX_LOWER_PANTS, "Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultPantsUUID")), FALSE)); +        addEntry(TEX_LOWER_SHOES, new PickerControlEntry(TEX_LOWER_SHOES, "Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultShoesUUID")), FALSE)); +        addEntry(TEX_LOWER_SOCKS, new PickerControlEntry(TEX_LOWER_SOCKS, "Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultSocksUUID")), FALSE)); +        addEntry(TEX_UPPER_JACKET, new PickerControlEntry(TEX_UPPER_JACKET, "Upper Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultJacketUUID")), FALSE)); +        addEntry(TEX_LOWER_JACKET, new PickerControlEntry(TEX_LOWER_JACKET, "Lower Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultJacketUUID")), FALSE)); +        addEntry(TEX_SKIRT, new PickerControlEntry(TEX_SKIRT, "Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultSkirtUUID")), FALSE)); +        addEntry(TEX_UPPER_GLOVES, new PickerControlEntry(TEX_UPPER_GLOVES, "Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultGlovesUUID")), FALSE)); +        addEntry(TEX_UPPER_UNDERSHIRT, new PickerControlEntry(TEX_UPPER_UNDERSHIRT, "Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultUnderwearUUID")), FALSE)); +        addEntry(TEX_LOWER_UNDERPANTS, new PickerControlEntry(TEX_LOWER_UNDERPANTS, "Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultUnderwearUUID")), FALSE)); +        addEntry(TEX_LOWER_ALPHA, new PickerControlEntry(TEX_LOWER_ALPHA, "Lower Alpha", LLUUID(gSavedSettings.getString("UIImgDefaultAlphaUUID")), TRUE)); +        addEntry(TEX_UPPER_ALPHA, new PickerControlEntry(TEX_UPPER_ALPHA, "Upper Alpha", LLUUID(gSavedSettings.getString("UIImgDefaultAlphaUUID")), TRUE)); +        addEntry(TEX_HEAD_ALPHA, new PickerControlEntry(TEX_HEAD_ALPHA, "Head Alpha", LLUUID(gSavedSettings.getString("UIImgDefaultAlphaUUID")), TRUE)); +        addEntry(TEX_EYES_ALPHA, new PickerControlEntry(TEX_EYES_ALPHA, "Eye Alpha", LLUUID(gSavedSettings.getString("UIImgDefaultAlphaUUID")), TRUE)); +        addEntry(TEX_HAIR_ALPHA, new PickerControlEntry(TEX_HAIR_ALPHA, "Hair Alpha", LLUUID(gSavedSettings.getString("UIImgDefaultAlphaUUID")), TRUE)); +        addEntry(TEX_LOWER_TATTOO, new PickerControlEntry(TEX_LOWER_TATTOO, "Lower Tattoo", LLUUID::null, TRUE)); +        addEntry(TEX_UPPER_TATTOO, new PickerControlEntry(TEX_UPPER_TATTOO, "Upper Tattoo", LLUUID::null, TRUE)); +        addEntry(TEX_HEAD_TATTOO, new PickerControlEntry(TEX_HEAD_TATTOO, "Head Tattoo", LLUUID::null, TRUE)); +        addEntry(TEX_LOWER_UNIVERSAL_TATTOO, new PickerControlEntry(TEX_LOWER_UNIVERSAL_TATTOO, "Lower Universal Tattoo", LLUUID::null, TRUE)); +        addEntry(TEX_UPPER_UNIVERSAL_TATTOO, new PickerControlEntry(TEX_UPPER_UNIVERSAL_TATTOO, "Upper Universal Tattoo", LLUUID::null, TRUE)); +        addEntry(TEX_HEAD_UNIVERSAL_TATTOO, new PickerControlEntry(TEX_HEAD_UNIVERSAL_TATTOO, "Head Universal Tattoo", LLUUID::null, TRUE)); +        addEntry(TEX_SKIRT_TATTOO, new PickerControlEntry(TEX_SKIRT_TATTOO, "Skirt Tattoo", LLUUID::null, TRUE)); +        addEntry(TEX_HAIR_TATTOO, new PickerControlEntry(TEX_HAIR_TATTOO, "Hair Tattoo", LLUUID::null, TRUE)); +        addEntry(TEX_EYES_TATTOO, new PickerControlEntry(TEX_EYES_TATTOO, "Eyes Tattoo", LLUUID::null, TRUE)); +        addEntry(TEX_LEFT_ARM_TATTOO, new PickerControlEntry(TEX_LEFT_ARM_TATTOO, "Left Arm Tattoo", LLUUID::null, TRUE)); +        addEntry(TEX_LEFT_LEG_TATTOO, new PickerControlEntry(TEX_LEFT_LEG_TATTOO, "Left Leg Tattoo", LLUUID::null, TRUE)); +        addEntry(TEX_AUX1_TATTOO, new PickerControlEntry(TEX_AUX1_TATTOO, "Aux1 Tattoo", LLUUID::null, TRUE)); +        addEntry(TEX_AUX2_TATTOO, new PickerControlEntry(TEX_AUX2_TATTOO, "Aux2 Tattoo", LLUUID::null, TRUE)); +        addEntry(TEX_AUX3_TATTOO, new PickerControlEntry(TEX_AUX3_TATTOO, "Aux3 Tattoo", LLUUID::null, TRUE));  }  LLEditWearableDictionary::PickerControlEntry::PickerControlEntry(ETextureIndex tex_index, @@ -490,8 +496,8 @@ template <typename CtrlType, class Predicate>  const LLEditWearableDictionary::PickerControlEntry*  find_picker_ctrl_entry_if(LLWearableType::EType type, const Predicate pred)  { -        const LLEditWearableDictionary::WearableEntry *wearable_entry -                = LLEditWearableDictionary::getInstance()->getWearable(type); +        const LLEditWearableDictionary::WearableEntry *wearable_entry = +                LLEditWearableDictionary::getInstance()->getWearable(type);          if (!wearable_entry)          {                  LL_WARNS() << "could not get wearable dictionary entry for wearable of type: " << type << LL_ENDL; @@ -520,8 +526,7 @@ find_picker_ctrl_entry_if(LLWearableType::EType type, const Predicate pred)  }  template <typename CtrlType> -void -for_each_picker_ctrl_entry(LLPanel* panel, LLWearableType::EType type, function_t fun) +void for_each_picker_ctrl_entry(LLPanel* panel, LLWearableType::EType type, function_t fun)  {          if (!panel)          { @@ -542,14 +547,13 @@ for_each_picker_ctrl_entry(LLPanel* panel, LLWearableType::EType type, function_                   iter != iter_end; ++iter)          {                  const ETextureIndex te = *iter; -                const LLEditWearableDictionary::PickerControlEntry*     entry -                        = get_picker_entry<CtrlType>(te); +                const LLEditWearableDictionary::PickerControlEntry* entry = get_picker_entry<CtrlType>(te);                  if (!entry)                  {                          LL_WARNS() << "could not get picker dictionary entry (" << te << ") for wearable of type: " << type << LL_ENDL;                          continue;                  } -                fun (panel, entry); +                fun(panel, entry);          }  } @@ -594,7 +598,7 @@ static void update_texture_ctrl(LLPanelEditWearable* self, LLPanel* panel, const          {                  LLUUID new_id;                  LLLocalTextureObject *lto = self->getWearable()->getLocalTextureObject(entry->mTextureIndex); -                if( lto && (lto->getID() != IMG_DEFAULT_AVATAR) ) +                if (lto && (lto->getID() != IMG_DEFAULT_AVATAR))                  {                          new_id = lto->getID();                  } @@ -644,7 +648,6 @@ LLPanelEditWearable::LLPanelEditWearable()  //virtual  LLPanelEditWearable::~LLPanelEditWearable()  { -  }  bool LLPanelEditWearable::changeHeightUnits(const LLSD& new_value) @@ -659,7 +662,7 @@ void LLPanelEditWearable::updateMetricLayout(BOOL new_value)          LLUIString current_metric, replacment_metric;          current_metric = new_value ? mMeters : mFeet;          replacment_metric = new_value ? mFeet : mMeters; -        mHeigthValue.setArg( "[METRIC1]", current_metric.getString() ); +        mHeightValue.setArg( "[METRIC1]", current_metric.getString() );          mReplacementMetricUrl.setArg( "[URL_METRIC2]", std::string("[secondlife:///app/metricsystem ") + replacment_metric.getString() + std::string("]"));  } @@ -667,11 +670,11 @@ void LLPanelEditWearable::updateAvatarHeightLabel()  {          mTxtAvatarHeight->setText(LLStringUtil::null);          LLStyle::Params param; -        param.color = mAvatarHeigthLabelColor; -        mTxtAvatarHeight->appendText(mHeigth, false, param); -        param.color = mAvatarHeigthValueLabelColor; -        mTxtAvatarHeight->appendText(mHeigthValue, false, param); -        param.color = mAvatarHeigthLabelColor; // using mAvatarHeigthLabelColor for '/' separator +        param.color = mAvatarHeightLabelColor; +        mTxtAvatarHeight->appendText(mHeight, false, param); +        param.color = mAvatarHeightValueLabelColor; +        mTxtAvatarHeight->appendText(mHeightValue, false, param); +        param.color = mAvatarHeightLabelColor; // using mAvatarHeightLabelColor for '/' separator          mTxtAvatarHeight->appendText(" / ", false, param);          mTxtAvatarHeight->appendText(this->mReplacementMetricUrl, false, param);  } @@ -754,7 +757,7 @@ BOOL LLPanelEditWearable::postBuild()          mPanelSkirt = getChild<LLPanel>("edit_skirt_panel");          mPanelAlpha = getChild<LLPanel>("edit_alpha_panel");          mPanelTattoo = getChild<LLPanel>("edit_tattoo_panel"); -		mPanelUniversal = getChild<LLPanel>("edit_universal_panel"); +        mPanelUniversal = getChild<LLPanel>("edit_universal_panel");          mPanelPhysics = getChild<LLPanel>("edit_physics_panel");          mTxtAvatarHeight = mPanelShape->getChild<LLTextBox>("avatar_height"); @@ -778,29 +781,27 @@ BOOL LLPanelEditWearable::postBuild()                          continue;                  }                  U8 num_subparts = (U8)(wearable_entry->mSubparts.size()); -         +                  for (U8 index = 0; index < num_subparts; ++index)                  {                          // dive into data structures to get the panel we need                          ESubpart subpart_e = wearable_entry->mSubparts[index];                          const LLEditWearableDictionary::SubpartEntry *subpart_entry = LLEditWearableDictionary::getInstance()->getSubpart(subpart_e); -         +                          if (!subpart_entry)                          {                                  LL_WARNS() << "could not get wearable subpart dictionary entry for subpart: " << subpart_e << LL_ENDL;                                  continue;                          } -         +                          const std::string accordion_tab = subpart_entry->mAccordionTab; -                                  LLAccordionCtrlTab *tab = getChild<LLAccordionCtrlTab>(accordion_tab); -                                  if (!tab)                          {                                  LL_WARNS() << "could not get llaccordionctrltab from UI with name: " << accordion_tab << LL_ENDL;                                  continue;                          } -         +                          // initialize callback to ensure camera view changes appropriately.                          tab->setDropDownStateChangedCallback(boost::bind(&LLPanelEditWearable::onTabExpandedCollapsed,this,_2,index));                  } @@ -813,14 +814,14 @@ BOOL LLPanelEditWearable::postBuild()          // init all strings          mMeters         = mPanelShape->getString("meters");          mFeet           = mPanelShape->getString("feet"); -        mHeigth         = mPanelShape->getString("height") + " "; -        mHeigthValue    = "[HEIGHT] [METRIC1]"; +        mHeight         = mPanelShape->getString("height") + " "; +        mHeightValue    = "[HEIGHT] [METRIC1]";          mReplacementMetricUrl   = "[URL_METRIC2]"; -        std::string color = mPanelShape->getString("heigth_label_color"); -        mAvatarHeigthLabelColor = LLUIColorTable::instance().getColor(color, LLColor4::green); -        color = mPanelShape->getString("heigth_value_label_color"); -        mAvatarHeigthValueLabelColor = LLUIColorTable::instance().getColor(color, LLColor4::green); +        std::string color = mPanelShape->getString("height_label_color"); +        mAvatarHeightLabelColor = LLUIColorTable::instance().getColor(color, LLColor4::green); +        color = mPanelShape->getString("height_value_label_color"); +        mAvatarHeightValueLabelColor = LLUIColorTable::instance().getColor(color, LLColor4::green);          gSavedSettings.getControl("HeightUnits")->getSignal()->connect(boost::bind(&LLPanelEditWearable::changeHeightUnits, this, _2));          updateMetricLayout(gSavedSettings.getBOOL("HeightUnits")); @@ -834,14 +835,16 @@ BOOL LLPanelEditWearable::isDirty() const          BOOL isDirty = FALSE;          if (mWearablePtr)          { -			if (mWearablePtr->isDirty() || -				( mWearableItem && mNameEditor && mWearableItem->getName().compare(mNameEditor->getText()) != 0 )) -			{ -				isDirty = TRUE; -			} +                if (mWearablePtr->isDirty() || +                        (mWearableItem && mNameEditor && mWearableItem->getName().compare(mNameEditor->getText()) != 0)) +                { +                        isDirty = TRUE; +                }          }          return isDirty;  } + +  //virtual  void LLPanelEditWearable::draw()  { @@ -857,8 +860,8 @@ void LLPanelEditWearable::draw()  void LLPanelEditWearable::onClose()  { -	// any unsaved changes should be reverted at this point -	revertChanges(); +        // any unsaved changes should be reverted at this point +        revertChanges();  }  void LLPanelEditWearable::setVisible(BOOL visible) @@ -880,11 +883,11 @@ void LLPanelEditWearable::setWearable(LLViewerWearable *wearable, BOOL disable_c  //static   void LLPanelEditWearable::onBackButtonClicked(void* userdata)  { -    LLPanelEditWearable *panel = (LLPanelEditWearable*) userdata; -	if ( panel->isDirty() ) -	{ -		LLAppearanceMgr::instance().setOutfitDirty( true );		 -	} +        LLPanelEditWearable* panel = (LLPanelEditWearable*)userdata; +        if (panel->isDirty()) +        { +                LLAppearanceMgr::instance().setOutfitDirty(true); +        }  }  //static  @@ -909,7 +912,7 @@ void LLPanelEditWearable::saveAsCallback(const LLSD& notification, const LLSD& r          {                  std::string wearable_name = response["message"].asString();                  LLStringUtil::trim(wearable_name); -                if( !wearable_name.empty() ) +                if (!wearable_name.empty())                  {                          mNameEditor->setText(wearable_name);                          saveChanges(true); @@ -919,24 +922,27 @@ void LLPanelEditWearable::saveAsCallback(const LLSD& notification, const LLSD& r  void LLPanelEditWearable::onCommitSexChange()  { -        if (!isAgentAvatarValid()) return; +        if (!isAgentAvatarValid()) +        { +                return; +        }          LLWearableType::EType type = mWearablePtr->getType();          U32 index; -        if( !gAgentWearables.getWearableIndex(mWearablePtr, index) || -			!gAgentWearables.isWearableModifiable(type, index)) +        if (!gAgentWearables.getWearableIndex(mWearablePtr, index) || +                !gAgentWearables.isWearableModifiable(type, index))          { -			return; +                return;          }          LLViewerVisualParam* param = static_cast<LLViewerVisualParam*>(gAgentAvatarp->getVisualParam( "male" )); -        if( !param ) +        if (!param)          { -			return; +                return;          }          bool is_new_sex_male = (gSavedSettings.getU32("AvatarSex") ? SEX_MALE : SEX_FEMALE) == SEX_MALE; -        LLViewerWearable*     wearable = gAgentWearables.getViewerWearable(type, index); +        LLViewerWearable* wearable = gAgentWearables.getViewerWearable(type, index);          if (wearable)          {                  wearable->setVisualParamWeight(param->getID(), is_new_sex_male); @@ -969,23 +975,23 @@ void LLPanelEditWearable::onTexturePickerCommit(const LLUICtrl* ctrl)                  {                          // Set the new version                          LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTexture(texture_ctrl->getImageAssetID()); -                        if( image->getID() == IMG_DEFAULT ) +                        if (image->getID() == IMG_DEFAULT)                          {                                  image = LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT_AVATAR);                          }                          if (getWearable())                          { -							U32 index; -							if (gAgentWearables.getWearableIndex(getWearable(), index)) -							{ -								gAgentAvatarp->setLocalTexture(entry->mTextureIndex, image, FALSE, index); -								LLVisualParamHint::requestHintUpdates(); -								gAgentAvatarp->wearableUpdated(type); -							} -							else -							{ -								LL_WARNS() << "wearable not found in gAgentWearables" << LL_ENDL; -							} +                                U32 index; +                                if (gAgentWearables.getWearableIndex(getWearable(), index)) +                                { +                                        gAgentAvatarp->setLocalTexture(entry->mTextureIndex, image, FALSE, index); +                                        LLVisualParamHint::requestHintUpdates(); +                                        gAgentAvatarp->wearableUpdated(type); +                                } +                                else +                                { +                                        LL_WARNS() << "wearable not found in gAgentWearables" << LL_ENDL; +                                }                          }                  }                  else @@ -1001,13 +1007,13 @@ void LLPanelEditWearable::onColorSwatchCommit(const LLUICtrl* ctrl)          {                  LLWearableType::EType type = getWearable()->getType();                  const PickerControlEntryNamePredicate name_pred(ctrl->getName()); -                const LLEditWearableDictionary::PickerControlEntry* entry -                        = find_picker_ctrl_entry_if<LLColorSwatchCtrl, PickerControlEntryNamePredicate>(type, name_pred); +                const LLEditWearableDictionary::PickerControlEntry* entry = +                        find_picker_ctrl_entry_if<LLColorSwatchCtrl, PickerControlEntryNamePredicate>(type, name_pred);                  if (entry)                  {                          const LLColor4& old_color = getWearable()->getClothesColor(entry->mTextureIndex);                          const LLColor4& new_color = LLColor4(ctrl->getValue()); -                        if( old_color != new_color ) +                        if (old_color != new_color)                          {                                  getWearable()->setClothesColor(entry->mTextureIndex, new_color);                                  LLVisualParamHint::requestHintUpdates(); @@ -1025,11 +1031,13 @@ void LLPanelEditWearable::updatePanelPickerControls(LLWearableType::EType type)  {          LLPanel* panel = getPanel(type);          if (!panel) +        {                  return; +        }          bool is_modifiable = false; -        if(mWearableItem) +        if (mWearableItem)          {                  const LLPermissions& perm = mWearableItem->getPermissions();                  is_modifiable = perm.allowModifyBy(gAgent.getID(), gAgent.getGroupID()); @@ -1051,7 +1059,6 @@ void LLPanelEditWearable::updatePanelPickerControls(LLWearableType::EType type)  void LLPanelEditWearable::incrementCofVersionLegacy()  { -  }  void LLPanelEditWearable::saveChanges(bool force_save_as) @@ -1063,59 +1070,57 @@ void LLPanelEditWearable::saveChanges(bool force_save_as)          }          U32 index; -		if (!gAgentWearables.getWearableIndex(mWearablePtr, index)) -		{ -			LL_WARNS() << "wearable not found" << LL_ENDL; -			return; -		} +        if (!gAgentWearables.getWearableIndex(mWearablePtr, index)) +        { +                LL_WARNS() << "wearable not found" << LL_ENDL; +                return; +        }          std::string new_name = mNameEditor->getText(); -		// Find an existing link to this wearable's inventory item, if any, and its description field. -		LLInventoryItem *link_item = NULL; -		std::string description; -		LLInventoryModel::item_array_t links = -			LLAppearanceMgr::instance().findCOFItemLinks(mWearablePtr->getItemID()); -		if (links.size()>0) -		{ -			link_item = links.at(0).get(); -			if (link_item && link_item->getIsLinkType()) -			{ -				description = link_item->getActualDescription(); -			} -		} +        // Find an existing link to this wearable's inventory item, if any, and its description field. +        LLInventoryItem* link_item = NULL; +        std::string description; +        LLInventoryModel::item_array_t links = +                LLAppearanceMgr::instance().findCOFItemLinks(mWearablePtr->getItemID()); +        if (links.size() > 0) +        { +                link_item = links.at(0).get(); +                if (link_item && link_item->getIsLinkType()) +                { +                        description = link_item->getActualDescription(); +                } +        }          if (force_save_as)          { -			// the name of the wearable has changed, re-save wearable with new name -			LLAppearanceMgr::instance().removeCOFItemLinks(mWearablePtr->getItemID(),gAgentAvatarp->mEndCustomizeCallback); -			gAgentWearables.saveWearableAs(mWearablePtr->getType(), index, new_name, description, FALSE); -			mNameEditor->setText(mWearableItem->getName()); +                // the name of the wearable has changed, re-save wearable with new name +                LLAppearanceMgr::instance().removeCOFItemLinks(mWearablePtr->getItemID(), gAgentAvatarp->mEndCustomizeCallback); +                gAgentWearables.saveWearableAs(mWearablePtr->getType(), index, new_name, description, FALSE); +                mNameEditor->setText(mWearableItem->getName());          }          else          { -			// Make another copy of this link, with the same -			// description.  This is needed to bump the COF -			// version so texture baking service knows appearance has changed. -			if (link_item) -			{ -				// Create new link -				LL_DEBUGS("Avatar") << "link refresh, creating new link to " << link_item->getLinkedUUID() -									<< " removing old link at " << link_item->getUUID() -									<< " wearable item id " << mWearablePtr->getItemID() << LL_ENDL; - -				LLInventoryObject::const_object_list_t obj_array; -				obj_array.push_back(LLConstPointer<LLInventoryObject>(link_item)); -				link_inventory_array(LLAppearanceMgr::instance().getCOF(), -									 obj_array,  -									 gAgentAvatarp->mEndCustomizeCallback); -				// Remove old link -				remove_inventory_item(link_item->getUUID(), gAgentAvatarp->mEndCustomizeCallback); -			} -			gAgentWearables.saveWearable(mWearablePtr->getType(), index, new_name); -        } - -	 +                // Make another copy of this link, with the same +                // description.  This is needed to bump the COF +                // version so texture baking service knows appearance has changed. +                if (link_item) +                { +                        // Create new link +                        LL_DEBUGS("Avatar") << "link refresh, creating new link to " << link_item->getLinkedUUID() +                                << " removing old link at " << link_item->getUUID() +                                << " wearable item id " << mWearablePtr->getItemID() << LL_ENDL; + +                        LLInventoryObject::const_object_list_t obj_array; +                        obj_array.push_back(LLConstPointer<LLInventoryObject>(link_item)); +                        link_inventory_array(LLAppearanceMgr::instance().getCOF(), +                                obj_array, +                                gAgentAvatarp->mEndCustomizeCallback); +                        // Remove old link +                        remove_inventory_item(link_item->getUUID(), gAgentAvatarp->mEndCustomizeCallback); +                } +                gAgentWearables.saveWearable(mWearablePtr->getType(), index, new_name); +        }  }  void LLPanelEditWearable::revertChanges() @@ -1165,15 +1170,15 @@ void LLPanelEditWearable::showWearable(LLViewerWearable* wearable, BOOL show, BO          targetPanel->setVisible(show);          toggleTypeSpecificControls(type); -		// Update type controls here -		updateTypeSpecificControls(type); +        // Update type controls here +        updateTypeSpecificControls(type);          if (show)          {                  mPanelTitle->setText(title);                  mPanelTitle->setToolTip(title);                  mDescTitle->setText(description_title); -                 +                  // set name                  mNameEditor->setText(mWearableItem->getName()); @@ -1181,51 +1186,51 @@ void LLPanelEditWearable::showWearable(LLViewerWearable* wearable, BOOL show, BO                  // clear and rebuild visual param list                  U8 num_subparts = (U8)(wearable_entry->mSubparts.size()); -         +                  for (U8 index = 0; index < num_subparts; ++index)                  {                          // dive into data structures to get the panel we need                          ESubpart subpart_e = wearable_entry->mSubparts[index];                          const LLEditWearableDictionary::SubpartEntry *subpart_entry = LLEditWearableDictionary::getInstance()->getSubpart(subpart_e); -         +                          if (!subpart_entry)                          {                                  LL_WARNS() << "could not get wearable subpart dictionary entry for subpart: " << subpart_e << LL_ENDL;                                  continue;                          } -         +                          const std::string scrolling_panel = subpart_entry->mParamList;                          const std::string accordion_tab = subpart_entry->mAccordionTab; -         +                          LLScrollingPanelList *panel_list = getChild<LLScrollingPanelList>(scrolling_panel);                          LLAccordionCtrlTab *tab = getChild<LLAccordionCtrlTab>(accordion_tab); -			 +                          if (!panel_list)                          {                                  LL_WARNS() << "could not get scrolling panel list: " << scrolling_panel << LL_ENDL;                                  continue;                          } -         +                          if (!tab)                          {                                  LL_WARNS() << "could not get llaccordionctrltab from UI with name: " << accordion_tab << LL_ENDL;                                  continue;                          } -			// Don't show female subparts if you're not female, etc. -			if (!(gAgentAvatarp->getSex() & subpart_entry->mSex)) -			{ -				tab->setVisible(FALSE); -				continue; -			} -			else -			{ -				tab->setVisible(TRUE); -			} -			 +                        // Don't show female subparts if you're not female, etc. +                        if (!(gAgentAvatarp->getSex() & subpart_entry->mSex)) +                        { +                                tab->setVisible(FALSE); +                                continue; +                        } +                        else +                        { +                                tab->setVisible(TRUE); +                        } +                          // what edit group do we want to extract params for?                          const std::string edit_group = subpart_entry->mEditGroup; -         +                          // storage for ordered list of visual params                          value_map_t sorted_params;                          getSortedParams(sorted_params, edit_group); @@ -1237,9 +1242,10 @@ void LLPanelEditWearable::showWearable(LLViewerWearable* wearable, BOOL show, BO                          }                          buildParamList(panel_list, sorted_params, tab, jointp); -         +                          updateScrollingPanelUI();                  } +                  if (!disable_camera_switch)                  {                          showDefaultSubpart(); @@ -1268,17 +1274,17 @@ void LLPanelEditWearable::onTabExpandedCollapsed(const LLSD& param, U8 index)          {                  changeCamera(index);          } -  }  void LLPanelEditWearable::changeCamera(U8 subpart)  { -	// Don't change the camera if this type doesn't have a camera switch. -	// Useful for wearables like physics that don't have an associated physical body part. -	if (LLWearableType::getInstance()->getDisableCameraSwitch(mWearablePtr->getType())) -	{ -		return; -	} +        // Don't change the camera if this type doesn't have a camera switch. +        // Useful for wearables like physics that don't have an associated physical body part. +        if (LLWearableType::getInstance()->getDisableCameraSwitch(mWearablePtr->getType())) +        { +                return; +        } +          const LLEditWearableDictionary::WearableEntry *wearable_entry = LLEditWearableDictionary::getInstance()->getWearable(mWearablePtr->getType());          if (!wearable_entry)          { @@ -1307,9 +1313,9 @@ void LLPanelEditWearable::changeCamera(U8 subpart)          gMorphView->setCameraOffset( subpart_entry->mCameraOffset );          if (gSavedSettings.getBOOL("AppearanceCameraMovement"))          { -            // Unlock focus from avatar but don't stop animation to not interrupt ANIM_AGENT_CUSTOMIZE -            gAgentCamera.setFocusOnAvatar(FALSE, gAgentCamera.getCameraAnimating()); -            gMorphView->updateCamera(); +                // Unlock focus from avatar but don't stop animation to not interrupt ANIM_AGENT_CUSTOMIZE +                gAgentCamera.setFocusOnAvatar(FALSE, gAgentCamera.getCameraAnimating()); +                gMorphView->updateCamera();          }  } @@ -1345,7 +1351,7 @@ void LLPanelEditWearable::updateTypeSpecificControls(LLWearableType::EType type)                  }                  std::string avatar_height_str = llformat("%.2f", new_size); -                mHeigthValue.setArg("[HEIGHT]", avatar_height_str); +                mHeightValue.setArg("[HEIGHT]", avatar_height_str);                  updateAvatarHeightLabel();          } @@ -1368,14 +1374,18 @@ void LLPanelEditWearable::updateScrollingPanelUI()          LLWearableType::EType type = mWearablePtr->getType();          LLPanel *panel = getPanel(type); -        if(panel && (mWearablePtr->getItemID().notNull())) +        if (panel && (mWearablePtr->getItemID().notNull()))          {                  const LLEditWearableDictionary::WearableEntry *wearable_entry = LLEditWearableDictionary::getInstance()->getWearable(type);                  llassert(wearable_entry); -                if (!wearable_entry) return; -                U8 num_subparts = (U8)(wearable_entry->mSubparts.size()); +                if (!wearable_entry) +                { +                        return; +                }                  LLScrollingPanelParam::sUpdateDelayFrames = 0; + +                U8 num_subparts = (U8)(wearable_entry->mSubparts.size());                  for (U8 index = 0; index < num_subparts; ++index)                  {                          // dive into data structures to get the panel we need @@ -1385,13 +1395,13 @@ void LLPanelEditWearable::updateScrollingPanelUI()                          const std::string scrolling_panel = subpart_entry->mParamList;                          LLScrollingPanelList *panel_list = getChild<LLScrollingPanelList>(scrolling_panel); -         +                          if (!panel_list)                          {                                  LL_WARNS() << "could not get scrolling panel list: " << scrolling_panel << LL_ENDL;                                  continue;                          } -                         +                          panel_list->updatePanels(TRUE);                  }          } @@ -1403,76 +1413,58 @@ LLPanel* LLPanelEditWearable::getPanel(LLWearableType::EType type)          {                  case LLWearableType::WT_SHAPE:                          return mPanelShape; -                        break;                  case LLWearableType::WT_SKIN:                          return mPanelSkin; -                        break;                  case LLWearableType::WT_HAIR:                          return mPanelHair; -                        break;                  case LLWearableType::WT_EYES:                          return mPanelEyes; -                        break;                  case LLWearableType::WT_SHIRT:                          return mPanelShirt; -                        break;                  case LLWearableType::WT_PANTS:                          return mPanelPants; -                        break;                  case LLWearableType::WT_SHOES:                          return mPanelShoes; -                        break;                  case LLWearableType::WT_SOCKS:                          return mPanelSocks; -                        break;                  case LLWearableType::WT_JACKET:                          return mPanelJacket; -                        break;                  case LLWearableType::WT_GLOVES:                          return mPanelGloves; -                        break;                  case LLWearableType::WT_UNDERSHIRT:                          return mPanelUndershirt; -                        break;                  case LLWearableType::WT_UNDERPANTS:                          return mPanelUnderpants; -                        break;                  case LLWearableType::WT_SKIRT:                          return mPanelSkirt; -                        break;                  case LLWearableType::WT_ALPHA:                          return mPanelAlpha; -                        break;                  case LLWearableType::WT_TATTOO:                          return mPanelTattoo; -                        break; -				 -				case LLWearableType::WT_UNIVERSAL: -					return mPanelUniversal; -					break; + +                case LLWearableType::WT_UNIVERSAL: +                        return mPanelUniversal;                  case LLWearableType::WT_PHYSICS:                          return mPanelPhysics; -                        break;                  default: -                        break; +                        return NULL;          } -        return NULL;  }  void LLPanelEditWearable::getSortedParams(value_map_t &sorted_params, const std::string &edit_group) @@ -1507,11 +1499,11 @@ void LLPanelEditWearable::buildParamList(LLScrollingPanelList *panel_list, value          // sorted_params is sorted according to magnitude of effect from          // least to greatest.  Adding to the front of the child list          // reverses that order. -        if( panel_list ) +        if (panel_list)          {                  panel_list->clearPanels();                  value_map_t::iterator end = sorted_params.end(); -                for(value_map_t::iterator it = sorted_params.begin(); it != end; ++it) +                for (value_map_t::iterator it = sorted_params.begin(); it != end; ++it)                  {                          LLPanel::Params p;                          p.name("LLScrollingPanelParam"); @@ -1534,7 +1526,7 @@ void LLPanelEditWearable::updateVerbs()  {          bool can_copy = false; -        if(mWearableItem) +        if (mWearableItem)          {                  can_copy = mWearableItem->getPermissions().allowCopyBy(gAgentID);          } @@ -1544,7 +1536,7 @@ void LLPanelEditWearable::updateVerbs()          mBtnRevert->setEnabled(is_dirty);          getChildView("save_as_button")->setEnabled(is_dirty && can_copy); -        if(isAgentAvatarValid()) +        if (isAgentAvatarValid())          {                  // Update viewer's radio buttons (of RadioGroup with control_name="AvatarSex") of Avatar's gender                  // with value from "AvatarSex" setting @@ -1585,17 +1577,20 @@ void LLPanelEditWearable::configureAlphaCheckbox(LLAvatarAppearanceDefines::ETex  void LLPanelEditWearable::onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LLAvatarAppearanceDefines::ETextureIndex te)  { -        if (!checkbox_ctrl) return; -        if (!getWearable()) return; +        if (!checkbox_ctrl || !getWearable()) +        { +                return; +        }          LL_INFOS() << "onInvisibilityCommit, self " << this << " checkbox_ctrl " << checkbox_ctrl << LL_ENDL; -		U32 index; -		if (!gAgentWearables.getWearableIndex(getWearable(),index)) -		{ -			LL_WARNS() << "wearable not found" << LL_ENDL; -			return; -		} +        U32 index; +        if (!gAgentWearables.getWearableIndex(getWearable(), index)) +        { +                LL_WARNS() << "wearable not found" << LL_ENDL; +                return; +        } +          bool new_invis_state = checkbox_ctrl->get();          if (new_invis_state)          { @@ -1603,8 +1598,8 @@ void LLPanelEditWearable::onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LL                  mPreviousAlphaTexture[te] = lto->getID();                  LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTexture( IMG_INVISIBLE ); -				gAgentAvatarp->setLocalTexture(te, image, FALSE, index); -				gAgentAvatarp->wearableUpdated(getWearable()->getType()); +                gAgentAvatarp->setLocalTexture(te, image, FALSE, index); +                gAgentAvatarp->wearableUpdated(getWearable()->getType());          }          else          { @@ -1614,10 +1609,16 @@ void LLPanelEditWearable::onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LL                  {                          prev_id = LLUUID( gSavedSettings.getString( "UIImgDefaultAlphaUUID" ) );                  } -                if (prev_id.isNull()) return; -                 +                if (prev_id.isNull()) +                { +                        return; +                } +                  LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTexture(prev_id); -                if (!image) return; +                if (!image) +                { +                        return; +                }                  gAgentAvatarp->setLocalTexture(te, image, FALSE, index);                  gAgentAvatarp->wearableUpdated(getWearable()->getType()); @@ -1628,7 +1629,7 @@ void LLPanelEditWearable::onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LL  void LLPanelEditWearable::updateAlphaCheckboxes()  { -        for(string_texture_index_map_t::iterator iter = mAlphaCheckbox2Index.begin(); +        for (string_texture_index_map_t::iterator iter = mAlphaCheckbox2Index.begin();                  iter != mAlphaCheckbox2Index.end(); ++iter )          {                  LLAvatarAppearanceDefines::ETextureIndex te = (LLAvatarAppearanceDefines::ETextureIndex)iter->second; diff --git a/indra/newview/llpaneleditwearable.h b/indra/newview/llpaneleditwearable.h index 43d6a3595f..5a40e945c2 100644 --- a/indra/newview/llpaneleditwearable.h +++ b/indra/newview/llpaneleditwearable.h @@ -135,14 +135,14 @@ private:  	// localized and parameterized strings that used to build avatar_height_label  	std::string mMeters;  	std::string mFeet; -	std::string mHeigth; -	LLUIString  mHeigthValue; +	std::string mHeight; +	LLUIString  mHeightValue;  	LLUIString  mReplacementMetricUrl; -	// color for mHeigth string -	LLUIColor mAvatarHeigthLabelColor; -	// color for mHeigthValue string -	LLUIColor mAvatarHeigthValueLabelColor; +	// color for mHeight string +	LLUIColor mAvatarHeightLabelColor; +	// color for mHeightValue string +	LLUIColor mAvatarHeightValueLabelColor;  	// This text editor reference will change each time we edit a new wearable -   	// it will be grabbed from the currently visible panel diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp index f3a41f2e25..632e902d70 100644 --- a/indra/newview/llpanelobjectinventory.cpp +++ b/indra/newview/llpanelobjectinventory.cpp @@ -964,9 +964,15 @@ void LLTaskLSLBridge::openItem()  		LLSD floater_key;  		floater_key["taskid"] = mPanel->getTaskUUID();  		floater_key["itemid"] = mUUID; +  		LLLiveLSLEditor* preview = LLFloaterReg::showTypedInstance<LLLiveLSLEditor>("preview_scriptedit", floater_key, TAKE_FOCUS_YES);  		if (preview)  		{ +            LLSelectNode *node = LLSelectMgr::getInstance()->getSelection()->getFirstRootNode(NULL, TRUE); +            if (node && node->mValid) +            { +                preview->setObjectName(node->mName); +            }  			preview->setObjectID(mPanel->getTaskUUID());  		}  	} diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp index 4a755a6e93..c7ae4eb0d9 100644 --- a/indra/newview/llpaneloutfitedit.cpp +++ b/indra/newview/llpaneloutfitedit.cpp @@ -733,7 +733,7 @@ void LLPanelOutfitEdit::onSearchEdit(const std::string& string)  	if (mSearchString == "")  	{  		mInventoryItemsPanel->setFilterSubString(LLStringUtil::null); -		mWearableItemsList->setFilterSubString(LLStringUtil::null); +		mWearableItemsList->setFilterSubString(LLStringUtil::null, true);  		// re-open folders that were initially open  		mSavedFolderState->setApply(TRUE);  		mInventoryItemsPanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState); @@ -763,8 +763,7 @@ void LLPanelOutfitEdit::onSearchEdit(const std::string& string)  	// set new filter string  	mInventoryItemsPanel->setFilterSubString(mSearchString); -	mWearableItemsList->setFilterSubString(mSearchString); - +	mWearableItemsList->setFilterSubString(mSearchString, true);  }  void LLPanelOutfitEdit::onPlusBtnClicked(void) diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp index d8c34d5c40..af06de379d 100644 --- a/indra/newview/llpaneloutfitsinventory.cpp +++ b/indra/newview/llpaneloutfitsinventory.cpp @@ -28,19 +28,19 @@  #include "llpaneloutfitsinventory.h" -#include "llnotificationsutil.h" -#include "lltabcontainer.h" - +#include "llagentwearables.h" +#include "llappearancemgr.h"  #include "llfloatersidepanelcontainer.h"  #include "llinventoryfunctions.h"  #include "llinventorymodelbackgroundfetch.h" -#include "llagentwearables.h" -#include "llappearancemgr.h" -#include "lloutfitobserver.h" +#include "llnotificationsutil.h"  #include "lloutfitgallery.h" +#include "lloutfitobserver.h"  #include "lloutfitslist.h" +#include "llpanelappearancetab.h"  #include "llpanelwearing.h"  #include "llsidepanelappearance.h" +#include "lltabcontainer.h"  #include "llviewercontrol.h"  #include "llviewerfoldertype.h" @@ -159,25 +159,12 @@ void LLPanelOutfitsInventory::onSearchEdit(const std::string& string)  {  	if (!mActivePanel) return; -	mFilterSubString = string; - -	if (string == "") -	{ -		mActivePanel->setFilterSubString(LLStringUtil::null); -	} -      if (!LLInventoryModelBackgroundFetch::instance().inventoryFetchStarted())      {          llassert(false); // this should have been done on startup          LLInventoryModelBackgroundFetch::instance().start();      } -	if (mActivePanel->getFilterSubString().empty() && string.empty()) -	{ -		// current filter and new filter empty, do nothing -		return; -	} -  	// set new filter string  	mActivePanel->setFilterSubString(string);  } @@ -302,6 +289,7 @@ bool LLPanelOutfitsInventory::isActionEnabled(const LLSD& userdata)  {  	return mActivePanel && mActivePanel->isActionEnabled(userdata);  } +  // List Commands                                                                //  ////////////////////////////////////////////////////////////////////////////////// @@ -330,7 +318,7 @@ void LLPanelOutfitsInventory::onTabChange()  	mActivePanel = dynamic_cast<LLPanelAppearanceTab*>(mAppearanceTabs->getCurrentPanel());  	if (!mActivePanel) return; -	mActivePanel->setFilterSubString(mFilterSubString); +	mActivePanel->checkFilterSubString();  	mActivePanel->onOpen(LLSD());  	updateVerbs(); @@ -357,8 +345,6 @@ bool LLPanelOutfitsInventory::isOutfitsGalleryPanelActive() const  	return mActivePanel->getName() == OUTFIT_GALLERY_TAB_NAME;  } - -  void LLPanelOutfitsInventory::setWearablesLoading(bool val)  {  	updateVerbs(); diff --git a/indra/newview/llpaneloutfitsinventory.h b/indra/newview/llpaneloutfitsinventory.h index 50d7074d4b..91873a427a 100644 --- a/indra/newview/llpaneloutfitsinventory.h +++ b/indra/newview/llpaneloutfitsinventory.h @@ -66,7 +66,6 @@ protected:  private:  	LLTabContainer*			mAppearanceTabs; -	std::string 			mFilterSubString;  	//////////////////////////////////////////////////////////////////////////////////  	// tab panels                                                                   // diff --git a/indra/newview/llpanelprofilepicks.cpp b/indra/newview/llpanelprofilepicks.cpp index ff3f654d0e..75b02fdf20 100644 --- a/indra/newview/llpanelprofilepicks.cpp +++ b/indra/newview/llpanelprofilepicks.cpp @@ -562,7 +562,6 @@ void LLPanelProfilePick::setAvatarId(const LLUUID& avatar_id)      {          mPickName->setEnabled(TRUE);          mPickDescription->setEnabled(TRUE); -        mSetCurrentLocationButton->setVisible(TRUE);      }      else      { @@ -577,7 +576,6 @@ BOOL LLPanelProfilePick::postBuild()      mSaveButton = getChild<LLButton>("save_changes_btn");      mCreateButton = getChild<LLButton>("create_changes_btn");      mCancelButton = getChild<LLButton>("cancel_changes_btn"); -    mSetCurrentLocationButton = getChild<LLButton>("set_to_curr_location_btn");      mSnapshotCtrl = getChild<LLTextureCtrl>("pick_snapshot");      mSnapshotCtrl->setCommitCallback(boost::bind(&LLPanelProfilePick::onSnapshotChanged, this)); @@ -588,7 +586,6 @@ BOOL LLPanelProfilePick::postBuild()      mSaveButton->setCommitCallback(boost::bind(&LLPanelProfilePick::onClickSave, this));      mCreateButton->setCommitCallback(boost::bind(&LLPanelProfilePick::onClickSave, this));      mCancelButton->setCommitCallback(boost::bind(&LLPanelProfilePick::onClickCancel, this)); -    mSetCurrentLocationButton->setCommitCallback(boost::bind(&LLPanelProfilePick::onClickSetLocation, this));      mPickName->setKeystrokeCallback(boost::bind(&LLPanelProfilePick::onPickChanged, this, _1), NULL);      mPickName->setEnabled(FALSE); @@ -750,32 +747,6 @@ BOOL LLPanelProfilePick::isDirty() const      return FALSE;  } -void LLPanelProfilePick::onClickSetLocation() -{ -    // Save location for later use. -    setPosGlobal(gAgent.getPositionGlobal()); - -    std::string parcel_name, region_name; - -    LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); -    if (parcel) -    { -        mParcelId = parcel->getID(); -        parcel_name = parcel->getName(); -    } - -    LLViewerRegion* region = gAgent.getRegion(); -    if (region) -    { -        region_name = region->getName(); -    } - -    setPickLocation(createLocationText(getLocationNotice(), parcel_name, region_name, getPosGlobal())); - -    mLocationChanged = true; -    enableSaveButton(TRUE); -} -  void LLPanelProfilePick::onClickSave()  {      sendUpdate(); diff --git a/indra/newview/llpanelprofilepicks.h b/indra/newview/llpanelprofilepicks.h index f84463cc9b..228dfd5958 100644 --- a/indra/newview/llpanelprofilepicks.h +++ b/indra/newview/llpanelprofilepicks.h @@ -202,11 +202,6 @@ protected:      void resetDirty() override;      /** -     * Callback for "Set Location" button click -     */ -    void onClickSetLocation(); - -    /**       * Callback for "Save" and "Create" button click       */      void onClickSave(); @@ -228,7 +223,6 @@ protected:      LLTextureCtrl*      mSnapshotCtrl;      LLLineEditor*       mPickName;      LLTextEditor*       mPickDescription; -    LLButton*           mSetCurrentLocationButton;      LLButton*           mSaveButton;      LLButton*           mCreateButton;      LLButton*           mCancelButton; diff --git a/indra/newview/llpanelvoicedevicesettings.cpp b/indra/newview/llpanelvoicedevicesettings.cpp index 28631e2b7b..af57169f3b 100644 --- a/indra/newview/llpanelvoicedevicesettings.cpp +++ b/indra/newview/llpanelvoicedevicesettings.cpp @@ -32,6 +32,7 @@  // Viewer includes  #include "llcombobox.h"  #include "llsliderctrl.h" +#include "llstartup.h"  #include "llviewercontrol.h"  #include "llvoiceclient.h"  #include "llvoicechannel.h" @@ -70,11 +71,14 @@ BOOL LLPanelVoiceDeviceSettings::postBuild()  	mCtrlInputDevices = getChild<LLComboBox>("voice_input_device");  	mCtrlOutputDevices = getChild<LLComboBox>("voice_output_device"); +    mUnmuteBtn = getChild<LLButton>("unmute_btn");  	mCtrlInputDevices->setCommitCallback(  		boost::bind(&LLPanelVoiceDeviceSettings::onCommitInputDevice, this));  	mCtrlOutputDevices->setCommitCallback(  		boost::bind(&LLPanelVoiceDeviceSettings::onCommitOutputDevice, this)); +    mUnmuteBtn->setCommitCallback( +        boost::bind(&LLPanelVoiceDeviceSettings::onCommitUnmute, this));  	mLocalizedDeviceNames[DEFAULT_DEVICE]				= getString("default_text");  	mLocalizedDeviceNames["No Device"]					= getString("name_no_device"); @@ -108,11 +112,27 @@ void LLPanelVoiceDeviceSettings::draw()  	// let user know that volume indicator is not yet available  	bool is_in_tuning_mode = LLVoiceClient::getInstance()->inTuningMode(); -	getChildView("wait_text")->setVisible( !is_in_tuning_mode && mUseTuningMode); +    bool voice_enabled = LLVoiceClient::getInstance()->voiceEnabled(); +    if (voice_enabled) +    { +        getChildView("wait_text")->setVisible( !is_in_tuning_mode && mUseTuningMode); +        getChildView("disabled_text")->setVisible(FALSE); +        mUnmuteBtn->setVisible(FALSE); +    } +    else +    { +        getChildView("wait_text")->setVisible(FALSE); + +        static LLCachedControl<bool> chat_enabled(gSavedSettings, "EnableVoiceChat"); +        // If voice isn't enabled, it is either disabled or muted +        bool voice_disabled = chat_enabled() || LLStartUp::getStartupState() <= STATE_LOGIN_WAIT; +        getChildView("disabled_text")->setVisible(voice_disabled); +        mUnmuteBtn->setVisible(!voice_disabled); +    }  	LLPanel::draw(); -	if (is_in_tuning_mode) +	if (is_in_tuning_mode && voice_enabled)  	{  		const S32 num_bars = 5;  		F32 voice_power = LLVoiceClient::getInstance()->tuningGetEnergy() / LLVoiceClient::OVERDRIVEN_POWER_LEVEL; @@ -339,3 +359,8 @@ void LLPanelVoiceDeviceSettings::onInputDevicesClicked()  {  	LLVoiceClient::getInstance()->refreshDeviceLists(false);  // fill in the pop up menus again if needed.  } + +void LLPanelVoiceDeviceSettings::onCommitUnmute() +{ +    gSavedSettings.setBOOL("EnableVoiceChat", TRUE); +} diff --git a/indra/newview/llpanelvoicedevicesettings.h b/indra/newview/llpanelvoicedevicesettings.h index 355bc02b05..e704394d4a 100644 --- a/indra/newview/llpanelvoicedevicesettings.h +++ b/indra/newview/llpanelvoicedevicesettings.h @@ -55,12 +55,14 @@ protected:  	void onCommitOutputDevice();  	void onOutputDevicesClicked();  	void onInputDevicesClicked(); +    void onCommitUnmute();  	F32 mMicVolume;  	std::string mInputDevice;  	std::string mOutputDevice;  	class LLComboBox		*mCtrlInputDevices;  	class LLComboBox		*mCtrlOutputDevices; +    class LLButton          *mUnmuteBtn;  	BOOL mDevicesUpdated;  	bool mUseTuningMode;  	std::map<std::string, std::string> mLocalizedDeviceNames; diff --git a/indra/newview/llpanelvolumepulldown.cpp b/indra/newview/llpanelvolumepulldown.cpp index 6f11e76a72..09038ac95a 100644 --- a/indra/newview/llpanelvolumepulldown.cpp +++ b/indra/newview/llpanelvolumepulldown.cpp @@ -50,7 +50,7 @@ LLPanelVolumePulldown::LLPanelVolumePulldown()  {  	mCommitCallbackRegistrar.add("Vol.setControlFalse", boost::bind(&LLPanelVolumePulldown::setControlFalse, this, _2));  	mCommitCallbackRegistrar.add("Vol.SetSounds", boost::bind(&LLPanelVolumePulldown::onClickSetSounds, this)); -	mCommitCallbackRegistrar.add("Vol.updateMediaAutoPlayCheckbox",	boost::bind(&LLPanelVolumePulldown::updateMediaAutoPlayCheckbox, this, _1)); +	mCommitCallbackRegistrar.add("Vol.updateCheckbox",	boost::bind(&LLPanelVolumePulldown::updateCheckbox, this, _1, _2));  	mCommitCallbackRegistrar.add("Vol.GoAudioPrefs", boost::bind(&LLPanelVolumePulldown::onAdvancedButtonClick, this, _2));  	buildFromFile( "panel_volume_pulldown.xml");  } @@ -90,19 +90,23 @@ void LLPanelVolumePulldown::setControlFalse(const LLSD& user_data)  		control->set(LLSD(FALSE));  } -void LLPanelVolumePulldown::updateMediaAutoPlayCheckbox(LLUICtrl* ctrl) +void LLPanelVolumePulldown::updateCheckbox(LLUICtrl* ctrl, const LLSD& user_data)  { -	std::string name = ctrl->getName(); +    std::string control_name = user_data.asString(); +    if (control_name == "MediaAutoPlay") +    { +        std::string name = ctrl->getName(); -	// Disable "Allow Media to auto play" only when both -	// "Streaming Music" and "Media" are unchecked. STORM-513. -	if ((name == "enable_music") || (name == "enable_media")) -	{ -		bool music_enabled = getChild<LLCheckBoxCtrl>("enable_music")->get(); -		bool media_enabled = getChild<LLCheckBoxCtrl>("enable_media")->get(); +        // Disable "Allow Media to auto play" only when both +        // "Streaming Music" and "Media" are unchecked. STORM-513. +        if ((name == "enable_music") || (name == "enable_media")) +        { +            bool music_enabled = getChild<LLCheckBoxCtrl>("enable_music")->get(); +            bool media_enabled = getChild<LLCheckBoxCtrl>("enable_media")->get(); -		getChild<LLCheckBoxCtrl>("media_auto_play_combo")->setEnabled(music_enabled || media_enabled); -	} +            getChild<LLCheckBoxCtrl>("media_auto_play_combo")->setEnabled(music_enabled || media_enabled); +        } +    }  }  void LLPanelVolumePulldown::onClickSetSounds() diff --git a/indra/newview/llpanelvolumepulldown.h b/indra/newview/llpanelvolumepulldown.h index e907bb0c78..3243d2e968 100644 --- a/indra/newview/llpanelvolumepulldown.h +++ b/indra/newview/llpanelvolumepulldown.h @@ -43,7 +43,7 @@ class LLPanelVolumePulldown : public LLPanelPulldown  	void onClickSetSounds();  	// Disables "Allow Media to auto play" check box only when both  	// "Streaming Music" and "Media" are unchecked. Otherwise enables it. -	void updateMediaAutoPlayCheckbox(LLUICtrl* ctrl); +	void updateCheckbox(LLUICtrl* ctrl, const LLSD& user_data);  	void onAdvancedButtonClick(const LLSD& user_data);  }; diff --git a/indra/newview/llpanelwearing.cpp b/indra/newview/llpanelwearing.cpp index 5242c4fef9..bfdb0fbc88 100644 --- a/indra/newview/llpanelwearing.cpp +++ b/indra/newview/llpanelwearing.cpp @@ -209,8 +209,6 @@ protected:  ////////////////////////////////////////////////////////////////////////// -std::string LLPanelAppearanceTab::sFilterSubString = LLStringUtil::null; -  static LLPanelInjector<LLPanelWearing> t_panel_wearing("panel_wearing");  LLPanelWearing::LLPanelWearing() @@ -328,10 +326,11 @@ void LLPanelWearing::startUpdateTimer()  }  // virtual -void LLPanelWearing::setFilterSubString(const std::string& string) +void LLPanelWearing::onFilterSubStringChanged(const std::string& new_string, const std::string& old_string)  { -	sFilterSubString = string; -	mCOFItemsList->setFilterSubString(sFilterSubString); +	mCOFItemsList->setFilterSubString(new_string, true); + +	mAccordionCtrl->arrange();  }  // virtual diff --git a/indra/newview/llpanelwearing.h b/indra/newview/llpanelwearing.h index 18e543eec6..2f3f14956a 100644 --- a/indra/newview/llpanelwearing.h +++ b/indra/newview/llpanelwearing.h @@ -61,7 +61,7 @@ public:  	/*virtual*/ void onOpen(const LLSD& info); -	/*virtual*/ void setFilterSubString(const std::string& string); +	/*virtual*/ void onFilterSubStringChanged(const std::string& new_string, const std::string& old_string);  	/*virtual*/ bool isActionEnabled(const LLSD& userdata); diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp index aceb8539d2..7095275c52 100644 --- a/indra/newview/llpreviewscript.cpp +++ b/indra/newview/llpreviewscript.cpp @@ -87,6 +87,9 @@  #include "llexperiencecache.h"  #include "llfloaterexperienceprofile.h"  #include "llviewerassetupload.h" +#include "lltoggleablemenu.h" +#include "llmenubutton.h" +#include "llinventoryfunctions.h"  const std::string HELLO_LSL =  	"default\n" @@ -323,6 +326,38 @@ void LLFloaterScriptSearch::onSearchBoxCommit()  }  /// --------------------------------------------------------------------------- + +class LLScriptMovedObserver : public LLInventoryObserver +{ +  public: +    LLScriptMovedObserver(LLPreviewLSL *floater) : mPreview(floater) { gInventory.addObserver(this); } +    virtual ~LLScriptMovedObserver() { gInventory.removeObserver(this); } +    virtual void changed(U32 mask); + +  private: +    LLPreviewLSL *mPreview; +}; + +void LLScriptMovedObserver::changed(U32 mask) +{ +    const std::set<LLUUID> &mChangedItemIDs = gInventory.getChangedIDs(); +    std::set<LLUUID>::const_iterator it; + +    const LLUUID &item_id = mPreview->getScriptID(); + +    for (it = mChangedItemIDs.begin(); it != mChangedItemIDs.end(); it++) +    { +        if (*it == item_id) +        { +            if ((mask & (LLInventoryObserver::STRUCTURE)) != 0) +            { +                mPreview->setDirty(); +            } +        } +    } +} + +/// ---------------------------------------------------------------------------  /// LLScriptEdCore  /// --------------------------------------------------------------------------- @@ -460,6 +495,13 @@ BOOL LLScriptEdCore::postBuild()  	LLSyntaxIdLSL::getInstance()->initialize();  	processKeywords(); +    mCommitCallbackRegistrar.add("FontSize.Set", boost::bind(&LLScriptEdCore::onChangeFontSize, this, _2)); +    mEnableCallbackRegistrar.add("FontSize.Check", boost::bind(&LLScriptEdCore::isFontSizeChecked, this, _2)); + +    LLToggleableMenu *context_menu = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>( +        "menu_lsl_font_size.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); +    getChild<LLMenuButton>("font_btn")->setMenu(context_menu, LLMenuButton::MP_BOTTOM_LEFT, true); +  	return TRUE;  } @@ -788,7 +830,7 @@ void LLScriptEdCore::setHelpPage(const std::string& help_string)  	LLUIString url_string = gSavedSettings.getString("LSLHelpURL"); -	url_string.setArg("[LSL_STRING]", help_string); +	url_string.setArg("[LSL_STRING]", help_string.empty() ? HELP_LSL_PORTAL_TOPIC : help_string);  	addHelpItemToHistory(help_string); @@ -1288,7 +1330,21 @@ LLUUID LLScriptEdCore::getAssociatedExperience()const  	return mAssociatedExperience;  } -void LLLiveLSLEditor::setExperienceIds( const LLSD& experience_ids ) +void LLScriptEdCore::onChangeFontSize(const LLSD &userdata) +{ +    const std::string font_name = userdata.asString(); +    gSavedSettings.setString("LSLFontSizeName", font_name); +} + +bool LLScriptEdCore::isFontSizeChecked(const LLSD &userdata) +{ +    const std::string current_size_name = LLScriptEditor::getScriptFontSize(); +    const std::string size_name = userdata.asString(); + +    return (size_name == current_size_name); +} + +    void LLLiveLSLEditor::setExperienceIds( const LLSD& experience_ids )  {  	mExperienceIds=experience_ids;  	updateExperiencePanel(); @@ -1476,7 +1532,21 @@ bool LLScriptEdContainer::onExternalChange(const std::string& filename)  	return true;  } -/// --------------------------------------------------------------------------- +BOOL LLScriptEdContainer::handleKeyHere(KEY key, MASK mask)  +{ +    if (('A' == key) && (MASK_CONTROL == (mask & MASK_MODIFIERS))) +    { +        mScriptEd->selectAll(); +        return TRUE; +    } + +    if (!LLPreview::handleKeyHere(key, mask))  +    { +        return mScriptEd->handleKeyHere(key, mask); +    } +    return TRUE; +} +    /// ---------------------------------------------------------------------------  /// LLPreviewLSL  /// --------------------------------------------------------------------------- @@ -1517,6 +1587,14 @@ LLPreviewLSL::LLPreviewLSL(const LLSD& key )  	mPendingUploads(0)  {  	mFactoryMap["script panel"] = LLCallbackMap(LLPreviewLSL::createScriptEdPanel, this); + +    mItemObserver = new LLScriptMovedObserver(this); +} + +LLPreviewLSL::~LLPreviewLSL()  +{  +    delete mItemObserver; +    mItemObserver = NULL;  }  // virtual @@ -1528,10 +1606,14 @@ BOOL LLPreviewLSL::postBuild()  	if (item)  	{  		getChild<LLUICtrl>("desc")->setValue(item->getDescription()); + +        std::string item_path = get_category_path(item->getParentUUID()); +        getChild<LLUICtrl>("path_txt")->setValue(item_path); +        getChild<LLUICtrl>("path_txt")->setToolTip(item_path);  	}  	childSetCommitCallback("desc", LLPreview::onText, this);  	getChild<LLLineEditor>("desc")->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe); - +   	return LLPreview::postBuild();  } @@ -1543,7 +1625,12 @@ void LLPreviewLSL::draw()  		setTitle(LLTrans::getString("ScriptWasDeleted"));  		mScriptEd->setItemRemoved(TRUE);  	} - +    else if (mDirty)  +    { +        std::string item_path = get_category_path(item->getParentUUID()); +        getChild<LLUICtrl>("path_txt")->setValue(item_path); +        getChild<LLUICtrl>("path_txt")->setToolTip(item_path); +    }  	LLPreview::draw();  }  // virtual @@ -1856,7 +1943,8 @@ LLLiveLSLEditor::LLLiveLSLEditor(const LLSD& key) :  	mPendingUploads(0),  	mIsModifiable(FALSE),  	mIsNew(false), -	mIsSaving(FALSE) +	mIsSaving(FALSE), +    mObjectName("")  {  	mFactoryMap["script ed panel"] = LLCallbackMap(LLLiveLSLEditor::createScriptEdPanel, this);  } @@ -1993,6 +2081,7 @@ void LLLiveLSLEditor::loadAsset()  			}  			refreshFromItem(); +            getChild<LLUICtrl>("obj_name")->setValue(mObjectName);  			// This is commented out, because we don't completely  			// handle script exports yet.  			/* diff --git a/indra/newview/llpreviewscript.h b/indra/newview/llpreviewscript.h index b01c7fd4ad..dc49770699 100644 --- a/indra/newview/llpreviewscript.h +++ b/indra/newview/llpreviewscript.h @@ -36,6 +36,7 @@  #include "llfloatergotoline.h"  #include "lllivefile.h"  #include "llsyntaxid.h" +#include "llscripteditor.h"  class LLLiveLSLFile;  class LLMessageSystem; @@ -52,6 +53,7 @@ class LLViewerInventoryItem;  class LLScriptEdContainer;  class LLFloaterGotoLine;  class LLFloaterExperienceProfile; +class LLScriptMovedObserver;  class LLLiveLSLFile : public LLLiveFile  { @@ -145,7 +147,13 @@ public:      void 			setAssetID( const LLUUID& asset_id){ mAssetID = asset_id; };      LLUUID 			getAssetID() { return mAssetID; } -private: +    bool isFontSizeChecked(const LLSD &userdata); +    void onChangeFontSize(const LLSD &size_name); + +    virtual BOOL handleKeyHere(KEY key, MASK mask); +    void selectAll() { mEditor->selectAll(); } + +  private:  	void		onBtnDynamicHelp();  	void		onBtnUndoChanges(); @@ -153,8 +161,6 @@ private:  	void selectFirstError(); -	virtual BOOL handleKeyHere(KEY key, MASK mask); -	  	void enableSave(BOOL b) {mEnableSave = b;}  protected: @@ -207,6 +213,8 @@ public:  	LLScriptEdContainer(const LLSD& key);  	LLScriptEdContainer(const LLSD& key, const bool live); +    BOOL handleKeyHere(KEY key, MASK mask); +  protected:  	std::string		getTmpFileName(const std::string& script_name);  	bool			onExternalChange(const std::string& filename); @@ -220,6 +228,12 @@ class LLPreviewLSL : public LLScriptEdContainer  {  public:  	LLPreviewLSL(const LLSD& key ); +    ~LLPreviewLSL(); + +    LLUUID getScriptID() { return mItemUUID; } + +    void setDirty() { mDirty = true; } +  	virtual void callbackLSLCompileSucceeded();  	virtual void callbackLSLCompileFailed(const LLSD& compile_errors); @@ -251,6 +265,8 @@ protected:  	// Can safely close only after both text and bytecode are uploaded  	S32 mPendingUploads; +    LLScriptMovedObserver* mItemObserver; +  }; @@ -283,6 +299,8 @@ public:  	void requestExperiences();  	void experienceChanged();  	void addAssociatedExperience(const LLSD& experience); + +    void setObjectName(std::string name) { mObjectName = name; }  private:  	virtual BOOL canClose(); @@ -341,6 +359,7 @@ private:  	LLSD			mExperienceIds;  	LLHandle<LLFloater> mExperienceProfile; +    std::string mObjectName;  };  #endif  // LL_LLPREVIEWSCRIPT_H diff --git a/indra/newview/llscenemonitor.cpp b/indra/newview/llscenemonitor.cpp index 8d86e2de4c..ce0a8d69a9 100644 --- a/indra/newview/llscenemonitor.cpp +++ b/indra/newview/llscenemonitor.cpp @@ -657,19 +657,6 @@ void LLSceneMonitor::dumpToFile(const std::string &file_name)  			}  		} -		typedef LLTrace::StatType<LLTrace::MemAccumulator> trace_mem; -		for (auto& it : trace_mem::instance_snapshot()) -		{ -			os << it.getName() << "(KiB)"; - -			for (S32 frame = 1; frame <= frame_count; frame++) -			{ -				os << ", " << scene_load_recording.getPrevRecording(frame_count - frame).getMax(it).valueInUnits<LLUnits::Kilobytes>(); -			} - -			os << '\n'; -		} -  		os.flush();  		os.close();  	} diff --git a/indra/newview/llscripteditor.cpp b/indra/newview/llscripteditor.cpp index 3278bd3aa9..693491e7e7 100644 --- a/indra/newview/llscripteditor.cpp +++ b/indra/newview/llscripteditor.cpp @@ -30,19 +30,22 @@  #include "llsyntaxid.h"  #include "lllocalcliprect.h" +#include "llviewercontrol.h"  const S32	UI_TEXTEDITOR_LINE_NUMBER_MARGIN = 32;  static LLDefaultChildRegistry::Register<LLScriptEditor> r("script_editor");  LLScriptEditor::Params::Params() -:	show_line_numbers("show_line_numbers", true) +:	show_line_numbers("show_line_numbers", true), +    default_font_size("default_font_size", false)  {}  LLScriptEditor::LLScriptEditor(const Params& p)  :	LLTextEditor(p) -,	mShowLineNumbers(p.show_line_numbers) +,	mShowLineNumbers(p.show_line_numbers), +    mUseDefaultFontSize(p.default_font_size)  {  	if (mShowLineNumbers)  	{ @@ -51,6 +54,12 @@ LLScriptEditor::LLScriptEditor(const Params& p)  	}  } +BOOL LLScriptEditor::postBuild() +{ +    gSavedSettings.getControl("LSLFontSizeName")->getCommitSignal()->connect(boost::bind(&LLScriptEditor::onFontSizeChange, this)); +    return LLTextEditor::postBuild(); +} +  void LLScriptEditor::draw()  {  	{ @@ -110,12 +119,11 @@ void LLScriptEditor::drawLineNumbers()  			// draw the line numbers  			if(line.mLineNum != last_line_num && line.mRect.mTop <= scrolled_view_rect.mTop)  			{ -				const LLFontGL *num_font = LLFontGL::getFontMonospace();  				const LLWString ltext = utf8str_to_wstring(llformat("%d", line.mLineNum ));  				BOOL is_cur_line = cursor_line == line.mLineNum;  				const U8 style = is_cur_line ? LLFontGL::BOLD : LLFontGL::NORMAL;  				const LLColor4 fg_color = is_cur_line ? mCursorColor : mReadOnlyFgColor; -				num_font->render( +                getScriptFont()->render(  								 ltext, // string to draw  								 0, // begin offset  								 UI_TEXTEDITOR_LINE_NUMBER_MARGIN - 2, // x @@ -143,8 +151,10 @@ void LLScriptEditor::loadKeywords()      LL_PROFILE_ZONE_SCOPED;  	mKeywords.processTokens(); +    LLStyleConstSP style = new LLStyle(LLStyle::Params().font(getScriptFont()).color(mDefaultColor.get())); +  	segment_vec_t segment_list; -	mKeywords.findSegments(&segment_list, getWText(), mDefaultColor.get(), *this); +    mKeywords.findSegments(&segment_list, getWText(), *this, style);  	mSegments.clear();  	segment_set_t::iterator insert_it = mSegments.begin(); @@ -159,9 +169,12 @@ void LLScriptEditor::updateSegments()  	if (mReflowIndex < S32_MAX && mKeywords.isLoaded() && mParseOnTheFly)  	{          LL_PROFILE_ZONE_SCOPED; + +        LLStyleConstSP style = new LLStyle(LLStyle::Params().font(getScriptFont()).color(mDefaultColor.get())); +  		// HACK:  No non-ascii keywords for now  		segment_vec_t segment_list; -		mKeywords.findSegments(&segment_list, getWText(), mDefaultColor.get(), *this); +        mKeywords.findSegments(&segment_list, getWText(), *this, style);  		clearSegments();  		for (segment_vec_t::iterator list_it = segment_list.begin(); list_it != segment_list.end(); ++list_it) @@ -211,3 +224,23 @@ void LLScriptEditor::drawSelectionBackground()  		}  	}  } + +std::string LLScriptEditor::getScriptFontSize() +{  +    static LLCachedControl<std::string> size_name(gSavedSettings, "LSLFontSizeName", "Monospace"); +    return size_name; +} + +LLFontGL* LLScriptEditor::getScriptFont() +{ +    std::string font_size_name = mUseDefaultFontSize ? "Monospace" : getScriptFontSize(); +    return LLFontGL::getFont(LLFontDescriptor("Monospace", font_size_name, 0)); +} + +void LLScriptEditor::onFontSizeChange()  +{ +    if (!mUseDefaultFontSize) +    { +        needsReflow(); +    } +} diff --git a/indra/newview/llscripteditor.h b/indra/newview/llscripteditor.h index f458203a39..ef941f552a 100644 --- a/indra/newview/llscripteditor.h +++ b/indra/newview/llscripteditor.h @@ -37,7 +37,7 @@ public:  	struct Params : public LLInitParam::Block<Params, LLTextEditor::Params>  	{  		Optional<bool>		show_line_numbers; -		 +        Optional<bool> default_font_size;  		Params();  	}; @@ -45,6 +45,7 @@ public:  	// LLView override  	virtual void	draw(); +    BOOL postBuild();  	void	initKeywords();  	void	loadKeywords(); @@ -52,7 +53,11 @@ public:  	LLKeywords::keyword_iterator_t keywordsBegin()	{ return mKeywords.begin(); }  	LLKeywords::keyword_iterator_t keywordsEnd()	{ return mKeywords.end(); } -protected: +    static std::string getScriptFontSize(); +    LLFontGL* getScriptFont(); +    void onFontSizeChange(); + +  protected:  	friend class LLUICtrlFactory;  	LLScriptEditor(const Params& p); @@ -65,6 +70,7 @@ private:  	LLKeywords	mKeywords;  	bool		mShowLineNumbers; +    bool mUseDefaultFontSize;  };  #endif // LL_SCRIPTEDITOR_H diff --git a/indra/newview/llscrollingpanelparam.cpp b/indra/newview/llscrollingpanelparam.cpp index bfa453a0ae..efd84eaa6d 100644 --- a/indra/newview/llscrollingpanelparam.cpp +++ b/indra/newview/llscrollingpanelparam.cpp @@ -259,19 +259,15 @@ void LLScrollingPanelParam::onHintHeldDown( LLVisualParamHint* hint )  		// Make sure we're not taking the slider out of bounds  		// (this is where some simple UI limits are stored) -		F32 new_percent = weightToPercent(new_weight); -		LLSliderCtrl* slider = getChild<LLSliderCtrl>("param slider"); -		if (slider) +		F32 new_percent = weightToSlider(new_weight); +		if (mSlider->getMinValue() < new_percent +			&& new_percent < mSlider->getMaxValue())  		{ -			if (slider->getMinValue() < new_percent -				&& new_percent < slider->getMaxValue()) -			{ -				mWearable->setVisualParamWeight( hint->getVisualParam()->getID(), new_weight); -				mWearable->writeToAvatar(gAgentAvatarp); -				gAgentAvatarp->updateVisualParams(); +			mWearable->setVisualParamWeight( hint->getVisualParam()->getID(), new_weight); +			mWearable->writeToAvatar(gAgentAvatarp); +			gAgentAvatarp->updateVisualParams(); -				slider->setValue( weightToPercent( new_weight ) ); -			} +			mSlider->setValue( weightToSlider( new_weight ) );  		}  	}  } @@ -292,17 +288,13 @@ void LLScrollingPanelParam::onHintMinMouseUp( void* userdata )  		F32 range = self->mHintMax->getVisualParamWeight() - self->mHintMin->getVisualParamWeight();  		// step a fraction in the negative directiona  		F32 new_weight = current_weight - (range / 10.f); -		F32 new_percent = self->weightToPercent(new_weight); -		LLSliderCtrl* slider = self->getChild<LLSliderCtrl>("param slider"); -		if (slider) +		F32 new_percent = self->weightToSlider(new_weight); +		if (self->mSlider->getMinValue() < new_percent +			&& new_percent < self->mSlider->getMaxValue())  		{ -			if (slider->getMinValue() < new_percent -				&& new_percent < slider->getMaxValue()) -			{ -				self->mWearable->setVisualParamWeight(hint->getVisualParam()->getID(), new_weight); -				self->mWearable->writeToAvatar(gAgentAvatarp); -				slider->setValue( self->weightToPercent( new_weight ) ); -			} +			self->mWearable->setVisualParamWeight(hint->getVisualParam()->getID(), new_weight); +			self->mWearable->writeToAvatar(gAgentAvatarp); +			self->mSlider->setValue( self->weightToSlider( new_weight ) );  		}  	} @@ -326,33 +318,16 @@ void LLScrollingPanelParam::onHintMaxMouseUp( void* userdata )  			F32 range = self->mHintMax->getVisualParamWeight() - self->mHintMin->getVisualParamWeight();  			// step a fraction in the negative direction  			F32 new_weight = current_weight + (range / 10.f); -			F32 new_percent = self->weightToPercent(new_weight); -			LLSliderCtrl* slider = self->getChild<LLSliderCtrl>("param slider"); -			if (slider) +			F32 new_percent = self->weightToSlider(new_weight); +			if (self->mSlider->getMinValue() < new_percent +				&& new_percent < self->mSlider->getMaxValue())  			{ -				if (slider->getMinValue() < new_percent -					&& new_percent < slider->getMaxValue()) -				{ -					self->mWearable->setVisualParamWeight(hint->getVisualParam()->getID(), new_weight); -					self->mWearable->writeToAvatar(gAgentAvatarp); -					slider->setValue( self->weightToPercent( new_weight ) ); -				} +				self->mWearable->setVisualParamWeight(hint->getVisualParam()->getID(), new_weight); +				self->mWearable->writeToAvatar(gAgentAvatarp); +				self->mSlider->setValue( self->weightToSlider( new_weight ) );  			}  		}  	}  	LLVisualParamHint::requestHintUpdates( self->mHintMin, self->mHintMax );  } - - -F32 LLScrollingPanelParam::weightToPercent( F32 weight ) -{ -	LLViewerVisualParam* param = mParam; -	return (weight - param->getMinWeight()) /  (param->getMaxWeight() - param->getMinWeight()) * 100.f; -} - -F32 LLScrollingPanelParam::percentToWeight( F32 percent ) -{ -	LLViewerVisualParam* param = mParam; -	return percent / 100.f * (param->getMaxWeight() - param->getMinWeight()) + param->getMinWeight(); -} diff --git a/indra/newview/llscrollingpanelparam.h b/indra/newview/llscrollingpanelparam.h index c7a47d5c7a..dc344486fc 100644 --- a/indra/newview/llscrollingpanelparam.h +++ b/indra/newview/llscrollingpanelparam.h @@ -61,9 +61,6 @@ public:  	void				onHintMouseDown( LLVisualParamHint* hint );  	void				onHintHeldDown( LLVisualParamHint* hint ); -	F32					weightToPercent( F32 weight ); -	F32					percentToWeight( F32 percent ); -  public:  	// Constants for LLPanelVisualParam  	const static F32 PARAM_STEP_TIME_THRESHOLD; diff --git a/indra/newview/llscrollingpanelparambase.cpp b/indra/newview/llscrollingpanelparambase.cpp index fe7a362723..2a6c25235d 100644 --- a/indra/newview/llscrollingpanelparambase.cpp +++ b/indra/newview/llscrollingpanelparambase.cpp @@ -43,6 +43,7 @@ LLScrollingPanelParamBase::LLScrollingPanelParamBase( const LLPanel::Params& pan  						      LLViewerJointMesh* mesh, LLViewerVisualParam* param, BOOL allow_modify, LLWearable* wearable, LLJoint* jointp, BOOL use_hints)  	: LLScrollingPanel( panel_params ),  	  mParam(param), +	  mSlider(nullptr),  	  mAllowModify(allow_modify),  	  mWearable(wearable)  { @@ -50,13 +51,15 @@ LLScrollingPanelParamBase::LLScrollingPanelParamBase( const LLPanel::Params& pan  		buildFromFile( "panel_scrolling_param.xml");  	else  		buildFromFile( "panel_scrolling_param_base.xml"); -	 -	getChild<LLUICtrl>("param slider")->setValue(weightToPercent(param->getWeight())); + +	mSlider = getChild<LLSliderCtrl>("param slider"); +	mSlider->setMaxValue(100.f * (mParam->getMaxWeight() - mParam->getMinWeight())); +	mSlider->setValue(weightToSlider(param->getWeight()));  	std::string display_name = LLTrans::getString(param->getDisplayName()); -	getChild<LLUICtrl>("param slider")->setLabelArg("[DESC]", display_name); -	getChildView("param slider")->setEnabled(mAllowModify); -	childSetCommitCallback("param slider", LLScrollingPanelParamBase::onSliderMoved, this); +	mSlider->setLabelArg("[DESC]", display_name); +	mSlider->setEnabled(mAllowModify); +	mSlider->setCommitCallback(boost::bind(LLScrollingPanelParamBase::onSliderMoved, mSlider, this));  	setVisible(FALSE);  	setBorderVisible( FALSE ); @@ -77,9 +80,9 @@ void LLScrollingPanelParamBase::updatePanel(BOOL allow_modify)  	}  	F32 current_weight = mWearable->getVisualParamWeight( param->getID() ); -	getChild<LLUICtrl>("param slider")->setValue(weightToPercent( current_weight ) ); +	mSlider->setValue(weightToSlider( current_weight ) );  	mAllowModify = allow_modify; -	getChildView("param slider")->setEnabled(mAllowModify); +	mSlider->setEnabled(mAllowModify);  }  // static @@ -90,7 +93,7 @@ void LLScrollingPanelParamBase::onSliderMoved(LLUICtrl* ctrl, void* userdata)  	LLViewerVisualParam* param = self->mParam;  	F32 current_weight = self->mWearable->getVisualParamWeight( param->getID() ); -	F32 new_weight = self->percentToWeight( (F32)slider->getValue().asReal() ); +	F32 new_weight = self->sliderToWeight( (F32)slider->getValue().asReal() );  	if (current_weight != new_weight )  	{  		self->mWearable->setVisualParamWeight( param->getID(), new_weight); @@ -99,14 +102,12 @@ void LLScrollingPanelParamBase::onSliderMoved(LLUICtrl* ctrl, void* userdata)  	}  } -F32 LLScrollingPanelParamBase::weightToPercent( F32 weight ) +F32 LLScrollingPanelParamBase::weightToSlider(F32 weight)  { -	LLViewerVisualParam* param = mParam; -	return (weight - param->getMinWeight()) /  (param->getMaxWeight() - param->getMinWeight()) * 100.f; +	return (weight - mParam->getMinWeight()) * 100.f;  } -F32 LLScrollingPanelParamBase::percentToWeight( F32 percent ) +F32 LLScrollingPanelParamBase::sliderToWeight(F32 slider)  { -	LLViewerVisualParam* param = mParam; -	return percent / 100.f * (param->getMaxWeight() - param->getMinWeight()) + param->getMinWeight(); +	return slider / 100.f + mParam->getMinWeight();  } diff --git a/indra/newview/llscrollingpanelparambase.h b/indra/newview/llscrollingpanelparambase.h index 9538826251..e7f88a21bd 100644 --- a/indra/newview/llscrollingpanelparambase.h +++ b/indra/newview/llscrollingpanelparambase.h @@ -36,6 +36,7 @@ class LLViewerVisualParam;  class LLWearable;  class LLVisualParamHint;  class LLViewerVisualParam; +class LLSliderCtrl;  class LLJoint;  class LLScrollingPanelParamBase : public LLScrollingPanel @@ -49,11 +50,13 @@ public:  	static void			onSliderMoved(LLUICtrl* ctrl, void* userdata); -	F32					weightToPercent( F32 weight ); -	F32					percentToWeight( F32 percent ); +	F32					weightToSlider(F32 weight); +	F32					sliderToWeight(F32 slider);  public:  	LLViewerVisualParam* mParam; +	LLSliderCtrl* mSlider; +  protected:  	BOOL mAllowModify;  	LLWearable *mWearable; diff --git a/indra/newview/llsearchhistory.cpp b/indra/newview/llsearchhistory.cpp index 449e0080f0..66e377cb8d 100644 --- a/indra/newview/llsearchhistory.cpp +++ b/indra/newview/llsearchhistory.cpp @@ -75,6 +75,17 @@ bool LLSearchHistory::save()  {  	// build filename for each user  	std::string resolved_filename = getHistoryFilePath(); + +    // delete the file if it is empty or contains only empty entries +    if (std::find_if(mSearchHistory.begin(), mSearchHistory.end(), [](const LLSearchHistoryItem& x) +        { +            return !x.search_query.empty(); +        }) == mSearchHistory.end()) +    { +        remove(resolved_filename.c_str()); +        return true; +    } +  	// open a file for writing  	llofstream file(resolved_filename.c_str());  	if (!file.is_open()) diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index d172a87b1d..f0d3e878dd 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -4308,9 +4308,12 @@ BOOL LLSelectMgr::selectGetAggregateTexturePermissions(LLAggregatePermissions& r  BOOL LLSelectMgr::isMovableAvatarSelected()  { -	if (mAllowSelectAvatar) +	if (mAllowSelectAvatar && getSelection()->getObjectCount() == 1)  	{ -		return (getSelection()->getObjectCount() == 1) && (getSelection()->getFirstRootObject()->isAvatar()) && getSelection()->getFirstMoveableNode(TRUE); +        // nothing but avatar should be selected, so check that +        // there is only one selected object and it is a root +        LLViewerObject* obj = getSelection()->getFirstRootObject(); +		return obj && obj->isAvatar() && getSelection()->getFirstMoveableNode(TRUE);  	}  	return FALSE;  } diff --git a/indra/newview/llslurl.cpp b/indra/newview/llslurl.cpp index a3a8247268..e43fb993ce 100644 --- a/indra/newview/llslurl.cpp +++ b/indra/newview/llslurl.cpp @@ -1,4 +1,4 @@ -/**  +/**   * @file llurlsimstring.cpp (was llsimurlstring.cpp)   * @brief Handles "SLURL fragments" like Ahern/123/45 for   * startup processing, login screen, prefs, etc. @@ -6,21 +6,21 @@   * $LicenseInfo:firstyear=2010&license=viewerlgpl$   * Second Life Viewer Source Code   * Copyright (C) 2010, Linden Research, Inc. - *  + *   * This library is free software; you can redistribute it and/or   * modify it under the terms of the GNU Lesser General Public   * License as published by the Free Software Foundation;   * version 2.1 of the License only. - *  + *   * This library is distributed in the hope that it will be useful,   * but WITHOUT ANY WARRANTY; without even the implied warranty of   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU   * Lesser General Public License for more details. - *  + *   * You should have received a copy of the GNU Lesser General Public   * License along with this library; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  + *   * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ @@ -36,7 +36,7 @@  #include "curl/curl.h"  const char* LLSLURL::SLURL_HTTP_SCHEME		 = "http";  const char* LLSLURL::SLURL_HTTPS_SCHEME		 = "https"; -const char* LLSLURL::SLURL_SECONDLIFE_SCHEME	 = "secondlife"; +const char* LLSLURL::SLURL_SECONDLIFE_SCHEME = "secondlife";  const char* LLSLURL::SLURL_SECONDLIFE_PATH	 = "secondlife";  const char* LLSLURL::SLURL_COM		         = "slurl.com";  // For DnD - even though www.slurl.com redirects to slurl.com in a browser, you  can copy and drag @@ -54,473 +54,469 @@ const char* LLSLURL::SIM_LOCATION_LAST           = "last";  // resolve a simstring from a slurl  LLSLURL::LLSLURL(const std::string& slurl)  { -	// by default we go to agni. -	mType = INVALID; - -	if(slurl == SIM_LOCATION_HOME) -	{ -		mType = HOME_LOCATION; -	} -	else if(slurl.empty() || (slurl == SIM_LOCATION_LAST)) -	{ -		mType = LAST_LOCATION; -	} -	else -	{ -		LLURI slurl_uri; -		// parse the slurl as a uri -		if(slurl.find(':') == std::string::npos) -		{ -			// There may be no scheme ('secondlife:' etc.) passed in.  In that case -			// we want to normalize the slurl by putting the appropriate scheme -			// in front of the slurl.  So, we grab the appropriate slurl base -			// from the grid manager which may be http://slurl.com/secondlife/ for maingrid, or -			// https://<hostname>/region/ for Standalone grid (the word region, not the region name) -			// these slurls are typically passed in from the 'starting location' box on the login panel, -			// where the user can type in <regionname>/<x>/<y>/<z> -			std::string fixed_slurl = LLGridManager::getInstance()->getSLURLBase(); - -			// the slurl that was passed in might have a prepended /, or not.  So, -			// we strip off the prepended '/' so we don't end up with http://slurl.com/secondlife/<region>/<x>/<y>/<z> -			// or some such. -			 -			if(slurl[0] == '/') -		    { -				fixed_slurl += slurl.substr(1); -		    } -			else -		    { -				fixed_slurl += slurl; -		    } -			// We then load the slurl into a LLURI form -			slurl_uri = LLURI(fixed_slurl); -		} -		else -		{ -		    // as we did have a scheme, implying a URI style slurl, we -		    // simply parse it as a URI -		    slurl_uri = LLURI(slurl); -		} -		 -		LLSD path_array = slurl_uri.pathArray(); -		 -		// determine whether it's a maingrid URI or an Standalone/open style URI -		// by looking at the scheme.  If it's a 'secondlife:' slurl scheme or -		// 'sl:' scheme, we know it's maingrid -		 -		// At the end of this if/else block, we'll have determined the grid, -		// and the slurl type (APP or LOCATION) -		if(slurl_uri.scheme() == LLSLURL::SLURL_SECONDLIFE_SCHEME) -		{ -			// parse a maingrid style slurl.  We know the grid is maingrid -			// so grab it. -			// A location slurl for maingrid (with the special schemes) can be in the form -			// secondlife://<regionname>/<x>/<y>/<z> -			// or -			// secondlife://<Grid>/secondlife/<region>/<x>/<y>/<z> -			// where if grid is empty, it specifies Agni -			 -			// An app style slurl for maingrid can be -			// secondlife://<Grid>/app/<app parameters> -			// where an empty grid implies Agni -			 -			// we'll start by checking the top of the 'path' which will be  -			// either 'app', 'secondlife', or <x>. -			 -			// default to maingrid -			 -			mGrid = MAINGRID; -			 -			if ((path_array[0].asString() == LLSLURL::SLURL_SECONDLIFE_PATH) || -				(path_array[0].asString() == LLSLURL::SLURL_APP_PATH)) -		    { -				// it's in the form secondlife://<grid>/(app|secondlife) -				// so parse the grid name to derive the grid ID -				if (!slurl_uri.hostName().empty()) -				{ -					mGrid = LLGridManager::getInstance()->getGridId(slurl_uri.hostName()); -				} -				else if(path_array[0].asString() == LLSLURL::SLURL_SECONDLIFE_PATH) -				{ -					// If the slurl is in the form secondlife:///secondlife/<region> form,  -					// then we are in fact on maingrid.   -					mGrid = MAINGRID; -				} -				else if(path_array[0].asString() == LLSLURL::SLURL_APP_PATH) -				{ -					// for app style slurls, where no grid name is specified, assume the currently -					// selected or logged in grid. -					mGrid =  LLGridManager::getInstance()->getGridId(); -				} - -				if(mGrid.empty()) -				{ -					// we couldn't find the grid in the grid manager, so bail -					LL_WARNS("AppInit")<<"unable to find grid"<<LL_ENDL; -					return; -				} -				// set the type as appropriate. -				if(path_array[0].asString() == LLSLURL::SLURL_SECONDLIFE_PATH) -				{ -					mType = LOCATION; -				} -				else -				{ -					mType = APP; -				} -				path_array.erase(0); -		    } -			else -		    { -				if(slurl_uri.hostName() == LLSLURL::SLURL_APP_PATH) +    // by default we go to agni. +    mType = INVALID; + +    if (slurl.empty() || (slurl == SIM_LOCATION_LAST)) +    { +        mType = LAST_LOCATION; +    } +    else if (slurl == SIM_LOCATION_HOME) +    { +        mType = HOME_LOCATION; +    } +    else +    { +        LLURI slurl_uri; +        // parse the slurl as a uri +        if (slurl.find(':') == std::string::npos) +        { +            // There may be no scheme ('secondlife:' etc.) passed in.  In that case +            // we want to normalize the slurl by putting the appropriate scheme +            // in front of the slurl.  So, we grab the appropriate slurl base +            // from the grid manager which may be http://slurl.com/secondlife/ for maingrid, or +            // https://<hostname>/region/ for Standalone grid (the word region, not the region name) +            // these slurls are typically passed in from the 'starting location' box on the login panel, +            // where the user can type in <regionname>/<x>/<y>/<z> +            std::string fixed_slurl = LLGridManager::getInstance()->getSLURLBase(); + +            // the slurl that was passed in might have a prepended /, or not.  So, +            // we strip off the prepended '/' so we don't end up with http://slurl.com/secondlife/<region>/<x>/<y>/<z> +            // or some such. + +            if (slurl[0] == '/') +            { +                fixed_slurl += slurl.substr(1); +            } +            else +            { +                fixed_slurl += slurl; +            } +            // We then load the slurl into a LLURI form +            slurl_uri = LLURI(fixed_slurl); +        } +        else +        { +            // as we did have a scheme, implying a URI style slurl, we +            // simply parse it as a URI +            slurl_uri = LLURI(slurl); +        } + +        LLSD path_array = slurl_uri.pathArray(); + +        // determine whether it's a maingrid URI or an Standalone/open style URI +        // by looking at the scheme.  If it's a 'secondlife:' slurl scheme or +        // 'sl:' scheme, we know it's maingrid + +        // At the end of this if/else block, we'll have determined the grid, +        // and the slurl type (APP or LOCATION) +        if (slurl_uri.scheme() == LLSLURL::SLURL_SECONDLIFE_SCHEME) +        { +            if (path_array.size() == 0 +                && slurl_uri.authority().empty() +                && slurl_uri.escapedQuery().empty()) +            { +                mType = EMPTY; +                // um, we need a path... +                return; +            } + +            // parse a maingrid style slurl.  We know the grid is maingrid +            // so grab it. +            // A location slurl for maingrid (with the special schemes) can be in the form +            // secondlife://<regionname>/<x>/<y>/<z> +            // or +            // secondlife://<Grid>/secondlife/<region>/<x>/<y>/<z> +            // where if grid is empty, it specifies Agni + +            // An app style slurl for maingrid can be +            // secondlife://<Grid>/app/<app parameters> +            // where an empty grid implies Agni + +            // we'll start by checking the top of the 'path' which will be +            // either 'app', 'secondlife', or <x>. + +            // default to maingrid + +            mGrid = MAINGRID; + +            if ((path_array[0].asString() == LLSLURL::SLURL_SECONDLIFE_PATH) || +                (path_array[0].asString() == LLSLURL::SLURL_APP_PATH)) +            { +                // it's in the form secondlife://<grid>/(app|secondlife) +                // so parse the grid name to derive the grid ID +                if (!slurl_uri.hostName().empty()) +                { +                    mGrid = LLGridManager::getInstance()->getGridId(slurl_uri.hostName()); +                } +                else if(path_array[0].asString() == LLSLURL::SLURL_SECONDLIFE_PATH) +                { +                    // If the slurl is in the form secondlife:///secondlife/<region> form, +                    // then we are in fact on maingrid. +                    mGrid = MAINGRID; +                } +                else if(path_array[0].asString() == LLSLURL::SLURL_APP_PATH) +                { +                    // for app style slurls, where no grid name is specified, assume the currently +                    // selected or logged in grid. +                    mGrid =  LLGridManager::getInstance()->getGridId(); +                } + +                if (mGrid.empty()) +                { +                    // we couldn't find the grid in the grid manager, so bail +                    LL_WARNS("AppInit")<<"unable to find grid"<<LL_ENDL; +                    return; +                } +                // set the type as appropriate. +                if (path_array[0].asString() == LLSLURL::SLURL_SECONDLIFE_PATH) +                { +                    mType = LOCATION; +                } +                else +                { +                    mType = APP; +                } +                path_array.erase(0); +            } +            else +            { +                if (slurl_uri.hostName() == LLSLURL::SLURL_APP_PATH)                  {                      mType = APP;                  }                  else                  {                      // it wasn't a /secondlife/<region> or /app/<params>, so it must be secondlife://<region> -				// therefore the hostname will be the region name, and it's a location type -				mType = LOCATION; -				// 'normalize' it so the region name is in fact the head of the path_array -				path_array.insert(0, slurl_uri.hostName()); +                    // therefore the hostname will be the region name, and it's a location type +                    mType = LOCATION; +                    // 'normalize' it so the region name is in fact the head of the path_array +                    path_array.insert(0, slurl_uri.hostName()); +                } +            } +        } +        else if ((slurl_uri.scheme() == LLSLURL::SLURL_HTTP_SCHEME) || +            (slurl_uri.scheme() == LLSLURL::SLURL_HTTPS_SCHEME) || +            (slurl_uri.scheme() == LLSLURL::SLURL_X_GRID_LOCATION_INFO_SCHEME)) +        { +            // We're dealing with either a Standalone style slurl or slurl.com slurl +            if ((slurl_uri.hostName() == LLSLURL::SLURL_COM) || +                (slurl_uri.hostName() == LLSLURL::WWW_SLURL_COM) || +                (slurl_uri.hostName() == LLSLURL::MAPS_SECONDLIFE_COM)) +            { +                // slurl.com implies maingrid +                mGrid = MAINGRID; +            } +            else +            { +                // Don't try to match any old http://<host>/ URL as a SLurl. +                // SLE SLurls will have the grid hostname in the URL, so only +                // match http URLs if the hostname matches the grid hostname +                // (or its a slurl.com or maps.secondlife.com URL). +                if ((slurl_uri.scheme() == LLSLURL::SLURL_HTTP_SCHEME || +                     slurl_uri.scheme() == LLSLURL::SLURL_HTTPS_SCHEME) && +                    slurl_uri.hostName() != LLGridManager::getInstance()->getGrid()) +                { +                    return;                  } -		    } -		} -		else if((slurl_uri.scheme() == LLSLURL::SLURL_HTTP_SCHEME) || -		   (slurl_uri.scheme() == LLSLURL::SLURL_HTTPS_SCHEME) ||  -		   (slurl_uri.scheme() == LLSLURL::SLURL_X_GRID_LOCATION_INFO_SCHEME)) -		{ -		    // We're dealing with either a Standalone style slurl or slurl.com slurl -		  if ((slurl_uri.hostName() == LLSLURL::SLURL_COM) || -		      (slurl_uri.hostName() == LLSLURL::WWW_SLURL_COM) ||  -		      (slurl_uri.hostName() == LLSLURL::MAPS_SECONDLIFE_COM)) -			{ -				// slurl.com implies maingrid -				mGrid = MAINGRID; -			} -		    else -			{ -				// Don't try to match any old http://<host>/ URL as a SLurl. -				// SLE SLurls will have the grid hostname in the URL, so only -				// match http URLs if the hostname matches the grid hostname -				// (or its a slurl.com or maps.secondlife.com URL). -				if ((slurl_uri.scheme() == LLSLURL::SLURL_HTTP_SCHEME || -					 slurl_uri.scheme() == LLSLURL::SLURL_HTTPS_SCHEME) && -					slurl_uri.hostName() != LLGridManager::getInstance()->getGrid()) -				{ -					return; -				} - -				// As it's a Standalone grid/open, we will always have a hostname, as Standalone/open  style -				// urls are properly formed, unlike the stinky maingrid style -				mGrid = slurl_uri.hostName(); -			} -		    if (path_array.size() == 0) -			{ -				// um, we need a path... -				return; -			} -			 -			// we need to normalize the urls so -			// the path portion starts with the 'command' that we want to do -			// it can either be region or app.   -		    if ((path_array[0].asString() == LLSLURL::SLURL_REGION_PATH) || -				(path_array[0].asString() == LLSLURL::SLURL_SECONDLIFE_PATH)) -			{ -				// strip off 'region' or 'secondlife' -				path_array.erase(0); -				// it's a location -				mType = LOCATION; -			} -			else if (path_array[0].asString() == LLSLURL::SLURL_APP_PATH) -			{ -				mType = APP; -				path_array.erase(0); -				// leave app appended.   -			} -			else -			{ -				// not a valid https/http/x-grid-location-info slurl, so it'll likely just be a URL -				return; -			} -		} -		else -		{ -		    // invalid scheme, so bail -		    return; -		} -		 -		 -		if(path_array.size() == 0) -		{ -			// we gotta have some stuff after the specifier as to whether it's a region or command -			return; -		} -		 -		// now that we know whether it's an app slurl or a location slurl, -		// parse the slurl into the proper data structures. -		if(mType == APP) -		{		 -			// grab the app command type and strip it (could be a command to jump somewhere,  -			// or whatever ) -			mAppCmd = path_array[0].asString(); -			path_array.erase(0); -			 -			// Grab the parameters -			mAppPath = path_array; -			// and the query -			mAppQuery = slurl_uri.query(); -			mAppQueryMap = slurl_uri.queryMap(); -			return; -		} -		else if(mType == LOCATION) -		{ -			// at this point, head of the path array should be [ <region>, <x>, <y>, <z> ] where x, y and z  -			// are collectively optional -			// are optional - -			mRegion = LLURI::unescape(path_array[0].asString()); - -			if(LLStringUtil::containsNonprintable(mRegion)) -			{ -				LLStringUtil::stripNonprintable(mRegion); -			} - -			path_array.erase(0); -			 -			// parse the x, y, and optionally z -			if(path_array.size() >= 2) -			{	 -			   -			  mPosition = LLVector3(path_array); // this construction handles LLSD without all components (values default to 0.f) -			  if((F32(mPosition[VX]) < 0.f) ||  -                             (mPosition[VX] > REGION_WIDTH_METERS) || -			     (F32(mPosition[VY]) < 0.f) ||  -                             (mPosition[VY] > REGION_WIDTH_METERS) || -			     (F32(mPosition[VZ]) < 0.f) ||  -                             (mPosition[VZ] > REGION_HEIGHT_METERS)) -			    { -			      mType = INVALID; -			      return; -			    } -  -			} -			else -			{ -				// if x, y and z were not fully passed in, go to the middle of the region. -				// teleport will adjust the actual location to make sure you're on the ground -				// and such -				mPosition = LLVector3(REGION_WIDTH_METERS/2, REGION_WIDTH_METERS/2, 0); -			} -		} -	} -} +                // As it's a Standalone grid/open, we will always have a hostname, as Standalone/open  style +                // urls are properly formed, unlike the stinky maingrid style +                mGrid = slurl_uri.hostName(); +            } +            if (path_array.size() == 0) +            { +                // um, we need a path... +                return; +            } + +            // we need to normalize the urls so +            // the path portion starts with the 'command' that we want to do +            // it can either be region or app. +            if ((path_array[0].asString() == LLSLURL::SLURL_REGION_PATH) || +                (path_array[0].asString() == LLSLURL::SLURL_SECONDLIFE_PATH)) +            { +                // strip off 'region' or 'secondlife' +                path_array.erase(0); +                // it's a location +                mType = LOCATION; +            } +            else if (path_array[0].asString() == LLSLURL::SLURL_APP_PATH) +            { +                mType = APP; +                path_array.erase(0); +                // leave app appended. +            } +            else +            { +                // not a valid https/http/x-grid-location-info slurl, so it'll likely just be a URL +                return; +            } +        } +        else +        { +            // invalid scheme, so bail +            return; +        } + +        if (path_array.size() == 0) +        { +            // we gotta have some stuff after the specifier as to whether it's a region or command +            return; +        } + +        // now that we know whether it's an app slurl or a location slurl, +        // parse the slurl into the proper data structures. +        if (mType == APP) +        { +            // grab the app command type and strip it (could be a command to jump somewhere, +            // or whatever ) +            mAppCmd = path_array[0].asString(); +            path_array.erase(0); + +            // Grab the parameters +            mAppPath = path_array; +            // and the query +            mAppQuery = slurl_uri.query(); +            mAppQueryMap = slurl_uri.queryMap(); +            return; +        } +        else if (mType == LOCATION) +        { +            // at this point, head of the path array should be [ <region>, <x>, <y>, <z> ] where x, y and z +            // are collectively optional +            // are optional + +            mRegion = LLURI::unescape(path_array[0].asString()); + +            if (LLStringUtil::containsNonprintable(mRegion)) +            { +                LLStringUtil::stripNonprintable(mRegion); +            } + +            path_array.erase(0); + +            // parse the x, y, and optionally z +            if (path_array.size() >= 2) +            { +                mPosition = LLVector3(path_array); // this construction handles LLSD without all components (values default to 0.f) +                if ((F32(mPosition[VX]) < 0.f) || (mPosition[VX] > REGION_WIDTH_METERS) || +                    (F32(mPosition[VY]) < 0.f) || (mPosition[VY] > REGION_WIDTH_METERS) || +                    (F32(mPosition[VZ]) < 0.f) || (mPosition[VZ] > REGION_HEIGHT_METERS)) +                { +                    mType = INVALID; +                    return; +                } +            } +            else +            { +                // if x, y and z were not fully passed in, go to the middle of the region. +                // teleport will adjust the actual location to make sure you're on the ground +                // and such +                mPosition = LLVector3(REGION_WIDTH_METERS / 2, REGION_WIDTH_METERS / 2, 0); +            } +        } +    } +}  // Create a slurl for the middle of the region -LLSLURL::LLSLURL(const std::string& grid,  -				 const std::string& region) +LLSLURL::LLSLURL(const std::string& grid, const std::string& region)  { -	mGrid = grid; -	mRegion = region; -	mType = LOCATION; -	mPosition = LLVector3((F64)REGION_WIDTH_METERS/2, (F64)REGION_WIDTH_METERS/2, 0); +    mGrid = grid; +    mRegion = region; +    mType = LOCATION; +    mPosition = LLVector3((F64)REGION_WIDTH_METERS / 2, (F64)REGION_WIDTH_METERS / 2, 0);  } - -  // create a slurl given the position.  The position will be modded with the region  // width handling global positions as well -LLSLURL::LLSLURL(const std::string& grid,  -		 const std::string& region,  -		 const LLVector3& position) +LLSLURL::LLSLURL(const std::string& grid, +        const std::string& region, +        const LLVector3& position)  { -	mGrid = grid; -	mRegion = region; -	S32 x = ll_round( (F32)fmod( position[VX], (F32)REGION_WIDTH_METERS ) ); -	S32 y = ll_round( (F32)fmod( position[VY], (F32)REGION_WIDTH_METERS ) ); -	S32 z = ll_round( (F32)position[VZ] ); -	mType = LOCATION; -	mPosition = LLVector3(x, y, z); +    mGrid = grid; +    mRegion = region; +    S32 x = ll_round((F32)fmod(position[VX], (F32)REGION_WIDTH_METERS)); +    S32 y = ll_round((F32)fmod(position[VY], (F32)REGION_WIDTH_METERS)); +    S32 z = ll_round((F32)position[VZ]); +    mType = LOCATION; +    mPosition = LLVector3(x, y, z);  } -  // create a simstring -LLSLURL::LLSLURL(const std::string& region,  -		 const LLVector3& position) +LLSLURL::LLSLURL(const std::string& region, +        const LLVector3& position)  { -  *this = LLSLURL(LLGridManager::getInstance()->getGridId(), -		  region, position); +    *this = LLSLURL(LLGridManager::getInstance()->getGridId(), region, position);  }  // create a slurl from a global position -LLSLURL::LLSLURL(const std::string& grid,  -		 const std::string& region,  -		 const LLVector3d& global_position) +LLSLURL::LLSLURL(const std::string& grid, +         const std::string& region, +         const LLVector3d& global_position)  { -	*this = LLSLURL(LLGridManager::getInstance()->getGridId(grid), -		  region, LLVector3(global_position.mdV[VX], -				    global_position.mdV[VY], -				    global_position.mdV[VZ])); +    *this = LLSLURL(LLGridManager::getInstance()->getGridId(grid), region, +        LLVector3(global_position.mdV[VX], global_position.mdV[VY], global_position.mdV[VZ]));  }  // create a slurl from a global position -LLSLURL::LLSLURL(const std::string& region,  -		 const LLVector3d& global_position) +LLSLURL::LLSLURL(const std::string& region, +        const LLVector3d& global_position)  { -  *this = LLSLURL(LLGridManager::getInstance()->getGridId(), -		  region, global_position); +    *this = LLSLURL(LLGridManager::getInstance()->getGridId(), +        region, global_position);  }  LLSLURL::LLSLURL(const std::string& command, const LLUUID&id, const std::string& verb)  { -  mType = APP; -  mAppCmd = command; -  mAppPath = LLSD::emptyArray(); -  mAppPath.append(LLSD(id)); -  mAppPath.append(LLSD(verb)); +    mType = APP; +    mAppCmd = command; +    mAppPath = LLSD::emptyArray(); +    mAppPath.append(LLSD(id)); +    mAppPath.append(LLSD(verb));  } -  std::string LLSLURL::getSLURLString() const  { -	switch(mType) -	{ -		case HOME_LOCATION: -			return SIM_LOCATION_HOME; -		case LAST_LOCATION: -			return SIM_LOCATION_LAST; -		case LOCATION: -			{ -				// lookup the grid -				S32 x = ll_round( (F32)mPosition[VX] ); -				S32 y = ll_round( (F32)mPosition[VY] ); -				S32 z = ll_round( (F32)mPosition[VZ] );	 -				return LLGridManager::getInstance()->getSLURLBase(mGrid) +  -				LLURI::escape(mRegion) + llformat("/%d/%d/%d",x,y,z);  -			} -		case APP: -		{ -			std::ostringstream app_url; -			app_url << LLGridManager::getInstance()->getAppSLURLBase() << "/" << mAppCmd; -			for(LLSD::array_const_iterator i = mAppPath.beginArray(); -				i != mAppPath.endArray(); -				i++) -			{ -				app_url << "/" << i->asString(); -			} -			if(mAppQuery.length() > 0) -			{ -				app_url << "?" << mAppQuery; -			} -			return app_url.str(); -		}	 -		default: -			LL_WARNS("AppInit") << "Unexpected SLURL type for SLURL string" << (int)mType << LL_ENDL;			 -			return std::string(); -	} +    switch (mType) +    { +        case HOME_LOCATION: +            return SIM_LOCATION_HOME; +        case LAST_LOCATION: +            return SIM_LOCATION_LAST; +        case LOCATION: +        { +            // lookup the grid +            S32 x = ll_round((F32)mPosition[VX]); +            S32 y = ll_round((F32)mPosition[VY]); +            S32 z = ll_round((F32)mPosition[VZ]); +            return LLGridManager::getInstance()->getSLURLBase(mGrid) + +                LLURI::escape(mRegion) + llformat("/%d/%d/%d", x, y, z); +        } +        case APP: +        { +            std::ostringstream app_url; +            app_url << LLGridManager::getInstance()->getAppSLURLBase() << "/" << mAppCmd; +            for (LLSD::array_const_iterator i = mAppPath.beginArray(); +                i != mAppPath.endArray(); +                i++) +            { +                app_url << "/" << i->asString(); +            } +            if (mAppQuery.length() > 0) +            { +                app_url << "?" << mAppQuery; +            } +            return app_url.str(); +        } +        default: +            LL_WARNS("AppInit") << "Unexpected SLURL type for SLURL string" << (int)mType << LL_ENDL; +            return std::string(); +    }  }  std::string LLSLURL::getLoginString() const  { -	 -	std::stringstream unescaped_start; -	switch(mType) -	{ -		case LOCATION: -			unescaped_start << "uri:"  -			<< mRegion << "&"  -			<< ll_round(mPosition[0]) << "&"  -			<< ll_round(mPosition[1]) << "&"  -			<< ll_round(mPosition[2]); -			break; -		case HOME_LOCATION: -			unescaped_start << "home"; -			break; -		case LAST_LOCATION: -			unescaped_start << "last"; -			break; -		default: -			LL_WARNS("AppInit") << "Unexpected SLURL type ("<<(int)mType <<")for login string"<< LL_ENDL; -			break; -	} -	return  xml_escape_string(unescaped_start.str()); +    std::stringstream unescaped_start; +    switch (mType) +    { +        case LOCATION: +            unescaped_start << "uri:" +                << mRegion << "&" +                << ll_round(mPosition[0]) << "&" +                << ll_round(mPosition[1]) << "&" +                << ll_round(mPosition[2]); +            break; +        case HOME_LOCATION: +            unescaped_start << "home"; +            break; +        case LAST_LOCATION: +            unescaped_start << "last"; +            break; +        default: +            LL_WARNS("AppInit") << "Unexpected SLURL type (" << (int)mType << ")for login string" << LL_ENDL; +            break; +    } +    return  xml_escape_string(unescaped_start.str());  } -bool LLSLURL::operator==(const LLSLURL& rhs) +bool LLSLURL::operator ==(const LLSLURL& rhs)  { -	if(rhs.mType != mType) return false; -	switch(mType) -	{ -		case LOCATION: -			return ((mGrid == rhs.mGrid) && -					(mRegion == rhs.mRegion) && -					(mPosition == rhs.mPosition)); -		case APP: -			return getSLURLString() == rhs.getSLURLString(); -			 -		case HOME_LOCATION: -		case LAST_LOCATION: -			return true; -		default: -			return false; -	} +    if (rhs.mType != mType) +        return false; + +    switch (mType) +    { +        case LOCATION: +            return (mGrid == rhs.mGrid) && +                    (mRegion == rhs.mRegion) && +                    (mPosition == rhs.mPosition); + +        case APP: +            return getSLURLString() == rhs.getSLURLString(); + +        case HOME_LOCATION: +        case LAST_LOCATION: +            return true; + +        default: +            return false; +    }  }  bool LLSLURL::operator !=(const LLSLURL& rhs)  { -	return !(*this == rhs); +    return !(*this == rhs);  }  std::string LLSLURL::getLocationString() const  { -	return llformat("%s/%d/%d/%d", -					mRegion.c_str(), -					(int)ll_round(mPosition[0]), -					(int)ll_round(mPosition[1]), -					(int)ll_round(mPosition[2]));						  +    return llformat("%s/%d/%d/%d", +        mRegion.c_str(), +        (int)ll_round(mPosition[0]), +        (int)ll_round(mPosition[1]), +        (int)ll_round(mPosition[2]));  }  // static -const std::string LLSLURL::typeName[NUM_SLURL_TYPES] =  +const std::string LLSLURL::typeName[NUM_SLURL_TYPES] =  { -	"INVALID",  -	"LOCATION", -	"HOME_LOCATION", -	"LAST_LOCATION", -	"APP", -	"HELP" +    "INVALID", +    "LOCATION", +    "HOME_LOCATION", +    "LAST_LOCATION", +    "APP", +    "HELP", +    "EMPTY"  }; -		 +  std::string LLSLURL::getTypeString(SLURL_TYPE type)  { -	std::string name; -	if ( type >= INVALID && type < NUM_SLURL_TYPES ) -	{ -		name = LLSLURL::typeName[type]; -	} -	else -	{ -		name = llformat("Out of Range (%d)",type); -	} -	return name; +    std::string name; +    if (type >= INVALID && type < NUM_SLURL_TYPES) +    { +        name = LLSLURL::typeName[type]; +    } +    else +    { +        name = llformat("Out of Range (%d)", type); +    } +    return name;  } -  std::string LLSLURL::asString() const  {      std::ostringstream result;      result -		<< "   mType: " << LLSLURL::getTypeString(mType) -		<< "   mGrid: " + getGrid() -		<< "   mRegion: " + getRegion() -		<< "   mPosition: " << mPosition -		<< "   mAppCmd:"  << getAppCmd() -		<< "   mAppPath:" + getAppPath().asString() -		<< "   mAppQueryMap:" + getAppQueryMap().asString() -		<< "   mAppQuery: " + getAppQuery() -		; -	 +        << "   mType: " << LLSLURL::getTypeString(mType) +        << "   mGrid: " + getGrid() +        << "   mRegion: " + getRegion() +        << "   mPosition: " << mPosition +        << "   mAppCmd:"  << getAppCmd() +        << "   mAppPath:" + getAppPath().asString() +        << "   mAppQueryMap:" + getAppQueryMap().asString() +        << "   mAppQuery: " + getAppQuery() +        ; +      return result.str();  } - diff --git a/indra/newview/llslurl.h b/indra/newview/llslurl.h index b86cf7949b..6132a4a8b0 100644 --- a/indra/newview/llslurl.h +++ b/indra/newview/llslurl.h @@ -52,13 +52,14 @@ public:  	static const char* SLURL_REGION_PATH;	  	// if you modify this enumeration, update typeName as well -	enum SLURL_TYPE {  -		INVALID,  +	enum SLURL_TYPE { +		INVALID,  		LOCATION,  		HOME_LOCATION,  		LAST_LOCATION,  		APP,  		HELP, +		EMPTY,  		NUM_SLURL_TYPES // must be last  	}; diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index 931880a475..faf6f15015 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -854,10 +854,9 @@ void LLSpatialGroup::rebound()              LLControlAvatar* controlAvatar = bridge->mDrawable->getVObj()->getControlAvatar();              if (controlAvatar &&                  controlAvatar->mDrawable && -                controlAvatar->mControlAVBridge) +                controlAvatar->mControlAVBridge && +                controlAvatar->mControlAVBridge->mOctree)              { -                llassert(controlAvatar->mControlAVBridge->mOctree); -                  LLSpatialGroup* root = (LLSpatialGroup*)controlAvatar->mControlAVBridge->mOctree->getListener(0);                  if (this == root)                  { @@ -1322,17 +1321,8 @@ void drawBox(const LLVector4a& c, const LLVector4a& r)  void drawBoxOutline(const LLVector3& pos, const LLVector3& size)  { - -	llassert(pos.isFinite()); -	llassert(size.isFinite()); - -	llassert(!llisnan(pos.mV[0])); -	llassert(!llisnan(pos.mV[1])); -	llassert(!llisnan(pos.mV[2])); - -	llassert(!llisnan(size.mV[0])); -	llassert(!llisnan(size.mV[1])); -	llassert(!llisnan(size.mV[2])); +    if (!pos.isFinite() || !size.isFinite()) +        return;  	LLVector3 v1 = size.scaledVec(LLVector3( 1, 1,1));  	LLVector3 v2 = size.scaledVec(LLVector3(-1, 1,1)); diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index d0b76848f7..9161926f52 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -2480,6 +2480,34 @@ void login_callback(S32 option, void *userdata)  	}  } +void release_notes_coro(const std::string url) +{ +    if (url.empty()) +    { +        return; +    } + +    LLCore::HttpRequest::policy_t httpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID); +    LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t +        httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("releaseNotesCoro", httpPolicy)); +    LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest); +    LLCore::HttpOptions::ptr_t httpOpts = LLCore::HttpOptions::ptr_t(new LLCore::HttpOptions); + +    httpOpts->setHeadersOnly(true); // only making sure it isn't 404 or something like that + +    LLSD result = httpAdapter->getAndSuspend(httpRequest, url, httpOpts); + +    LLSD httpResults = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS]; +    LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(httpResults); + +    if (!status) +    { +        return; +    } + +    LLWeb::loadURLInternal(url); +} +  /**  * Check if user is running a new version of the viewer.  * Display the Release Notes if it's not overriden by the "UpdaterShowReleaseNotes" setting. @@ -2512,7 +2540,8 @@ void show_release_notes_if_required()              LLEventPumps::instance().obtain("relnotes").listen(                  "showrelnotes",                  [](const LLSD& url) { -                LLWeb::loadURLInternal(url.asString()); +                    LLCoros::instance().launch("releaseNotesCoro", +                    boost::bind(&release_notes_coro, url.asString()));                  return false;              });          } @@ -2520,7 +2549,9 @@ void show_release_notes_if_required()  #endif // LL_RELEASE_FOR_DOWNLOAD          {              LLSD info(LLAppViewer::instance()->getViewerInfo()); -            LLWeb::loadURLInternal(info["VIEWER_RELEASE_NOTES_URL"]); +            std::string url = info["VIEWER_RELEASE_NOTES_URL"].asString(); +            LLCoros::instance().launch("releaseNotesCoro", +                                       boost::bind(&release_notes_coro, url));          }          release_notes_shown = true;      } diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp index 1ef5d1c50b..5bd203cb65 100644 --- a/indra/newview/llstatusbar.cpp +++ b/indra/newview/llstatusbar.cpp @@ -190,6 +190,13 @@ BOOL LLStatusBar::postBuild()  	LLHints::getInstance()->registerHintTarget("linden_balance", getChild<LLView>("balance_bg")->getHandle());  	gSavedSettings.getControl("MuteAudio")->getSignal()->connect(boost::bind(&LLStatusBar::onVolumeChanged, this, _2)); +    gSavedSettings.getControl("EnableVoiceChat")->getSignal()->connect(boost::bind(&LLStatusBar::onVoiceChanged, this, _2)); + +    if (!gSavedSettings.getBOOL("EnableVoiceChat") && LLAppViewer::instance()->isSecondInstance()) +    { +        // Indicate that second instance started without sound +        mBtnVolume->setImageUnselected(LLUI::getUIImage("VoiceMute_Off")); +    }  	// Adding Net Stat Graph  	S32 x = getRect().getWidth() - 2; @@ -640,6 +647,16 @@ void LLStatusBar::onVolumeChanged(const LLSD& newvalue)  	refresh();  } +void LLStatusBar::onVoiceChanged(const LLSD& newvalue) +{ +    if (newvalue.asBoolean()) +    { +        // Second instance starts with "VoiceMute_Off" icon, fix it +        mBtnVolume->setImageUnselected(LLUI::getUIImage("Audio_Off")); +    } +    refresh(); +} +  void LLStatusBar::onUpdateFilterTerm()  {  	LLWString searchValue = utf8str_to_wstring( mFilterEdit->getValue() ); diff --git a/indra/newview/llstatusbar.h b/indra/newview/llstatusbar.h index 3002b91c10..3e9190652d 100644 --- a/indra/newview/llstatusbar.h +++ b/indra/newview/llstatusbar.h @@ -99,12 +99,12 @@ private:  	void onClickBuyCurrency();  	void onVolumeChanged(const LLSD& newvalue); +    void onVoiceChanged(const LLSD& newvalue);  	void onMouseEnterPresetsCamera();  	void onMouseEnterPresets();  	void onMouseEnterVolume();  	void onMouseEnterNearbyMedia(); -	void onClickScreen(S32 x, S32 y);  	static void onClickMediaToggle(void* data);  	static void onClickBalance(void* data); diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index 38c9b3717d..40bbe2b934 100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -348,13 +348,13 @@ private:  		}  		// Threads:  Tid -		virtual void completed(bool success, LLImageRaw* raw, LLImageRaw* aux) +		virtual void completed(bool success, LLImageRaw* raw, LLImageRaw* aux, U32 request_id)  		{              LL_PROFILE_ZONE_SCOPED;  			LLTextureFetchWorker* worker = mFetcher->getWorker(mID);  			if (worker)  			{ - 				worker->callbackDecoded(success, raw, aux); + 				worker->callbackDecoded(success, raw, aux, request_id);  			}  		}  	private: @@ -398,7 +398,7 @@ public:  	void callbackCacheWrite(bool success);  	// Threads:  Tid -	void callbackDecoded(bool success, LLImageRaw* raw, LLImageRaw* aux); +	void callbackDecoded(bool success, LLImageRaw* raw, LLImageRaw* aux, S32 decode_id);  	// Threads:  T*  	void setGetStatus(LLCore::HttpStatus status, const std::string& reason) @@ -1800,8 +1800,22 @@ bool LLTextureFetchWorker::doWork(S32 param)  		setState(DECODE_IMAGE_UPDATE);  		LL_DEBUGS(LOG_TXT) << mID << ": Decoding. Bytes: " << mFormattedImage->getDataSize() << " Discard: " << discard  						   << " All Data: " << mHaveAllData << LL_ENDL; -		mDecodeHandle = LLAppViewer::getImageDecodeThread()->decodeImage(mFormattedImage, discard, mNeedsAux, -																  new DecodeResponder(mFetcher, mID, this)); + +        // In case worked manages to request decode, be shut down, +        // then init and request decode again with first decode +        // still in progress, assign a sufficiently unique id +        mDecodeHandle = LLAppViewer::getImageDecodeThread()->decodeImage(mFormattedImage, +                                                                       discard, +                                                                       mNeedsAux, +                                                                       new DecodeResponder(mFetcher, mID, this)); +        if (mDecodeHandle == 0) +        { +            // Abort, failed to put into queue. +            // Happens if viewer is shutting down +            setState(DONE); +            LL_DEBUGS(LOG_TXT) << mID << " DECODE_IMAGE abort: failed to post for decoding" << LL_ENDL; +            return true; +        }  		// fall though  	} @@ -2305,16 +2319,24 @@ void LLTextureFetchWorker::callbackCacheWrite(bool success)  //////////////////////////////////////////////////////////////////////////////  // Threads:  Tid -void LLTextureFetchWorker::callbackDecoded(bool success, LLImageRaw* raw, LLImageRaw* aux) +void LLTextureFetchWorker::callbackDecoded(bool success, LLImageRaw* raw, LLImageRaw* aux, S32 decode_id)  {  	LLMutexLock lock(&mWorkMutex);										// +Mw  	if (mDecodeHandle == 0)  	{  		return; // aborted, ignore  	} +    if (mDecodeHandle != decode_id) +    { +        // Queue doesn't support canceling old requests. +        // This shouldn't normally happen, but in case it's possible that a worked +        // will request decode, be aborted, reinited then start a new decode +        LL_DEBUGS(LOG_TXT) << mID << " received obsolete decode's callback" << LL_ENDL; +        return; // ignore +    }  	if (mState != DECODE_IMAGE_UPDATE)  	{ -// 		LL_WARNS(LOG_TXT) << "Decode callback for " << mID << " with state = " << mState << LL_ENDL; +		LL_DEBUGS(LOG_TXT) << "Decode callback for " << mID << " with state = " << mState << LL_ENDL;  		mDecodeHandle = 0;  		return;  	} diff --git a/indra/newview/lltranslate.cpp b/indra/newview/lltranslate.cpp index 6526e1df92..979b495906 100644 --- a/indra/newview/lltranslate.cpp +++ b/indra/newview/lltranslate.cpp @@ -254,7 +254,7 @@ void LLTranslationAPIHandler::translateMessageCoro(LanguagePair_t fromTo, std::s      try      { -        res = this->parseResponse(httpResults, parseResult, body, translation, detected_lang, err_msg); +        res = parseResponse(httpResults, parseResult, body, translation, detected_lang, err_msg);      }      catch (std::out_of_range&)      { @@ -294,8 +294,6 @@ void LLTranslationAPIHandler::translateMessageCoro(LanguagePair_t fromTo, std::s          if (!failure.empty())              failure(status, err_msg);      } - -  }  //========================================================================= @@ -354,7 +352,6 @@ private:          std::string& translation,          std::string& detected_lang);      static std::string getAPIKey(); -  };  //------------------------------------------------------------------------- @@ -392,36 +389,37 @@ bool LLGoogleTranslationHandler::checkVerificationResponse(  // virtual  bool LLGoogleTranslationHandler::parseResponse( -    const LLSD& http_response, +	const LLSD& http_response,  	int& status,  	const std::string& body,  	std::string& translation,  	std::string& detected_lang,  	std::string& err_msg) const  { +	const std::string& text = !body.empty() ? body : http_response["error_body"].asStringRef(); +  	Json::Value root;  	Json::Reader reader; -	if (!reader.parse(body, root)) +	if (reader.parse(text, root))  	{ -		err_msg = reader.getFormatedErrorMessages(); -		return false; +		if (root.isObject()) +		{ +			// Request succeeded, extract translation from the XML body. +			if (parseTranslation(root, translation, detected_lang)) +				return true; + +			// Request failed. Extract error message from the XML body. +			parseErrorResponse(root, status, err_msg); +		}  	} - -	if (!root.isObject()) // empty response? should not happen +	else  	{ -		return false; -	} - -	if (status != HTTP_OK) -	{ -		// Request failed. Extract error message from the response. -		parseErrorResponse(root, status, err_msg); -		return false; +		// XML parsing failed. Extract error message from the XML parser. +		err_msg = reader.getFormatedErrorMessages();  	} -	// Request succeeded, extract translation from the response. -	return parseTranslation(root, translation, detected_lang); +	return false;  }  // virtual @@ -494,7 +492,7 @@ void LLGoogleTranslationHandler::verifyKey(const LLSD &key, LLTranslate::KeyVeri  /*virtual*/  void LLGoogleTranslationHandler::initHttpHeader(LLCore::HttpHeaders::ptr_t headers, const std::string& user_agent) const  { -    headers->append(HTTP_OUT_HEADER_ACCEPT, HTTP_CONTENT_TEXT_PLAIN); +    headers->append(HTTP_OUT_HEADER_ACCEPT, HTTP_CONTENT_JSON);      headers->append(HTTP_OUT_HEADER_USER_AGENT, user_agent);  } @@ -504,8 +502,7 @@ void LLGoogleTranslationHandler::initHttpHeader(      const std::string& user_agent,      const LLSD &key) const  { -    headers->append(HTTP_OUT_HEADER_ACCEPT, HTTP_CONTENT_TEXT_PLAIN); -    headers->append(HTTP_OUT_HEADER_USER_AGENT, user_agent); +    initHttpHeader(headers, user_agent);  }  LLSD LLGoogleTranslationHandler::sendMessageAndSuspend(LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t adapter, @@ -729,7 +726,7 @@ bool LLAzureTranslationHandler::parseResponse(          return false;      } -    translation = first["text"].asString(); +    translation = LLURI::unescape(first["text"].asString());      return true;  } @@ -829,8 +826,13 @@ LLSD LLAzureTranslationHandler::sendMessageAndSuspend(LLCoreHttpUtil::HttpCorout  {      LLCore::BufferArray::ptr_t rawbody(new LLCore::BufferArray);      LLCore::BufferArrayStream outs(rawbody.get()); + +    static const std::string allowed_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz " +                                             "0123456789" +                                             "-._~"; +      outs << "[{\"text\":\""; -    outs << msg; +    outs << LLURI::escape(msg, allowed_chars);      outs << "\"}]";      return adapter->postRawAndSuspend(request, url, rawbody, options, headers); @@ -1315,5 +1317,4 @@ LLTranslationAPIHandler& LLTranslate::getHandler(EService service)      }      return azure; -  } diff --git a/indra/newview/llurldispatcher.cpp b/indra/newview/llurldispatcher.cpp index 76fb138768..07ea8a4ec6 100644 --- a/indra/newview/llurldispatcher.cpp +++ b/indra/newview/llurldispatcher.cpp @@ -134,6 +134,11 @@ bool LLURLDispatcherImpl::dispatch(const LLSLURL& slurl,  								   LLMediaCtrl* web,  								   bool trusted_browser)  { +    // SL-20422 : Clicking the "Bring it back" link on Aditi displays a teleport alert +    // Stop further processing empty urls like [secondlife:/// Bring it back.] +    if (slurl.getType() == LLSLURL::EMPTY) +        return true; +  	const bool right_click = false;  	return dispatchCore(slurl, nav_type, right_click, web, trusted_browser);  } diff --git a/indra/newview/llviewerassetupload.cpp b/indra/newview/llviewerassetupload.cpp index a2b0b04092..e2e321af0d 100644 --- a/indra/newview/llviewerassetupload.cpp +++ b/indra/newview/llviewerassetupload.cpp @@ -931,7 +931,7 @@ void LLViewerAssetUpload::AssetInventoryUploadCoproc(LLCoreHttpUtil::HttpCorouti              // Show the preview panel for textures and sounds to let              // user know that the image (or snapshot) arrived intact.              LLInventoryPanel* panel = LLInventoryPanel::getActiveInventoryPanel(FALSE); -            LLInventoryPanel::openInventoryPanelAndSetSelection(TRUE, serverInventoryItem, FALSE, TAKE_FOCUS_NO, (panel == NULL)); +            LLInventoryPanel::openInventoryPanelAndSetSelection(true, serverInventoryItem, false, false, !panel);              // restore keyboard focus              gFocusMgr.setKeyboardFocus(focus); diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 9db9d97ddc..3e307c9f4e 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -292,6 +292,7 @@ void force_error_llerror(void *);  void force_error_bad_memory_access(void *);  void force_error_infinite_loop(void *);  void force_error_software_exception(void *); +void force_error_os_exception(void*);  void force_error_driver_crash(void *);  void force_error_coroutine_crash(void *);  void force_error_thread_crash(void *); @@ -2419,6 +2420,15 @@ class LLAdvancedForceErrorSoftwareException : public view_listener_t  	}  }; +class LLAdvancedForceOSException: public view_listener_t +{ +    bool handleEvent(const LLSD& userdata) +    { +        force_error_os_exception(NULL); +        return true; +    } +}; +  class LLAdvancedForceErrorSoftwareExceptionCoro : public view_listener_t  {      bool handleEvent(const LLSD& userdata) @@ -3200,6 +3210,15 @@ bool enable_object_select_in_pathfinding_characters()  	return LLPathfindingManager::getInstance()->isPathfindingEnabledForCurrentRegion() &&  LLSelectMgr::getInstance()->selectGetViewableCharacters();  } +bool enable_os_exception() +{ +#if LL_DARWIN +    return true; +#else +    return false; +#endif +} +  class LLSelfRemoveAllAttachments : public view_listener_t  {  	bool handleEvent(const LLSD& userdata) @@ -6140,8 +6159,9 @@ class LLCommunicateNearbyChat : public view_listener_t  	bool handleEvent(const LLSD& userdata)  	{  		LLFloaterIMContainer* im_box = LLFloaterIMContainer::getInstance(); -		bool nearby_visible	= LLFloaterReg::getTypedInstance<LLFloaterIMNearbyChat>("nearby_chat")->isInVisibleChain(); -		if(nearby_visible && im_box->getSelectedSession() == LLUUID() && im_box->getConversationListItemSize() > 1) +        LLFloaterIMNearbyChat* floater_nearby = LLFloaterReg::getTypedInstance<LLFloaterIMNearbyChat>("nearby_chat"); +        if (floater_nearby->isInVisibleChain() && !floater_nearby->isTornOff()  +            && im_box->getSelectedSession() == LLUUID() && im_box->getConversationListItemSize() > 1)  		{  			im_box->selectNextorPreviousConversation(false);  		} @@ -8370,6 +8390,11 @@ void force_error_software_exception(void *)      LLAppViewer::instance()->forceErrorSoftwareException();  } +void force_error_os_exception(void*) +{ +    LLAppViewer::instance()->forceErrorOSSpecificException(); +} +  void force_error_driver_crash(void *)  {      LLAppViewer::instance()->forceErrorDriverCrash(); @@ -9597,6 +9622,7 @@ void initialize_menus()  	view_listener_t::addMenu(new LLAdvancedForceErrorBadMemoryAccessCoro(), "Advanced.ForceErrorBadMemoryAccessCoro");  	view_listener_t::addMenu(new LLAdvancedForceErrorInfiniteLoop(), "Advanced.ForceErrorInfiniteLoop");  	view_listener_t::addMenu(new LLAdvancedForceErrorSoftwareException(), "Advanced.ForceErrorSoftwareException"); +    view_listener_t::addMenu(new LLAdvancedForceOSException(), "Advanced.ForceErrorOSException");  	view_listener_t::addMenu(new LLAdvancedForceErrorSoftwareExceptionCoro(), "Advanced.ForceErrorSoftwareExceptionCoro");  	view_listener_t::addMenu(new LLAdvancedForceErrorDriverCrash(), "Advanced.ForceErrorDriverCrash");      view_listener_t::addMenu(new LLAdvancedForceErrorCoroutineCrash(), "Advanced.ForceErrorCoroutineCrash"); @@ -9778,6 +9804,7 @@ void initialize_menus()  	enable.add("VisibleSelectInPathfindingLinksets", boost::bind(&visible_object_select_in_pathfinding_linksets));  	commit.add("Pathfinding.Characters.Select", boost::bind(&LLFloaterPathfindingCharacters::openCharactersWithSelectedObjects));  	enable.add("EnableSelectInPathfindingCharacters", boost::bind(&enable_object_select_in_pathfinding_characters)); +    enable.add("Advanced.EnableErrorOSException", boost::bind(&enable_os_exception));  	view_listener_t::addMenu(new LLFloaterVisible(), "FloaterVisible");  	view_listener_t::addMenu(new LLShowSidetrayPanel(), "ShowSidetrayPanel"); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index ada898b98c..c50365db2a 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -1563,15 +1563,22 @@ void open_inventory_offer(const uuid_vec_t& objects, const std::string& from_nam          }          else          { -		// Highlight item -		const BOOL auto_open =  -			gSavedSettings.getBOOL("ShowInInventory") && // don't open if showininventory is false -			!from_name.empty(); // don't open if it's not from anyone. -            if(auto_open) +            // Highlight item +            bool show_in_inventory = gSavedSettings.get<bool>("ShowInInventory"); +            bool auto_open = +                show_in_inventory && // don't open if ShowInInventory is FALSE +                !from_name.empty();  // don't open if it's not from anyone + +            // SL-20419 : Don't change active tab if floater is visible +            LLFloater* instance = LLFloaterReg::findInstance("inventory"); +            bool use_main_panel = instance && instance->getVisible(); + +            if (auto_open)              {                  LLFloaterReg::showInstance("inventory");              } -		LLInventoryPanel::openInventoryPanelAndSetSelection(auto_open, obj_id, true); + +            LLInventoryPanel::openInventoryPanelAndSetSelection(auto_open, obj_id, use_main_panel);          }  	}  } @@ -4222,7 +4229,7 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data)      LLObjectSignaledAnimationMap::instance().getMap()[uuid] = signaled_anims;      LLViewerObject *objp = gObjectList.findObject(uuid); -    if (!objp) +    if (!objp || objp->isDead())      {  		LL_DEBUGS("AnimatedObjectsNotify") << "Received animation state for unknown object " << uuid << LL_ENDL;          return; diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index d4346ee2d9..d46339e2fd 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -391,6 +391,7 @@ LLViewerObject::~LLViewerObject()  	sNumObjects--;  	sNumZombieObjects--;  	llassert(mChildList.size() == 0); +    llassert(mControlAvatar.isNull()); // Should have been cleaned by now  	clearInventoryListeners();  } @@ -3106,6 +3107,10 @@ void LLViewerObject::updateControlAvatar()          return;      } +    // caller isn't supposed to operate on a dead object, +    // avatar was already cleaned up +    llassert(!isDead()); +      bool should_have_control_avatar = false;      if (is_animated_object)      { @@ -3189,7 +3194,6 @@ void LLViewerObject::unlinkControlAvatar()          if (mControlAvatar)          {              mControlAvatar->markForDeath(); -			mControlAvatar->mRootVolp = NULL;              mControlAvatar = NULL;          }      } @@ -5124,7 +5128,7 @@ void LLViewerObject::setTEImage(const U8 te, LLViewerTexture *imagep)  S32 LLViewerObject::setTETextureCore(const U8 te, LLViewerTexture *image)  {  	LLUUID old_image_id = getTE(te)->getID(); -	const LLUUID& uuid = image->getID(); +	const LLUUID& uuid = image ? image->getID() : LLUUID::null;  	S32 retval = 0;  	if (uuid != getTE(te)->getID() ||  		uuid == LLUUID::null) diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index 452dcdd8fd..ed5b809003 100755 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -829,10 +829,17 @@ void LLViewerRegion::saveObjectCache()  		mCacheDirty = FALSE;  	} -	// Map of LLVOCacheEntry takes time to release, store map for cleanup on idle -	sRegionCacheCleanup.insert(mImpl->mCacheMap.begin(), mImpl->mCacheMap.end()); -	mImpl->mCacheMap.clear(); -	// TODO - probably need to do the same for overrides cache +    if (LLAppViewer::instance()->isQuitting()) +    { +        mImpl->mCacheMap.clear(); +    } +    else +    { +        // Map of LLVOCacheEntry takes time to release, store map for cleanup on idle +        sRegionCacheCleanup.insert(mImpl->mCacheMap.begin(), mImpl->mCacheMap.end()); +        mImpl->mCacheMap.clear(); +        // TODO - probably need to do the same for overrides cache +    }  }  void LLViewerRegion::sendMessage() @@ -2467,7 +2474,10 @@ void LLViewerRegion::decodeBoundingInfo(LLVOCacheEntry* entry)  		//set parent id  		U32	parent_id = 0; -		LLViewerObject::unpackParentID(entry->getDP(), parent_id); +        if (entry->getDP()) // NULL if nothing cached +        { +            LLViewerObject::unpackParentID(entry->getDP(), parent_id); +        }  		if(parent_id != entry->getParentID())  		{				  			entry->setParentID(parent_id); @@ -2487,7 +2497,7 @@ void LLViewerRegion::decodeBoundingInfo(LLVOCacheEntry* entry)  	LLQuaternion rot;  	//decode spatial info and parent info -	U32 parent_id = LLViewerObject::extractSpatialExtents(entry->getDP(), pos, scale, rot); +	U32 parent_id = entry->getDP() ? LLViewerObject::extractSpatialExtents(entry->getDP(), pos, scale, rot) : entry->getParentID();  	U32 old_parent_id = entry->getParentID();  	bool same_old_parent = false; diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index 56bba51692..04ef441a69 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -3505,7 +3505,10 @@ void LLViewerMediaTexture::addFace(U32 ch, LLFace* facep)  	if(te && te->getID().notNull()) //should have a texture  	{ -		LL_ERRS() << "The face does not have a valid texture before media texture." << LL_ENDL; +        LL_WARNS_ONCE() << "The face's texture " << te->getID() << " is not valid. Face must have a valid texture before media texture." << LL_ENDL; +        // This might break the object, but it likely isn't a 'recoverable' situation. +        LLViewerFetchedTexture* tex = LLViewerTextureManager::getFetchedTexture(te->getID()); +        mTextureList.push_back(tex);  	}  } diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index 9a6d40ab0a..fee825d121 100644 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -683,7 +683,6 @@ void LLViewerTextureList::removeImageFromList(LLViewerFetchedTexture *image)  	assert_main_thread();  	llassert_always(mInitialized) ;  	llassert(image); -    image->validateRefCount();  	S32 count = 0;  	if (image->isInImageList()) diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index fee00eb6f4..9579a5e4b1 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -2570,7 +2570,7 @@ void LLVOAvatar::idleUpdate(LLAgent &agent, const F64 &time)  	{          if (!mIsControlAvatar)          { -            idleUpdateNameTag( mLastRootPos ); +            idleUpdateNameTag(idleCalcNameTagPosition(mLastRootPos));          }  		return;  	} @@ -2654,7 +2654,9 @@ void LLVOAvatar::idleUpdate(LLAgent &agent, const F64 &time)  	bool voice_enabled = (visualizers_in_calls || LLVoiceClient::getInstance()->inProximalChannel()) &&  						 LLVoiceClient::getInstance()->getVoiceEnabled(mID); -	idleUpdateVoiceVisualizer( voice_enabled ); +    LLVector3 hud_name_pos = idleCalcNameTagPosition(mLastRootPos); + +	idleUpdateVoiceVisualizer(voice_enabled, hud_name_pos);  	idleUpdateMisc( detailed_update );  	idleUpdateAppearanceAnimation();  	if (detailed_update) @@ -2665,7 +2667,7 @@ void LLVOAvatar::idleUpdate(LLAgent &agent, const F64 &time)  		idleUpdateWindEffect();  	} -	idleUpdateNameTag( mLastRootPos ); +	idleUpdateNameTag(hud_name_pos);      // Complexity has stale mechanics, but updates still can be very rapid      // so spread avatar complexity calculations over frames to lesen load from @@ -2705,7 +2707,7 @@ void LLVOAvatar::idleUpdate(LLAgent &agent, const F64 &time)      idleUpdateDebugInfo();  } -void LLVOAvatar::idleUpdateVoiceVisualizer(bool voice_enabled) +void LLVOAvatar::idleUpdateVoiceVisualizer(bool voice_enabled, const LLVector3 &position)  {  	bool render_visualizer = voice_enabled; @@ -2794,24 +2796,7 @@ void LLVOAvatar::idleUpdateVoiceVisualizer(bool voice_enabled)  				}  			}  		} -		 -		//-------------------------------------------------------------------------------------------- -		// here we get the approximate head position and set as sound source for the voice symbol -		// (the following version uses a tweak of "mHeadOffset" which handle sitting vs. standing) -		//-------------------------------------------------------------------------------------------- -		 -		if ( isSitting() ) -		{ -			LLVector3 headOffset = LLVector3( 0.0f, 0.0f, mHeadOffset.mV[2] ); -			mVoiceVisualizer->setVoiceSourceWorldPosition( mRoot->getWorldPosition() + headOffset ); -		} -		else  -		{ -			LLVector3 tagPos = mRoot->getWorldPosition(); -			tagPos[VZ] -= mPelvisToFoot; -			tagPos[VZ] += ( mBodySize[VZ] + 0.125f ); // does not need mAvatarOffset -Nyx -			mVoiceVisualizer->setVoiceSourceWorldPosition( tagPos ); -		} +        mVoiceVisualizer->setPositionAgent(position);  	}//if ( voiceEnabled )  }		 @@ -3327,7 +3312,8 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)  		new_name = TRUE;      } -	idleUpdateNameTagPosition(root_pos_last); +    mNameText->setPositionAgent(root_pos_last); +  	idleUpdateNameTagText(new_name);			  	idleUpdateNameTagAlpha(new_name, alpha);  } @@ -3604,7 +3590,7 @@ void LLVOAvatar::invalidateNameTags()  }  // Compute name tag position during idle update -void LLVOAvatar::idleUpdateNameTagPosition(const LLVector3& root_pos_last) +LLVector3 LLVOAvatar::idleCalcNameTagPosition(const LLVector3 &root_pos_last)  {  	LLQuaternion root_rot = mRoot->getWorldRotation();  	LLQuaternion inv_root_rot = ~root_rot; @@ -3618,7 +3604,6 @@ void LLVOAvatar::idleUpdateNameTagPosition(const LLVector3& root_pos_last)  	local_camera_up.normalize();  	local_camera_up = local_camera_up * inv_root_rot; -  	// position is based on head position, does not require mAvatarOffset here. - Nyx  	LLVector3 avatar_ellipsoid(mBodySize.mV[VX] * 0.4f,  								mBodySize.mV[VY] * 0.4f, @@ -3640,7 +3625,26 @@ void LLVOAvatar::idleUpdateNameTagPosition(const LLVector3& root_pos_last)  	name_position += (local_camera_up * root_rot) - (projected_vec(local_camera_at * root_rot, camera_to_av));	  	name_position += pixel_up_vec * NAMETAG_VERTICAL_SCREEN_OFFSET; -	mNameText->setPositionAgent(name_position);				 +	const F32 water_height = getRegion()->getWaterHeight(); +	static const F32 WATER_HEIGHT_DELTA = 0.25f; +	if (name_position[VZ] < water_height + WATER_HEIGHT_DELTA) +	{ +		if (LLViewerCamera::getInstance()->getOrigin()[VZ] >= water_height) +		{ +			name_position[VZ] = water_height; +		} +		else if (mNameText) // both camera and HUD are below watermark +		{ +			F32 name_world_height = mNameText->getWorldHeight(); +			F32 max_z_position = water_height - name_world_height; +			if (name_position[VZ] > max_z_position) +			{ +				name_position[VZ] = max_z_position; +			} +		} +	} + +	return name_position;  }  void LLVOAvatar::idleUpdateNameTagAlpha(bool new_name, F32 alpha) @@ -3735,6 +3739,10 @@ bool LLVOAvatar::isVisuallyMuted()          {              muted = true;          } +        else if (mIsControlAvatar) +        { +            muted = isTooSlow(); +        }  		else   		{  			muted = isTooComplex() || isTooSlow(); diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index 48bfd5293a..4bb0c8aa73 100644 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -277,7 +277,7 @@ public:      void			updateTimeStep();      void			updateRootPositionAndRotation(LLAgent &agent, F32 speed, bool was_sit_ground_constrained); -	void 			idleUpdateVoiceVisualizer(bool voice_enabled); +	void            idleUpdateVoiceVisualizer(bool voice_enabled, const LLVector3 &position);  	void 			idleUpdateMisc(bool detailed_update);  	virtual void	idleUpdateAppearanceAnimation();  	void 			idleUpdateLipSync(bool voice_enabled); @@ -285,7 +285,6 @@ public:  	void 			idleUpdateWindEffect();  	void 			idleUpdateNameTag(const LLVector3& root_pos_last);  	void			idleUpdateNameTagText(bool new_name); -	void			idleUpdateNameTagPosition(const LLVector3& root_pos_last);  	void			idleUpdateNameTagAlpha(bool new_name, F32 alpha);  	LLColor4		getNameTagColor(bool is_friend);  	void			clearNameTag(); @@ -344,6 +343,8 @@ public:  	static void updateNearbyAvatarCount(); +    LLVector3 idleCalcNameTagPosition(const LLVector3 &root_pos_last); +  	//--------------------------------------------------------------------  	// Static preferences (controlled by user settings/menus)  	//-------------------------------------------------------------------- diff --git a/indra/newview/llvoicevisualizer.cpp b/indra/newview/llvoicevisualizer.cpp index 34e561174c..d4dfd16c3b 100644 --- a/indra/newview/llvoicevisualizer.cpp +++ b/indra/newview/llvoicevisualizer.cpp @@ -40,6 +40,7 @@  #include "llviewertexturelist.h"  #include "llvoiceclient.h"  #include "llrender.h" +#include "llagent.h"  //brent's wave image  //29de489d-0491-fb00-7dab-f9e686d31e83 @@ -349,7 +350,7 @@ void LLVoiceVisualizer::render()  		//---------------------------------------------------------------  		// set the sound symbol position over the source (avatar's head)  		//--------------------------------------------------------------- -		mSoundSymbol.mPosition = mVoiceSourceWorldPosition + WORLD_UPWARD_DIRECTION * HEIGHT_ABOVE_HEAD; +        mSoundSymbol.mPosition = gAgent.getPosAgentFromGlobal(mPositionGlobal) + WORLD_UPWARD_DIRECTION * HEIGHT_ABOVE_HEAD;  		//---------------------------------------------------------------  		// some gl state diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp index 3725510b6a..1b9aef193c 100644 --- a/indra/newview/llvoicevivox.cpp +++ b/indra/newview/llvoicevivox.cpp @@ -951,32 +951,52 @@ bool LLVivoxVoiceClient::startAndLaunchDaemon()              // cause SLVoice's bind() call to fail with EADDRINUSE. We expect              // that eventually the OS will time out previous ports, which is              // why we cycle instead of incrementing indefinitely. -            U32 portbase = gSavedSettings.getU32("VivoxVoicePort"); -            static U32 portoffset = 0; + +            static LLCachedControl<U32> portbase(gSavedSettings, "VivoxVoicePort"); +            static LLCachedControl<std::string> host(gSavedSettings, "VivoxVoiceHost"); +            static LLCachedControl<std::string> loglevel(gSavedSettings, "VivoxDebugLevel"); +            static LLCachedControl<std::string> log_folder(gSavedSettings, "VivoxLogDirectory"); +            static LLCachedControl<std::string> shutdown_timeout(gSavedSettings, "VivoxShutdownTimeout");              static const U32 portrange = 100; -            std::string host(gSavedSettings.getString("VivoxVoiceHost")); -            U32 port = portbase + portoffset; +            static U32 portoffset = 0; +            U32 port = 0; + +            if (LLAppViewer::instance()->isSecondInstance()) +            { +                // Ideally need to know amount of instances and +                // to increment instance_offset on EADDRINUSE. +                // But for now just use rand +                static U32 instance_offset = portrange * ll_rand(20); +                port = portbase + portoffset + instance_offset; +            } +            else +            { +                // leave main thread with exclusive port set +                port = portbase + portoffset; +            }              portoffset = (portoffset + 1) % portrange;              params.args.add("-i"); -            params.args.add(STRINGIZE(host << ':' << port)); +            params.args.add(STRINGIZE(host() << ':' << port)); -            std::string loglevel = gSavedSettings.getString("VivoxDebugLevel"); -            if (loglevel.empty()) +            params.args.add("-ll"); +            if (loglevel().empty())              { -                loglevel = "0"; +                params.args.add("0");              } -            params.args.add("-ll"); -            params.args.add(loglevel); - -            std::string log_folder = gSavedSettings.getString("VivoxLogDirectory"); - -            if (log_folder.empty()) +            else              { -                log_folder = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, ""); +                params.args.add(loglevel);              }              params.args.add("-lf"); -            params.args.add(log_folder); +            if (log_folder().empty()) +            { +                params.args.add(gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "")); +            } +            else +            { +                params.args.add(log_folder); +            }              // set log file basename and .log              params.args.add("-lp"); @@ -992,8 +1012,7 @@ bool LLVivoxVoiceClient::startAndLaunchDaemon()                  LLFile::rename(new_log, old_log);              } -            std::string shutdown_timeout = gSavedSettings.getString("VivoxShutdownTimeout"); -            if (!shutdown_timeout.empty()) +            if (!shutdown_timeout().empty())              {                  params.args.add("-st");                  params.args.add(shutdown_timeout); @@ -1016,7 +1035,7 @@ bool LLVivoxVoiceClient::startAndLaunchDaemon()              sGatewayPtr = LLProcess::create(params); -            mDaemonHost = LLHost(host.c_str(), port); +            mDaemonHost = LLHost(host().c_str(), port);          }          else          { diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index ec2f490742..1e212250a3 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -5494,6 +5494,11 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)      LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME;      llassert(!gCubeSnapshot); +    if (group->isDead()) +    { +        return; +    } +  	if (group->changeLOD())  	{  		group->mLastUpdateDistance = group->mDistance; @@ -5577,7 +5582,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)  			LLVOVolume* vobj = drawablep->getVOVolume(); -			if (!vobj) +			if (!vobj || vobj->isDead())  			{  				continue;  			} diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp index 8681f7c14e..948fe55e0d 100644 --- a/indra/newview/llwearableitemslist.cpp +++ b/indra/newview/llwearableitemslist.cpp @@ -781,35 +781,27 @@ void LLWearableItemsList::updateList(const LLUUID& category_id)  void LLWearableItemsList::updateChangedItems(const uuid_vec_t& changed_items_uuids)  {  	// nothing to update -	if (changed_items_uuids.empty()) return; - -	typedef std::vector<LLPanel*> item_panel_list_t; - -	item_panel_list_t items; -	getItems(items); +	if (changed_items_uuids.empty()) +		return; -	for (item_panel_list_t::iterator items_iter = items.begin(); -			items_iter != items.end(); -			++items_iter) +	uuid_vec_t::const_iterator uuids_begin = changed_items_uuids.begin(), uuids_end = changed_items_uuids.end(); +	pairs_const_iterator_t pairs_iter = getItemPairs().begin(), pairs_end = getItemPairs().end(); +	while (pairs_iter != pairs_end)  	{ -		LLPanelInventoryListItemBase* item = dynamic_cast<LLPanelInventoryListItemBase*>(*items_iter); -		if (!item) continue; +		LLPanel* panel = (*(pairs_iter++))->first; +		LLPanelInventoryListItemBase* item = dynamic_cast<LLPanelInventoryListItemBase*>(panel); +		if (!item) +			continue;  		LLViewerInventoryItem* inv_item = item->getItem(); -		if (!inv_item) continue; - -		LLUUID linked_uuid = inv_item->getLinkedUUID(); +		if (!inv_item) +			continue; -		for (uuid_vec_t::const_iterator iter = changed_items_uuids.begin(); -				iter != changed_items_uuids.end(); -				++iter) -		{ -			if (linked_uuid == *iter) -			{ -				item->setNeedsRefresh(true); -				break; -			} -		} +        const LLUUID& linked_uuid = inv_item->getLinkedUUID(); +        if (std::find(uuids_begin, uuids_end, linked_uuid) != uuids_end) +        { +            item->setNeedsRefresh(true); +        }  	}  } diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 3a1edb0d00..8bdf9bbb8c 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -1666,17 +1666,23 @@ void LLPipeline::unlinkDrawable(LLDrawable *drawable)  void LLPipeline::removeMutedAVsLights(LLVOAvatar* muted_avatar)  {      LL_PROFILE_ZONE_SCOPED_CATEGORY_PIPELINE; -	for (light_set_t::iterator iter = gPipeline.mNearbyLights.begin(); -		 iter != gPipeline.mNearbyLights.end(); iter++) -	{ -        const LLViewerObject *vobj = iter->drawable->getVObj(); -        if (vobj && vobj->getAvatar() -            && vobj->isAttachment() && vobj->getAvatar() == muted_avatar) -		{ -			gPipeline.mLights.erase(iter->drawable); -			gPipeline.mNearbyLights.erase(iter); -		} -	} +    light_set_t::iterator iter = gPipeline.mNearbyLights.begin(); +    while (iter != gPipeline.mNearbyLights.end()) +    { +        const LLViewerObject* vobj = iter->drawable->getVObj(); +        if (vobj +            && vobj->getAvatar() +            && vobj->isAttachment() +            && vobj->getAvatar() == muted_avatar) +        { +            gPipeline.mLights.erase(iter->drawable); +            iter = gPipeline.mNearbyLights.erase(iter); +        } +        else +        { +            iter++; +        } +    }  }  U32 LLPipeline::addObject(LLViewerObject *vobj) diff --git a/indra/newview/skins/default/textures/icons/Icon_Color_Palette.png b/indra/newview/skins/default/textures/icons/Icon_Color_Palette.png Binary files differnew file mode 100644 index 0000000000..28906001ea --- /dev/null +++ b/indra/newview/skins/default/textures/icons/Icon_Color_Palette.png diff --git a/indra/newview/skins/default/textures/icons/Icon_Font_Size.png b/indra/newview/skins/default/textures/icons/Icon_Font_Size.png Binary files differnew file mode 100644 index 0000000000..37bdde69aa --- /dev/null +++ b/indra/newview/skins/default/textures/icons/Icon_Font_Size.png diff --git a/indra/newview/skins/default/textures/icons/VoiceMute_Off.png b/indra/newview/skins/default/textures/icons/VoiceMute_Off.png Binary files differnew file mode 100644 index 0000000000..425ba267a5 --- /dev/null +++ b/indra/newview/skins/default/textures/icons/VoiceMute_Off.png diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index 2126db32df..4eb8490a0f 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -63,6 +63,7 @@ with the same filename but different name    <texture name="AudioMute_Off" file_name="icons/AudioMute_Off.png" preload="false" />    <texture name="AudioMute_Over" file_name="icons/AudioMute_Over.png" preload="false" /> +  <texture name="VoiceMute_Off" file_name="icons/VoiceMute_Off.png" preload="false" />    <texture name="Audio_Off" file_name="icons/Audio_Off.png" preload="false" />    <texture name="Audio_Press" file_name="icons/Audio_Press.png" preload="false" /> @@ -901,4 +902,6 @@ with the same filename but different name    <texture name="Single_Folder_Back" file_name="icons/single_folder_back.png" preload="true"/>    <texture name="Single_Folder_Forward" file_name="icons/single_folder_forward.png" preload="true"/>    <texture name="Single_Folder_Up" file_name="icons/single_folder_up.png" preload="true"/> +  <texture name="Icon_Color_Palette" file_name="icons/Icon_Color_Palette.png" preload="false"/> +  <texture name="Icon_Font_Size" file_name="icons/Icon_Font_Size.png" preload="false"/>  </textures> diff --git a/indra/newview/skins/default/xui/en/alert_button.xml b/indra/newview/skins/default/xui/en/alert_button.xml index a60e9afab1..aa408e2380 100644 --- a/indra/newview/skins/default/xui/en/alert_button.xml +++ b/indra/newview/skins/default/xui/en/alert_button.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <button    name="Alert Button" diff --git a/indra/newview/skins/default/xui/en/alert_check_box.xml b/indra/newview/skins/default/xui/en/alert_check_box.xml index 5535a5dc2a..21266da3b2 100644 --- a/indra/newview/skins/default/xui/en/alert_check_box.xml +++ b/indra/newview/skins/default/xui/en/alert_check_box.xml @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <check_box    label_text.text_color="LabelTextColor"    label_text.text_readonly_color="LabelDisabledColor"    font="SansSerif"    follows="left|top" -  name="check"/>
\ No newline at end of file +  name="check"/> diff --git a/indra/newview/skins/default/xui/en/alert_icon.xml b/indra/newview/skins/default/xui/en/alert_icon.xml index b0886fce06..d62addb982 100644 --- a/indra/newview/skins/default/xui/en/alert_icon.xml +++ b/indra/newview/skins/default/xui/en/alert_icon.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <icon color="1.0 1.0 1.0 1.0"        tab_stop="false"        mouse_opaque="false" diff --git a/indra/newview/skins/default/xui/en/alert_line_editor.xml b/indra/newview/skins/default/xui/en/alert_line_editor.xml index 54dbc698c8..78b97a2a7e 100644 --- a/indra/newview/skins/default/xui/en/alert_line_editor.xml +++ b/indra/newview/skins/default/xui/en/alert_line_editor.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <line_editor    select_on_focus="false"    revert_on_esc="true" diff --git a/indra/newview/skins/default/xui/en/control_table_contents_camera.xml b/indra/newview/skins/default/xui/en/control_table_contents_camera.xml index 24cbb2b885..74e8b9e5f9 100644 --- a/indra/newview/skins/default/xui/en/control_table_contents_camera.xml +++ b/indra/newview/skins/default/xui/en/control_table_contents_camera.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <contents>      <rows       enabled="false" diff --git a/indra/newview/skins/default/xui/en/control_table_contents_columns_basic.xml b/indra/newview/skins/default/xui/en/control_table_contents_columns_basic.xml index e707aaf22c..9d57638835 100644 --- a/indra/newview/skins/default/xui/en/control_table_contents_columns_basic.xml +++ b/indra/newview/skins/default/xui/en/control_table_contents_columns_basic.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <contents>      <columns       relative_width="0.34" diff --git a/indra/newview/skins/default/xui/en/control_table_contents_editing.xml b/indra/newview/skins/default/xui/en/control_table_contents_editing.xml index 2a3314840a..9876e43d8f 100644 --- a/indra/newview/skins/default/xui/en/control_table_contents_editing.xml +++ b/indra/newview/skins/default/xui/en/control_table_contents_editing.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <contents>      <rows       enabled="false" diff --git a/indra/newview/skins/default/xui/en/control_table_contents_media.xml b/indra/newview/skins/default/xui/en/control_table_contents_media.xml index 43e8d730cd..5d5b6ed3ce 100644 --- a/indra/newview/skins/default/xui/en/control_table_contents_media.xml +++ b/indra/newview/skins/default/xui/en/control_table_contents_media.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <contents>      <rows       enabled="false" diff --git a/indra/newview/skins/default/xui/en/control_table_contents_movement.xml b/indra/newview/skins/default/xui/en/control_table_contents_movement.xml index b410d2dc1c..c9a1c4654e 100644 --- a/indra/newview/skins/default/xui/en/control_table_contents_movement.xml +++ b/indra/newview/skins/default/xui/en/control_table_contents_movement.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <contents>      <rows       enabled="false" diff --git a/indra/newview/skins/default/xui/en/favorites_bar_button.xml b/indra/newview/skins/default/xui/en/favorites_bar_button.xml index e7dd62eb64..ab55c80ba2 100644 --- a/indra/newview/skins/default/xui/en/favorites_bar_button.xml +++ b/indra/newview/skins/default/xui/en/favorites_bar_button.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!-- *NOTE: mantipov: top & height should be synchronized with <favorites_bar> in the panel_navigation_bar.xml-->  <!-- All buttons in the Favorites bar will be created from this one -->  <button diff --git a/indra/newview/skins/default/xui/en/floater_360capture.xml b/indra/newview/skins/default/xui/en/floater_360capture.xml index 23d054105f..70bcaf86be 100644 --- a/indra/newview/skins/default/xui/en/floater_360capture.xml +++ b/indra/newview/skins/default/xui/en/floater_360capture.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater can_resize="true"           height="400"           layout="topleft" @@ -133,4 +133,4 @@        Click and drag on the image to pan      </text>    </panel> -</floater>
\ No newline at end of file +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml index d11373ce1d..950ed192c0 100644 --- a/indra/newview/skins/default/xui/en/floater_aaa.xml +++ b/indra/newview/skins/default/xui/en/floater_aaa.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   can_minimize="false"   can_tear_off="false" diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml index 1ad7811d85..ff2fa93cbb 100644 --- a/indra/newview/skins/default/xui/en/floater_about.xml +++ b/indra/newview/skins/default/xui/en/floater_about.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   positioning="centered"   legacy_header_height="18" 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 b1ed245378..508aba6ae1 100644 --- a/indra/newview/skins/default/xui/en/floater_about_land.xml +++ b/indra/newview/skins/default/xui/en/floater_about_land.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   positioning="cascading"   can_tear_off="false" diff --git a/indra/newview/skins/default/xui/en/floater_activeim.xml b/indra/newview/skins/default/xui/en/floater_activeim.xml index b79c5d9a19..4c4ed9527c 100644 --- a/indra/newview/skins/default/xui/en/floater_activeim.xml +++ b/indra/newview/skins/default/xui/en/floater_activeim.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"  	name="floater_activeim" diff --git a/indra/newview/skins/default/xui/en/floater_add_payment_method.xml b/indra/newview/skins/default/xui/en/floater_add_payment_method.xml index ac88263aa1..870ddee554 100644 --- a/indra/newview/skins/default/xui/en/floater_add_payment_method.xml +++ b/indra/newview/skins/default/xui/en/floater_add_payment_method.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   height="405"   width="900" diff --git a/indra/newview/skins/default/xui/en/floater_animation_anim_preview.xml b/indra/newview/skins/default/xui/en/floater_animation_anim_preview.xml index c4ffba33fd..1aa96ae261 100644 --- a/indra/newview/skins/default/xui/en/floater_animation_anim_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_animation_anim_preview.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   height="180" diff --git a/indra/newview/skins/default/xui/en/floater_animation_bvh_preview.xml b/indra/newview/skins/default/xui/en/floater_animation_bvh_preview.xml index 0c62bfe304..ebb81f1266 100644 --- a/indra/newview/skins/default/xui/en/floater_animation_bvh_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_animation_bvh_preview.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_minimize="false" diff --git a/indra/newview/skins/default/xui/en/floater_associate_listing.xml b/indra/newview/skins/default/xui/en/floater_associate_listing.xml index 0f7ed24103..5ebdb6ce42 100644 --- a/indra/newview/skins/default/xui/en/floater_associate_listing.xml +++ b/indra/newview/skins/default/xui/en/floater_associate_listing.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_minimize="false" diff --git a/indra/newview/skins/default/xui/en/floater_auction.xml b/indra/newview/skins/default/xui/en/floater_auction.xml index 9c6d114c4c..56a2f51c43 100644 --- a/indra/newview/skins/default/xui/en/floater_auction.xml +++ b/indra/newview/skins/default/xui/en/floater_auction.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_autoreplace.xml b/indra/newview/skins/default/xui/en/floater_autoreplace.xml index 9cfb562001..c1752f9869 100644 --- a/indra/newview/skins/default/xui/en/floater_autoreplace.xml +++ b/indra/newview/skins/default/xui/en/floater_autoreplace.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   border="true"   can_close="true" diff --git a/indra/newview/skins/default/xui/en/floater_avatar.xml b/indra/newview/skins/default/xui/en/floater_avatar.xml index 3df2683ca8..f18bad2d4e 100644 --- a/indra/newview/skins/default/xui/en/floater_avatar.xml +++ b/indra/newview/skins/default/xui/en/floater_avatar.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   positioning="cascading"   legacy_header_height="225" diff --git a/indra/newview/skins/default/xui/en/floater_avatar_picker.xml b/indra/newview/skins/default/xui/en/floater_avatar_picker.xml index af6d11f47e..adbce0d982 100644 --- a/indra/newview/skins/default/xui/en/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/en/floater_avatar_picker.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   positioning="cascading"   legacy_header_height="18" diff --git a/indra/newview/skins/default/xui/en/floater_avatar_render_settings.xml b/indra/newview/skins/default/xui/en/floater_avatar_render_settings.xml index d222dca98b..aca5ddf3ef 100644 --- a/indra/newview/skins/default/xui/en/floater_avatar_render_settings.xml +++ b/indra/newview/skins/default/xui/en/floater_avatar_render_settings.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   can_resize="true"   positioning="cascading" diff --git a/indra/newview/skins/default/xui/en/floater_avatar_textures.xml b/indra/newview/skins/default/xui/en/floater_avatar_textures.xml index 6540f5e348..09026884b9 100644 --- a/indra/newview/skins/default/xui/en/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/en/floater_avatar_textures.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   height="700" @@ -453,4 +453,4 @@ Textures  </panel>  </panel>  </scroll_container> -</floater>
\ No newline at end of file +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_ban_duration.xml b/indra/newview/skins/default/xui/en/floater_ban_duration.xml index 6c537cc08d..2b3acd2907 100644 --- a/indra/newview/skins/default/xui/en/floater_ban_duration.xml +++ b/indra/newview/skins/default/xui/en/floater_ban_duration.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   can_minimize="false"   can_tear_off="false" diff --git a/indra/newview/skins/default/xui/en/floater_beacons.xml b/indra/newview/skins/default/xui/en/floater_beacons.xml index d5947fc0af..6248829500 100644 --- a/indra/newview/skins/default/xui/en/floater_beacons.xml +++ b/indra/newview/skins/default/xui/en/floater_beacons.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   height="310" @@ -157,7 +157,7 @@           font="SansSerif"           left="0"           top_pad="7" -         name="label_objects" +         name="label_direction"           text_color="White"           type="string">             Show direction to: diff --git a/indra/newview/skins/default/xui/en/floater_big_preview.xml b/indra/newview/skins/default/xui/en/floater_big_preview.xml index c0bdd3d9bd..362853d06f 100644 --- a/indra/newview/skins/default/xui/en/floater_big_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_big_preview.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater    positioning="cascading"    can_close="true" diff --git a/indra/newview/skins/default/xui/en/floater_build_options.xml b/indra/newview/skins/default/xui/en/floater_build_options.xml index 7278e55d57..37797a1379 100644 --- a/indra/newview/skins/default/xui/en/floater_build_options.xml +++ b/indra/newview/skins/default/xui/en/floater_build_options.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   height="170" diff --git a/indra/newview/skins/default/xui/en/floater_bulk_perms.xml b/indra/newview/skins/default/xui/en/floater_bulk_perms.xml index 7aa31bed71..7636284b4b 100644 --- a/indra/newview/skins/default/xui/en/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/en/floater_bulk_perms.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_tear_off="false" diff --git a/indra/newview/skins/default/xui/en/floater_bumps.xml b/indra/newview/skins/default/xui/en/floater_bumps.xml index 126e3aac48..874c05eec8 100644 --- a/indra/newview/skins/default/xui/en/floater_bumps.xml +++ b/indra/newview/skins/default/xui/en/floater_bumps.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   height="180" diff --git a/indra/newview/skins/default/xui/en/floater_buy_contents.xml b/indra/newview/skins/default/xui/en/floater_buy_contents.xml index ac96a70805..6b6f497808 100644 --- a/indra/newview/skins/default/xui/en/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/en/floater_buy_contents.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/en/floater_buy_currency_html.xml index 0637eedfb2..996937cd45 100644 --- a/indra/newview/skins/default/xui/en/floater_buy_currency_html.xml +++ b/indra/newview/skins/default/xui/en/floater_buy_currency_html.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   can_resize="false"   can_close="true" diff --git a/indra/newview/skins/default/xui/en/floater_buy_land.xml b/indra/newview/skins/default/xui/en/floater_buy_land.xml index 9fe56e447e..889339c38d 100644 --- a/indra/newview/skins/default/xui/en/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/en/floater_buy_land.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_minimize="false" diff --git a/indra/newview/skins/default/xui/en/floater_buy_object.xml b/indra/newview/skins/default/xui/en/floater_buy_object.xml index 1f7d52dbf5..2dec53ff7d 100644 --- a/indra/newview/skins/default/xui/en/floater_buy_object.xml +++ b/indra/newview/skins/default/xui/en/floater_buy_object.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_camera.xml b/indra/newview/skins/default/xui/en/floater_camera.xml index 9deb38e3af..4655a4d394 100644 --- a/indra/newview/skins/default/xui/en/floater_camera.xml +++ b/indra/newview/skins/default/xui/en/floater_camera.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   positioning="specified"   right="-460" diff --git a/indra/newview/skins/default/xui/en/floater_camera_presets.xml b/indra/newview/skins/default/xui/en/floater_camera_presets.xml index 930357f568..702d5d1b17 100644 --- a/indra/newview/skins/default/xui/en/floater_camera_presets.xml +++ b/indra/newview/skins/default/xui/en/floater_camera_presets.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_change_item_thumbnail.xml b/indra/newview/skins/default/xui/en/floater_change_item_thumbnail.xml index 726cb38481..223069ed0c 100644 --- a/indra/newview/skins/default/xui/en/floater_change_item_thumbnail.xml +++ b/indra/newview/skins/default/xui/en/floater_change_item_thumbnail.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   can_resize="false"   height="366" diff --git a/indra/newview/skins/default/xui/en/floater_choose_group.xml b/indra/newview/skins/default/xui/en/floater_choose_group.xml index 2cf6e682fd..beb6e490de 100644 --- a/indra/newview/skins/default/xui/en/floater_choose_group.xml +++ b/indra/newview/skins/default/xui/en/floater_choose_group.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   height="258" diff --git a/indra/newview/skins/default/xui/en/floater_color_picker.xml b/indra/newview/skins/default/xui/en/floater_color_picker.xml index e06d10606a..397b66fbd2 100644 --- a/indra/newview/skins/default/xui/en/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/en/floater_color_picker.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_minimize="false" diff --git a/indra/newview/skins/default/xui/en/floater_conversation_log.xml b/indra/newview/skins/default/xui/en/floater_conversation_log.xml index 19a4cbc119..3fbccfcd84 100644 --- a/indra/newview/skins/default/xui/en/floater_conversation_log.xml +++ b/indra/newview/skins/default/xui/en/floater_conversation_log.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_conversation_preview.xml b/indra/newview/skins/default/xui/en/floater_conversation_preview.xml index 99ad59a7a3..27913baff6 100644 --- a/indra/newview/skins/default/xui/en/floater_conversation_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_conversation_preview.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_create_landmark.xml b/indra/newview/skins/default/xui/en/floater_create_landmark.xml index 632daaec7e..ba2527e550 100644 --- a/indra/newview/skins/default/xui/en/floater_create_landmark.xml +++ b/indra/newview/skins/default/xui/en/floater_create_landmark.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   can_resize="false"   show_title="false" diff --git a/indra/newview/skins/default/xui/en/floater_critical.xml b/indra/newview/skins/default/xui/en/floater_critical.xml index 143bcb4430..caa4a2292c 100644 --- a/indra/newview/skins/default/xui/en/floater_critical.xml +++ b/indra/newview/skins/default/xui/en/floater_critical.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_close="false" diff --git a/indra/newview/skins/default/xui/en/floater_delete_pref_preset.xml b/indra/newview/skins/default/xui/en/floater_delete_pref_preset.xml index 3360d7bec9..ad724fb2aa 100644 --- a/indra/newview/skins/default/xui/en/floater_delete_pref_preset.xml +++ b/indra/newview/skins/default/xui/en/floater_delete_pref_preset.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   height="130" diff --git a/indra/newview/skins/default/xui/en/floater_destinations.xml b/indra/newview/skins/default/xui/en/floater_destinations.xml index 4fe8e3bdd1..58dc6741b2 100644 --- a/indra/newview/skins/default/xui/en/floater_destinations.xml +++ b/indra/newview/skins/default/xui/en/floater_destinations.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   positioning="cascading"	   legacy_header_height="225" diff --git a/indra/newview/skins/default/xui/en/floater_display_name.xml b/indra/newview/skins/default/xui/en/floater_display_name.xml index f3431da858..1205b0a1d6 100644 --- a/indra/newview/skins/default/xui/en/floater_display_name.xml +++ b/indra/newview/skins/default/xui/en/floater_display_name.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_minimize="false" diff --git a/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml b/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml index f3d7c38a76..2eacc8150e 100644 --- a/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml +++ b/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater          layout="topleft"          name="env_edit_extdaycycle" diff --git a/indra/newview/skins/default/xui/en/floater_edit_hover_height.xml b/indra/newview/skins/default/xui/en/floater_edit_hover_height.xml index 3570456b44..c831684594 100644 --- a/indra/newview/skins/default/xui/en/floater_edit_hover_height.xml +++ b/indra/newview/skins/default/xui/en/floater_edit_hover_height.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   positioning="cascading"   legacy_header_height="225" diff --git a/indra/newview/skins/default/xui/en/floater_event.xml b/indra/newview/skins/default/xui/en/floater_event.xml index cf61b7d24d..67eb4931e1 100644 --- a/indra/newview/skins/default/xui/en/floater_event.xml +++ b/indra/newview/skins/default/xui/en/floater_event.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   height="400"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_experience_search.xml b/indra/newview/skins/default/xui/en/floater_experience_search.xml index 15a4b5665e..60c95a8a0c 100644 --- a/indra/newview/skins/default/xui/en/floater_experience_search.xml +++ b/indra/newview/skins/default/xui/en/floater_experience_search.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater    positioning="cascading"    legacy_header_height="18" diff --git a/indra/newview/skins/default/xui/en/floater_experienceprofile.xml b/indra/newview/skins/default/xui/en/floater_experienceprofile.xml index 588aca38e6..d59b292b28 100644 --- a/indra/newview/skins/default/xui/en/floater_experienceprofile.xml +++ b/indra/newview/skins/default/xui/en/floater_experienceprofile.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater    name="experience_profile" diff --git a/indra/newview/skins/default/xui/en/floater_experiences.xml b/indra/newview/skins/default/xui/en/floater_experiences.xml index 442da887c5..72b1a46e65 100644 --- a/indra/newview/skins/default/xui/en/floater_experiences.xml +++ b/indra/newview/skins/default/xui/en/floater_experiences.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater    can_close="true" diff --git a/indra/newview/skins/default/xui/en/floater_fast_timers.xml b/indra/newview/skins/default/xui/en/floater_fast_timers.xml index 645003cc14..f5852fdfaf 100644 --- a/indra/newview/skins/default/xui/en/floater_fast_timers.xml +++ b/indra/newview/skins/default/xui/en/floater_fast_timers.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_minimize="false" diff --git a/indra/newview/skins/default/xui/en/floater_fbc_web.xml b/indra/newview/skins/default/xui/en/floater_fbc_web.xml index 0d35e22a19..b0a7305094 100644 --- a/indra/newview/skins/default/xui/en/floater_fbc_web.xml +++ b/indra/newview/skins/default/xui/en/floater_fbc_web.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater name="floater_fbc_web"           help_topic="fbc_web"           width="780" diff --git a/indra/newview/skins/default/xui/en/floater_fixedenvironment.xml b/indra/newview/skins/default/xui/en/floater_fixedenvironment.xml index 45f3880a15..f424f67df0 100644 --- a/indra/newview/skins/default/xui/en/floater_fixedenvironment.xml +++ b/indra/newview/skins/default/xui/en/floater_fixedenvironment.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater          can_tear_off="false"          can_resize="false" diff --git a/indra/newview/skins/default/xui/en/floater_font_test.xml b/indra/newview/skins/default/xui/en/floater_font_test.xml index 3ab19ec9d9..61cb91e2f3 100644 --- a/indra/newview/skins/default/xui/en/floater_font_test.xml +++ b/indra/newview/skins/default/xui/en/floater_font_test.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_forget_user.xml b/indra/newview/skins/default/xui/en/floater_forget_user.xml index a9ec1b74a3..62422ba478 100644 --- a/indra/newview/skins/default/xui/en/floater_forget_user.xml +++ b/indra/newview/skins/default/xui/en/floater_forget_user.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   height="258" diff --git a/indra/newview/skins/default/xui/en/floater_gesture.xml b/indra/newview/skins/default/xui/en/floater_gesture.xml index 9f051d9f8d..832716c600 100644 --- a/indra/newview/skins/default/xui/en/floater_gesture.xml +++ b/indra/newview/skins/default/xui/en/floater_gesture.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   positioning="cascading"   save_rect="true" diff --git a/indra/newview/skins/default/xui/en/floater_god_tools.xml b/indra/newview/skins/default/xui/en/floater_god_tools.xml index e7131e20cb..f8ec696af9 100644 --- a/indra/newview/skins/default/xui/en/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_god_tools.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   height="384" diff --git a/indra/newview/skins/default/xui/en/floater_goto_line.xml b/indra/newview/skins/default/xui/en/floater_goto_line.xml index b236888219..99be81cc1c 100644 --- a/indra/newview/skins/default/xui/en/floater_goto_line.xml +++ b/indra/newview/skins/default/xui/en/floater_goto_line.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   default_tab_group="1" @@ -41,4 +41,4 @@       tab_group="1"       top="21"       width="85" /> -</floater>
\ No newline at end of file +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_grid_status.xml b/indra/newview/skins/default/xui/en/floater_grid_status.xml index bf78204282..d42fec3ece 100644 --- a/indra/newview/skins/default/xui/en/floater_grid_status.xml +++ b/indra/newview/skins/default/xui/en/floater_grid_status.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater    positioning="cascading"    legacy_header_height="18" diff --git a/indra/newview/skins/default/xui/en/floater_help_browser.xml b/indra/newview/skins/default/xui/en/floater_help_browser.xml index c06cb63f8a..76895df732 100644 --- a/indra/newview/skins/default/xui/en/floater_help_browser.xml +++ b/indra/newview/skins/default/xui/en/floater_help_browser.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   positioning="cascading"   legacy_header_height="18" diff --git a/indra/newview/skins/default/xui/en/floater_how_to.xml b/indra/newview/skins/default/xui/en/floater_how_to.xml index 19e42798af..5b00d23faa 100644 --- a/indra/newview/skins/default/xui/en/floater_how_to.xml +++ b/indra/newview/skins/default/xui/en/floater_how_to.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater    legacy_header_height="18"    can_resize="false" @@ -13,4 +13,4 @@    width="310"    rel_x="-0.469309"    rel_y="-0.011166" -  filename="floater_web_content.xml"/>
\ No newline at end of file +  filename="floater_web_content.xml"/> diff --git a/indra/newview/skins/default/xui/en/floater_hud.xml b/indra/newview/skins/default/xui/en/floater_hud.xml index e2d860881a..2a8d2ad5ef 100644 --- a/indra/newview/skins/default/xui/en/floater_hud.xml +++ b/indra/newview/skins/default/xui/en/floater_hud.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_minimize="false" diff --git a/indra/newview/skins/default/xui/en/floater_im_container.xml b/indra/newview/skins/default/xui/en/floater_im_container.xml index 34fa0b0fe9..4df29c47de 100644 --- a/indra/newview/skins/default/xui/en/floater_im_container.xml +++ b/indra/newview/skins/default/xui/en/floater_im_container.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <multi_floater   can_close="true"     can_minimize="true" diff --git a/indra/newview/skins/default/xui/en/floater_im_session.xml b/indra/newview/skins/default/xui/en/floater_im_session.xml index da84fbeea6..67ddc6183c 100644 --- a/indra/newview/skins/default/xui/en/floater_im_session.xml +++ b/indra/newview/skins/default/xui/en/floater_im_session.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   background_visible="true"   height="355" diff --git a/indra/newview/skins/default/xui/en/floater_image_preview.xml b/indra/newview/skins/default/xui/en/floater_image_preview.xml index 773d9aafc9..79f62c4dbc 100644 --- a/indra/newview/skins/default/xui/en/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_image_preview.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_minimize="false" diff --git a/indra/newview/skins/default/xui/en/floater_import_collada.xml b/indra/newview/skins/default/xui/en/floater_import_collada.xml index 441ab6a2de..baea660f30 100644 --- a/indra/newview/skins/default/xui/en/floater_import_collada.xml +++ b/indra/newview/skins/default/xui/en/floater_import_collada.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater can_close="false" can_drag_on_left="false" can_minimize="false"       can_resize="false" height="160" min_height="160" width="300" min_width="300"       name="Import Collada" title="Import Scene"> diff --git a/indra/newview/skins/default/xui/en/floater_incoming_call.xml b/indra/newview/skins/default/xui/en/floater_incoming_call.xml index a7864381a9..169d4c9d24 100644 --- a/indra/newview/skins/default/xui/en/floater_incoming_call.xml +++ b/indra/newview/skins/default/xui/en/floater_incoming_call.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_close="false" diff --git a/indra/newview/skins/default/xui/en/floater_inspect.xml b/indra/newview/skins/default/xui/en/floater_inspect.xml index 802a6649c8..9403d58441 100644 --- a/indra/newview/skins/default/xui/en/floater_inspect.xml +++ b/indra/newview/skins/default/xui/en/floater_inspect.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml index 850e1be372..6c3214a76d 100644 --- a/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   height="340" diff --git a/indra/newview/skins/default/xui/en/floater_inventory_settings.xml b/indra/newview/skins/default/xui/en/floater_inventory_settings.xml index 2e619d91fb..156bba6c27 100644 --- a/indra/newview/skins/default/xui/en/floater_inventory_settings.xml +++ b/indra/newview/skins/default/xui/en/floater_inventory_settings.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   can_close="true"   can_minimize="true" diff --git a/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml index e91efb89b2..f908d23d8e 100644 --- a/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_minimize="false" diff --git a/indra/newview/skins/default/xui/en/floater_item_properties.xml b/indra/newview/skins/default/xui/en/floater_item_properties.xml index 336bb902ca..fc9351bff2 100644 --- a/indra/newview/skins/default/xui/en/floater_item_properties.xml +++ b/indra/newview/skins/default/xui/en/floater_item_properties.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   height="570" diff --git a/indra/newview/skins/default/xui/en/floater_joystick.xml b/indra/newview/skins/default/xui/en/floater_joystick.xml index 7d2cea1fe5..e6f0420698 100644 --- a/indra/newview/skins/default/xui/en/floater_joystick.xml +++ b/indra/newview/skins/default/xui/en/floater_joystick.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   height="500" diff --git a/indra/newview/skins/default/xui/en/floater_lagmeter.xml b/indra/newview/skins/default/xui/en/floater_lagmeter.xml index b24c745bdd..eab66ab83e 100644 --- a/indra/newview/skins/default/xui/en/floater_lagmeter.xml +++ b/indra/newview/skins/default/xui/en/floater_lagmeter.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   height="170" diff --git a/indra/newview/skins/default/xui/en/floater_land_holdings.xml b/indra/newview/skins/default/xui/en/floater_land_holdings.xml index 390ec9ab7d..affd2b196d 100644 --- a/indra/newview/skins/default/xui/en/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/en/floater_land_holdings.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   positioning="centered"   legacy_header_height="18" diff --git a/indra/newview/skins/default/xui/en/floater_linkreplace.xml b/indra/newview/skins/default/xui/en/floater_linkreplace.xml index ece75e2576..1fa039f2d1 100644 --- a/indra/newview/skins/default/xui/en/floater_linkreplace.xml +++ b/indra/newview/skins/default/xui/en/floater_linkreplace.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   name="linkreplace"   help_topic="linkreplace" diff --git a/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml index e8826034f6..e30c519c8a 100644 --- a/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml +++ b/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml @@ -1,10 +1,10 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater    legacy_header_height="18"    bevel_style="none"    border_style="line"    can_resize="true" -  height="582" +  height="607"    layout="topleft"    min_height="271"    min_width="328" @@ -45,6 +45,21 @@      name="loading">      Loading...    </floater.string> +  <text +   type="string" +   length="1" +   follows="left|top|right" +   width="490" +   use_ellipses="true" +   font="SansSerif" +   height="18" +   layout="topleft" +   left="13" +   name="obj_name" +   text_color="white" +   top="21"> +    Object name +  </text>    <panel      bevel_style="none" @@ -54,7 +69,7 @@      layout="topleft"      left="10"      name="script ed panel" -    top="16" +    top_pad="2"      width="501" />    <button      follows="left|bottom" diff --git a/indra/newview/skins/default/xui/en/floater_load_pref_preset.xml b/indra/newview/skins/default/xui/en/floater_load_pref_preset.xml index 49c21f1ea7..ba1b812d28 100644 --- a/indra/newview/skins/default/xui/en/floater_load_pref_preset.xml +++ b/indra/newview/skins/default/xui/en/floater_load_pref_preset.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   height="130" diff --git a/indra/newview/skins/default/xui/en/floater_lsl_guide.xml b/indra/newview/skins/default/xui/en/floater_lsl_guide.xml index e9676777f4..17a07c5ec2 100644 --- a/indra/newview/skins/default/xui/en/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/en/floater_lsl_guide.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_map.xml b/indra/newview/skins/default/xui/en/floater_map.xml index 9639e70544..eba5684819 100644 --- a/indra/newview/skins/default/xui/en/floater_map.xml +++ b/indra/newview/skins/default/xui/en/floater_map.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   positioning="cascading"   can_minimize="true"  diff --git a/indra/newview/skins/default/xui/en/floater_marketplace_validation.xml b/indra/newview/skins/default/xui/en/floater_marketplace_validation.xml index 9035a7c161..368a8b26ca 100644 --- a/indra/newview/skins/default/xui/en/floater_marketplace_validation.xml +++ b/indra/newview/skins/default/xui/en/floater_marketplace_validation.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater      title="Audit Marketplace Listings"      name="floater_marketplace_validation" diff --git a/indra/newview/skins/default/xui/en/floater_media_browser.xml b/indra/newview/skins/default/xui/en/floater_media_browser.xml index ce788654aa..5ea751dc7c 100644 --- a/indra/newview/skins/default/xui/en/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/en/floater_media_browser.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_media_settings.xml b/indra/newview/skins/default/xui/en/floater_media_settings.xml index 0e03c0ab6d..4545855811 100644 --- a/indra/newview/skins/default/xui/en/floater_media_settings.xml +++ b/indra/newview/skins/default/xui/en/floater_media_settings.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_close="true"  diff --git a/indra/newview/skins/default/xui/en/floater_mem_leaking.xml b/indra/newview/skins/default/xui/en/floater_mem_leaking.xml index fb7d09a21e..af45974e0e 100644 --- a/indra/newview/skins/default/xui/en/floater_mem_leaking.xml +++ b/indra/newview/skins/default/xui/en/floater_mem_leaking.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_minimize="false" diff --git a/indra/newview/skins/default/xui/en/floater_mfa.xml b/indra/newview/skins/default/xui/en/floater_mfa.xml index a649cc6d47..e8be95612d 100644 --- a/indra/newview/skins/default/xui/en/floater_mfa.xml +++ b/indra/newview/skins/default/xui/en/floater_mfa.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   title="MFA Token Requred"   legacy_header_height="18" diff --git a/indra/newview/skins/default/xui/en/floater_model_preview.xml b/indra/newview/skins/default/xui/en/floater_model_preview.xml index 21c894d3af..5dcac85b4f 100644 --- a/indra/newview/skins/default/xui/en/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   can_close="true"   can_drag_on_left="false" @@ -745,7 +745,7 @@               height="0"               layout="topleft"               left="10" -             name="lod_tab_border" +             name="lod_tab_border1"               top_pad="20"               width="614" />              <check_box @@ -858,7 +858,7 @@                height="0"                layout="topleft"                left="18" -              name="physics_tab_border" +              name="physics_tab_border1"                top_pad="10"                width="589"/>                  <panel @@ -965,7 +965,7 @@                height="0"                layout="topleft"                left="18" -              name="physics_tab_border" +              name="physics_tab_border2"                top_pad="10"                width="589"/>                  <panel @@ -1073,7 +1073,7 @@                height="0"                layout="topleft"                left="18" -              name="physics_tab_border" +              name="physics_tab_border3"                top_pad="10"                width="589"/>                  <panel diff --git a/indra/newview/skins/default/xui/en/floater_moveview.xml b/indra/newview/skins/default/xui/en/floater_moveview.xml index 90166232e9..fc7c418ca8 100644 --- a/indra/newview/skins/default/xui/en/floater_moveview.xml +++ b/indra/newview/skins/default/xui/en/floater_moveview.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   positioning="specified"   right="-693" diff --git a/indra/newview/skins/default/xui/en/floater_mute_object.xml b/indra/newview/skins/default/xui/en/floater_mute_object.xml index 22b0a1783f..2d992dfa72 100644 --- a/indra/newview/skins/default/xui/en/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/en/floater_mute_object.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_minimize="false" diff --git a/indra/newview/skins/default/xui/en/floater_my_scripts.xml b/indra/newview/skins/default/xui/en/floater_my_scripts.xml index ee6defce9d..ad89787031 100644 --- a/indra/newview/skins/default/xui/en/floater_my_scripts.xml +++ b/indra/newview/skins/default/xui/en/floater_my_scripts.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_my_web_profile.xml b/indra/newview/skins/default/xui/en/floater_my_web_profile.xml index df46fc198f..e7b2abda62 100644 --- a/indra/newview/skins/default/xui/en/floater_my_web_profile.xml +++ b/indra/newview/skins/default/xui/en/floater_my_web_profile.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater name="floater_my_web_profile"           help_topic="web_profile"           width="780" @@ -6,4 +6,4 @@           save_rect="true"           single_instance="true"           reuse_instance="false" -         filename="floater_web_content.xml"/>
\ No newline at end of file +         filename="floater_web_content.xml"/> diff --git a/indra/newview/skins/default/xui/en/floater_new_feature_notification.xml b/indra/newview/skins/default/xui/en/floater_new_feature_notification.xml index c8726d36b4..57b74b360a 100644 --- a/indra/newview/skins/default/xui/en/floater_new_feature_notification.xml +++ b/indra/newview/skins/default/xui/en/floater_new_feature_notification.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   height="130"   width="300" diff --git a/indra/newview/skins/default/xui/en/floater_notification.xml b/indra/newview/skins/default/xui/en/floater_notification.xml index 1f9ddecac2..32345981e4 100644 --- a/indra/newview/skins/default/xui/en/floater_notification.xml +++ b/indra/newview/skins/default/xui/en/floater_notification.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_notifications_console.xml b/indra/newview/skins/default/xui/en/floater_notifications_console.xml index e243ccd2f9..46a824a8b0 100644 --- a/indra/newview/skins/default/xui/en/floater_notifications_console.xml +++ b/indra/newview/skins/default/xui/en/floater_notifications_console.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_object_weights.xml b/indra/newview/skins/default/xui/en/floater_object_weights.xml index 889efa061c..5e4b017590 100644 --- a/indra/newview/skins/default/xui/en/floater_object_weights.xml +++ b/indra/newview/skins/default/xui/en/floater_object_weights.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   can_close="true"   can_tear_off="false" diff --git a/indra/newview/skins/default/xui/en/floater_openobject.xml b/indra/newview/skins/default/xui/en/floater_openobject.xml index ec03d7d32c..bc04dc9f46 100644 --- a/indra/newview/skins/default/xui/en/floater_openobject.xml +++ b/indra/newview/skins/default/xui/en/floater_openobject.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml index bbe280582b..98cb997c66 100644 --- a/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml +++ b/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   can_close="false"   can_minimize="false" diff --git a/indra/newview/skins/default/xui/en/floater_outgoing_call.xml b/indra/newview/skins/default/xui/en/floater_outgoing_call.xml index ae1fb4cccd..328ee2b835 100644 --- a/indra/newview/skins/default/xui/en/floater_outgoing_call.xml +++ b/indra/newview/skins/default/xui/en/floater_outgoing_call.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_close="false" diff --git a/indra/newview/skins/default/xui/en/floater_pathfinding_characters.xml b/indra/newview/skins/default/xui/en/floater_pathfinding_characters.xml index 7242c734cf..37fed38af6 100644 --- a/indra/newview/skins/default/xui/en/floater_pathfinding_characters.xml +++ b/indra/newview/skins/default/xui/en/floater_pathfinding_characters.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater      positioning="cascading"      can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/en/floater_pathfinding_console.xml index eb37cf214c..296cec5693 100644 --- a/indra/newview/skins/default/xui/en/floater_pathfinding_console.xml +++ b/indra/newview/skins/default/xui/en/floater_pathfinding_console.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater      positioning="cascading"      can_tear_off="false" diff --git a/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml index 59117c0178..4a07000db8 100644 --- a/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml +++ b/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater      positioning="cascading"      can_resize="true" @@ -372,7 +372,7 @@        follows="left|bottom|right"        height="0"        layout="topleft" -      name="horiz_separator" +      name="horiz_separator1"        top_pad="0"        left="18"        width="1039"/> diff --git a/indra/newview/skins/default/xui/en/floater_pay.xml b/indra/newview/skins/default/xui/en/floater_pay.xml index 3e3f8b49ce..6865bd0a64 100644 --- a/indra/newview/skins/default/xui/en/floater_pay.xml +++ b/indra/newview/skins/default/xui/en/floater_pay.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_minimize="false" diff --git a/indra/newview/skins/default/xui/en/floater_pay_object.xml b/indra/newview/skins/default/xui/en/floater_pay_object.xml index f1e27b918e..3c1d79940c 100644 --- a/indra/newview/skins/default/xui/en/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/en/floater_pay_object.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_minimize="false" diff --git a/indra/newview/skins/default/xui/en/floater_people.xml b/indra/newview/skins/default/xui/en/floater_people.xml index 0cc0ca1ce4..41149bfe1b 100644 --- a/indra/newview/skins/default/xui/en/floater_people.xml +++ b/indra/newview/skins/default/xui/en/floater_people.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater    positioning="cascading" diff --git a/indra/newview/skins/default/xui/en/floater_performance.xml b/indra/newview/skins/default/xui/en/floater_performance.xml index d1a1119f77..dac8a71b2d 100644 --- a/indra/newview/skins/default/xui/en/floater_performance.xml +++ b/indra/newview/skins/default/xui/en/floater_performance.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   height="642"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_perms_default.xml b/indra/newview/skins/default/xui/en/floater_perms_default.xml index 9ca61671e1..46e4cb4764 100644 --- a/indra/newview/skins/default/xui/en/floater_perms_default.xml +++ b/indra/newview/skins/default/xui/en/floater_perms_default.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   height="266" diff --git a/indra/newview/skins/default/xui/en/floater_pick_track.xml b/indra/newview/skins/default/xui/en/floater_pick_track.xml index d8a9877be2..103422a04d 100644 --- a/indra/newview/skins/default/xui/en/floater_pick_track.xml +++ b/indra/newview/skins/default/xui/en/floater_pick_track.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater          legacy_header_height="0" diff --git a/indra/newview/skins/default/xui/en/floater_post_process.xml b/indra/newview/skins/default/xui/en/floater_post_process.xml index 05943a10d3..37339f79c8 100644 --- a/indra/newview/skins/default/xui/en/floater_post_process.xml +++ b/indra/newview/skins/default/xui/en/floater_post_process.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   height="400" diff --git a/indra/newview/skins/default/xui/en/floater_preferences.xml b/indra/newview/skins/default/xui/en/floater_preferences.xml index c4adf0409d..4b0e0bb221 100644 --- a/indra/newview/skins/default/xui/en/floater_preferences.xml +++ b/indra/newview/skins/default/xui/en/floater_preferences.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   positioning="centered" diff --git a/indra/newview/skins/default/xui/en/floater_preferences_proxy.xml b/indra/newview/skins/default/xui/en/floater_preferences_proxy.xml index 659033efd4..fb5af72456 100644 --- a/indra/newview/skins/default/xui/en/floater_preferences_proxy.xml +++ b/indra/newview/skins/default/xui/en/floater_preferences_proxy.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   height="500" diff --git a/indra/newview/skins/default/xui/en/floater_preferences_view_advanced.xml b/indra/newview/skins/default/xui/en/floater_preferences_view_advanced.xml index 4c3c7e4930..18d3c66d63 100644 --- a/indra/newview/skins/default/xui/en/floater_preferences_view_advanced.xml +++ b/indra/newview/skins/default/xui/en/floater_preferences_view_advanced.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   height="190"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_preview_animation.xml b/indra/newview/skins/default/xui/en/floater_preview_animation.xml index d1f8da55be..d116e574c6 100644 --- a/indra/newview/skins/default/xui/en/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_animation.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   height="241" diff --git a/indra/newview/skins/default/xui/en/floater_preview_gesture.xml b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml index c4ac936334..615dbdb025 100644 --- a/indra/newview/skins/default/xui/en/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   height="460" diff --git a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml index dcbdfa8794..e073102651 100644 --- a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_preview_sound.xml b/indra/newview/skins/default/xui/en/floater_preview_sound.xml index 83a1f5a96f..78d69d3e09 100644 --- a/indra/newview/skins/default/xui/en/floater_preview_sound.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_sound.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   height="85" diff --git a/indra/newview/skins/default/xui/en/floater_preview_texture.xml b/indra/newview/skins/default/xui/en/floater_preview_texture.xml index 048cf7df62..2957cbd3a7 100644 --- a/indra/newview/skins/default/xui/en/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_texture.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_preview_trash.xml b/indra/newview/skins/default/xui/en/floater_preview_trash.xml index 3fa71e7bfe..f1c87c8c5a 100644 --- a/indra/newview/skins/default/xui/en/floater_preview_trash.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_trash.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_price_for_listing.xml b/indra/newview/skins/default/xui/en/floater_price_for_listing.xml index 6312366b86..0b1e23c27e 100644 --- a/indra/newview/skins/default/xui/en/floater_price_for_listing.xml +++ b/indra/newview/skins/default/xui/en/floater_price_for_listing.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_minimize="false" diff --git a/indra/newview/skins/default/xui/en/floater_profile_permissions.xml b/indra/newview/skins/default/xui/en/floater_profile_permissions.xml index 9f3b4d9a00..e434face8b 100644 --- a/indra/newview/skins/default/xui/en/floater_profile_permissions.xml +++ b/indra/newview/skins/default/xui/en/floater_profile_permissions.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   can_resize="false"   show_title="false" diff --git a/indra/newview/skins/default/xui/en/floater_profile_texture.xml b/indra/newview/skins/default/xui/en/floater_profile_texture.xml index 3b351a3325..5da14b75ab 100644 --- a/indra/newview/skins/default/xui/en/floater_profile_texture.xml +++ b/indra/newview/skins/default/xui/en/floater_profile_texture.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   can_resize="false"   show_title="false" diff --git a/indra/newview/skins/default/xui/en/floater_publish_classified.xml b/indra/newview/skins/default/xui/en/floater_publish_classified.xml index 84e0b489d0..2d7d03f7a0 100644 --- a/indra/newview/skins/default/xui/en/floater_publish_classified.xml +++ b/indra/newview/skins/default/xui/en/floater_publish_classified.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_minimize="false" diff --git a/indra/newview/skins/default/xui/en/floater_region_debug_console.xml b/indra/newview/skins/default/xui/en/floater_region_debug_console.xml index 11172d8a3e..c7fd9da219 100644 --- a/indra/newview/skins/default/xui/en/floater_region_debug_console.xml +++ b/indra/newview/skins/default/xui/en/floater_region_debug_console.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater    name="region_debug_console"    title="Region Debug" diff --git a/indra/newview/skins/default/xui/en/floater_region_info.xml b/indra/newview/skins/default/xui/en/floater_region_info.xml index 3b58cd08f6..a7bbfc9842 100644 --- a/indra/newview/skins/default/xui/en/floater_region_info.xml +++ b/indra/newview/skins/default/xui/en/floater_region_info.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   height="555" diff --git a/indra/newview/skins/default/xui/en/floater_region_restarting.xml b/indra/newview/skins/default/xui/en/floater_region_restarting.xml index 2fe4d0190a..825f90d265 100644 --- a/indra/newview/skins/default/xui/en/floater_region_restarting.xml +++ b/indra/newview/skins/default/xui/en/floater_region_restarting.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   height="150"   width="290" diff --git a/indra/newview/skins/default/xui/en/floater_report_abuse.xml b/indra/newview/skins/default/xui/en/floater_report_abuse.xml index 343e72f057..59572c79da 100644 --- a/indra/newview/skins/default/xui/en/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/en/floater_report_abuse.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   height="580" diff --git a/indra/newview/skins/default/xui/en/floater_save_camera_preset.xml b/indra/newview/skins/default/xui/en/floater_save_camera_preset.xml index 54fdb6d167..ce86bd65f7 100644 --- a/indra/newview/skins/default/xui/en/floater_save_camera_preset.xml +++ b/indra/newview/skins/default/xui/en/floater_save_camera_preset.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   height="185" diff --git a/indra/newview/skins/default/xui/en/floater_save_pref_preset.xml b/indra/newview/skins/default/xui/en/floater_save_pref_preset.xml index 62260274f5..dbfbc058c0 100644 --- a/indra/newview/skins/default/xui/en/floater_save_pref_preset.xml +++ b/indra/newview/skins/default/xui/en/floater_save_pref_preset.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   height="145" diff --git a/indra/newview/skins/default/xui/en/floater_scene_load_stats.xml b/indra/newview/skins/default/xui/en/floater_scene_load_stats.xml index b757f4eab8..a73af968af 100644 --- a/indra/newview/skins/default/xui/en/floater_scene_load_stats.xml +++ b/indra/newview/skins/default/xui/en/floater_scene_load_stats.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater legacy_header_height="18"           can_resize="true"           height="400" @@ -119,7 +119,7 @@                      tick_spacing="100"                      show_history="true"                      show_bar="false"/> -          <stat_bar name="texture_decode_latency" +          <stat_bar name="texture_write_latency"                      label="Cache Write Latency"                      orientation="horizontal"                      unit_label="sec" diff --git a/indra/newview/skins/default/xui/en/floater_script.xml b/indra/newview/skins/default/xui/en/floater_script.xml index bd4edb81c8..ae6e68de17 100644 --- a/indra/newview/skins/default/xui/en/floater_script.xml +++ b/indra/newview/skins/default/xui/en/floater_script.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   background_visible="true" diff --git a/indra/newview/skins/default/xui/en/floater_script_debug.xml b/indra/newview/skins/default/xui/en/floater_script_debug.xml index 6c49cfa1a8..da269e0705 100644 --- a/indra/newview/skins/default/xui/en/floater_script_debug.xml +++ b/indra/newview/skins/default/xui/en/floater_script_debug.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <multi_floater   can_resize="true"   height="233" diff --git a/indra/newview/skins/default/xui/en/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/en/floater_script_debug_panel.xml index b5dd2f97b9..c58f5b9d43 100644 --- a/indra/newview/skins/default/xui/en/floater_script_debug_panel.xml +++ b/indra/newview/skins/default/xui/en/floater_script_debug_panel.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_script_ed_prefs.xml b/indra/newview/skins/default/xui/en/floater_script_ed_prefs.xml index 8e4bcb3eb0..0b39d204be 100644 --- a/indra/newview/skins/default/xui/en/floater_script_ed_prefs.xml +++ b/indra/newview/skins/default/xui/en/floater_script_ed_prefs.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="false" @@ -335,6 +335,7 @@       layout="topleft"       max_length="300"       name="Script Preview" +     default_font_size="true"       text_color="ScriptText"       default_color="ScriptText"       bg_writeable_color="ScriptBackground" diff --git a/indra/newview/skins/default/xui/en/floater_script_limits.xml b/indra/newview/skins/default/xui/en/floater_script_limits.xml index 96b2ceec63..a0d2b74b5b 100644 --- a/indra/newview/skins/default/xui/en/floater_script_limits.xml +++ b/indra/newview/skins/default/xui/en/floater_script_limits.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_script_preview.xml b/indra/newview/skins/default/xui/en/floater_script_preview.xml index 91a9e67e4c..b0b105fe58 100644 --- a/indra/newview/skins/default/xui/en/floater_script_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_script_preview.xml @@ -1,11 +1,11 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" - height="570" + height="593"   layout="topleft"   min_height="271" - min_width="290" + min_width="320"   name="preview lsl text"   help_topic="preview_lsl_text"   save_rect="true" @@ -21,7 +21,7 @@       layout="topleft"       left="10"       name="script panel" -     top="42" +     top="65"       width="497" />      <icon       follows="top|right" @@ -36,13 +36,28 @@      <text       type="string"       length="1" +     follows="left|top|right" +     width="490" +     use_ellipses="true" +     font="SansSerif" +     height="18" +     layout="topleft" +     left="13" +     name="path_txt" +     text_color="white" +     top="21"> +        File path +    </text> +    <text +     type="string" +     length="1"       follows="left|top"       font="SansSerif"       height="19"       layout="topleft"       left="13"       name="desc txt" -     top="19" +     top_pad="5"       width="80">          Description:      </text> diff --git a/indra/newview/skins/default/xui/en/floater_script_queue.xml b/indra/newview/skins/default/xui/en/floater_script_queue.xml index 0982683a7f..a98437ab1d 100644 --- a/indra/newview/skins/default/xui/en/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/en/floater_script_queue.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_script_search.xml b/indra/newview/skins/default/xui/en/floater_script_search.xml index ade0156bc7..9cd6218982 100644 --- a/indra/newview/skins/default/xui/en/floater_script_search.xml +++ b/indra/newview/skins/default/xui/en/floater_script_search.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   default_tab_group="1" diff --git a/indra/newview/skins/default/xui/en/floater_search.xml b/indra/newview/skins/default/xui/en/floater_search.xml index c3e7028dc5..fc1e32915a 100644 --- a/indra/newview/skins/default/xui/en/floater_search.xml +++ b/indra/newview/skins/default/xui/en/floater_search.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater    positioning="cascading"    legacy_header_height="18" diff --git a/indra/newview/skins/default/xui/en/floater_select_key.xml b/indra/newview/skins/default/xui/en/floater_select_key.xml index 998948fca1..13362c26a7 100644 --- a/indra/newview/skins/default/xui/en/floater_select_key.xml +++ b/indra/newview/skins/default/xui/en/floater_select_key.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   border="false" diff --git a/indra/newview/skins/default/xui/en/floater_sell_land.xml b/indra/newview/skins/default/xui/en/floater_sell_land.xml index 52de9ddd47..ff7a0d0317 100644 --- a/indra/newview/skins/default/xui/en/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/en/floater_sell_land.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_minimize="false" diff --git a/indra/newview/skins/default/xui/en/floater_settings_debug.xml b/indra/newview/skins/default/xui/en/floater_settings_debug.xml index e4fda5cd10..a93be6a18d 100644 --- a/indra/newview/skins/default/xui/en/floater_settings_debug.xml +++ b/indra/newview/skins/default/xui/en/floater_settings_debug.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_minimize="false" diff --git a/indra/newview/skins/default/xui/en/floater_settings_picker.xml b/indra/newview/skins/default/xui/en/floater_settings_picker.xml index 8931269fe7..434f2a2396 100644 --- a/indra/newview/skins/default/xui/en/floater_settings_picker.xml +++ b/indra/newview/skins/default/xui/en/floater_settings_picker.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater          legacy_header_height="18"          can_minimize="false" diff --git a/indra/newview/skins/default/xui/en/floater_simple_snapshot.xml b/indra/newview/skins/default/xui/en/floater_simple_snapshot.xml index 484ad159d1..0b91e13632 100644 --- a/indra/newview/skins/default/xui/en/floater_simple_snapshot.xml +++ b/indra/newview/skins/default/xui/en/floater_simple_snapshot.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   positioning="cascading"   legacy_header_height="18" diff --git a/indra/newview/skins/default/xui/en/floater_snapshot.xml b/indra/newview/skins/default/xui/en/floater_snapshot.xml index 1a1131e24c..e6b780728c 100644 --- a/indra/newview/skins/default/xui/en/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/en/floater_snapshot.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   positioning="cascading"   legacy_header_height="18" @@ -234,7 +234,7 @@           height="1"           left="10"           layout="topleft" -         name="advanced_options_hr" +         name="advanced_options_hr1"           right="-1"           top_pad="7"           /> diff --git a/indra/newview/skins/default/xui/en/floater_sound_preview.xml b/indra/newview/skins/default/xui/en/floater_sound_preview.xml index 3889b975a9..61fb228926 100644 --- a/indra/newview/skins/default/xui/en/floater_sound_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_sound_preview.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   height="180" diff --git a/indra/newview/skins/default/xui/en/floater_spellcheck.xml b/indra/newview/skins/default/xui/en/floater_spellcheck.xml index 76a350dd29..2575bef48f 100644 --- a/indra/newview/skins/default/xui/en/floater_spellcheck.xml +++ b/indra/newview/skins/default/xui/en/floater_spellcheck.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   border="true"   can_close="true" diff --git a/indra/newview/skins/default/xui/en/floater_spellcheck_import.xml b/indra/newview/skins/default/xui/en/floater_spellcheck_import.xml index 94393a6c77..a3109a15a8 100644 --- a/indra/newview/skins/default/xui/en/floater_spellcheck_import.xml +++ b/indra/newview/skins/default/xui/en/floater_spellcheck_import.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   border="true"   can_close="true" diff --git a/indra/newview/skins/default/xui/en/floater_stats.xml b/indra/newview/skins/default/xui/en/floater_stats.xml index 9ee161e611..6633e25099 100644 --- a/indra/newview/skins/default/xui/en/floater_stats.xml +++ b/indra/newview/skins/default/xui/en/floater_stats.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater legacy_header_height="18"           can_resize="true"           height="400" @@ -25,7 +25,7 @@                      name="statistics_view"                      top="20"                      width="250" > -     <stat_view name="basic" +      <stat_view name="basic"                   label="Basic"                   setting="OpenDebugStatBasic">          <stat_bar name="fps" @@ -54,7 +54,7 @@                    label="jitter"                    decimal_digits="1"                    stat="frametimejitter"/> -       <stat_bar name="bandwidth" +        <stat_bar name="bandwidth"                    label="UDP Data Received"                    stat="activemessagedatareceived"                    decimal_digits="0" @@ -68,7 +68,7 @@                    stat="simpingstat"/>        </stat_view> -     <stat_view name="advanced" +      <stat_view name="advanced"                   label="Advanced"                   setting="OpenDebugStatAdvanced">          <stat_view name="render" @@ -84,28 +84,29 @@            <stat_bar name="totalobjs"                      label="Total Objects"                      stat="numobjectsstat"/> -					<stat_bar name="cachedobjs" +          <stat_bar name="cachedobjs"                      label="Cached Objects"                      stat="numactivecachedobjects"/> -					<stat_bar name="newobjs" +          <stat_bar name="newobjs"                      label="New Objects"                      stat="numnewobjectsstat"/>            <stat_bar name="object_cache_hits"                      label="Object Cache Hit Rate"                      stat="object_cache_hits"                      show_history="true"/> -					<stat_bar name="occlusion_queries" -										label="Occlusion Queries Performed" -										stat="occlusion_queries"/> -					<stat_bar name="occluded" -										label="Objects Occluded" -										stat="occluded_objects"/> -					<stat_bar name="unoccluded" -										label="Object Unoccluded" -										stat="unoccluded_objects"/> -				</stat_view> +          <stat_bar name="occlusion_queries" +                    label="Occlusion Queries Performed" +                    stat="occlusion_queries"/> +          <stat_bar name="occluded" +                    label="Objects Occluded" +                    stat="occluded_objects"/> +          <stat_bar name="unoccluded" +                    label="Object Unoccluded" +                    stat="unoccluded_objects"/> +        </stat_view>          <stat_view name="texture" -                   label="Texture"> +                   label="Texture" +                   setting="OpenDebugStatTexture">            <stat_bar name="texture_cache_hits"                      label="Cache Hit Rate"                      stat="texture_cache_hits" @@ -243,7 +244,8 @@                    decimal_digits="1"                    bar_max="45" />          <stat_view name="physicsdetail" -                   label="Physics Details"> +                   label="Physics Details" +                   setting="OpenDebugStatPhysicsDetails">            <stat_bar name="physicspinnedtasks"                      label="Pinned Objects"                      stat="physicspinnedtasks"/> @@ -282,7 +284,8 @@                    stat="simscripteps"                    unit_label="eps"/>          <stat_view name="simpathfinding" -                   label="Pathfinding"> +                   label="Pathfinding" +                   setting="OpenDebugStatPathfinding">            <stat_bar name="simsimaistepmsec"                      label="AI Step Time"                      stat="simsimaistepmsec"/> @@ -315,7 +318,8 @@                    stat="simtotalunackedbytes"                    decimal_digits="1"/>          <stat_view name="simperf" -                   label="Time"> +                   label="Time" +                   setting="OpenDebugStatSimTime">            <stat_bar name="simframemsec"                      label="Total Frame Time"                      stat="simframemsec"/> @@ -341,7 +345,8 @@                      label="Spare Time"                      stat="simsparemsec"/>            <stat_view name="timedetails" -                     label="Time Details"> +                     label="Time Details" +                     setting="OpenDebugStatSimTimeDetails">              <stat_bar name="simsimphysicsstepmsec"                        label="Physics Step"                        stat="simsimphysicsstepmsec"/> diff --git a/indra/newview/skins/default/xui/en/floater_task_properties.xml b/indra/newview/skins/default/xui/en/floater_task_properties.xml index 56c236eab4..ecec41c663 100644 --- a/indra/newview/skins/default/xui/en/floater_task_properties.xml +++ b/indra/newview/skins/default/xui/en/floater_task_properties.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   height="590" diff --git a/indra/newview/skins/default/xui/en/floater_telehub.xml b/indra/newview/skins/default/xui/en/floater_telehub.xml index 547613fb67..9d4fb82ec6 100644 --- a/indra/newview/skins/default/xui/en/floater_telehub.xml +++ b/indra/newview/skins/default/xui/en/floater_telehub.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!-- Explicit left edge to avoid overlapping build tools -->  <floater   legacy_header_height="18" diff --git a/indra/newview/skins/default/xui/en/floater_test_button.xml b/indra/newview/skins/default/xui/en/floater_test_button.xml index 9bc05107a2..90eaa09e13 100644 --- a/indra/newview/skins/default/xui/en/floater_test_button.xml +++ b/indra/newview/skins/default/xui/en/floater_test_button.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_test_checkbox.xml b/indra/newview/skins/default/xui/en/floater_test_checkbox.xml index 95aaadfcf3..0b44350846 100644 --- a/indra/newview/skins/default/xui/en/floater_test_checkbox.xml +++ b/indra/newview/skins/default/xui/en/floater_test_checkbox.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_test_combobox.xml b/indra/newview/skins/default/xui/en/floater_test_combobox.xml index 45e2e34da7..4211d624ac 100644 --- a/indra/newview/skins/default/xui/en/floater_test_combobox.xml +++ b/indra/newview/skins/default/xui/en/floater_test_combobox.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_test_inspectors.xml b/indra/newview/skins/default/xui/en/floater_test_inspectors.xml index 209285da2e..c195f021e3 100644 --- a/indra/newview/skins/default/xui/en/floater_test_inspectors.xml +++ b/indra/newview/skins/default/xui/en/floater_test_inspectors.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="false" diff --git a/indra/newview/skins/default/xui/en/floater_test_layout.xml b/indra/newview/skins/default/xui/en/floater_test_layout.xml index 94f7e0b798..bade805cdb 100644 --- a/indra/newview/skins/default/xui/en/floater_test_layout.xml +++ b/indra/newview/skins/default/xui/en/floater_test_layout.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_test_layout_stacks.xml b/indra/newview/skins/default/xui/en/floater_test_layout_stacks.xml index a3ed22f422..70361cc8da 100644 --- a/indra/newview/skins/default/xui/en/floater_test_layout_stacks.xml +++ b/indra/newview/skins/default/xui/en/floater_test_layout_stacks.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater          can_resize="true"          can_close="true" @@ -26,7 +26,7 @@                  background_visible="true">              <text follows="top|left|right" halign="center" text_color="white">flex</text>          </layout_panel> -        <layout_panel name="flex" +        <layout_panel name="flex2"                  auto_resize="true"                  user_resize="true"                  bg_alpha_color="blue" @@ -36,7 +36,7 @@                  background_visible="true">              <text follows="top|left|right" halign="center" text_color="white">flex</text>          </layout_panel> -        <layout_panel name="flex" +        <layout_panel name="flex3"                  auto_resize="true"                  user_resize="true"                  bg_alpha_color="blue" @@ -46,7 +46,7 @@                  background_visible="true">              <text follows="top|left|right" halign="center" text_color="white">flex</text>          </layout_panel> -        <layout_panel name="flex" +        <layout_panel name="flex4"                  auto_resize="true"                  user_resize="true"                  bg_alpha_color="blue" @@ -56,7 +56,7 @@              <text follows="top|left|right" halign="center" text_color="white">flex</text>          </layout_panel>      </layout_stack> -    <layout_stack name="test_stack" +    <layout_stack name="test_stack1"              left_pad="5"              top="0"              width="100" @@ -71,7 +71,7 @@                  background_visible="true">              <text follows="top|left|right" halign="center" text_color="white">flex</text>          </layout_panel> -        <layout_panel name="flex" +        <layout_panel name="flex2"                  auto_resize="true"                  user_resize="true"                  visible="false" @@ -89,7 +89,7 @@                  background_visible="true">              <text follows="top|left|right" halign="center" text_color="black">fixed</text>          </layout_panel> -        <layout_panel name="fixed" +        <layout_panel name="fixed2"                  auto_resize="false"                  user_resize="true"                  height="50" @@ -98,7 +98,7 @@                  background_visible="true">              <text follows="top|left|right" halign="center" text_color="black">fixed</text>          </layout_panel> -        <layout_panel name="flex" +        <layout_panel name="flex3"                  auto_resize="true"                  user_resize="true"                  bg_alpha_color="blue" @@ -106,7 +106,7 @@                  background_visible="true">              <text follows="top|left|right" halign="center" text_color="white">flex</text>          </layout_panel> -        <layout_panel name="flex" +        <layout_panel name="flex4"                  auto_resize="true"                  user_resize="true"                  bg_alpha_color="blue" @@ -114,7 +114,7 @@                  background_visible="true">              <text follows="top|left|right" halign="center" text_color="white">flex</text>          </layout_panel> -        <layout_panel name="flex" +        <layout_panel name="flex5"                  auto_resize="true"                  user_resize="true"                  bg_alpha_color="blue" @@ -122,7 +122,7 @@                  background_visible="true">              <text follows="top|left|right" halign="center" text_color="white">flex</text>          </layout_panel> -        <layout_panel name="flex" +        <layout_panel name="flex6"                  auto_resize="true"                  user_resize="true"                  bg_alpha_color="blue" @@ -132,7 +132,7 @@              <text follows="top|left|right" halign="center" text_color="white">flex</text>          </layout_panel>      </layout_stack> -    <layout_stack name="test_stack" +    <layout_stack name="test_stack2"              left_pad="5"              top="0"              width="100" @@ -155,7 +155,7 @@                  background_visible="true">              <text follows="top|left|right" halign="center" text_color="black">fixed</text>          </layout_panel> -        <layout_panel name="flex" +        <layout_panel name="flex2"                  auto_resize="true"                  user_resize="true"                  bg_alpha_color="blue" @@ -164,7 +164,7 @@              <text follows="top|left|right" halign="center" text_color="white">flex</text>          </layout_panel>      </layout_stack> -    <layout_stack name="test_stack" +    <layout_stack name="test_stack3"              left_pad="5"              top="0"              width="100" @@ -179,7 +179,7 @@                  background_visible="true">              <text follows="top|left|right" halign="center" text_color="black">fixed</text>          </layout_panel> -        <layout_panel name="fixed" +        <layout_panel name="fixed2"                  auto_resize="false"                  user_resize="true"                  height="50" @@ -187,7 +187,7 @@                  background_visible="true">              <text follows="top|left|right" halign="center" text_color="black">fixed</text>          </layout_panel> -        <layout_panel name="fixed" +        <layout_panel name="fixed3"                  auto_resize="false"                  user_resize="true"                  height="50" @@ -204,7 +204,7 @@                  background_visible="true">              <text follows="top|left|right" halign="center" text_color="white">flex</text>          </layout_panel> -        <layout_panel name="flex" +        <layout_panel name="flex2"                  auto_resize="true"                  user_resize="true"                  bg_alpha_color="blue" @@ -213,7 +213,7 @@                  background_visible="true">              <text follows="top|left|right" halign="center" text_color="white">flex</text>          </layout_panel> -        <layout_panel name="flex" +        <layout_panel name="flex3"                  auto_resize="true"                  user_resize="true"                  bg_alpha_color="blue" diff --git a/indra/newview/skins/default/xui/en/floater_test_line_editor.xml b/indra/newview/skins/default/xui/en/floater_test_line_editor.xml index 2894ad2a32..2eea5c361f 100644 --- a/indra/newview/skins/default/xui/en/floater_test_line_editor.xml +++ b/indra/newview/skins/default/xui/en/floater_test_line_editor.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" @@ -75,7 +75,7 @@    <line_editor     height="20"     left_delta="0" -   name="left_pad_editor" +   name="left_pad_editor1"     text_pad_right="75"     top_pad="10"     width="200"> @@ -84,7 +84,7 @@    <line_editor     height="20"     left_delta="0" -   name="left_pad_editor" +   name="left_pad_editor2"     text_pad_left="25"     text_pad_right="75"     top_pad="10" diff --git a/indra/newview/skins/default/xui/en/floater_test_list_view.xml b/indra/newview/skins/default/xui/en/floater_test_list_view.xml index 32ccc31dfd..9fdeeb08b4 100644 --- a/indra/newview/skins/default/xui/en/floater_test_list_view.xml +++ b/indra/newview/skins/default/xui/en/floater_test_list_view.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml b/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml index f4a50ecc96..0e54d332cd 100644 --- a/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml +++ b/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml b/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml index db14ecae83..505de80f55 100644 --- a/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml +++ b/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_test_slider.xml b/indra/newview/skins/default/xui/en/floater_test_slider.xml index 20bd555a03..d86c43b48c 100644 --- a/indra/newview/skins/default/xui/en/floater_test_slider.xml +++ b/indra/newview/skins/default/xui/en/floater_test_slider.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_test_spinner.xml b/indra/newview/skins/default/xui/en/floater_test_spinner.xml index acd49aa492..5fa0b20d4f 100644 --- a/indra/newview/skins/default/xui/en/floater_test_spinner.xml +++ b/indra/newview/skins/default/xui/en/floater_test_spinner.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_test_text_editor.xml b/indra/newview/skins/default/xui/en/floater_test_text_editor.xml index e1fefc3631..ab3b819e34 100644 --- a/indra/newview/skins/default/xui/en/floater_test_text_editor.xml +++ b/indra/newview/skins/default/xui/en/floater_test_text_editor.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" @@ -24,7 +24,7 @@     follows="top|left|bottom"     font="SansSerif"      left="10" -   name="test_text_editor" +   name="test_text_editor1"     tool_tip="text editor"     top_pad="10"     width="200"> diff --git a/indra/newview/skins/default/xui/en/floater_test_text_vertical_aligment.xml b/indra/newview/skins/default/xui/en/floater_test_text_vertical_aligment.xml index d11373ce1d..950ed192c0 100644 --- a/indra/newview/skins/default/xui/en/floater_test_text_vertical_aligment.xml +++ b/indra/newview/skins/default/xui/en/floater_test_text_vertical_aligment.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   can_minimize="false"   can_tear_off="false" diff --git a/indra/newview/skins/default/xui/en/floater_test_textbox.xml b/indra/newview/skins/default/xui/en/floater_test_textbox.xml index 1d31fbd6dc..023df69f0f 100644 --- a/indra/newview/skins/default/xui/en/floater_test_textbox.xml +++ b/indra/newview/skins/default/xui/en/floater_test_textbox.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" @@ -82,7 +82,7 @@    </text>    <text   left="10" - name="v_pad_text" + name="v_pad_text1"   height="40"   width="300"   halign="left" @@ -197,7 +197,7 @@ scroll bar gjyrrr        follows="top|left|bottom"        font="Monospace"   left_delta="0" - name="monospace_text_editor" + name="monospace_text_editor1"   tool_tip="text editor"   top_pad="10"   width="200"> diff --git a/indra/newview/skins/default/xui/en/floater_test_toolbar.xml b/indra/newview/skins/default/xui/en/floater_test_toolbar.xml index 067c1fed82..41d95c5a15 100644 --- a/indra/newview/skins/default/xui/en/floater_test_toolbar.xml +++ b/indra/newview/skins/default/xui/en/floater_test_toolbar.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_test_widgets.xml b/indra/newview/skins/default/xui/en/floater_test_widgets.xml index 10854f5a49..3271cddd52 100644 --- a/indra/newview/skins/default/xui/en/floater_test_widgets.xml +++ b/indra/newview/skins/default/xui/en/floater_test_widgets.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!-- Sample "floater" window with examples of common widgets.      Notes: @@ -300,7 +300,7 @@     layout="topleft"     width="60"     use_ellipses="true" -   name="test_text" +   name="test_text1"     tool_tip="text">      Truncated text here    </text> @@ -395,7 +395,7 @@ line to actually fit         width="250"          follows="top|left"         font.name="SansSerifSmall" -       name="test_text10" +       name="test_text101"         tool_tip="text">          SansSerifSmall.  Русский 中文 (简体)        </text> diff --git a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml index 2d3321bb2f..6bf54d5e85 100644 --- a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_minimize="false" diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index 9966fe0b56..490b516ac6 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   positioning="cascading"   legacy_header_height="18" diff --git a/indra/newview/skins/default/xui/en/floater_top_objects.xml b/indra/newview/skins/default/xui/en/floater_top_objects.xml index a8b4b84ab7..028c81a84c 100644 --- a/indra/newview/skins/default/xui/en/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/en/floater_top_objects.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_tos.xml b/indra/newview/skins/default/xui/en/floater_tos.xml index 7e172e138a..4d840ddde2 100644 --- a/indra/newview/skins/default/xui/en/floater_tos.xml +++ b/indra/newview/skins/default/xui/en/floater_tos.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_close="false" diff --git a/indra/newview/skins/default/xui/en/floater_toybox.xml b/indra/newview/skins/default/xui/en/floater_toybox.xml index bdc04a8a78..7fe9830d23 100644 --- a/indra/newview/skins/default/xui/en/floater_toybox.xml +++ b/indra/newview/skins/default/xui/en/floater_toybox.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater    can_close="true"    can_dock="false" diff --git a/indra/newview/skins/default/xui/en/floater_translation_settings.xml b/indra/newview/skins/default/xui/en/floater_translation_settings.xml index 3f3331b468..22dbd80cda 100644 --- a/indra/newview/skins/default/xui/en/floater_translation_settings.xml +++ b/indra/newview/skins/default/xui/en/floater_translation_settings.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   height="470" @@ -161,7 +161,7 @@     layout="topleft"     left="185"     length="1" -   name="google_links_text" +   name="azure_links_text"     top_pad="-262"     type="string"     width="100"> diff --git a/indra/newview/skins/default/xui/en/floater_ui_preview.xml b/indra/newview/skins/default/xui/en/floater_ui_preview.xml index eb01294831..4a523b6d1d 100644 --- a/indra/newview/skins/default/xui/en/floater_ui_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_ui_preview.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_url_entry.xml b/indra/newview/skins/default/xui/en/floater_url_entry.xml index 2dfc0fd125..769a3b0ec6 100644 --- a/indra/newview/skins/default/xui/en/floater_url_entry.xml +++ b/indra/newview/skins/default/xui/en/floater_url_entry.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_minimize="false" diff --git a/indra/newview/skins/default/xui/en/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/en/floater_voice_chat_volume.xml index 5c71fd3bc6..51809793d3 100644 --- a/indra/newview/skins/default/xui/en/floater_voice_chat_volume.xml +++ b/indra/newview/skins/default/xui/en/floater_voice_chat_volume.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="25" @@ -45,4 +45,4 @@  		name="mute_audio"  		tab_stop="false"  		width="16" /> -</floater>
\ No newline at end of file +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_voice_effect.xml b/indra/newview/skins/default/xui/en/floater_voice_effect.xml index 146c3d7e30..d037bdb813 100644 --- a/indra/newview/skins/default/xui/en/floater_voice_effect.xml +++ b/indra/newview/skins/default/xui/en/floater_voice_effect.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="27"   can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_voice_volume.xml b/indra/newview/skins/default/xui/en/floater_voice_volume.xml index 9346295d5b..4e3dc5edf1 100644 --- a/indra/newview/skins/default/xui/en/floater_voice_volume.xml +++ b/indra/newview/skins/default/xui/en/floater_voice_volume.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!--    Not can_close / no title to avoid window chrome    Single instance - only have one at a time, recycle it each spawn diff --git a/indra/newview/skins/default/xui/en/floater_web_content.xml b/indra/newview/skins/default/xui/en/floater_web_content.xml index 9a097d933b..2e1dfa00c7 100644 --- a/indra/newview/skins/default/xui/en/floater_web_content.xml +++ b/indra/newview/skins/default/xui/en/floater_web_content.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater    legacy_header_height="18"    can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_web_profile.xml b/indra/newview/skins/default/xui/en/floater_web_profile.xml index d0225f78a9..51b5336066 100644 --- a/indra/newview/skins/default/xui/en/floater_web_profile.xml +++ b/indra/newview/skins/default/xui/en/floater_web_profile.xml @@ -1,6 +1,6 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater name="floater_web_profile"           help_topic="web_profile"           width="780"           height="775" -         filename="floater_web_content.xml"/>
\ No newline at end of file +         filename="floater_web_content.xml"/> diff --git a/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml index 897d959b98..4e75b2b29c 100644 --- a/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml +++ b/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_minimize="false" diff --git a/indra/newview/skins/default/xui/en/floater_window_size.xml b/indra/newview/skins/default/xui/en/floater_window_size.xml index 115fe413f3..e5a1c0da88 100644 --- a/indra/newview/skins/default/xui/en/floater_window_size.xml +++ b/indra/newview/skins/default/xui/en/floater_window_size.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater    can_minimize="false"     can_resize="false" diff --git a/indra/newview/skins/default/xui/en/floater_world_map.xml b/indra/newview/skins/default/xui/en/floater_world_map.xml index c965a4427c..7efa81d263 100644 --- a/indra/newview/skins/default/xui/en/floater_world_map.xml +++ b/indra/newview/skins/default/xui/en/floater_world_map.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater   legacy_header_height="18"   can_resize="true" @@ -241,7 +241,7 @@       image_name="legend.tga"       layout="topleft"       mouse_opaque="true" -     name="square2" +     name="square2_auction"       left="20"       top_pad="2"       width="16" /> @@ -264,7 +264,7 @@       image_name="legend.tga"       layout="topleft"       mouse_opaque="true" -     name="square2" +     name="square2_owner"       left="20"       top_pad="-5"       width="16" /> diff --git a/indra/newview/skins/default/xui/en/fonts.xml b/indra/newview/skins/default/xui/en/fonts.xml index d88c267a95..567dd85090 100644 --- a/indra/newview/skins/default/xui/en/fonts.xml +++ b/indra/newview/skins/default/xui/en/fonts.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <fonts>    <font name="default" comment="default font files (global fallbacks)"> @@ -170,4 +170,12 @@  	     comment="Size of small font (points, or 1/72 of an inch)"  	     size="7.6"  	     /> +  <font_size name="SmallLSL" +         comment="Size of small font for LSL editor (points, or 1/72 of an inch)" +         size="7" +         /> +  <font_size name="HugeLSL" +         comment="Size of huge font for LSL editor (points, or 1/72 of an inch)" +         size="12" +         />  </fonts> diff --git a/indra/newview/skins/default/xui/en/inspect_avatar.xml b/indra/newview/skins/default/xui/en/inspect_avatar.xml index fceb9b2184..4c72bc4703 100644 --- a/indra/newview/skins/default/xui/en/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/en/inspect_avatar.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!--    Not can_close / no title to avoid window chrome    Single instance - only have one at a time, recycle it each spawn diff --git a/indra/newview/skins/default/xui/en/inspect_group.xml b/indra/newview/skins/default/xui/en/inspect_group.xml index a69585074c..c190d9610f 100644 --- a/indra/newview/skins/default/xui/en/inspect_group.xml +++ b/indra/newview/skins/default/xui/en/inspect_group.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!--    Not can_close / no title to avoid window chrome    Single instance - only have one at a time, recycle it each spawn diff --git a/indra/newview/skins/default/xui/en/inspect_object.xml b/indra/newview/skins/default/xui/en/inspect_object.xml index bfeb8fc470..efe518f2f7 100644 --- a/indra/newview/skins/default/xui/en/inspect_object.xml +++ b/indra/newview/skins/default/xui/en/inspect_object.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!--    Not can_close / no title to avoid window chrome    Single instance - only have one at a time, recycle it each spawn diff --git a/indra/newview/skins/default/xui/en/inspect_remote_object.xml b/indra/newview/skins/default/xui/en/inspect_remote_object.xml index e83257d2a0..2d0a9ccb3c 100644 --- a/indra/newview/skins/default/xui/en/inspect_remote_object.xml +++ b/indra/newview/skins/default/xui/en/inspect_remote_object.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!--    Not can_close / no title to avoid window chrome    Single instance - only have one at a time, recycle it each spawn diff --git a/indra/newview/skins/default/xui/en/inspect_toast.xml b/indra/newview/skins/default/xui/en/inspect_toast.xml index 0221397a8c..48df86804e 100644 --- a/indra/newview/skins/default/xui/en/inspect_toast.xml +++ b/indra/newview/skins/default/xui/en/inspect_toast.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!--    Not can_close / no title to avoid window chrome    Single instance - only have one at a time, recycle it each spawn diff --git a/indra/newview/skins/default/xui/en/inspector_info_ctrl.xml b/indra/newview/skins/default/xui/en/inspector_info_ctrl.xml index a7ecc39ed8..6a89468dc9 100644 --- a/indra/newview/skins/default/xui/en/inspector_info_ctrl.xml +++ b/indra/newview/skins/default/xui/en/inspector_info_ctrl.xml @@ -1,3 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <button   chrome="true"   image_selected="Info_Over" @@ -6,4 +7,4 @@   height="12"   name="inspector_info_ctrl"   width="12" /> - 
\ No newline at end of file +  diff --git a/indra/newview/skins/default/xui/en/language_settings.xml b/indra/newview/skins/default/xui/en/language_settings.xml index d418fc38e3..dd521c09d0 100644 --- a/indra/newview/skins/default/xui/en/language_settings.xml +++ b/indra/newview/skins/default/xui/en/language_settings.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!-- This file contains strings that used to be hardcoded in the source.-->  <strings> diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml index bab37c6258..a4ef4a57ce 100644 --- a/indra/newview/skins/default/xui/en/main_view.xml +++ b/indra/newview/skins/default/xui/en/main_view.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   follows="left|right|top|bottom"   height="768" diff --git a/indra/newview/skins/default/xui/en/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/en/menu_add_wearable_gear.xml index 5033ea9546..e3b248d17b 100644 --- a/indra/newview/skins/default/xui/en/menu_add_wearable_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_add_wearable_gear.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   layout="topleft"   name="Add Wearable Gear Menu"> diff --git a/indra/newview/skins/default/xui/en/menu_attachment_other.xml b/indra/newview/skins/default/xui/en/menu_attachment_other.xml index 22006c287f..d51e568c03 100644 --- a/indra/newview/skins/default/xui/en/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/en/menu_attachment_other.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!-- *NOTE: See also menu_avatar_other.xml -->  <context_menu   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_attachment_self.xml b/indra/newview/skins/default/xui/en/menu_attachment_self.xml index 8e041f8de3..d978619355 100644 --- a/indra/newview/skins/default/xui/en/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/en/menu_attachment_self.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   layout="topleft"   name="Attachment Pie"> diff --git a/indra/newview/skins/default/xui/en/menu_avatar_icon.xml b/indra/newview/skins/default/xui/en/menu_avatar_icon.xml index 9f394a4c74..0d3dd2a479 100644 --- a/indra/newview/skins/default/xui/en/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/en/menu_avatar_icon.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   height="101"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_avatar_other.xml b/indra/newview/skins/default/xui/en/menu_avatar_other.xml index 665eb9a82f..fc4ffde947 100644 --- a/indra/newview/skins/default/xui/en/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/en/menu_avatar_other.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!-- *NOTE: See also menu_attachment_other.xml -->  <context_menu   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_avatar_rendering_settings.xml b/indra/newview/skins/default/xui/en/menu_avatar_rendering_settings.xml index 1a18483418..dc9007c61d 100644 --- a/indra/newview/skins/default/xui/en/menu_avatar_rendering_settings.xml +++ b/indra/newview/skins/default/xui/en/menu_avatar_rendering_settings.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   layout="topleft"   name="Settings"> diff --git a/indra/newview/skins/default/xui/en/menu_avatar_rendering_settings_add.xml b/indra/newview/skins/default/xui/en/menu_avatar_rendering_settings_add.xml index 6e09eb5981..7eca0b51a6 100644 --- a/indra/newview/skins/default/xui/en/menu_avatar_rendering_settings_add.xml +++ b/indra/newview/skins/default/xui/en/menu_avatar_rendering_settings_add.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu        name="menu_settings_add.xml"       left="0" bottom="0" visible="false" diff --git a/indra/newview/skins/default/xui/en/menu_avatar_self.xml b/indra/newview/skins/default/xui/en/menu_avatar_self.xml index 20f3ad080b..fc8c7fea9c 100644 --- a/indra/newview/skins/default/xui/en/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/en/menu_avatar_self.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   layout="topleft"   name="Self Pie"> diff --git a/indra/newview/skins/default/xui/en/menu_cof_attachment.xml b/indra/newview/skins/default/xui/en/menu_cof_attachment.xml index 3f545c936d..23049aae06 100644 --- a/indra/newview/skins/default/xui/en/menu_cof_attachment.xml +++ b/indra/newview/skins/default/xui/en/menu_cof_attachment.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   layout="topleft"   name="COF Attachment"> diff --git a/indra/newview/skins/default/xui/en/menu_cof_body_part.xml b/indra/newview/skins/default/xui/en/menu_cof_body_part.xml index f0e8461360..157d5739e5 100644 --- a/indra/newview/skins/default/xui/en/menu_cof_body_part.xml +++ b/indra/newview/skins/default/xui/en/menu_cof_body_part.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   layout="topleft"   name="COF Body"> diff --git a/indra/newview/skins/default/xui/en/menu_cof_clothing.xml b/indra/newview/skins/default/xui/en/menu_cof_clothing.xml index 206d49e8c7..a0bd8b4bc9 100644 --- a/indra/newview/skins/default/xui/en/menu_cof_clothing.xml +++ b/indra/newview/skins/default/xui/en/menu_cof_clothing.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   layout="topleft"   name="COF Clothing"> diff --git a/indra/newview/skins/default/xui/en/menu_cof_gear.xml b/indra/newview/skins/default/xui/en/menu_cof_gear.xml index 45cf780557..a491e272cf 100644 --- a/indra/newview/skins/default/xui/en/menu_cof_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_cof_gear.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   layout="topleft"   name="Gear COF"> diff --git a/indra/newview/skins/default/xui/en/menu_conversation.xml b/indra/newview/skins/default/xui/en/menu_conversation.xml index 59e6106a28..62cdaa5886 100644 --- a/indra/newview/skins/default/xui/en/menu_conversation.xml +++ b/indra/newview/skins/default/xui/en/menu_conversation.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   bottom="806"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/en/menu_conversation_log_gear.xml index a1a3afbf68..9c803d0877 100644 --- a/indra/newview/skins/default/xui/en/menu_conversation_log_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_conversation_log_gear.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   layout="topleft"   name="Conversation Context Menu"> diff --git a/indra/newview/skins/default/xui/en/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/en/menu_conversation_log_view.xml index ce65b23971..864bec5d9a 100644 --- a/indra/newview/skins/default/xui/en/menu_conversation_log_view.xml +++ b/indra/newview/skins/default/xui/en/menu_conversation_log_view.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu       name="menu_conversation_view"       left="0" bottom="0" visible="false" diff --git a/indra/newview/skins/default/xui/en/menu_copy_paste_color.xml b/indra/newview/skins/default/xui/en/menu_copy_paste_color.xml index 4c12180daf..6605dd8eb9 100644 --- a/indra/newview/skins/default/xui/en/menu_copy_paste_color.xml +++ b/indra/newview/skins/default/xui/en/menu_copy_paste_color.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   layout="topleft"   name="Copy Paste Color Menu"> diff --git a/indra/newview/skins/default/xui/en/menu_copy_paste_features.xml b/indra/newview/skins/default/xui/en/menu_copy_paste_features.xml index 4823d74a26..6791a5ec8b 100644 --- a/indra/newview/skins/default/xui/en/menu_copy_paste_features.xml +++ b/indra/newview/skins/default/xui/en/menu_copy_paste_features.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   layout="topleft"   name="Copy Paste Features Menu"> diff --git a/indra/newview/skins/default/xui/en/menu_copy_paste_light.xml b/indra/newview/skins/default/xui/en/menu_copy_paste_light.xml index 5de23dfee3..5a0411ca27 100644 --- a/indra/newview/skins/default/xui/en/menu_copy_paste_light.xml +++ b/indra/newview/skins/default/xui/en/menu_copy_paste_light.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   layout="topleft"   name="Copy Paste Light Menu"> diff --git a/indra/newview/skins/default/xui/en/menu_copy_paste_object.xml b/indra/newview/skins/default/xui/en/menu_copy_paste_object.xml index bdc4537a9d..66cfd29ba4 100644 --- a/indra/newview/skins/default/xui/en/menu_copy_paste_object.xml +++ b/indra/newview/skins/default/xui/en/menu_copy_paste_object.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   layout="topleft"   name="Copy Paste Object Menu"> diff --git a/indra/newview/skins/default/xui/en/menu_copy_paste_pos.xml b/indra/newview/skins/default/xui/en/menu_copy_paste_pos.xml index 3ea95b281f..6c68994a80 100644 --- a/indra/newview/skins/default/xui/en/menu_copy_paste_pos.xml +++ b/indra/newview/skins/default/xui/en/menu_copy_paste_pos.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   layout="topleft"   name="Copy Paste Position Menu"> diff --git a/indra/newview/skins/default/xui/en/menu_copy_paste_rot.xml b/indra/newview/skins/default/xui/en/menu_copy_paste_rot.xml index 06ce80f897..400af57371 100644 --- a/indra/newview/skins/default/xui/en/menu_copy_paste_rot.xml +++ b/indra/newview/skins/default/xui/en/menu_copy_paste_rot.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   layout="topleft"   name="Copy Paste Rotation Menu"> diff --git a/indra/newview/skins/default/xui/en/menu_copy_paste_size.xml b/indra/newview/skins/default/xui/en/menu_copy_paste_size.xml index 7082a0e65b..3547f3b367 100644 --- a/indra/newview/skins/default/xui/en/menu_copy_paste_size.xml +++ b/indra/newview/skins/default/xui/en/menu_copy_paste_size.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   layout="topleft"   name="Copy Paste Size Menu"> diff --git a/indra/newview/skins/default/xui/en/menu_copy_paste_texture.xml b/indra/newview/skins/default/xui/en/menu_copy_paste_texture.xml index f358affc23..a6d8fc1c9c 100644 --- a/indra/newview/skins/default/xui/en/menu_copy_paste_texture.xml +++ b/indra/newview/skins/default/xui/en/menu_copy_paste_texture.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   layout="topleft"   name="Copy Paste Texture Menu"> diff --git a/indra/newview/skins/default/xui/en/menu_edit.xml b/indra/newview/skins/default/xui/en/menu_edit.xml index 6f83756f83..8406c744e2 100644 --- a/indra/newview/skins/default/xui/en/menu_edit.xml +++ b/indra/newview/skins/default/xui/en/menu_edit.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <menu create_jump_keys="true"        label="Edit"        name="Edit" @@ -81,4 +81,4 @@      <menu_item_call.on_enable       function="Edit.EnableDeselect" />    </menu_item_call> -</menu>
\ No newline at end of file +</menu> diff --git a/indra/newview/skins/default/xui/en/menu_favorites.xml b/indra/newview/skins/default/xui/en/menu_favorites.xml index 0eab7c451b..6345394b46 100644 --- a/indra/newview/skins/default/xui/en/menu_favorites.xml +++ b/indra/newview/skins/default/xui/en/menu_favorites.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <menu   bottom="825"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_gallery_inventory.xml b/indra/newview/skins/default/xui/en/menu_gallery_inventory.xml index d82c453e5f..41e0183370 100644 --- a/indra/newview/skins/default/xui/en/menu_gallery_inventory.xml +++ b/indra/newview/skins/default/xui/en/menu_gallery_inventory.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu      layout="topleft"      name="Gallery"> diff --git a/indra/newview/skins/default/xui/en/menu_gallery_outfit_tab.xml b/indra/newview/skins/default/xui/en/menu_gallery_outfit_tab.xml index 0ca505dd5d..25d64ba74d 100755 --- a/indra/newview/skins/default/xui/en/menu_gallery_outfit_tab.xml +++ b/indra/newview/skins/default/xui/en/menu_gallery_outfit_tab.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu      layout="topleft"      name="Outfit"> diff --git a/indra/newview/skins/default/xui/en/menu_gesture_gear.xml b/indra/newview/skins/default/xui/en/menu_gesture_gear.xml index 359c093eff..86065210d5 100644 --- a/indra/newview/skins/default/xui/en/menu_gesture_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_gesture_gear.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   layout="topleft"   mouse_opaque="false" diff --git a/indra/newview/skins/default/xui/en/menu_group_plus.xml b/indra/newview/skins/default/xui/en/menu_group_plus.xml index eca9e7f3c9..71c7574383 100644 --- a/indra/newview/skins/default/xui/en/menu_group_plus.xml +++ b/indra/newview/skins/default/xui/en/menu_group_plus.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu name="menu_group_plus"       left="0" bottom="0" visible="false"       mouse_opaque="false"> diff --git a/indra/newview/skins/default/xui/en/menu_hide_navbar.xml b/indra/newview/skins/default/xui/en/menu_hide_navbar.xml index b517fd7957..22899af15d 100644 --- a/indra/newview/skins/default/xui/en/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/en/menu_hide_navbar.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <menu   height="201"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_im_conversation.xml b/indra/newview/skins/default/xui/en/menu_im_conversation.xml index b38fae4404..09a19b9249 100644 --- a/indra/newview/skins/default/xui/en/menu_im_conversation.xml +++ b/indra/newview/skins/default/xui/en/menu_im_conversation.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   layout="topleft"   name="Conversation Gear Menu"> diff --git a/indra/newview/skins/default/xui/en/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/en/menu_im_session_showmodes.xml index b0adca0e0e..94022ef1e3 100644 --- a/indra/newview/skins/default/xui/en/menu_im_session_showmodes.xml +++ b/indra/newview/skins/default/xui/en/menu_im_session_showmodes.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   name="menu_modes"   left="0" bottom="0" visible="false" diff --git a/indra/newview/skins/default/xui/en/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/en/menu_imchiclet_adhoc.xml index eb5e31b57d..19fca92818 100644 --- a/indra/newview/skins/default/xui/en/menu_imchiclet_adhoc.xml +++ b/indra/newview/skins/default/xui/en/menu_imchiclet_adhoc.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <menu   height="101"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/en/menu_imchiclet_group.xml index 8cbe62cfb0..a5d656d340 100644 --- a/indra/newview/skins/default/xui/en/menu_imchiclet_group.xml +++ b/indra/newview/skins/default/xui/en/menu_imchiclet_group.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <menu   height="101"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/en/menu_imchiclet_p2p.xml index 038b8328cb..a6dda4e7fe 100644 --- a/indra/newview/skins/default/xui/en/menu_imchiclet_p2p.xml +++ b/indra/newview/skins/default/xui/en/menu_imchiclet_p2p.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <menu   height="101"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_object_gear.xml index 2c420aa1e3..9e1fde9513 100644 --- a/indra/newview/skins/default/xui/en/menu_inspect_object_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_inspect_object_gear.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu     create_jump_keys="true"     layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/en/menu_inv_offer_chiclet.xml index 45a0a6635b..391d8f4db7 100644 --- a/indra/newview/skins/default/xui/en/menu_inv_offer_chiclet.xml +++ b/indra/newview/skins/default/xui/en/menu_inv_offer_chiclet.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <menu   height="101"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml index 0295ef8ccd..488b39de06 100644 --- a/indra/newview/skins/default/xui/en/menu_inventory.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <menu   bottom="825"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_inventory_add.xml b/indra/newview/skins/default/xui/en/menu_inventory_add.xml index 284dd8d9fc..13064db712 100644 --- a/indra/newview/skins/default/xui/en/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory_add.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <menu   layout="topleft"   left="0" diff --git a/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml index 2c630880c2..e249acaccd 100644 --- a/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   bottom="806"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_inventory_search_visibility.xml b/indra/newview/skins/default/xui/en/menu_inventory_search_visibility.xml index 8e34f52f3a..b95a8ad676 100644 --- a/indra/newview/skins/default/xui/en/menu_inventory_search_visibility.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory_search_visibility.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   bottom="806"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_inventory_view_default.xml b/indra/newview/skins/default/xui/en/menu_inventory_view_default.xml index c7f9822e41..33cf01493d 100644 --- a/indra/newview/skins/default/xui/en/menu_inventory_view_default.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory_view_default.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   bottom="806"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_land.xml b/indra/newview/skins/default/xui/en/menu_land.xml index 1ce0d65b3e..76eecc9391 100644 --- a/indra/newview/skins/default/xui/en/menu_land.xml +++ b/indra/newview/skins/default/xui/en/menu_land.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   layout="topleft"   name="Land Pie"> diff --git a/indra/newview/skins/default/xui/en/menu_landmark.xml b/indra/newview/skins/default/xui/en/menu_landmark.xml index 93b6db222a..e879d7b6fa 100644 --- a/indra/newview/skins/default/xui/en/menu_landmark.xml +++ b/indra/newview/skins/default/xui/en/menu_landmark.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   height="201"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml index 96fac1c6e8..1c840c6b83 100644 --- a/indra/newview/skins/default/xui/en/menu_login.xml +++ b/indra/newview/skins/default/xui/en/menu_login.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <menu_bar   follows="left|top"   height="18" diff --git a/indra/newview/skins/default/xui/en/menu_lsl_font_size.xml b/indra/newview/skins/default/xui/en/menu_lsl_font_size.xml new file mode 100644 index 0000000000..39a2bc511c --- /dev/null +++ b/indra/newview/skins/default/xui/en/menu_lsl_font_size.xml @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<toggleable_menu + bottom="806" + layout="topleft" + left="0" + mouse_opaque="false" + name="menu_font_size" + visible="false"> +  <menu_item_check +   label="Small" +   layout="topleft" +   name="font_small"> +    <on_click +     function="FontSize.Set" +     parameter="SmallLSL" /> +    <on_check +     function="FontSize.Check" +     parameter="SmallLSL" /> +  </menu_item_check> +  <menu_item_check +   label="Default" +   layout="topleft" +   name="font_monospace"> +    <on_click +     function="FontSize.Set" +     parameter="Monospace" /> +    <on_check +     function="FontSize.Check" +     parameter="Monospace" /> +    </menu_item_check> +  <menu_item_check +   label="Medium" +   layout="topleft" +   name="font_medium"> +    <on_click +     function="FontSize.Set" +     parameter="Medium" /> +    <on_check +     function="FontSize.Check" +     parameter="Medium" /> +  </menu_item_check> +  <menu_item_check +   label="Large" +   layout="topleft" +   name="font_large"> +    <on_click +     function="FontSize.Set" +     parameter="Large" /> +    <on_check +     function="FontSize.Check" +     parameter="Large" /> +  </menu_item_check> +  <menu_item_check +   label="Huge" +   layout="topleft" +   name="font_huge"> +    <on_click +     function="FontSize.Set" +     parameter="HugeLSL" /> +    <on_check +     function="FontSize.Check" +     parameter="HugeLSL" /> +  </menu_item_check> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/en/menu_marketplace_view.xml b/indra/newview/skins/default/xui/en/menu_marketplace_view.xml index 4b3bb8ee1c..84395da903 100644 --- a/indra/newview/skins/default/xui/en/menu_marketplace_view.xml +++ b/indra/newview/skins/default/xui/en/menu_marketplace_view.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   name="menu_marketplace_sort"   left="0" bottom="0" visible="false" diff --git a/indra/newview/skins/default/xui/en/menu_media_ctrl.xml b/indra/newview/skins/default/xui/en/menu_media_ctrl.xml index 960da4bd7a..f9864637a0 100644 --- a/indra/newview/skins/default/xui/en/menu_media_ctrl.xml +++ b/indra/newview/skins/default/xui/en/menu_media_ctrl.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   name="media ctrl context menu">    <menu_item_call diff --git a/indra/newview/skins/default/xui/en/menu_mini_map.xml b/indra/newview/skins/default/xui/en/menu_mini_map.xml index 2715c916d4..7d16f19e9a 100644 --- a/indra/newview/skins/default/xui/en/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/en/menu_mini_map.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <menu   height="101"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/en/menu_model_import_gear_default.xml index 2650903f88..5bdcbc567a 100644 --- a/indra/newview/skins/default/xui/en/menu_model_import_gear_default.xml +++ b/indra/newview/skins/default/xui/en/menu_model_import_gear_default.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   bottom="806"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_mute_particle.xml b/indra/newview/skins/default/xui/en/menu_mute_particle.xml index a4261bf39e..fe5233c3a3 100644 --- a/indra/newview/skins/default/xui/en/menu_mute_particle.xml +++ b/indra/newview/skins/default/xui/en/menu_mute_particle.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!-- *NOTE: See also menu_attachment_other.xml -->  <context_menu   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_navbar.xml b/indra/newview/skins/default/xui/en/menu_navbar.xml index b71b866c4b..e15bb2b5ba 100644 --- a/indra/newview/skins/default/xui/en/menu_navbar.xml +++ b/indra/newview/skins/default/xui/en/menu_navbar.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <menu   height="201"   layout="topleft" @@ -39,7 +39,7 @@           parameter="landmark" />      </menu_item_call>      <menu_item_separator -     name="Separator" /> +     name="Separator1" />      <menu_item_call       label="Cut"       name="Cut"> diff --git a/indra/newview/skins/default/xui/en/menu_nearby_chat.xml b/indra/newview/skins/default/xui/en/menu_nearby_chat.xml index ff89e20ea5..c201b49229 100644 --- a/indra/newview/skins/default/xui/en/menu_nearby_chat.xml +++ b/indra/newview/skins/default/xui/en/menu_nearby_chat.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <menu bottom="100" color="MenuDefaultBgColor" drop_shadow="true" height="101" left="100"       mouse_opaque="false" name="NearBy Chat Menu" opaque="true" width="128" visible="false">  	<menu_item_call bottom_delta="-18" height="18" label="Show Nearby People..." left="0" mouse_opaque="true" diff --git a/indra/newview/skins/default/xui/en/menu_notification_well_button.xml b/indra/newview/skins/default/xui/en/menu_notification_well_button.xml index 263ac40f4e..0f5ba81171 100644 --- a/indra/newview/skins/default/xui/en/menu_notification_well_button.xml +++ b/indra/newview/skins/default/xui/en/menu_notification_well_button.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   layout="topleft"   name="Notification Well Button Context Menu"> diff --git a/indra/newview/skins/default/xui/en/menu_object.xml b/indra/newview/skins/default/xui/en/menu_object.xml index 5507c9f3a1..cbd38b1db8 100644 --- a/indra/newview/skins/default/xui/en/menu_object.xml +++ b/indra/newview/skins/default/xui/en/menu_object.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu      layout="topleft"      name="Object Pie"> diff --git a/indra/newview/skins/default/xui/en/menu_object_icon.xml b/indra/newview/skins/default/xui/en/menu_object_icon.xml index 5137aea72a..f3e520700b 100644 --- a/indra/newview/skins/default/xui/en/menu_object_icon.xml +++ b/indra/newview/skins/default/xui/en/menu_object_icon.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <menu   height="101"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_outfit_gear.xml b/indra/newview/skins/default/xui/en/menu_outfit_gear.xml index e216962d12..85eb941e31 100644 --- a/indra/newview/skins/default/xui/en/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_outfit_gear.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   layout="topleft"   visible="false" diff --git a/indra/newview/skins/default/xui/en/menu_outfit_tab.xml b/indra/newview/skins/default/xui/en/menu_outfit_tab.xml index 8c8bb29baf..ae5fae864d 100644 --- a/indra/newview/skins/default/xui/en/menu_outfit_tab.xml +++ b/indra/newview/skins/default/xui/en/menu_outfit_tab.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   layout="topleft"   name="Outfit"> diff --git a/indra/newview/skins/default/xui/en/menu_participant_list.xml b/indra/newview/skins/default/xui/en/menu_participant_list.xml index 2c32d9d303..caf566859e 100644 --- a/indra/newview/skins/default/xui/en/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/en/menu_participant_list.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   layout="topleft"   name="Participant List Context Menu"> diff --git a/indra/newview/skins/default/xui/en/menu_participant_view.xml b/indra/newview/skins/default/xui/en/menu_participant_view.xml index b9750284cd..7591e6e02f 100644 --- a/indra/newview/skins/default/xui/en/menu_participant_view.xml +++ b/indra/newview/skins/default/xui/en/menu_participant_view.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   layout="topleft"   name="participant_manu_view"> diff --git a/indra/newview/skins/default/xui/en/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/en/menu_people_blocked_gear.xml index 5e16707340..ddf7572e56 100644 --- a/indra/newview/skins/default/xui/en/menu_people_blocked_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_people_blocked_gear.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu        name="menu_blocked_gear"       left="0" bottom="0" visible="false" diff --git a/indra/newview/skins/default/xui/en/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/en/menu_people_blocked_plus.xml index 0c7155667e..27e2431ce6 100644 --- a/indra/newview/skins/default/xui/en/menu_people_blocked_plus.xml +++ b/indra/newview/skins/default/xui/en/menu_people_blocked_plus.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu        name="menu_blocked_plus"       left="0" bottom="0" visible="false" diff --git a/indra/newview/skins/default/xui/en/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/en/menu_people_blocked_view.xml index 2efb70ee37..d9808401df 100644 --- a/indra/newview/skins/default/xui/en/menu_people_blocked_view.xml +++ b/indra/newview/skins/default/xui/en/menu_people_blocked_view.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu        name="menu_blocked_view"       left="0" bottom="0" visible="false" diff --git a/indra/newview/skins/default/xui/en/menu_people_friends_view.xml b/indra/newview/skins/default/xui/en/menu_people_friends_view.xml index b5a4b87acd..2b71bd123f 100644 --- a/indra/newview/skins/default/xui/en/menu_people_friends_view.xml +++ b/indra/newview/skins/default/xui/en/menu_people_friends_view.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu       name="menu_group_plus"       left="0" bottom="0" visible="false" diff --git a/indra/newview/skins/default/xui/en/menu_people_groups.xml b/indra/newview/skins/default/xui/en/menu_people_groups.xml index 1e0364b84e..434a11d495 100644 --- a/indra/newview/skins/default/xui/en/menu_people_groups.xml +++ b/indra/newview/skins/default/xui/en/menu_people_groups.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu name="menu_group_plus"   left="0" bottom="0" visible="false"   mouse_opaque="false" opaque="true" color="MenuDefaultBgColor"> diff --git a/indra/newview/skins/default/xui/en/menu_people_groups_view.xml b/indra/newview/skins/default/xui/en/menu_people_groups_view.xml index 73f79f1e70..e0c199bc27 100644 --- a/indra/newview/skins/default/xui/en/menu_people_groups_view.xml +++ b/indra/newview/skins/default/xui/en/menu_people_groups_view.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu        name="menu_group_plus"       left="0" bottom="0" visible="false" diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby.xml b/indra/newview/skins/default/xui/en/menu_people_nearby.xml index 425de6cab8..7bd2c845a6 100644 --- a/indra/newview/skins/default/xui/en/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/en/menu_people_nearby.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   layout="topleft"   name="Nearby People Context Menu"> diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml index 5f973088fd..63185b537c 100644 --- a/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml +++ b/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   layout="topleft"   name="Multi-Selected People Context Menu"> diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/en/menu_people_nearby_view.xml index 0f7c6a2aa5..d654c95553 100644 --- a/indra/newview/skins/default/xui/en/menu_people_nearby_view.xml +++ b/indra/newview/skins/default/xui/en/menu_people_nearby_view.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   name="menu_group_plus"   left="0" bottom="0" visible="false" diff --git a/indra/newview/skins/default/xui/en/menu_people_recent_view.xml b/indra/newview/skins/default/xui/en/menu_people_recent_view.xml index 1dbc90dd2b..dd351d5205 100644 --- a/indra/newview/skins/default/xui/en/menu_people_recent_view.xml +++ b/indra/newview/skins/default/xui/en/menu_people_recent_view.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu        name="menu_group_plus"       left="0" bottom="0" visible="false" diff --git a/indra/newview/skins/default/xui/en/menu_picks.xml b/indra/newview/skins/default/xui/en/menu_picks.xml index a408e6136c..9701e78467 100644 --- a/indra/newview/skins/default/xui/en/menu_picks.xml +++ b/indra/newview/skins/default/xui/en/menu_picks.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   layout="topleft"   name="Picks"> diff --git a/indra/newview/skins/default/xui/en/menu_picks_plus.xml b/indra/newview/skins/default/xui/en/menu_picks_plus.xml index f3b207e36c..b35df52ae7 100644 --- a/indra/newview/skins/default/xui/en/menu_picks_plus.xml +++ b/indra/newview/skins/default/xui/en/menu_picks_plus.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   height="201"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_place.xml b/indra/newview/skins/default/xui/en/menu_place.xml index 288811d2f6..34943d807e 100644 --- a/indra/newview/skins/default/xui/en/menu_place.xml +++ b/indra/newview/skins/default/xui/en/menu_place.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   height="201"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_place_add_button.xml b/indra/newview/skins/default/xui/en/menu_place_add_button.xml index ad49f7c3a8..9a6f9c4956 100644 --- a/indra/newview/skins/default/xui/en/menu_place_add_button.xml +++ b/indra/newview/skins/default/xui/en/menu_place_add_button.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   layout="topleft"   left="0" diff --git a/indra/newview/skins/default/xui/en/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/en/menu_places_gear_folder.xml index e9ada52a8f..81ad2c8340 100644 --- a/indra/newview/skins/default/xui/en/menu_places_gear_folder.xml +++ b/indra/newview/skins/default/xui/en/menu_places_gear_folder.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   bottom="806"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/en/menu_places_gear_landmark.xml index c89b498ddf..a89a36de86 100644 --- a/indra/newview/skins/default/xui/en/menu_places_gear_landmark.xml +++ b/indra/newview/skins/default/xui/en/menu_places_gear_landmark.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   bottom="806"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_places_gear_sorting.xml b/indra/newview/skins/default/xui/en/menu_places_gear_sorting.xml index 4193a72e2e..6abefc9bb6 100644 --- a/indra/newview/skins/default/xui/en/menu_places_gear_sorting.xml +++ b/indra/newview/skins/default/xui/en/menu_places_gear_sorting.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   layout="topleft"   left="0" diff --git a/indra/newview/skins/default/xui/en/menu_profile_other.xml b/indra/newview/skins/default/xui/en/menu_profile_other.xml index 4db4d0922b..101ae33778 100644 --- a/indra/newview/skins/default/xui/en/menu_profile_other.xml +++ b/indra/newview/skins/default/xui/en/menu_profile_other.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   layout="topleft"   name="Avatar Profile Menu"> diff --git a/indra/newview/skins/default/xui/en/menu_profile_overflow.xml b/indra/newview/skins/default/xui/en/menu_profile_overflow.xml index b0b7b554b0..5a9b8e41f7 100644 --- a/indra/newview/skins/default/xui/en/menu_profile_overflow.xml +++ b/indra/newview/skins/default/xui/en/menu_profile_overflow.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   height="50"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_profile_self.xml b/indra/newview/skins/default/xui/en/menu_profile_self.xml index d0bd4000f8..1b21c7ae61 100644 --- a/indra/newview/skins/default/xui/en/menu_profile_self.xml +++ b/indra/newview/skins/default/xui/en/menu_profile_self.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   layout="topleft"   name="Avatar Profile Menu Self"> diff --git a/indra/newview/skins/default/xui/en/menu_save_outfit.xml b/indra/newview/skins/default/xui/en/menu_save_outfit.xml index 6285bf7417..38f21e8caa 100644 --- a/indra/newview/skins/default/xui/en/menu_save_outfit.xml +++ b/indra/newview/skins/default/xui/en/menu_save_outfit.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   height="201"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_save_settings.xml b/indra/newview/skins/default/xui/en/menu_save_settings.xml index 84dacaa8b8..9f88c50011 100644 --- a/indra/newview/skins/default/xui/en/menu_save_settings.xml +++ b/indra/newview/skins/default/xui/en/menu_save_settings.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu          height="602"          layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_script_chiclet.xml b/indra/newview/skins/default/xui/en/menu_script_chiclet.xml index 49e52ebb8d..7949618ad3 100644 --- a/indra/newview/skins/default/xui/en/menu_script_chiclet.xml +++ b/indra/newview/skins/default/xui/en/menu_script_chiclet.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <menu   height="101"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_settings_add.xml b/indra/newview/skins/default/xui/en/menu_settings_add.xml index a4782cfdc3..21d70b8515 100644 --- a/indra/newview/skins/default/xui/en/menu_settings_add.xml +++ b/indra/newview/skins/default/xui/en/menu_settings_add.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu          layout="topleft"          mouse_opaque="false" @@ -34,4 +34,4 @@          <menu_item_call.on_enable                  function="MyEnvironments.EnvironmentEnabled" />      </menu_item_call> -</toggleable_menu>
\ No newline at end of file +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/en/menu_settings_gear.xml b/indra/newview/skins/default/xui/en/menu_settings_gear.xml index ea8e328407..57f4aa8655 100644 --- a/indra/newview/skins/default/xui/en/menu_settings_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_settings_gear.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu          layout="topleft"          mouse_opaque="false" @@ -49,7 +49,7 @@      </menu_item_call>      <menu_item_separator              layout="topleft"  -            name="Separator" /> +            name="Separator1" />      <menu_item_call              label="Copy"              layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_slurl.xml b/indra/newview/skins/default/xui/en/menu_slurl.xml index ee37d49946..f32f6885f0 100644 --- a/indra/newview/skins/default/xui/en/menu_slurl.xml +++ b/indra/newview/skins/default/xui/en/menu_slurl.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <menu   height="101"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/en/menu_teleport_history_gear.xml index c11d668698..0f361d375a 100644 --- a/indra/newview/skins/default/xui/en/menu_teleport_history_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_teleport_history_gear.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   name="Teleport History Gear Context Menu"   left="0" diff --git a/indra/newview/skins/default/xui/en/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/en/menu_teleport_history_item.xml index 153e5a70a9..910a0adc28 100644 --- a/indra/newview/skins/default/xui/en/menu_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/en/menu_teleport_history_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   name="Teleport History Item Menu"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/en/menu_teleport_history_tab.xml index ecc1d8a954..96216be017 100644 --- a/indra/newview/skins/default/xui/en/menu_teleport_history_tab.xml +++ b/indra/newview/skins/default/xui/en/menu_teleport_history_tab.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   layout="topleft"   name="Teleport History Item Context Menu"> diff --git a/indra/newview/skins/default/xui/en/menu_text_editor.xml b/indra/newview/skins/default/xui/en/menu_text_editor.xml index 70b40dd89b..48657a6435 100644 --- a/indra/newview/skins/default/xui/en/menu_text_editor.xml +++ b/indra/newview/skins/default/xui/en/menu_text_editor.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   name="Text editor context menu">    <menu_item_call diff --git a/indra/newview/skins/default/xui/en/menu_toolbars.xml b/indra/newview/skins/default/xui/en/menu_toolbars.xml index fbe40a7244..aaf88a39eb 100644 --- a/indra/newview/skins/default/xui/en/menu_toolbars.xml +++ b/indra/newview/skins/default/xui/en/menu_toolbars.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu        layout="topleft"        name="Toolbars Popup" diff --git a/indra/newview/skins/default/xui/en/menu_topinfobar.xml b/indra/newview/skins/default/xui/en/menu_topinfobar.xml index cbe249ed4d..eaa8aaee51 100644 --- a/indra/newview/skins/default/xui/en/menu_topinfobar.xml +++ b/indra/newview/skins/default/xui/en/menu_topinfobar.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <menu   height="201"   layout="topleft" @@ -40,7 +40,7 @@           parameter="landmark" />      </menu_item_call>      <menu_item_separator -     name="Separator" /> +     name="Separator1" />      <menu_item_call       label="Copy"       name="Copy"> diff --git a/indra/newview/skins/default/xui/en/menu_url_agent.xml b/indra/newview/skins/default/xui/en/menu_url_agent.xml index 5ca8be2123..cbc6879f99 100644 --- a/indra/newview/skins/default/xui/en/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/en/menu_url_agent.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   layout="topleft"   name="Url Popup">   diff --git a/indra/newview/skins/default/xui/en/menu_url_email.xml b/indra/newview/skins/default/xui/en/menu_url_email.xml index 6467fe5c90..d513e51d81 100644 --- a/indra/newview/skins/default/xui/en/menu_url_email.xml +++ b/indra/newview/skins/default/xui/en/menu_url_email.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   layout="topleft"   name="Email Popup"> diff --git a/indra/newview/skins/default/xui/en/menu_url_experience.xml b/indra/newview/skins/default/xui/en/menu_url_experience.xml index f4d50e1603..bdc8915682 100644 --- a/indra/newview/skins/default/xui/en/menu_url_experience.xml +++ b/indra/newview/skins/default/xui/en/menu_url_experience.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   layout="topleft"   name="Url Popup"> diff --git a/indra/newview/skins/default/xui/en/menu_url_group.xml b/indra/newview/skins/default/xui/en/menu_url_group.xml index 2cb125ce09..490576cd04 100644 --- a/indra/newview/skins/default/xui/en/menu_url_group.xml +++ b/indra/newview/skins/default/xui/en/menu_url_group.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   layout="topleft"   name="Url Popup"> diff --git a/indra/newview/skins/default/xui/en/menu_url_http.xml b/indra/newview/skins/default/xui/en/menu_url_http.xml index 7a4b1e619b..350e21b44f 100644 --- a/indra/newview/skins/default/xui/en/menu_url_http.xml +++ b/indra/newview/skins/default/xui/en/menu_url_http.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   layout="topleft"   name="Url Popup"> diff --git a/indra/newview/skins/default/xui/en/menu_url_inventory.xml b/indra/newview/skins/default/xui/en/menu_url_inventory.xml index cf9d1d5881..7d46aa7d37 100644 --- a/indra/newview/skins/default/xui/en/menu_url_inventory.xml +++ b/indra/newview/skins/default/xui/en/menu_url_inventory.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   layout="topleft"   name="Url Popup"> diff --git a/indra/newview/skins/default/xui/en/menu_url_map.xml b/indra/newview/skins/default/xui/en/menu_url_map.xml index 2ca9e3b3fe..6627c907bd 100644 --- a/indra/newview/skins/default/xui/en/menu_url_map.xml +++ b/indra/newview/skins/default/xui/en/menu_url_map.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   layout="topleft"   name="Url Popup"> diff --git a/indra/newview/skins/default/xui/en/menu_url_objectim.xml b/indra/newview/skins/default/xui/en/menu_url_objectim.xml index 41d40b389a..1874c01f8d 100644 --- a/indra/newview/skins/default/xui/en/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/en/menu_url_objectim.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   layout="topleft"   name="Url Popup"> diff --git a/indra/newview/skins/default/xui/en/menu_url_parcel.xml b/indra/newview/skins/default/xui/en/menu_url_parcel.xml index f477c310fb..e0f1fcf9c3 100644 --- a/indra/newview/skins/default/xui/en/menu_url_parcel.xml +++ b/indra/newview/skins/default/xui/en/menu_url_parcel.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   layout="topleft"   name="Url Popup"> diff --git a/indra/newview/skins/default/xui/en/menu_url_slapp.xml b/indra/newview/skins/default/xui/en/menu_url_slapp.xml index 6d1060b633..aab84a63ef 100644 --- a/indra/newview/skins/default/xui/en/menu_url_slapp.xml +++ b/indra/newview/skins/default/xui/en/menu_url_slapp.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   layout="topleft"   name="Url Popup"> diff --git a/indra/newview/skins/default/xui/en/menu_url_slurl.xml b/indra/newview/skins/default/xui/en/menu_url_slurl.xml index 98abc206a5..fb3cfbc116 100644 --- a/indra/newview/skins/default/xui/en/menu_url_slurl.xml +++ b/indra/newview/skins/default/xui/en/menu_url_slurl.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   layout="topleft"   name="Url Popup"> diff --git a/indra/newview/skins/default/xui/en/menu_url_teleport.xml b/indra/newview/skins/default/xui/en/menu_url_teleport.xml index 289e32bcf4..3c4ec4ae4a 100644 --- a/indra/newview/skins/default/xui/en/menu_url_teleport.xml +++ b/indra/newview/skins/default/xui/en/menu_url_teleport.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   layout="topleft"   name="Url Popup"> diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 660f4b62c7..910c2a969c 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <menu_bar   bg_visible="false"   follows="left|top|right" @@ -64,6 +64,14 @@           function="Floater.ToggleOrBringToFront"           parameter="camera" />        </menu_item_call> +      <menu_item_call +       label="Notifications..." +       name="Notifications" +       shortcut="alt|shift|N"> +        <menu_item_call.on_click +         function="Floater.ToggleOrBringToFront" +         parameter="notification_well_window" /> +      </menu_item_call>        <menu_item_separator/>        <menu_item_check @@ -487,7 +495,7 @@       name="Help with avatars">          <menu_item_call.on_click              function="Advanced.ShowURL" -            parameter="https://community.secondlife.com/search/?type=cms_records3&tags=avatar&nodes=30&search_and_or=or"/> +            parameter="https://community.secondlife.com/knowledgebase/english/controlling-your-avatars-appearance-r216/"/>        </menu_item_call>      </menu>      <menu @@ -2747,6 +2755,14 @@ function="World.EnvPreset"                   function="Advanced.ForceErrorSoftwareException" />              </menu_item_call>              <menu_item_call +             label="Force OS Exception" +             name="Force OS Exception"> +                <menu_item_call.on_click +                 function="Advanced.ForceErrorOSException" /> +                <menu_item_call.on_visible +                 function="Advanced.EnableErrorOSException" /> +            </menu_item_call>             +            <menu_item_call               label="Force a Crash in a Coroutine"               name="Force a Crash in a Coroutine">                  <menu_item_call.on_click diff --git a/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml index 20c81c983b..ee77ef23f0 100644 --- a/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   name="Outfit Wearable Context Menu">      <menu_item_call diff --git a/indra/newview/skins/default/xui/en/menu_wearing_gear.xml b/indra/newview/skins/default/xui/en/menu_wearing_gear.xml index 57b20dfda9..eacc5ab365 100644 --- a/indra/newview/skins/default/xui/en/menu_wearing_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_wearing_gear.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu   layout="topleft"   visible="false" diff --git a/indra/newview/skins/default/xui/en/menu_wearing_tab.xml b/indra/newview/skins/default/xui/en/menu_wearing_tab.xml index b8e2b44884..321e8a0831 100644 --- a/indra/newview/skins/default/xui/en/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/en/menu_wearing_tab.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu   layout="topleft"   name="Wearing"> diff --git a/indra/newview/skins/default/xui/en/mime_types.xml b/indra/newview/skins/default/xui/en/mime_types.xml index a9d99dad27..238c7d380b 100644 --- a/indra/newview/skins/default/xui/en/mime_types.xml +++ b/indra/newview/skins/default/xui/en/mime_types.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <mimetypes name="default">  	<defaultlabel>  		(Unknown) diff --git a/indra/newview/skins/default/xui/en/mime_types_linux.xml b/indra/newview/skins/default/xui/en/mime_types_linux.xml index 7188b1e699..d0ecd0a11c 100644 --- a/indra/newview/skins/default/xui/en/mime_types_linux.xml +++ b/indra/newview/skins/default/xui/en/mime_types_linux.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <mimetypes name="default">  	<defaultlabel>  		(Unknown) diff --git a/indra/newview/skins/default/xui/en/mime_types_mac.xml b/indra/newview/skins/default/xui/en/mime_types_mac.xml index 7fa0a676dd..03ab163601 100644 --- a/indra/newview/skins/default/xui/en/mime_types_mac.xml +++ b/indra/newview/skins/default/xui/en/mime_types_mac.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <mimetypes name="default">  	<defaultlabel>  		(Unknown) diff --git a/indra/newview/skins/default/xui/en/notification_visibility.xml b/indra/newview/skins/default/xui/en/notification_visibility.xml index db292100d7..68a52a82ce 100644 --- a/indra/newview/skins/default/xui/en/notification_visibility.xml +++ b/indra/newview/skins/default/xui/en/notification_visibility.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <notification_visibility>    <hide tag="custom_skin"/>  	<show/>  diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index d642ea162c..3ca284b0fa 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -1,4 +1,5 @@ -<?xml version="1.0" ?><notifications> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<notifications>      <global name="skipnexttime">  		Don't show me this again @@ -6473,14 +6474,6 @@ Your inventory is experiencing issues. Please, contact support.    </notification>    <notification -   icon="notifytip.tga" -   name="InventoryLimitReachedAIS" -   type="notifytip"> -Your inventory is experiencing issues. Please, contact support. -  <tag>fail</tag> -  </notification> - -  <notification     icon="alertmodal.tga"     name="ConfirmClearBrowserCache"     type="alertmodal"> @@ -9254,7 +9247,7 @@ You locally updated a [RESOLUTION] baked texture for '[BODYREGION]' after [TIME]     icon="alertmodal.tga"     name="CannotUploadTexture"     type="alertmodal"> -Unable to upload texture. +Unable to upload texture: '[NAME]'  [REASON]       <tag>fail</tag>      </notification> diff --git a/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml b/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml index d74dca8b95..66c71425a2 100644 --- a/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml +++ b/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!-- *NOTE: mantipov: this xml is intended to be used inside panel_outfits_list.xml for each outfit folder-->  <!-- All accordion tabs in the My Appearance/My Outfits panel will be created from this one at runtime-->  <!-- Non of string values of controls below are visible to user. They are not need to be translated. --> diff --git a/indra/newview/skins/default/xui/en/panel_active_object_row.xml b/indra/newview/skins/default/xui/en/panel_active_object_row.xml index 656171ff96..e21a04698f 100644 --- a/indra/newview/skins/default/xui/en/panel_active_object_row.xml +++ b/indra/newview/skins/default/xui/en/panel_active_object_row.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel    name="panel_activeim_row"    layout="topleft" @@ -59,4 +59,4 @@      image_unselected="Toast_CloseBtn"      image_selected="Toast_CloseBtn"    /> -</panel>
\ No newline at end of file +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml index 54f038c24f..ca6e94397d 100644 --- a/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   follows="top|right|left"   height="24" diff --git a/indra/newview/skins/default/xui/en/panel_avatar_tag.xml b/indra/newview/skins/default/xui/en/panel_avatar_tag.xml index b779b08a63..a0b0459b0e 100644 --- a/indra/newview/skins/default/xui/en/panel_avatar_tag.xml +++ b/indra/newview/skins/default/xui/en/panel_avatar_tag.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   name="avatar_tag_notification"   top="10" diff --git a/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml index c324e24a86..6bb891db63 100644 --- a/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml +++ b/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   background_visible="true"   follows="left|top|right|bottom" diff --git a/indra/newview/skins/default/xui/en/panel_blocked_list_item.xml b/indra/newview/skins/default/xui/en/panel_blocked_list_item.xml index 752321b949..5ac0bf54de 100644 --- a/indra/newview/skins/default/xui/en/panel_blocked_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_blocked_list_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   follows="top|right|left"   height="23" @@ -68,4 +68,4 @@       top="6"       use_ellipses="true"       width="180" /> -</panel>
\ No newline at end of file +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/en/panel_body_parts_list_item.xml index 216a265164..e348306464 100644 --- a/indra/newview/skins/default/xui/en/panel_body_parts_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_body_parts_list_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   follows="top|right|left"   height="23" diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml index 1c0b205c4f..f86d7cf8d5 100644 --- a/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml +++ b/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   mouse_opaque="true"   background_visible="true" diff --git a/indra/newview/skins/default/xui/en/panel_camera_preset_item.xml b/indra/newview/skins/default/xui/en/panel_camera_preset_item.xml index 9417ab4ac2..381af3607e 100644 --- a/indra/newview/skins/default/xui/en/panel_camera_preset_item.xml +++ b/indra/newview/skins/default/xui/en/panel_camera_preset_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   follows="top|right|left"   height="20" diff --git a/indra/newview/skins/default/xui/en/panel_chat_header.xml b/indra/newview/skins/default/xui/en/panel_chat_header.xml index 5c5c718bdf..4f48911376 100644 --- a/indra/newview/skins/default/xui/en/panel_chat_header.xml +++ b/indra/newview/skins/default/xui/en/panel_chat_header.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel  	 background_visible="true"       bevel_style="in" diff --git a/indra/newview/skins/default/xui/en/panel_chat_separator.xml b/indra/newview/skins/default/xui/en/panel_chat_separator.xml index 357dbc07cc..dffd73c2aa 100644 --- a/indra/newview/skins/default/xui/en/panel_chat_separator.xml +++ b/indra/newview/skins/default/xui/en/panel_chat_separator.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   background_visible="true"   bg_alpha_color="black" diff --git a/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml index fc321fdd23..5406497930 100644 --- a/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   background_visible="false"   chrome="true" diff --git a/indra/newview/skins/default/xui/en/panel_classified_info.xml b/indra/newview/skins/default/xui/en/panel_classified_info.xml index 04a0bc800d..afd3f9410b 100644 --- a/indra/newview/skins/default/xui/en/panel_classified_info.xml +++ b/indra/newview/skins/default/xui/en/panel_classified_info.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   background_visible="true"   follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml b/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml index d1175a9fe1..8bd6bc066c 100644 --- a/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   bevel_style="none"   follows="top|left|right" diff --git a/indra/newview/skins/default/xui/en/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/en/panel_clothing_list_item.xml index cc0541e65c..68d4296743 100644 --- a/indra/newview/skins/default/xui/en/panel_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_clothing_list_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   follows="top|right|left"   height="23" diff --git a/indra/newview/skins/default/xui/en/panel_cof_wearables.xml b/indra/newview/skins/default/xui/en/panel_cof_wearables.xml index aa8e3d07a6..9544042e94 100644 --- a/indra/newview/skins/default/xui/en/panel_cof_wearables.xml +++ b/indra/newview/skins/default/xui/en/panel_cof_wearables.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   background_visible="true"   bg_alpha_color="DkGray" diff --git a/indra/newview/skins/default/xui/en/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/en/panel_conversation_list_item.xml index 4372cf69bf..7902588598 100644 --- a/indra/newview/skins/default/xui/en/panel_conversation_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_conversation_list_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   follows="left|top|right"   height="24" diff --git a/indra/newview/skins/default/xui/en/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/en/panel_conversation_log_list_item.xml index 78d4c174d2..0766e8504f 100644 --- a/indra/newview/skins/default/xui/en/panel_conversation_log_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_conversation_log_list_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   follows="top|right|left"   height="23" @@ -104,4 +104,4 @@       height="14"       width="14"       tab_stop="false"/> -</panel>
\ No newline at end of file +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/en/panel_deletable_wearable_list_item.xml index de2ff0afc9..d12da0ca62 100644 --- a/indra/newview/skins/default/xui/en/panel_deletable_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_deletable_wearable_list_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   follows="top|right|left"   height="23" diff --git a/indra/newview/skins/default/xui/en/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/en/panel_dummy_clothing_list_item.xml index 4b05ab27e4..766b629824 100644 --- a/indra/newview/skins/default/xui/en/panel_dummy_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_dummy_clothing_list_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   follows="top|right|left"   height="23" diff --git a/indra/newview/skins/default/xui/en/panel_edit_alpha.xml b/indra/newview/skins/default/xui/en/panel_edit_alpha.xml index 813aa5d7a9..30fee7361f 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_alpha.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_alpha.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>   <panel       background_visible="true"  	 follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_edit_eyes.xml b/indra/newview/skins/default/xui/en/panel_edit_eyes.xml index f173a2f3cb..f1b2653340 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_eyes.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_eyes.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>   <panel       background_visible="true"  	 follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_edit_gloves.xml b/indra/newview/skins/default/xui/en/panel_edit_gloves.xml index 8c0c543d71..6ae21e1273 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_gloves.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_gloves.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>   <panel       background_visible="true"  	 follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_edit_hair.xml b/indra/newview/skins/default/xui/en/panel_edit_hair.xml index 6bb5d2fa9b..25f7d8a572 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_hair.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_hair.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>   <panel       background_visible="true"  	 follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_edit_jacket.xml b/indra/newview/skins/default/xui/en/panel_edit_jacket.xml index 0f8c37c691..62ee69b43c 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_jacket.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_jacket.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>   <panel       background_visible="true"  	 follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_edit_pants.xml b/indra/newview/skins/default/xui/en/panel_edit_pants.xml index dd749a9259..d2ba71f905 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_pants.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_pants.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>   <panel       background_visible="true"  	 follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_edit_physics.xml b/indra/newview/skins/default/xui/en/panel_edit_physics.xml index 0092ceb0dd..837fb83b64 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_physics.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_physics.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>   <panel       background_visible="true"  	 follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_edit_shape.xml b/indra/newview/skins/default/xui/en/panel_edit_shape.xml index d295f5fe4a..c1d743c3da 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_shape.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_shape.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>   <panel       background_visible="true"  	 follows="all" @@ -11,8 +11,8 @@       <string name="meters">Meters</string>       <string name="feet">Feet</string>       <string name="height">Height:</string> -     <string name="heigth_label_color" translate="false">White_50</string> -     <string name="heigth_value_label_color" translate="false">White</string> +     <string name="height_label_color" translate="false">White_50</string> +     <string name="height_value_label_color" translate="false">White</string>       <text           follows="top|left|right"           font="SansSerifSmallBold" diff --git a/indra/newview/skins/default/xui/en/panel_edit_shirt.xml b/indra/newview/skins/default/xui/en/panel_edit_shirt.xml index 5424b805e1..059103e233 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_shirt.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_shirt.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>   <panel       background_visible="true"  	 follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_edit_shoes.xml b/indra/newview/skins/default/xui/en/panel_edit_shoes.xml index 859e7454a4..199b143719 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_shoes.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_shoes.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>   <panel       background_visible="true"  	 follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_edit_skin.xml b/indra/newview/skins/default/xui/en/panel_edit_skin.xml index b61f65a3d1..f3a5791ef8 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_skin.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_skin.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>   <panel       background_visible="true"  	 follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_edit_skirt.xml b/indra/newview/skins/default/xui/en/panel_edit_skirt.xml index 76d66cc5dc..adb7632e0a 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_skirt.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_skirt.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>   <panel       background_visible="true"  	 follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_edit_socks.xml b/indra/newview/skins/default/xui/en/panel_edit_socks.xml index 5f978174b3..1658e5707b 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_socks.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_socks.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>   <panel       background_visible="true"  	 follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml index 8fa85dce5f..b4f09e262f 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel      background_visible="true"    follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_edit_underpants.xml b/indra/newview/skins/default/xui/en/panel_edit_underpants.xml index 16f28377fb..9ca67ed562 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_underpants.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_underpants.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>   <panel       background_visible="true"  	 follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml index 059485cfb4..4a340fe340 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>   <panel       background_visible="true"  	 follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_edit_universal.xml b/indra/newview/skins/default/xui/en/panel_edit_universal.xml index 11cabdfe6e..a71f6c6c2e 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_universal.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_universal.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel      background_visible="true"    follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml index 85d73ece48..347efa50da 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   background_visible="true"   bevel_style="in" diff --git a/indra/newview/skins/default/xui/en/panel_experience_info.xml b/indra/newview/skins/default/xui/en/panel_experience_info.xml index 5b6dab3ac6..b5150216fe 100644 --- a/indra/newview/skins/default/xui/en/panel_experience_info.xml +++ b/indra/newview/skins/default/xui/en/panel_experience_info.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel    background_visible="true"    follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_experience_list_editor.xml b/indra/newview/skins/default/xui/en/panel_experience_list_editor.xml index c357f9e7d5..9377f14fc0 100644 --- a/indra/newview/skins/default/xui/en/panel_experience_list_editor.xml +++ b/indra/newview/skins/default/xui/en/panel_experience_list_editor.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel    layout="topleft"    left="0" diff --git a/indra/newview/skins/default/xui/en/panel_experience_list_item.xml b/indra/newview/skins/default/xui/en/panel_experience_list_item.xml index 58c18b8bb1..97dfccb31a 100644 --- a/indra/newview/skins/default/xui/en/panel_experience_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_experience_list_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel    name="panel_experience_list_item" diff --git a/indra/newview/skins/default/xui/en/panel_experience_log.xml b/indra/newview/skins/default/xui/en/panel_experience_log.xml index bf7295b187..7d2bf83be3 100644 --- a/indra/newview/skins/default/xui/en/panel_experience_log.xml +++ b/indra/newview/skins/default/xui/en/panel_experience_log.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel    name="panel_experience_log" diff --git a/indra/newview/skins/default/xui/en/panel_experience_search.xml b/indra/newview/skins/default/xui/en/panel_experience_search.xml index c2fe9fb085..bb07476ad0 100644 --- a/indra/newview/skins/default/xui/en/panel_experience_search.xml +++ b/indra/newview/skins/default/xui/en/panel_experience_search.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel    name="panel_experience_search"    layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_experiences.xml b/indra/newview/skins/default/xui/en/panel_experiences.xml index 9d30615442..2dd4ba57fe 100644 --- a/indra/newview/skins/default/xui/en/panel_experiences.xml +++ b/indra/newview/skins/default/xui/en/panel_experiences.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel    name="panel_experiences" diff --git a/indra/newview/skins/default/xui/en/panel_favorites.xml b/indra/newview/skins/default/xui/en/panel_favorites.xml index 1e8ea34ad2..67148ad24e 100644 --- a/indra/newview/skins/default/xui/en/panel_favorites.xml +++ b/indra/newview/skins/default/xui/en/panel_favorites.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel     name="Favorites"     layout="topleft"  diff --git a/indra/newview/skins/default/xui/en/panel_generic_tip.xml b/indra/newview/skins/default/xui/en/panel_generic_tip.xml index eea92895f5..47379b69b8 100644 --- a/indra/newview/skins/default/xui/en/panel_generic_tip.xml +++ b/indra/newview/skins/default/xui/en/panel_generic_tip.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   height="40"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_group_bulk_ban.xml b/indra/newview/skins/default/xui/en/panel_group_bulk_ban.xml index 509dcf354e..43ed304ee8 100644 --- a/indra/newview/skins/default/xui/en/panel_group_bulk_ban.xml +++ b/indra/newview/skins/default/xui/en/panel_group_bulk_ban.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   height="330"   label="Ban Residents" diff --git a/indra/newview/skins/default/xui/en/panel_group_creation_sidetray.xml b/indra/newview/skins/default/xui/en/panel_group_creation_sidetray.xml index 466fb91dd0..a305001ca3 100644 --- a/indra/newview/skins/default/xui/en/panel_group_creation_sidetray.xml +++ b/indra/newview/skins/default/xui/en/panel_group_creation_sidetray.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel  background_visible="true"   follows="all" @@ -229,7 +229,7 @@ background_visible="true"      <layout_panel        background_visible="false"        background_opaque="true" -      name="create_actions" +      name="create_actions1"        follows="all"        layout="topleft"        auto_resize="false" @@ -258,7 +258,7 @@ background_visible="true"          <layout_panel            follows="bottom|left|right"            layout="bottomleft" -          name="layout_crt" +          name="layout_crt1"            auto_resize="false"            height="23"            width="245"> @@ -287,7 +287,7 @@ background_visible="true"          <layout_panel            follows="bottom|left|right"            layout="bottomleft" -          name="layout_crt" +          name="layout_crt2"            auto_resize="true"            height="23"            width="91"> diff --git a/indra/newview/skins/default/xui/en/panel_group_general.xml b/indra/newview/skins/default/xui/en/panel_group_general.xml index 5eafb5cdf1..3043a30dcb 100644 --- a/indra/newview/skins/default/xui/en/panel_group_general.xml +++ b/indra/newview/skins/default/xui/en/panel_group_general.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   label="General"   height="420" diff --git a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml index 05de249d22..cc50c6202f 100644 --- a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel  background_visible="true"   follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_group_invite.xml b/indra/newview/skins/default/xui/en/panel_group_invite.xml index ebb460deb0..fa45bc8aeb 100644 --- a/indra/newview/skins/default/xui/en/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/en/panel_group_invite.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   height="380"   label="Invite a Member" diff --git a/indra/newview/skins/default/xui/en/panel_group_land_money.xml b/indra/newview/skins/default/xui/en/panel_group_land_money.xml index d4da55e32e..ad9ce8f37e 100644 --- a/indra/newview/skins/default/xui/en/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/en/panel_group_land_money.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   border="false"   height="500" diff --git a/indra/newview/skins/default/xui/en/panel_group_list_item.xml b/indra/newview/skins/default/xui/en/panel_group_list_item.xml index e758a8ce30..9e31ff604a 100644 --- a/indra/newview/skins/default/xui/en/panel_group_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_group_list_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   follows="top|right|left"   height="24" diff --git a/indra/newview/skins/default/xui/en/panel_group_list_item_short.xml b/indra/newview/skins/default/xui/en/panel_group_list_item_short.xml index b72af7221e..6a1466867d 100644 --- a/indra/newview/skins/default/xui/en/panel_group_list_item_short.xml +++ b/indra/newview/skins/default/xui/en/panel_group_list_item_short.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   name="group_list_item"   top="0" @@ -71,7 +71,6 @@       name="visibility_show_btn"       tool_tip="Show group on my profile"       top_delta="0" -     right_delta="0"       height="20"       width="20"       follows="right" diff --git a/indra/newview/skins/default/xui/en/panel_group_notices.xml b/indra/newview/skins/default/xui/en/panel_group_notices.xml index a5aca5c72b..0131f1d97d 100644 --- a/indra/newview/skins/default/xui/en/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/en/panel_group_notices.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   height="530"   label="Notices" diff --git a/indra/newview/skins/default/xui/en/panel_group_notify.xml b/indra/newview/skins/default/xui/en/panel_group_notify.xml index 60e5a03d51..be34a2e02f 100644 --- a/indra/newview/skins/default/xui/en/panel_group_notify.xml +++ b/indra/newview/skins/default/xui/en/panel_group_notify.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   background_visible="true"   height="90" diff --git a/indra/newview/skins/default/xui/en/panel_group_roles.xml b/indra/newview/skins/default/xui/en/panel_group_roles.xml index f15f79e9aa..02e135a2c7 100644 --- a/indra/newview/skins/default/xui/en/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/en/panel_group_roles.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   height="750"   label="Members & Roles" diff --git a/indra/newview/skins/default/xui/en/panel_hide_beacon.xml b/indra/newview/skins/default/xui/en/panel_hide_beacon.xml index 7cab285f77..0516db96e0 100644 --- a/indra/newview/skins/default/xui/en/panel_hide_beacon.xml +++ b/indra/newview/skins/default/xui/en/panel_hide_beacon.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   height="25"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_hint.xml b/indra/newview/skins/default/xui/en/panel_hint.xml index f7434f0330..7442136761 100644 --- a/indra/newview/skins/default/xui/en/panel_hint.xml +++ b/indra/newview/skins/default/xui/en/panel_hint.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   width="205"   height="34"> diff --git a/indra/newview/skins/default/xui/en/panel_hint_image.xml b/indra/newview/skins/default/xui/en/panel_hint_image.xml index df05d50dc5..d712245df8 100644 --- a/indra/newview/skins/default/xui/en/panel_hint_image.xml +++ b/indra/newview/skins/default/xui/en/panel_hint_image.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   width="305"   height="40" diff --git a/indra/newview/skins/default/xui/en/panel_hud.xml b/indra/newview/skins/default/xui/en/panel_hud.xml index 3e9614a9b7..15b3c3b444 100644 --- a/indra/newview/skins/default/xui/en/panel_hud.xml +++ b/indra/newview/skins/default/xui/en/panel_hud.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   follows="left|right|top|bottom"   height="728" diff --git a/indra/newview/skins/default/xui/en/panel_inbox_inventory.xml b/indra/newview/skins/default/xui/en/panel_inbox_inventory.xml index 433a3181cd..18dcc86649 100644 --- a/indra/newview/skins/default/xui/en/panel_inbox_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_inbox_inventory.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <inbox_inventory_panel      accepts_drag_and_drop="false"      name="inventory_inbox" diff --git a/indra/newview/skins/default/xui/en/panel_instant_message.xml b/indra/newview/skins/default/xui/en/panel_instant_message.xml index 2e5d650902..7c0a928d69 100644 --- a/indra/newview/skins/default/xui/en/panel_instant_message.xml +++ b/indra/newview/skins/default/xui/en/panel_instant_message.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   background_visible="true"   height="152" @@ -7,7 +7,7 @@   left="0"   name="im_panel"   top="0" - width="305"> + width="310">      <string       name="message_max_lines_count">          6 @@ -24,7 +24,7 @@       mouse_opaque="false"       name="im_header"       top="5" -     width="295"> +     width="300">          <avatar_icon           follows="right"           height="18" @@ -65,11 +65,11 @@           name="user_name"           parse_urls="false"           text_color="White" -         top="8" +         top="7"           translate="false"           use_ellipses="true" -         value="TestString PleaseIgnore" -         width="205" /> +         value="TestString PleaseIgnore (testing plsignore)" +         width="172" />  	 <!-- TIME STAMP -->          <text          font="SansSerifSmall" @@ -79,9 +79,9 @@  	 halign="right"           right="-5"           name="time_box" -         top="8" -         value="23:30" -         width="50" /> +         top="7" +         value="2022/09/23 23:30" +         width="96" />      </panel>      <text          font="SansSerifSmall" @@ -94,7 +94,7 @@       top="33"       use_ellipses="true"       value="" -     width="285" +     width="290"       word_wrap="true"       max_length="350" />  </panel> diff --git a/indra/newview/skins/default/xui/en/panel_inventory_gallery.xml b/indra/newview/skins/default/xui/en/panel_inventory_gallery.xml index ed04e12193..fcff9e3bec 100644 --- a/indra/newview/skins/default/xui/en/panel_inventory_gallery.xml +++ b/indra/newview/skins/default/xui/en/panel_inventory_gallery.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel     background_visible="true"     bg_alpha_color="InventoryBackgroundColor" diff --git a/indra/newview/skins/default/xui/en/panel_inventory_gallery_item.xml b/indra/newview/skins/default/xui/en/panel_inventory_gallery_item.xml index 574872a870..73cb9b080f 100644 --- a/indra/newview/skins/default/xui/en/panel_inventory_gallery_item.xml +++ b/indra/newview/skins/default/xui/en/panel_inventory_gallery_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel     background_visible="false"     background_opaque="false" diff --git a/indra/newview/skins/default/xui/en/panel_inventory_item.xml b/indra/newview/skins/default/xui/en/panel_inventory_item.xml index 2e38835810..b9bbf7689d 100644 --- a/indra/newview/skins/default/xui/en/panel_inventory_item.xml +++ b/indra/newview/skins/default/xui/en/panel_inventory_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   follows="top|right|left"   height="20" diff --git a/indra/newview/skins/default/xui/en/panel_landmark_info.xml b/indra/newview/skins/default/xui/en/panel_landmark_info.xml index e82305ef17..2fbf322019 100644 --- a/indra/newview/skins/default/xui/en/panel_landmark_info.xml +++ b/indra/newview/skins/default/xui/en/panel_landmark_info.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   background_visible="true"   follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_landmarks.xml b/indra/newview/skins/default/xui/en/panel_landmarks.xml index 10b925ec93..ee96e7ede8 100644 --- a/indra/newview/skins/default/xui/en/panel_landmarks.xml +++ b/indra/newview/skins/default/xui/en/panel_landmarks.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel     name="Landmarks"     layout="topleft"  diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml index 3aba80909a..2088a443fd 100644 --- a/indra/newview/skins/default/xui/en/panel_login.xml +++ b/indra/newview/skins/default/xui/en/panel_login.xml @@ -1,3 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel    follows="all"    height="768" diff --git a/indra/newview/skins/default/xui/en/panel_login_first.xml b/indra/newview/skins/default/xui/en/panel_login_first.xml index d36c83d292..d002e24782 100644 --- a/indra/newview/skins/default/xui/en/panel_login_first.xml +++ b/indra/newview/skins/default/xui/en/panel_login_first.xml @@ -1,3 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel    follows="all"    height="768" diff --git a/indra/newview/skins/default/xui/en/panel_main_inventory.xml b/indra/newview/skins/default/xui/en/panel_main_inventory.xml index 4aadc0591c..190ff4ef28 100644 --- a/indra/newview/skins/default/xui/en/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_main_inventory.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   follows="all"   height="423" diff --git a/indra/newview/skins/default/xui/en/panel_marketplace_listings.xml b/indra/newview/skins/default/xui/en/panel_marketplace_listings.xml index 2b17473a84..61cd6a83d4 100644 --- a/indra/newview/skins/default/xui/en/panel_marketplace_listings.xml +++ b/indra/newview/skins/default/xui/en/panel_marketplace_listings.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel    label="Marketplace"    name="Marketplace Panel" @@ -114,4 +114,4 @@            Drop folders here to create new listings        </text>    </panel> -</panel>
\ No newline at end of file +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_marketplace_listings_inventory.xml b/indra/newview/skins/default/xui/en/panel_marketplace_listings_inventory.xml index 8d5fa265e2..a8a306bea9 100644 --- a/indra/newview/skins/default/xui/en/panel_marketplace_listings_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_marketplace_listings_inventory.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <inventory_panel      label="ALL"      name="All Items" diff --git a/indra/newview/skins/default/xui/en/panel_marketplace_listings_listed.xml b/indra/newview/skins/default/xui/en/panel_marketplace_listings_listed.xml index 44f507ad84..0c665fb07e 100644 --- a/indra/newview/skins/default/xui/en/panel_marketplace_listings_listed.xml +++ b/indra/newview/skins/default/xui/en/panel_marketplace_listings_listed.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <inventory_panel      label="LISTED"      name="Active Items" diff --git a/indra/newview/skins/default/xui/en/panel_marketplace_listings_unassociated.xml b/indra/newview/skins/default/xui/en/panel_marketplace_listings_unassociated.xml index 871e8773c4..0be405c5b8 100644 --- a/indra/newview/skins/default/xui/en/panel_marketplace_listings_unassociated.xml +++ b/indra/newview/skins/default/xui/en/panel_marketplace_listings_unassociated.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <inventory_panel      label="UNASSOCIATED"      name="Unassociated Items" diff --git a/indra/newview/skins/default/xui/en/panel_marketplace_listings_unlisted.xml b/indra/newview/skins/default/xui/en/panel_marketplace_listings_unlisted.xml index 98bef04aa7..58122db7f4 100644 --- a/indra/newview/skins/default/xui/en/panel_marketplace_listings_unlisted.xml +++ b/indra/newview/skins/default/xui/en/panel_marketplace_listings_unlisted.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <inventory_panel      label="UNLISTED"      name="Inactive Items" diff --git a/indra/newview/skins/default/xui/en/panel_media_settings_general.xml b/indra/newview/skins/default/xui/en/panel_media_settings_general.xml index 4c566dc60a..5e7830f27c 100644 --- a/indra/newview/skins/default/xui/en/panel_media_settings_general.xml +++ b/indra/newview/skins/default/xui/en/panel_media_settings_general.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel    border="true"    enabled="true"  diff --git a/indra/newview/skins/default/xui/en/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/en/panel_media_settings_permissions.xml index d3a58fed58..082aad2816 100644 --- a/indra/newview/skins/default/xui/en/panel_media_settings_permissions.xml +++ b/indra/newview/skins/default/xui/en/panel_media_settings_permissions.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel    border="true"    enabled="true"  diff --git a/indra/newview/skins/default/xui/en/panel_media_settings_security.xml b/indra/newview/skins/default/xui/en/panel_media_settings_security.xml index 1f580831f9..82e9c25b1c 100644 --- a/indra/newview/skins/default/xui/en/panel_media_settings_security.xml +++ b/indra/newview/skins/default/xui/en/panel_media_settings_security.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel    border="true"    enabled="true"  diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml index b44c19810b..85cf4419a3 100644 --- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   background_opaque="true"   background_visible="true" diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml index 1e43db08f7..1a89d07cbb 100644 --- a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   follows="left|bottom|right"   height="25" 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 d1cb64f7ad..f305a161f2 100644 --- a/indra/newview/skins/default/xui/en/panel_nearby_media.xml +++ b/indra/newview/skins/default/xui/en/panel_nearby_media.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   bg_opaque_image="Volume_Background"    bg_alpha_image="Volume_Background"  diff --git a/indra/newview/skins/default/xui/en/panel_notification.xml b/indra/newview/skins/default/xui/en/panel_notification.xml index c1a68fb9af..56d8714064 100644 --- a/indra/newview/skins/default/xui/en/panel_notification.xml +++ b/indra/newview/skins/default/xui/en/panel_notification.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel    background_opaque="false"    border_visible="false" diff --git a/indra/newview/skins/default/xui/en/panel_notification_list_item.xml b/indra/newview/skins/default/xui/en/panel_notification_list_item.xml index efaaefd0e4..80db209b59 100644 --- a/indra/newview/skins/default/xui/en/panel_notification_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_notification_list_item.xml @@ -68,7 +68,7 @@                  </panel>                </panel>              </layout_panel> -            <layout_panel width="18" height="48" follows="right|top|bottom" name="layout_panel_right"> +            <layout_panel width="18" height="48" follows="right|top|bottom" name="layout_panel_right1">                <panel top="0" left="0" width="17"  height="39" follows="left|top|right|bottom" layout="topleft" name="close_expand_panel">                  <button top="0" left="0" width="17" height="17" layout="topleft" follows="top" name="close_btn" mouse_opaque="true"                    tab_stop="false" image_unselected="Icon_Close_Foreground" image_selected="Icon_Close_Press" /> diff --git a/indra/newview/skins/default/xui/en/panel_notifications_channel.xml b/indra/newview/skins/default/xui/en/panel_notifications_channel.xml index c3dc588ba2..f1e990e68f 100644 --- a/indra/newview/skins/default/xui/en/panel_notifications_channel.xml +++ b/indra/newview/skins/default/xui/en/panel_notifications_channel.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   height="100"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_notify_textbox.xml b/indra/newview/skins/default/xui/en/panel_notify_textbox.xml index 6dc1bf9e9e..27d0f7d383 100644 --- a/indra/newview/skins/default/xui/en/panel_notify_textbox.xml +++ b/indra/newview/skins/default/xui/en/panel_notify_textbox.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel     background_visible="true"     height="215" diff --git a/indra/newview/skins/default/xui/en/panel_online_status_toast.xml b/indra/newview/skins/default/xui/en/panel_online_status_toast.xml index dadbd9c9ab..9819d2008b 100644 --- a/indra/newview/skins/default/xui/en/panel_online_status_toast.xml +++ b/indra/newview/skins/default/xui/en/panel_online_status_toast.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   background_visible="false"   height="40" @@ -32,4 +32,4 @@       width="189"       word_wrap="true"       max_length="350" /> -</panel>
\ No newline at end of file +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml index d625f89f3b..a0e3344304 100644 --- a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!-- Side tray Outfit Edit panel -->  <panel          background_visible="true" diff --git a/indra/newview/skins/default/xui/en/panel_outfit_gallery.xml b/indra/newview/skins/default/xui/en/panel_outfit_gallery.xml index e951d25391..6bd491f7a3 100644 --- a/indra/newview/skins/default/xui/en/panel_outfit_gallery.xml +++ b/indra/newview/skins/default/xui/en/panel_outfit_gallery.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel     background_visible="true"     bg_alpha_color="DkGray" diff --git a/indra/newview/skins/default/xui/en/panel_outfit_gallery_item.xml b/indra/newview/skins/default/xui/en/panel_outfit_gallery_item.xml index e3f0f1128b..65bbc3a4b4 100644 --- a/indra/newview/skins/default/xui/en/panel_outfit_gallery_item.xml +++ b/indra/newview/skins/default/xui/en/panel_outfit_gallery_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel     background_visible="false"     background_opaque="false" diff --git a/indra/newview/skins/default/xui/en/panel_outfit_snapshot_inventory.xml b/indra/newview/skins/default/xui/en/panel_outfit_snapshot_inventory.xml index 441cf97e87..14b41aced3 100644 --- a/indra/newview/skins/default/xui/en/panel_outfit_snapshot_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_outfit_snapshot_inventory.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   height="380"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml index 7b898dbd7f..d58c2ec2e9 100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>   <panel name="Outfits"   bg_alpha_color="DkGray"   bg_opaque_color="DkGray" diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory_gear_default.xml index 2c7a51f0e7..f600b2bd31 100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory_gear_default.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <menu   bottom="806"   layout="topleft" 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 a0096adc01..9281a21fbf 100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_list.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel     background_visible="true"     bg_alpha_color="DkGray" diff --git a/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml index ceaff0ea69..a486c03ac7 100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   background_visible="true"   bg_alpha_color="DkGray" diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index 50035fd0e3..c31e6c94ea 100644 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!-- Side tray panel -->  <panel   follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_performance_autoadjustments.xml b/indra/newview/skins/default/xui/en/panel_performance_autoadjustments.xml index 904ce1cc52..9f930d1557 100644 --- a/indra/newview/skins/default/xui/en/panel_performance_autoadjustments.xml +++ b/indra/newview/skins/default/xui/en/panel_performance_autoadjustments.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   bevel_style="none"   follows="left|top" diff --git a/indra/newview/skins/default/xui/en/panel_performance_complexity.xml b/indra/newview/skins/default/xui/en/panel_performance_complexity.xml index cd3f610a92..fc38c056ad 100644 --- a/indra/newview/skins/default/xui/en/panel_performance_complexity.xml +++ b/indra/newview/skins/default/xui/en/panel_performance_complexity.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   bevel_style="none"   follows="left|top" diff --git a/indra/newview/skins/default/xui/en/panel_performance_huds.xml b/indra/newview/skins/default/xui/en/panel_performance_huds.xml index 2fddcb3b9e..f0054800c7 100644 --- a/indra/newview/skins/default/xui/en/panel_performance_huds.xml +++ b/indra/newview/skins/default/xui/en/panel_performance_huds.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   bevel_style="none"   follows="left|top" diff --git a/indra/newview/skins/default/xui/en/panel_performance_nearby.xml b/indra/newview/skins/default/xui/en/panel_performance_nearby.xml index cb795e59a9..ca961747c4 100644 --- a/indra/newview/skins/default/xui/en/panel_performance_nearby.xml +++ b/indra/newview/skins/default/xui/en/panel_performance_nearby.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   bevel_style="none"   follows="left|top" diff --git a/indra/newview/skins/default/xui/en/panel_performance_preferences.xml b/indra/newview/skins/default/xui/en/panel_performance_preferences.xml index 83db17b679..7ba7b1d579 100644 --- a/indra/newview/skins/default/xui/en/panel_performance_preferences.xml +++ b/indra/newview/skins/default/xui/en/panel_performance_preferences.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   bevel_style="none"   follows="left|top" @@ -156,7 +156,7 @@     layout="topleft"     left_pad="10"     top_delta="1" -   name="quality_lbl" +   name="best_quality_lbl"     width="70">      Best quality    </text> @@ -325,7 +325,7 @@      bevel_style="in"      height="0"      layout="topleft" -    name="border3" +    name="border31"      top_pad="7"      left="20"      width="540"/> @@ -416,7 +416,7 @@     layout="topleft"     top_delta="3"     left_pad="10" -   name="photo_desc" +   name="photo_dist_det_desc"     width="180">        (Enter value between 0.0 and 4.0)    </text> diff --git a/indra/newview/skins/default/xui/en/panel_pick_list_item.xml b/indra/newview/skins/default/xui/en/panel_pick_list_item.xml index 4c0cdd321e..db3e42fa96 100644 --- a/indra/newview/skins/default/xui/en/panel_pick_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_pick_list_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   bevel_style="none"   follows="top|left|right" diff --git a/indra/newview/skins/default/xui/en/panel_place_profile.xml b/indra/newview/skins/default/xui/en/panel_place_profile.xml index bdde2cab20..8f5292c531 100644 --- a/indra/newview/skins/default/xui/en/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   background_visible="true"   follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml index 58be4d4c5e..a3a2f7c47e 100644 --- a/indra/newview/skins/default/xui/en/panel_places.xml +++ b/indra/newview/skins/default/xui/en/panel_places.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel  background_visible="true"   default_tab_group="1" diff --git a/indra/newview/skins/default/xui/en/panel_postcard_message.xml b/indra/newview/skins/default/xui/en/panel_postcard_message.xml index 63c7259878..f9d288ea59 100644 --- a/indra/newview/skins/default/xui/en/panel_postcard_message.xml +++ b/indra/newview/skins/default/xui/en/panel_postcard_message.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   height="319"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_postcard_settings.xml b/indra/newview/skins/default/xui/en/panel_postcard_settings.xml index 525149d7ee..f121338c2a 100644 --- a/indra/newview/skins/default/xui/en/panel_postcard_settings.xml +++ b/indra/newview/skins/default/xui/en/panel_postcard_settings.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   height="380"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml index d0518aa245..8051ffa8ec 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   border="true"   follows="all" @@ -166,7 +166,7 @@     left_pad="0"     max_val="2.0"     min_val="1.0" -   name="ui_scale_slider" +   name="hud_scale_slider"     top_pad="-14"     width="250" />      <check_box diff --git a/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml index 93c97ded25..fb528bf98f 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   border="true"   height="408" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml index f4181b2152..88716c7f96 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel      border="true"      height="408" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_colors.xml b/indra/newview/skins/default/xui/en/panel_preferences_colors.xml index 9e825fe516..5d93846ce5 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_colors.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   border="true"   follows="left|top|right|bottom" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_controls.xml b/indra/newview/skins/default/xui/en/panel_preferences_controls.xml index 9dab7d34e6..f8801f9c89 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_controls.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_controls.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   border="true"   follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_general.xml b/indra/newview/skins/default/xui/en/panel_preferences_general.xml index 335d7caa51..101c506309 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   border="true"   follows="left|top|right|bottom" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml index fe74cea2f1..1428cf8b02 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   border="true"   follows="left|top|right|bottom" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_move.xml b/indra/newview/skins/default/xui/en/panel_preferences_move.xml index 864223e616..0412466b4f 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_move.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_move.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   border="true"   follows="left|top|right|bottom" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml index ef08fdf7c4..5041fb4878 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel      border="true"      follows="left|top|right|bottom" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml index 5e41ba4ae1..28c2d2af6e 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   border="true"   follows="left|top|right|bottom" 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 ab2e9c72f3..7eaaaee536 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   border="true"   follows="all" @@ -107,7 +107,7 @@  		is_toggle="true"  		layout="topleft"  		left_pad="5" -		name="mute_audio" +		name="mute_audio_ui"  		tab_stop="false"  		width="16" />      <slider @@ -141,7 +141,7 @@       is_toggle="true"       layout="topleft"       left_pad="5" -     name="mute_audio" +     name="mute_audio_ambient"       tab_stop="false"       width="16" />      <slider @@ -175,7 +175,7 @@       is_toggle="true"       layout="topleft"       left_pad="5" -     name="mute_audio" +     name="mute_audio_sounds"       tab_stop="false"       width="16">        <button.commit_callback @@ -212,7 +212,7 @@       is_toggle="true"       layout="topleft"  	   left_pad="5" -     name="mute_audio" +     name="mute_audio_music"       tab_stop="false"  	 width="16" />  	<check_box @@ -258,7 +258,7 @@  		is_toggle="true"  		layout="topleft"  		left_pad="5" -		name="mute_audio" +		name="mute_audio_media"  		tab_stop="false"  		width="16" />  	<check_box @@ -306,7 +306,7 @@  		is_toggle="true"  		layout="topleft"  		left_pad="5" -		name="mute_audio" +		name="mute_audio_voice"  		tab_stop="false"  		width="16" />  	<check_box diff --git a/indra/newview/skins/default/xui/en/panel_preferences_uploads.xml b/indra/newview/skins/default/xui/en/panel_preferences_uploads.xml index 08ff3d4d53..4b13fcfa24 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_uploads.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_uploads.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   border="true"   follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_presets_camera_pulldown.xml b/indra/newview/skins/default/xui/en/panel_presets_camera_pulldown.xml index 25d9c47449..d5f1bc81ee 100644 --- a/indra/newview/skins/default/xui/en/panel_presets_camera_pulldown.xml +++ b/indra/newview/skins/default/xui/en/panel_presets_camera_pulldown.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   background_opaque="true"   background_visible="true" diff --git a/indra/newview/skins/default/xui/en/panel_presets_pulldown.xml b/indra/newview/skins/default/xui/en/panel_presets_pulldown.xml index b3d165c4fd..5ea92e3973 100644 --- a/indra/newview/skins/default/xui/en/panel_presets_pulldown.xml +++ b/indra/newview/skins/default/xui/en/panel_presets_pulldown.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   background_opaque="true"   background_visible="true" diff --git a/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml index 068e4420bc..b507da8b48 100644 --- a/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml +++ b/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel  	follows="left|right|top|bottom"  	name="MediaControls" diff --git a/indra/newview/skins/default/xui/en/panel_profile_classified.xml b/indra/newview/skins/default/xui/en/panel_profile_classified.xml index c9e8b242d4..3d61eecf86 100644 --- a/indra/newview/skins/default/xui/en/panel_profile_classified.xml +++ b/indra/newview/skins/default/xui/en/panel_profile_classified.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   name="panel_profile_classified"   top="0" diff --git a/indra/newview/skins/default/xui/en/panel_profile_classifieds.xml b/indra/newview/skins/default/xui/en/panel_profile_classifieds.xml index 2b2f60e0c2..c74053d58e 100644 --- a/indra/newview/skins/default/xui/en/panel_profile_classifieds.xml +++ b/indra/newview/skins/default/xui/en/panel_profile_classifieds.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   name="panel_profile_classifieds"   label="Classified" diff --git a/indra/newview/skins/default/xui/en/panel_profile_firstlife.xml b/indra/newview/skins/default/xui/en/panel_profile_firstlife.xml index f899f83ad4..f596b876ab 100644 --- a/indra/newview/skins/default/xui/en/panel_profile_firstlife.xml +++ b/indra/newview/skins/default/xui/en/panel_profile_firstlife.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   name="panel_profile_firstlife"   label="Profile" diff --git a/indra/newview/skins/default/xui/en/panel_profile_notes.xml b/indra/newview/skins/default/xui/en/panel_profile_notes.xml index 16e7365042..77d8689518 100644 --- a/indra/newview/skins/default/xui/en/panel_profile_notes.xml +++ b/indra/newview/skins/default/xui/en/panel_profile_notes.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   name="panel_notes"   label="Notes & Privacy" diff --git a/indra/newview/skins/default/xui/en/panel_profile_pick.xml b/indra/newview/skins/default/xui/en/panel_profile_pick.xml index 3e91640093..024120931f 100644 --- a/indra/newview/skins/default/xui/en/panel_profile_pick.xml +++ b/indra/newview/skins/default/xui/en/panel_profile_pick.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   name="panel_pick_info"   top="0" @@ -138,11 +138,11 @@      <layout_panel       follows="all"       layout="bottomleft" -     name="save_changes_lp" +     name="util_buttons_lp"       auto_resize="false"       height="25">        <layout_stack -       name="save_changes_stack" +       name="util_buttons_stack"         left="1"         right="-1"         top="0" diff --git a/indra/newview/skins/default/xui/en/panel_profile_picks.xml b/indra/newview/skins/default/xui/en/panel_profile_picks.xml index 44d5c448c0..db0d46b758 100644 --- a/indra/newview/skins/default/xui/en/panel_profile_picks.xml +++ b/indra/newview/skins/default/xui/en/panel_profile_picks.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   name="panel_picks"   label="Picks" diff --git a/indra/newview/skins/default/xui/en/panel_profile_secondlife.xml b/indra/newview/skins/default/xui/en/panel_profile_secondlife.xml index fea7d1bcb8..dd9a146265 100644 --- a/indra/newview/skins/default/xui/en/panel_profile_secondlife.xml +++ b/indra/newview/skins/default/xui/en/panel_profile_secondlife.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   name="panel_profile"   label="Profile" diff --git a/indra/newview/skins/default/xui/en/panel_profile_web.xml b/indra/newview/skins/default/xui/en/panel_profile_web.xml index e0cb4d3d06..591effd4f4 100644 --- a/indra/newview/skins/default/xui/en/panel_profile_web.xml +++ b/indra/newview/skins/default/xui/en/panel_profile_web.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   name="panel_profile_web"   label="Web" diff --git a/indra/newview/skins/default/xui/en/panel_progress.xml b/indra/newview/skins/default/xui/en/panel_progress.xml index e77d097d5f..242b96b695 100644 --- a/indra/newview/skins/default/xui/en/panel_progress.xml +++ b/indra/newview/skins/default/xui/en/panel_progress.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   follows="left|bottom|right|top"   height="768" diff --git a/indra/newview/skins/default/xui/en/panel_region_access.xml b/indra/newview/skins/default/xui/en/panel_region_access.xml index 4be073195b..3028357b87 100644 --- a/indra/newview/skins/default/xui/en/panel_region_access.xml +++ b/indra/newview/skins/default/xui/en/panel_region_access.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   border="true"   follows="top|left" diff --git a/indra/newview/skins/default/xui/en/panel_region_covenant.xml b/indra/newview/skins/default/xui/en/panel_region_covenant.xml index 112f12500d..bc764ecc55 100644 --- a/indra/newview/skins/default/xui/en/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/en/panel_region_covenant.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   border="true"   follows="top|left" diff --git a/indra/newview/skins/default/xui/en/panel_region_debug.xml b/indra/newview/skins/default/xui/en/panel_region_debug.xml index fea5f1b19f..04a510d4e8 100644 --- a/indra/newview/skins/default/xui/en/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/en/panel_region_debug.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   border="true"   follows="top|left" diff --git a/indra/newview/skins/default/xui/en/panel_region_environment.xml b/indra/newview/skins/default/xui/en/panel_region_environment.xml index 0b3639f779..6d23592948 100644 --- a/indra/newview/skins/default/xui/en/panel_region_environment.xml +++ b/indra/newview/skins/default/xui/en/panel_region_environment.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel          border="true" diff --git a/indra/newview/skins/default/xui/en/panel_region_estate.xml b/indra/newview/skins/default/xui/en/panel_region_estate.xml index 33e99a46ae..0910a3ef90 100644 --- a/indra/newview/skins/default/xui/en/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/en/panel_region_estate.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   border="true"   follows="top|left" diff --git a/indra/newview/skins/default/xui/en/panel_region_experiences.xml b/indra/newview/skins/default/xui/en/panel_region_experiences.xml index bced46f7dc..199dca4853 100644 --- a/indra/newview/skins/default/xui/en/panel_region_experiences.xml +++ b/indra/newview/skins/default/xui/en/panel_region_experiences.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel    border="true"    follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_region_general.xml b/indra/newview/skins/default/xui/en/panel_region_general.xml index d1cfb8ead6..74d21c436e 100644 --- a/indra/newview/skins/default/xui/en/panel_region_general.xml +++ b/indra/newview/skins/default/xui/en/panel_region_general.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   border="true"   follows="top|left" diff --git a/indra/newview/skins/default/xui/en/panel_region_terrain.xml b/indra/newview/skins/default/xui/en/panel_region_terrain.xml index 2aaea04a6d..ad41691323 100644 --- a/indra/newview/skins/default/xui/en/panel_region_terrain.xml +++ b/indra/newview/skins/default/xui/en/panel_region_terrain.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   border="true"   follows="top|left" diff --git a/indra/newview/skins/default/xui/en/panel_script_ed.xml b/indra/newview/skins/default/xui/en/panel_script_ed.xml index 545c01935b..f8761d2b24 100644 --- a/indra/newview/skins/default/xui/en/panel_script_ed.xml +++ b/indra/newview/skins/default/xui/en/panel_script_ed.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel    bevel_style="none"    border_style="line" @@ -44,10 +44,12 @@        layout="topleft"        left="0"        mouse_opaque="false" +      font="SansSerif"        name="File"        width="138">        <menu_item_call          label="Save" +        shortcut="control|S"          layout="topleft"          name="Save" />        <menu_item_separator @@ -66,16 +68,6 @@          label="Save to file..."          layout="topleft"          name="SaveToFile" /> -          <menu_item_separator -           layout="topleft" /> -          <menu_item_call -           label="Colors..." -           layout="topleft" -           name="Colors"> -            <menu_item_call.on_click -             function="Floater.Toggle" -             parameter="script_colors"/> -          </menu_item_call>      </menu>      <menu        top="0" @@ -83,6 +75,7 @@        label="Edit"        layout="topleft"        mouse_opaque="false" +      font="SansSerif"        name="Edit"        width="139">        <menu_item_call @@ -117,6 +110,7 @@          name="separator2" />        <menu_item_call          label="Select All" +        shortcut="control|A"          layout="topleft"          name="Select All" />        <menu_item_call @@ -142,6 +136,7 @@        label="Help"        layout="topleft"        mouse_opaque="false" +      font="SansSerif"        name="Help"        width="112">        <menu_item_call @@ -150,12 +145,34 @@          name="Keyword Help..." />      </menu>    </menu_bar> +  <menu_button +   follows="right|top" +   height="24" +   image_overlay="Icon_Font_Size" +   layout="topleft" +   top_delta="-2" +   right="453" +   name="font_btn" +   width="32" /> +  <button +   follows="right|top" +   height="24" +   image_overlay="Icon_Color_Palette" +   layout="topleft" +   top_delta="0" +   right="487" +   name="color_btn" +   width="32"> +    <button.commit_callback +      function="Floater.Toggle" +      parameter="script_colors"/> +  </button>      <script_editor      left="0"      type="string"      length="1"      follows="left|top|right|bottom" -    font="Monospace" +       height="376"      ignore_tab="false"      layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_script_experience.xml b/indra/newview/skins/default/xui/en/panel_script_experience.xml index 9ae5b201a6..1a1ee16628 100644 --- a/indra/newview/skins/default/xui/en/panel_script_experience.xml +++ b/indra/newview/skins/default/xui/en/panel_script_experience.xml @@ -1,3 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel    name="script_experience"    title="EXPERIENCE" diff --git a/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml index 2c2803a503..3be3e23d47 100644 --- a/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml +++ b/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   border="true"   follows="top|left" diff --git a/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml index 79bb781bc6..18ebb2f133 100644 --- a/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml +++ b/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   border="true"   follows="top|left" diff --git a/indra/newview/skins/default/xui/en/panel_script_question_toast.xml b/indra/newview/skins/default/xui/en/panel_script_question_toast.xml index b0436bb6dc..1b1e31165a 100644 --- a/indra/newview/skins/default/xui/en/panel_script_question_toast.xml +++ b/indra/newview/skins/default/xui/en/panel_script_question_toast.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel    background_opaque="false"    border_visible="false" diff --git a/indra/newview/skins/default/xui/en/panel_scrolling_param.xml b/indra/newview/skins/default/xui/en/panel_scrolling_param.xml index a8cd380f20..2035bc2caa 100644 --- a/indra/newview/skins/default/xui/en/panel_scrolling_param.xml +++ b/indra/newview/skins/default/xui/en/panel_scrolling_param.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   height="157"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/en/panel_scrolling_param_base.xml index 1351f75623..03c624627f 100644 --- a/indra/newview/skins/default/xui/en/panel_scrolling_param_base.xml +++ b/indra/newview/skins/default/xui/en/panel_scrolling_param_base.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   layout="topleft"   left="0" diff --git a/indra/newview/skins/default/xui/en/panel_settings_sky_atmos.xml b/indra/newview/skins/default/xui/en/panel_settings_sky_atmos.xml index da82c95c83..59ee0c6ad5 100644 --- a/indra/newview/skins/default/xui/en/panel_settings_sky_atmos.xml +++ b/indra/newview/skins/default/xui/en/panel_settings_sky_atmos.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel          border="true"          follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_settings_sky_clouds.xml b/indra/newview/skins/default/xui/en/panel_settings_sky_clouds.xml index 9bdfa94a33..7687f7cd96 100644 --- a/indra/newview/skins/default/xui/en/panel_settings_sky_clouds.xml +++ b/indra/newview/skins/default/xui/en/panel_settings_sky_clouds.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel          border="true"          follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_settings_sky_density.xml b/indra/newview/skins/default/xui/en/panel_settings_sky_density.xml index 9b37896979..60ab520cd5 100644 --- a/indra/newview/skins/default/xui/en/panel_settings_sky_density.xml +++ b/indra/newview/skins/default/xui/en/panel_settings_sky_density.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel          border="true"          follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_settings_sky_sunmoon.xml b/indra/newview/skins/default/xui/en/panel_settings_sky_sunmoon.xml index 35adb262bb..bd68434aab 100644 --- a/indra/newview/skins/default/xui/en/panel_settings_sky_sunmoon.xml +++ b/indra/newview/skins/default/xui/en/panel_settings_sky_sunmoon.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel          border="true"          follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_settings_water.xml b/indra/newview/skins/default/xui/en/panel_settings_water.xml index f19629df26..bec4f7852f 100644 --- a/indra/newview/skins/default/xui/en/panel_settings_water.xml +++ b/indra/newview/skins/default/xui/en/panel_settings_water.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel          border="true"          follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/en/panel_side_tray_tab_caption.xml index 557b04d281..4cb1364ff3 100644 --- a/indra/newview/skins/default/xui/en/panel_side_tray_tab_caption.xml +++ b/indra/newview/skins/default/xui/en/panel_side_tray_tab_caption.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   background_visible="true"   bottom="0" diff --git a/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml b/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml index 912f81f915..cc3fb4abdb 100644 --- a/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml +++ b/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!-- the web-based Home panel of the side tray -->  <panel   follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml index 8cc27d9eef..f8040b9a65 100644 --- a/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   height="380"   layout="topleft" @@ -144,4 +144,4 @@        <button.commit_callback         function="Inventory.Save" />      </button> -</panel>
\ No newline at end of file +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_local.xml b/indra/newview/skins/default/xui/en/panel_snapshot_local.xml index 188c9f8707..52f9068264 100644 --- a/indra/newview/skins/default/xui/en/panel_snapshot_local.xml +++ b/indra/newview/skins/default/xui/en/panel_snapshot_local.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   height="380"   layout="topleft" @@ -196,4 +196,4 @@           name="saveas_item"           value="save as" />      </flyout_button> -</panel>
\ No newline at end of file +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_options.xml b/indra/newview/skins/default/xui/en/panel_snapshot_options.xml index 8fc5cd7e63..3a7731d235 100644 --- a/indra/newview/skins/default/xui/en/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/en/panel_snapshot_options.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   follows="all"   height="240" @@ -87,4 +87,4 @@     word_wrap="true">      Fee is based on your subscription level. Higher levels are charged lower fees.    </text> -</panel>
\ No newline at end of file +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml index 8e92552921..60e99c04c3 100644 --- a/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml +++ b/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   height="380"   layout="topleft" @@ -99,4 +99,4 @@        <button.commit_callback         function="Postcard.Send" />      </button> -</panel>
\ No newline at end of file +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/en/panel_snapshot_profile.xml index 2fdbee49f0..f0219da88f 100644 --- a/indra/newview/skins/default/xui/en/panel_snapshot_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_snapshot_profile.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   height="380"   layout="topleft" @@ -165,4 +165,4 @@        <button.commit_callback         function="PostToProfile.Send" />      </button> -</panel>
\ No newline at end of file +</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 3dbb7fb7fc..7598f7d7e5 100644 --- a/indra/newview/skins/default/xui/en/panel_sound_devices.xml +++ b/indra/newview/skins/default/xui/en/panel_sound_devices.xml @@ -1,3 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   background_visible="false"   bg_alpha_color="DkGray" @@ -122,7 +123,7 @@       layout="topleft"       left_pad="5"       name="wait_text" -     top_delta="-1" +     top_delta="2"       width="110">          Please wait      </text> @@ -132,7 +133,7 @@       layout="topleft"       left_delta="0"       name="bar0" -     top_delta="-2" +     top_delta="-5"       width="20" />    <locate       follows="right|top" @@ -166,4 +167,26 @@       name="bar4"       top_delta="0"       width="20" /> -</panel>
\ No newline at end of file +    <text +     type="string" +     name="disabled_text" +     text_color="EmphasisColor" +     length="1" +     follows="right|top" +     height="18" +     layout="topleft" +     left_delta="-100" +     top_delta="5" +     width="110"> +        Disabled +    </text> +    <button +       follows="right|top" +       height="23" +       layout="topleft" +       left_delta="0" +       name="unmute_btn" +       label="Unmute" +       top_delta="-6" +       width="110" /> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/en/panel_stand_stop_flying.xml index 07642946f8..76b6713d43 100644 --- a/indra/newview/skins/default/xui/en/panel_stand_stop_flying.xml +++ b/indra/newview/skins/default/xui/en/panel_stand_stop_flying.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!-- Width and height of this panel should be synchronized with "panel_modes" in the floater_moveview.xml-->  <panel   height="25" diff --git a/indra/newview/skins/default/xui/en/panel_status_bar.xml b/indra/newview/skins/default/xui/en/panel_status_bar.xml index b711ed0e1c..4501e0df3a 100644 --- a/indra/newview/skins/default/xui/en/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   background_opaque="true"   background_visible="true" diff --git a/indra/newview/skins/default/xui/en/panel_teleport_history.xml b/indra/newview/skins/default/xui/en/panel_teleport_history.xml index 55c47c90a4..2154b9983d 100644 --- a/indra/newview/skins/default/xui/en/panel_teleport_history.xml +++ b/indra/newview/skins/default/xui/en/panel_teleport_history.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel name="Teleport History" bottom="0" height="400" left="0" width="313"       help_topic="panel_teleport_history"       border="false" follows="left|top|right|bottom" diff --git a/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml index 5c728718ef..6331458eb7 100644 --- a/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   follows="top|right|left"   height="20" diff --git a/indra/newview/skins/default/xui/en/panel_toolbar_view.xml b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml index a3348f28c7..5e724be765 100644 --- a/indra/newview/skins/default/xui/en/panel_toolbar_view.xml +++ b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toolbar_view   follows="all"   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_tools_texture.xml b/indra/newview/skins/default/xui/en/panel_tools_texture.xml index fe01996623..e80f315259 100644 --- a/indra/newview/skins/default/xui/en/panel_tools_texture.xml +++ b/indra/newview/skins/default/xui/en/panel_tools_texture.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel           border="false"           follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml b/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml index fc527f5f9d..839bf71c40 100644 --- a/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   background_visible="true"   background_opaque="false" diff --git a/indra/newview/skins/default/xui/en/panel_voice_effect.xml b/indra/newview/skins/default/xui/en/panel_voice_effect.xml index 93e79b7328..42cd510efd 100644 --- a/indra/newview/skins/default/xui/en/panel_voice_effect.xml +++ b/indra/newview/skins/default/xui/en/panel_voice_effect.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   follows="all"   height="26" diff --git a/indra/newview/skins/default/xui/en/panel_volume_pulldown.xml b/indra/newview/skins/default/xui/en/panel_volume_pulldown.xml index b4eb1ade94..75e76f599b 100644 --- a/indra/newview/skins/default/xui/en/panel_volume_pulldown.xml +++ b/indra/newview/skins/default/xui/en/panel_volume_pulldown.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   background_opaque="true"   background_visible="true" @@ -74,7 +74,7 @@          is_toggle="true"          layout="topleft"          left_pad="5" -        name="mute_audio" +        name="mute_audio_ui"          tab_stop="false"          width="16" />      <slider @@ -107,7 +107,7 @@       is_toggle="true"       layout="topleft"       left_pad="5" -     name="mute_audio" +     name="mute_audio_ambient"       tab_stop="false"       width="16" />      <slider @@ -140,7 +140,7 @@       is_toggle="true"       layout="topleft"       left_pad="5" -     name="mute_audio" +     name="mute_audio_sounds"       tab_stop="false"       width="16">        <button.commit_callback @@ -186,7 +186,7 @@       is_toggle="true"       layout="topleft"       left_pad="5" -     name="mute_audio" +     name="mute_audio_music"       tab_stop="false"       width="16" />      <check_box @@ -199,7 +199,8 @@          top_delta="2"          width="350">          <check_box.commit_callback -            function="Vol.updateMediaAutoPlayCheckbox"/> +            function="Vol.updateCheckbox" +            parameter="MediaAutoPlay"/>      </check_box>      <slider          control_name="AudioLevelMedia" @@ -231,7 +232,7 @@          is_toggle="true"          layout="topleft"          left_pad="5" -        name="mute_audio" +        name="mute_audio_media"          tab_stop="false"          width="16" />      <check_box @@ -246,7 +247,8 @@          name="enable_media"          width="110">          <check_box.commit_callback -            function="Vol.updateMediaAutoPlayCheckbox"/> +            function="Vol.updateCheckbox" +            parameter="MediaAutoPlay"/>      </check_box>      <slider          control_name="AudioLevelVoice" @@ -278,7 +280,7 @@          is_toggle="true"          layout="topleft"          left_pad="5" -        name="mute_audio" +        name="mute_audio_voice"          tab_stop="false"          width="16" />      <check_box @@ -292,5 +294,6 @@          top_delta="2"          left_pad="5"          name="enable_voice_check" -        width="110"/> +        width="110" +        />  </panel> diff --git a/indra/newview/skins/default/xui/en/panel_world_map.xml b/indra/newview/skins/default/xui/en/panel_world_map.xml index 16860a6117..c436f69c59 100644 --- a/indra/newview/skins/default/xui/en/panel_world_map.xml +++ b/indra/newview/skins/default/xui/en/panel_world_map.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel   follows="left|top|right|bottom"   height="300" diff --git a/indra/newview/skins/default/xui/en/role_actions.xml b/indra/newview/skins/default/xui/en/role_actions.xml index bda08f3421..af371dea26 100644 --- a/indra/newview/skins/default/xui/en/role_actions.xml +++ b/indra/newview/skins/default/xui/en/role_actions.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <role_actions>  	<action_set  	     description="These Abilities include powers to add and remove group Members, and allow new Members to join without an invitation." diff --git a/indra/newview/skins/default/xui/en/script_editor.xml b/indra/newview/skins/default/xui/en/script_editor.xml index f1c6161711..68aa725606 100644 --- a/indra/newview/skins/default/xui/en/script_editor.xml +++ b/indra/newview/skins/default/xui/en/script_editor.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <script_editor   name="script_editor"   parse_urls="false" diff --git a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml index 1777a0db05..c898b0989e 100644 --- a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel  background_visible="true"  default_tab_group="1" diff --git a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml index 76d0ffcb8e..de47e05291 100644 --- a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel  	  follows="all"  	  height="570" diff --git a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml index ad521cb1af..bdb4b545c1 100644 --- a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel    follows="all"    height="570" @@ -288,7 +288,7 @@ TestString PleaseIgnore          height="15"          follows="left|top"          layout="topleft" -        name="perm_modify" +        name="you_perm_modify"          width="200">          You can:        </text> @@ -401,7 +401,7 @@ TestString PleaseIgnore          layout="topleft"          left="5"          right="-5" -        name="cost_text_border" +        name="cost_text_border1"          top_pad="9"/>        <check_box diff --git a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml index faff6185ab..1276f3bad3 100644 --- a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel  	 height="570"  	 layout="topleft" diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 5d33853adc..dad356eca4 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!-- This file contains strings that used to be hardcoded in the source.       It is only for those strings which do not belong in a floater.       For example, the strings used in avatar chat bubbles, and strings @@ -3940,6 +3940,8 @@ Abuse Report</string>    <string name="DefaultMimeType">none/none</string>    <string name="texture_load_dimensions_error">Can't load images larger than [WIDTH]*[HEIGHT]</string> +  <string name="texture_load_format_error">Incorrect image format.</string> +  <string name="texture_load_empty_file">File is empty.</string>    <string name="outfit_photo_load_dimensions_error">Max outfit photo size is [WIDTH]*[HEIGHT]. Please resize or use another image</string>    <string name="outfit_photo_select_dimensions_error">Max outfit photo size is [WIDTH]*[HEIGHT]. Please select another texture</string>    <string name="outfit_photo_verify_dimensions_error">Cannot verify photo dimensions. Please wait until photo size is displayed in picker</string> diff --git a/indra/newview/skins/default/xui/en/teleport_strings.xml b/indra/newview/skins/default/xui/en/teleport_strings.xml index 1456114b25..1b45cdb191 100644 --- a/indra/newview/skins/default/xui/en/teleport_strings.xml +++ b/indra/newview/skins/default/xui/en/teleport_strings.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <teleport_messages>  	<message_set name="errors">  		<message name="invalid_tport"> diff --git a/indra/newview/skins/default/xui/en/widgets/accordion.xml b/indra/newview/skins/default/xui/en/widgets/accordion.xml index 55dde492ca..8c5f6ebfc2 100644 --- a/indra/newview/skins/default/xui/en/widgets/accordion.xml +++ b/indra/newview/skins/default/xui/en/widgets/accordion.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <accordion   height="100"   name="accordion" diff --git a/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml b/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml index 6f68c99021..53d1e18a84 100644 --- a/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml +++ b/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <accordion_tab      header_bg_color="DkGray2"      header_collapse_img="Accordion_ArrowClosed_Off" diff --git a/indra/newview/skins/default/xui/en/widgets/avatar_icon.xml b/indra/newview/skins/default/xui/en/widgets/avatar_icon.xml index 7f8fac04d0..260dc78008 100644 --- a/indra/newview/skins/default/xui/en/widgets/avatar_icon.xml +++ b/indra/newview/skins/default/xui/en/widgets/avatar_icon.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <avatar_icon name="avatar_icon"  						 default_icon_name="Generic_Person_Large" diff --git a/indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml b/indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml index 8a4ccb19f9..7dde1e6d1c 100644 --- a/indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml +++ b/indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <avatar_list_item   name_right_pad="5"   height="0" diff --git a/indra/newview/skins/default/xui/en/widgets/badge.xml b/indra/newview/skins/default/xui/en/widgets/badge.xml index 738d150f64..b1d92b1609 100644 --- a/indra/newview/skins/default/xui/en/widgets/badge.xml +++ b/indra/newview/skins/default/xui/en/widgets/badge.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!-- Additional attributes:     -->  <badge name="badge" diff --git a/indra/newview/skins/default/xui/en/widgets/bodyparts_list_item.xml b/indra/newview/skins/default/xui/en/widgets/bodyparts_list_item.xml index 0016a8cf53..b99b097096 100644 --- a/indra/newview/skins/default/xui/en/widgets/bodyparts_list_item.xml +++ b/indra/newview/skins/default/xui/en/widgets/bodyparts_list_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <bodyparts_list_item   follows="top|right|left"   height="23" diff --git a/indra/newview/skins/default/xui/en/widgets/button.xml b/indra/newview/skins/default/xui/en/widgets/button.xml index 2b2c3faf91..090447a6a2 100644 --- a/indra/newview/skins/default/xui/en/widgets/button.xml +++ b/indra/newview/skins/default/xui/en/widgets/button.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!-- Additional attributes:    image_pressed  	image_pressed_selected diff --git a/indra/newview/skins/default/xui/en/widgets/chat_editor.xml b/indra/newview/skins/default/xui/en/widgets/chat_editor.xml index f9facb593a..1e6a5aed88 100644 --- a/indra/newview/skins/default/xui/en/widgets/chat_editor.xml +++ b/indra/newview/skins/default/xui/en/widgets/chat_editor.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <chat_editor    name="chat_editor"    show_context_menu="true"/> diff --git a/indra/newview/skins/default/xui/en/widgets/chat_history.xml b/indra/newview/skins/default/xui/en/widgets/chat_history.xml index c0a948931c..d1e7a9b451 100644 --- a/indra/newview/skins/default/xui/en/widgets/chat_history.xml +++ b/indra/newview/skins/default/xui/en/widgets/chat_history.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <chat_history    message_header="panel_chat_header.xml"    message_separator="panel_chat_separator.xml" @@ -22,4 +22,4 @@      parse_urls="false"      word_wrap="true"      /> -</chat_history>
\ No newline at end of file +</chat_history> diff --git a/indra/newview/skins/default/xui/en/widgets/check_box.xml b/indra/newview/skins/default/xui/en/widgets/check_box.xml index 8947024e45..eef935dafc 100644 --- a/indra/newview/skins/default/xui/en/widgets/check_box.xml +++ b/indra/newview/skins/default/xui/en/widgets/check_box.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <check_box font="SansSerifSmall"             follows="left|top">    <check_box.label_text name="checkbox label" diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml index 4bc295f747..2700eed3f0 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <chiclet_offer   height="23"   name="offer_chiclet" @@ -27,4 +27,4 @@    name="new_message_icon"    visible="false"    width="14" /> -</chiclet_offer>
\ No newline at end of file +</chiclet_offer> diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_panel.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_panel.xml index 5f51f4afd9..e097ad3dcd 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_panel.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_panel.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <chiclet_panel   name="chiclet_panel"   chiclet_padding="3" @@ -6,4 +6,4 @@   scroll_button_hpad="0"   scroll_ratio="10"   min_width="180" - />
\ No newline at end of file + /> diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml index db6a9434df..09d6aa6162 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <chiclet_script   height="23"   name="script_chiclet" @@ -27,4 +27,4 @@    name="new_message_icon"    visible="false"    width="14" /> -</chiclet_script>
\ No newline at end of file +</chiclet_script> diff --git a/indra/newview/skins/default/xui/en/widgets/clothing_list_item.xml b/indra/newview/skins/default/xui/en/widgets/clothing_list_item.xml index d83f44737e..bd449f6556 100644 --- a/indra/newview/skins/default/xui/en/widgets/clothing_list_item.xml +++ b/indra/newview/skins/default/xui/en/widgets/clothing_list_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <clothing_list_item   follows="top|right|left"   height="23" diff --git a/indra/newview/skins/default/xui/en/widgets/color_swatch.xml b/indra/newview/skins/default/xui/en/widgets/color_swatch.xml index ab3de1eaab..7ae9158e65 100644 --- a/indra/newview/skins/default/xui/en/widgets/color_swatch.xml +++ b/indra/newview/skins/default/xui/en/widgets/color_swatch.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <color_swatch alpha_background_image="color_swatch_alpha.tga"                border_color="ColorSwatchBorderColor"                name="colorswatch"> diff --git a/indra/newview/skins/default/xui/en/widgets/combo_box.xml b/indra/newview/skins/default/xui/en/widgets/combo_box.xml index 65f9a143e9..daec17c2f9 100644 --- a/indra/newview/skins/default/xui/en/widgets/combo_box.xml +++ b/indra/newview/skins/default/xui/en/widgets/combo_box.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <combo_box font="SansSerifSmall"             list_position="below"             max_chars="20" diff --git a/indra/newview/skins/default/xui/en/widgets/context_menu.xml b/indra/newview/skins/default/xui/en/widgets/context_menu.xml index 459706c689..a712b41a2a 100644 --- a/indra/newview/skins/default/xui/en/widgets/context_menu.xml +++ b/indra/newview/skins/default/xui/en/widgets/context_menu.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu visible="false"/> diff --git a/indra/newview/skins/default/xui/en/widgets/conversation_view_participant.xml b/indra/newview/skins/default/xui/en/widgets/conversation_view_participant.xml index b83d9122f7..cf995e5833 100644 --- a/indra/newview/skins/default/xui/en/widgets/conversation_view_participant.xml +++ b/indra/newview/skins/default/xui/en/widgets/conversation_view_participant.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <conversation_view_participant    folder_arrow_image="Folder_Arrow"    item_height="24"  diff --git a/indra/newview/skins/default/xui/en/widgets/conversation_view_session.xml b/indra/newview/skins/default/xui/en/widgets/conversation_view_session.xml index b8c39eec1d..b876dd8351 100644 --- a/indra/newview/skins/default/xui/en/widgets/conversation_view_session.xml +++ b/indra/newview/skins/default/xui/en/widgets/conversation_view_session.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <conversation_view_session    folder_arrow_image="Folder_Arrow"    folder_indentation="8" diff --git a/indra/newview/skins/default/xui/en/widgets/deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/en/widgets/deletable_wearable_list_item.xml index 0534485ddd..18839a94ae 100644 --- a/indra/newview/skins/default/xui/en/widgets/deletable_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/en/widgets/deletable_wearable_list_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <deletable_wearable_list_item    follows="top|right|left"    height="23" diff --git a/indra/newview/skins/default/xui/en/widgets/density_ctrl.xml b/indra/newview/skins/default/xui/en/widgets/density_ctrl.xml index eb665fd3cb..6fd0c291cd 100644 --- a/indra/newview/skins/default/xui/en/widgets/density_ctrl.xml +++ b/indra/newview/skins/default/xui/en/widgets/density_ctrl.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <densityctrl   border="true"   follows="all" diff --git a/indra/newview/skins/default/xui/en/widgets/drop_down.xml b/indra/newview/skins/default/xui/en/widgets/drop_down.xml index 602250ace6..75ed485645 100644 --- a/indra/newview/skins/default/xui/en/widgets/drop_down.xml +++ b/indra/newview/skins/default/xui/en/widgets/drop_down.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <drop_down text_enabled_color="LabelTextColor"             text_disabled_color="LabelDisabledColor"             font="SansSerifSmall" diff --git a/indra/newview/skins/default/xui/en/widgets/dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/en/widgets/dummy_clothing_list_item.xml index 8c805da048..71119d7c9e 100644 --- a/indra/newview/skins/default/xui/en/widgets/dummy_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/en/widgets/dummy_clothing_list_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <dummy_clothing_list_item   follows="top|right|left"   height="23" diff --git a/indra/newview/skins/default/xui/en/widgets/expandable_text.xml b/indra/newview/skins/default/xui/en/widgets/expandable_text.xml index c6331ec87b..15c7a40647 100644 --- a/indra/newview/skins/default/xui/en/widgets/expandable_text.xml +++ b/indra/newview/skins/default/xui/en/widgets/expandable_text.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <expandable_text   max_height="300" >   <textbox diff --git a/indra/newview/skins/default/xui/en/widgets/filter_editor.xml b/indra/newview/skins/default/xui/en/widgets/filter_editor.xml index 9c80deeafc..604f62b099 100644 --- a/indra/newview/skins/default/xui/en/widgets/filter_editor.xml +++ b/indra/newview/skins/default/xui/en/widgets/filter_editor.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <filter_editor    name="filter_editor"    clear_button_visible="true" diff --git a/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml b/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml index e05ddf9815..c376e455a1 100644 --- a/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml +++ b/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <flat_list_view   allow_select="true"   color="PanelFocusBackgroundColor" @@ -13,4 +13,4 @@       h_pad="10"       value="No matches found"       wrap="true" /> -</flat_list_view>
\ No newline at end of file +</flat_list_view> diff --git a/indra/newview/skins/default/xui/en/widgets/floater.xml b/indra/newview/skins/default/xui/en/widgets/floater.xml index 807b67d112..11758556d6 100644 --- a/indra/newview/skins/default/xui/en/widgets/floater.xml +++ b/indra/newview/skins/default/xui/en/widgets/floater.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!-- See also settings.xml UIFloater* settings for configuration -->  <floater   name="floater" diff --git a/indra/newview/skins/default/xui/en/widgets/flyout_button.xml b/indra/newview/skins/default/xui/en/widgets/flyout_button.xml index 83df10e417..e42bef4a45 100644 --- a/indra/newview/skins/default/xui/en/widgets/flyout_button.xml +++ b/indra/newview/skins/default/xui/en/widgets/flyout_button.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <flyout_button list_position="below" height="23">    <action_button scale_image="true"                  image_selected="SegmentedBtn_Left_Selected" @@ -9,4 +9,4 @@                  image_disabled="ComboButton_Disabled"                  pad_right="6"                  tab_stop="false"/> -</flyout_button>
\ No newline at end of file +</flyout_button> diff --git a/indra/newview/skins/default/xui/en/widgets/folder_view_item.xml b/indra/newview/skins/default/xui/en/widgets/folder_view_item.xml index bbd53ccb12..b598bbccd8 100644 --- a/indra/newview/skins/default/xui/en/widgets/folder_view_item.xml +++ b/indra/newview/skins/default/xui/en/widgets/folder_view_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <folder_view_item    folder_arrow_image="Folder_Arrow"    folder_indentation="8" diff --git a/indra/newview/skins/default/xui/en/widgets/gesture_combo_list.xml b/indra/newview/skins/default/xui/en/widgets/gesture_combo_list.xml index 808683864d..14cd3e159c 100644 --- a/indra/newview/skins/default/xui/en/widgets/gesture_combo_list.xml +++ b/indra/newview/skins/default/xui/en/widgets/gesture_combo_list.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <gesture_combo_list      follows="right|top">      <gesture_combo_list.combo_button diff --git a/indra/newview/skins/default/xui/en/widgets/group_icon.xml b/indra/newview/skins/default/xui/en/widgets/group_icon.xml index 36ee6dd7eb..73a0acd80d 100644 --- a/indra/newview/skins/default/xui/en/widgets/group_icon.xml +++ b/indra/newview/skins/default/xui/en/widgets/group_icon.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <group_icon   default_icon_name="Generic_Group"   image_name="Generic_Group" diff --git a/indra/newview/skins/default/xui/en/widgets/hint_popup.xml b/indra/newview/skins/default/xui/en/widgets/hint_popup.xml index 92080df154..2e548476b6 100644 --- a/indra/newview/skins/default/xui/en/widgets/hint_popup.xml +++ b/indra/newview/skins/default/xui/en/widgets/hint_popup.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <hint_popup   name="hint"   background_opaque="true" diff --git a/indra/newview/skins/default/xui/en/widgets/icon.xml b/indra/newview/skins/default/xui/en/widgets/icon.xml index cf8edfcedb..a4ea15f88a 100644 --- a/indra/newview/skins/default/xui/en/widgets/icon.xml +++ b/indra/newview/skins/default/xui/en/widgets/icon.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <icon color="1.0 1.0 1.0 1.0"        tab_stop="false"        mouse_opaque="false" diff --git a/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml b/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml index 590a4730a9..27ec6ded81 100644 --- a/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml +++ b/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <inbox_folder_view_folder    folder_arrow_image="Folder_Arrow"    folder_indentation="8" diff --git a/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_item.xml b/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_item.xml index 7a7a6e9a09..09cbb1d3ab 100644 --- a/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_item.xml +++ b/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <inbox_folder_view_item    item_height="20"     item_top_pad="4" diff --git a/indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml b/indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml index 92f815d4bf..fadca90972 100644 --- a/indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml +++ b/indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <inbox_inventory_panel start_folder.type="inbox"/> diff --git a/indra/newview/skins/default/xui/en/widgets/inspector.xml b/indra/newview/skins/default/xui/en/widgets/inspector.xml index 8c171c387f..3c8e7c7940 100644 --- a/indra/newview/skins/default/xui/en/widgets/inspector.xml +++ b/indra/newview/skins/default/xui/en/widgets/inspector.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <inspector name="inspector"             max_width="300"             bg_opaque_color="DkGray_66" diff --git a/indra/newview/skins/default/xui/en/widgets/inventory_list_item.xml b/indra/newview/skins/default/xui/en/widgets/inventory_list_item.xml index da9059c819..ce36a39a21 100644 --- a/indra/newview/skins/default/xui/en/widgets/inventory_list_item.xml +++ b/indra/newview/skins/default/xui/en/widgets/inventory_list_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <inventory_list_item    follows="top|right|left"    height="20" diff --git a/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml b/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml index d5efd723c4..15e28746db 100644 --- a/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml +++ b/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel    bg_opaque_color="InventoryBackgroundColor"    background_visible="true" diff --git a/indra/newview/skins/default/xui/en/widgets/joystick_quat.xml b/indra/newview/skins/default/xui/en/widgets/joystick_quat.xml index a190da3909..bfde1dc752 100644 --- a/indra/newview/skins/default/xui/en/widgets/joystick_quat.xml +++ b/indra/newview/skins/default/xui/en/widgets/joystick_quat.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <joystick_rotate     image_selected="Cam_Rotate_In"     image_unselected="Cam_Rotate_Out" diff --git a/indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml b/indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml index cbf721b346..55159d8ba7 100644 --- a/indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml +++ b/indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <joystick_quat     image_selected="Cam_Rotate_In"     image_unselected="Cam_Rotate_Out" diff --git a/indra/newview/skins/default/xui/en/widgets/layout_stack.xml b/indra/newview/skins/default/xui/en/widgets/layout_stack.xml index 48bcb46533..375fab9403 100644 --- a/indra/newview/skins/default/xui/en/widgets/layout_stack.xml +++ b/indra/newview/skins/default/xui/en/widgets/layout_stack.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!-- Global settings for all widgets ("UI Controls") -->  <!-- The params in this file aren't currently getting loaded in OSX -->  <layout_stack name="stack"/>  diff --git a/indra/newview/skins/default/xui/en/widgets/line_editor.xml b/indra/newview/skins/default/xui/en/widgets/line_editor.xml index f39e086196..d37bee27ba 100644 --- a/indra/newview/skins/default/xui/en/widgets/line_editor.xml +++ b/indra/newview/skins/default/xui/en/widgets/line_editor.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <line_editor background_image="TextField_Off"               background_image_disabled="TextField_Disabled"               background_image_focused="TextField_Active" diff --git a/indra/newview/skins/default/xui/en/widgets/list_view.xml b/indra/newview/skins/default/xui/en/widgets/list_view.xml index 2e976bc755..5fb134535b 100644 --- a/indra/newview/skins/default/xui/en/widgets/list_view.xml +++ b/indra/newview/skins/default/xui/en/widgets/list_view.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <list_view    fg_selected_color="ListViewSelectedFgColor"    bg_selected_color="ListViewSelectedBgColor" diff --git a/indra/newview/skins/default/xui/en/widgets/loading_indicator.xml b/indra/newview/skins/default/xui/en/widgets/loading_indicator.xml index ea1d89c975..af4b9aa1ee 100644 --- a/indra/newview/skins/default/xui/en/widgets/loading_indicator.xml +++ b/indra/newview/skins/default/xui/en/widgets/loading_indicator.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <loading_indicator      follows="left|top"      mouse_opaque="false" @@ -19,4 +19,4 @@      <image name="Progress_11"/>      <image name="Progress_12"/>    </images> -</loading_indicator>
\ No newline at end of file +</loading_indicator> diff --git a/indra/newview/skins/default/xui/en/widgets/location_input.xml b/indra/newview/skins/default/xui/en/widgets/location_input.xml index 674be59753..d12f1434a8 100644 --- a/indra/newview/skins/default/xui/en/widgets/location_input.xml +++ b/indra/newview/skins/default/xui/en/widgets/location_input.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!--  *TODO: Replace hardcoded buttons width/height with getting this info from the button images.         Currently that doesn't work because LLUIImage::getWidth/getHeight() return 1 for the images. diff --git a/indra/newview/skins/default/xui/en/widgets/menu.xml b/indra/newview/skins/default/xui/en/widgets/menu.xml index 13ac84beb2..285c0207fb 100644 --- a/indra/newview/skins/default/xui/en/widgets/menu.xml +++ b/indra/newview/skins/default/xui/en/widgets/menu.xml @@ -1,8 +1,9 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <menu name="menu"         bg_color="MenuDefaultBgColor"        bg_visible="true"        drop_shadow="true"        tear_off="false" +      font="SansSerifSmall"         shortcut_pad="15">  </menu> diff --git a/indra/newview/skins/default/xui/en/widgets/menu_bar.xml b/indra/newview/skins/default/xui/en/widgets/menu_bar.xml index 27efa72563..8867e97b6c 100644 --- a/indra/newview/skins/default/xui/en/widgets/menu_bar.xml +++ b/indra/newview/skins/default/xui/en/widgets/menu_bar.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <menu_bar  			tear_off = "false"  			keep_fixed_size = "true" diff --git a/indra/newview/skins/default/xui/en/widgets/menu_item.xml b/indra/newview/skins/default/xui/en/widgets/menu_item.xml index 563f3dc5c2..fb890985ce 100644 --- a/indra/newview/skins/default/xui/en/widgets/menu_item.xml +++ b/indra/newview/skins/default/xui/en/widgets/menu_item.xml @@ -1,3 +1,3 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!-- Use this for the top-level menu styling -->  <menu_item font="SansSerifSmall" /> diff --git a/indra/newview/skins/default/xui/en/widgets/menu_item_call.xml b/indra/newview/skins/default/xui/en/widgets/menu_item_call.xml index 24bda97f44..db46e6ddfc 100644 --- a/indra/newview/skins/default/xui/en/widgets/menu_item_call.xml +++ b/indra/newview/skins/default/xui/en/widgets/menu_item_call.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <menu_item_call enabled_color="MenuItemEnabledColor"  	disabled_color="MenuItemDisabledColor"  	highlight_bg_color="MenuItemHighlightBgColor" diff --git a/indra/newview/skins/default/xui/en/widgets/menu_item_check.xml b/indra/newview/skins/default/xui/en/widgets/menu_item_check.xml index f6b06cb50b..92478be7da 100644 --- a/indra/newview/skins/default/xui/en/widgets/menu_item_check.xml +++ b/indra/newview/skins/default/xui/en/widgets/menu_item_check.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <menu_item_check enabled_color="MenuItemEnabledColor"  	disabled_color="MenuItemDisabledColor"  	highlight_bg_color="MenuItemHighlightBgColor" diff --git a/indra/newview/skins/default/xui/en/widgets/menu_item_separator.xml b/indra/newview/skins/default/xui/en/widgets/menu_item_separator.xml index 7452d685eb..366d9284aa 100644 --- a/indra/newview/skins/default/xui/en/widgets/menu_item_separator.xml +++ b/indra/newview/skins/default/xui/en/widgets/menu_item_separator.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <menu_item_separator enabled_color="MenuItemEnabledColor"                       name="separator"                       disabled_color="MenuItemDisabledColor" diff --git a/indra/newview/skins/default/xui/en/widgets/menu_item_tear_off.xml b/indra/newview/skins/default/xui/en/widgets/menu_item_tear_off.xml index 72af3924c1..82310e4f1a 100644 --- a/indra/newview/skins/default/xui/en/widgets/menu_item_tear_off.xml +++ b/indra/newview/skins/default/xui/en/widgets/menu_item_tear_off.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!-- Use "disabled color" to make it look like menu separators -->  <menu_item_tear_off enabled_color="MenuItemDisabledColor"                      name="tear_off" diff --git a/indra/newview/skins/default/xui/en/widgets/multi_slider.xml b/indra/newview/skins/default/xui/en/widgets/multi_slider.xml index 90b0625982..30fda073a6 100644 --- a/indra/newview/skins/default/xui/en/widgets/multi_slider.xml +++ b/indra/newview/skins/default/xui/en/widgets/multi_slider.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <multi_slider text_color="LabelTextColor"                mouse_opaque="true"                text_disabled_color="LabelDisabledColor" diff --git a/indra/newview/skins/default/xui/en/widgets/multi_slider_bar.xml b/indra/newview/skins/default/xui/en/widgets/multi_slider_bar.xml index bbcb008df4..a56c819b4d 100644 --- a/indra/newview/skins/default/xui/en/widgets/multi_slider_bar.xml +++ b/indra/newview/skins/default/xui/en/widgets/multi_slider_bar.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <multi_slider_bar name="multi_slider_bar"                    track_color="MultiSliderTrackColor"                    thumb_disabled_color="MultiSliderDisabledThumbColor" diff --git a/indra/newview/skins/default/xui/en/widgets/name_editor.xml b/indra/newview/skins/default/xui/en/widgets/name_editor.xml index 21ba5c77f8..1d7d23eb8f 100644 --- a/indra/newview/skins/default/xui/en/widgets/name_editor.xml +++ b/indra/newview/skins/default/xui/en/widgets/name_editor.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<name_editor default_text="(retrieving)"/>
\ No newline at end of file +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<name_editor default_text="(retrieving)"/> diff --git a/indra/newview/skins/default/xui/en/widgets/name_list.xml b/indra/newview/skins/default/xui/en/widgets/name_list.xml index 3ae0f68227..4ad2512ccd 100644 --- a/indra/newview/skins/default/xui/en/widgets/name_list.xml +++ b/indra/newview/skins/default/xui/en/widgets/name_list.xml @@ -1,3 +1,3 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <name_list name="name_list"             /> diff --git a/indra/newview/skins/default/xui/en/widgets/notification_list_view.xml b/indra/newview/skins/default/xui/en/widgets/notification_list_view.xml index 150225af27..4f87c58420 100644 --- a/indra/newview/skins/default/xui/en/widgets/notification_list_view.xml +++ b/indra/newview/skins/default/xui/en/widgets/notification_list_view.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <notification_list_view   allow_select="false"   color="PanelFocusBackgroundColor" @@ -15,4 +15,4 @@      top="20"      height="0"      width="318"/> -</notification_list_view>
\ No newline at end of file +</notification_list_view> diff --git a/indra/newview/skins/default/xui/en/widgets/output_monitor.xml b/indra/newview/skins/default/xui/en/widgets/output_monitor.xml index 9d71ceca2f..788c733ca8 100644 --- a/indra/newview/skins/default/xui/en/widgets/output_monitor.xml +++ b/indra/newview/skins/default/xui/en/widgets/output_monitor.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <output_monitor    draw_border="true"    follows="top|left" diff --git a/indra/newview/skins/default/xui/en/widgets/panel.xml b/indra/newview/skins/default/xui/en/widgets/panel.xml index b36f723831..77f3ef5675 100644 --- a/indra/newview/skins/default/xui/en/widgets/panel.xml +++ b/indra/newview/skins/default/xui/en/widgets/panel.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!-- Optional parameters:    border - show border around panel    bg_opaque_image - image name for "in-front" panel look @@ -12,4 +12,4 @@         background_visible="false"         background_opaque="false"         chrome="false" -       accepts_badge="true"/>
\ No newline at end of file +       accepts_badge="true"/> diff --git a/indra/newview/skins/default/xui/en/widgets/panel_camera_item.xml b/indra/newview/skins/default/xui/en/widgets/panel_camera_item.xml index 564f695cd0..ea49b750d1 100644 --- a/indra/newview/skins/default/xui/en/widgets/panel_camera_item.xml +++ b/indra/newview/skins/default/xui/en/widgets/panel_camera_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel_camera_item   background_visible="false"   height="30" diff --git a/indra/newview/skins/default/xui/en/widgets/person_tab_view.xml b/indra/newview/skins/default/xui/en/widgets/person_tab_view.xml index af5aec2c34..ad63a80a05 100644 --- a/indra/newview/skins/default/xui/en/widgets/person_tab_view.xml +++ b/indra/newview/skins/default/xui/en/widgets/person_tab_view.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <person_tab_view    folder_arrow_image="Folder_Arrow"    folder_indentation="5" diff --git a/indra/newview/skins/default/xui/en/widgets/person_view.xml b/indra/newview/skins/default/xui/en/widgets/person_view.xml index bfe6941a8a..82dbdf0dab 100644 --- a/indra/newview/skins/default/xui/en/widgets/person_view.xml +++ b/indra/newview/skins/default/xui/en/widgets/person_view.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <person_view    folder_arrow_image="Folder_Arrow"    folder_indentation="5" diff --git a/indra/newview/skins/default/xui/en/widgets/progress_bar.xml b/indra/newview/skins/default/xui/en/widgets/progress_bar.xml index 339e53fbb8..a9c90f0094 100644 --- a/indra/newview/skins/default/xui/en/widgets/progress_bar.xml +++ b/indra/newview/skins/default/xui/en/widgets/progress_bar.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <progress_bar image_bar="ProgressTrack"                image_fill="ProgressBar"                color_bar.red="0.5764" diff --git a/indra/newview/skins/default/xui/en/widgets/radio_group.xml b/indra/newview/skins/default/xui/en/widgets/radio_group.xml index ab3184d34b..a307e91990 100644 --- a/indra/newview/skins/default/xui/en/widgets/radio_group.xml +++ b/indra/newview/skins/default/xui/en/widgets/radio_group.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <radio_group name="radio_group"               mouse_opaque="false"               follows="left|top" diff --git a/indra/newview/skins/default/xui/en/widgets/radio_item.xml b/indra/newview/skins/default/xui/en/widgets/radio_item.xml index 3ddf18b2cb..b95e1add47 100644 --- a/indra/newview/skins/default/xui/en/widgets/radio_item.xml +++ b/indra/newview/skins/default/xui/en/widgets/radio_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <radio_item follows="left|top" font="SansSerif">    <radio_item.label_text name="Radio Item label"/>    <radio_item.check_button name="Radio control button" diff --git a/indra/newview/skins/default/xui/en/widgets/scroll_bar.xml b/indra/newview/skins/default/xui/en/widgets/scroll_bar.xml index 682dcf40d8..83a66da89e 100644 --- a/indra/newview/skins/default/xui/en/widgets/scroll_bar.xml +++ b/indra/newview/skins/default/xui/en/widgets/scroll_bar.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <scroll_bar thumb_image_vertical ="ScrollThumb_Vert"  			thumb_image_horizontal ="ScrollThumb_Horiz"              track_image_vertical ="ScrollTrack_Vert" diff --git a/indra/newview/skins/default/xui/en/widgets/scroll_column_header.xml b/indra/newview/skins/default/xui/en/widgets/scroll_column_header.xml index 8a48fcb32d..2575d33d96 100644 --- a/indra/newview/skins/default/xui/en/widgets/scroll_column_header.xml +++ b/indra/newview/skins/default/xui/en/widgets/scroll_column_header.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <scroll_column_header name="column_header"                        image_unselected="SegmentedBtn_Middle_Selected"                        image_selected="SegmentedBtn_Middle_Selected" diff --git a/indra/newview/skins/default/xui/en/widgets/scroll_container.xml b/indra/newview/skins/default/xui/en/widgets/scroll_container.xml index a6d096a964..a361d4fac8 100644 --- a/indra/newview/skins/default/xui/en/widgets/scroll_container.xml +++ b/indra/newview/skins/default/xui/en/widgets/scroll_container.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <scroll_container name="scroll_container"                    color="black"                    opaque="false" diff --git a/indra/newview/skins/default/xui/en/widgets/scroll_list.xml b/indra/newview/skins/default/xui/en/widgets/scroll_list.xml index e43989c6c7..9819e7a226 100644 --- a/indra/newview/skins/default/xui/en/widgets/scroll_list.xml +++ b/indra/newview/skins/default/xui/en/widgets/scroll_list.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <scroll_list name="scroll_list"                fg_unselected_color="ScrollUnselectedColor"               fg_selected_color="ScrollSelectedFGColor" diff --git a/indra/newview/skins/default/xui/en/widgets/scrolling_panel_list.xml b/indra/newview/skins/default/xui/en/widgets/scrolling_panel_list.xml index 40cbf5977a..019c4b7fc0 100644 --- a/indra/newview/skins/default/xui/en/widgets/scrolling_panel_list.xml +++ b/indra/newview/skins/default/xui/en/widgets/scrolling_panel_list.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<scrolling_panel_list name="scrolling_panel_list"/>
\ No newline at end of file +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<scrolling_panel_list name="scrolling_panel_list"/> diff --git a/indra/newview/skins/default/xui/en/widgets/search_combo_box.xml b/indra/newview/skins/default/xui/en/widgets/search_combo_box.xml index ce84cfedc0..61341188ed 100644 --- a/indra/newview/skins/default/xui/en/widgets/search_combo_box.xml +++ b/indra/newview/skins/default/xui/en/widgets/search_combo_box.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <search_combo_box   allow_text_entry="true"   list_position="below" @@ -28,4 +28,4 @@    height="13"     image_unselected="Search"    image_selected="Search" /> -</search_combo_box>
\ No newline at end of file +</search_combo_box> diff --git a/indra/newview/skins/default/xui/en/widgets/search_editor.xml b/indra/newview/skins/default/xui/en/widgets/search_editor.xml index 18d99f1ed1..51144c92b6 100644 --- a/indra/newview/skins/default/xui/en/widgets/search_editor.xml +++ b/indra/newview/skins/default/xui/en/widgets/search_editor.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <search_editor    name="search_editor"    clear_button_visible="false" diff --git a/indra/newview/skins/default/xui/en/widgets/side_tray.xml b/indra/newview/skins/default/xui/en/widgets/side_tray.xml index 022564c12f..3835c777b5 100644 --- a/indra/newview/skins/default/xui/en/widgets/side_tray.xml +++ b/indra/newview/skins/default/xui/en/widgets/side_tray.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <side_tray tab_btn_image="TaskPanel_Tab_Off"             tab_btn_image_selected="TaskPanel_Tab_Selected"             tab_btn_width="32" diff --git a/indra/newview/skins/default/xui/en/widgets/sidetray_tab.xml b/indra/newview/skins/default/xui/en/widgets/sidetray_tab.xml index aa8461d367..5d94cd7b2e 100644 --- a/indra/newview/skins/default/xui/en/widgets/sidetray_tab.xml +++ b/indra/newview/skins/default/xui/en/widgets/sidetray_tab.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <sidetray_tab     focus_root="true"    /> diff --git a/indra/newview/skins/default/xui/en/widgets/simple_text_editor.xml b/indra/newview/skins/default/xui/en/widgets/simple_text_editor.xml index a120b1aec8..b99010e17a 100644 --- a/indra/newview/skins/default/xui/en/widgets/simple_text_editor.xml +++ b/indra/newview/skins/default/xui/en/widgets/simple_text_editor.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <simple_text_editor    parse_urls="false"     mouse_opaque="true" diff --git a/indra/newview/skins/default/xui/en/widgets/slider.xml b/indra/newview/skins/default/xui/en/widgets/slider.xml index 6cceafc9ae..cb2c4e6b2c 100644 --- a/indra/newview/skins/default/xui/en/widgets/slider.xml +++ b/indra/newview/skins/default/xui/en/widgets/slider.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <slider name="slider"           can_edit_text="false"           font="SansSerifSmall" diff --git a/indra/newview/skins/default/xui/en/widgets/slider_bar.xml b/indra/newview/skins/default/xui/en/widgets/slider_bar.xml index 0335213ed6..1cfe3d68f9 100644 --- a/indra/newview/skins/default/xui/en/widgets/slider_bar.xml +++ b/indra/newview/skins/default/xui/en/widgets/slider_bar.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!--All horizontal sliders are configured to have no highlighted track. See EXT-5939. -->  <slider_bar follows="left|top"              track_color="SliderTrackColor" diff --git a/indra/newview/skins/default/xui/en/widgets/spinner.xml b/indra/newview/skins/default/xui/en/widgets/spinner.xml index d7af6077e5..12f03ab047 100644 --- a/indra/newview/skins/default/xui/en/widgets/spinner.xml +++ b/indra/newview/skins/default/xui/en/widgets/spinner.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <spinner text_enabled_color="LabelTextColor"           text_disabled_color="LabelDisabledColor"           font="SansSerifSmall"  @@ -14,4 +14,4 @@                         image_selected="Stepper_Down_Press"                         tab_stop="false"                         follows="left|bottom" /> -</spinner>
\ No newline at end of file +</spinner> diff --git a/indra/newview/skins/default/xui/en/widgets/split_button.xml b/indra/newview/skins/default/xui/en/widgets/split_button.xml index 2ff9ada90a..f85638166b 100644 --- a/indra/newview/skins/default/xui/en/widgets/split_button.xml +++ b/indra/newview/skins/default/xui/en/widgets/split_button.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <split_button   font="SansSerifSmall"   arrow_position="left" diff --git a/indra/newview/skins/default/xui/en/widgets/sun_moon_trackball.xml b/indra/newview/skins/default/xui/en/widgets/sun_moon_trackball.xml index 9fa77855c0..cdeff6ab05 100644 --- a/indra/newview/skins/default/xui/en/widgets/sun_moon_trackball.xml +++ b/indra/newview/skins/default/xui/en/widgets/sun_moon_trackball.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <sun_moon_trackball      name="virtualtrackball"      width="150" diff --git a/indra/newview/skins/default/xui/en/widgets/tab_container.xml b/indra/newview/skins/default/xui/en/widgets/tab_container.xml index 0586119681..22955fe73d 100644 --- a/indra/newview/skins/default/xui/en/widgets/tab_container.xml +++ b/indra/newview/skins/default/xui/en/widgets/tab_container.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!--  label_pad_bottom - vertical padding under tab button labels  label_pad_left - padding to the left of tab button labels diff --git a/indra/newview/skins/default/xui/en/widgets/talk_button.xml b/indra/newview/skins/default/xui/en/widgets/talk_button.xml index d792e9f29c..6468a023e3 100644 --- a/indra/newview/skins/default/xui/en/widgets/talk_button.xml +++ b/indra/newview/skins/default/xui/en/widgets/talk_button.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!-- Derives from LLUICtrl -->  <talk_button>    <!-- To make speak button look green when selected set: diff --git a/indra/newview/skins/default/xui/en/widgets/teleport_history_menu_item.xml b/indra/newview/skins/default/xui/en/widgets/teleport_history_menu_item.xml index 4f574d75d5..1b4ac4dba7 100644 --- a/indra/newview/skins/default/xui/en/widgets/teleport_history_menu_item.xml +++ b/indra/newview/skins/default/xui/en/widgets/teleport_history_menu_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!-- Menu items for the back button drop-down menu of locations.    Based on menu_item_call.xml -->  <teleport_history_menu_item diff --git a/indra/newview/skins/default/xui/en/widgets/text.xml b/indra/newview/skins/default/xui/en/widgets/text.xml index 2102074674..505d98368e 100644 --- a/indra/newview/skins/default/xui/en/widgets/text.xml +++ b/indra/newview/skins/default/xui/en/widgets/text.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <text parse_urls="true"        mouse_opaque="false"         name="text_box"  diff --git a/indra/newview/skins/default/xui/en/widgets/text_editor.xml b/indra/newview/skins/default/xui/en/widgets/text_editor.xml index 100571cc01..c359e52a92 100644 --- a/indra/newview/skins/default/xui/en/widgets/text_editor.xml +++ b/indra/newview/skins/default/xui/en/widgets/text_editor.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!-- Core parameters are in simple_text_editor.xml -->  <text_editor    name="text_editor" diff --git a/indra/newview/skins/default/xui/en/widgets/textbase.xml b/indra/newview/skins/default/xui/en/widgets/textbase.xml index b2da2147c1..ada907ca8f 100644 --- a/indra/newview/skins/default/xui/en/widgets/textbase.xml +++ b/indra/newview/skins/default/xui/en/widgets/textbase.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <textbase clip_partial="false"            halign="left"             valign="top"  diff --git a/indra/newview/skins/default/xui/en/widgets/texture_picker.xml b/indra/newview/skins/default/xui/en/widgets/texture_picker.xml index 1511116ba6..eb5344d311 100644 --- a/indra/newview/skins/default/xui/en/widgets/texture_picker.xml +++ b/indra/newview/skins/default/xui/en/widgets/texture_picker.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <texture_picker border_color="DefaultHighlightLight"                  name="texture picker"                  mouse_opaque="true" diff --git a/indra/newview/skins/default/xui/en/widgets/time.xml b/indra/newview/skins/default/xui/en/widgets/time.xml index b5bdd564a6..3162d49be4 100644 --- a/indra/newview/skins/default/xui/en/widgets/time.xml +++ b/indra/newview/skins/default/xui/en/widgets/time.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <time text_enabled_color="LabelTextColor"           text_disabled_color="LabelDisabledColor"           font="SansSerifSmall" diff --git a/indra/newview/skins/default/xui/en/widgets/toggleable_menu.xml b/indra/newview/skins/default/xui/en/widgets/toggleable_menu.xml index 48950a98ad..a9d17d0989 100644 --- a/indra/newview/skins/default/xui/en/widgets/toggleable_menu.xml +++ b/indra/newview/skins/default/xui/en/widgets/toggleable_menu.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toggleable_menu visible="false"/> diff --git a/indra/newview/skins/default/xui/en/widgets/tool_tip.xml b/indra/newview/skins/default/xui/en/widgets/tool_tip.xml index 9ca15ae50d..d0a9adece3 100644 --- a/indra/newview/skins/default/xui/en/widgets/tool_tip.xml +++ b/indra/newview/skins/default/xui/en/widgets/tool_tip.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <tool_tip name="tooltip"            max_width="200"            padding="4" diff --git a/indra/newview/skins/default/xui/en/widgets/toolbar.xml b/indra/newview/skins/default/xui/en/widgets/toolbar.xml index 0ace37a5dc..8345911525 100644 --- a/indra/newview/skins/default/xui/en/widgets/toolbar.xml +++ b/indra/newview/skins/default/xui/en/widgets/toolbar.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <toolbar pad_left="1"           pad_right="1"           pad_top="1" diff --git a/indra/newview/skins/default/xui/en/widgets/ui_ctrl.xml b/indra/newview/skins/default/xui/en/widgets/ui_ctrl.xml index f4dbb8f404..8a5dbc72ab 100644 --- a/indra/newview/skins/default/xui/en/widgets/ui_ctrl.xml +++ b/indra/newview/skins/default/xui/en/widgets/ui_ctrl.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!-- Global settings for all widgets ("UI Controls") -->  <!-- The params in this file aren't currently getting loaded in OSX -->  <ui_ctrl diff --git a/indra/newview/skins/default/xui/en/widgets/view_border.xml b/indra/newview/skins/default/xui/en/widgets/view_border.xml index bf40e3086b..db77f5a07e 100644 --- a/indra/newview/skins/default/xui/en/widgets/view_border.xml +++ b/indra/newview/skins/default/xui/en/widgets/view_border.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <view_border name="view_border"                highlight_light_color="DefaultHighlightLight"               highlight_dark_color="DefaultHighlightDark" @@ -8,4 +8,4 @@               border_style="line"               bevel_style="out"               mouse_opaque="false" -             follows="all"/>
\ No newline at end of file +             follows="all"/> diff --git a/indra/newview/skins/default/xui/en/widgets/wearable_outfit_list_item.xml b/indra/newview/skins/default/xui/en/widgets/wearable_outfit_list_item.xml index 866276f997..aa235e103b 100644 --- a/indra/newview/skins/default/xui/en/widgets/wearable_outfit_list_item.xml +++ b/indra/newview/skins/default/xui/en/widgets/wearable_outfit_list_item.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <inventory_list_item    follows="top|right|left"    height="20" diff --git a/indra/newview/skins/default/xui/en/widgets/web_browser.xml b/indra/newview/skins/default/xui/en/widgets/web_browser.xml index 676fafd828..8af330c84a 100644 --- a/indra/newview/skins/default/xui/en/widgets/web_browser.xml +++ b/indra/newview/skins/default/xui/en/widgets/web_browser.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <web_browser border_visible="true"               tab_stop="false"               /> diff --git a/indra/newview/skins/default/xui/en/widgets/window_shade.xml b/indra/newview/skins/default/xui/en/widgets/window_shade.xml index 23eb2f13fb..a0e26bc81c 100644 --- a/indra/newview/skins/default/xui/en/widgets/window_shade.xml +++ b/indra/newview/skins/default/xui/en/widgets/window_shade.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <window_shade shade_color="0 0 0 0.5"/> diff --git a/indra/newview/skins/default/xui/en/widgets/xy_vector.xml b/indra/newview/skins/default/xui/en/widgets/xy_vector.xml index 93ae26a6ad..23cde55f30 100644 --- a/indra/newview/skins/default/xui/en/widgets/xy_vector.xml +++ b/indra/newview/skins/default/xui/en/widgets/xy_vector.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <xy_vector      name="xyvector"      width="120" diff --git a/indra/newview/skins/default/xui/en/xui_version.xml b/indra/newview/skins/default/xui/en/xui_version.xml index 0e777751d3..2a8fd9c6c4 100644 --- a/indra/newview/skins/default/xui/en/xui_version.xml +++ b/indra/newview/skins/default/xui/en/xui_version.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?>  <xui_version>  	1.0  </xui_version> diff --git a/indra/newview/tests/llslurl_test.cpp b/indra/newview/tests/llslurl_test.cpp index eabf922875..8d21b6ed69 100644 --- a/indra/newview/tests/llslurl_test.cpp +++ b/indra/newview/tests/llslurl_test.cpp @@ -187,6 +187,12 @@ namespace tut  		ensure_equals("maps.secondlife.com slurl, region + coords", slurl.getSLURLString(),  					  "http://maps.secondlife.com/secondlife/myregion/1/2/3"); +		slurl = LLSLURL("secondlife://"); +		ensure_equals("secondlife: slurl, empty - type", slurl.getType(), LLSLURL::EMPTY); + +		slurl = LLSLURL("secondlife:///"); +		ensure_equals("secondlife: slurl, root - type", slurl.getType(), LLSLURL::EMPTY); +  		slurl = LLSLURL("secondlife://myregion");  		ensure_equals("secondlife: slurl, region only - type", slurl.getType(), LLSLURL::LOCATION);  		ensure_equals("secondlife: slurl, region only", slurl.getSLURLString(),  | 
