From eba6d0236fc9b7f4a54189766709948599d4b8a2 Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Wed, 21 Oct 2009 16:01:52 -0700
Subject: [PATCH 001/521] Backed out changeset: 57dc52edbbc9

---
 indra/llwindow/llwindowcallbacks.cpp |  5 +++
 indra/llwindow/llwindowcallbacks.h   |  1 +
 indra/llwindow/llwindowwin32.cpp     | 66 ++++++++++++++++++++++++++--
 indra/newview/llviewerwindow.cpp     | 14 ++++++
 indra/newview/llviewerwindow.h       |  3 +-
 5 files changed, 84 insertions(+), 5 deletions(-)

diff --git a/indra/llwindow/llwindowcallbacks.cpp b/indra/llwindow/llwindowcallbacks.cpp
index 72f99971499..fda2c7ee6f2 100644
--- a/indra/llwindow/llwindowcallbacks.cpp
+++ b/indra/llwindow/llwindowcallbacks.cpp
@@ -163,6 +163,11 @@ void LLWindowCallbacks::handleDataCopy(LLWindow *window, S32 data_type, void *da
 {
 }
 
+BOOL LLWindowCallbacks::handleDrop(LLWindow *window, LLCoordGL pos, MASK mask, void *data)
+{
+	return FALSE;
+}
+
 BOOL LLWindowCallbacks::handleTimerEvent(LLWindow *window)
 {
 	return FALSE;
diff --git a/indra/llwindow/llwindowcallbacks.h b/indra/llwindow/llwindowcallbacks.h
index abc66c42a28..e1e257943a4 100644
--- a/indra/llwindow/llwindowcallbacks.h
+++ b/indra/llwindow/llwindowcallbacks.h
@@ -68,6 +68,7 @@ class LLWindowCallbacks
 	virtual void handleWindowBlock(LLWindow *window);							// window is taking over CPU for a while
 	virtual void handleWindowUnblock(LLWindow *window);							// window coming back after taking over CPU for a while
 	virtual void handleDataCopy(LLWindow *window, S32 data_type, void *data);
+	virtual BOOL handleDrop(LLWindow *window, LLCoordGL pos, MASK mask, void *data);
 	virtual BOOL handleTimerEvent(LLWindow *window);
 	virtual BOOL handleDeviceChange(LLWindow *window);
 
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index c608c21d051..94c3e1af8c3 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -52,6 +52,7 @@
 #include <mapi.h>
 #include <process.h>	// for _spawn
 #include <shellapi.h>
+#include <fstream>
 #include <Imm.h>
 
 // Require DirectInput version 8
@@ -1348,6 +1349,9 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
 	}
 
 	SetWindowLong(mWindowHandle, GWL_USERDATA, (U32)this);
+
+	// register this window as handling drag/drop events from the OS
+	DragAcceptFiles( mWindowHandle, TRUE );
 	
 	//register joystick timer callback
 	SetTimer( mWindowHandle, 0, 1000 / 30, NULL ); // 30 fps timer
@@ -2333,11 +2337,65 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
 			return 0;
 
 		case WM_COPYDATA:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_COPYDATA");
-			// received a URL
-			PCOPYDATASTRUCT myCDS = (PCOPYDATASTRUCT) l_param;
-			window_imp->mCallbacks->handleDataCopy(window_imp, myCDS->dwData, myCDS->lpData);
+			{
+				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_COPYDATA");
+				// received a URL
+				PCOPYDATASTRUCT myCDS = (PCOPYDATASTRUCT) l_param;
+				window_imp->mCallbacks->handleDataCopy(window_imp, myCDS->dwData, myCDS->lpData);
+			};
 			return 0;			
+
+		case WM_DROPFILES:
+			{
+				// HDROP contains what we need
+				HDROP hdrop = (HDROP)w_param;
+
+				// get location in window space where drop occured and convert to OpenGL coordinate space
+				POINT pt;
+				DragQueryPoint( hdrop, &pt );
+				LLCoordGL gl_coord;
+				LLCoordWindow cursor_coord_window( pt.x, pt.y );
+				window_imp->convertCoords(cursor_coord_window, &gl_coord);
+
+				// get payload (eventually, this needs to more advanced and grab size of payload dynamically
+				static char file_name[ 1024 ];
+				DragQueryFileA( hdrop, 0, file_name, 1024 );
+				void* url = (void*)( file_name );
+
+				// if it's a .URL or .lnk ("shortcut") file
+				if ( std::string( file_name ).find( ".lnk" ) != std::string::npos ||
+					  std::string( file_name ).find( ".URL" ) != std::string::npos )
+				{
+					// read through file - looks like a 2 line file with second line URL= but who knows..
+					std::ifstream file_handle( file_name );
+					if ( file_handle.is_open() )
+					{
+						std::string line;
+						while ( ! file_handle.eof() )
+						{
+							std::getline( file_handle, line );
+							if ( ! file_handle.eof() )
+							{
+								std::string prefix( "URL=" );
+								if ( line.find( prefix, 0 ) != std::string::npos )
+								{
+									line = line.substr( 4 );  // skip off the URL= bit
+									strcpy( (char*)url, line.c_str() );
+									break;
+								};
+							};
+						};
+						file_handle.close();
+					};
+				};
+
+				MASK mask = gKeyboard->currentMask(TRUE);
+				if (window_imp->mCallbacks->handleDrop(window_imp, gl_coord, mask, url ) )
+				{
+					return 0;
+				}
+			}
+			break;
 		}
 
 	window_imp->mCallbacks->handlePauseWatchdog(window_imp);	
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index c659e58e476..2bda6eddbcd 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -815,6 +815,20 @@ BOOL LLViewerWindow::handleMiddleMouseDown(LLWindow *window,  LLCoordGL pos, MAS
   	// Always handled as far as the OS is concerned.
 	return TRUE;
 }
+
+BOOL LLViewerWindow::handleDrop(LLWindow *window,  LLCoordGL pos, MASK mask, void* data)
+{
+	LLPickInfo pick_info = pickImmediate( pos.mX, pos.mY,  TRUE /*BOOL pick_transparent*/ );
+
+	LLUUID object_id = pick_info.getObjectID();
+	S32 object_face = pick_info.mObjectFace;
+	std::string url = std::string( (char*)data );
+
+	llinfos << "### Object: picked at " << pos.mX << ", " << pos.mY << " - face = " << object_face << " - URL = " << url << llendl;
+
+  	// Always handled as far as the OS is concerned.
+	return TRUE;
+}
   
 BOOL LLViewerWindow::handleMiddleMouseUp(LLWindow *window,  LLCoordGL pos, MASK mask)
 {
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index d7c403739e4..44704b99e39 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -170,7 +170,8 @@ class LLViewerWindow : public LLWindowCallbacks
 	/*virtual*/ BOOL handleRightMouseUp(LLWindow *window,  LLCoordGL pos, MASK mask);
 	/*virtual*/ BOOL handleMiddleMouseDown(LLWindow *window,  LLCoordGL pos, MASK mask);
 	/*virtual*/ BOOL handleMiddleMouseUp(LLWindow *window,  LLCoordGL pos, MASK mask);
-	/*virtual*/ void handleMouseMove(LLWindow *window,  LLCoordGL pos, MASK mask);
+	/*virtual*/ BOOL handleDrop(LLWindow *window,  LLCoordGL pos, MASK mask, void* data);
+				void handleMouseMove(LLWindow *window,  LLCoordGL pos, MASK mask);
 	/*virtual*/ void handleMouseLeave(LLWindow *window);
 	/*virtual*/ void handleResize(LLWindow *window,  S32 x,  S32 y);
 	/*virtual*/ void handleFocus(LLWindow *window);
-- 
GitLab


From 19fc3fb32c3cd95fcfb5708b59b5620e506c5179 Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Wed, 21 Oct 2009 17:40:36 -0700
Subject: [PATCH 002/521] Add setting for PrimMediaDragNDrop, and add
 implementation that sets the current URL and auto play on drop

---
 indra/newview/app_settings/settings.xml | 11 +++++++++++
 indra/newview/llviewerwindow.cpp        | 24 +++++++++++++++++++-----
 2 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 91d5e046658..9adf893e4b8 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -5305,6 +5305,17 @@
       <key>Value</key>
 	  <integer>13</integer>
     </map>
+	<key>PrimMediaDragNDrop</key>
+	<map>
+		<key>Comment</key>
+		<string>Enable drag and drop</string>
+		<key>Persist</key>
+		<integer>1</integer>
+		<key>Type</key>
+		<string>Boolean</string>
+		<key>Value</key>
+		<integer>1</integer>
+	</map>
     <key>PrimMediaMaxRetries</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 2bda6eddbcd..a0802430865 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -79,6 +79,7 @@
 #include "timing.h"
 #include "llviewermenu.h"
 #include "lltooltip.h"
+#include "llmediaentry.h"
 
 // newview includes
 #include "llagent.h"
@@ -818,14 +819,27 @@ BOOL LLViewerWindow::handleMiddleMouseDown(LLWindow *window,  LLCoordGL pos, MAS
 
 BOOL LLViewerWindow::handleDrop(LLWindow *window,  LLCoordGL pos, MASK mask, void* data)
 {
-	LLPickInfo pick_info = pickImmediate( pos.mX, pos.mY,  TRUE /*BOOL pick_transparent*/ );
+	if (gSavedSettings.getBOOL("PrimMediaDragNDrop"))
+	{
+		LLPickInfo pick_info = pickImmediate( pos.mX, pos.mY,  TRUE /*BOOL pick_transparent*/ );
 
-	LLUUID object_id = pick_info.getObjectID();
-	S32 object_face = pick_info.mObjectFace;
-	std::string url = std::string( (char*)data );
+		LLUUID object_id = pick_info.getObjectID();
+		S32 object_face = pick_info.mObjectFace;
+		std::string url = std::string( (char*)data );
 
-	llinfos << "### Object: picked at " << pos.mX << ", " << pos.mY << " - face = " << object_face << " - URL = " << url << llendl;
+		llinfos << "### Object: picked at " << pos.mX << ", " << pos.mY << " - face = " << object_face << " - URL = " << url << llendl;
 
+		LLVOVolume *obj = dynamic_cast<LLVOVolume*>(static_cast<LLViewerObject*>(pick_info.getObject()));
+		if (obj)
+		{
+			LLSD media_data;
+			/// XXX home URL too?
+			media_data[LLMediaEntry::CURRENT_URL_KEY] = url;
+			media_data[LLMediaEntry::AUTO_PLAY_KEY] = true;
+			obj->syncMediaData(object_face, media_data, true, true);
+			obj->sendMediaDataUpdate();
+		}
+	}
   	// Always handled as far as the OS is concerned.
 	return TRUE;
 }
-- 
GitLab


From caa631bf5b69ef1e39989b8e1e4b3372491cb9b4 Mon Sep 17 00:00:00 2001
From: callum <none@none>
Date: Tue, 27 Oct 2009 17:52:04 -0700
Subject: [PATCH 003/521] Added IDropTarget interface. Still lots of cleanup
 but this works ok. You can drag over from Firefox or IE onto a prim

---
 indra/llwindow/lldragdropwin32.cpp   |  295 ++
 indra/llwindow/lldragdropwin32.h     |   55 +
 indra/llwindow/llwindowcallbacks.cpp |    2 +-
 indra/llwindow/llwindowcallbacks.h   |    2 +-
 indra/llwindow/llwindowwin32.cpp     | 7371 +++++++++++++-------------
 indra/llwindow/llwindowwin32.h       |    5 +
 indra/newview/llviewerwindow.cpp     |    4 +-
 indra/newview/llviewerwindow.h       |    2 +-
 8 files changed, 4057 insertions(+), 3679 deletions(-)
 create mode 100644 indra/llwindow/lldragdropwin32.cpp
 create mode 100644 indra/llwindow/lldragdropwin32.h

diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp
new file mode 100644
index 00000000000..0daff853955
--- /dev/null
+++ b/indra/llwindow/lldragdropwin32.cpp
@@ -0,0 +1,295 @@
+/**
+ * @file lldragdrop32.cpp
+ * @brief Handler for Windows specific drag and drop (OS to client) code
+ *
+ * $LicenseInfo:firstyear=2001&license=viewergpl$
+ *
+ * Copyright (c) 2001-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#if LL_WINDOWS
+
+#include "linden_common.h"
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+
+#include "llwindowwin32.h"
+#include "llkeyboardwin32.h"
+#include "lldragdropwin32.h"
+
+#include "llwindowcallbacks.h"
+
+#include <windows.h>
+#include <ole2.h>
+#include <shlobj.h>
+#include <shellapi.h>
+#include <shlwapi.h>
+
+// FIXME: this should be done in CMake
+#pragma comment( lib, "shlwapi.lib" )
+
+class LLDragDropWin32Target: 
+	public IDropTarget
+{
+	public:
+		LLDragDropWin32Target( HWND  hWnd ) :
+		  mWindowHandle( hWnd ),
+		  mRefCount( 0 )
+		{
+			strcpy(szFileDropped,"");
+			bDropTargetValid = false;
+			bTextDropped = false;		
+		};
+
+		/* IUnknown methods */
+		STDMETHOD_( ULONG, AddRef )( void )
+		{
+			return ++mRefCount;
+		};
+
+		STDMETHOD_( ULONG, Release )( void )
+		{
+			if ( --mRefCount == 0 )
+			{
+				delete this;
+				return 0;
+			}
+			return mRefCount;
+		};
+
+		STDMETHOD ( QueryInterface )( REFIID iid, void ** ppvObject )
+		{
+			if ( iid == IID_IUnknown || iid == IID_IDropTarget )
+			{
+				*ppvObject = this;
+				AddRef();
+				return S_OK;
+			};
+
+			*ppvObject = NULL;
+			return E_NOINTERFACE;
+		};
+		
+		/* IDropTarget methods */
+		STDMETHOD (DragEnter)(LPDATAOBJECT pDataObj, DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect)
+		{
+			HRESULT hr = E_INVALIDARG;
+			bDropTargetValid = false;
+			bTextDropped = false;
+			*pdwEffect=DROPEFFECT_NONE;
+			
+			FORMATETC fmte = {CF_HDROP, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
+			STGMEDIUM medium;
+				
+			if (pDataObj && SUCCEEDED (pDataObj->GetData (&fmte, &medium)))
+			{
+				// We can Handle Only one File At a time !!!
+				if (1 == DragQueryFile ((HDROP)medium.hGlobal,0xFFFFFFFF,NULL,0 ))
+				{
+					// Get the File Name
+					if (DragQueryFileA((HDROP)medium.hGlobal, 0, szFileDropped,MAX_PATH))
+					{
+						if (!PathIsDirectoryA(szFileDropped))
+						{
+							char szTempFile[MAX_PATH];
+							_splitpath(szFileDropped,NULL,NULL,NULL,szTempFile);
+
+//							if (!stricmp(szTempFile,".lnk"))
+//							{
+//								if (ResolveLink(szFileDropped,szTempFile))
+//								{
+//									strcpy(szFileDropped,szTempFile);
+//									*pdwEffect=DROPEFFECT_COPY;
+//									We Want to Create a Copy
+//									bDropTargetValid = true;
+//									hr = S_OK;
+//								}
+//							}
+//							else
+//							{
+								*pdwEffect=DROPEFFECT_COPY;
+								//We Want to Create a Copy
+								bDropTargetValid = true;
+								hr = S_OK;
+//							}
+						}
+					}
+				}
+
+				if (medium.pUnkForRelease)
+					medium.pUnkForRelease->Release ();
+				else
+					GlobalFree (medium.hGlobal);
+			}
+			else 
+			{
+				fmte.cfFormat = CF_TEXT;
+				fmte.ptd = NULL;
+				fmte.dwAspect = DVASPECT_CONTENT;
+				fmte.lindex = -1;
+				fmte.tymed = TYMED_HGLOBAL; 
+
+				// Does the drag source provide CF_TEXT ?    
+				if (NOERROR == pDataObj->QueryGetData(&fmte))
+				{
+					bDropTargetValid = true;
+					bTextDropped = true;
+					*pdwEffect=DROPEFFECT_COPY;
+					hr = S_OK;
+				}
+			}
+				return hr;
+
+
+
+		};
+
+		STDMETHOD (DragOver)(DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect)
+		{
+			HRESULT hr = S_OK;
+			if (bDropTargetValid) 
+				*pdwEffect=DROPEFFECT_COPY;
+
+			return hr;
+		};
+
+		STDMETHOD (DragLeave)(void)
+		{
+			HRESULT hr = S_OK;
+			strcpy(szFileDropped,"");
+			return hr;
+		};
+
+		STDMETHOD (Drop)(LPDATAOBJECT pDataObj, DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect)
+		{
+			HRESULT hr = S_OK;
+			if (bDropTargetValid) 
+			{
+				*pdwEffect=DROPEFFECT_COPY;
+			
+				FORMATETC fmte;
+				STGMEDIUM medium;
+
+				if (bTextDropped)
+				{
+					fmte.cfFormat = CF_TEXT;
+					fmte.ptd = NULL;
+					fmte.dwAspect = DVASPECT_CONTENT;  
+					fmte.lindex = -1;
+					fmte.tymed = TYMED_HGLOBAL;       
+
+					hr = pDataObj->GetData(&fmte, &medium);
+					HGLOBAL hText = medium.hGlobal;
+					LPSTR lpszText = (LPSTR)GlobalLock(hText);
+
+					LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mWindowHandle, GWL_USERDATA);
+					if (NULL != window_imp)
+					{
+						LLCoordGL gl_coord( pt.x, pt.y);
+						LLCoordWindow cursor_coord_window( pt.x, pt.y );
+						window_imp->convertCoords(cursor_coord_window, &gl_coord);
+						llinfos << "### (Drop) URL is: " << lpszText << llendl;
+						llinfos << "###        raw coords are: " << pt.x << " x " << pt.y << llendl;
+						llinfos << "###         GL coords are: " << gl_coord.mX << " x " << gl_coord.mY << llendl;
+						llinfos << llendl;
+
+						MASK mask = gKeyboard->currentMask(TRUE);
+						window_imp->completeDropRequest( gl_coord, mask, std::string( lpszText ) );
+					};
+
+					GlobalUnlock(hText);
+					ReleaseStgMedium(&medium);
+				}
+			}
+			return hr;
+		};
+	   
+	private:
+		ULONG mRefCount;
+		HWND mWindowHandle;
+		char szFileDropped[1024];
+		bool bDropTargetValid;
+		bool bTextDropped;
+		friend class LLWindowWin32;
+};
+
+LLDragDropWin32::LLDragDropWin32() :
+	mDropTarget( NULL ),
+	mDropWindowHandle( NULL )
+
+{
+}
+
+LLDragDropWin32::~LLDragDropWin32()
+{
+}
+
+bool LLDragDropWin32::init( HWND hWnd )
+{
+	if (NOERROR != OleInitialize(NULL))
+		return FALSE; 
+
+	mDropTarget = new LLDragDropWin32Target( hWnd );
+	if ( mDropTarget )
+	{
+		HRESULT result = CoLockObjectExternal( mDropTarget, TRUE, TRUE );
+		if ( S_OK == result )
+		{
+			result = RegisterDragDrop( hWnd, mDropTarget );
+			if ( S_OK != result )
+			{
+				// RegisterDragDrop failed
+				return false;
+			};
+
+			// all ok
+			mDropWindowHandle = hWnd;
+		}
+		else
+		{
+			// Unable to lock OLE object
+			return false;
+		};
+	};
+
+	// success
+	return true;
+}
+
+void LLDragDropWin32::reset()
+{
+	if ( mDropTarget )
+	{
+		CoLockObjectExternal( mDropTarget, FALSE, TRUE );
+		RevokeDragDrop( mDropWindowHandle );
+		mDropTarget->Release();  
+	};
+	
+	OleUninitialize();
+}
+
+#endif
diff --git a/indra/llwindow/lldragdropwin32.h b/indra/llwindow/lldragdropwin32.h
new file mode 100644
index 00000000000..6137e5eb655
--- /dev/null
+++ b/indra/llwindow/lldragdropwin32.h
@@ -0,0 +1,55 @@
+/**
+ * @file lldragdrop32.cpp
+ * @brief Handler for Windows specific drag and drop (OS to client) code
+ *
+ * $LicenseInfo:firstyear=2004&license=viewergpl$
+ *
+ * Copyright (c) 2004-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLDRAGDROP32_H
+#define LL_LLDRAGDROP32_H
+
+#include <windows.h>
+#include <ole2.h>
+#include <shlobj.h>
+#include <shlwapi.h>
+
+class LLDragDropWin32
+{
+	public:
+		LLDragDropWin32();
+		~LLDragDropWin32();
+
+		bool init( HWND hWnd );
+		void reset();
+
+	private:
+		IDropTarget* mDropTarget;
+		HWND mDropWindowHandle;
+};
+
+#endif
diff --git a/indra/llwindow/llwindowcallbacks.cpp b/indra/llwindow/llwindowcallbacks.cpp
index fda2c7ee6f2..1098529e1cd 100644
--- a/indra/llwindow/llwindowcallbacks.cpp
+++ b/indra/llwindow/llwindowcallbacks.cpp
@@ -163,7 +163,7 @@ void LLWindowCallbacks::handleDataCopy(LLWindow *window, S32 data_type, void *da
 {
 }
 
-BOOL LLWindowCallbacks::handleDrop(LLWindow *window, LLCoordGL pos, MASK mask, void *data)
+BOOL LLWindowCallbacks::handleDrop(LLWindow *window, LLCoordGL pos, MASK mask, std::string data )
 {
 	return FALSE;
 }
diff --git a/indra/llwindow/llwindowcallbacks.h b/indra/llwindow/llwindowcallbacks.h
index e1e257943a4..3a09100168b 100644
--- a/indra/llwindow/llwindowcallbacks.h
+++ b/indra/llwindow/llwindowcallbacks.h
@@ -68,7 +68,7 @@ class LLWindowCallbacks
 	virtual void handleWindowBlock(LLWindow *window);							// window is taking over CPU for a while
 	virtual void handleWindowUnblock(LLWindow *window);							// window coming back after taking over CPU for a while
 	virtual void handleDataCopy(LLWindow *window, S32 data_type, void *data);
-	virtual BOOL handleDrop(LLWindow *window, LLCoordGL pos, MASK mask, void *data);
+	virtual BOOL handleDrop(LLWindow *window, LLCoordGL pos, MASK mask, std::string data);
 	virtual BOOL handleTimerEvent(LLWindow *window);
 	virtual BOOL handleDeviceChange(LLWindow *window);
 
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index 94c3e1af8c3..da096b9a0a2 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -1,2366 +1,2376 @@
-/** 
- * @file llwindowwin32.cpp
- * @brief Platform-dependent implementation of llwindow
- *
- * $LicenseInfo:firstyear=2001&license=viewergpl$
- * 
- * Copyright (c) 2001-2009, Linden Research, Inc.
- * 
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab.  Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- * 
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- * 
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- * 
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#include "linden_common.h"
-
-#if LL_WINDOWS && !LL_MESA_HEADLESS
-
-#include "llwindowwin32.h"
-
-// LLWindow library includes
-#include "llkeyboardwin32.h"
-#include "llpreeditor.h"
-#include "llwindowcallbacks.h"
-
-// Linden library includes
-#include "llerror.h"
-#include "llgl.h"
-#include "llstring.h"
-
-// System includes
-#include <commdlg.h>
-#include <WinUser.h>
-#include <mapi.h>
-#include <process.h>	// for _spawn
-#include <shellapi.h>
+/** 
+ * @file llwindowwin32.cpp
+ * @brief Platform-dependent implementation of llwindow
+ *
+ * $LicenseInfo:firstyear=2001&license=viewergpl$
+ * 
+ * Copyright (c) 2001-2009, Linden Research, Inc.
+ * 
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ * 
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ * 
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ * 
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+
+#if LL_WINDOWS && !LL_MESA_HEADLESS
+
+#include "llwindowwin32.h"
+
+// LLWindow library includes
+#include "llkeyboardwin32.h"
+#include "lldragdropwin32.h"
+#include "llpreeditor.h"
+#include "llwindowcallbacks.h"
+
+// Linden library includes
+#include "llerror.h"
+#include "llgl.h"
+#include "llstring.h"
+
+// System includes
+#include <commdlg.h>
+#include <WinUser.h>
+#include <mapi.h>
+#include <process.h>	// for _spawn
+#include <shellapi.h>
 #include <fstream>
-#include <Imm.h>
-
-// Require DirectInput version 8
-#define DIRECTINPUT_VERSION 0x0800
-
-#include <dinput.h>
-#include <Dbt.h.>
-
-#include "llmemtype.h"
-// culled from winuser.h
-#ifndef WM_MOUSEWHEEL /* Added to be compatible with later SDK's */
-const S32	WM_MOUSEWHEEL = 0x020A;
-#endif
-#ifndef WHEEL_DELTA /* Added to be compatible with later SDK's */
-const S32	WHEEL_DELTA = 120;     /* Value for rolling one detent */
-#endif
-const S32	MAX_MESSAGE_PER_UPDATE = 20;
-const S32	BITS_PER_PIXEL = 32;
-const S32	MAX_NUM_RESOLUTIONS = 32;
-const F32	ICON_FLASH_TIME = 0.5f;
-
-extern BOOL gDebugWindowProc;
-
-LPWSTR gIconResource = IDI_APPLICATION;
-
-LLW32MsgCallback gAsyncMsgCallback = NULL;
-
-//
-// LLWindowWin32
-//
-
-void show_window_creation_error(const std::string& title)
-{
-	LL_WARNS("Window") << title << LL_ENDL;
-}
-
-//static
-BOOL LLWindowWin32::sIsClassRegistered = FALSE;
-
-BOOL	LLWindowWin32::sLanguageTextInputAllowed = TRUE;
-BOOL	LLWindowWin32::sWinIMEOpened = FALSE;
-HKL		LLWindowWin32::sWinInputLocale = 0;
-DWORD	LLWindowWin32::sWinIMEConversionMode = IME_CMODE_NATIVE;
-DWORD	LLWindowWin32::sWinIMESentenceMode = IME_SMODE_AUTOMATIC;
-LLCoordWindow LLWindowWin32::sWinIMEWindowPosition(-1,-1);
-
-// The following class LLWinImm delegates Windows IMM APIs.
-// We need this because some language versions of Windows,
-// e.g., US version of Windows XP, doesn't install IMM32.DLL
-// as a default, and we can't link against imm32.lib statically.
-// I believe DLL loading of this type is best suited to do
-// in a static initialization of a class.  What I'm not sure is
-// whether it follows the Linden Conding Standard... 
-// See http://wiki.secondlife.com/wiki/Coding_standards#Static_Members
-
-class LLWinImm
-{
-public:
-	static bool		isAvailable() { return sTheInstance.mHImmDll != NULL; }
-
-public:
-	// Wrappers for IMM API.
-	static BOOL		isIME(HKL hkl);															
-	static HWND		getDefaultIMEWnd(HWND hwnd);
-	static HIMC		getContext(HWND hwnd);													
-	static BOOL		releaseContext(HWND hwnd, HIMC himc);
-	static BOOL		getOpenStatus(HIMC himc);												
-	static BOOL		setOpenStatus(HIMC himc, BOOL status);									
-	static BOOL		getConversionStatus(HIMC himc, LPDWORD conversion, LPDWORD sentence);	
-	static BOOL		setConversionStatus(HIMC himc, DWORD conversion, DWORD sentence);		
-	static BOOL		getCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form);					
-	static BOOL		setCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form);					
-	static LONG		getCompositionString(HIMC himc, DWORD index, LPVOID data, DWORD length);
-	static BOOL		setCompositionString(HIMC himc, DWORD index, LPVOID pComp, DWORD compLength, LPVOID pRead, DWORD readLength);
-	static BOOL		setCompositionFont(HIMC himc, LPLOGFONTW logfont);
-	static BOOL		setCandidateWindow(HIMC himc, LPCANDIDATEFORM candidate_form);
-	static BOOL		notifyIME(HIMC himc, DWORD action, DWORD index, DWORD value);
-
-private:
-	LLWinImm();
-	~LLWinImm();
-
-private:
-	// Pointers to IMM API.
-	BOOL	 	(WINAPI *mImmIsIME)(HKL);
-	HWND		(WINAPI *mImmGetDefaultIMEWnd)(HWND);
-	HIMC		(WINAPI *mImmGetContext)(HWND);
-	BOOL		(WINAPI *mImmReleaseContext)(HWND, HIMC);
-	BOOL		(WINAPI *mImmGetOpenStatus)(HIMC);
-	BOOL		(WINAPI *mImmSetOpenStatus)(HIMC, BOOL);
-	BOOL		(WINAPI *mImmGetConversionStatus)(HIMC, LPDWORD, LPDWORD);
-	BOOL		(WINAPI *mImmSetConversionStatus)(HIMC, DWORD, DWORD);
-	BOOL		(WINAPI *mImmGetCompostitionWindow)(HIMC, LPCOMPOSITIONFORM);
-	BOOL		(WINAPI *mImmSetCompostitionWindow)(HIMC, LPCOMPOSITIONFORM);
-	LONG		(WINAPI *mImmGetCompositionString)(HIMC, DWORD, LPVOID, DWORD);
-	BOOL		(WINAPI *mImmSetCompositionString)(HIMC, DWORD, LPVOID, DWORD, LPVOID, DWORD);
-	BOOL		(WINAPI *mImmSetCompositionFont)(HIMC, LPLOGFONTW);
-	BOOL		(WINAPI *mImmSetCandidateWindow)(HIMC, LPCANDIDATEFORM);
-	BOOL		(WINAPI *mImmNotifyIME)(HIMC, DWORD, DWORD, DWORD);
-
-private:
-	HMODULE		mHImmDll;
-	static LLWinImm sTheInstance;
-};
-
-LLWinImm LLWinImm::sTheInstance;
-
-LLWinImm::LLWinImm() : mHImmDll(NULL)
-{
-	// Check system metrics 
-	if ( !GetSystemMetrics( SM_DBCSENABLED ) )
-		return;
-	
-
-	mHImmDll = LoadLibraryA("Imm32");
-	if (mHImmDll != NULL)
-	{
-		mImmIsIME               = (BOOL (WINAPI *)(HKL))                    GetProcAddress(mHImmDll, "ImmIsIME");
-		mImmGetDefaultIMEWnd	= (HWND (WINAPI *)(HWND))					GetProcAddress(mHImmDll, "ImmGetDefaultIMEWnd");
-		mImmGetContext          = (HIMC (WINAPI *)(HWND))                   GetProcAddress(mHImmDll, "ImmGetContext");
-		mImmReleaseContext      = (BOOL (WINAPI *)(HWND, HIMC))             GetProcAddress(mHImmDll, "ImmReleaseContext");
-		mImmGetOpenStatus       = (BOOL (WINAPI *)(HIMC))                   GetProcAddress(mHImmDll, "ImmGetOpenStatus");
-		mImmSetOpenStatus       = (BOOL (WINAPI *)(HIMC, BOOL))             GetProcAddress(mHImmDll, "ImmSetOpenStatus");
-		mImmGetConversionStatus = (BOOL (WINAPI *)(HIMC, LPDWORD, LPDWORD)) GetProcAddress(mHImmDll, "ImmGetConversionStatus");
-		mImmSetConversionStatus = (BOOL (WINAPI *)(HIMC, DWORD, DWORD))     GetProcAddress(mHImmDll, "ImmSetConversionStatus");
-		mImmGetCompostitionWindow = (BOOL (WINAPI *)(HIMC, LPCOMPOSITIONFORM))   GetProcAddress(mHImmDll, "ImmGetCompositionWindow");
-		mImmSetCompostitionWindow = (BOOL (WINAPI *)(HIMC, LPCOMPOSITIONFORM))   GetProcAddress(mHImmDll, "ImmSetCompositionWindow");
-		mImmGetCompositionString= (LONG (WINAPI *)(HIMC, DWORD, LPVOID, DWORD))					GetProcAddress(mHImmDll, "ImmGetCompositionStringW");
-		mImmSetCompositionString= (BOOL (WINAPI *)(HIMC, DWORD, LPVOID, DWORD, LPVOID, DWORD))	GetProcAddress(mHImmDll, "ImmSetCompositionStringW");
-		mImmSetCompositionFont  = (BOOL (WINAPI *)(HIMC, LPLOGFONTW))		GetProcAddress(mHImmDll, "ImmSetCompositionFontW");
-		mImmSetCandidateWindow  = (BOOL (WINAPI *)(HIMC, LPCANDIDATEFORM))  GetProcAddress(mHImmDll, "ImmSetCandidateWindow");
-		mImmNotifyIME			= (BOOL (WINAPI *)(HIMC, DWORD, DWORD, DWORD))	GetProcAddress(mHImmDll, "ImmNotifyIME");
-
-		if (mImmIsIME == NULL ||
-			mImmGetDefaultIMEWnd == NULL ||
-			mImmGetContext == NULL ||
-			mImmReleaseContext == NULL ||
-			mImmGetOpenStatus == NULL ||
-			mImmSetOpenStatus == NULL ||
-			mImmGetConversionStatus == NULL ||
-			mImmSetConversionStatus == NULL ||
-			mImmGetCompostitionWindow == NULL ||
-			mImmSetCompostitionWindow == NULL ||
-			mImmGetCompositionString == NULL ||
-			mImmSetCompositionString == NULL ||
-			mImmSetCompositionFont == NULL ||
-			mImmSetCandidateWindow == NULL ||
-			mImmNotifyIME == NULL)
-		{
-			// If any of the above API entires are not found, we can't use IMM API.  
-			// So, turn off the IMM support.  We should log some warning message in 
-			// the case, since it is very unusual; these APIs are available from 
-			// the beginning, and all versions of IMM32.DLL should have them all.  
-			// Unfortunately, this code may be executed before initialization of 
-			// the logging channel (llwarns), and we can't do it here...  Yes, this 
-			// is one of disadvantages to use static constraction to DLL loading. 
-			FreeLibrary(mHImmDll);
-			mHImmDll = NULL;
-
-			// If we unload the library, make sure all the function pointers are cleared
-			mImmIsIME = NULL;
-			mImmGetDefaultIMEWnd = NULL;
-			mImmGetContext = NULL;
-			mImmReleaseContext = NULL;
-			mImmGetOpenStatus = NULL;
-			mImmSetOpenStatus = NULL;
-			mImmGetConversionStatus = NULL;
-			mImmSetConversionStatus = NULL;
-			mImmGetCompostitionWindow = NULL;
-			mImmSetCompostitionWindow = NULL;
-			mImmGetCompositionString = NULL;
-			mImmSetCompositionString = NULL;
-			mImmSetCompositionFont = NULL;
-			mImmSetCandidateWindow = NULL;
-			mImmNotifyIME = NULL;
-		}
-	}
-}
-
-
-// static 
-BOOL	LLWinImm::isIME(HKL hkl)															
-{ 
-	if ( sTheInstance.mImmIsIME )
-		return sTheInstance.mImmIsIME(hkl); 
-	return FALSE;
-}
-
-// static 
-HIMC		LLWinImm::getContext(HWND hwnd)
-{
-	if ( sTheInstance.mImmGetContext )
-		return sTheInstance.mImmGetContext(hwnd); 
-	return 0;
-}
-
-//static 
-BOOL		LLWinImm::releaseContext(HWND hwnd, HIMC himc)
-{ 
-	if ( sTheInstance.mImmIsIME )
-		return sTheInstance.mImmReleaseContext(hwnd, himc); 
-	return FALSE;
-}
-
-// static 
-BOOL		LLWinImm::getOpenStatus(HIMC himc)
-{ 
-	if ( sTheInstance.mImmGetOpenStatus )
-		return sTheInstance.mImmGetOpenStatus(himc); 
-	return FALSE;
-}
-
-// static 
-BOOL		LLWinImm::setOpenStatus(HIMC himc, BOOL status)									
-{ 
-	if ( sTheInstance.mImmSetOpenStatus )
-		return sTheInstance.mImmSetOpenStatus(himc, status); 
-	return FALSE;
-}
-
-// static 
-BOOL		LLWinImm::getConversionStatus(HIMC himc, LPDWORD conversion, LPDWORD sentence)	
-{ 
-	if ( sTheInstance.mImmGetConversionStatus )
-		return sTheInstance.mImmGetConversionStatus(himc, conversion, sentence); 
-	return FALSE;
-}
-
-// static 
-BOOL		LLWinImm::setConversionStatus(HIMC himc, DWORD conversion, DWORD sentence)		
-{ 
-	if ( sTheInstance.mImmSetConversionStatus )
-		return sTheInstance.mImmSetConversionStatus(himc, conversion, sentence); 
-	return FALSE;
-}
-
-// static 
-BOOL		LLWinImm::getCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form)					
-{ 
-	if ( sTheInstance.mImmGetCompostitionWindow )
-		return sTheInstance.mImmGetCompostitionWindow(himc, form);	
-	return FALSE;
-}
-
-// static 
-BOOL		LLWinImm::setCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form)					
-{ 
-	if ( sTheInstance.mImmSetCompostitionWindow )
-		return sTheInstance.mImmSetCompostitionWindow(himc, form);	
-	return FALSE;
-}
-
-
-// static 
-LONG		LLWinImm::getCompositionString(HIMC himc, DWORD index, LPVOID data, DWORD length)					
-{ 
-	if ( sTheInstance.mImmGetCompositionString )
-		return sTheInstance.mImmGetCompositionString(himc, index, data, length);	
-	return FALSE;
-}
-
-
-// static 
-BOOL		LLWinImm::setCompositionString(HIMC himc, DWORD index, LPVOID pComp, DWORD compLength, LPVOID pRead, DWORD readLength)					
-{ 
-	if ( sTheInstance.mImmSetCompositionString )
-		return sTheInstance.mImmSetCompositionString(himc, index, pComp, compLength, pRead, readLength);	
-	return FALSE;
-}
-
-// static 
-BOOL		LLWinImm::setCompositionFont(HIMC himc, LPLOGFONTW pFont)					
-{ 
-	if ( sTheInstance.mImmSetCompositionFont )
-		return sTheInstance.mImmSetCompositionFont(himc, pFont);	
-	return FALSE;
-}
-
-// static 
-BOOL		LLWinImm::setCandidateWindow(HIMC himc, LPCANDIDATEFORM form)					
-{ 
-	if ( sTheInstance.mImmSetCandidateWindow )
-		return sTheInstance.mImmSetCandidateWindow(himc, form);	
-	return FALSE;
-}
-
-// static 
-BOOL		LLWinImm::notifyIME(HIMC himc, DWORD action, DWORD index, DWORD value)					
-{ 
-	if ( sTheInstance.mImmNotifyIME )
-		return sTheInstance.mImmNotifyIME(himc, action, index, value);	
-	return FALSE;
-}
-
-
-
-
-// ----------------------------------------------------------------------------------------
-LLWinImm::~LLWinImm()
-{
-	if (mHImmDll != NULL)
-	{
-		FreeLibrary(mHImmDll);
-		mHImmDll = NULL;
-	}
-}
-
-
-LLWindowWin32::LLWindowWin32(LLWindowCallbacks* callbacks,
-							 const std::string& title, const std::string& name, S32 x, S32 y, S32 width,
-							 S32 height, U32 flags, 
-							 BOOL fullscreen, BOOL clearBg,
-							 BOOL disable_vsync, BOOL use_gl,
-							 BOOL ignore_pixel_depth,
-							 U32 fsaa_samples)
-	: LLWindow(callbacks, fullscreen, flags)
-{
-	mFSAASamples = fsaa_samples;
-	mIconResource = gIconResource;
-	mOverrideAspectRatio = 0.f;
-	mNativeAspectRatio = 0.f;
-	mMousePositionModified = FALSE;
-	mInputProcessingPaused = FALSE;
-	mPreeditor = NULL;
-	mhDC = NULL;
-	mhRC = NULL;
-
-	// Initialize the keyboard
-	gKeyboard = new LLKeyboardWin32();
-	gKeyboard->setCallbacks(callbacks);
-
-	// Initialize (boot strap) the Language text input management,
-	// based on the system's (user's) default settings.
-	allowLanguageTextInput(mPreeditor, FALSE);
-
-	WNDCLASS		wc;
-	RECT			window_rect;
-
-	// Set the window title
-	if (title.empty())
-	{
-		mWindowTitle = new WCHAR[50];
-		wsprintf(mWindowTitle, L"OpenGL Window");
-	}
-	else
-	{
-		mWindowTitle = new WCHAR[256]; // Assume title length < 255 chars.
-		mbstowcs(mWindowTitle, title.c_str(), 255);
-		mWindowTitle[255] = 0;
-	}
-
-	// Set the window class name
-	if (name.empty())
-	{
-		mWindowClassName = new WCHAR[50];
-		wsprintf(mWindowClassName, L"OpenGL Window");
-	}
-	else
-	{
-		mWindowClassName = new WCHAR[256]; // Assume title length < 255 chars.
-		mbstowcs(mWindowClassName, name.c_str(), 255);
-		mWindowClassName[255] = 0;
-	}
-
-
-	// We're not clipping yet
-	SetRect( &mOldMouseClip, 0, 0, 0, 0 );
-
-	// Make an instance of our window then define the window class
-	mhInstance = GetModuleHandle(NULL);
-	mWndProc = NULL;
-
-	mSwapMethod = SWAP_METHOD_UNDEFINED;
-
-	// No WPARAM yet.
-	mLastSizeWParam = 0;
-
-	// Windows GDI rects don't include rightmost pixel
-	window_rect.left = (long) 0;
-	window_rect.right = (long) width;
-	window_rect.top = (long) 0;
-	window_rect.bottom = (long) height;
-
-	// Grab screen size to sanitize the window
-	S32 window_border_y = GetSystemMetrics(SM_CYBORDER);
-	S32 virtual_screen_x = GetSystemMetrics(SM_XVIRTUALSCREEN); 
-	S32 virtual_screen_y = GetSystemMetrics(SM_YVIRTUALSCREEN); 
-	S32 virtual_screen_width = GetSystemMetrics(SM_CXVIRTUALSCREEN);
-	S32 virtual_screen_height = GetSystemMetrics(SM_CYVIRTUALSCREEN);
-
-	if (x < virtual_screen_x) x = virtual_screen_x;
-	if (y < virtual_screen_y - window_border_y) y = virtual_screen_y - window_border_y;
-
-	if (x + width > virtual_screen_x + virtual_screen_width) x = virtual_screen_x + virtual_screen_width - width;
-	if (y + height > virtual_screen_y + virtual_screen_height) y = virtual_screen_y + virtual_screen_height - height;
-
-	if (!sIsClassRegistered)
-	{
-		// Force redraw when resized and create a private device context
-
-		// Makes double click messages.
-		wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC | CS_DBLCLKS;
-
-		// Set message handler function
-		wc.lpfnWndProc = (WNDPROC) mainWindowProc;
-
-		// unused
-		wc.cbClsExtra = 0;
-		wc.cbWndExtra = 0;
-
-		wc.hInstance = mhInstance;
-		wc.hIcon = LoadIcon(mhInstance, mIconResource);
-
-		// We will set the cursor ourselves
-		wc.hCursor = NULL;
-
-		// background color is not used
-		if (clearBg)
-		{
-			wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
-		}
-		else
-		{
-			wc.hbrBackground = (HBRUSH) NULL;
-		}
-
-		// we don't use windows menus
-		wc.lpszMenuName = NULL;
-
-		wc.lpszClassName = mWindowClassName;
-
-		if (!RegisterClass(&wc))
-		{
-			OSMessageBox(mCallbacks->translateString("MBRegClassFailed"), 
-				mCallbacks->translateString("MBError"), OSMB_OK);
-			return;
-		}
-		sIsClassRegistered = TRUE;
-	}
-
-	//-----------------------------------------------------------------------
-	// Get the current refresh rate
-	//-----------------------------------------------------------------------
-
-	DEVMODE dev_mode;
-	DWORD current_refresh;
-	if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode))
-	{
-		current_refresh = dev_mode.dmDisplayFrequency;
-		mNativeAspectRatio = ((F32)dev_mode.dmPelsWidth) / ((F32)dev_mode.dmPelsHeight);
-	}
-	else
-	{
-		current_refresh = 60;
-	}
-
-	//-----------------------------------------------------------------------
-	// Drop resolution and go fullscreen
-	// use a display mode with our desired size and depth, with a refresh
-	// rate as close at possible to the users' default
-	//-----------------------------------------------------------------------
-	if (mFullscreen)
-	{
-		BOOL success = FALSE;
-		DWORD closest_refresh = 0;
-
-		for (S32 mode_num = 0;; mode_num++)
-		{
-			if (!EnumDisplaySettings(NULL, mode_num, &dev_mode))
-			{
-				break;
-			}
-
-			if (dev_mode.dmPelsWidth == width &&
-				dev_mode.dmPelsHeight == height &&
-				dev_mode.dmBitsPerPel == BITS_PER_PIXEL)
-			{
-				success = TRUE;
-				if ((dev_mode.dmDisplayFrequency - current_refresh)
-					< (closest_refresh - current_refresh))
-				{
-					closest_refresh = dev_mode.dmDisplayFrequency;
-				}
-			}
-		}
-
-		if (closest_refresh == 0)
-		{
-			LL_WARNS("Window") << "Couldn't find display mode " << width << " by " << height << " at " << BITS_PER_PIXEL << " bits per pixel" << LL_ENDL;
-			success = FALSE;
-		}
-
-		// If we found a good resolution, use it.
-		if (success)
-		{
-			success = setDisplayResolution(width, height, BITS_PER_PIXEL, closest_refresh);
-		}
-
-		// Keep a copy of the actual current device mode in case we minimize 
-		// and change the screen resolution.   JC
-		EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode);
-
-		// If it failed, we don't want to run fullscreen
-		if (success)
-		{
-			mFullscreen = TRUE;
-			mFullscreenWidth   = dev_mode.dmPelsWidth;
-			mFullscreenHeight  = dev_mode.dmPelsHeight;
-			mFullscreenBits    = dev_mode.dmBitsPerPel;
-			mFullscreenRefresh = dev_mode.dmDisplayFrequency;
-
-			LL_INFOS("Window") << "Running at " << dev_mode.dmPelsWidth
-				<< "x"   << dev_mode.dmPelsHeight
-				<< "x"   << dev_mode.dmBitsPerPel
-				<< " @ " << dev_mode.dmDisplayFrequency
-				<< LL_ENDL;
-		}
-		else
-		{
-			mFullscreen = FALSE;
-			mFullscreenWidth   = -1;
-			mFullscreenHeight  = -1;
-			mFullscreenBits    = -1;
-			mFullscreenRefresh = -1;
-
-			std::map<std::string,std::string> args;
-			args["[WIDTH]"] = llformat("%d", width);
-			args["[HEIGHT]"] = llformat ("%d", height);
-			OSMessageBox(mCallbacks->translateString("MBFullScreenErr", args),
-				mCallbacks->translateString("MBError"), OSMB_OK);
-		}
-	}
-
-	// TODO: add this after resolving _WIN32_WINNT issue
-	//	if (!fullscreen)
-	//	{
-	//		TRACKMOUSEEVENT track_mouse_event;
-	//		track_mouse_event.cbSize = sizeof( TRACKMOUSEEVENT );
-	//		track_mouse_event.dwFlags = TME_LEAVE;
-	//		track_mouse_event.hwndTrack = mWindowHandle;
-	//		track_mouse_event.dwHoverTime = HOVER_DEFAULT;
-	//		TrackMouseEvent( &track_mouse_event ); 
-	//	}
-
-
-	//-----------------------------------------------------------------------
-	// Create GL drawing context
-	//-----------------------------------------------------------------------
-	LLCoordScreen windowPos(x,y);
-	LLCoordScreen windowSize(window_rect.right - window_rect.left,
-							 window_rect.bottom - window_rect.top);
-	if (!switchContext(mFullscreen, windowSize, TRUE, &windowPos))
-	{
-		return;
-	}
-	
-	//start with arrow cursor
-	initCursors();
-	setCursor( UI_CURSOR_ARROW );
-
-	// Initialize (boot strap) the Language text input management,
-	// based on the system's (or user's) default settings.
-	allowLanguageTextInput(NULL, FALSE);
-}
-
-
-LLWindowWin32::~LLWindowWin32()
-{
-	delete [] mWindowTitle;
-	mWindowTitle = NULL;
-
-	delete [] mSupportedResolutions;
-	mSupportedResolutions = NULL;
-
-	delete mWindowClassName;
-	mWindowClassName = NULL;
-}
-
-void LLWindowWin32::show()
-{
-	ShowWindow(mWindowHandle, SW_SHOW);
-	SetForegroundWindow(mWindowHandle);
-	SetFocus(mWindowHandle);
-}
-
-void LLWindowWin32::hide()
-{
-	setMouseClipping(FALSE);
-	ShowWindow(mWindowHandle, SW_HIDE);
-}
-
-void LLWindowWin32::minimize()
-{
-	setMouseClipping(FALSE);
-	showCursor();
-	ShowWindow(mWindowHandle, SW_MINIMIZE);
-}
-
-
-void LLWindowWin32::restore()
-{
-	ShowWindow(mWindowHandle, SW_RESTORE);
-	SetForegroundWindow(mWindowHandle);
-	SetFocus(mWindowHandle);
-}
-
-
-// close() destroys all OS-specific code associated with a window.
-// Usually called from LLWindowManager::destroyWindow()
-void LLWindowWin32::close()
-{
-	LL_DEBUGS("Window") << "Closing LLWindowWin32" << LL_ENDL;
-	// Is window is already closed?
-	if (!mWindowHandle)
-	{
-		return;
-	}
-
-	// Make sure cursor is visible and we haven't mangled the clipping state.
-	setMouseClipping(FALSE);
-	showCursor();
-
-	// Go back to screen mode written in the registry.
-	if (mFullscreen)
-	{
-		resetDisplayResolution();
-	}
-
-	// Clean up remaining GL state
-	LL_DEBUGS("Window") << "Shutting down GL" << LL_ENDL;
-	gGLManager.shutdownGL();
-
-	LL_DEBUGS("Window") << "Releasing Context" << LL_ENDL;
-	if (mhRC)
-	{
-		if (!wglMakeCurrent(NULL, NULL))
-		{
-			LL_WARNS("Window") << "Release of DC and RC failed" << LL_ENDL;
-		}
-
-		if (!wglDeleteContext(mhRC))
-		{
-			LL_WARNS("Window") << "Release of rendering context failed" << LL_ENDL;
-		}
-
-		mhRC = NULL;
-	}
-
-	// Restore gamma to the system values.
-	restoreGamma();
-
-	if (mhDC && !ReleaseDC(mWindowHandle, mhDC))
-	{
-		LL_WARNS("Window") << "Release of ghDC failed" << LL_ENDL;
-		mhDC = NULL;
-	}
-
-	LL_DEBUGS("Window") << "Destroying Window" << LL_ENDL;
-	
-	// Don't process events in our mainWindowProc any longer.
-	SetWindowLong(mWindowHandle, GWL_USERDATA, NULL);
-
-	// Make sure we don't leave a blank toolbar button.
-	ShowWindow(mWindowHandle, SW_HIDE);
-
-	// This causes WM_DESTROY to be sent *immediately*
-	if (!DestroyWindow(mWindowHandle))
-	{
-		OSMessageBox(mCallbacks->translateString("MBDestroyWinFailed"),
-			mCallbacks->translateString("MBShutdownErr"),
-			OSMB_OK);
-	}
-
-	mWindowHandle = NULL;
-}
-
-BOOL LLWindowWin32::isValid()
-{
-	return (mWindowHandle != NULL);
-}
-
-BOOL LLWindowWin32::getVisible()
-{
-	return (mWindowHandle && IsWindowVisible(mWindowHandle));
-}
-
-BOOL LLWindowWin32::getMinimized()
-{
-	return (mWindowHandle && IsIconic(mWindowHandle));
-}
-
-BOOL LLWindowWin32::getMaximized()
-{
-	return (mWindowHandle && IsZoomed(mWindowHandle));
-}
-
-BOOL LLWindowWin32::maximize()
-{
-	BOOL success = FALSE;
-	if (!mWindowHandle) return success;
-
-	WINDOWPLACEMENT placement;
-	placement.length = sizeof(WINDOWPLACEMENT);
-
-	success = GetWindowPlacement(mWindowHandle, &placement);
-	if (!success) return success;
-
-	placement.showCmd = SW_MAXIMIZE;
-
-	success = SetWindowPlacement(mWindowHandle, &placement);
-	return success;
-}
-
-BOOL LLWindowWin32::getFullscreen()
-{
-	return mFullscreen;
-}
-
-BOOL LLWindowWin32::getPosition(LLCoordScreen *position)
-{
-	RECT window_rect;
-
-	if (!mWindowHandle ||
-		!GetWindowRect(mWindowHandle, &window_rect) ||
-		NULL == position)
-	{
-		return FALSE;
-	}
-
-	position->mX = window_rect.left;
-	position->mY = window_rect.top;
-	return TRUE;
-}
-
-BOOL LLWindowWin32::getSize(LLCoordScreen *size)
-{
-	RECT window_rect;
-
-	if (!mWindowHandle ||
-		!GetWindowRect(mWindowHandle, &window_rect) ||
-		NULL == size)
-	{
-		return FALSE;
-	}
-
-	size->mX = window_rect.right - window_rect.left;
-	size->mY = window_rect.bottom - window_rect.top;
-	return TRUE;
-}
-
-BOOL LLWindowWin32::getSize(LLCoordWindow *size)
-{
-	RECT client_rect;
-
-	if (!mWindowHandle ||
-		!GetClientRect(mWindowHandle, &client_rect) ||
-		NULL == size)
-	{
-		return FALSE;
-	}
-
-	size->mX = client_rect.right - client_rect.left;
-	size->mY = client_rect.bottom - client_rect.top;
-	return TRUE;
-}
-
-BOOL LLWindowWin32::setPosition(const LLCoordScreen position)
-{
-	LLCoordScreen size;
-
-	if (!mWindowHandle)
-	{
-		return FALSE;
-	}
-	getSize(&size);
-	moveWindow(position, size);
-	return TRUE;
-}
-
-BOOL LLWindowWin32::setSize(const LLCoordScreen size)
-{
-	LLCoordScreen position;
-
-	getPosition(&position);
-	if (!mWindowHandle)
-	{
-		return FALSE;
-	}
-
-	moveWindow(position, size);
-	return TRUE;
-}
-
-// changing fullscreen resolution
-BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL disable_vsync, const LLCoordScreen * const posp)
-{
-	GLuint	pixel_format;
-	DEVMODE dev_mode;
-	DWORD	current_refresh;
-	DWORD	dw_ex_style;
-	DWORD	dw_style;
-	RECT	window_rect;
-	S32 width = size.mX;
-	S32 height = size.mY;
-	BOOL auto_show = FALSE;
-
-	if (mhRC)
-	{
-		auto_show = TRUE;
-		resetDisplayResolution();
-	}
-
-	if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode))
-	{
-		current_refresh = dev_mode.dmDisplayFrequency;
-	}
-	else
-	{
-		current_refresh = 60;
-	}
-
-	gGLManager.shutdownGL();
-	//destroy gl context
-	if (mhRC)
-	{
-		if (!wglMakeCurrent(NULL, NULL))
-		{
-			LL_WARNS("Window") << "Release of DC and RC failed" << LL_ENDL;
-		}
-
-		if (!wglDeleteContext(mhRC))
-		{
-			LL_WARNS("Window") << "Release of rendering context failed" << LL_ENDL;
-		}
-
-		mhRC = NULL;
-	}
-
-	if (fullscreen)
-	{
-		mFullscreen = TRUE;
-		BOOL success = FALSE;
-		DWORD closest_refresh = 0;
-
-		for (S32 mode_num = 0;; mode_num++)
-		{
-			if (!EnumDisplaySettings(NULL, mode_num, &dev_mode))
-			{
-				break;
-			}
-
-			if (dev_mode.dmPelsWidth == width &&
-				dev_mode.dmPelsHeight == height &&
-				dev_mode.dmBitsPerPel == BITS_PER_PIXEL)
-			{
-				success = TRUE;
-				if ((dev_mode.dmDisplayFrequency - current_refresh)
-					< (closest_refresh - current_refresh))
-				{
-					closest_refresh = dev_mode.dmDisplayFrequency;
-				}
-			}
-		}
-
-		if (closest_refresh == 0)
-		{
-			LL_WARNS("Window") << "Couldn't find display mode " << width << " by " << height << " at " << BITS_PER_PIXEL << " bits per pixel" << LL_ENDL;
-			return FALSE;
-		}
-
-		// If we found a good resolution, use it.
-		if (success)
-		{
-			success = setDisplayResolution(width, height, BITS_PER_PIXEL, closest_refresh);
-		}
-
-		// Keep a copy of the actual current device mode in case we minimize 
-		// and change the screen resolution.   JC
-		EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode);
-
-		if (success)
-		{
-			mFullscreen = TRUE;
-			mFullscreenWidth   = dev_mode.dmPelsWidth;
-			mFullscreenHeight  = dev_mode.dmPelsHeight;
-			mFullscreenBits    = dev_mode.dmBitsPerPel;
-			mFullscreenRefresh = dev_mode.dmDisplayFrequency;
-
-			LL_INFOS("Window") << "Running at " << dev_mode.dmPelsWidth
-				<< "x"   << dev_mode.dmPelsHeight
-				<< "x"   << dev_mode.dmBitsPerPel
-				<< " @ " << dev_mode.dmDisplayFrequency
-				<< LL_ENDL;
-
-			window_rect.left = (long) 0;
-			window_rect.right = (long) width;			// Windows GDI rects don't include rightmost pixel
-			window_rect.top = (long) 0;
-			window_rect.bottom = (long) height;
-			dw_ex_style = WS_EX_APPWINDOW;
-			dw_style = WS_POPUP;
-
-			// Move window borders out not to cover window contents
-			AdjustWindowRectEx(&window_rect, dw_style, FALSE, dw_ex_style);
-		}
-		// If it failed, we don't want to run fullscreen
-		else
-		{
-			mFullscreen = FALSE;
-			mFullscreenWidth   = -1;
-			mFullscreenHeight  = -1;
-			mFullscreenBits    = -1;
-			mFullscreenRefresh = -1;
-
-			LL_INFOS("Window") << "Unable to run fullscreen at " << width << "x" << height << LL_ENDL;
-			return FALSE;
-		}
-	}
-	else
-	{
-		mFullscreen = FALSE;
-		window_rect.left = (long) (posp ? posp->mX : 0);
-		window_rect.right = (long) width + window_rect.left;			// Windows GDI rects don't include rightmost pixel
-		window_rect.top = (long) (posp ? posp->mY : 0);
-		window_rect.bottom = (long) height + window_rect.top;
-		// Window with an edge
-		dw_ex_style = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE;
-		dw_style = WS_OVERLAPPEDWINDOW;
-	}
-
-	// don't post quit messages when destroying old windows
-	mPostQuit = FALSE;
-
-	// create window
-	DestroyWindow(mWindowHandle);
-	mWindowHandle = CreateWindowEx(dw_ex_style,
-		mWindowClassName,
-		mWindowTitle,
-		WS_CLIPSIBLINGS | WS_CLIPCHILDREN | dw_style,
-		window_rect.left,								// x pos
-		window_rect.top,								// y pos
-		window_rect.right - window_rect.left,			// width
-		window_rect.bottom - window_rect.top,			// height
-		NULL,
-		NULL,
-		mhInstance,
-		NULL);
-
-	//-----------------------------------------------------------------------
-	// Create GL drawing context
-	//-----------------------------------------------------------------------
-	static PIXELFORMATDESCRIPTOR pfd =
-	{
-		sizeof(PIXELFORMATDESCRIPTOR), 
-			1,
-			PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, 
-			PFD_TYPE_RGBA,
-			BITS_PER_PIXEL,
-			0, 0, 0, 0, 0, 0,	// RGB bits and shift, unused
-			8,					// alpha bits
-			0,					// alpha shift
-			0,					// accum bits
-			0, 0, 0, 0,			// accum RGBA
-			24,					// depth bits
-			8,					// stencil bits, avi added for stencil test
-			0,
-			PFD_MAIN_PLANE,
-			0,
-			0, 0, 0
-	};
-
-	if (!(mhDC = GetDC(mWindowHandle)))
-	{
-		close();
-		OSMessageBox(mCallbacks->translateString("MBDevContextErr"),
-			mCallbacks->translateString("MBError"), OSMB_OK);
-		return FALSE;
-	}
-
-	if (!(pixel_format = ChoosePixelFormat(mhDC, &pfd)))
-	{
-		close();
-		OSMessageBox(mCallbacks->translateString("MBPixelFmtErr"),
-			mCallbacks->translateString("MBError"), OSMB_OK);
-		return FALSE;
-	}
-
-	// Verify what pixel format we actually received.
-	if (!DescribePixelFormat(mhDC, pixel_format, sizeof(PIXELFORMATDESCRIPTOR),
-		&pfd))
-	{
-		close();
-		OSMessageBox(mCallbacks->translateString("MBPixelFmtDescErr"),
-			mCallbacks->translateString("MBError"), OSMB_OK);
-		return FALSE;
-	}
-
-	if (pfd.cColorBits < 32)
-	{
-		close();
-		OSMessageBox(mCallbacks->translateString("MBTrueColorWindow"),
-			mCallbacks->translateString("MBError"), OSMB_OK);
-		return FALSE;
-	}
-
-	if (pfd.cAlphaBits < 8)
-	{
-		close();
-		OSMessageBox(mCallbacks->translateString("MBAlpha"),
-			mCallbacks->translateString("MBError"), OSMB_OK);
-		return FALSE;
-	}
-
-	if (!SetPixelFormat(mhDC, pixel_format, &pfd))
-	{
-		close();
-		OSMessageBox(mCallbacks->translateString("MBPixelFmtSetErr"),
-			mCallbacks->translateString("MBError"), OSMB_OK);
-		return FALSE;
-	}
-
-	if (!(mhRC = wglCreateContext(mhDC)))
-	{
-		close();
-		OSMessageBox(mCallbacks->translateString("MBGLContextErr"),
-			mCallbacks->translateString("MBError"), OSMB_OK);
-		return FALSE;
-	}
-
-	if (!wglMakeCurrent(mhDC, mhRC))
-	{
-		close();
-		OSMessageBox(mCallbacks->translateString("MBGLContextActErr"),
-			mCallbacks->translateString("MBError"), OSMB_OK);
-		return FALSE;
-	}
-
-	gGLManager.initWGL();
-
-	if (wglChoosePixelFormatARB)
-	{
-		// OK, at this point, use the ARB wglChoosePixelFormatsARB function to see if we
-		// can get exactly what we want.
-		GLint attrib_list[256];
-		S32 cur_attrib = 0;
-
-		attrib_list[cur_attrib++] = WGL_DEPTH_BITS_ARB;
-		attrib_list[cur_attrib++] = 24;
-
-		attrib_list[cur_attrib++] = WGL_STENCIL_BITS_ARB;
-		attrib_list[cur_attrib++] = 8;
-
-		attrib_list[cur_attrib++] = WGL_DRAW_TO_WINDOW_ARB;
-		attrib_list[cur_attrib++] = GL_TRUE;
-
-		attrib_list[cur_attrib++] = WGL_ACCELERATION_ARB;
-		attrib_list[cur_attrib++] = WGL_FULL_ACCELERATION_ARB;
-
-		attrib_list[cur_attrib++] = WGL_SUPPORT_OPENGL_ARB;
-		attrib_list[cur_attrib++] = GL_TRUE;
-
-		attrib_list[cur_attrib++] = WGL_DOUBLE_BUFFER_ARB;
-		attrib_list[cur_attrib++] = GL_TRUE;
-
-		attrib_list[cur_attrib++] = WGL_COLOR_BITS_ARB;
-		attrib_list[cur_attrib++] = 24;
-
-		attrib_list[cur_attrib++] = WGL_ALPHA_BITS_ARB;
-		attrib_list[cur_attrib++] = 8;
-
-		U32 end_attrib = 0;
-		if (mFSAASamples > 0)
-		{
-			end_attrib = cur_attrib;
-			attrib_list[cur_attrib++] = WGL_SAMPLE_BUFFERS_ARB;
-			attrib_list[cur_attrib++] = GL_TRUE;
-
-			attrib_list[cur_attrib++] = WGL_SAMPLES_ARB;
-			attrib_list[cur_attrib++] = mFSAASamples;
-		}
-
-		// End the list
-		attrib_list[cur_attrib++] = 0;
-
-		GLint pixel_formats[256];
-		U32 num_formats = 0;
-
-		// First we try and get a 32 bit depth pixel format
-		BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats);
-		if (!result)
-		{
-			close();
-			show_window_creation_error("Error after wglChoosePixelFormatARB 32-bit");
-			return FALSE;
-		}
-
-		if (!num_formats)
-		{
-			if (end_attrib > 0)
-			{
-				LL_INFOS("Window") << "No valid pixel format for " << mFSAASamples << "x anti-aliasing." << LL_ENDL;
-				attrib_list[end_attrib] = 0;
-
-				BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats);
-				if (!result)
-				{
-					close();
-					show_window_creation_error("Error after wglChoosePixelFormatARB 32-bit no AA");
-					return FALSE;
-				}
-			}
-
-			if (!num_formats)
-			{
-				LL_INFOS("Window") << "No 32 bit z-buffer, trying 24 bits instead" << LL_ENDL;
-				// Try 24-bit format
-				attrib_list[1] = 24;
-				BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats);
-				if (!result)
-				{
-					close();
-					show_window_creation_error("Error after wglChoosePixelFormatARB 24-bit");
-					return FALSE;
-				}
-
-				if (!num_formats)
-				{
-					LL_WARNS("Window") << "Couldn't get 24 bit z-buffer,trying 16 bits instead!" << LL_ENDL;
-					attrib_list[1] = 16;
-					BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats);
-					if (!result || !num_formats)
-					{
-						close();
-						show_window_creation_error("Error after wglChoosePixelFormatARB 16-bit");
-						return FALSE;
-					}
-				}
-			}
-
-			LL_INFOS("Window") << "Choosing pixel formats: " << num_formats << " pixel formats returned" << LL_ENDL;
-		}
-
-		
-
-		S32 swap_method = 0;
-		S32 cur_format = num_formats-1;
-		GLint swap_query = WGL_SWAP_METHOD_ARB;
-
-		BOOL found_format = FALSE;
-
-		while (!found_format && wglGetPixelFormatAttribivARB(mhDC, pixel_format, 0, 1, &swap_query, &swap_method))
-		{
-			if (swap_method == WGL_SWAP_UNDEFINED_ARB || cur_format <= 0)
-			{
-				found_format = TRUE;
-			}
-			else
-			{
-				--cur_format;
-			}
-		}
-		
-		pixel_format = pixel_formats[cur_format];
-		
-		if (mhDC != 0)											// Does The Window Have A Device Context?
-		{
-			wglMakeCurrent(mhDC, 0);							// Set The Current Active Rendering Context To Zero
-			if (mhRC != 0)										// Does The Window Have A Rendering Context?
-			{
-				wglDeleteContext (mhRC);							// Release The Rendering Context
-				mhRC = 0;										// Zero The Rendering Context
-
-			}
-			ReleaseDC (mWindowHandle, mhDC);						// Release The Device Context
-			mhDC = 0;											// Zero The Device Context
-		}
-		DestroyWindow (mWindowHandle);									// Destroy The Window
-		
-
-		mWindowHandle = CreateWindowEx(dw_ex_style,
-			mWindowClassName,
-			mWindowTitle,
-			WS_CLIPSIBLINGS | WS_CLIPCHILDREN | dw_style,
-			window_rect.left,								// x pos
-			window_rect.top,								// y pos
-			window_rect.right - window_rect.left,			// width
-			window_rect.bottom - window_rect.top,			// height
-			NULL,
-			NULL,
-			mhInstance,
-			NULL);
-
-		if (!(mhDC = GetDC(mWindowHandle)))
-		{
-			close();
-			OSMessageBox(mCallbacks->translateString("MBDevContextErr"), mCallbacks->translateString("MBError"), OSMB_OK);
-			return FALSE;
-		}
-
-		if (!SetPixelFormat(mhDC, pixel_format, &pfd))
-		{
-			close();
-			OSMessageBox(mCallbacks->translateString("MBPixelFmtSetErr"),
-				mCallbacks->translateString("MBError"), OSMB_OK);
-			return FALSE;
-		}
-
-		if (wglGetPixelFormatAttribivARB(mhDC, pixel_format, 0, 1, &swap_query, &swap_method))
-		{
-			switch (swap_method)
-			{
-			case WGL_SWAP_EXCHANGE_ARB:
-				mSwapMethod = SWAP_METHOD_EXCHANGE;
-				LL_DEBUGS("Window") << "Swap Method: Exchange" << LL_ENDL;
-				break;
-			case WGL_SWAP_COPY_ARB:
-				mSwapMethod = SWAP_METHOD_COPY;
-				LL_DEBUGS("Window") << "Swap Method: Copy" << LL_ENDL;
-				break;
-			case WGL_SWAP_UNDEFINED_ARB:
-				mSwapMethod = SWAP_METHOD_UNDEFINED;
-				LL_DEBUGS("Window") << "Swap Method: Undefined" << LL_ENDL;
-				break;
-			default:
-				mSwapMethod = SWAP_METHOD_UNDEFINED;
-				LL_DEBUGS("Window") << "Swap Method: Unknown" << LL_ENDL;
-				break;
-			}
-		}		
-	}
-	else
-	{
-		LL_WARNS("Window") << "No wgl_ARB_pixel_format extension, using default ChoosePixelFormat!" << LL_ENDL;
-	}
-
-	// Verify what pixel format we actually received.
-	if (!DescribePixelFormat(mhDC, pixel_format, sizeof(PIXELFORMATDESCRIPTOR),
-		&pfd))
-	{
-		close();
-		OSMessageBox(mCallbacks->translateString("MBPixelFmtDescErr"), mCallbacks->translateString("MBError"), OSMB_OK);
-		return FALSE;
-	}
-
-	LL_INFOS("Window") << "GL buffer: Color Bits " << S32(pfd.cColorBits) 
-		<< " Alpha Bits " << S32(pfd.cAlphaBits)
-		<< " Depth Bits " << S32(pfd.cDepthBits) 
-		<< LL_ENDL;
-
-	// make sure we have 32 bits per pixel
-	if (pfd.cColorBits < 32 || GetDeviceCaps(mhDC, BITSPIXEL) < 32)
-	{
-		close();
-		OSMessageBox(mCallbacks->translateString("MBTrueColorWindow"), mCallbacks->translateString("MBError"), OSMB_OK);
-		return FALSE;
-	}
-
-	if (pfd.cAlphaBits < 8)
-	{
-		close();
-		OSMessageBox(mCallbacks->translateString("MBAlpha"), mCallbacks->translateString("MBError"), OSMB_OK);
-		return FALSE;
-	}
-
-	if (!(mhRC = wglCreateContext(mhDC)))
-	{
-		close();
-		OSMessageBox(mCallbacks->translateString("MBGLContextErr"), mCallbacks->translateString("MBError"), OSMB_OK);
-		return FALSE;
-	}
-
-	if (!wglMakeCurrent(mhDC, mhRC))
-	{
-		close();
-		OSMessageBox(mCallbacks->translateString("MBGLContextActErr"), mCallbacks->translateString("MBError"), OSMB_OK);
-		return FALSE;
-	}
-
-	if (!gGLManager.initGL())
-	{
-		close();
-		OSMessageBox(mCallbacks->translateString("MBVideoDrvErr"), mCallbacks->translateString("MBError"), OSMB_OK);
-		return FALSE;
-	}
-
-	// Disable vertical sync for swap
-	if (disable_vsync && wglSwapIntervalEXT)
-	{
-		LL_DEBUGS("Window") << "Disabling vertical sync" << LL_ENDL;
-		wglSwapIntervalEXT(0);
-	}
-	else
-	{
-		LL_DEBUGS("Window") << "Keeping vertical sync" << LL_ENDL;
-	}
-
-	SetWindowLong(mWindowHandle, GWL_USERDATA, (U32)this);
-
-	// register this window as handling drag/drop events from the OS
-	DragAcceptFiles( mWindowHandle, TRUE );
-	
-	//register joystick timer callback
-	SetTimer( mWindowHandle, 0, 1000 / 30, NULL ); // 30 fps timer
-
-	// ok to post quit messages now
-	mPostQuit = TRUE;
-
-	if (auto_show)
-	{
-		show();
-		glClearColor(0.0f, 0.0f, 0.0f, 0.f);
-		glClear(GL_COLOR_BUFFER_BIT);
-		swapBuffers();
-	}
-
-	return TRUE;
-}
-
-void LLWindowWin32::moveWindow( const LLCoordScreen& position, const LLCoordScreen& size )
-{
-	if( mIsMouseClipping )
-	{
-		RECT client_rect_in_screen_space;
-		if( getClientRectInScreenSpace( &client_rect_in_screen_space ) )
-		{
-			ClipCursor( &client_rect_in_screen_space );
-		}
-	}
-
-	// if the window was already maximized, MoveWindow seems to still set the maximized flag even if
-	// the window is smaller than maximized.
-	// So we're going to do a restore first (which is a ShowWindow call) (SL-44655).
-
-	// THIS CAUSES DEV-15484 and DEV-15949 
-	//ShowWindow(mWindowHandle, SW_RESTORE);
-	// NOW we can call MoveWindow
-	MoveWindow(mWindowHandle, position.mX, position.mY, size.mX, size.mY, TRUE);
-}
-
-BOOL LLWindowWin32::setCursorPosition(const LLCoordWindow position)
-{
-	LLCoordScreen screen_pos;
-
-	mMousePositionModified = TRUE;
-	if (!mWindowHandle)
-	{
-		return FALSE;
-	}
-
-	if (!convertCoords(position, &screen_pos))
-	{
-		return FALSE;
-	}
-
-	// Inform the application of the new mouse position (needed for per-frame
-	// hover/picking to function).
-	LLCoordGL gl_pos;
-	convertCoords(position, &gl_pos);
-	mCallbacks->handleMouseMove(this, gl_pos, (MASK)0);
-	
-	// DEV-18951 VWR-8524 Camera moves wildly when alt-clicking.
-	// Because we have preemptively notified the application of the new
-	// mouse position via handleMouseMove() above, we need to clear out
-	// any stale mouse move events.  RN/JC
-	MSG msg;
-	while (PeekMessage(&msg, NULL, WM_MOUSEMOVE, WM_MOUSEMOVE, PM_REMOVE))
-	{ }
-
-	return SetCursorPos(screen_pos.mX, screen_pos.mY);
-}
-
-BOOL LLWindowWin32::getCursorPosition(LLCoordWindow *position)
-{
-	POINT cursor_point;
-	LLCoordScreen screen_pos;
-
-	if (!mWindowHandle ||
-		!GetCursorPos(&cursor_point))
-	{
-		return FALSE;
-	}
-
-	screen_pos.mX = cursor_point.x;
-	screen_pos.mY = cursor_point.y;
-
-	return convertCoords(screen_pos, position);
-}
-
-void LLWindowWin32::hideCursor()
-{
-	while (ShowCursor(FALSE) >= 0)
-	{
-		// nothing, wait for cursor to push down
-	}
-	mCursorHidden = TRUE;
-	mHideCursorPermanent = TRUE;
-}
-
-void LLWindowWin32::showCursor()
-{
-	// makes sure the cursor shows up
-	while (ShowCursor(TRUE) < 0)
-	{
-		// do nothing, wait for cursor to pop out
-	}
-	mCursorHidden = FALSE;
-	mHideCursorPermanent = FALSE;
-}
-
-void LLWindowWin32::showCursorFromMouseMove()
-{
-	if (!mHideCursorPermanent)
-	{
-		showCursor();
-	}
-}
-
-void LLWindowWin32::hideCursorUntilMouseMove()
-{
-	if (!mHideCursorPermanent)
-	{
-		hideCursor();
-		mHideCursorPermanent = FALSE;
-	}
-}
-
-BOOL LLWindowWin32::isCursorHidden()
-{
-	return mCursorHidden;
-}
-
-
-HCURSOR LLWindowWin32::loadColorCursor(LPCTSTR name)
-{
-	return (HCURSOR)LoadImage(mhInstance,
-							  name,
-							  IMAGE_CURSOR,
-							  0,	// default width
-							  0,	// default height
-							  LR_DEFAULTCOLOR);
-}
-
-
-void LLWindowWin32::initCursors()
-{
-	mCursor[ UI_CURSOR_ARROW ]		= LoadCursor(NULL, IDC_ARROW);
-	mCursor[ UI_CURSOR_WAIT ]		= LoadCursor(NULL, IDC_WAIT);
-	mCursor[ UI_CURSOR_HAND ]		= LoadCursor(NULL, IDC_HAND);
-	mCursor[ UI_CURSOR_IBEAM ]		= LoadCursor(NULL, IDC_IBEAM);
-	mCursor[ UI_CURSOR_CROSS ]		= LoadCursor(NULL, IDC_CROSS);
-	mCursor[ UI_CURSOR_SIZENWSE ]	= LoadCursor(NULL, IDC_SIZENWSE);
-	mCursor[ UI_CURSOR_SIZENESW ]	= LoadCursor(NULL, IDC_SIZENESW);
-	mCursor[ UI_CURSOR_SIZEWE ]		= LoadCursor(NULL, IDC_SIZEWE);  
-	mCursor[ UI_CURSOR_SIZENS ]		= LoadCursor(NULL, IDC_SIZENS);  
-	mCursor[ UI_CURSOR_NO ]			= LoadCursor(NULL, IDC_NO);
-	mCursor[ UI_CURSOR_WORKING ]	= LoadCursor(NULL, IDC_APPSTARTING); 
-
-	HMODULE module = GetModuleHandle(NULL);
-	mCursor[ UI_CURSOR_TOOLGRAB ]	= LoadCursor(module, TEXT("TOOLGRAB"));
-	mCursor[ UI_CURSOR_TOOLLAND ]	= LoadCursor(module, TEXT("TOOLLAND"));
-	mCursor[ UI_CURSOR_TOOLFOCUS ]	= LoadCursor(module, TEXT("TOOLFOCUS"));
-	mCursor[ UI_CURSOR_TOOLCREATE ]	= LoadCursor(module, TEXT("TOOLCREATE"));
-	mCursor[ UI_CURSOR_ARROWDRAG ]	= LoadCursor(module, TEXT("ARROWDRAG"));
-	mCursor[ UI_CURSOR_ARROWCOPY ]	= LoadCursor(module, TEXT("ARROWCOPY"));
-	mCursor[ UI_CURSOR_ARROWDRAGMULTI ]	= LoadCursor(module, TEXT("ARROWDRAGMULTI"));
-	mCursor[ UI_CURSOR_ARROWCOPYMULTI ]	= LoadCursor(module, TEXT("ARROWCOPYMULTI"));
-	mCursor[ UI_CURSOR_NOLOCKED ]	= LoadCursor(module, TEXT("NOLOCKED"));
-	mCursor[ UI_CURSOR_ARROWLOCKED ]= LoadCursor(module, TEXT("ARROWLOCKED"));
-	mCursor[ UI_CURSOR_GRABLOCKED ]	= LoadCursor(module, TEXT("GRABLOCKED"));
-	mCursor[ UI_CURSOR_TOOLTRANSLATE ]	= LoadCursor(module, TEXT("TOOLTRANSLATE"));
-	mCursor[ UI_CURSOR_TOOLROTATE ]	= LoadCursor(module, TEXT("TOOLROTATE")); 
-	mCursor[ UI_CURSOR_TOOLSCALE ]	= LoadCursor(module, TEXT("TOOLSCALE"));
-	mCursor[ UI_CURSOR_TOOLCAMERA ]	= LoadCursor(module, TEXT("TOOLCAMERA"));
-	mCursor[ UI_CURSOR_TOOLPAN ]	= LoadCursor(module, TEXT("TOOLPAN"));
-	mCursor[ UI_CURSOR_TOOLZOOMIN ] = LoadCursor(module, TEXT("TOOLZOOMIN"));
-	mCursor[ UI_CURSOR_TOOLPICKOBJECT3 ] = LoadCursor(module, TEXT("TOOLPICKOBJECT3"));
-	mCursor[ UI_CURSOR_PIPETTE ] = LoadCursor(module, TEXT("TOOLPIPETTE"));
-
-	// Color cursors
-	mCursor[UI_CURSOR_TOOLPLAY] = loadColorCursor(TEXT("TOOLPLAY"));
-	mCursor[UI_CURSOR_TOOLPAUSE] = loadColorCursor(TEXT("TOOLPAUSE"));
-	mCursor[UI_CURSOR_TOOLMEDIAOPEN] = loadColorCursor(TEXT("TOOLMEDIAOPEN"));
-
-	// Note: custom cursors that are not found make LoadCursor() return NULL.
-	for( S32 i = 0; i < UI_CURSOR_COUNT; i++ )
-	{
-		if( !mCursor[i] )
-		{
-			mCursor[i] = LoadCursor(NULL, IDC_ARROW);
-		}
-	}
-}
-
-
-
-void LLWindowWin32::setCursor(ECursorType cursor)
-{
-	if (cursor == UI_CURSOR_ARROW
-		&& mBusyCount > 0)
-	{
-		cursor = UI_CURSOR_WORKING;
-	}
-
-	if( mCurrentCursor != cursor )
-	{
-		mCurrentCursor = cursor;
-		SetCursor( mCursor[cursor] );
-	}
-}
-
-ECursorType LLWindowWin32::getCursor() const
-{
-	return mCurrentCursor;
-}
-
-void LLWindowWin32::captureMouse()
-{
-	SetCapture(mWindowHandle);
-}
-
-void LLWindowWin32::releaseMouse()
-{
-	// *NOTE:Mani ReleaseCapture will spawn new windows messages...
-	// which will in turn call our MainWindowProc. It therefore requires
-	// pausing *and more importantly resumption* of the mainlooptimeout...
-	// just like DispatchMessage below.
-	mCallbacks->handlePauseWatchdog(this);
-	ReleaseCapture();
-	mCallbacks->handleResumeWatchdog(this);
-}
-
-
-void LLWindowWin32::delayInputProcessing()
-{
-	mInputProcessingPaused = TRUE;
-}
-
-void LLWindowWin32::gatherInput()
-{
-	MSG		msg;
-	int		msg_count = 0;
-
-	LLMemType m1(LLMemType::MTYPE_GATHER_INPUT);
-
-	while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) && msg_count < MAX_MESSAGE_PER_UPDATE)
-	{
-		mCallbacks->handlePingWatchdog(this, "Main:TranslateGatherInput");
-		TranslateMessage(&msg);
-
-		// turn watchdog off in here to not fail if windows is doing something wacky
-		mCallbacks->handlePauseWatchdog(this);
-		DispatchMessage(&msg);
-		mCallbacks->handleResumeWatchdog(this);
-		msg_count++;
-
-		if ( mInputProcessingPaused )
-		{
-			break;
-		}
-		/* Attempted workaround for problem where typing fast and hitting
-		   return would result in only part of the text being sent. JC
-
-		BOOL key_posted = TranslateMessage(&msg);
-		DispatchMessage(&msg);
-		msg_count++;
-
-		// If a key was translated, a WM_CHAR might have been posted to the end
-		// of the event queue.  We need it immediately.
-		if (key_posted && msg.message == WM_KEYDOWN)
-		{
-			if (PeekMessage(&msg, NULL, WM_CHAR, WM_CHAR, PM_REMOVE))
-			{
-				TranslateMessage(&msg);
-				DispatchMessage(&msg);
-				msg_count++;
-			}
-		}
-		*/
-		mCallbacks->handlePingWatchdog(this, "Main:AsyncCallbackGatherInput");
-		// For async host by name support.  Really hacky.
-		if (gAsyncMsgCallback && (LL_WM_HOST_RESOLVED == msg.message))
-		{
-			gAsyncMsgCallback(msg);
-		}
-	}
-
-	mInputProcessingPaused = FALSE;
-
-	// clear this once we've processed all mouse messages that might have occurred after
-	// we slammed the mouse position
-	mMousePositionModified = FALSE;
-}
-
-static LLFastTimer::DeclareTimer FTM_KEYHANDLER("Handle Keyboard");
-static LLFastTimer::DeclareTimer FTM_MOUSEHANDLER("Handle Mouse");
-
-LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_param, LPARAM l_param)
-{
-	LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(h_wnd, GWL_USERDATA);
-
-
-	if (NULL != window_imp)
-	{
-		window_imp->mCallbacks->handleResumeWatchdog(window_imp);
-		window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:StartWndProc");
-		// Has user provided their own window callback?
-		if (NULL != window_imp->mWndProc)
-		{
-			if (!window_imp->mWndProc(h_wnd, u_msg, w_param, l_param))
-			{
-				// user has handled window message
-				return 0;
-			}
-		}
-
-		window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:PreSwitchWndProc");
-		
-		// Juggle to make sure we can get negative positions for when
-		// mouse is outside window.
-		LLCoordWindow window_coord((S32)(S16)LOWORD(l_param), (S32)(S16)HIWORD(l_param));
-
-		// This doesn't work, as LOWORD returns unsigned short.
-		//LLCoordWindow window_coord(LOWORD(l_param), HIWORD(l_param));
-		LLCoordGL gl_coord;
-
-		// pass along extended flag in mask
-		MASK mask = (l_param>>16 & KF_EXTENDED) ? MASK_EXTENDED : 0x0;
-		BOOL eat_keystroke = TRUE;
-
-		switch(u_msg)
-		{
-			RECT	update_rect;
-			S32		update_width;
-			S32		update_height;
-
-		case WM_TIMER:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_TIMER");
-			window_imp->mCallbacks->handleTimerEvent(window_imp);
-			break;
-
-		case WM_DEVICECHANGE:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_DEVICECHANGE");
-			if (gDebugWindowProc)
-			{
-				llinfos << "  WM_DEVICECHANGE: wParam=" << w_param 
-						<< "; lParam=" << l_param << llendl;
-			}
-			if (w_param == DBT_DEVNODES_CHANGED || w_param == DBT_DEVICEARRIVAL)
-			{
-				if (window_imp->mCallbacks->handleDeviceChange(window_imp))
-				{
-					return 0;
-				}
-			}
-			break;
-
-		case WM_PAINT:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_PAINT");
-			GetUpdateRect(window_imp->mWindowHandle, &update_rect, FALSE);
-			update_width = update_rect.right - update_rect.left + 1;
-			update_height = update_rect.bottom - update_rect.top + 1;
-			window_imp->mCallbacks->handlePaint(window_imp, update_rect.left, update_rect.top,
-				update_width, update_height);
-			break;
-		case WM_PARENTNOTIFY:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_PARENTNOTIFY");
-			u_msg = u_msg;
-			break;
-
-		case WM_SETCURSOR:
-			// This message is sent whenever the cursor is moved in a window.
-			// You need to set the appropriate cursor appearance.
-
-			// Only take control of cursor over client region of window
-			// This allows Windows(tm) to handle resize cursors, etc.
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SETCURSOR");
-			if (LOWORD(l_param) == HTCLIENT)
-			{
-				SetCursor(window_imp->mCursor[ window_imp->mCurrentCursor] );
-				return 0;
-			}
-			break;
-
-		case WM_ENTERMENULOOP:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_ENTERMENULOOP");
-			window_imp->mCallbacks->handleWindowBlock(window_imp);
-			break;
-
-		case WM_EXITMENULOOP:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_EXITMENULOOP");
-			window_imp->mCallbacks->handleWindowUnblock(window_imp);
-			break;
-
-		case WM_ACTIVATEAPP:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_ACTIVATEAPP");
-			{
-				// This message should be sent whenever the app gains or loses focus.
-				BOOL activating = (BOOL) w_param;
-				BOOL minimized = window_imp->getMinimized();
-
-				if (gDebugWindowProc)
-				{
-					LL_INFOS("Window") << "WINDOWPROC ActivateApp "
-						<< " activating " << S32(activating)
-						<< " minimized " << S32(minimized)
-						<< " fullscreen " << S32(window_imp->mFullscreen)
-						<< LL_ENDL;
-				}
-
-				if (window_imp->mFullscreen)
-				{
-					// When we run fullscreen, restoring or minimizing the app needs 
-					// to switch the screen resolution
-					if (activating)
-					{
-						window_imp->setFullscreenResolution();
-						window_imp->restore();
-					}
-					else
-					{
-						window_imp->minimize();
-						window_imp->resetDisplayResolution();
-					}
-				}
-
-				window_imp->mCallbacks->handleActivateApp(window_imp, activating);
-
-				break;
-			}
-
-		case WM_ACTIVATE:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_ACTIVATE");
-			{
-				// Can be one of WA_ACTIVE, WA_CLICKACTIVE, or WA_INACTIVE
-				BOOL activating = (LOWORD(w_param) != WA_INACTIVE);
-
-				BOOL minimized = BOOL(HIWORD(w_param));
-
-				if (!activating && LLWinImm::isAvailable() && window_imp->mPreeditor)
-				{
-					window_imp->interruptLanguageTextInput();
-				}
-
-				// JC - I'm not sure why, but if we don't report that we handled the 
-				// WM_ACTIVATE message, the WM_ACTIVATEAPP messages don't work 
-				// properly when we run fullscreen.
-				if (gDebugWindowProc)
-				{
-					LL_INFOS("Window") << "WINDOWPROC Activate "
-						<< " activating " << S32(activating) 
-						<< " minimized " << S32(minimized)
-						<< LL_ENDL;
-				}
-
-				// Don't handle this.
-				break;
-			}
-
-		case WM_QUERYOPEN:
-			// TODO: use this to return a nice icon
-			break;
-
-		case WM_SYSCOMMAND:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SYSCOMMAND");
-			switch(w_param)
-			{
-			case SC_KEYMENU: 
-				// Disallow the ALT key from triggering the default system menu.
-				return 0;		
-
-			case SC_SCREENSAVE:
-			case SC_MONITORPOWER:
-				// eat screen save messages and prevent them!
-				return 0;
-			}
-			break;
-
-		case WM_CLOSE:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_CLOSE");
-			// Will the app allow the window to close?
-			if (window_imp->mCallbacks->handleCloseRequest(window_imp))
-			{
-				// Get the app to initiate cleanup.
-				window_imp->mCallbacks->handleQuit(window_imp);
-				// The app is responsible for calling destroyWindow when done with GL
-			}
-			return 0;
-
-		case WM_DESTROY:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_DESTROY");
-			if (window_imp->shouldPostQuit())
-			{
-				PostQuitMessage(0);  // Posts WM_QUIT with an exit code of 0
-			}
-			return 0;
-
-		case WM_COMMAND:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_COMMAND");
-			if (!HIWORD(w_param)) // this message is from a menu
-			{
-				window_imp->mCallbacks->handleMenuSelect(window_imp, LOWORD(w_param));
-			}
-			break;
-
-		case WM_SYSKEYDOWN:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SYSKEYDOWN");
-			// allow system keys, such as ALT-F4 to be processed by Windows
-			eat_keystroke = FALSE;
-		case WM_KEYDOWN:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYDOWN");
-			{
-				if (gDebugWindowProc)
-				{
-					LL_INFOS("Window") << "Debug WindowProc WM_KEYDOWN "
-						<< " key " << S32(w_param) 
-						<< LL_ENDL;
-				}
-				if(gKeyboard->handleKeyDown(w_param, mask) && eat_keystroke)
-				{
-					return 0;
-				}
-				// pass on to windows if we didn't handle it
-				break;
-			}
-		case WM_SYSKEYUP:
-			eat_keystroke = FALSE;
-		case WM_KEYUP:
-		{
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYUP");
-			LLFastTimer t2(FTM_KEYHANDLER);
-
-			if (gDebugWindowProc)
-			{
-				LL_INFOS("Window") << "Debug WindowProc WM_KEYUP "
-					<< " key " << S32(w_param) 
-					<< LL_ENDL;
-			}
-			if (gKeyboard->handleKeyUp(w_param, mask) && eat_keystroke)
-			{
-				return 0;
-			}
-
-			// pass on to windows
-			break;
-		}
-		case WM_IME_SETCONTEXT:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_SETCONTEXT");
-			if (gDebugWindowProc)
-			{
-				llinfos << "WM_IME_SETCONTEXT" << llendl;
-			}
-			if (LLWinImm::isAvailable() && window_imp->mPreeditor)
-			{
-				l_param &= ~ISC_SHOWUICOMPOSITIONWINDOW;
-				// Invoke DefWinProc with the modified LPARAM.
-			}
-			break;
-
-		case WM_IME_STARTCOMPOSITION:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_STARTCOMPOSITION");
-			if (gDebugWindowProc)
-			{
-				llinfos << "WM_IME_STARTCOMPOSITION" << llendl;
-			}
-			if (LLWinImm::isAvailable() && window_imp->mPreeditor)
-			{
-				window_imp->handleStartCompositionMessage();
-				return 0;
-			}
-			break;
-
-		case WM_IME_ENDCOMPOSITION:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_ENDCOMPOSITION");
-			if (gDebugWindowProc)
-			{
-				llinfos << "WM_IME_ENDCOMPOSITION" << llendl;
-			}
-			if (LLWinImm::isAvailable() && window_imp->mPreeditor)
-			{
-				return 0;
-			}
-			break;
-
-		case WM_IME_COMPOSITION:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_COMPOSITION");
-			if (gDebugWindowProc)
-			{
-				llinfos << "WM_IME_COMPOSITION" << llendl;
-			}
-			if (LLWinImm::isAvailable() && window_imp->mPreeditor)
-			{
-				window_imp->handleCompositionMessage(l_param);
-				return 0;
-			}
-			break;
-
-		case WM_IME_REQUEST:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_REQUEST");
-			if (gDebugWindowProc)
-			{
-				llinfos << "WM_IME_REQUEST" << llendl;
-			}
-			if (LLWinImm::isAvailable() && window_imp->mPreeditor)
-			{
-				LRESULT result = 0;
-				if (window_imp->handleImeRequests(w_param, l_param, &result))
-				{
-					return result;
-				}
-			}
-			break;
-
-		case WM_CHAR:
-			// Should really use WM_UNICHAR eventually, but it requires a specific Windows version and I need
-			// to figure out how that works. - Doug
-			//
-			// ... Well, I don't think so.
-			// How it works is explained in Win32 API document, but WM_UNICHAR didn't work
-			// as specified at least on Windows XP SP1 Japanese version.  I have never used
-			// it since then, and I'm not sure whether it has been fixed now, but I don't think
-			// it is worth trying.  The good old WM_CHAR works just fine even for supplementary
-			// characters.  We just need to take care of surrogate pairs sent as two WM_CHAR's
-			// by ourselves.  It is not that tough.  -- Alissa Sabre @ SL
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_CHAR");
-			if (gDebugWindowProc)
-			{
-				LL_INFOS("Window") << "Debug WindowProc WM_CHAR "
-					<< " key " << S32(w_param) 
-					<< LL_ENDL;
-			}
-			// Even if LLWindowCallbacks::handleUnicodeChar(llwchar, BOOL) returned FALSE,
-			// we *did* processed the event, so I believe we should not pass it to DefWindowProc...
-			window_imp->handleUnicodeUTF16((U16)w_param, gKeyboard->currentMask(FALSE));
-			return 0;
-
-		case WM_LBUTTONDOWN:
-			{
-				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_LBUTTONDOWN");
-				LLFastTimer t2(FTM_MOUSEHANDLER);
-				if (LLWinImm::isAvailable() && window_imp->mPreeditor)
-				{
-					window_imp->interruptLanguageTextInput();
-				}
-
-				// Because we move the cursor position in the app, we need to query
-				// to find out where the cursor at the time the event is handled.
-				// If we don't do this, many clicks could get buffered up, and if the
-				// first click changes the cursor position, all subsequent clicks
-				// will occur at the wrong location.  JC
-				LLCoordWindow cursor_coord_window;
-				if (window_imp->mMousePositionModified)
-				{
-					window_imp->getCursorPosition(&cursor_coord_window);
-					window_imp->convertCoords(cursor_coord_window, &gl_coord);
-				}
-				else
-				{
-					window_imp->convertCoords(window_coord, &gl_coord);
-				}
-				MASK mask = gKeyboard->currentMask(TRUE);
-				// generate move event to update mouse coordinates
-				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
-				if (window_imp->mCallbacks->handleMouseDown(window_imp, gl_coord, mask))
-				{
-					return 0;
-				}
-			}
-			break;
-
-		case WM_LBUTTONDBLCLK:
-		//RN: ignore right button double clicks for now
-		//case WM_RBUTTONDBLCLK:
-			{
-				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_LBUTTONDBLCLK");
-				// Because we move the cursor position in the app, we need to query
-				// to find out where the cursor at the time the event is handled.
-				// If we don't do this, many clicks could get buffered up, and if the
-				// first click changes the cursor position, all subsequent clicks
-				// will occur at the wrong location.  JC
-				LLCoordWindow cursor_coord_window;
-				if (window_imp->mMousePositionModified)
-				{
-					window_imp->getCursorPosition(&cursor_coord_window);
-					window_imp->convertCoords(cursor_coord_window, &gl_coord);
-				}
-				else
-				{
-					window_imp->convertCoords(window_coord, &gl_coord);
-				}
-				MASK mask = gKeyboard->currentMask(TRUE);
-				// generate move event to update mouse coordinates
-				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
-				if (window_imp->mCallbacks->handleDoubleClick(window_imp, gl_coord, mask) )
-				{
-					return 0;
-				}
-			}
-			break;
-
-		case WM_LBUTTONUP:
-			{
-				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_LBUTTONUP");
-				LLFastTimer t2(FTM_MOUSEHANDLER);
-				//if (gDebugClicks)
-				//{
-				//	LL_INFOS("Window") << "WndProc left button up" << LL_ENDL;
-				//}
-				// Because we move the cursor position in the app, we need to query
-				// to find out where the cursor at the time the event is handled.
-				// If we don't do this, many clicks could get buffered up, and if the
-				// first click changes the cursor position, all subsequent clicks
-				// will occur at the wrong location.  JC
-				LLCoordWindow cursor_coord_window;
-				if (window_imp->mMousePositionModified)
-				{
-					window_imp->getCursorPosition(&cursor_coord_window);
-					window_imp->convertCoords(cursor_coord_window, &gl_coord);
-				}
-				else
-				{
-					window_imp->convertCoords(window_coord, &gl_coord);
-				}
-				MASK mask = gKeyboard->currentMask(TRUE);
-				// generate move event to update mouse coordinates
-				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
-				if (window_imp->mCallbacks->handleMouseUp(window_imp, gl_coord, mask))
-				{
-					return 0;
-				}
-			}
-			break;
-
-		case WM_RBUTTONDBLCLK:
-		case WM_RBUTTONDOWN:
-			{
-				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_RBUTTONDOWN");
-				LLFastTimer t2(FTM_MOUSEHANDLER);
-				if (LLWinImm::isAvailable() && window_imp->mPreeditor)
-				{
-					window_imp->interruptLanguageTextInput();
-				}
-
-				// Because we move the cursor position in the llviewerapp, we need to query
-				// to find out where the cursor at the time the event is handled.
-				// If we don't do this, many clicks could get buffered up, and if the
-				// first click changes the cursor position, all subsequent clicks
-				// will occur at the wrong location.  JC
-				LLCoordWindow cursor_coord_window;
-				if (window_imp->mMousePositionModified)
-				{
-					window_imp->getCursorPosition(&cursor_coord_window);
-					window_imp->convertCoords(cursor_coord_window, &gl_coord);
-				}
-				else
-				{
-					window_imp->convertCoords(window_coord, &gl_coord);
-				}
-				MASK mask = gKeyboard->currentMask(TRUE);
-				// generate move event to update mouse coordinates
-				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
-				if (window_imp->mCallbacks->handleRightMouseDown(window_imp, gl_coord, mask))
-				{
-					return 0;
-				}
-			}
-			break;
-
-		case WM_RBUTTONUP:
-			{
-				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_RBUTTONUP");
-				LLFastTimer t2(FTM_MOUSEHANDLER);
-				// Because we move the cursor position in the app, we need to query
-				// to find out where the cursor at the time the event is handled.
-				// If we don't do this, many clicks could get buffered up, and if the
-				// first click changes the cursor position, all subsequent clicks
-				// will occur at the wrong location.  JC
-				LLCoordWindow cursor_coord_window;
-				if (window_imp->mMousePositionModified)
-				{
-					window_imp->getCursorPosition(&cursor_coord_window);
-					window_imp->convertCoords(cursor_coord_window, &gl_coord);
-				}
-				else
-				{
-					window_imp->convertCoords(window_coord, &gl_coord);
-				}
-				MASK mask = gKeyboard->currentMask(TRUE);
-				// generate move event to update mouse coordinates
-				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
-				if (window_imp->mCallbacks->handleRightMouseUp(window_imp, gl_coord, mask))
-				{
-					return 0;
-				}
-			}
-			break;
-
-		case WM_MBUTTONDOWN:
-//		case WM_MBUTTONDBLCLK:
-			{
-				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MBUTTONDOWN");
-				LLFastTimer t2(FTM_MOUSEHANDLER);
-				if (LLWinImm::isAvailable() && window_imp->mPreeditor)
-				{
-					window_imp->interruptLanguageTextInput();
-				}
-
-				// Because we move the cursor position in tllviewerhe app, we need to query
-				// to find out where the cursor at the time the event is handled.
-				// If we don't do this, many clicks could get buffered up, and if the
-				// first click changes the cursor position, all subsequent clicks
-				// will occur at the wrong location.  JC
-				LLCoordWindow cursor_coord_window;
-				if (window_imp->mMousePositionModified)
-				{
-					window_imp->getCursorPosition(&cursor_coord_window);
-					window_imp->convertCoords(cursor_coord_window, &gl_coord);
-				}
-				else
-				{
-					window_imp->convertCoords(window_coord, &gl_coord);
-				}
-				MASK mask = gKeyboard->currentMask(TRUE);
-				// generate move event to update mouse coordinates
-				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
-				if (window_imp->mCallbacks->handleMiddleMouseDown(window_imp, gl_coord, mask))
-				{
-					return 0;
-				}
-			}
-			break;
-
-		case WM_MBUTTONUP:
-			{
-				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MBUTTONUP");
-				LLFastTimer t2(FTM_MOUSEHANDLER);
-				// Because we move the cursor position in tllviewerhe app, we need to query
-				// to find out where the cursor at the time the event is handled.
-				// If we don't do this, many clicks could get buffered up, and if the
-				// first click changes the cursor position, all subsequent clicks
-				// will occur at the wrong location.  JC
-				LLCoordWindow cursor_coord_window;
-				if (window_imp->mMousePositionModified)
-				{
-					window_imp->getCursorPosition(&cursor_coord_window);
-					window_imp->convertCoords(cursor_coord_window, &gl_coord);
-				}
-				else
-				{
-					window_imp->convertCoords(window_coord, &gl_coord);
-				}
-				MASK mask = gKeyboard->currentMask(TRUE);
-				// generate move event to update mouse coordinates
-				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
-				if (window_imp->mCallbacks->handleMiddleMouseUp(window_imp, gl_coord, mask))
-				{
-					return 0;
-				}
-			}
-			break;
-
-		case WM_MOUSEWHEEL:
-			{
-				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MOUSEWHEEL");
-				static short z_delta = 0;
-
-				z_delta += HIWORD(w_param);
-				// cout << "z_delta " << z_delta << endl;
-
-				// current mouse wheels report changes in increments of zDelta (+120, -120)
-				// Future, higher resolution mouse wheels may report smaller deltas.
-				// So we sum the deltas and only act when we've exceeded WHEEL_DELTA
-				//
-				// If the user rapidly spins the wheel, we can get messages with
-				// large deltas, like 480 or so.  Thus we need to scroll more quickly.
-				if (z_delta <= -WHEEL_DELTA || WHEEL_DELTA <= z_delta)
-				{
-					window_imp->mCallbacks->handleScrollWheel(window_imp, -z_delta / WHEEL_DELTA);
-					z_delta = 0;
-				}
-				return 0;
-			}
-			/*
-			// TODO: add this after resolving _WIN32_WINNT issue
-			case WM_MOUSELEAVE:
-			{
-			window_imp->mCallbacks->handleMouseLeave(window_imp);
-
-			//				TRACKMOUSEEVENT track_mouse_event;
-			//				track_mouse_event.cbSize = sizeof( TRACKMOUSEEVENT );
-			//				track_mouse_event.dwFlags = TME_LEAVE;
-			//				track_mouse_event.hwndTrack = h_wnd;
-			//				track_mouse_event.dwHoverTime = HOVER_DEFAULT;
-			//				TrackMouseEvent( &track_mouse_event ); 
-			return 0;
-			}
-			*/
-			// Handle mouse movement within the window
-		case WM_MOUSEMOVE:
-			{
-				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MOUSEMOVE");
-				window_imp->convertCoords(window_coord, &gl_coord);
-				MASK mask = gKeyboard->currentMask(TRUE);
-				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
-				return 0;
-			}
-
-		case WM_SIZE:
-			{
-				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SIZE");
-				S32 width = S32( LOWORD(l_param) );
-				S32 height = S32( HIWORD(l_param) );
-
-				if (gDebugWindowProc)
-				{
-					BOOL maximized = ( w_param == SIZE_MAXIMIZED );
-					BOOL restored  = ( w_param == SIZE_RESTORED );
-					BOOL minimized = ( w_param == SIZE_MINIMIZED );
-
-					LL_INFOS("Window") << "WINDOWPROC Size "
-						<< width << "x" << height
-						<< " max " << S32(maximized)
-						<< " min " << S32(minimized)
-						<< " rest " << S32(restored)
-						<< LL_ENDL;
-				}
-
-				// There's an odd behavior with WM_SIZE that I would call a bug. If 
-				// the window is maximized, and you call MoveWindow() with a size smaller
-				// than a maximized window, it ends up sending WM_SIZE with w_param set 
-				// to SIZE_MAXIMIZED -- which isn't true. So the logic below doesn't work.
-				// (SL-44655). Fixed it by calling ShowWindow(SW_RESTORE) first (see 
-				// LLWindowWin32::moveWindow in this file). 
-
-				// If we are now restored, but we weren't before, this
-				// means that the window was un-minimized.
-				if (w_param == SIZE_RESTORED && window_imp->mLastSizeWParam != SIZE_RESTORED)
-				{
-					window_imp->mCallbacks->handleActivate(window_imp, TRUE);
-				}
-
-				// handle case of window being maximized from fully minimized state
-				if (w_param == SIZE_MAXIMIZED && window_imp->mLastSizeWParam != SIZE_MAXIMIZED)
-				{
-					window_imp->mCallbacks->handleActivate(window_imp, TRUE);
-				}
-
-				// Also handle the minimization case
-				if (w_param == SIZE_MINIMIZED && window_imp->mLastSizeWParam != SIZE_MINIMIZED)
-				{
-					window_imp->mCallbacks->handleActivate(window_imp, FALSE);
-				}
-
-				// Actually resize all of our views
-				if (w_param != SIZE_MINIMIZED)
-				{
-					// Ignore updates for minimizing and minimized "windows"
-					window_imp->mCallbacks->handleResize(	window_imp, 
-						LOWORD(l_param), 
-						HIWORD(l_param) );
-				}
-
-				window_imp->mLastSizeWParam = w_param;
-
-				return 0;
-			}
-
-		case WM_SETFOCUS:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SETFOCUS");
-			if (gDebugWindowProc)
-			{
-				LL_INFOS("Window") << "WINDOWPROC SetFocus" << LL_ENDL;
-			}
-			window_imp->mCallbacks->handleFocus(window_imp);
-			return 0;
-
-		case WM_KILLFOCUS:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KILLFOCUS");
-			if (gDebugWindowProc)
-			{
-				LL_INFOS("Window") << "WINDOWPROC KillFocus" << LL_ENDL;
-			}
-			window_imp->mCallbacks->handleFocusLost(window_imp);
-			return 0;
-
-		case WM_COPYDATA:
-			{
-				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_COPYDATA");
-				// received a URL
-				PCOPYDATASTRUCT myCDS = (PCOPYDATASTRUCT) l_param;
-				window_imp->mCallbacks->handleDataCopy(window_imp, myCDS->dwData, myCDS->lpData);
-			};
-			return 0;			
-
-		case WM_DROPFILES:
-			{
-				// HDROP contains what we need
-				HDROP hdrop = (HDROP)w_param;
-
-				// get location in window space where drop occured and convert to OpenGL coordinate space
-				POINT pt;
-				DragQueryPoint( hdrop, &pt );
-				LLCoordGL gl_coord;
-				LLCoordWindow cursor_coord_window( pt.x, pt.y );
-				window_imp->convertCoords(cursor_coord_window, &gl_coord);
-
-				// get payload (eventually, this needs to more advanced and grab size of payload dynamically
-				static char file_name[ 1024 ];
+#include <Imm.h>
+
+// Require DirectInput version 8
+#define DIRECTINPUT_VERSION 0x0800
+
+#include <dinput.h>
+#include <Dbt.h.>
+
+#include "llmemtype.h"
+// culled from winuser.h
+#ifndef WM_MOUSEWHEEL /* Added to be compatible with later SDK's */
+const S32	WM_MOUSEWHEEL = 0x020A;
+#endif
+#ifndef WHEEL_DELTA /* Added to be compatible with later SDK's */
+const S32	WHEEL_DELTA = 120;     /* Value for rolling one detent */
+#endif
+const S32	MAX_MESSAGE_PER_UPDATE = 20;
+const S32	BITS_PER_PIXEL = 32;
+const S32	MAX_NUM_RESOLUTIONS = 32;
+const F32	ICON_FLASH_TIME = 0.5f;
+
+extern BOOL gDebugWindowProc;
+
+LPWSTR gIconResource = IDI_APPLICATION;
+
+LLW32MsgCallback gAsyncMsgCallback = NULL;
+
+//
+// LLWindowWin32
+//
+
+void show_window_creation_error(const std::string& title)
+{
+	LL_WARNS("Window") << title << LL_ENDL;
+}
+
+//static
+BOOL LLWindowWin32::sIsClassRegistered = FALSE;
+
+BOOL	LLWindowWin32::sLanguageTextInputAllowed = TRUE;
+BOOL	LLWindowWin32::sWinIMEOpened = FALSE;
+HKL		LLWindowWin32::sWinInputLocale = 0;
+DWORD	LLWindowWin32::sWinIMEConversionMode = IME_CMODE_NATIVE;
+DWORD	LLWindowWin32::sWinIMESentenceMode = IME_SMODE_AUTOMATIC;
+LLCoordWindow LLWindowWin32::sWinIMEWindowPosition(-1,-1);
+
+// The following class LLWinImm delegates Windows IMM APIs.
+// We need this because some language versions of Windows,
+// e.g., US version of Windows XP, doesn't install IMM32.DLL
+// as a default, and we can't link against imm32.lib statically.
+// I believe DLL loading of this type is best suited to do
+// in a static initialization of a class.  What I'm not sure is
+// whether it follows the Linden Conding Standard... 
+// See http://wiki.secondlife.com/wiki/Coding_standards#Static_Members
+
+class LLWinImm
+{
+public:
+	static bool		isAvailable() { return sTheInstance.mHImmDll != NULL; }
+
+public:
+	// Wrappers for IMM API.
+	static BOOL		isIME(HKL hkl);															
+	static HWND		getDefaultIMEWnd(HWND hwnd);
+	static HIMC		getContext(HWND hwnd);													
+	static BOOL		releaseContext(HWND hwnd, HIMC himc);
+	static BOOL		getOpenStatus(HIMC himc);												
+	static BOOL		setOpenStatus(HIMC himc, BOOL status);									
+	static BOOL		getConversionStatus(HIMC himc, LPDWORD conversion, LPDWORD sentence);	
+	static BOOL		setConversionStatus(HIMC himc, DWORD conversion, DWORD sentence);		
+	static BOOL		getCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form);					
+	static BOOL		setCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form);					
+	static LONG		getCompositionString(HIMC himc, DWORD index, LPVOID data, DWORD length);
+	static BOOL		setCompositionString(HIMC himc, DWORD index, LPVOID pComp, DWORD compLength, LPVOID pRead, DWORD readLength);
+	static BOOL		setCompositionFont(HIMC himc, LPLOGFONTW logfont);
+	static BOOL		setCandidateWindow(HIMC himc, LPCANDIDATEFORM candidate_form);
+	static BOOL		notifyIME(HIMC himc, DWORD action, DWORD index, DWORD value);
+
+private:
+	LLWinImm();
+	~LLWinImm();
+
+private:
+	// Pointers to IMM API.
+	BOOL	 	(WINAPI *mImmIsIME)(HKL);
+	HWND		(WINAPI *mImmGetDefaultIMEWnd)(HWND);
+	HIMC		(WINAPI *mImmGetContext)(HWND);
+	BOOL		(WINAPI *mImmReleaseContext)(HWND, HIMC);
+	BOOL		(WINAPI *mImmGetOpenStatus)(HIMC);
+	BOOL		(WINAPI *mImmSetOpenStatus)(HIMC, BOOL);
+	BOOL		(WINAPI *mImmGetConversionStatus)(HIMC, LPDWORD, LPDWORD);
+	BOOL		(WINAPI *mImmSetConversionStatus)(HIMC, DWORD, DWORD);
+	BOOL		(WINAPI *mImmGetCompostitionWindow)(HIMC, LPCOMPOSITIONFORM);
+	BOOL		(WINAPI *mImmSetCompostitionWindow)(HIMC, LPCOMPOSITIONFORM);
+	LONG		(WINAPI *mImmGetCompositionString)(HIMC, DWORD, LPVOID, DWORD);
+	BOOL		(WINAPI *mImmSetCompositionString)(HIMC, DWORD, LPVOID, DWORD, LPVOID, DWORD);
+	BOOL		(WINAPI *mImmSetCompositionFont)(HIMC, LPLOGFONTW);
+	BOOL		(WINAPI *mImmSetCandidateWindow)(HIMC, LPCANDIDATEFORM);
+	BOOL		(WINAPI *mImmNotifyIME)(HIMC, DWORD, DWORD, DWORD);
+
+private:
+	HMODULE		mHImmDll;
+	static LLWinImm sTheInstance;
+};
+
+LLWinImm LLWinImm::sTheInstance;
+
+LLWinImm::LLWinImm() : mHImmDll(NULL)
+{
+	// Check system metrics 
+	if ( !GetSystemMetrics( SM_DBCSENABLED ) )
+		return;
+	
+
+	mHImmDll = LoadLibraryA("Imm32");
+	if (mHImmDll != NULL)
+	{
+		mImmIsIME               = (BOOL (WINAPI *)(HKL))                    GetProcAddress(mHImmDll, "ImmIsIME");
+		mImmGetDefaultIMEWnd	= (HWND (WINAPI *)(HWND))					GetProcAddress(mHImmDll, "ImmGetDefaultIMEWnd");
+		mImmGetContext          = (HIMC (WINAPI *)(HWND))                   GetProcAddress(mHImmDll, "ImmGetContext");
+		mImmReleaseContext      = (BOOL (WINAPI *)(HWND, HIMC))             GetProcAddress(mHImmDll, "ImmReleaseContext");
+		mImmGetOpenStatus       = (BOOL (WINAPI *)(HIMC))                   GetProcAddress(mHImmDll, "ImmGetOpenStatus");
+		mImmSetOpenStatus       = (BOOL (WINAPI *)(HIMC, BOOL))             GetProcAddress(mHImmDll, "ImmSetOpenStatus");
+		mImmGetConversionStatus = (BOOL (WINAPI *)(HIMC, LPDWORD, LPDWORD)) GetProcAddress(mHImmDll, "ImmGetConversionStatus");
+		mImmSetConversionStatus = (BOOL (WINAPI *)(HIMC, DWORD, DWORD))     GetProcAddress(mHImmDll, "ImmSetConversionStatus");
+		mImmGetCompostitionWindow = (BOOL (WINAPI *)(HIMC, LPCOMPOSITIONFORM))   GetProcAddress(mHImmDll, "ImmGetCompositionWindow");
+		mImmSetCompostitionWindow = (BOOL (WINAPI *)(HIMC, LPCOMPOSITIONFORM))   GetProcAddress(mHImmDll, "ImmSetCompositionWindow");
+		mImmGetCompositionString= (LONG (WINAPI *)(HIMC, DWORD, LPVOID, DWORD))					GetProcAddress(mHImmDll, "ImmGetCompositionStringW");
+		mImmSetCompositionString= (BOOL (WINAPI *)(HIMC, DWORD, LPVOID, DWORD, LPVOID, DWORD))	GetProcAddress(mHImmDll, "ImmSetCompositionStringW");
+		mImmSetCompositionFont  = (BOOL (WINAPI *)(HIMC, LPLOGFONTW))		GetProcAddress(mHImmDll, "ImmSetCompositionFontW");
+		mImmSetCandidateWindow  = (BOOL (WINAPI *)(HIMC, LPCANDIDATEFORM))  GetProcAddress(mHImmDll, "ImmSetCandidateWindow");
+		mImmNotifyIME			= (BOOL (WINAPI *)(HIMC, DWORD, DWORD, DWORD))	GetProcAddress(mHImmDll, "ImmNotifyIME");
+
+		if (mImmIsIME == NULL ||
+			mImmGetDefaultIMEWnd == NULL ||
+			mImmGetContext == NULL ||
+			mImmReleaseContext == NULL ||
+			mImmGetOpenStatus == NULL ||
+			mImmSetOpenStatus == NULL ||
+			mImmGetConversionStatus == NULL ||
+			mImmSetConversionStatus == NULL ||
+			mImmGetCompostitionWindow == NULL ||
+			mImmSetCompostitionWindow == NULL ||
+			mImmGetCompositionString == NULL ||
+			mImmSetCompositionString == NULL ||
+			mImmSetCompositionFont == NULL ||
+			mImmSetCandidateWindow == NULL ||
+			mImmNotifyIME == NULL)
+		{
+			// If any of the above API entires are not found, we can't use IMM API.  
+			// So, turn off the IMM support.  We should log some warning message in 
+			// the case, since it is very unusual; these APIs are available from 
+			// the beginning, and all versions of IMM32.DLL should have them all.  
+			// Unfortunately, this code may be executed before initialization of 
+			// the logging channel (llwarns), and we can't do it here...  Yes, this 
+			// is one of disadvantages to use static constraction to DLL loading. 
+			FreeLibrary(mHImmDll);
+			mHImmDll = NULL;
+
+			// If we unload the library, make sure all the function pointers are cleared
+			mImmIsIME = NULL;
+			mImmGetDefaultIMEWnd = NULL;
+			mImmGetContext = NULL;
+			mImmReleaseContext = NULL;
+			mImmGetOpenStatus = NULL;
+			mImmSetOpenStatus = NULL;
+			mImmGetConversionStatus = NULL;
+			mImmSetConversionStatus = NULL;
+			mImmGetCompostitionWindow = NULL;
+			mImmSetCompostitionWindow = NULL;
+			mImmGetCompositionString = NULL;
+			mImmSetCompositionString = NULL;
+			mImmSetCompositionFont = NULL;
+			mImmSetCandidateWindow = NULL;
+			mImmNotifyIME = NULL;
+		}
+	}
+}
+
+
+// static 
+BOOL	LLWinImm::isIME(HKL hkl)															
+{ 
+	if ( sTheInstance.mImmIsIME )
+		return sTheInstance.mImmIsIME(hkl); 
+	return FALSE;
+}
+
+// static 
+HIMC		LLWinImm::getContext(HWND hwnd)
+{
+	if ( sTheInstance.mImmGetContext )
+		return sTheInstance.mImmGetContext(hwnd); 
+	return 0;
+}
+
+//static 
+BOOL		LLWinImm::releaseContext(HWND hwnd, HIMC himc)
+{ 
+	if ( sTheInstance.mImmIsIME )
+		return sTheInstance.mImmReleaseContext(hwnd, himc); 
+	return FALSE;
+}
+
+// static 
+BOOL		LLWinImm::getOpenStatus(HIMC himc)
+{ 
+	if ( sTheInstance.mImmGetOpenStatus )
+		return sTheInstance.mImmGetOpenStatus(himc); 
+	return FALSE;
+}
+
+// static 
+BOOL		LLWinImm::setOpenStatus(HIMC himc, BOOL status)									
+{ 
+	if ( sTheInstance.mImmSetOpenStatus )
+		return sTheInstance.mImmSetOpenStatus(himc, status); 
+	return FALSE;
+}
+
+// static 
+BOOL		LLWinImm::getConversionStatus(HIMC himc, LPDWORD conversion, LPDWORD sentence)	
+{ 
+	if ( sTheInstance.mImmGetConversionStatus )
+		return sTheInstance.mImmGetConversionStatus(himc, conversion, sentence); 
+	return FALSE;
+}
+
+// static 
+BOOL		LLWinImm::setConversionStatus(HIMC himc, DWORD conversion, DWORD sentence)		
+{ 
+	if ( sTheInstance.mImmSetConversionStatus )
+		return sTheInstance.mImmSetConversionStatus(himc, conversion, sentence); 
+	return FALSE;
+}
+
+// static 
+BOOL		LLWinImm::getCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form)					
+{ 
+	if ( sTheInstance.mImmGetCompostitionWindow )
+		return sTheInstance.mImmGetCompostitionWindow(himc, form);	
+	return FALSE;
+}
+
+// static 
+BOOL		LLWinImm::setCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form)					
+{ 
+	if ( sTheInstance.mImmSetCompostitionWindow )
+		return sTheInstance.mImmSetCompostitionWindow(himc, form);	
+	return FALSE;
+}
+
+
+// static 
+LONG		LLWinImm::getCompositionString(HIMC himc, DWORD index, LPVOID data, DWORD length)					
+{ 
+	if ( sTheInstance.mImmGetCompositionString )
+		return sTheInstance.mImmGetCompositionString(himc, index, data, length);	
+	return FALSE;
+}
+
+
+// static 
+BOOL		LLWinImm::setCompositionString(HIMC himc, DWORD index, LPVOID pComp, DWORD compLength, LPVOID pRead, DWORD readLength)					
+{ 
+	if ( sTheInstance.mImmSetCompositionString )
+		return sTheInstance.mImmSetCompositionString(himc, index, pComp, compLength, pRead, readLength);	
+	return FALSE;
+}
+
+// static 
+BOOL		LLWinImm::setCompositionFont(HIMC himc, LPLOGFONTW pFont)					
+{ 
+	if ( sTheInstance.mImmSetCompositionFont )
+		return sTheInstance.mImmSetCompositionFont(himc, pFont);	
+	return FALSE;
+}
+
+// static 
+BOOL		LLWinImm::setCandidateWindow(HIMC himc, LPCANDIDATEFORM form)					
+{ 
+	if ( sTheInstance.mImmSetCandidateWindow )
+		return sTheInstance.mImmSetCandidateWindow(himc, form);	
+	return FALSE;
+}
+
+// static 
+BOOL		LLWinImm::notifyIME(HIMC himc, DWORD action, DWORD index, DWORD value)					
+{ 
+	if ( sTheInstance.mImmNotifyIME )
+		return sTheInstance.mImmNotifyIME(himc, action, index, value);	
+	return FALSE;
+}
+
+
+
+
+// ----------------------------------------------------------------------------------------
+LLWinImm::~LLWinImm()
+{
+	if (mHImmDll != NULL)
+	{
+		FreeLibrary(mHImmDll);
+		mHImmDll = NULL;
+	}
+}
+
+
+LLWindowWin32::LLWindowWin32(LLWindowCallbacks* callbacks,
+							 const std::string& title, const std::string& name, S32 x, S32 y, S32 width,
+							 S32 height, U32 flags, 
+							 BOOL fullscreen, BOOL clearBg,
+							 BOOL disable_vsync, BOOL use_gl,
+							 BOOL ignore_pixel_depth,
+							 U32 fsaa_samples)
+	: LLWindow(callbacks, fullscreen, flags)
+{
+	mFSAASamples = fsaa_samples;
+	mIconResource = gIconResource;
+	mOverrideAspectRatio = 0.f;
+	mNativeAspectRatio = 0.f;
+	mMousePositionModified = FALSE;
+	mInputProcessingPaused = FALSE;
+	mPreeditor = NULL;
+	mhDC = NULL;
+	mhRC = NULL;
+
+	// Initialize the keyboard
+	gKeyboard = new LLKeyboardWin32();
+	gKeyboard->setCallbacks(callbacks);
+
+	// Initialize the Drag and Drop functionality
+	mDragDrop = new LLDragDropWin32;
+
+	// Initialize (boot strap) the Language text input management,
+	// based on the system's (user's) default settings.
+	allowLanguageTextInput(mPreeditor, FALSE);
+
+	WNDCLASS		wc;
+	RECT			window_rect;
+
+	// Set the window title
+	if (title.empty())
+	{
+		mWindowTitle = new WCHAR[50];
+		wsprintf(mWindowTitle, L"OpenGL Window");
+	}
+	else
+	{
+		mWindowTitle = new WCHAR[256]; // Assume title length < 255 chars.
+		mbstowcs(mWindowTitle, title.c_str(), 255);
+		mWindowTitle[255] = 0;
+	}
+
+	// Set the window class name
+	if (name.empty())
+	{
+		mWindowClassName = new WCHAR[50];
+		wsprintf(mWindowClassName, L"OpenGL Window");
+	}
+	else
+	{
+		mWindowClassName = new WCHAR[256]; // Assume title length < 255 chars.
+		mbstowcs(mWindowClassName, name.c_str(), 255);
+		mWindowClassName[255] = 0;
+	}
+
+
+	// We're not clipping yet
+	SetRect( &mOldMouseClip, 0, 0, 0, 0 );
+
+	// Make an instance of our window then define the window class
+	mhInstance = GetModuleHandle(NULL);
+	mWndProc = NULL;
+
+	mSwapMethod = SWAP_METHOD_UNDEFINED;
+
+	// No WPARAM yet.
+	mLastSizeWParam = 0;
+
+	// Windows GDI rects don't include rightmost pixel
+	window_rect.left = (long) 0;
+	window_rect.right = (long) width;
+	window_rect.top = (long) 0;
+	window_rect.bottom = (long) height;
+
+	// Grab screen size to sanitize the window
+	S32 window_border_y = GetSystemMetrics(SM_CYBORDER);
+	S32 virtual_screen_x = GetSystemMetrics(SM_XVIRTUALSCREEN); 
+	S32 virtual_screen_y = GetSystemMetrics(SM_YVIRTUALSCREEN); 
+	S32 virtual_screen_width = GetSystemMetrics(SM_CXVIRTUALSCREEN);
+	S32 virtual_screen_height = GetSystemMetrics(SM_CYVIRTUALSCREEN);
+
+	if (x < virtual_screen_x) x = virtual_screen_x;
+	if (y < virtual_screen_y - window_border_y) y = virtual_screen_y - window_border_y;
+
+	if (x + width > virtual_screen_x + virtual_screen_width) x = virtual_screen_x + virtual_screen_width - width;
+	if (y + height > virtual_screen_y + virtual_screen_height) y = virtual_screen_y + virtual_screen_height - height;
+
+	if (!sIsClassRegistered)
+	{
+		// Force redraw when resized and create a private device context
+
+		// Makes double click messages.
+		wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC | CS_DBLCLKS;
+
+		// Set message handler function
+		wc.lpfnWndProc = (WNDPROC) mainWindowProc;
+
+		// unused
+		wc.cbClsExtra = 0;
+		wc.cbWndExtra = 0;
+
+		wc.hInstance = mhInstance;
+		wc.hIcon = LoadIcon(mhInstance, mIconResource);
+
+		// We will set the cursor ourselves
+		wc.hCursor = NULL;
+
+		// background color is not used
+		if (clearBg)
+		{
+			wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
+		}
+		else
+		{
+			wc.hbrBackground = (HBRUSH) NULL;
+		}
+
+		// we don't use windows menus
+		wc.lpszMenuName = NULL;
+
+		wc.lpszClassName = mWindowClassName;
+
+		if (!RegisterClass(&wc))
+		{
+			OSMessageBox(mCallbacks->translateString("MBRegClassFailed"), 
+				mCallbacks->translateString("MBError"), OSMB_OK);
+			return;
+		}
+		sIsClassRegistered = TRUE;
+	}
+
+	//-----------------------------------------------------------------------
+	// Get the current refresh rate
+	//-----------------------------------------------------------------------
+
+	DEVMODE dev_mode;
+	DWORD current_refresh;
+	if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode))
+	{
+		current_refresh = dev_mode.dmDisplayFrequency;
+		mNativeAspectRatio = ((F32)dev_mode.dmPelsWidth) / ((F32)dev_mode.dmPelsHeight);
+	}
+	else
+	{
+		current_refresh = 60;
+	}
+
+	//-----------------------------------------------------------------------
+	// Drop resolution and go fullscreen
+	// use a display mode with our desired size and depth, with a refresh
+	// rate as close at possible to the users' default
+	//-----------------------------------------------------------------------
+	if (mFullscreen)
+	{
+		BOOL success = FALSE;
+		DWORD closest_refresh = 0;
+
+		for (S32 mode_num = 0;; mode_num++)
+		{
+			if (!EnumDisplaySettings(NULL, mode_num, &dev_mode))
+			{
+				break;
+			}
+
+			if (dev_mode.dmPelsWidth == width &&
+				dev_mode.dmPelsHeight == height &&
+				dev_mode.dmBitsPerPel == BITS_PER_PIXEL)
+			{
+				success = TRUE;
+				if ((dev_mode.dmDisplayFrequency - current_refresh)
+					< (closest_refresh - current_refresh))
+				{
+					closest_refresh = dev_mode.dmDisplayFrequency;
+				}
+			}
+		}
+
+		if (closest_refresh == 0)
+		{
+			LL_WARNS("Window") << "Couldn't find display mode " << width << " by " << height << " at " << BITS_PER_PIXEL << " bits per pixel" << LL_ENDL;
+			success = FALSE;
+		}
+
+		// If we found a good resolution, use it.
+		if (success)
+		{
+			success = setDisplayResolution(width, height, BITS_PER_PIXEL, closest_refresh);
+		}
+
+		// Keep a copy of the actual current device mode in case we minimize 
+		// and change the screen resolution.   JC
+		EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode);
+
+		// If it failed, we don't want to run fullscreen
+		if (success)
+		{
+			mFullscreen = TRUE;
+			mFullscreenWidth   = dev_mode.dmPelsWidth;
+			mFullscreenHeight  = dev_mode.dmPelsHeight;
+			mFullscreenBits    = dev_mode.dmBitsPerPel;
+			mFullscreenRefresh = dev_mode.dmDisplayFrequency;
+
+			LL_INFOS("Window") << "Running at " << dev_mode.dmPelsWidth
+				<< "x"   << dev_mode.dmPelsHeight
+				<< "x"   << dev_mode.dmBitsPerPel
+				<< " @ " << dev_mode.dmDisplayFrequency
+				<< LL_ENDL;
+		}
+		else
+		{
+			mFullscreen = FALSE;
+			mFullscreenWidth   = -1;
+			mFullscreenHeight  = -1;
+			mFullscreenBits    = -1;
+			mFullscreenRefresh = -1;
+
+			std::map<std::string,std::string> args;
+			args["[WIDTH]"] = llformat("%d", width);
+			args["[HEIGHT]"] = llformat ("%d", height);
+			OSMessageBox(mCallbacks->translateString("MBFullScreenErr", args),
+				mCallbacks->translateString("MBError"), OSMB_OK);
+		}
+	}
+
+	// TODO: add this after resolving _WIN32_WINNT issue
+	//	if (!fullscreen)
+	//	{
+	//		TRACKMOUSEEVENT track_mouse_event;
+	//		track_mouse_event.cbSize = sizeof( TRACKMOUSEEVENT );
+	//		track_mouse_event.dwFlags = TME_LEAVE;
+	//		track_mouse_event.hwndTrack = mWindowHandle;
+	//		track_mouse_event.dwHoverTime = HOVER_DEFAULT;
+	//		TrackMouseEvent( &track_mouse_event ); 
+	//	}
+
+
+	//-----------------------------------------------------------------------
+	// Create GL drawing context
+	//-----------------------------------------------------------------------
+	LLCoordScreen windowPos(x,y);
+	LLCoordScreen windowSize(window_rect.right - window_rect.left,
+							 window_rect.bottom - window_rect.top);
+	if (!switchContext(mFullscreen, windowSize, TRUE, &windowPos))
+	{
+		return;
+	}
+	
+	//start with arrow cursor
+	initCursors();
+	setCursor( UI_CURSOR_ARROW );
+
+	// Initialize (boot strap) the Language text input management,
+	// based on the system's (or user's) default settings.
+	allowLanguageTextInput(NULL, FALSE);
+}
+
+
+LLWindowWin32::~LLWindowWin32()
+{
+	delete mDragDrop;
+
+	delete [] mWindowTitle;
+	mWindowTitle = NULL;
+
+	delete [] mSupportedResolutions;
+	mSupportedResolutions = NULL;
+
+	delete mWindowClassName;
+	mWindowClassName = NULL;
+}
+
+void LLWindowWin32::show()
+{
+	ShowWindow(mWindowHandle, SW_SHOW);
+	SetForegroundWindow(mWindowHandle);
+	SetFocus(mWindowHandle);
+}
+
+void LLWindowWin32::hide()
+{
+	setMouseClipping(FALSE);
+	ShowWindow(mWindowHandle, SW_HIDE);
+}
+
+void LLWindowWin32::minimize()
+{
+	setMouseClipping(FALSE);
+	showCursor();
+	ShowWindow(mWindowHandle, SW_MINIMIZE);
+}
+
+
+void LLWindowWin32::restore()
+{
+	ShowWindow(mWindowHandle, SW_RESTORE);
+	SetForegroundWindow(mWindowHandle);
+	SetFocus(mWindowHandle);
+}
+
+
+// close() destroys all OS-specific code associated with a window.
+// Usually called from LLWindowManager::destroyWindow()
+void LLWindowWin32::close()
+{
+	LL_DEBUGS("Window") << "Closing LLWindowWin32" << LL_ENDL;
+	// Is window is already closed?
+	if (!mWindowHandle)
+	{
+		return;
+	}
+
+	mDragDrop->reset();
+
+	// Make sure cursor is visible and we haven't mangled the clipping state.
+	setMouseClipping(FALSE);
+	showCursor();
+
+	// Go back to screen mode written in the registry.
+	if (mFullscreen)
+	{
+		resetDisplayResolution();
+	}
+
+	// Clean up remaining GL state
+	LL_DEBUGS("Window") << "Shutting down GL" << LL_ENDL;
+	gGLManager.shutdownGL();
+
+	LL_DEBUGS("Window") << "Releasing Context" << LL_ENDL;
+	if (mhRC)
+	{
+		if (!wglMakeCurrent(NULL, NULL))
+		{
+			LL_WARNS("Window") << "Release of DC and RC failed" << LL_ENDL;
+		}
+
+		if (!wglDeleteContext(mhRC))
+		{
+			LL_WARNS("Window") << "Release of rendering context failed" << LL_ENDL;
+		}
+
+		mhRC = NULL;
+	}
+
+	// Restore gamma to the system values.
+	restoreGamma();
+
+	if (mhDC && !ReleaseDC(mWindowHandle, mhDC))
+	{
+		LL_WARNS("Window") << "Release of ghDC failed" << LL_ENDL;
+		mhDC = NULL;
+	}
+
+	LL_DEBUGS("Window") << "Destroying Window" << LL_ENDL;
+	
+	// Don't process events in our mainWindowProc any longer.
+	SetWindowLong(mWindowHandle, GWL_USERDATA, NULL);
+
+	// Make sure we don't leave a blank toolbar button.
+	ShowWindow(mWindowHandle, SW_HIDE);
+
+	// This causes WM_DESTROY to be sent *immediately*
+	if (!DestroyWindow(mWindowHandle))
+	{
+		OSMessageBox(mCallbacks->translateString("MBDestroyWinFailed"),
+			mCallbacks->translateString("MBShutdownErr"),
+			OSMB_OK);
+	}
+
+	mWindowHandle = NULL;
+}
+
+BOOL LLWindowWin32::isValid()
+{
+	return (mWindowHandle != NULL);
+}
+
+BOOL LLWindowWin32::getVisible()
+{
+	return (mWindowHandle && IsWindowVisible(mWindowHandle));
+}
+
+BOOL LLWindowWin32::getMinimized()
+{
+	return (mWindowHandle && IsIconic(mWindowHandle));
+}
+
+BOOL LLWindowWin32::getMaximized()
+{
+	return (mWindowHandle && IsZoomed(mWindowHandle));
+}
+
+BOOL LLWindowWin32::maximize()
+{
+	BOOL success = FALSE;
+	if (!mWindowHandle) return success;
+
+	WINDOWPLACEMENT placement;
+	placement.length = sizeof(WINDOWPLACEMENT);
+
+	success = GetWindowPlacement(mWindowHandle, &placement);
+	if (!success) return success;
+
+	placement.showCmd = SW_MAXIMIZE;
+
+	success = SetWindowPlacement(mWindowHandle, &placement);
+	return success;
+}
+
+BOOL LLWindowWin32::getFullscreen()
+{
+	return mFullscreen;
+}
+
+BOOL LLWindowWin32::getPosition(LLCoordScreen *position)
+{
+	RECT window_rect;
+
+	if (!mWindowHandle ||
+		!GetWindowRect(mWindowHandle, &window_rect) ||
+		NULL == position)
+	{
+		return FALSE;
+	}
+
+	position->mX = window_rect.left;
+	position->mY = window_rect.top;
+	return TRUE;
+}
+
+BOOL LLWindowWin32::getSize(LLCoordScreen *size)
+{
+	RECT window_rect;
+
+	if (!mWindowHandle ||
+		!GetWindowRect(mWindowHandle, &window_rect) ||
+		NULL == size)
+	{
+		return FALSE;
+	}
+
+	size->mX = window_rect.right - window_rect.left;
+	size->mY = window_rect.bottom - window_rect.top;
+	return TRUE;
+}
+
+BOOL LLWindowWin32::getSize(LLCoordWindow *size)
+{
+	RECT client_rect;
+
+	if (!mWindowHandle ||
+		!GetClientRect(mWindowHandle, &client_rect) ||
+		NULL == size)
+	{
+		return FALSE;
+	}
+
+	size->mX = client_rect.right - client_rect.left;
+	size->mY = client_rect.bottom - client_rect.top;
+	return TRUE;
+}
+
+BOOL LLWindowWin32::setPosition(const LLCoordScreen position)
+{
+	LLCoordScreen size;
+
+	if (!mWindowHandle)
+	{
+		return FALSE;
+	}
+	getSize(&size);
+	moveWindow(position, size);
+	return TRUE;
+}
+
+BOOL LLWindowWin32::setSize(const LLCoordScreen size)
+{
+	LLCoordScreen position;
+
+	getPosition(&position);
+	if (!mWindowHandle)
+	{
+		return FALSE;
+	}
+
+	moveWindow(position, size);
+	return TRUE;
+}
+
+// changing fullscreen resolution
+BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL disable_vsync, const LLCoordScreen * const posp)
+{
+	GLuint	pixel_format;
+	DEVMODE dev_mode;
+	DWORD	current_refresh;
+	DWORD	dw_ex_style;
+	DWORD	dw_style;
+	RECT	window_rect;
+	S32 width = size.mX;
+	S32 height = size.mY;
+	BOOL auto_show = FALSE;
+
+	if (mhRC)
+	{
+		auto_show = TRUE;
+		resetDisplayResolution();
+	}
+
+	if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode))
+	{
+		current_refresh = dev_mode.dmDisplayFrequency;
+	}
+	else
+	{
+		current_refresh = 60;
+	}
+
+	gGLManager.shutdownGL();
+	//destroy gl context
+	if (mhRC)
+	{
+		if (!wglMakeCurrent(NULL, NULL))
+		{
+			LL_WARNS("Window") << "Release of DC and RC failed" << LL_ENDL;
+		}
+
+		if (!wglDeleteContext(mhRC))
+		{
+			LL_WARNS("Window") << "Release of rendering context failed" << LL_ENDL;
+		}
+
+		mhRC = NULL;
+	}
+
+	if (fullscreen)
+	{
+		mFullscreen = TRUE;
+		BOOL success = FALSE;
+		DWORD closest_refresh = 0;
+
+		for (S32 mode_num = 0;; mode_num++)
+		{
+			if (!EnumDisplaySettings(NULL, mode_num, &dev_mode))
+			{
+				break;
+			}
+
+			if (dev_mode.dmPelsWidth == width &&
+				dev_mode.dmPelsHeight == height &&
+				dev_mode.dmBitsPerPel == BITS_PER_PIXEL)
+			{
+				success = TRUE;
+				if ((dev_mode.dmDisplayFrequency - current_refresh)
+					< (closest_refresh - current_refresh))
+				{
+					closest_refresh = dev_mode.dmDisplayFrequency;
+				}
+			}
+		}
+
+		if (closest_refresh == 0)
+		{
+			LL_WARNS("Window") << "Couldn't find display mode " << width << " by " << height << " at " << BITS_PER_PIXEL << " bits per pixel" << LL_ENDL;
+			return FALSE;
+		}
+
+		// If we found a good resolution, use it.
+		if (success)
+		{
+			success = setDisplayResolution(width, height, BITS_PER_PIXEL, closest_refresh);
+		}
+
+		// Keep a copy of the actual current device mode in case we minimize 
+		// and change the screen resolution.   JC
+		EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode);
+
+		if (success)
+		{
+			mFullscreen = TRUE;
+			mFullscreenWidth   = dev_mode.dmPelsWidth;
+			mFullscreenHeight  = dev_mode.dmPelsHeight;
+			mFullscreenBits    = dev_mode.dmBitsPerPel;
+			mFullscreenRefresh = dev_mode.dmDisplayFrequency;
+
+			LL_INFOS("Window") << "Running at " << dev_mode.dmPelsWidth
+				<< "x"   << dev_mode.dmPelsHeight
+				<< "x"   << dev_mode.dmBitsPerPel
+				<< " @ " << dev_mode.dmDisplayFrequency
+				<< LL_ENDL;
+
+			window_rect.left = (long) 0;
+			window_rect.right = (long) width;			// Windows GDI rects don't include rightmost pixel
+			window_rect.top = (long) 0;
+			window_rect.bottom = (long) height;
+			dw_ex_style = WS_EX_APPWINDOW;
+			dw_style = WS_POPUP;
+
+			// Move window borders out not to cover window contents
+			AdjustWindowRectEx(&window_rect, dw_style, FALSE, dw_ex_style);
+		}
+		// If it failed, we don't want to run fullscreen
+		else
+		{
+			mFullscreen = FALSE;
+			mFullscreenWidth   = -1;
+			mFullscreenHeight  = -1;
+			mFullscreenBits    = -1;
+			mFullscreenRefresh = -1;
+
+			LL_INFOS("Window") << "Unable to run fullscreen at " << width << "x" << height << LL_ENDL;
+			return FALSE;
+		}
+	}
+	else
+	{
+		mFullscreen = FALSE;
+		window_rect.left = (long) (posp ? posp->mX : 0);
+		window_rect.right = (long) width + window_rect.left;			// Windows GDI rects don't include rightmost pixel
+		window_rect.top = (long) (posp ? posp->mY : 0);
+		window_rect.bottom = (long) height + window_rect.top;
+		// Window with an edge
+		dw_ex_style = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE;
+		dw_style = WS_OVERLAPPEDWINDOW;
+	}
+
+	// don't post quit messages when destroying old windows
+	mPostQuit = FALSE;
+
+	// create window
+	DestroyWindow(mWindowHandle);
+	mWindowHandle = CreateWindowEx(dw_ex_style,
+		mWindowClassName,
+		mWindowTitle,
+		WS_CLIPSIBLINGS | WS_CLIPCHILDREN | dw_style,
+		window_rect.left,								// x pos
+		window_rect.top,								// y pos
+		window_rect.right - window_rect.left,			// width
+		window_rect.bottom - window_rect.top,			// height
+		NULL,
+		NULL,
+		mhInstance,
+		NULL);
+
+	//-----------------------------------------------------------------------
+	// Create GL drawing context
+	//-----------------------------------------------------------------------
+	static PIXELFORMATDESCRIPTOR pfd =
+	{
+		sizeof(PIXELFORMATDESCRIPTOR), 
+			1,
+			PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, 
+			PFD_TYPE_RGBA,
+			BITS_PER_PIXEL,
+			0, 0, 0, 0, 0, 0,	// RGB bits and shift, unused
+			8,					// alpha bits
+			0,					// alpha shift
+			0,					// accum bits
+			0, 0, 0, 0,			// accum RGBA
+			24,					// depth bits
+			8,					// stencil bits, avi added for stencil test
+			0,
+			PFD_MAIN_PLANE,
+			0,
+			0, 0, 0
+	};
+
+	if (!(mhDC = GetDC(mWindowHandle)))
+	{
+		close();
+		OSMessageBox(mCallbacks->translateString("MBDevContextErr"),
+			mCallbacks->translateString("MBError"), OSMB_OK);
+		return FALSE;
+	}
+
+	if (!(pixel_format = ChoosePixelFormat(mhDC, &pfd)))
+	{
+		close();
+		OSMessageBox(mCallbacks->translateString("MBPixelFmtErr"),
+			mCallbacks->translateString("MBError"), OSMB_OK);
+		return FALSE;
+	}
+
+	// Verify what pixel format we actually received.
+	if (!DescribePixelFormat(mhDC, pixel_format, sizeof(PIXELFORMATDESCRIPTOR),
+		&pfd))
+	{
+		close();
+		OSMessageBox(mCallbacks->translateString("MBPixelFmtDescErr"),
+			mCallbacks->translateString("MBError"), OSMB_OK);
+		return FALSE;
+	}
+
+	if (pfd.cColorBits < 32)
+	{
+		close();
+		OSMessageBox(mCallbacks->translateString("MBTrueColorWindow"),
+			mCallbacks->translateString("MBError"), OSMB_OK);
+		return FALSE;
+	}
+
+	if (pfd.cAlphaBits < 8)
+	{
+		close();
+		OSMessageBox(mCallbacks->translateString("MBAlpha"),
+			mCallbacks->translateString("MBError"), OSMB_OK);
+		return FALSE;
+	}
+
+	if (!SetPixelFormat(mhDC, pixel_format, &pfd))
+	{
+		close();
+		OSMessageBox(mCallbacks->translateString("MBPixelFmtSetErr"),
+			mCallbacks->translateString("MBError"), OSMB_OK);
+		return FALSE;
+	}
+
+	if (!(mhRC = wglCreateContext(mhDC)))
+	{
+		close();
+		OSMessageBox(mCallbacks->translateString("MBGLContextErr"),
+			mCallbacks->translateString("MBError"), OSMB_OK);
+		return FALSE;
+	}
+
+	if (!wglMakeCurrent(mhDC, mhRC))
+	{
+		close();
+		OSMessageBox(mCallbacks->translateString("MBGLContextActErr"),
+			mCallbacks->translateString("MBError"), OSMB_OK);
+		return FALSE;
+	}
+
+	gGLManager.initWGL();
+
+	if (wglChoosePixelFormatARB)
+	{
+		// OK, at this point, use the ARB wglChoosePixelFormatsARB function to see if we
+		// can get exactly what we want.
+		GLint attrib_list[256];
+		S32 cur_attrib = 0;
+
+		attrib_list[cur_attrib++] = WGL_DEPTH_BITS_ARB;
+		attrib_list[cur_attrib++] = 24;
+
+		attrib_list[cur_attrib++] = WGL_STENCIL_BITS_ARB;
+		attrib_list[cur_attrib++] = 8;
+
+		attrib_list[cur_attrib++] = WGL_DRAW_TO_WINDOW_ARB;
+		attrib_list[cur_attrib++] = GL_TRUE;
+
+		attrib_list[cur_attrib++] = WGL_ACCELERATION_ARB;
+		attrib_list[cur_attrib++] = WGL_FULL_ACCELERATION_ARB;
+
+		attrib_list[cur_attrib++] = WGL_SUPPORT_OPENGL_ARB;
+		attrib_list[cur_attrib++] = GL_TRUE;
+
+		attrib_list[cur_attrib++] = WGL_DOUBLE_BUFFER_ARB;
+		attrib_list[cur_attrib++] = GL_TRUE;
+
+		attrib_list[cur_attrib++] = WGL_COLOR_BITS_ARB;
+		attrib_list[cur_attrib++] = 24;
+
+		attrib_list[cur_attrib++] = WGL_ALPHA_BITS_ARB;
+		attrib_list[cur_attrib++] = 8;
+
+		U32 end_attrib = 0;
+		if (mFSAASamples > 0)
+		{
+			end_attrib = cur_attrib;
+			attrib_list[cur_attrib++] = WGL_SAMPLE_BUFFERS_ARB;
+			attrib_list[cur_attrib++] = GL_TRUE;
+
+			attrib_list[cur_attrib++] = WGL_SAMPLES_ARB;
+			attrib_list[cur_attrib++] = mFSAASamples;
+		}
+
+		// End the list
+		attrib_list[cur_attrib++] = 0;
+
+		GLint pixel_formats[256];
+		U32 num_formats = 0;
+
+		// First we try and get a 32 bit depth pixel format
+		BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats);
+		if (!result)
+		{
+			close();
+			show_window_creation_error("Error after wglChoosePixelFormatARB 32-bit");
+			return FALSE;
+		}
+
+		if (!num_formats)
+		{
+			if (end_attrib > 0)
+			{
+				LL_INFOS("Window") << "No valid pixel format for " << mFSAASamples << "x anti-aliasing." << LL_ENDL;
+				attrib_list[end_attrib] = 0;
+
+				BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats);
+				if (!result)
+				{
+					close();
+					show_window_creation_error("Error after wglChoosePixelFormatARB 32-bit no AA");
+					return FALSE;
+				}
+			}
+
+			if (!num_formats)
+			{
+				LL_INFOS("Window") << "No 32 bit z-buffer, trying 24 bits instead" << LL_ENDL;
+				// Try 24-bit format
+				attrib_list[1] = 24;
+				BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats);
+				if (!result)
+				{
+					close();
+					show_window_creation_error("Error after wglChoosePixelFormatARB 24-bit");
+					return FALSE;
+				}
+
+				if (!num_formats)
+				{
+					LL_WARNS("Window") << "Couldn't get 24 bit z-buffer,trying 16 bits instead!" << LL_ENDL;
+					attrib_list[1] = 16;
+					BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats);
+					if (!result || !num_formats)
+					{
+						close();
+						show_window_creation_error("Error after wglChoosePixelFormatARB 16-bit");
+						return FALSE;
+					}
+				}
+			}
+
+			LL_INFOS("Window") << "Choosing pixel formats: " << num_formats << " pixel formats returned" << LL_ENDL;
+		}
+
+		
+
+		S32 swap_method = 0;
+		S32 cur_format = num_formats-1;
+		GLint swap_query = WGL_SWAP_METHOD_ARB;
+
+		BOOL found_format = FALSE;
+
+		while (!found_format && wglGetPixelFormatAttribivARB(mhDC, pixel_format, 0, 1, &swap_query, &swap_method))
+		{
+			if (swap_method == WGL_SWAP_UNDEFINED_ARB || cur_format <= 0)
+			{
+				found_format = TRUE;
+			}
+			else
+			{
+				--cur_format;
+			}
+		}
+		
+		pixel_format = pixel_formats[cur_format];
+		
+		if (mhDC != 0)											// Does The Window Have A Device Context?
+		{
+			wglMakeCurrent(mhDC, 0);							// Set The Current Active Rendering Context To Zero
+			if (mhRC != 0)										// Does The Window Have A Rendering Context?
+			{
+				wglDeleteContext (mhRC);							// Release The Rendering Context
+				mhRC = 0;										// Zero The Rendering Context
+
+			}
+			ReleaseDC (mWindowHandle, mhDC);						// Release The Device Context
+			mhDC = 0;											// Zero The Device Context
+		}
+		DestroyWindow (mWindowHandle);									// Destroy The Window
+		
+
+		mWindowHandle = CreateWindowEx(dw_ex_style,
+			mWindowClassName,
+			mWindowTitle,
+			WS_CLIPSIBLINGS | WS_CLIPCHILDREN | dw_style,
+			window_rect.left,								// x pos
+			window_rect.top,								// y pos
+			window_rect.right - window_rect.left,			// width
+			window_rect.bottom - window_rect.top,			// height
+			NULL,
+			NULL,
+			mhInstance,
+			NULL);
+
+		if (!(mhDC = GetDC(mWindowHandle)))
+		{
+			close();
+			OSMessageBox(mCallbacks->translateString("MBDevContextErr"), mCallbacks->translateString("MBError"), OSMB_OK);
+			return FALSE;
+		}
+
+		if (!SetPixelFormat(mhDC, pixel_format, &pfd))
+		{
+			close();
+			OSMessageBox(mCallbacks->translateString("MBPixelFmtSetErr"),
+				mCallbacks->translateString("MBError"), OSMB_OK);
+			return FALSE;
+		}
+
+		if (wglGetPixelFormatAttribivARB(mhDC, pixel_format, 0, 1, &swap_query, &swap_method))
+		{
+			switch (swap_method)
+			{
+			case WGL_SWAP_EXCHANGE_ARB:
+				mSwapMethod = SWAP_METHOD_EXCHANGE;
+				LL_DEBUGS("Window") << "Swap Method: Exchange" << LL_ENDL;
+				break;
+			case WGL_SWAP_COPY_ARB:
+				mSwapMethod = SWAP_METHOD_COPY;
+				LL_DEBUGS("Window") << "Swap Method: Copy" << LL_ENDL;
+				break;
+			case WGL_SWAP_UNDEFINED_ARB:
+				mSwapMethod = SWAP_METHOD_UNDEFINED;
+				LL_DEBUGS("Window") << "Swap Method: Undefined" << LL_ENDL;
+				break;
+			default:
+				mSwapMethod = SWAP_METHOD_UNDEFINED;
+				LL_DEBUGS("Window") << "Swap Method: Unknown" << LL_ENDL;
+				break;
+			}
+		}		
+	}
+	else
+	{
+		LL_WARNS("Window") << "No wgl_ARB_pixel_format extension, using default ChoosePixelFormat!" << LL_ENDL;
+	}
+
+	// Verify what pixel format we actually received.
+	if (!DescribePixelFormat(mhDC, pixel_format, sizeof(PIXELFORMATDESCRIPTOR),
+		&pfd))
+	{
+		close();
+		OSMessageBox(mCallbacks->translateString("MBPixelFmtDescErr"), mCallbacks->translateString("MBError"), OSMB_OK);
+		return FALSE;
+	}
+
+	LL_INFOS("Window") << "GL buffer: Color Bits " << S32(pfd.cColorBits) 
+		<< " Alpha Bits " << S32(pfd.cAlphaBits)
+		<< " Depth Bits " << S32(pfd.cDepthBits) 
+		<< LL_ENDL;
+
+	// make sure we have 32 bits per pixel
+	if (pfd.cColorBits < 32 || GetDeviceCaps(mhDC, BITSPIXEL) < 32)
+	{
+		close();
+		OSMessageBox(mCallbacks->translateString("MBTrueColorWindow"), mCallbacks->translateString("MBError"), OSMB_OK);
+		return FALSE;
+	}
+
+	if (pfd.cAlphaBits < 8)
+	{
+		close();
+		OSMessageBox(mCallbacks->translateString("MBAlpha"), mCallbacks->translateString("MBError"), OSMB_OK);
+		return FALSE;
+	}
+
+	if (!(mhRC = wglCreateContext(mhDC)))
+	{
+		close();
+		OSMessageBox(mCallbacks->translateString("MBGLContextErr"), mCallbacks->translateString("MBError"), OSMB_OK);
+		return FALSE;
+	}
+
+	if (!wglMakeCurrent(mhDC, mhRC))
+	{
+		close();
+		OSMessageBox(mCallbacks->translateString("MBGLContextActErr"), mCallbacks->translateString("MBError"), OSMB_OK);
+		return FALSE;
+	}
+
+	if (!gGLManager.initGL())
+	{
+		close();
+		OSMessageBox(mCallbacks->translateString("MBVideoDrvErr"), mCallbacks->translateString("MBError"), OSMB_OK);
+		return FALSE;
+	}
+
+	// Disable vertical sync for swap
+	if (disable_vsync && wglSwapIntervalEXT)
+	{
+		LL_DEBUGS("Window") << "Disabling vertical sync" << LL_ENDL;
+		wglSwapIntervalEXT(0);
+	}
+	else
+	{
+		LL_DEBUGS("Window") << "Keeping vertical sync" << LL_ENDL;
+	}
+
+	SetWindowLong(mWindowHandle, GWL_USERDATA, (U32)this);
+
+	// register this window as handling drag/drop events from the OS
+	DragAcceptFiles( mWindowHandle, TRUE );
+
+	mDragDrop->init( mWindowHandle );
+	
+	//register joystick timer callback
+	SetTimer( mWindowHandle, 0, 1000 / 30, NULL ); // 30 fps timer
+
+	// ok to post quit messages now
+	mPostQuit = TRUE;
+
+	if (auto_show)
+	{
+		show();
+		glClearColor(0.0f, 0.0f, 0.0f, 0.f);
+		glClear(GL_COLOR_BUFFER_BIT);
+		swapBuffers();
+	}
+
+	return TRUE;
+}
+
+void LLWindowWin32::moveWindow( const LLCoordScreen& position, const LLCoordScreen& size )
+{
+	if( mIsMouseClipping )
+	{
+		RECT client_rect_in_screen_space;
+		if( getClientRectInScreenSpace( &client_rect_in_screen_space ) )
+		{
+			ClipCursor( &client_rect_in_screen_space );
+		}
+	}
+
+	// if the window was already maximized, MoveWindow seems to still set the maximized flag even if
+	// the window is smaller than maximized.
+	// So we're going to do a restore first (which is a ShowWindow call) (SL-44655).
+
+	// THIS CAUSES DEV-15484 and DEV-15949 
+	//ShowWindow(mWindowHandle, SW_RESTORE);
+	// NOW we can call MoveWindow
+	MoveWindow(mWindowHandle, position.mX, position.mY, size.mX, size.mY, TRUE);
+}
+
+BOOL LLWindowWin32::setCursorPosition(const LLCoordWindow position)
+{
+	LLCoordScreen screen_pos;
+
+	mMousePositionModified = TRUE;
+	if (!mWindowHandle)
+	{
+		return FALSE;
+	}
+
+	if (!convertCoords(position, &screen_pos))
+	{
+		return FALSE;
+	}
+
+	// Inform the application of the new mouse position (needed for per-frame
+	// hover/picking to function).
+	LLCoordGL gl_pos;
+	convertCoords(position, &gl_pos);
+	mCallbacks->handleMouseMove(this, gl_pos, (MASK)0);
+	
+	// DEV-18951 VWR-8524 Camera moves wildly when alt-clicking.
+	// Because we have preemptively notified the application of the new
+	// mouse position via handleMouseMove() above, we need to clear out
+	// any stale mouse move events.  RN/JC
+	MSG msg;
+	while (PeekMessage(&msg, NULL, WM_MOUSEMOVE, WM_MOUSEMOVE, PM_REMOVE))
+	{ }
+
+	return SetCursorPos(screen_pos.mX, screen_pos.mY);
+}
+
+BOOL LLWindowWin32::getCursorPosition(LLCoordWindow *position)
+{
+	POINT cursor_point;
+	LLCoordScreen screen_pos;
+
+	if (!mWindowHandle ||
+		!GetCursorPos(&cursor_point))
+	{
+		return FALSE;
+	}
+
+	screen_pos.mX = cursor_point.x;
+	screen_pos.mY = cursor_point.y;
+
+	return convertCoords(screen_pos, position);
+}
+
+void LLWindowWin32::hideCursor()
+{
+	while (ShowCursor(FALSE) >= 0)
+	{
+		// nothing, wait for cursor to push down
+	}
+	mCursorHidden = TRUE;
+	mHideCursorPermanent = TRUE;
+}
+
+void LLWindowWin32::showCursor()
+{
+	// makes sure the cursor shows up
+	while (ShowCursor(TRUE) < 0)
+	{
+		// do nothing, wait for cursor to pop out
+	}
+	mCursorHidden = FALSE;
+	mHideCursorPermanent = FALSE;
+}
+
+void LLWindowWin32::showCursorFromMouseMove()
+{
+	if (!mHideCursorPermanent)
+	{
+		showCursor();
+	}
+}
+
+void LLWindowWin32::hideCursorUntilMouseMove()
+{
+	if (!mHideCursorPermanent)
+	{
+		hideCursor();
+		mHideCursorPermanent = FALSE;
+	}
+}
+
+BOOL LLWindowWin32::isCursorHidden()
+{
+	return mCursorHidden;
+}
+
+
+HCURSOR LLWindowWin32::loadColorCursor(LPCTSTR name)
+{
+	return (HCURSOR)LoadImage(mhInstance,
+							  name,
+							  IMAGE_CURSOR,
+							  0,	// default width
+							  0,	// default height
+							  LR_DEFAULTCOLOR);
+}
+
+
+void LLWindowWin32::initCursors()
+{
+	mCursor[ UI_CURSOR_ARROW ]		= LoadCursor(NULL, IDC_ARROW);
+	mCursor[ UI_CURSOR_WAIT ]		= LoadCursor(NULL, IDC_WAIT);
+	mCursor[ UI_CURSOR_HAND ]		= LoadCursor(NULL, IDC_HAND);
+	mCursor[ UI_CURSOR_IBEAM ]		= LoadCursor(NULL, IDC_IBEAM);
+	mCursor[ UI_CURSOR_CROSS ]		= LoadCursor(NULL, IDC_CROSS);
+	mCursor[ UI_CURSOR_SIZENWSE ]	= LoadCursor(NULL, IDC_SIZENWSE);
+	mCursor[ UI_CURSOR_SIZENESW ]	= LoadCursor(NULL, IDC_SIZENESW);
+	mCursor[ UI_CURSOR_SIZEWE ]		= LoadCursor(NULL, IDC_SIZEWE);  
+	mCursor[ UI_CURSOR_SIZENS ]		= LoadCursor(NULL, IDC_SIZENS);  
+	mCursor[ UI_CURSOR_NO ]			= LoadCursor(NULL, IDC_NO);
+	mCursor[ UI_CURSOR_WORKING ]	= LoadCursor(NULL, IDC_APPSTARTING); 
+
+	HMODULE module = GetModuleHandle(NULL);
+	mCursor[ UI_CURSOR_TOOLGRAB ]	= LoadCursor(module, TEXT("TOOLGRAB"));
+	mCursor[ UI_CURSOR_TOOLLAND ]	= LoadCursor(module, TEXT("TOOLLAND"));
+	mCursor[ UI_CURSOR_TOOLFOCUS ]	= LoadCursor(module, TEXT("TOOLFOCUS"));
+	mCursor[ UI_CURSOR_TOOLCREATE ]	= LoadCursor(module, TEXT("TOOLCREATE"));
+	mCursor[ UI_CURSOR_ARROWDRAG ]	= LoadCursor(module, TEXT("ARROWDRAG"));
+	mCursor[ UI_CURSOR_ARROWCOPY ]	= LoadCursor(module, TEXT("ARROWCOPY"));
+	mCursor[ UI_CURSOR_ARROWDRAGMULTI ]	= LoadCursor(module, TEXT("ARROWDRAGMULTI"));
+	mCursor[ UI_CURSOR_ARROWCOPYMULTI ]	= LoadCursor(module, TEXT("ARROWCOPYMULTI"));
+	mCursor[ UI_CURSOR_NOLOCKED ]	= LoadCursor(module, TEXT("NOLOCKED"));
+	mCursor[ UI_CURSOR_ARROWLOCKED ]= LoadCursor(module, TEXT("ARROWLOCKED"));
+	mCursor[ UI_CURSOR_GRABLOCKED ]	= LoadCursor(module, TEXT("GRABLOCKED"));
+	mCursor[ UI_CURSOR_TOOLTRANSLATE ]	= LoadCursor(module, TEXT("TOOLTRANSLATE"));
+	mCursor[ UI_CURSOR_TOOLROTATE ]	= LoadCursor(module, TEXT("TOOLROTATE")); 
+	mCursor[ UI_CURSOR_TOOLSCALE ]	= LoadCursor(module, TEXT("TOOLSCALE"));
+	mCursor[ UI_CURSOR_TOOLCAMERA ]	= LoadCursor(module, TEXT("TOOLCAMERA"));
+	mCursor[ UI_CURSOR_TOOLPAN ]	= LoadCursor(module, TEXT("TOOLPAN"));
+	mCursor[ UI_CURSOR_TOOLZOOMIN ] = LoadCursor(module, TEXT("TOOLZOOMIN"));
+	mCursor[ UI_CURSOR_TOOLPICKOBJECT3 ] = LoadCursor(module, TEXT("TOOLPICKOBJECT3"));
+	mCursor[ UI_CURSOR_PIPETTE ] = LoadCursor(module, TEXT("TOOLPIPETTE"));
+
+	// Color cursors
+	mCursor[UI_CURSOR_TOOLPLAY] = loadColorCursor(TEXT("TOOLPLAY"));
+	mCursor[UI_CURSOR_TOOLPAUSE] = loadColorCursor(TEXT("TOOLPAUSE"));
+	mCursor[UI_CURSOR_TOOLMEDIAOPEN] = loadColorCursor(TEXT("TOOLMEDIAOPEN"));
+
+	// Note: custom cursors that are not found make LoadCursor() return NULL.
+	for( S32 i = 0; i < UI_CURSOR_COUNT; i++ )
+	{
+		if( !mCursor[i] )
+		{
+			mCursor[i] = LoadCursor(NULL, IDC_ARROW);
+		}
+	}
+}
+
+
+
+void LLWindowWin32::setCursor(ECursorType cursor)
+{
+	if (cursor == UI_CURSOR_ARROW
+		&& mBusyCount > 0)
+	{
+		cursor = UI_CURSOR_WORKING;
+	}
+
+	if( mCurrentCursor != cursor )
+	{
+		mCurrentCursor = cursor;
+		SetCursor( mCursor[cursor] );
+	}
+}
+
+ECursorType LLWindowWin32::getCursor() const
+{
+	return mCurrentCursor;
+}
+
+void LLWindowWin32::captureMouse()
+{
+	SetCapture(mWindowHandle);
+}
+
+void LLWindowWin32::releaseMouse()
+{
+	// *NOTE:Mani ReleaseCapture will spawn new windows messages...
+	// which will in turn call our MainWindowProc. It therefore requires
+	// pausing *and more importantly resumption* of the mainlooptimeout...
+	// just like DispatchMessage below.
+	mCallbacks->handlePauseWatchdog(this);
+	ReleaseCapture();
+	mCallbacks->handleResumeWatchdog(this);
+}
+
+
+void LLWindowWin32::delayInputProcessing()
+{
+	mInputProcessingPaused = TRUE;
+}
+
+void LLWindowWin32::gatherInput()
+{
+	MSG		msg;
+	int		msg_count = 0;
+
+	LLMemType m1(LLMemType::MTYPE_GATHER_INPUT);
+
+	while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) && msg_count < MAX_MESSAGE_PER_UPDATE)
+	{
+		mCallbacks->handlePingWatchdog(this, "Main:TranslateGatherInput");
+		TranslateMessage(&msg);
+
+		// turn watchdog off in here to not fail if windows is doing something wacky
+		mCallbacks->handlePauseWatchdog(this);
+		DispatchMessage(&msg);
+		mCallbacks->handleResumeWatchdog(this);
+		msg_count++;
+
+		if ( mInputProcessingPaused )
+		{
+			break;
+		}
+		/* Attempted workaround for problem where typing fast and hitting
+		   return would result in only part of the text being sent. JC
+
+		BOOL key_posted = TranslateMessage(&msg);
+		DispatchMessage(&msg);
+		msg_count++;
+
+		// If a key was translated, a WM_CHAR might have been posted to the end
+		// of the event queue.  We need it immediately.
+		if (key_posted && msg.message == WM_KEYDOWN)
+		{
+			if (PeekMessage(&msg, NULL, WM_CHAR, WM_CHAR, PM_REMOVE))
+			{
+				TranslateMessage(&msg);
+				DispatchMessage(&msg);
+				msg_count++;
+			}
+		}
+		*/
+		mCallbacks->handlePingWatchdog(this, "Main:AsyncCallbackGatherInput");
+		// For async host by name support.  Really hacky.
+		if (gAsyncMsgCallback && (LL_WM_HOST_RESOLVED == msg.message))
+		{
+			gAsyncMsgCallback(msg);
+		}
+	}
+
+	mInputProcessingPaused = FALSE;
+
+	// clear this once we've processed all mouse messages that might have occurred after
+	// we slammed the mouse position
+	mMousePositionModified = FALSE;
+}
+
+static LLFastTimer::DeclareTimer FTM_KEYHANDLER("Handle Keyboard");
+static LLFastTimer::DeclareTimer FTM_MOUSEHANDLER("Handle Mouse");
+
+LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_param, LPARAM l_param)
+{
+	LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(h_wnd, GWL_USERDATA);
+
+
+	if (NULL != window_imp)
+	{
+		window_imp->mCallbacks->handleResumeWatchdog(window_imp);
+		window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:StartWndProc");
+		// Has user provided their own window callback?
+		if (NULL != window_imp->mWndProc)
+		{
+			if (!window_imp->mWndProc(h_wnd, u_msg, w_param, l_param))
+			{
+				// user has handled window message
+				return 0;
+			}
+		}
+
+		window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:PreSwitchWndProc");
+		
+		// Juggle to make sure we can get negative positions for when
+		// mouse is outside window.
+		LLCoordWindow window_coord((S32)(S16)LOWORD(l_param), (S32)(S16)HIWORD(l_param));
+
+		// This doesn't work, as LOWORD returns unsigned short.
+		//LLCoordWindow window_coord(LOWORD(l_param), HIWORD(l_param));
+		LLCoordGL gl_coord;
+
+		// pass along extended flag in mask
+		MASK mask = (l_param>>16 & KF_EXTENDED) ? MASK_EXTENDED : 0x0;
+		BOOL eat_keystroke = TRUE;
+
+		switch(u_msg)
+		{
+			RECT	update_rect;
+			S32		update_width;
+			S32		update_height;
+
+		case WM_TIMER:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_TIMER");
+			window_imp->mCallbacks->handleTimerEvent(window_imp);
+			break;
+
+		case WM_DEVICECHANGE:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_DEVICECHANGE");
+			if (gDebugWindowProc)
+			{
+				llinfos << "  WM_DEVICECHANGE: wParam=" << w_param 
+						<< "; lParam=" << l_param << llendl;
+			}
+			if (w_param == DBT_DEVNODES_CHANGED || w_param == DBT_DEVICEARRIVAL)
+			{
+				if (window_imp->mCallbacks->handleDeviceChange(window_imp))
+				{
+					return 0;
+				}
+			}
+			break;
+
+		case WM_PAINT:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_PAINT");
+			GetUpdateRect(window_imp->mWindowHandle, &update_rect, FALSE);
+			update_width = update_rect.right - update_rect.left + 1;
+			update_height = update_rect.bottom - update_rect.top + 1;
+			window_imp->mCallbacks->handlePaint(window_imp, update_rect.left, update_rect.top,
+				update_width, update_height);
+			break;
+		case WM_PARENTNOTIFY:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_PARENTNOTIFY");
+			u_msg = u_msg;
+			break;
+
+		case WM_SETCURSOR:
+			// This message is sent whenever the cursor is moved in a window.
+			// You need to set the appropriate cursor appearance.
+
+			// Only take control of cursor over client region of window
+			// This allows Windows(tm) to handle resize cursors, etc.
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SETCURSOR");
+			if (LOWORD(l_param) == HTCLIENT)
+			{
+				SetCursor(window_imp->mCursor[ window_imp->mCurrentCursor] );
+				return 0;
+			}
+			break;
+
+		case WM_ENTERMENULOOP:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_ENTERMENULOOP");
+			window_imp->mCallbacks->handleWindowBlock(window_imp);
+			break;
+
+		case WM_EXITMENULOOP:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_EXITMENULOOP");
+			window_imp->mCallbacks->handleWindowUnblock(window_imp);
+			break;
+
+		case WM_ACTIVATEAPP:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_ACTIVATEAPP");
+			{
+				// This message should be sent whenever the app gains or loses focus.
+				BOOL activating = (BOOL) w_param;
+				BOOL minimized = window_imp->getMinimized();
+
+				if (gDebugWindowProc)
+				{
+					LL_INFOS("Window") << "WINDOWPROC ActivateApp "
+						<< " activating " << S32(activating)
+						<< " minimized " << S32(minimized)
+						<< " fullscreen " << S32(window_imp->mFullscreen)
+						<< LL_ENDL;
+				}
+
+				if (window_imp->mFullscreen)
+				{
+					// When we run fullscreen, restoring or minimizing the app needs 
+					// to switch the screen resolution
+					if (activating)
+					{
+						window_imp->setFullscreenResolution();
+						window_imp->restore();
+					}
+					else
+					{
+						window_imp->minimize();
+						window_imp->resetDisplayResolution();
+					}
+				}
+
+				window_imp->mCallbacks->handleActivateApp(window_imp, activating);
+
+				break;
+			}
+
+		case WM_ACTIVATE:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_ACTIVATE");
+			{
+				// Can be one of WA_ACTIVE, WA_CLICKACTIVE, or WA_INACTIVE
+				BOOL activating = (LOWORD(w_param) != WA_INACTIVE);
+
+				BOOL minimized = BOOL(HIWORD(w_param));
+
+				if (!activating && LLWinImm::isAvailable() && window_imp->mPreeditor)
+				{
+					window_imp->interruptLanguageTextInput();
+				}
+
+				// JC - I'm not sure why, but if we don't report that we handled the 
+				// WM_ACTIVATE message, the WM_ACTIVATEAPP messages don't work 
+				// properly when we run fullscreen.
+				if (gDebugWindowProc)
+				{
+					LL_INFOS("Window") << "WINDOWPROC Activate "
+						<< " activating " << S32(activating) 
+						<< " minimized " << S32(minimized)
+						<< LL_ENDL;
+				}
+
+				// Don't handle this.
+				break;
+			}
+
+		case WM_QUERYOPEN:
+			// TODO: use this to return a nice icon
+			break;
+
+		case WM_SYSCOMMAND:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SYSCOMMAND");
+			switch(w_param)
+			{
+			case SC_KEYMENU: 
+				// Disallow the ALT key from triggering the default system menu.
+				return 0;		
+
+			case SC_SCREENSAVE:
+			case SC_MONITORPOWER:
+				// eat screen save messages and prevent them!
+				return 0;
+			}
+			break;
+
+		case WM_CLOSE:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_CLOSE");
+			// Will the app allow the window to close?
+			if (window_imp->mCallbacks->handleCloseRequest(window_imp))
+			{
+				// Get the app to initiate cleanup.
+				window_imp->mCallbacks->handleQuit(window_imp);
+				// The app is responsible for calling destroyWindow when done with GL
+			}
+			return 0;
+
+		case WM_DESTROY:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_DESTROY");
+			if (window_imp->shouldPostQuit())
+			{
+				PostQuitMessage(0);  // Posts WM_QUIT with an exit code of 0
+			}
+			return 0;
+
+		case WM_COMMAND:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_COMMAND");
+			if (!HIWORD(w_param)) // this message is from a menu
+			{
+				window_imp->mCallbacks->handleMenuSelect(window_imp, LOWORD(w_param));
+			}
+			break;
+
+		case WM_SYSKEYDOWN:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SYSKEYDOWN");
+			// allow system keys, such as ALT-F4 to be processed by Windows
+			eat_keystroke = FALSE;
+		case WM_KEYDOWN:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYDOWN");
+			{
+				if (gDebugWindowProc)
+				{
+					LL_INFOS("Window") << "Debug WindowProc WM_KEYDOWN "
+						<< " key " << S32(w_param) 
+						<< LL_ENDL;
+				}
+				if(gKeyboard->handleKeyDown(w_param, mask) && eat_keystroke)
+				{
+					return 0;
+				}
+				// pass on to windows if we didn't handle it
+				break;
+			}
+		case WM_SYSKEYUP:
+			eat_keystroke = FALSE;
+		case WM_KEYUP:
+		{
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYUP");
+			LLFastTimer t2(FTM_KEYHANDLER);
+
+			if (gDebugWindowProc)
+			{
+				LL_INFOS("Window") << "Debug WindowProc WM_KEYUP "
+					<< " key " << S32(w_param) 
+					<< LL_ENDL;
+			}
+			if (gKeyboard->handleKeyUp(w_param, mask) && eat_keystroke)
+			{
+				return 0;
+			}
+
+			// pass on to windows
+			break;
+		}
+		case WM_IME_SETCONTEXT:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_SETCONTEXT");
+			if (gDebugWindowProc)
+			{
+				llinfos << "WM_IME_SETCONTEXT" << llendl;
+			}
+			if (LLWinImm::isAvailable() && window_imp->mPreeditor)
+			{
+				l_param &= ~ISC_SHOWUICOMPOSITIONWINDOW;
+				// Invoke DefWinProc with the modified LPARAM.
+			}
+			break;
+
+		case WM_IME_STARTCOMPOSITION:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_STARTCOMPOSITION");
+			if (gDebugWindowProc)
+			{
+				llinfos << "WM_IME_STARTCOMPOSITION" << llendl;
+			}
+			if (LLWinImm::isAvailable() && window_imp->mPreeditor)
+			{
+				window_imp->handleStartCompositionMessage();
+				return 0;
+			}
+			break;
+
+		case WM_IME_ENDCOMPOSITION:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_ENDCOMPOSITION");
+			if (gDebugWindowProc)
+			{
+				llinfos << "WM_IME_ENDCOMPOSITION" << llendl;
+			}
+			if (LLWinImm::isAvailable() && window_imp->mPreeditor)
+			{
+				return 0;
+			}
+			break;
+
+		case WM_IME_COMPOSITION:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_COMPOSITION");
+			if (gDebugWindowProc)
+			{
+				llinfos << "WM_IME_COMPOSITION" << llendl;
+			}
+			if (LLWinImm::isAvailable() && window_imp->mPreeditor)
+			{
+				window_imp->handleCompositionMessage(l_param);
+				return 0;
+			}
+			break;
+
+		case WM_IME_REQUEST:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_REQUEST");
+			if (gDebugWindowProc)
+			{
+				llinfos << "WM_IME_REQUEST" << llendl;
+			}
+			if (LLWinImm::isAvailable() && window_imp->mPreeditor)
+			{
+				LRESULT result = 0;
+				if (window_imp->handleImeRequests(w_param, l_param, &result))
+				{
+					return result;
+				}
+			}
+			break;
+
+		case WM_CHAR:
+			// Should really use WM_UNICHAR eventually, but it requires a specific Windows version and I need
+			// to figure out how that works. - Doug
+			//
+			// ... Well, I don't think so.
+			// How it works is explained in Win32 API document, but WM_UNICHAR didn't work
+			// as specified at least on Windows XP SP1 Japanese version.  I have never used
+			// it since then, and I'm not sure whether it has been fixed now, but I don't think
+			// it is worth trying.  The good old WM_CHAR works just fine even for supplementary
+			// characters.  We just need to take care of surrogate pairs sent as two WM_CHAR's
+			// by ourselves.  It is not that tough.  -- Alissa Sabre @ SL
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_CHAR");
+			if (gDebugWindowProc)
+			{
+				LL_INFOS("Window") << "Debug WindowProc WM_CHAR "
+					<< " key " << S32(w_param) 
+					<< LL_ENDL;
+			}
+			// Even if LLWindowCallbacks::handleUnicodeChar(llwchar, BOOL) returned FALSE,
+			// we *did* processed the event, so I believe we should not pass it to DefWindowProc...
+			window_imp->handleUnicodeUTF16((U16)w_param, gKeyboard->currentMask(FALSE));
+			return 0;
+
+		case WM_LBUTTONDOWN:
+			{
+				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_LBUTTONDOWN");
+				LLFastTimer t2(FTM_MOUSEHANDLER);
+				if (LLWinImm::isAvailable() && window_imp->mPreeditor)
+				{
+					window_imp->interruptLanguageTextInput();
+				}
+
+				// Because we move the cursor position in the app, we need to query
+				// to find out where the cursor at the time the event is handled.
+				// If we don't do this, many clicks could get buffered up, and if the
+				// first click changes the cursor position, all subsequent clicks
+				// will occur at the wrong location.  JC
+				LLCoordWindow cursor_coord_window;
+				if (window_imp->mMousePositionModified)
+				{
+					window_imp->getCursorPosition(&cursor_coord_window);
+					window_imp->convertCoords(cursor_coord_window, &gl_coord);
+				}
+				else
+				{
+					window_imp->convertCoords(window_coord, &gl_coord);
+				}
+				MASK mask = gKeyboard->currentMask(TRUE);
+				// generate move event to update mouse coordinates
+				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
+				if (window_imp->mCallbacks->handleMouseDown(window_imp, gl_coord, mask))
+				{
+					return 0;
+				}
+			}
+			break;
+
+		case WM_LBUTTONDBLCLK:
+		//RN: ignore right button double clicks for now
+		//case WM_RBUTTONDBLCLK:
+			{
+				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_LBUTTONDBLCLK");
+				// Because we move the cursor position in the app, we need to query
+				// to find out where the cursor at the time the event is handled.
+				// If we don't do this, many clicks could get buffered up, and if the
+				// first click changes the cursor position, all subsequent clicks
+				// will occur at the wrong location.  JC
+				LLCoordWindow cursor_coord_window;
+				if (window_imp->mMousePositionModified)
+				{
+					window_imp->getCursorPosition(&cursor_coord_window);
+					window_imp->convertCoords(cursor_coord_window, &gl_coord);
+				}
+				else
+				{
+					window_imp->convertCoords(window_coord, &gl_coord);
+				}
+				MASK mask = gKeyboard->currentMask(TRUE);
+				// generate move event to update mouse coordinates
+				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
+				if (window_imp->mCallbacks->handleDoubleClick(window_imp, gl_coord, mask) )
+				{
+					return 0;
+				}
+			}
+			break;
+
+		case WM_LBUTTONUP:
+			{
+				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_LBUTTONUP");
+				LLFastTimer t2(FTM_MOUSEHANDLER);
+				//if (gDebugClicks)
+				//{
+				//	LL_INFOS("Window") << "WndProc left button up" << LL_ENDL;
+				//}
+				// Because we move the cursor position in the app, we need to query
+				// to find out where the cursor at the time the event is handled.
+				// If we don't do this, many clicks could get buffered up, and if the
+				// first click changes the cursor position, all subsequent clicks
+				// will occur at the wrong location.  JC
+				LLCoordWindow cursor_coord_window;
+				if (window_imp->mMousePositionModified)
+				{
+					window_imp->getCursorPosition(&cursor_coord_window);
+					window_imp->convertCoords(cursor_coord_window, &gl_coord);
+				}
+				else
+				{
+					window_imp->convertCoords(window_coord, &gl_coord);
+				}
+				MASK mask = gKeyboard->currentMask(TRUE);
+				// generate move event to update mouse coordinates
+				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
+				if (window_imp->mCallbacks->handleMouseUp(window_imp, gl_coord, mask))
+				{
+					return 0;
+				}
+			}
+			break;
+
+		case WM_RBUTTONDBLCLK:
+		case WM_RBUTTONDOWN:
+			{
+				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_RBUTTONDOWN");
+				LLFastTimer t2(FTM_MOUSEHANDLER);
+				if (LLWinImm::isAvailable() && window_imp->mPreeditor)
+				{
+					window_imp->interruptLanguageTextInput();
+				}
+
+				// Because we move the cursor position in the llviewerapp, we need to query
+				// to find out where the cursor at the time the event is handled.
+				// If we don't do this, many clicks could get buffered up, and if the
+				// first click changes the cursor position, all subsequent clicks
+				// will occur at the wrong location.  JC
+				LLCoordWindow cursor_coord_window;
+				if (window_imp->mMousePositionModified)
+				{
+					window_imp->getCursorPosition(&cursor_coord_window);
+					window_imp->convertCoords(cursor_coord_window, &gl_coord);
+				}
+				else
+				{
+					window_imp->convertCoords(window_coord, &gl_coord);
+				}
+				MASK mask = gKeyboard->currentMask(TRUE);
+				// generate move event to update mouse coordinates
+				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
+				if (window_imp->mCallbacks->handleRightMouseDown(window_imp, gl_coord, mask))
+				{
+					return 0;
+				}
+			}
+			break;
+
+		case WM_RBUTTONUP:
+			{
+				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_RBUTTONUP");
+				LLFastTimer t2(FTM_MOUSEHANDLER);
+				// Because we move the cursor position in the app, we need to query
+				// to find out where the cursor at the time the event is handled.
+				// If we don't do this, many clicks could get buffered up, and if the
+				// first click changes the cursor position, all subsequent clicks
+				// will occur at the wrong location.  JC
+				LLCoordWindow cursor_coord_window;
+				if (window_imp->mMousePositionModified)
+				{
+					window_imp->getCursorPosition(&cursor_coord_window);
+					window_imp->convertCoords(cursor_coord_window, &gl_coord);
+				}
+				else
+				{
+					window_imp->convertCoords(window_coord, &gl_coord);
+				}
+				MASK mask = gKeyboard->currentMask(TRUE);
+				// generate move event to update mouse coordinates
+				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
+				if (window_imp->mCallbacks->handleRightMouseUp(window_imp, gl_coord, mask))
+				{
+					return 0;
+				}
+			}
+			break;
+
+		case WM_MBUTTONDOWN:
+//		case WM_MBUTTONDBLCLK:
+			{
+				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MBUTTONDOWN");
+				LLFastTimer t2(FTM_MOUSEHANDLER);
+				if (LLWinImm::isAvailable() && window_imp->mPreeditor)
+				{
+					window_imp->interruptLanguageTextInput();
+				}
+
+				// Because we move the cursor position in tllviewerhe app, we need to query
+				// to find out where the cursor at the time the event is handled.
+				// If we don't do this, many clicks could get buffered up, and if the
+				// first click changes the cursor position, all subsequent clicks
+				// will occur at the wrong location.  JC
+				LLCoordWindow cursor_coord_window;
+				if (window_imp->mMousePositionModified)
+				{
+					window_imp->getCursorPosition(&cursor_coord_window);
+					window_imp->convertCoords(cursor_coord_window, &gl_coord);
+				}
+				else
+				{
+					window_imp->convertCoords(window_coord, &gl_coord);
+				}
+				MASK mask = gKeyboard->currentMask(TRUE);
+				// generate move event to update mouse coordinates
+				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
+				if (window_imp->mCallbacks->handleMiddleMouseDown(window_imp, gl_coord, mask))
+				{
+					return 0;
+				}
+			}
+			break;
+
+		case WM_MBUTTONUP:
+			{
+				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MBUTTONUP");
+				LLFastTimer t2(FTM_MOUSEHANDLER);
+				// Because we move the cursor position in tllviewerhe app, we need to query
+				// to find out where the cursor at the time the event is handled.
+				// If we don't do this, many clicks could get buffered up, and if the
+				// first click changes the cursor position, all subsequent clicks
+				// will occur at the wrong location.  JC
+				LLCoordWindow cursor_coord_window;
+				if (window_imp->mMousePositionModified)
+				{
+					window_imp->getCursorPosition(&cursor_coord_window);
+					window_imp->convertCoords(cursor_coord_window, &gl_coord);
+				}
+				else
+				{
+					window_imp->convertCoords(window_coord, &gl_coord);
+				}
+				MASK mask = gKeyboard->currentMask(TRUE);
+				// generate move event to update mouse coordinates
+				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
+				if (window_imp->mCallbacks->handleMiddleMouseUp(window_imp, gl_coord, mask))
+				{
+					return 0;
+				}
+			}
+			break;
+
+		case WM_MOUSEWHEEL:
+			{
+				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MOUSEWHEEL");
+				static short z_delta = 0;
+
+				z_delta += HIWORD(w_param);
+				// cout << "z_delta " << z_delta << endl;
+
+				// current mouse wheels report changes in increments of zDelta (+120, -120)
+				// Future, higher resolution mouse wheels may report smaller deltas.
+				// So we sum the deltas and only act when we've exceeded WHEEL_DELTA
+				//
+				// If the user rapidly spins the wheel, we can get messages with
+				// large deltas, like 480 or so.  Thus we need to scroll more quickly.
+				if (z_delta <= -WHEEL_DELTA || WHEEL_DELTA <= z_delta)
+				{
+					window_imp->mCallbacks->handleScrollWheel(window_imp, -z_delta / WHEEL_DELTA);
+					z_delta = 0;
+				}
+				return 0;
+			}
+			/*
+			// TODO: add this after resolving _WIN32_WINNT issue
+			case WM_MOUSELEAVE:
+			{
+			window_imp->mCallbacks->handleMouseLeave(window_imp);
+
+			//				TRACKMOUSEEVENT track_mouse_event;
+			//				track_mouse_event.cbSize = sizeof( TRACKMOUSEEVENT );
+			//				track_mouse_event.dwFlags = TME_LEAVE;
+			//				track_mouse_event.hwndTrack = h_wnd;
+			//				track_mouse_event.dwHoverTime = HOVER_DEFAULT;
+			//				TrackMouseEvent( &track_mouse_event ); 
+			return 0;
+			}
+			*/
+			// Handle mouse movement within the window
+		case WM_MOUSEMOVE:
+			{
+				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MOUSEMOVE");
+				window_imp->convertCoords(window_coord, &gl_coord);
+				MASK mask = gKeyboard->currentMask(TRUE);
+				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
+				return 0;
+			}
+
+		case WM_SIZE:
+			{
+				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SIZE");
+				S32 width = S32( LOWORD(l_param) );
+				S32 height = S32( HIWORD(l_param) );
+
+				if (gDebugWindowProc)
+				{
+					BOOL maximized = ( w_param == SIZE_MAXIMIZED );
+					BOOL restored  = ( w_param == SIZE_RESTORED );
+					BOOL minimized = ( w_param == SIZE_MINIMIZED );
+
+					LL_INFOS("Window") << "WINDOWPROC Size "
+						<< width << "x" << height
+						<< " max " << S32(maximized)
+						<< " min " << S32(minimized)
+						<< " rest " << S32(restored)
+						<< LL_ENDL;
+				}
+
+				// There's an odd behavior with WM_SIZE that I would call a bug. If 
+				// the window is maximized, and you call MoveWindow() with a size smaller
+				// than a maximized window, it ends up sending WM_SIZE with w_param set 
+				// to SIZE_MAXIMIZED -- which isn't true. So the logic below doesn't work.
+				// (SL-44655). Fixed it by calling ShowWindow(SW_RESTORE) first (see 
+				// LLWindowWin32::moveWindow in this file). 
+
+				// If we are now restored, but we weren't before, this
+				// means that the window was un-minimized.
+				if (w_param == SIZE_RESTORED && window_imp->mLastSizeWParam != SIZE_RESTORED)
+				{
+					window_imp->mCallbacks->handleActivate(window_imp, TRUE);
+				}
+
+				// handle case of window being maximized from fully minimized state
+				if (w_param == SIZE_MAXIMIZED && window_imp->mLastSizeWParam != SIZE_MAXIMIZED)
+				{
+					window_imp->mCallbacks->handleActivate(window_imp, TRUE);
+				}
+
+				// Also handle the minimization case
+				if (w_param == SIZE_MINIMIZED && window_imp->mLastSizeWParam != SIZE_MINIMIZED)
+				{
+					window_imp->mCallbacks->handleActivate(window_imp, FALSE);
+				}
+
+				// Actually resize all of our views
+				if (w_param != SIZE_MINIMIZED)
+				{
+					// Ignore updates for minimizing and minimized "windows"
+					window_imp->mCallbacks->handleResize(	window_imp, 
+						LOWORD(l_param), 
+						HIWORD(l_param) );
+				}
+
+				window_imp->mLastSizeWParam = w_param;
+
+				return 0;
+			}
+
+		case WM_SETFOCUS:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SETFOCUS");
+			if (gDebugWindowProc)
+			{
+				LL_INFOS("Window") << "WINDOWPROC SetFocus" << LL_ENDL;
+			}
+			window_imp->mCallbacks->handleFocus(window_imp);
+			return 0;
+
+		case WM_KILLFOCUS:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KILLFOCUS");
+			if (gDebugWindowProc)
+			{
+				LL_INFOS("Window") << "WINDOWPROC KillFocus" << LL_ENDL;
+			}
+			window_imp->mCallbacks->handleFocusLost(window_imp);
+			return 0;
+
+		case WM_COPYDATA:
+			{
+				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_COPYDATA");
+				// received a URL
+				PCOPYDATASTRUCT myCDS = (PCOPYDATASTRUCT) l_param;
+				window_imp->mCallbacks->handleDataCopy(window_imp, myCDS->dwData, myCDS->lpData);
+			};
+			return 0;			
+
+		case WM_DROPFILES:
+			{
+				// HDROP contains what we need
+				HDROP hdrop = (HDROP)w_param;
+
+				// get location in window space where drop occured and convert to OpenGL coordinate space
+				POINT pt;
+				DragQueryPoint( hdrop, &pt );
+				LLCoordGL gl_coord;
+				LLCoordWindow cursor_coord_window( pt.x, pt.y );
+				window_imp->convertCoords(cursor_coord_window, &gl_coord);
+
+				// get payload (eventually, this needs to more advanced and grab size of payload dynamically
+				static char file_name[ 1024 ];
 				DragQueryFileA( hdrop, 0, file_name, 1024 );
-				void* url = (void*)( file_name );
+				void* url = (void*)( file_name );
 
 				// if it's a .URL or .lnk ("shortcut") file
 				if ( std::string( file_name ).find( ".lnk" ) != std::string::npos ||
@@ -2390,1316 +2400,1329 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
 				};
 
 				MASK mask = gKeyboard->currentMask(TRUE);
-				if (window_imp->mCallbacks->handleDrop(window_imp, gl_coord, mask, url ) )
-				{
-					return 0;
-				}
-			}
-			break;
-		}
-
-	window_imp->mCallbacks->handlePauseWatchdog(window_imp);	
-	}
-
-
-	// pass unhandled messages down to Windows
-	return DefWindowProc(h_wnd, u_msg, w_param, l_param);
-}
-
-BOOL LLWindowWin32::convertCoords(LLCoordGL from, LLCoordWindow *to)
-{
-	S32		client_height;
-	RECT	client_rect;
-	LLCoordWindow window_position;
-
-	if (!mWindowHandle ||
-		!GetClientRect(mWindowHandle, &client_rect) ||
-		NULL == to)
-	{
-		return FALSE;
-	}
-
-	to->mX = from.mX;
-	client_height = client_rect.bottom - client_rect.top;
-	to->mY = client_height - from.mY - 1;
-
-	return TRUE;
-}
-
-BOOL LLWindowWin32::convertCoords(LLCoordWindow from, LLCoordGL* to)
-{
-	S32		client_height;
-	RECT	client_rect;
-
-	if (!mWindowHandle ||
-		!GetClientRect(mWindowHandle, &client_rect) ||
-		NULL == to)
-	{
-		return FALSE;
-	}
-
-	to->mX = from.mX;
-	client_height = client_rect.bottom - client_rect.top;
-	to->mY = client_height - from.mY - 1;
-
-	return TRUE;
-}
-
-BOOL LLWindowWin32::convertCoords(LLCoordScreen from, LLCoordWindow* to)
-{	
-	POINT mouse_point;
-
-	mouse_point.x = from.mX;
-	mouse_point.y = from.mY;
-	BOOL result = ScreenToClient(mWindowHandle, &mouse_point);
-
-	if (result)
-	{
-		to->mX = mouse_point.x;
-		to->mY = mouse_point.y;
-	}
-
-	return result;
-}
-
-BOOL LLWindowWin32::convertCoords(LLCoordWindow from, LLCoordScreen *to)
-{
-	POINT mouse_point;
-
-	mouse_point.x = from.mX;
-	mouse_point.y = from.mY;
-	BOOL result = ClientToScreen(mWindowHandle, &mouse_point);
-
-	if (result)
-	{
-		to->mX = mouse_point.x;
-		to->mY = mouse_point.y;
-	}
-
-	return result;
-}
-
-BOOL LLWindowWin32::convertCoords(LLCoordScreen from, LLCoordGL *to)
-{
-	LLCoordWindow window_coord;
-
-	if (!mWindowHandle || (NULL == to))
-	{
-		return FALSE;
-	}
-
-	convertCoords(from, &window_coord);
-	convertCoords(window_coord, to);
-	return TRUE;
-}
-
-BOOL LLWindowWin32::convertCoords(LLCoordGL from, LLCoordScreen *to)
-{
-	LLCoordWindow window_coord;
-
-	if (!mWindowHandle || (NULL == to))
-	{
-		return FALSE;
-	}
-
-	convertCoords(from, &window_coord);
-	convertCoords(window_coord, to);
-	return TRUE;
-}
-
-
-BOOL LLWindowWin32::isClipboardTextAvailable()
-{
-	return IsClipboardFormatAvailable(CF_UNICODETEXT);
-}
-
-
-BOOL LLWindowWin32::pasteTextFromClipboard(LLWString &dst)
-{
-	BOOL success = FALSE;
-
-	if (IsClipboardFormatAvailable(CF_UNICODETEXT))
-	{
-		if (OpenClipboard(mWindowHandle))
-		{
-			HGLOBAL h_data = GetClipboardData(CF_UNICODETEXT);
-			if (h_data)
-			{
-				WCHAR *utf16str = (WCHAR*) GlobalLock(h_data);
-				if (utf16str)
-				{
-					dst = utf16str_to_wstring(utf16str);
-					LLWStringUtil::removeCRLF(dst);
-					GlobalUnlock(h_data);
-					success = TRUE;
-				}
-			}
-			CloseClipboard();
-		}
-	}
-
-	return success;
-}
-
-
-BOOL LLWindowWin32::copyTextToClipboard(const LLWString& wstr)
-{
-	BOOL success = FALSE;
-
-	if (OpenClipboard(mWindowHandle))
-	{
-		EmptyClipboard();
-
-		// Provide a copy of the data in Unicode format.
-		LLWString sanitized_string(wstr);
-		LLWStringUtil::addCRLF(sanitized_string);
-		llutf16string out_utf16 = wstring_to_utf16str(sanitized_string);
-		const size_t size_utf16 = (out_utf16.length() + 1) * sizeof(WCHAR);
-
-		// Memory is allocated and then ownership of it is transfered to the system.
-		HGLOBAL hglobal_copy_utf16 = GlobalAlloc(GMEM_MOVEABLE, size_utf16); 
-		if (hglobal_copy_utf16)
-		{
-			WCHAR* copy_utf16 = (WCHAR*) GlobalLock(hglobal_copy_utf16);
-			if (copy_utf16)
-			{
-				memcpy(copy_utf16, out_utf16.c_str(), size_utf16);	/* Flawfinder: ignore */
-				GlobalUnlock(hglobal_copy_utf16);
-
-				if (SetClipboardData(CF_UNICODETEXT, hglobal_copy_utf16))
-				{
-					success = TRUE;
-				}
-			}
-		}
-
-		CloseClipboard();
-	}
-
-	return success;
-}
-
-// Constrains the mouse to the window.
-void LLWindowWin32::setMouseClipping( BOOL b )
-{
-	if( b != mIsMouseClipping )
-	{
-		BOOL success = FALSE;
-
-		if( b )
-		{
-			GetClipCursor( &mOldMouseClip );
-
-			RECT client_rect_in_screen_space;
-			if( getClientRectInScreenSpace( &client_rect_in_screen_space ) )
-			{
-				success = ClipCursor( &client_rect_in_screen_space );
-			}
-		}
-		else
-		{
-			// Must restore the old mouse clip, which may be set by another window.
-			success = ClipCursor( &mOldMouseClip );
-			SetRect( &mOldMouseClip, 0, 0, 0, 0 );
-		}
-
-		if( success )
-		{
-			mIsMouseClipping = b;
-		}
-	}
-}
-
-BOOL LLWindowWin32::getClientRectInScreenSpace( RECT* rectp )
-{
-	BOOL success = FALSE;
-
-	RECT client_rect;
-	if( mWindowHandle && GetClientRect(mWindowHandle, &client_rect) )
-	{
-		POINT top_left;
-		top_left.x = client_rect.left;
-		top_left.y = client_rect.top;
-		ClientToScreen(mWindowHandle, &top_left); 
-
-		POINT bottom_right;
-		bottom_right.x = client_rect.right;
-		bottom_right.y = client_rect.bottom;
-		ClientToScreen(mWindowHandle, &bottom_right); 
-
-		SetRect( rectp,
-			top_left.x,
-			top_left.y,
-			bottom_right.x,
-			bottom_right.y );
-
-		success = TRUE;
-	}
-
-	return success;
-}
-
-void LLWindowWin32::flashIcon(F32 seconds)
-{
-	FLASHWINFO flash_info;
-
-	flash_info.cbSize = sizeof(FLASHWINFO);
-	flash_info.hwnd = mWindowHandle;
-	flash_info.dwFlags = FLASHW_TRAY;
-	flash_info.uCount = UINT(seconds / ICON_FLASH_TIME);
-	flash_info.dwTimeout = DWORD(1000.f * ICON_FLASH_TIME); // milliseconds
-	FlashWindowEx(&flash_info);
-}
-
-F32 LLWindowWin32::getGamma()
-{
-	return mCurrentGamma;
-}
-
-BOOL LLWindowWin32::restoreGamma()
-{
-	return SetDeviceGammaRamp(mhDC, mPrevGammaRamp);
-}
-
-BOOL LLWindowWin32::setGamma(const F32 gamma)
-{
-	mCurrentGamma = gamma;
-
-	LL_DEBUGS("Window") << "Setting gamma to " << gamma << LL_ENDL;
-
-	for ( int i = 0; i < 256; ++i )
-	{
-		int mult = 256 - ( int ) ( ( gamma - 1.0f ) * 128.0f );
-
-		int value = mult * i;
-
-		if ( value > 0xffff )
-			value = 0xffff;
-
-		mCurrentGammaRamp [ 0 * 256 + i ] = 
-			mCurrentGammaRamp [ 1 * 256 + i ] = 
-				mCurrentGammaRamp [ 2 * 256 + i ] = ( WORD )value;
-	};
-
-	return SetDeviceGammaRamp ( mhDC, mCurrentGammaRamp );
-}
-
-void LLWindowWin32::setFSAASamples(const U32 fsaa_samples)
-{
-	mFSAASamples = fsaa_samples;
-}
-
-U32 LLWindowWin32::getFSAASamples()
-{
-	return mFSAASamples;
-}
-
-LLWindow::LLWindowResolution* LLWindowWin32::getSupportedResolutions(S32 &num_resolutions)
-{
-	if (!mSupportedResolutions)
-	{
-		mSupportedResolutions = new LLWindowResolution[MAX_NUM_RESOLUTIONS];
-		DEVMODE dev_mode;
-
-		mNumSupportedResolutions = 0;
-		for (S32 mode_num = 0; mNumSupportedResolutions < MAX_NUM_RESOLUTIONS; mode_num++)
-		{
-			if (!EnumDisplaySettings(NULL, mode_num, &dev_mode))
-			{
-				break;
-			}
-
-			if (dev_mode.dmBitsPerPel == BITS_PER_PIXEL &&
-				dev_mode.dmPelsWidth >= 800 &&
-				dev_mode.dmPelsHeight >= 600)
-			{
-				BOOL resolution_exists = FALSE;
-				for(S32 i = 0; i < mNumSupportedResolutions; i++)
-				{
-					if (mSupportedResolutions[i].mWidth == dev_mode.dmPelsWidth &&
-						mSupportedResolutions[i].mHeight == dev_mode.dmPelsHeight)
-					{
-						resolution_exists = TRUE;
-					}
-				}
-				if (!resolution_exists)
-				{
-					mSupportedResolutions[mNumSupportedResolutions].mWidth = dev_mode.dmPelsWidth;
-					mSupportedResolutions[mNumSupportedResolutions].mHeight = dev_mode.dmPelsHeight;
-					mNumSupportedResolutions++;
-				}
-			}
-		}
-	}
-
-	num_resolutions = mNumSupportedResolutions;
-	return mSupportedResolutions;
-}
-
-
-F32 LLWindowWin32::getNativeAspectRatio()
-{
-	if (mOverrideAspectRatio > 0.f)
-	{
-		return mOverrideAspectRatio;
-	}
-	else if (mNativeAspectRatio > 0.f)
-	{
-		// we grabbed this value at startup, based on the user's desktop settings
-		return mNativeAspectRatio;
-	}
-	// RN: this hack presumes that the largest supported resolution is monitor-limited
-	// and that pixels in that mode are square, therefore defining the native aspect ratio
-	// of the monitor...this seems to work to a close approximation for most CRTs/LCDs
-	S32 num_resolutions;
-	LLWindowResolution* resolutions = getSupportedResolutions(num_resolutions);
-
-	return ((F32)resolutions[num_resolutions - 1].mWidth / (F32)resolutions[num_resolutions - 1].mHeight);
-}
-
-F32 LLWindowWin32::getPixelAspectRatio()
-{
-	F32 pixel_aspect = 1.f;
-	if (getFullscreen())
-	{
-		LLCoordScreen screen_size;
-		getSize(&screen_size);
-		pixel_aspect = getNativeAspectRatio() * (F32)screen_size.mY / (F32)screen_size.mX;
-	}
-
-	return pixel_aspect;
-}
-
-// Change display resolution.  Returns true if successful.
-// protected
-BOOL LLWindowWin32::setDisplayResolution(S32 width, S32 height, S32 bits, S32 refresh)
-{
-	DEVMODE dev_mode;
-	dev_mode.dmSize = sizeof(dev_mode);
-	BOOL success = FALSE;
-
-	// Don't change anything if we don't have to
-	if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode))
-	{
-		if (dev_mode.dmPelsWidth        == width &&
-			dev_mode.dmPelsHeight       == height &&
-			dev_mode.dmBitsPerPel       == bits &&
-			dev_mode.dmDisplayFrequency == refresh )
-		{
-			// ...display mode identical, do nothing
-			return TRUE;
-		}
-	}
-
-	memset(&dev_mode, 0, sizeof(dev_mode));
-	dev_mode.dmSize = sizeof(dev_mode);
-	dev_mode.dmPelsWidth        = width;
-	dev_mode.dmPelsHeight       = height;
-	dev_mode.dmBitsPerPel       = bits;
-	dev_mode.dmDisplayFrequency = refresh;
-	dev_mode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT | DM_DISPLAYFREQUENCY;
-
-	// CDS_FULLSCREEN indicates that this is a temporary change to the device mode.
-	LONG cds_result = ChangeDisplaySettings(&dev_mode, CDS_FULLSCREEN);
-
-	success = (DISP_CHANGE_SUCCESSFUL == cds_result);
-
-	if (!success)
-	{
-		LL_WARNS("Window") << "setDisplayResolution failed, "
-			<< width << "x" << height << "x" << bits << " @ " << refresh << LL_ENDL;
-	}
-
-	return success;
-}
-
-// protected
-BOOL LLWindowWin32::setFullscreenResolution()
-{
-	if (mFullscreen)
-	{
-		return setDisplayResolution( mFullscreenWidth, mFullscreenHeight, mFullscreenBits, mFullscreenRefresh);
-	}
-	else
-	{
-		return FALSE;
-	}
-}
-
-// protected
-BOOL LLWindowWin32::resetDisplayResolution()
-{
-	LL_DEBUGS("Window") << "resetDisplayResolution START" << LL_ENDL;
-
-	LONG cds_result = ChangeDisplaySettings(NULL, 0);
-
-	BOOL success = (DISP_CHANGE_SUCCESSFUL == cds_result);
-
-	if (!success)
-	{
-		LL_WARNS("Window") << "resetDisplayResolution failed" << LL_ENDL;
-	}
-
-	LL_DEBUGS("Window") << "resetDisplayResolution END" << LL_ENDL;
-
-	return success;
-}
-
-void LLWindowWin32::swapBuffers()
-{
-	SwapBuffers(mhDC);
-}
-
-
-//
-// LLSplashScreenImp
-//
-LLSplashScreenWin32::LLSplashScreenWin32()
-:	mWindow(NULL)
-{
-}
-
-LLSplashScreenWin32::~LLSplashScreenWin32()
-{
-}
-
-void LLSplashScreenWin32::showImpl()
-{
-	// This appears to work.  ???
-	HINSTANCE hinst = GetModuleHandle(NULL);
-
-	mWindow = CreateDialog(hinst, 
-		TEXT("SPLASHSCREEN"), 
-		NULL,	// no parent
-		(DLGPROC) LLSplashScreenWin32::windowProc); 
-	ShowWindow(mWindow, SW_SHOW);
-}
-
-
-void LLSplashScreenWin32::updateImpl(const std::string& mesg)
-{
-	if (!mWindow) return;
-
-	WCHAR w_mesg[1024];
-	mbstowcs(w_mesg, mesg.c_str(), 1024);
-
-	SendDlgItemMessage(mWindow,
-		666,		// HACK: text id
-		WM_SETTEXT,
-		FALSE,
-		(LPARAM)w_mesg);
-}
-
-
-void LLSplashScreenWin32::hideImpl()
-{
-	if (mWindow)
-	{
-		DestroyWindow(mWindow);
-		mWindow = NULL; 
-	}
-}
-
-
-// static
-LRESULT CALLBACK LLSplashScreenWin32::windowProc(HWND h_wnd, UINT u_msg,
-											WPARAM w_param, LPARAM l_param)
-{
-	// Just give it to windows
-	return DefWindowProc(h_wnd, u_msg, w_param, l_param);
-}
-
-//
-// Helper Funcs
-//
-
-S32 OSMessageBoxWin32(const std::string& text, const std::string& caption, U32 type)
-{
-	UINT uType;
-
-	switch(type)
-	{
-	case OSMB_OK:
-		uType = MB_OK;
-		break;
-	case OSMB_OKCANCEL:
-		uType = MB_OKCANCEL;
-		break;
-	case OSMB_YESNO:
-		uType = MB_YESNO;
-		break;
-	default:
-		uType = MB_OK;
-		break;
-	}
-
-	// HACK! Doesn't properly handle wide strings!
-	int retval_win = MessageBoxA(NULL, text.c_str(), caption.c_str(), uType);
-	S32 retval;
-
-	switch(retval_win)
-	{
-	case IDYES:
-		retval = OSBTN_YES;
-		break;
-	case IDNO:
-		retval = OSBTN_NO;
-		break;
-	case IDOK:
-		retval = OSBTN_OK;
-		break;
-	case IDCANCEL:
-		retval = OSBTN_CANCEL;
-		break;
-	default:
-		retval = OSBTN_CANCEL;
-		break;
-	}
-
-	return retval;
-}
-
-
-void LLWindowWin32::spawnWebBrowser(const std::string& escaped_url )
-{
-	bool found = false;
-	S32 i;
-	for (i = 0; i < gURLProtocolWhitelistCount; i++)
-	{
-		if (escaped_url.find(gURLProtocolWhitelist[i]) == 0)
-		{
-			found = true;
-			break;
-		}
-	}
-
-	if (!found)
-	{
-		LL_WARNS("Window") << "spawn_web_browser() called for url with protocol not on whitelist: " << escaped_url << LL_ENDL;
-		return;
-	}
-
-	LL_INFOS("Window") << "Opening URL " << escaped_url << LL_ENDL;
-
-	// replaced ShellExecute code with ShellExecuteEx since ShellExecute doesn't work
-	// reliablly on Vista.
-
-	// this is madness.. no, this is..
-	LLWString url_wstring = utf8str_to_wstring( escaped_url );
-	llutf16string url_utf16 = wstring_to_utf16str( url_wstring );
-
-	// let the OS decide what to use to open the URL
-	SHELLEXECUTEINFO sei = { sizeof( sei ) };
-	sei.fMask = SEE_MASK_FLAG_DDEWAIT;
-	sei.nShow = SW_SHOWNORMAL;
-	sei.lpVerb = L"open";
-	sei.lpFile = url_utf16.c_str();
-	ShellExecuteEx( &sei );
-
-	//// TODO: LEAVING OLD CODE HERE SO I DON'T BONE OTHER MERGES
-	//// DELETE THIS ONCE THE MERGES ARE DONE
-
-	// Figure out the user's default web browser
-	// HKEY_CLASSES_ROOT\http\shell\open\command
-	/*
-	std::string reg_path_str = gURLProtocolWhitelistHandler[i] + "\\shell\\open\\command";
-	WCHAR reg_path_wstr[256];
-	mbstowcs( reg_path_wstr, reg_path_str.c_str(), LL_ARRAY_SIZE(reg_path_wstr) );
-
-	HKEY key;
-	WCHAR browser_open_wstr[1024];
-	DWORD buffer_length = 1024;
-	RegOpenKeyEx(HKEY_CLASSES_ROOT, reg_path_wstr, 0, KEY_QUERY_VALUE, &key);
-	RegQueryValueEx(key, NULL, NULL, NULL, (LPBYTE)browser_open_wstr, &buffer_length);
-	RegCloseKey(key);
-
-	// Convert to STL string
-	LLWString browser_open_wstring = utf16str_to_wstring(browser_open_wstr);
-
-	if (browser_open_wstring.length() < 2)
-	{
-		LL_WARNS("Window") << "Invalid browser executable in registry " << browser_open_wstring << LL_ENDL;
-		return;
-	}
-
-	// Extract the process that's supposed to be launched
-	LLWString browser_executable;
-	if (browser_open_wstring[0] == '"')
-	{
-		// executable is quoted, find the matching quote
-		size_t quote_pos = browser_open_wstring.find('"', 1);
-		// copy out the string including both quotes
-		browser_executable = browser_open_wstring.substr(0, quote_pos+1);
-	}
-	else
-	{
-		// executable not quoted, find a space
-		size_t space_pos = browser_open_wstring.find(' ', 1);
-		browser_executable = browser_open_wstring.substr(0, space_pos);
-	}
-
-	LL_DEBUGS("Window") << "Browser reg key: " << wstring_to_utf8str(browser_open_wstring) << LL_ENDL;
-	LL_INFOS("Window") << "Browser executable: " << wstring_to_utf8str(browser_executable) << LL_ENDL;
-
-	// Convert URL to wide string for Windows API
-	// Assume URL is UTF8, as can come from scripts
-	LLWString url_wstring = utf8str_to_wstring(escaped_url);
-	llutf16string url_utf16 = wstring_to_utf16str(url_wstring);
-
-	// Convert executable and path to wide string for Windows API
-	llutf16string browser_exec_utf16 = wstring_to_utf16str(browser_executable);
-
-	// ShellExecute returns HINSTANCE for backwards compatiblity.
-	// MS docs say to cast to int and compare to 32.
-	HWND our_window = NULL;
-	LPCWSTR directory_wstr = NULL;
-	int retval = (int) ShellExecute(our_window, 	// Flawfinder: ignore
-									L"open", 
-									browser_exec_utf16.c_str(), 
-									url_utf16.c_str(), 
-									directory_wstr,
-									SW_SHOWNORMAL);
-	if (retval > 32)
-	{
-		LL_DEBUGS("Window") << "load_url success with " << retval << LL_ENDL;
-	}
-	else
-	{
-		LL_INFOS("Window") << "load_url failure with " << retval << LL_ENDL;
-	}
-	*/
-}
-
-
-BOOL LLWindowWin32::dialogColorPicker( F32 *r, F32 *g, F32 *b )
-{
-	BOOL retval = FALSE;
-
-	static CHOOSECOLOR cc;
-	static COLORREF crCustColors[16];
-	cc.lStructSize = sizeof(CHOOSECOLOR);
-	cc.hwndOwner = mWindowHandle;
-	cc.hInstance = NULL;
-	cc.rgbResult = RGB ((*r * 255.f),(*g *255.f),(*b * 255.f));
-	//cc.rgbResult = RGB (0x80,0x80,0x80); 
-	cc.lpCustColors = crCustColors;
-	cc.Flags = CC_RGBINIT | CC_FULLOPEN;
-	cc.lCustData = 0;
-	cc.lpfnHook = NULL;
-	cc.lpTemplateName = NULL;
- 
-	// This call is modal, so pause agent
-	//send_agent_pause();	// this is in newview and we don't want to set up a dependency
-	{
-		retval = ChooseColor(&cc);
-	}
-	//send_agent_resume();	// this is in newview and we don't want to set up a dependency
-
-	*b = ((F32)((cc.rgbResult >> 16) & 0xff)) / 255.f;
-
-	*g = ((F32)((cc.rgbResult >> 8) & 0xff)) / 255.f;
-	
-	*r = ((F32)(cc.rgbResult & 0xff)) / 255.f;
-
-	return (retval);
-}
-
-void *LLWindowWin32::getPlatformWindow()
-{
-	return (void*)mWindowHandle;
-}
-
-void LLWindowWin32::bringToFront()
-{
-	BringWindowToTop(mWindowHandle);
-}
-
-// set (OS) window focus back to the client
-void LLWindowWin32::focusClient()
-{
-	SetFocus ( mWindowHandle );
-}
-
-void LLWindowWin32::allowLanguageTextInput(LLPreeditor *preeditor, BOOL b)
-{
-	if (b == sLanguageTextInputAllowed || !LLWinImm::isAvailable())
-	{
-		return;
-	}
-
-	if (preeditor != mPreeditor && !b)
-	{
-		// This condition may occur with a call to
-		// setEnabled(BOOL) from LLTextEditor or LLLineEditor
-		// when the control is not focused.
-		// We need to silently ignore the case so that
-		// the language input status of the focused control
-		// is not disturbed.
-		return;
-	}
-
-	// Take care of old and new preeditors.
-	if (preeditor != mPreeditor || !b)
-	{
-		if (sLanguageTextInputAllowed)
-		{
-			interruptLanguageTextInput();
-		}
-		mPreeditor = (b ? preeditor : NULL);
-	}
-
-	sLanguageTextInputAllowed = b;
-
-	if ( sLanguageTextInputAllowed )
-	{
-		// Allowing: Restore the previous IME status, so that the user has a feeling that the previous 
-		// text input continues naturally.  Be careful, however, the IME status is meaningful only during the user keeps 
-		// using same Input Locale (aka Keyboard Layout).
-		if (sWinIMEOpened && GetKeyboardLayout(0) == sWinInputLocale)
-		{
-			HIMC himc = LLWinImm::getContext(mWindowHandle);
-			LLWinImm::setOpenStatus(himc, TRUE);
-			LLWinImm::setConversionStatus(himc, sWinIMEConversionMode, sWinIMESentenceMode);
-			LLWinImm::releaseContext(mWindowHandle, himc);
-		}
-	}
-	else
-	{
-		// Disallowing: Turn off the IME so that succeeding key events bypass IME and come to us directly.
-		// However, do it after saving the current IME  status.  We need to restore the status when
-		//   allowing language text input again.
-		sWinInputLocale = GetKeyboardLayout(0);
-		sWinIMEOpened = LLWinImm::isIME(sWinInputLocale);
-		if (sWinIMEOpened)
-		{
-			HIMC himc = LLWinImm::getContext(mWindowHandle);
-			sWinIMEOpened = LLWinImm::getOpenStatus(himc);
-			if (sWinIMEOpened)
-			{
-				LLWinImm::getConversionStatus(himc, &sWinIMEConversionMode, &sWinIMESentenceMode);
-
-				// We need both ImmSetConversionStatus and ImmSetOpenStatus here to surely disable IME's 
-				// keyboard hooking, because Some IME reacts only on the former and some other on the latter...
-				LLWinImm::setConversionStatus(himc, IME_CMODE_NOCONVERSION, sWinIMESentenceMode);
-				LLWinImm::setOpenStatus(himc, FALSE);
-			}
-			LLWinImm::releaseContext(mWindowHandle, himc);
- 		}
-	}
-}
-
-void LLWindowWin32::fillCandidateForm(const LLCoordGL& caret, const LLRect& bounds, 
-		CANDIDATEFORM *form)
-{
-	LLCoordWindow caret_coord, top_left, bottom_right;
-	convertCoords(caret, &caret_coord);
-	convertCoords(LLCoordGL(bounds.mLeft, bounds.mTop), &top_left);
-	convertCoords(LLCoordGL(bounds.mRight, bounds.mBottom), &bottom_right);
-
-	memset(form, 0, sizeof(CANDIDATEFORM));
-	form->dwStyle = CFS_EXCLUDE;
-	form->ptCurrentPos.x = caret_coord.mX;
-	form->ptCurrentPos.y = caret_coord.mY;
-	form->rcArea.left   = top_left.mX;
-	form->rcArea.top    = top_left.mY;
-	form->rcArea.right  = bottom_right.mX;
-	form->rcArea.bottom = bottom_right.mY;
-}
-
-
-// Put the IME window at the right place (near current text input).   Point coordinates should be the top of the current text line.
-void LLWindowWin32::setLanguageTextInput( const LLCoordGL & position )
-{
-	if (sLanguageTextInputAllowed && LLWinImm::isAvailable())
-	{
-		HIMC himc = LLWinImm::getContext(mWindowHandle);
-
-		LLCoordWindow win_pos;
-		convertCoords( position, &win_pos );
-
-		if ( win_pos.mX >= 0 && win_pos.mY >= 0 && 
-			(win_pos.mX != sWinIMEWindowPosition.mX) || (win_pos.mY != sWinIMEWindowPosition.mY) )
-		{
-			COMPOSITIONFORM ime_form;
-			memset( &ime_form, 0, sizeof(ime_form) );
-			ime_form.dwStyle = CFS_POINT;
-			ime_form.ptCurrentPos.x = win_pos.mX;
-			ime_form.ptCurrentPos.y = win_pos.mY;
-
-			LLWinImm::setCompositionWindow( himc, &ime_form );
-
-			sWinIMEWindowPosition.set( win_pos.mX, win_pos.mY );
-		}
-
-		LLWinImm::releaseContext(mWindowHandle, himc);
-	}
-}
-
-
-void LLWindowWin32::fillCharPosition(const LLCoordGL& caret, const LLRect& bounds, const LLRect& control,
-		IMECHARPOSITION *char_position)
-{
-	LLCoordScreen caret_coord, top_left, bottom_right;
-	convertCoords(caret, &caret_coord);
-	convertCoords(LLCoordGL(bounds.mLeft, bounds.mTop), &top_left);
-	convertCoords(LLCoordGL(bounds.mRight, bounds.mBottom), &bottom_right);
-
-	char_position->pt.x = caret_coord.mX;
-	char_position->pt.y = top_left.mY;	// Windows wants the coordinate of upper left corner of a character...
-	char_position->cLineHeight = bottom_right.mY - top_left.mY;
-	char_position->rcDocument.left   = top_left.mX;
-	char_position->rcDocument.top    = top_left.mY;
-	char_position->rcDocument.right  = bottom_right.mX;
-	char_position->rcDocument.bottom = bottom_right.mY;
-}
-
-void LLWindowWin32::fillCompositionLogfont(LOGFONT *logfont)
-{
-	// Our font is a list of FreeType recognized font files that may
-	// not have a corresponding ones in Windows' fonts.  Hence, we
-	// can't simply tell Windows which font we are using.  We will
-	// notify a _standard_ font for a current input locale instead.
-	// We use a hard-coded knowledge about the Windows' standard
-	// configuration to do so...
-
-	memset(logfont, 0, sizeof(LOGFONT));
-
-	const WORD lang_id = LOWORD(GetKeyboardLayout(0));
-	switch (PRIMARYLANGID(lang_id))
-	{
-	case LANG_CHINESE:
-		// We need to identify one of two Chinese fonts.
-		switch (SUBLANGID(lang_id))
-		{
-		case SUBLANG_CHINESE_SIMPLIFIED:
-		case SUBLANG_CHINESE_SINGAPORE:
-			logfont->lfCharSet = GB2312_CHARSET;
-			lstrcpy(logfont->lfFaceName, TEXT("SimHei"));
-			break;
-		case SUBLANG_CHINESE_TRADITIONAL:
-		case SUBLANG_CHINESE_HONGKONG:
-		case SUBLANG_CHINESE_MACAU:
-		default:
-			logfont->lfCharSet = CHINESEBIG5_CHARSET;
-			lstrcpy(logfont->lfFaceName, TEXT("MingLiU"));
-			break;			
-		}
-		break;
-	case LANG_JAPANESE:
-		logfont->lfCharSet = SHIFTJIS_CHARSET;
-		lstrcpy(logfont->lfFaceName, TEXT("MS Gothic"));
-		break;		
-	case LANG_KOREAN:
-		logfont->lfCharSet = HANGUL_CHARSET;
-		lstrcpy(logfont->lfFaceName, TEXT("Gulim"));
-		break;
-	default:
-		logfont->lfCharSet = ANSI_CHARSET;
-		lstrcpy(logfont->lfFaceName, TEXT("Tahoma"));
-		break;
-	}
-							
-	logfont->lfHeight = mPreeditor->getPreeditFontSize();
-	logfont->lfWeight = FW_NORMAL;
-}	
-
-U32 LLWindowWin32::fillReconvertString(const LLWString &text,
-	S32 focus, S32 focus_length, RECONVERTSTRING *reconvert_string)
-{
-	const llutf16string text_utf16 = wstring_to_utf16str(text);
-	const DWORD required_size = sizeof(RECONVERTSTRING) + (text_utf16.length() + 1) * sizeof(WCHAR);
-	if (reconvert_string && reconvert_string->dwSize >= required_size)
-	{
-		const DWORD focus_utf16_at = wstring_utf16_length(text, 0, focus);
-		const DWORD focus_utf16_length = wstring_utf16_length(text, focus, focus_length);
-
-		reconvert_string->dwVersion = 0;
-		reconvert_string->dwStrLen = text_utf16.length();
-		reconvert_string->dwStrOffset = sizeof(RECONVERTSTRING);
-		reconvert_string->dwCompStrLen = focus_utf16_length;
-		reconvert_string->dwCompStrOffset = focus_utf16_at * sizeof(WCHAR);
-		reconvert_string->dwTargetStrLen = 0;
-		reconvert_string->dwTargetStrOffset = focus_utf16_at * sizeof(WCHAR);
-
-		const LPWSTR text = (LPWSTR)((BYTE *)reconvert_string + sizeof(RECONVERTSTRING));
-		memcpy(text, text_utf16.c_str(), (text_utf16.length() + 1) * sizeof(WCHAR));
-	}
-	return required_size;
-}
-
-void LLWindowWin32::updateLanguageTextInputArea()
-{
-	if (!mPreeditor || !LLWinImm::isAvailable())
-	{
-		return;
-	}
-
-	LLCoordGL caret_coord;
-	LLRect preedit_bounds;
-	if (mPreeditor->getPreeditLocation(-1, &caret_coord, &preedit_bounds, NULL))
-	{
-		mLanguageTextInputPointGL = caret_coord;
-		mLanguageTextInputAreaGL = preedit_bounds;
-
-		CANDIDATEFORM candidate_form;
-		fillCandidateForm(caret_coord, preedit_bounds, &candidate_form);
-
-		HIMC himc = LLWinImm::getContext(mWindowHandle);
-		// Win32 document says there may be up to 4 candidate windows.
-		// This magic number 4 appears only in the document, and
-		// there are no constant/macro for the value...
-		for (int i = 3; i >= 0; --i)
-		{
-			candidate_form.dwIndex = i;
-			LLWinImm::setCandidateWindow(himc, &candidate_form);
-		}
-		LLWinImm::releaseContext(mWindowHandle, himc);
-	}
-}
-
-void LLWindowWin32::interruptLanguageTextInput()
-{
-	if (mPreeditor)
-	{
-		if (LLWinImm::isAvailable())
-		{
-			HIMC himc = LLWinImm::getContext(mWindowHandle);
-			LLWinImm::notifyIME(himc, NI_COMPOSITIONSTR, CPS_COMPLETE, 0);
-			LLWinImm::releaseContext(mWindowHandle, himc);
-		}
-
-		// Win32 document says there will be no composition string
-		// after NI_COMPOSITIONSTR returns.  The following call to
-		// resetPreedit should be a NOP unless IME goes mad...
-		mPreeditor->resetPreedit();
-	}
-}
-
-void LLWindowWin32::handleStartCompositionMessage()
-{
-	// Let IME know the font to use in feedback UI.
-	LOGFONT logfont;
-	fillCompositionLogfont(&logfont);
-	HIMC himc = LLWinImm::getContext(mWindowHandle);
-	LLWinImm::setCompositionFont(himc, &logfont);
-	LLWinImm::releaseContext(mWindowHandle, himc);
-}
-
-// Handle WM_IME_COMPOSITION message.
-
-void LLWindowWin32::handleCompositionMessage(const U32 indexes)
-{
-	BOOL needs_update = FALSE;
-	LLWString result_string;
-	LLWString preedit_string;
-	S32 preedit_string_utf16_length = 0;
-	LLPreeditor::segment_lengths_t preedit_segment_lengths;
-	LLPreeditor::standouts_t preedit_standouts;
-
-	// Step I: Receive details of preedits from IME.
-
-	HIMC himc = LLWinImm::getContext(mWindowHandle);
-
-	if (indexes & GCS_RESULTSTR)
-	{
-		LONG size = LLWinImm::getCompositionString(himc, GCS_RESULTSTR, NULL, 0);
-		if (size >= 0)
-		{
-			const LPWSTR data = new WCHAR[size / sizeof(WCHAR) + 1];
-			size = LLWinImm::getCompositionString(himc, GCS_RESULTSTR, data, size);
-			if (size > 0)
-			{
-				result_string = utf16str_to_wstring(llutf16string(data, size / sizeof(WCHAR)));
-			}
-			delete[] data;
-			needs_update = TRUE;
-		}
-	}
-	
-	if (indexes & GCS_COMPSTR)
-	{
-		LONG size = LLWinImm::getCompositionString(himc, GCS_COMPSTR, NULL, 0);
-		if (size >= 0)
-		{
-			const LPWSTR data = new WCHAR[size / sizeof(WCHAR) + 1];
-			size = LLWinImm::getCompositionString(himc, GCS_COMPSTR, data, size);
-			if (size > 0)
-			{
-				preedit_string_utf16_length = size / sizeof(WCHAR);
-				preedit_string = utf16str_to_wstring(llutf16string(data, size / sizeof(WCHAR)));
-			}
-			delete[] data;
-			needs_update = TRUE;
-		}
-	}
-
-	if ((indexes & GCS_COMPCLAUSE) && preedit_string.length() > 0)
-	{
-		LONG size = LLWinImm::getCompositionString(himc, GCS_COMPCLAUSE, NULL, 0);
-		if (size > 0)
-		{
-			const LPDWORD data = new DWORD[size / sizeof(DWORD)];
-			size = LLWinImm::getCompositionString(himc, GCS_COMPCLAUSE, data, size);
-			if (size >= sizeof(DWORD) * 2
-				&& data[0] == 0 && data[size / sizeof(DWORD) - 1] == preedit_string_utf16_length)
-			{
-				preedit_segment_lengths.resize(size / sizeof(DWORD) - 1);
-				S32 offset = 0;
-				for (U32 i = 0; i < preedit_segment_lengths.size(); i++)
-				{
-					const S32 length = wstring_wstring_length_from_utf16_length(preedit_string, offset, data[i + 1] - data[i]);
-					preedit_segment_lengths[i] = length;
-					offset += length;
-				}
-			}
-			delete[] data;
-		}
-	}
-
-	if ((indexes & GCS_COMPATTR) && preedit_segment_lengths.size() > 1)
-	{
-		LONG size = LLWinImm::getCompositionString(himc, GCS_COMPATTR, NULL, 0);
-		if (size > 0)
-		{
-			const LPBYTE data = new BYTE[size / sizeof(BYTE)];
-			size = LLWinImm::getCompositionString(himc, GCS_COMPATTR, data, size);
-			if (size == preedit_string_utf16_length)
-			{
-				preedit_standouts.assign(preedit_segment_lengths.size(), FALSE);
-				S32 offset = 0;
-				for (U32 i = 0; i < preedit_segment_lengths.size(); i++)
-				{
-					if (ATTR_TARGET_CONVERTED == data[offset] || ATTR_TARGET_NOTCONVERTED == data[offset])
-					{
-						preedit_standouts[i] = TRUE;
-					}
-					offset += wstring_utf16_length(preedit_string, offset, preedit_segment_lengths[i]);
-				}
-			}
-			delete[] data;
-		}
-	}
-
-	S32 caret_position = preedit_string.length();
-	if (indexes & GCS_CURSORPOS)
-	{
-		const S32 caret_position_utf16 = LLWinImm::getCompositionString(himc, GCS_CURSORPOS, NULL, 0);
-		if (caret_position_utf16 >= 0 && caret_position <= preedit_string_utf16_length)
-		{
-			caret_position = wstring_wstring_length_from_utf16_length(preedit_string, 0, caret_position_utf16);
-		}
-	}
-
-	if (indexes == 0)
-	{
-		// I'm not sure this condition really happens, but
-		// Windows SDK document says it is an indication
-		// of "reset everything."
-		needs_update = TRUE;
-	}
-
-	LLWinImm::releaseContext(mWindowHandle, himc);
-
-	// Step II: Update the active preeditor.
-
-	if (needs_update)
-	{
-		mPreeditor->resetPreedit();
-
-		if (result_string.length() > 0)
-		{
-			for (LLWString::const_iterator i = result_string.begin(); i != result_string.end(); i++)
-			{
-				mPreeditor->handleUnicodeCharHere(*i);
-			}
-		}
-
-		if (preedit_string.length() == 0)
- 		{
-			preedit_segment_lengths.clear();
-			preedit_standouts.clear();
-		}
-		else
-		{
-			if (preedit_segment_lengths.size() == 0)
-			{
-				preedit_segment_lengths.assign(1, preedit_string.length());
-			}
-			if (preedit_standouts.size() == 0)
-			{
-				preedit_standouts.assign(preedit_segment_lengths.size(), FALSE);
-			}
-		}
-		mPreeditor->updatePreedit(preedit_string, preedit_segment_lengths, preedit_standouts, caret_position);
-
-		// Some IME doesn't query char position after WM_IME_COMPOSITION,
-		// so we need to update them actively.
-		updateLanguageTextInputArea();
-	}
-}
-
-// Given a text and a focus range, find_context finds and returns a
-// surrounding context of the focused subtext.  A variable pointed
-// to by offset receives the offset in llwchars of the beginning of
-// the returned context string in the given wtext.
-
-static LLWString find_context(const LLWString & wtext, S32 focus, S32 focus_length, S32 *offset)
-{
-	static const S32 CONTEXT_EXCESS = 30;	// This value is by experiences.
-
-	const S32 e = llmin((S32) wtext.length(), focus + focus_length + CONTEXT_EXCESS);
-	S32 end = focus + focus_length;
-	while (end < e && '\n' != wtext[end])
-	{
-		end++;
-	}
-
-	const S32 s = llmax(0, focus - CONTEXT_EXCESS);
-	S32 start = focus;
-	while (start > s && '\n' != wtext[start - 1])
-	{
-		--start;
-	}
-
-	*offset = start;
-	return wtext.substr(start, end - start);
-}
-
-// Handle WM_IME_REQUEST message.
-// If it handled the message, returns TRUE.  Otherwise, FALSE.
-// When it handled the message, the value to be returned from
-// the Window Procedure is set to *result.
-
-BOOL LLWindowWin32::handleImeRequests(U32 request, U32 param, LRESULT *result)
-{
-	if ( mPreeditor )
-	{
-		switch (request)
-		{
-			case IMR_CANDIDATEWINDOW:		// http://msdn2.microsoft.com/en-us/library/ms776080.aspx
-			{
-				LLCoordGL caret_coord;
-				LLRect preedit_bounds;
-				mPreeditor->getPreeditLocation(-1, &caret_coord, &preedit_bounds, NULL);
-				
-				CANDIDATEFORM *const form = (CANDIDATEFORM *)param;
-				DWORD const dwIndex = form->dwIndex;
-				fillCandidateForm(caret_coord, preedit_bounds, form);
-				form->dwIndex = dwIndex;
-
-				*result = 1;
-				return TRUE;
-			}
-			case IMR_QUERYCHARPOSITION:
-			{
-				IMECHARPOSITION *const char_position = (IMECHARPOSITION *)param;
-
-				// char_position->dwCharPos counts in number of
-				// WCHARs, i.e., UTF-16 encoding units, so we can't simply pass the
-				// number to getPreeditLocation.  
-
-				const LLWString & wtext = mPreeditor->getPreeditString();
-				S32 preedit, preedit_length;
-				mPreeditor->getPreeditRange(&preedit, &preedit_length);
-				LLCoordGL caret_coord;
-				LLRect preedit_bounds, text_control;
-				const S32 position = wstring_wstring_length_from_utf16_length(wtext, preedit, char_position->dwCharPos);
-
-				if (!mPreeditor->getPreeditLocation(position, &caret_coord, &preedit_bounds, &text_control))
-				{
-					LL_WARNS("Window") << "*** IMR_QUERYCHARPOSITON called but getPreeditLocation failed." << LL_ENDL;
-					return FALSE;
-				}
-				fillCharPosition(caret_coord, preedit_bounds, text_control, char_position);
-
-				*result = 1;
-				return TRUE;
-			}
-			case IMR_COMPOSITIONFONT:
-			{
-				fillCompositionLogfont((LOGFONT *)param);
-
-				*result = 1;
-				return TRUE;
-			}
-			case IMR_RECONVERTSTRING:
-			{
-				mPreeditor->resetPreedit();
-				const LLWString & wtext = mPreeditor->getPreeditString();
-				S32 select, select_length;
-				mPreeditor->getSelectionRange(&select, &select_length);
-
-				S32 context_offset;
-				const LLWString context = find_context(wtext, select, select_length, &context_offset);
-
-				RECONVERTSTRING * const reconvert_string = (RECONVERTSTRING *)param;
-				const U32 size = fillReconvertString(context, select - context_offset, select_length, reconvert_string);
-				if (reconvert_string)
-				{
-					if (select_length == 0)
-					{
-						// Let the IME to decide the reconversion range, and
-						// adjust the reconvert_string structure accordingly.
-						HIMC himc = LLWinImm::getContext(mWindowHandle);
-						const BOOL adjusted = LLWinImm::setCompositionString(himc,
-									SCS_QUERYRECONVERTSTRING, reconvert_string, size, NULL, 0);
-						LLWinImm::releaseContext(mWindowHandle, himc);
-						if (adjusted)
-						{
-							const llutf16string & text_utf16 = wstring_to_utf16str(context);
-							const S32 new_preedit_start = reconvert_string->dwCompStrOffset / sizeof(WCHAR);
-							const S32 new_preedit_end = new_preedit_start + reconvert_string->dwCompStrLen;
-							select = utf16str_wstring_length(text_utf16, new_preedit_start);
-							select_length = utf16str_wstring_length(text_utf16, new_preedit_end) - select;
-							select += context_offset;
-						}
-					}
-					mPreeditor->markAsPreedit(select, select_length);
-				}
-
-				*result = size;
-				return TRUE;
-			}
-			case IMR_CONFIRMRECONVERTSTRING:
-			{
-				*result = FALSE;
-				return TRUE;
-			}
-			case IMR_DOCUMENTFEED:
-			{
-				const LLWString & wtext = mPreeditor->getPreeditString();
-				S32 preedit, preedit_length;
-				mPreeditor->getPreeditRange(&preedit, &preedit_length);
-				
-				S32 context_offset;
-				LLWString context = find_context(wtext, preedit, preedit_length, &context_offset);
-				preedit -= context_offset;
-				if (preedit_length)
-				{
-					// IMR_DOCUMENTFEED may be called when we have an active preedit.
-					// We should pass the context string *excluding* the preedit string.
-					// Otherwise, some IME are confused.
-					context.erase(preedit, preedit_length);
-				}
-				
-				RECONVERTSTRING *reconvert_string = (RECONVERTSTRING *)param;
-				*result = fillReconvertString(context, preedit, 0, reconvert_string);
-				return TRUE;
-			}
-			default:
-				return FALSE;
-		}
-	}
-
-	return FALSE;
-}
-
-//static
-std::vector<std::string> LLWindowWin32::getDynamicFallbackFontList()
-{
-	// Fonts previously in getFontListSans() have moved to fonts.xml.
-	return std::vector<std::string>();
-}
-
-
-#endif // LL_WINDOWS
+
+				if ( window_imp->completeDropRequest( gl_coord, mask, (char*)url ) )
+				{
+					return 0;
+				};
+			}
+			break;
+		}
+
+	window_imp->mCallbacks->handlePauseWatchdog(window_imp);	
+	}
+
+
+	// pass unhandled messages down to Windows
+	return DefWindowProc(h_wnd, u_msg, w_param, l_param);
+}
+
+BOOL LLWindowWin32::convertCoords(LLCoordGL from, LLCoordWindow *to)
+{
+	S32		client_height;
+	RECT	client_rect;
+	LLCoordWindow window_position;
+
+	if (!mWindowHandle ||
+		!GetClientRect(mWindowHandle, &client_rect) ||
+		NULL == to)
+	{
+		return FALSE;
+	}
+
+	to->mX = from.mX;
+	client_height = client_rect.bottom - client_rect.top;
+	to->mY = client_height - from.mY - 1;
+
+	return TRUE;
+}
+
+BOOL LLWindowWin32::convertCoords(LLCoordWindow from, LLCoordGL* to)
+{
+	S32		client_height;
+	RECT	client_rect;
+
+	if (!mWindowHandle ||
+		!GetClientRect(mWindowHandle, &client_rect) ||
+		NULL == to)
+	{
+		return FALSE;
+	}
+
+	to->mX = from.mX;
+	client_height = client_rect.bottom - client_rect.top;
+	to->mY = client_height - from.mY - 1;
+
+	return TRUE;
+}
+
+BOOL LLWindowWin32::convertCoords(LLCoordScreen from, LLCoordWindow* to)
+{	
+	POINT mouse_point;
+
+	mouse_point.x = from.mX;
+	mouse_point.y = from.mY;
+	BOOL result = ScreenToClient(mWindowHandle, &mouse_point);
+
+	if (result)
+	{
+		to->mX = mouse_point.x;
+		to->mY = mouse_point.y;
+	}
+
+	return result;
+}
+
+BOOL LLWindowWin32::convertCoords(LLCoordWindow from, LLCoordScreen *to)
+{
+	POINT mouse_point;
+
+	mouse_point.x = from.mX;
+	mouse_point.y = from.mY;
+	BOOL result = ClientToScreen(mWindowHandle, &mouse_point);
+
+	if (result)
+	{
+		to->mX = mouse_point.x;
+		to->mY = mouse_point.y;
+	}
+
+	return result;
+}
+
+BOOL LLWindowWin32::convertCoords(LLCoordScreen from, LLCoordGL *to)
+{
+	LLCoordWindow window_coord;
+
+	if (!mWindowHandle || (NULL == to))
+	{
+		return FALSE;
+	}
+
+	convertCoords(from, &window_coord);
+	convertCoords(window_coord, to);
+	return TRUE;
+}
+
+BOOL LLWindowWin32::convertCoords(LLCoordGL from, LLCoordScreen *to)
+{
+	LLCoordWindow window_coord;
+
+	if (!mWindowHandle || (NULL == to))
+	{
+		return FALSE;
+	}
+
+	convertCoords(from, &window_coord);
+	convertCoords(window_coord, to);
+	return TRUE;
+}
+
+
+BOOL LLWindowWin32::isClipboardTextAvailable()
+{
+	return IsClipboardFormatAvailable(CF_UNICODETEXT);
+}
+
+
+BOOL LLWindowWin32::pasteTextFromClipboard(LLWString &dst)
+{
+	BOOL success = FALSE;
+
+	if (IsClipboardFormatAvailable(CF_UNICODETEXT))
+	{
+		if (OpenClipboard(mWindowHandle))
+		{
+			HGLOBAL h_data = GetClipboardData(CF_UNICODETEXT);
+			if (h_data)
+			{
+				WCHAR *utf16str = (WCHAR*) GlobalLock(h_data);
+				if (utf16str)
+				{
+					dst = utf16str_to_wstring(utf16str);
+					LLWStringUtil::removeCRLF(dst);
+					GlobalUnlock(h_data);
+					success = TRUE;
+				}
+			}
+			CloseClipboard();
+		}
+	}
+
+	return success;
+}
+
+
+BOOL LLWindowWin32::copyTextToClipboard(const LLWString& wstr)
+{
+	BOOL success = FALSE;
+
+	if (OpenClipboard(mWindowHandle))
+	{
+		EmptyClipboard();
+
+		// Provide a copy of the data in Unicode format.
+		LLWString sanitized_string(wstr);
+		LLWStringUtil::addCRLF(sanitized_string);
+		llutf16string out_utf16 = wstring_to_utf16str(sanitized_string);
+		const size_t size_utf16 = (out_utf16.length() + 1) * sizeof(WCHAR);
+
+		// Memory is allocated and then ownership of it is transfered to the system.
+		HGLOBAL hglobal_copy_utf16 = GlobalAlloc(GMEM_MOVEABLE, size_utf16); 
+		if (hglobal_copy_utf16)
+		{
+			WCHAR* copy_utf16 = (WCHAR*) GlobalLock(hglobal_copy_utf16);
+			if (copy_utf16)
+			{
+				memcpy(copy_utf16, out_utf16.c_str(), size_utf16);	/* Flawfinder: ignore */
+				GlobalUnlock(hglobal_copy_utf16);
+
+				if (SetClipboardData(CF_UNICODETEXT, hglobal_copy_utf16))
+				{
+					success = TRUE;
+				}
+			}
+		}
+
+		CloseClipboard();
+	}
+
+	return success;
+}
+
+// Constrains the mouse to the window.
+void LLWindowWin32::setMouseClipping( BOOL b )
+{
+	if( b != mIsMouseClipping )
+	{
+		BOOL success = FALSE;
+
+		if( b )
+		{
+			GetClipCursor( &mOldMouseClip );
+
+			RECT client_rect_in_screen_space;
+			if( getClientRectInScreenSpace( &client_rect_in_screen_space ) )
+			{
+				success = ClipCursor( &client_rect_in_screen_space );
+			}
+		}
+		else
+		{
+			// Must restore the old mouse clip, which may be set by another window.
+			success = ClipCursor( &mOldMouseClip );
+			SetRect( &mOldMouseClip, 0, 0, 0, 0 );
+		}
+
+		if( success )
+		{
+			mIsMouseClipping = b;
+		}
+	}
+}
+
+BOOL LLWindowWin32::getClientRectInScreenSpace( RECT* rectp )
+{
+	BOOL success = FALSE;
+
+	RECT client_rect;
+	if( mWindowHandle && GetClientRect(mWindowHandle, &client_rect) )
+	{
+		POINT top_left;
+		top_left.x = client_rect.left;
+		top_left.y = client_rect.top;
+		ClientToScreen(mWindowHandle, &top_left); 
+
+		POINT bottom_right;
+		bottom_right.x = client_rect.right;
+		bottom_right.y = client_rect.bottom;
+		ClientToScreen(mWindowHandle, &bottom_right); 
+
+		SetRect( rectp,
+			top_left.x,
+			top_left.y,
+			bottom_right.x,
+			bottom_right.y );
+
+		success = TRUE;
+	}
+
+	return success;
+}
+
+void LLWindowWin32::flashIcon(F32 seconds)
+{
+	FLASHWINFO flash_info;
+
+	flash_info.cbSize = sizeof(FLASHWINFO);
+	flash_info.hwnd = mWindowHandle;
+	flash_info.dwFlags = FLASHW_TRAY;
+	flash_info.uCount = UINT(seconds / ICON_FLASH_TIME);
+	flash_info.dwTimeout = DWORD(1000.f * ICON_FLASH_TIME); // milliseconds
+	FlashWindowEx(&flash_info);
+}
+
+F32 LLWindowWin32::getGamma()
+{
+	return mCurrentGamma;
+}
+
+BOOL LLWindowWin32::restoreGamma()
+{
+	return SetDeviceGammaRamp(mhDC, mPrevGammaRamp);
+}
+
+BOOL LLWindowWin32::setGamma(const F32 gamma)
+{
+	mCurrentGamma = gamma;
+
+	LL_DEBUGS("Window") << "Setting gamma to " << gamma << LL_ENDL;
+
+	for ( int i = 0; i < 256; ++i )
+	{
+		int mult = 256 - ( int ) ( ( gamma - 1.0f ) * 128.0f );
+
+		int value = mult * i;
+
+		if ( value > 0xffff )
+			value = 0xffff;
+
+		mCurrentGammaRamp [ 0 * 256 + i ] = 
+			mCurrentGammaRamp [ 1 * 256 + i ] = 
+				mCurrentGammaRamp [ 2 * 256 + i ] = ( WORD )value;
+	};
+
+	return SetDeviceGammaRamp ( mhDC, mCurrentGammaRamp );
+}
+
+void LLWindowWin32::setFSAASamples(const U32 fsaa_samples)
+{
+	mFSAASamples = fsaa_samples;
+}
+
+U32 LLWindowWin32::getFSAASamples()
+{
+	return mFSAASamples;
+}
+
+LLWindow::LLWindowResolution* LLWindowWin32::getSupportedResolutions(S32 &num_resolutions)
+{
+	if (!mSupportedResolutions)
+	{
+		mSupportedResolutions = new LLWindowResolution[MAX_NUM_RESOLUTIONS];
+		DEVMODE dev_mode;
+
+		mNumSupportedResolutions = 0;
+		for (S32 mode_num = 0; mNumSupportedResolutions < MAX_NUM_RESOLUTIONS; mode_num++)
+		{
+			if (!EnumDisplaySettings(NULL, mode_num, &dev_mode))
+			{
+				break;
+			}
+
+			if (dev_mode.dmBitsPerPel == BITS_PER_PIXEL &&
+				dev_mode.dmPelsWidth >= 800 &&
+				dev_mode.dmPelsHeight >= 600)
+			{
+				BOOL resolution_exists = FALSE;
+				for(S32 i = 0; i < mNumSupportedResolutions; i++)
+				{
+					if (mSupportedResolutions[i].mWidth == dev_mode.dmPelsWidth &&
+						mSupportedResolutions[i].mHeight == dev_mode.dmPelsHeight)
+					{
+						resolution_exists = TRUE;
+					}
+				}
+				if (!resolution_exists)
+				{
+					mSupportedResolutions[mNumSupportedResolutions].mWidth = dev_mode.dmPelsWidth;
+					mSupportedResolutions[mNumSupportedResolutions].mHeight = dev_mode.dmPelsHeight;
+					mNumSupportedResolutions++;
+				}
+			}
+		}
+	}
+
+	num_resolutions = mNumSupportedResolutions;
+	return mSupportedResolutions;
+}
+
+
+F32 LLWindowWin32::getNativeAspectRatio()
+{
+	if (mOverrideAspectRatio > 0.f)
+	{
+		return mOverrideAspectRatio;
+	}
+	else if (mNativeAspectRatio > 0.f)
+	{
+		// we grabbed this value at startup, based on the user's desktop settings
+		return mNativeAspectRatio;
+	}
+	// RN: this hack presumes that the largest supported resolution is monitor-limited
+	// and that pixels in that mode are square, therefore defining the native aspect ratio
+	// of the monitor...this seems to work to a close approximation for most CRTs/LCDs
+	S32 num_resolutions;
+	LLWindowResolution* resolutions = getSupportedResolutions(num_resolutions);
+
+	return ((F32)resolutions[num_resolutions - 1].mWidth / (F32)resolutions[num_resolutions - 1].mHeight);
+}
+
+F32 LLWindowWin32::getPixelAspectRatio()
+{
+	F32 pixel_aspect = 1.f;
+	if (getFullscreen())
+	{
+		LLCoordScreen screen_size;
+		getSize(&screen_size);
+		pixel_aspect = getNativeAspectRatio() * (F32)screen_size.mY / (F32)screen_size.mX;
+	}
+
+	return pixel_aspect;
+}
+
+// Change display resolution.  Returns true if successful.
+// protected
+BOOL LLWindowWin32::setDisplayResolution(S32 width, S32 height, S32 bits, S32 refresh)
+{
+	DEVMODE dev_mode;
+	dev_mode.dmSize = sizeof(dev_mode);
+	BOOL success = FALSE;
+
+	// Don't change anything if we don't have to
+	if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode))
+	{
+		if (dev_mode.dmPelsWidth        == width &&
+			dev_mode.dmPelsHeight       == height &&
+			dev_mode.dmBitsPerPel       == bits &&
+			dev_mode.dmDisplayFrequency == refresh )
+		{
+			// ...display mode identical, do nothing
+			return TRUE;
+		}
+	}
+
+	memset(&dev_mode, 0, sizeof(dev_mode));
+	dev_mode.dmSize = sizeof(dev_mode);
+	dev_mode.dmPelsWidth        = width;
+	dev_mode.dmPelsHeight       = height;
+	dev_mode.dmBitsPerPel       = bits;
+	dev_mode.dmDisplayFrequency = refresh;
+	dev_mode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT | DM_DISPLAYFREQUENCY;
+
+	// CDS_FULLSCREEN indicates that this is a temporary change to the device mode.
+	LONG cds_result = ChangeDisplaySettings(&dev_mode, CDS_FULLSCREEN);
+
+	success = (DISP_CHANGE_SUCCESSFUL == cds_result);
+
+	if (!success)
+	{
+		LL_WARNS("Window") << "setDisplayResolution failed, "
+			<< width << "x" << height << "x" << bits << " @ " << refresh << LL_ENDL;
+	}
+
+	return success;
+}
+
+// protected
+BOOL LLWindowWin32::setFullscreenResolution()
+{
+	if (mFullscreen)
+	{
+		return setDisplayResolution( mFullscreenWidth, mFullscreenHeight, mFullscreenBits, mFullscreenRefresh);
+	}
+	else
+	{
+		return FALSE;
+	}
+}
+
+// protected
+BOOL LLWindowWin32::resetDisplayResolution()
+{
+	LL_DEBUGS("Window") << "resetDisplayResolution START" << LL_ENDL;
+
+	LONG cds_result = ChangeDisplaySettings(NULL, 0);
+
+	BOOL success = (DISP_CHANGE_SUCCESSFUL == cds_result);
+
+	if (!success)
+	{
+		LL_WARNS("Window") << "resetDisplayResolution failed" << LL_ENDL;
+	}
+
+	LL_DEBUGS("Window") << "resetDisplayResolution END" << LL_ENDL;
+
+	return success;
+}
+
+void LLWindowWin32::swapBuffers()
+{
+	SwapBuffers(mhDC);
+}
+
+
+//
+// LLSplashScreenImp
+//
+LLSplashScreenWin32::LLSplashScreenWin32()
+:	mWindow(NULL)
+{
+}
+
+LLSplashScreenWin32::~LLSplashScreenWin32()
+{
+}
+
+void LLSplashScreenWin32::showImpl()
+{
+	// This appears to work.  ???
+	HINSTANCE hinst = GetModuleHandle(NULL);
+
+	mWindow = CreateDialog(hinst, 
+		TEXT("SPLASHSCREEN"), 
+		NULL,	// no parent
+		(DLGPROC) LLSplashScreenWin32::windowProc); 
+	ShowWindow(mWindow, SW_SHOW);
+}
+
+
+void LLSplashScreenWin32::updateImpl(const std::string& mesg)
+{
+	if (!mWindow) return;
+
+	WCHAR w_mesg[1024];
+	mbstowcs(w_mesg, mesg.c_str(), 1024);
+
+	SendDlgItemMessage(mWindow,
+		666,		// HACK: text id
+		WM_SETTEXT,
+		FALSE,
+		(LPARAM)w_mesg);
+}
+
+
+void LLSplashScreenWin32::hideImpl()
+{
+	if (mWindow)
+	{
+		DestroyWindow(mWindow);
+		mWindow = NULL; 
+	}
+}
+
+
+// static
+LRESULT CALLBACK LLSplashScreenWin32::windowProc(HWND h_wnd, UINT u_msg,
+											WPARAM w_param, LPARAM l_param)
+{
+	// Just give it to windows
+	return DefWindowProc(h_wnd, u_msg, w_param, l_param);
+}
+
+//
+// Helper Funcs
+//
+
+S32 OSMessageBoxWin32(const std::string& text, const std::string& caption, U32 type)
+{
+	UINT uType;
+
+	switch(type)
+	{
+	case OSMB_OK:
+		uType = MB_OK;
+		break;
+	case OSMB_OKCANCEL:
+		uType = MB_OKCANCEL;
+		break;
+	case OSMB_YESNO:
+		uType = MB_YESNO;
+		break;
+	default:
+		uType = MB_OK;
+		break;
+	}
+
+	// HACK! Doesn't properly handle wide strings!
+	int retval_win = MessageBoxA(NULL, text.c_str(), caption.c_str(), uType);
+	S32 retval;
+
+	switch(retval_win)
+	{
+	case IDYES:
+		retval = OSBTN_YES;
+		break;
+	case IDNO:
+		retval = OSBTN_NO;
+		break;
+	case IDOK:
+		retval = OSBTN_OK;
+		break;
+	case IDCANCEL:
+		retval = OSBTN_CANCEL;
+		break;
+	default:
+		retval = OSBTN_CANCEL;
+		break;
+	}
+
+	return retval;
+}
+
+
+void LLWindowWin32::spawnWebBrowser(const std::string& escaped_url )
+{
+	bool found = false;
+	S32 i;
+	for (i = 0; i < gURLProtocolWhitelistCount; i++)
+	{
+		if (escaped_url.find(gURLProtocolWhitelist[i]) == 0)
+		{
+			found = true;
+			break;
+		}
+	}
+
+	if (!found)
+	{
+		LL_WARNS("Window") << "spawn_web_browser() called for url with protocol not on whitelist: " << escaped_url << LL_ENDL;
+		return;
+	}
+
+	LL_INFOS("Window") << "Opening URL " << escaped_url << LL_ENDL;
+
+	// replaced ShellExecute code with ShellExecuteEx since ShellExecute doesn't work
+	// reliablly on Vista.
+
+	// this is madness.. no, this is..
+	LLWString url_wstring = utf8str_to_wstring( escaped_url );
+	llutf16string url_utf16 = wstring_to_utf16str( url_wstring );
+
+	// let the OS decide what to use to open the URL
+	SHELLEXECUTEINFO sei = { sizeof( sei ) };
+	sei.fMask = SEE_MASK_FLAG_DDEWAIT;
+	sei.nShow = SW_SHOWNORMAL;
+	sei.lpVerb = L"open";
+	sei.lpFile = url_utf16.c_str();
+	ShellExecuteEx( &sei );
+
+	//// TODO: LEAVING OLD CODE HERE SO I DON'T BONE OTHER MERGES
+	//// DELETE THIS ONCE THE MERGES ARE DONE
+
+	// Figure out the user's default web browser
+	// HKEY_CLASSES_ROOT\http\shell\open\command
+	/*
+	std::string reg_path_str = gURLProtocolWhitelistHandler[i] + "\\shell\\open\\command";
+	WCHAR reg_path_wstr[256];
+	mbstowcs( reg_path_wstr, reg_path_str.c_str(), LL_ARRAY_SIZE(reg_path_wstr) );
+
+	HKEY key;
+	WCHAR browser_open_wstr[1024];
+	DWORD buffer_length = 1024;
+	RegOpenKeyEx(HKEY_CLASSES_ROOT, reg_path_wstr, 0, KEY_QUERY_VALUE, &key);
+	RegQueryValueEx(key, NULL, NULL, NULL, (LPBYTE)browser_open_wstr, &buffer_length);
+	RegCloseKey(key);
+
+	// Convert to STL string
+	LLWString browser_open_wstring = utf16str_to_wstring(browser_open_wstr);
+
+	if (browser_open_wstring.length() < 2)
+	{
+		LL_WARNS("Window") << "Invalid browser executable in registry " << browser_open_wstring << LL_ENDL;
+		return;
+	}
+
+	// Extract the process that's supposed to be launched
+	LLWString browser_executable;
+	if (browser_open_wstring[0] == '"')
+	{
+		// executable is quoted, find the matching quote
+		size_t quote_pos = browser_open_wstring.find('"', 1);
+		// copy out the string including both quotes
+		browser_executable = browser_open_wstring.substr(0, quote_pos+1);
+	}
+	else
+	{
+		// executable not quoted, find a space
+		size_t space_pos = browser_open_wstring.find(' ', 1);
+		browser_executable = browser_open_wstring.substr(0, space_pos);
+	}
+
+	LL_DEBUGS("Window") << "Browser reg key: " << wstring_to_utf8str(browser_open_wstring) << LL_ENDL;
+	LL_INFOS("Window") << "Browser executable: " << wstring_to_utf8str(browser_executable) << LL_ENDL;
+
+	// Convert URL to wide string for Windows API
+	// Assume URL is UTF8, as can come from scripts
+	LLWString url_wstring = utf8str_to_wstring(escaped_url);
+	llutf16string url_utf16 = wstring_to_utf16str(url_wstring);
+
+	// Convert executable and path to wide string for Windows API
+	llutf16string browser_exec_utf16 = wstring_to_utf16str(browser_executable);
+
+	// ShellExecute returns HINSTANCE for backwards compatiblity.
+	// MS docs say to cast to int and compare to 32.
+	HWND our_window = NULL;
+	LPCWSTR directory_wstr = NULL;
+	int retval = (int) ShellExecute(our_window, 	// Flawfinder: ignore
+									L"open", 
+									browser_exec_utf16.c_str(), 
+									url_utf16.c_str(), 
+									directory_wstr,
+									SW_SHOWNORMAL);
+	if (retval > 32)
+	{
+		LL_DEBUGS("Window") << "load_url success with " << retval << LL_ENDL;
+	}
+	else
+	{
+		LL_INFOS("Window") << "load_url failure with " << retval << LL_ENDL;
+	}
+	*/
+}
+
+
+BOOL LLWindowWin32::dialogColorPicker( F32 *r, F32 *g, F32 *b )
+{
+	BOOL retval = FALSE;
+
+	static CHOOSECOLOR cc;
+	static COLORREF crCustColors[16];
+	cc.lStructSize = sizeof(CHOOSECOLOR);
+	cc.hwndOwner = mWindowHandle;
+	cc.hInstance = NULL;
+	cc.rgbResult = RGB ((*r * 255.f),(*g *255.f),(*b * 255.f));
+	//cc.rgbResult = RGB (0x80,0x80,0x80); 
+	cc.lpCustColors = crCustColors;
+	cc.Flags = CC_RGBINIT | CC_FULLOPEN;
+	cc.lCustData = 0;
+	cc.lpfnHook = NULL;
+	cc.lpTemplateName = NULL;
+ 
+	// This call is modal, so pause agent
+	//send_agent_pause();	// this is in newview and we don't want to set up a dependency
+	{
+		retval = ChooseColor(&cc);
+	}
+	//send_agent_resume();	// this is in newview and we don't want to set up a dependency
+
+	*b = ((F32)((cc.rgbResult >> 16) & 0xff)) / 255.f;
+
+	*g = ((F32)((cc.rgbResult >> 8) & 0xff)) / 255.f;
+	
+	*r = ((F32)(cc.rgbResult & 0xff)) / 255.f;
+
+	return (retval);
+}
+
+void *LLWindowWin32::getPlatformWindow()
+{
+	return (void*)mWindowHandle;
+}
+
+void LLWindowWin32::bringToFront()
+{
+	BringWindowToTop(mWindowHandle);
+}
+
+// set (OS) window focus back to the client
+void LLWindowWin32::focusClient()
+{
+	SetFocus ( mWindowHandle );
+}
+
+void LLWindowWin32::allowLanguageTextInput(LLPreeditor *preeditor, BOOL b)
+{
+	if (b == sLanguageTextInputAllowed || !LLWinImm::isAvailable())
+	{
+		return;
+	}
+
+	if (preeditor != mPreeditor && !b)
+	{
+		// This condition may occur with a call to
+		// setEnabled(BOOL) from LLTextEditor or LLLineEditor
+		// when the control is not focused.
+		// We need to silently ignore the case so that
+		// the language input status of the focused control
+		// is not disturbed.
+		return;
+	}
+
+	// Take care of old and new preeditors.
+	if (preeditor != mPreeditor || !b)
+	{
+		if (sLanguageTextInputAllowed)
+		{
+			interruptLanguageTextInput();
+		}
+		mPreeditor = (b ? preeditor : NULL);
+	}
+
+	sLanguageTextInputAllowed = b;
+
+	if ( sLanguageTextInputAllowed )
+	{
+		// Allowing: Restore the previous IME status, so that the user has a feeling that the previous 
+		// text input continues naturally.  Be careful, however, the IME status is meaningful only during the user keeps 
+		// using same Input Locale (aka Keyboard Layout).
+		if (sWinIMEOpened && GetKeyboardLayout(0) == sWinInputLocale)
+		{
+			HIMC himc = LLWinImm::getContext(mWindowHandle);
+			LLWinImm::setOpenStatus(himc, TRUE);
+			LLWinImm::setConversionStatus(himc, sWinIMEConversionMode, sWinIMESentenceMode);
+			LLWinImm::releaseContext(mWindowHandle, himc);
+		}
+	}
+	else
+	{
+		// Disallowing: Turn off the IME so that succeeding key events bypass IME and come to us directly.
+		// However, do it after saving the current IME  status.  We need to restore the status when
+		//   allowing language text input again.
+		sWinInputLocale = GetKeyboardLayout(0);
+		sWinIMEOpened = LLWinImm::isIME(sWinInputLocale);
+		if (sWinIMEOpened)
+		{
+			HIMC himc = LLWinImm::getContext(mWindowHandle);
+			sWinIMEOpened = LLWinImm::getOpenStatus(himc);
+			if (sWinIMEOpened)
+			{
+				LLWinImm::getConversionStatus(himc, &sWinIMEConversionMode, &sWinIMESentenceMode);
+
+				// We need both ImmSetConversionStatus and ImmSetOpenStatus here to surely disable IME's 
+				// keyboard hooking, because Some IME reacts only on the former and some other on the latter...
+				LLWinImm::setConversionStatus(himc, IME_CMODE_NOCONVERSION, sWinIMESentenceMode);
+				LLWinImm::setOpenStatus(himc, FALSE);
+			}
+			LLWinImm::releaseContext(mWindowHandle, himc);
+ 		}
+	}
+}
+
+void LLWindowWin32::fillCandidateForm(const LLCoordGL& caret, const LLRect& bounds, 
+		CANDIDATEFORM *form)
+{
+	LLCoordWindow caret_coord, top_left, bottom_right;
+	convertCoords(caret, &caret_coord);
+	convertCoords(LLCoordGL(bounds.mLeft, bounds.mTop), &top_left);
+	convertCoords(LLCoordGL(bounds.mRight, bounds.mBottom), &bottom_right);
+
+	memset(form, 0, sizeof(CANDIDATEFORM));
+	form->dwStyle = CFS_EXCLUDE;
+	form->ptCurrentPos.x = caret_coord.mX;
+	form->ptCurrentPos.y = caret_coord.mY;
+	form->rcArea.left   = top_left.mX;
+	form->rcArea.top    = top_left.mY;
+	form->rcArea.right  = bottom_right.mX;
+	form->rcArea.bottom = bottom_right.mY;
+}
+
+
+// Put the IME window at the right place (near current text input).   Point coordinates should be the top of the current text line.
+void LLWindowWin32::setLanguageTextInput( const LLCoordGL & position )
+{
+	if (sLanguageTextInputAllowed && LLWinImm::isAvailable())
+	{
+		HIMC himc = LLWinImm::getContext(mWindowHandle);
+
+		LLCoordWindow win_pos;
+		convertCoords( position, &win_pos );
+
+		if ( win_pos.mX >= 0 && win_pos.mY >= 0 && 
+			(win_pos.mX != sWinIMEWindowPosition.mX) || (win_pos.mY != sWinIMEWindowPosition.mY) )
+		{
+			COMPOSITIONFORM ime_form;
+			memset( &ime_form, 0, sizeof(ime_form) );
+			ime_form.dwStyle = CFS_POINT;
+			ime_form.ptCurrentPos.x = win_pos.mX;
+			ime_form.ptCurrentPos.y = win_pos.mY;
+
+			LLWinImm::setCompositionWindow( himc, &ime_form );
+
+			sWinIMEWindowPosition.set( win_pos.mX, win_pos.mY );
+		}
+
+		LLWinImm::releaseContext(mWindowHandle, himc);
+	}
+}
+
+
+void LLWindowWin32::fillCharPosition(const LLCoordGL& caret, const LLRect& bounds, const LLRect& control,
+		IMECHARPOSITION *char_position)
+{
+	LLCoordScreen caret_coord, top_left, bottom_right;
+	convertCoords(caret, &caret_coord);
+	convertCoords(LLCoordGL(bounds.mLeft, bounds.mTop), &top_left);
+	convertCoords(LLCoordGL(bounds.mRight, bounds.mBottom), &bottom_right);
+
+	char_position->pt.x = caret_coord.mX;
+	char_position->pt.y = top_left.mY;	// Windows wants the coordinate of upper left corner of a character...
+	char_position->cLineHeight = bottom_right.mY - top_left.mY;
+	char_position->rcDocument.left   = top_left.mX;
+	char_position->rcDocument.top    = top_left.mY;
+	char_position->rcDocument.right  = bottom_right.mX;
+	char_position->rcDocument.bottom = bottom_right.mY;
+}
+
+void LLWindowWin32::fillCompositionLogfont(LOGFONT *logfont)
+{
+	// Our font is a list of FreeType recognized font files that may
+	// not have a corresponding ones in Windows' fonts.  Hence, we
+	// can't simply tell Windows which font we are using.  We will
+	// notify a _standard_ font for a current input locale instead.
+	// We use a hard-coded knowledge about the Windows' standard
+	// configuration to do so...
+
+	memset(logfont, 0, sizeof(LOGFONT));
+
+	const WORD lang_id = LOWORD(GetKeyboardLayout(0));
+	switch (PRIMARYLANGID(lang_id))
+	{
+	case LANG_CHINESE:
+		// We need to identify one of two Chinese fonts.
+		switch (SUBLANGID(lang_id))
+		{
+		case SUBLANG_CHINESE_SIMPLIFIED:
+		case SUBLANG_CHINESE_SINGAPORE:
+			logfont->lfCharSet = GB2312_CHARSET;
+			lstrcpy(logfont->lfFaceName, TEXT("SimHei"));
+			break;
+		case SUBLANG_CHINESE_TRADITIONAL:
+		case SUBLANG_CHINESE_HONGKONG:
+		case SUBLANG_CHINESE_MACAU:
+		default:
+			logfont->lfCharSet = CHINESEBIG5_CHARSET;
+			lstrcpy(logfont->lfFaceName, TEXT("MingLiU"));
+			break;			
+		}
+		break;
+	case LANG_JAPANESE:
+		logfont->lfCharSet = SHIFTJIS_CHARSET;
+		lstrcpy(logfont->lfFaceName, TEXT("MS Gothic"));
+		break;		
+	case LANG_KOREAN:
+		logfont->lfCharSet = HANGUL_CHARSET;
+		lstrcpy(logfont->lfFaceName, TEXT("Gulim"));
+		break;
+	default:
+		logfont->lfCharSet = ANSI_CHARSET;
+		lstrcpy(logfont->lfFaceName, TEXT("Tahoma"));
+		break;
+	}
+							
+	logfont->lfHeight = mPreeditor->getPreeditFontSize();
+	logfont->lfWeight = FW_NORMAL;
+}	
+
+U32 LLWindowWin32::fillReconvertString(const LLWString &text,
+	S32 focus, S32 focus_length, RECONVERTSTRING *reconvert_string)
+{
+	const llutf16string text_utf16 = wstring_to_utf16str(text);
+	const DWORD required_size = sizeof(RECONVERTSTRING) + (text_utf16.length() + 1) * sizeof(WCHAR);
+	if (reconvert_string && reconvert_string->dwSize >= required_size)
+	{
+		const DWORD focus_utf16_at = wstring_utf16_length(text, 0, focus);
+		const DWORD focus_utf16_length = wstring_utf16_length(text, focus, focus_length);
+
+		reconvert_string->dwVersion = 0;
+		reconvert_string->dwStrLen = text_utf16.length();
+		reconvert_string->dwStrOffset = sizeof(RECONVERTSTRING);
+		reconvert_string->dwCompStrLen = focus_utf16_length;
+		reconvert_string->dwCompStrOffset = focus_utf16_at * sizeof(WCHAR);
+		reconvert_string->dwTargetStrLen = 0;
+		reconvert_string->dwTargetStrOffset = focus_utf16_at * sizeof(WCHAR);
+
+		const LPWSTR text = (LPWSTR)((BYTE *)reconvert_string + sizeof(RECONVERTSTRING));
+		memcpy(text, text_utf16.c_str(), (text_utf16.length() + 1) * sizeof(WCHAR));
+	}
+	return required_size;
+}
+
+void LLWindowWin32::updateLanguageTextInputArea()
+{
+	if (!mPreeditor || !LLWinImm::isAvailable())
+	{
+		return;
+	}
+
+	LLCoordGL caret_coord;
+	LLRect preedit_bounds;
+	if (mPreeditor->getPreeditLocation(-1, &caret_coord, &preedit_bounds, NULL))
+	{
+		mLanguageTextInputPointGL = caret_coord;
+		mLanguageTextInputAreaGL = preedit_bounds;
+
+		CANDIDATEFORM candidate_form;
+		fillCandidateForm(caret_coord, preedit_bounds, &candidate_form);
+
+		HIMC himc = LLWinImm::getContext(mWindowHandle);
+		// Win32 document says there may be up to 4 candidate windows.
+		// This magic number 4 appears only in the document, and
+		// there are no constant/macro for the value...
+		for (int i = 3; i >= 0; --i)
+		{
+			candidate_form.dwIndex = i;
+			LLWinImm::setCandidateWindow(himc, &candidate_form);
+		}
+		LLWinImm::releaseContext(mWindowHandle, himc);
+	}
+}
+
+void LLWindowWin32::interruptLanguageTextInput()
+{
+	if (mPreeditor)
+	{
+		if (LLWinImm::isAvailable())
+		{
+			HIMC himc = LLWinImm::getContext(mWindowHandle);
+			LLWinImm::notifyIME(himc, NI_COMPOSITIONSTR, CPS_COMPLETE, 0);
+			LLWinImm::releaseContext(mWindowHandle, himc);
+		}
+
+		// Win32 document says there will be no composition string
+		// after NI_COMPOSITIONSTR returns.  The following call to
+		// resetPreedit should be a NOP unless IME goes mad...
+		mPreeditor->resetPreedit();
+	}
+}
+
+void LLWindowWin32::handleStartCompositionMessage()
+{
+	// Let IME know the font to use in feedback UI.
+	LOGFONT logfont;
+	fillCompositionLogfont(&logfont);
+	HIMC himc = LLWinImm::getContext(mWindowHandle);
+	LLWinImm::setCompositionFont(himc, &logfont);
+	LLWinImm::releaseContext(mWindowHandle, himc);
+}
+
+// Handle WM_IME_COMPOSITION message.
+
+void LLWindowWin32::handleCompositionMessage(const U32 indexes)
+{
+	BOOL needs_update = FALSE;
+	LLWString result_string;
+	LLWString preedit_string;
+	S32 preedit_string_utf16_length = 0;
+	LLPreeditor::segment_lengths_t preedit_segment_lengths;
+	LLPreeditor::standouts_t preedit_standouts;
+
+	// Step I: Receive details of preedits from IME.
+
+	HIMC himc = LLWinImm::getContext(mWindowHandle);
+
+	if (indexes & GCS_RESULTSTR)
+	{
+		LONG size = LLWinImm::getCompositionString(himc, GCS_RESULTSTR, NULL, 0);
+		if (size >= 0)
+		{
+			const LPWSTR data = new WCHAR[size / sizeof(WCHAR) + 1];
+			size = LLWinImm::getCompositionString(himc, GCS_RESULTSTR, data, size);
+			if (size > 0)
+			{
+				result_string = utf16str_to_wstring(llutf16string(data, size / sizeof(WCHAR)));
+			}
+			delete[] data;
+			needs_update = TRUE;
+		}
+	}
+	
+	if (indexes & GCS_COMPSTR)
+	{
+		LONG size = LLWinImm::getCompositionString(himc, GCS_COMPSTR, NULL, 0);
+		if (size >= 0)
+		{
+			const LPWSTR data = new WCHAR[size / sizeof(WCHAR) + 1];
+			size = LLWinImm::getCompositionString(himc, GCS_COMPSTR, data, size);
+			if (size > 0)
+			{
+				preedit_string_utf16_length = size / sizeof(WCHAR);
+				preedit_string = utf16str_to_wstring(llutf16string(data, size / sizeof(WCHAR)));
+			}
+			delete[] data;
+			needs_update = TRUE;
+		}
+	}
+
+	if ((indexes & GCS_COMPCLAUSE) && preedit_string.length() > 0)
+	{
+		LONG size = LLWinImm::getCompositionString(himc, GCS_COMPCLAUSE, NULL, 0);
+		if (size > 0)
+		{
+			const LPDWORD data = new DWORD[size / sizeof(DWORD)];
+			size = LLWinImm::getCompositionString(himc, GCS_COMPCLAUSE, data, size);
+			if (size >= sizeof(DWORD) * 2
+				&& data[0] == 0 && data[size / sizeof(DWORD) - 1] == preedit_string_utf16_length)
+			{
+				preedit_segment_lengths.resize(size / sizeof(DWORD) - 1);
+				S32 offset = 0;
+				for (U32 i = 0; i < preedit_segment_lengths.size(); i++)
+				{
+					const S32 length = wstring_wstring_length_from_utf16_length(preedit_string, offset, data[i + 1] - data[i]);
+					preedit_segment_lengths[i] = length;
+					offset += length;
+				}
+			}
+			delete[] data;
+		}
+	}
+
+	if ((indexes & GCS_COMPATTR) && preedit_segment_lengths.size() > 1)
+	{
+		LONG size = LLWinImm::getCompositionString(himc, GCS_COMPATTR, NULL, 0);
+		if (size > 0)
+		{
+			const LPBYTE data = new BYTE[size / sizeof(BYTE)];
+			size = LLWinImm::getCompositionString(himc, GCS_COMPATTR, data, size);
+			if (size == preedit_string_utf16_length)
+			{
+				preedit_standouts.assign(preedit_segment_lengths.size(), FALSE);
+				S32 offset = 0;
+				for (U32 i = 0; i < preedit_segment_lengths.size(); i++)
+				{
+					if (ATTR_TARGET_CONVERTED == data[offset] || ATTR_TARGET_NOTCONVERTED == data[offset])
+					{
+						preedit_standouts[i] = TRUE;
+					}
+					offset += wstring_utf16_length(preedit_string, offset, preedit_segment_lengths[i]);
+				}
+			}
+			delete[] data;
+		}
+	}
+
+	S32 caret_position = preedit_string.length();
+	if (indexes & GCS_CURSORPOS)
+	{
+		const S32 caret_position_utf16 = LLWinImm::getCompositionString(himc, GCS_CURSORPOS, NULL, 0);
+		if (caret_position_utf16 >= 0 && caret_position <= preedit_string_utf16_length)
+		{
+			caret_position = wstring_wstring_length_from_utf16_length(preedit_string, 0, caret_position_utf16);
+		}
+	}
+
+	if (indexes == 0)
+	{
+		// I'm not sure this condition really happens, but
+		// Windows SDK document says it is an indication
+		// of "reset everything."
+		needs_update = TRUE;
+	}
+
+	LLWinImm::releaseContext(mWindowHandle, himc);
+
+	// Step II: Update the active preeditor.
+
+	if (needs_update)
+	{
+		mPreeditor->resetPreedit();
+
+		if (result_string.length() > 0)
+		{
+			for (LLWString::const_iterator i = result_string.begin(); i != result_string.end(); i++)
+			{
+				mPreeditor->handleUnicodeCharHere(*i);
+			}
+		}
+
+		if (preedit_string.length() == 0)
+ 		{
+			preedit_segment_lengths.clear();
+			preedit_standouts.clear();
+		}
+		else
+		{
+			if (preedit_segment_lengths.size() == 0)
+			{
+				preedit_segment_lengths.assign(1, preedit_string.length());
+			}
+			if (preedit_standouts.size() == 0)
+			{
+				preedit_standouts.assign(preedit_segment_lengths.size(), FALSE);
+			}
+		}
+		mPreeditor->updatePreedit(preedit_string, preedit_segment_lengths, preedit_standouts, caret_position);
+
+		// Some IME doesn't query char position after WM_IME_COMPOSITION,
+		// so we need to update them actively.
+		updateLanguageTextInputArea();
+	}
+}
+
+// Given a text and a focus range, find_context finds and returns a
+// surrounding context of the focused subtext.  A variable pointed
+// to by offset receives the offset in llwchars of the beginning of
+// the returned context string in the given wtext.
+
+static LLWString find_context(const LLWString & wtext, S32 focus, S32 focus_length, S32 *offset)
+{
+	static const S32 CONTEXT_EXCESS = 30;	// This value is by experiences.
+
+	const S32 e = llmin((S32) wtext.length(), focus + focus_length + CONTEXT_EXCESS);
+	S32 end = focus + focus_length;
+	while (end < e && '\n' != wtext[end])
+	{
+		end++;
+	}
+
+	const S32 s = llmax(0, focus - CONTEXT_EXCESS);
+	S32 start = focus;
+	while (start > s && '\n' != wtext[start - 1])
+	{
+		--start;
+	}
+
+	*offset = start;
+	return wtext.substr(start, end - start);
+}
+
+// final stage of handling drop requests - both from WM_DROPFILES message
+// for files and via IDropTarget interface requests.
+BOOL LLWindowWin32::completeDropRequest( const LLCoordGL gl_coord, const MASK mask, const std::string url )
+{
+	if ( mCallbacks->handleDrop( this, gl_coord, mask, url ) )
+	{
+		return TRUE;
+	};
+
+	return FALSE;
+};
+
+// Handle WM_IME_REQUEST message.
+// If it handled the message, returns TRUE.  Otherwise, FALSE.
+// When it handled the message, the value to be returned from
+// the Window Procedure is set to *result.
+
+BOOL LLWindowWin32::handleImeRequests(U32 request, U32 param, LRESULT *result)
+{
+	if ( mPreeditor )
+	{
+		switch (request)
+		{
+			case IMR_CANDIDATEWINDOW:		// http://msdn2.microsoft.com/en-us/library/ms776080.aspx
+			{
+				LLCoordGL caret_coord;
+				LLRect preedit_bounds;
+				mPreeditor->getPreeditLocation(-1, &caret_coord, &preedit_bounds, NULL);
+				
+				CANDIDATEFORM *const form = (CANDIDATEFORM *)param;
+				DWORD const dwIndex = form->dwIndex;
+				fillCandidateForm(caret_coord, preedit_bounds, form);
+				form->dwIndex = dwIndex;
+
+				*result = 1;
+				return TRUE;
+			}
+			case IMR_QUERYCHARPOSITION:
+			{
+				IMECHARPOSITION *const char_position = (IMECHARPOSITION *)param;
+
+				// char_position->dwCharPos counts in number of
+				// WCHARs, i.e., UTF-16 encoding units, so we can't simply pass the
+				// number to getPreeditLocation.  
+
+				const LLWString & wtext = mPreeditor->getPreeditString();
+				S32 preedit, preedit_length;
+				mPreeditor->getPreeditRange(&preedit, &preedit_length);
+				LLCoordGL caret_coord;
+				LLRect preedit_bounds, text_control;
+				const S32 position = wstring_wstring_length_from_utf16_length(wtext, preedit, char_position->dwCharPos);
+
+				if (!mPreeditor->getPreeditLocation(position, &caret_coord, &preedit_bounds, &text_control))
+				{
+					LL_WARNS("Window") << "*** IMR_QUERYCHARPOSITON called but getPreeditLocation failed." << LL_ENDL;
+					return FALSE;
+				}
+				fillCharPosition(caret_coord, preedit_bounds, text_control, char_position);
+
+				*result = 1;
+				return TRUE;
+			}
+			case IMR_COMPOSITIONFONT:
+			{
+				fillCompositionLogfont((LOGFONT *)param);
+
+				*result = 1;
+				return TRUE;
+			}
+			case IMR_RECONVERTSTRING:
+			{
+				mPreeditor->resetPreedit();
+				const LLWString & wtext = mPreeditor->getPreeditString();
+				S32 select, select_length;
+				mPreeditor->getSelectionRange(&select, &select_length);
+
+				S32 context_offset;
+				const LLWString context = find_context(wtext, select, select_length, &context_offset);
+
+				RECONVERTSTRING * const reconvert_string = (RECONVERTSTRING *)param;
+				const U32 size = fillReconvertString(context, select - context_offset, select_length, reconvert_string);
+				if (reconvert_string)
+				{
+					if (select_length == 0)
+					{
+						// Let the IME to decide the reconversion range, and
+						// adjust the reconvert_string structure accordingly.
+						HIMC himc = LLWinImm::getContext(mWindowHandle);
+						const BOOL adjusted = LLWinImm::setCompositionString(himc,
+									SCS_QUERYRECONVERTSTRING, reconvert_string, size, NULL, 0);
+						LLWinImm::releaseContext(mWindowHandle, himc);
+						if (adjusted)
+						{
+							const llutf16string & text_utf16 = wstring_to_utf16str(context);
+							const S32 new_preedit_start = reconvert_string->dwCompStrOffset / sizeof(WCHAR);
+							const S32 new_preedit_end = new_preedit_start + reconvert_string->dwCompStrLen;
+							select = utf16str_wstring_length(text_utf16, new_preedit_start);
+							select_length = utf16str_wstring_length(text_utf16, new_preedit_end) - select;
+							select += context_offset;
+						}
+					}
+					mPreeditor->markAsPreedit(select, select_length);
+				}
+
+				*result = size;
+				return TRUE;
+			}
+			case IMR_CONFIRMRECONVERTSTRING:
+			{
+				*result = FALSE;
+				return TRUE;
+			}
+			case IMR_DOCUMENTFEED:
+			{
+				const LLWString & wtext = mPreeditor->getPreeditString();
+				S32 preedit, preedit_length;
+				mPreeditor->getPreeditRange(&preedit, &preedit_length);
+				
+				S32 context_offset;
+				LLWString context = find_context(wtext, preedit, preedit_length, &context_offset);
+				preedit -= context_offset;
+				if (preedit_length)
+				{
+					// IMR_DOCUMENTFEED may be called when we have an active preedit.
+					// We should pass the context string *excluding* the preedit string.
+					// Otherwise, some IME are confused.
+					context.erase(preedit, preedit_length);
+				}
+				
+				RECONVERTSTRING *reconvert_string = (RECONVERTSTRING *)param;
+				*result = fillReconvertString(context, preedit, 0, reconvert_string);
+				return TRUE;
+			}
+			default:
+				return FALSE;
+		}
+	}
+
+	return FALSE;
+}
+
+//static
+std::vector<std::string> LLWindowWin32::getDynamicFallbackFontList()
+{
+	// Fonts previously in getFontListSans() have moved to fonts.xml.
+	return std::vector<std::string>();
+}
+
+
+#endif // LL_WINDOWS
diff --git a/indra/llwindow/llwindowwin32.h b/indra/llwindow/llwindowwin32.h
index e14324c9f17..1382cf93a2b 100644
--- a/indra/llwindow/llwindowwin32.h
+++ b/indra/llwindow/llwindowwin32.h
@@ -39,6 +39,7 @@
 #include <windows.h>
 
 #include "llwindow.h"
+#include "lldragdropwin32.h"
 
 // Hack for async host by name
 #define LL_WM_HOST_RESOLVED      (WM_APP + 1)
@@ -112,6 +113,8 @@ class LLWindowWin32 : public LLWindow
 	/*virtual*/ void interruptLanguageTextInput();
 	/*virtual*/ void spawnWebBrowser(const std::string& escaped_url);
 
+	BOOL completeDropRequest( const LLCoordGL gl_coord, const MASK mask, const std::string url );
+
 	static std::vector<std::string> getDynamicFallbackFontList();
 
 protected:
@@ -206,6 +209,8 @@ class LLWindowWin32 : public LLWindow
 
 	LLPreeditor		*mPreeditor;
 
+	LLDragDropWin32* mDragDrop;
+
 	friend class LLWindowManager;
 };
 
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index a0802430865..220f90c2f52 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -817,7 +817,7 @@ BOOL LLViewerWindow::handleMiddleMouseDown(LLWindow *window,  LLCoordGL pos, MAS
 	return TRUE;
 }
 
-BOOL LLViewerWindow::handleDrop(LLWindow *window,  LLCoordGL pos, MASK mask, void* data)
+BOOL LLViewerWindow::handleDrop( LLWindow *window,  LLCoordGL pos, MASK mask, std::string data )
 {
 	if (gSavedSettings.getBOOL("PrimMediaDragNDrop"))
 	{
@@ -825,7 +825,7 @@ BOOL LLViewerWindow::handleDrop(LLWindow *window,  LLCoordGL pos, MASK mask, voi
 
 		LLUUID object_id = pick_info.getObjectID();
 		S32 object_face = pick_info.mObjectFace;
-		std::string url = std::string( (char*)data );
+		std::string url = data;
 
 		llinfos << "### Object: picked at " << pos.mX << ", " << pos.mY << " - face = " << object_face << " - URL = " << url << llendl;
 
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index 44704b99e39..cf024df9bf9 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -170,7 +170,7 @@ class LLViewerWindow : public LLWindowCallbacks
 	/*virtual*/ BOOL handleRightMouseUp(LLWindow *window,  LLCoordGL pos, MASK mask);
 	/*virtual*/ BOOL handleMiddleMouseDown(LLWindow *window,  LLCoordGL pos, MASK mask);
 	/*virtual*/ BOOL handleMiddleMouseUp(LLWindow *window,  LLCoordGL pos, MASK mask);
-	/*virtual*/ BOOL handleDrop(LLWindow *window,  LLCoordGL pos, MASK mask, void* data);
+	/*virtual*/ BOOL handleDrop(LLWindow *window,  LLCoordGL pos, MASK mask, std::string data);
 				void handleMouseMove(LLWindow *window,  LLCoordGL pos, MASK mask);
 	/*virtual*/ void handleMouseLeave(LLWindow *window);
 	/*virtual*/ void handleResize(LLWindow *window,  S32 x,  S32 y);
-- 
GitLab


From 66ce1b04297cd48520e666a3fa903af143f89c57 Mon Sep 17 00:00:00 2001
From: callum <none@none>
Date: Mon, 2 Nov 2009 15:05:38 -0800
Subject: [PATCH 004/521] Added CMake file for new cpp/h file

---
 indra/llwindow/CMakeLists.txt | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/indra/llwindow/CMakeLists.txt b/indra/llwindow/CMakeLists.txt
index 7b1cab696f4..b4a3f744512 100644
--- a/indra/llwindow/CMakeLists.txt
+++ b/indra/llwindow/CMakeLists.txt
@@ -102,11 +102,13 @@ if (WINDOWS)
        llwindowwin32.cpp
        lldxhardware.cpp
        llkeyboardwin32.cpp
+       lldragdropwin32.cpp
        )
   list(APPEND llwindow_HEADER_FILES
        llwindowwin32.h
        lldxhardware.h
        llkeyboardwin32.h
+       lldragdropwin32.h
        )
   list(APPEND llwindow_LINK_LIBRARIES
        comdlg32     # Common Dialogs for ChooseColor
-- 
GitLab


From 996740607a11ac7f8633f12b65ead0508e1435fa Mon Sep 17 00:00:00 2001
From: callum <none@none>
Date: Tue, 3 Nov 2009 09:33:21 -0800
Subject: [PATCH 005/521] Convert screen coordinates from IDropAction to window
 coordinates.

---
 indra/llwindow/lldragdropwin32.cpp | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp
index 0daff853955..d05dbf19a5e 100644
--- a/indra/llwindow/lldragdropwin32.cpp
+++ b/indra/llwindow/lldragdropwin32.cpp
@@ -209,11 +209,18 @@ class LLDragDropWin32Target:
 					LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mWindowHandle, GWL_USERDATA);
 					if (NULL != window_imp)
 					{
-						LLCoordGL gl_coord( pt.x, pt.y);
-						LLCoordWindow cursor_coord_window( pt.x, pt.y );
+						LLCoordGL gl_coord( 0, 0 );
+
+						POINT pt2;
+						pt2.x = pt.x;
+						pt2.y = pt.y;
+						ScreenToClient( mWindowHandle, &pt2 );
+
+						LLCoordWindow cursor_coord_window( pt2.x, pt2.y );
 						window_imp->convertCoords(cursor_coord_window, &gl_coord);
 						llinfos << "### (Drop) URL is: " << lpszText << llendl;
 						llinfos << "###        raw coords are: " << pt.x << " x " << pt.y << llendl;
+						llinfos << "###	    window coords are: " << pt2.x << " x " << pt2.y << llendl;
 						llinfos << "###         GL coords are: " << gl_coord.mX << " x " << gl_coord.mY << llendl;
 						llinfos << llendl;
 
-- 
GitLab


From 4f0731d722c41b6717d08b8165e941a06edd3a1f Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Thu, 5 Nov 2009 17:51:04 -0800
Subject: [PATCH 006/521] make drop add media if not there, navigate if already
 there

---
 indra/newview/llviewerwindow.cpp | 27 +++++++++++++++++++++------
 1 file changed, 21 insertions(+), 6 deletions(-)

diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index b43479689f2..ead99613fbc 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -831,12 +831,27 @@ BOOL LLViewerWindow::handleDrop( LLWindow *window,  LLCoordGL pos, MASK mask, st
 		LLVOVolume *obj = dynamic_cast<LLVOVolume*>(static_cast<LLViewerObject*>(pick_info.getObject()));
 		if (obj)
 		{
-			LLSD media_data;
-			/// XXX home URL too?
-			media_data[LLMediaEntry::CURRENT_URL_KEY] = url;
-			media_data[LLMediaEntry::AUTO_PLAY_KEY] = true;
-			obj->syncMediaData(object_face, media_data, true, true);
-			obj->sendMediaDataUpdate();
+			LLTextureEntry *te = obj->getTE(object_face);
+			if (te)
+			{
+				if (! te->hasMedia())
+				{
+					// Create new media entry
+					LLSD media_data;
+					// XXX Should we really do Home URL too?
+					media_data[LLMediaEntry::HOME_URL_KEY] = url;
+					media_data[LLMediaEntry::CURRENT_URL_KEY] = url;
+					media_data[LLMediaEntry::AUTO_PLAY_KEY] = true;
+					obj->syncMediaData(object_face, media_data, true, true);
+					// XXX This shouldn't be necessary, should it ?!?
+					obj->getMediaImpl(object_face)->navigateReload();
+					obj->sendMediaDataUpdate();
+				}
+				else {
+					// just navigate to the URL
+					obj->getMediaImpl(object_face)->navigateTo(url);
+				}
+			}
 		}
 	}
   	// Always handled as far as the OS is concerned.
-- 
GitLab


From bf5ce0fcbd9a71ce1372db0f42395ba47747fd78 Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Thu, 12 Nov 2009 11:06:29 -0800
Subject: [PATCH 007/521] Change 'handleDrop()' API to 'handleDragNDrop', which
 now takes a "drop" BOOL

---
 indra/llwindow/lldragdropwin32.cpp   | 18 ++++++++++++-
 indra/llwindow/llwindowcallbacks.cpp |  2 +-
 indra/llwindow/llwindowcallbacks.h   |  2 +-
 indra/llwindow/llwindowwin32.cpp     | 13 +++-------
 indra/llwindow/llwindowwin32.h       |  2 +-
 indra/newview/llviewerwindow.cpp     | 39 ++++++++++++++++------------
 indra/newview/llviewerwindow.h       |  2 +-
 7 files changed, 48 insertions(+), 30 deletions(-)

diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp
index d05dbf19a5e..879f2d2b90f 100644
--- a/indra/llwindow/lldragdropwin32.cpp
+++ b/indra/llwindow/lldragdropwin32.cpp
@@ -171,6 +171,22 @@ class LLDragDropWin32Target:
 		STDMETHOD (DragOver)(DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect)
 		{
 			HRESULT hr = S_OK;
+			// XXX MAJOR MAJOR HACK!
+			LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mWindowHandle, GWL_USERDATA);
+			if (NULL != window_imp)
+			{
+				LLCoordGL gl_coord( 0, 0 );
+
+				POINT pt2;
+				pt2.x = pt.x;
+				pt2.y = pt.y;
+				ScreenToClient( mWindowHandle, &pt2 );
+
+				LLCoordWindow cursor_coord_window( pt2.x, pt2.y );
+				window_imp->convertCoords(cursor_coord_window, &gl_coord);
+				MASK mask = gKeyboard->currentMask(TRUE);
+				bDropTargetValid = window_imp->completeDragNDropRequest( gl_coord, mask, FALSE, std::string( "" ) );
+			}
 			if (bDropTargetValid) 
 				*pdwEffect=DROPEFFECT_COPY;
 
@@ -225,7 +241,7 @@ class LLDragDropWin32Target:
 						llinfos << llendl;
 
 						MASK mask = gKeyboard->currentMask(TRUE);
-						window_imp->completeDropRequest( gl_coord, mask, std::string( lpszText ) );
+						window_imp->completeDragNDropRequest( gl_coord, mask, TRUE, std::string( lpszText ) );
 					};
 
 					GlobalUnlock(hText);
diff --git a/indra/llwindow/llwindowcallbacks.cpp b/indra/llwindow/llwindowcallbacks.cpp
index 1098529e1cd..b8927a1ac4f 100644
--- a/indra/llwindow/llwindowcallbacks.cpp
+++ b/indra/llwindow/llwindowcallbacks.cpp
@@ -163,7 +163,7 @@ void LLWindowCallbacks::handleDataCopy(LLWindow *window, S32 data_type, void *da
 {
 }
 
-BOOL LLWindowCallbacks::handleDrop(LLWindow *window, LLCoordGL pos, MASK mask, std::string data )
+BOOL LLWindowCallbacks::handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data )
 {
 	return FALSE;
 }
diff --git a/indra/llwindow/llwindowcallbacks.h b/indra/llwindow/llwindowcallbacks.h
index 3a09100168b..8e7605a6505 100644
--- a/indra/llwindow/llwindowcallbacks.h
+++ b/indra/llwindow/llwindowcallbacks.h
@@ -68,7 +68,7 @@ class LLWindowCallbacks
 	virtual void handleWindowBlock(LLWindow *window);							// window is taking over CPU for a while
 	virtual void handleWindowUnblock(LLWindow *window);							// window coming back after taking over CPU for a while
 	virtual void handleDataCopy(LLWindow *window, S32 data_type, void *data);
-	virtual BOOL handleDrop(LLWindow *window, LLCoordGL pos, MASK mask, std::string data);
+	virtual BOOL handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data);
 	virtual BOOL handleTimerEvent(LLWindow *window);
 	virtual BOOL handleDeviceChange(LLWindow *window);
 
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index da096b9a0a2..eda8cf15b08 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -2401,7 +2401,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
 
 				MASK mask = gKeyboard->currentMask(TRUE);
 
-				if ( window_imp->completeDropRequest( gl_coord, mask, (char*)url ) )
+				if ( window_imp->completeDragNDropRequest( gl_coord, mask, true, (char*)url ) )
 				{
 					return 0;
 				};
@@ -3578,15 +3578,10 @@ static LLWString find_context(const LLWString & wtext, S32 focus, S32 focus_leng
 
 // final stage of handling drop requests - both from WM_DROPFILES message
 // for files and via IDropTarget interface requests.
-BOOL LLWindowWin32::completeDropRequest( const LLCoordGL gl_coord, const MASK mask, const std::string url )
+BOOL LLWindowWin32::completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, BOOL drop, const std::string url )
 {
-	if ( mCallbacks->handleDrop( this, gl_coord, mask, url ) )
-	{
-		return TRUE;
-	};
-
-	return FALSE;
-};
+	return mCallbacks->handleDragNDrop( this, gl_coord, mask, drop, url );
+}
 
 // Handle WM_IME_REQUEST message.
 // If it handled the message, returns TRUE.  Otherwise, FALSE.
diff --git a/indra/llwindow/llwindowwin32.h b/indra/llwindow/llwindowwin32.h
index 1382cf93a2b..e99c26b7f1f 100644
--- a/indra/llwindow/llwindowwin32.h
+++ b/indra/llwindow/llwindowwin32.h
@@ -113,7 +113,7 @@ class LLWindowWin32 : public LLWindow
 	/*virtual*/ void interruptLanguageTextInput();
 	/*virtual*/ void spawnWebBrowser(const std::string& escaped_url);
 
-	BOOL completeDropRequest( const LLCoordGL gl_coord, const MASK mask, const std::string url );
+	BOOL completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, BOOL drop, const std::string url );
 
 	static std::vector<std::string> getDynamicFallbackFontList();
 
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 06d6819b5e5..d2f81f21ac4 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -819,8 +819,9 @@ BOOL LLViewerWindow::handleMiddleMouseDown(LLWindow *window,  LLCoordGL pos, MAS
 	return TRUE;
 }
 
-BOOL LLViewerWindow::handleDrop( LLWindow *window,  LLCoordGL pos, MASK mask, std::string data )
+BOOL LLViewerWindow::handleDragNDrop( LLWindow *window,  LLCoordGL pos, MASK mask, BOOL drop, std::string data )
 {
+	BOOL result = FALSE;
 	if (gSavedSettings.getBOOL("PrimMediaDragNDrop"))
 	{
 		LLPickInfo pick_info = pickImmediate( pos.mX, pos.mY,  TRUE /*BOOL pick_transparent*/ );
@@ -837,28 +838,34 @@ BOOL LLViewerWindow::handleDrop( LLWindow *window,  LLCoordGL pos, MASK mask, st
 			LLTextureEntry *te = obj->getTE(object_face);
 			if (te)
 			{
-				if (! te->hasMedia())
+				if (drop)
 				{
-					// Create new media entry
-					LLSD media_data;
-					// XXX Should we really do Home URL too?
-					media_data[LLMediaEntry::HOME_URL_KEY] = url;
-					media_data[LLMediaEntry::CURRENT_URL_KEY] = url;
-					media_data[LLMediaEntry::AUTO_PLAY_KEY] = true;
-					obj->syncMediaData(object_face, media_data, true, true);
-					// XXX This shouldn't be necessary, should it ?!?
-					obj->getMediaImpl(object_face)->navigateReload();
-					obj->sendMediaDataUpdate();
+					if (! te->hasMedia())
+					{
+						// Create new media entry
+						LLSD media_data;
+						// XXX Should we really do Home URL too?
+						media_data[LLMediaEntry::HOME_URL_KEY] = url;
+						media_data[LLMediaEntry::CURRENT_URL_KEY] = url;
+						media_data[LLMediaEntry::AUTO_PLAY_KEY] = true;
+						obj->syncMediaData(object_face, media_data, true, true);
+						// XXX This shouldn't be necessary, should it ?!?
+						obj->getMediaImpl(object_face)->navigateReload();
+						obj->sendMediaDataUpdate();
+					}
+					else {
+						// just navigate to the URL
+						obj->getMediaImpl(object_face)->navigateTo(url);
+					}
 				}
 				else {
-					// just navigate to the URL
-					obj->getMediaImpl(object_face)->navigateTo(url);
+					// XXX TODO: make object glow?  Hard because how do we "unglow?"
 				}
+				result = TRUE;
 			}
 		}
 	}
-  	// Always handled as far as the OS is concerned.
-	return TRUE;
+	return result;
 }
   
 BOOL LLViewerWindow::handleMiddleMouseUp(LLWindow *window,  LLCoordGL pos, MASK mask)
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index cdc9eb47866..d7cfcff925f 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -170,7 +170,7 @@ class LLViewerWindow : public LLWindowCallbacks
 	/*virtual*/ BOOL handleRightMouseUp(LLWindow *window,  LLCoordGL pos, MASK mask);
 	/*virtual*/ BOOL handleMiddleMouseDown(LLWindow *window,  LLCoordGL pos, MASK mask);
 	/*virtual*/ BOOL handleMiddleMouseUp(LLWindow *window,  LLCoordGL pos, MASK mask);
-	/*virtual*/ BOOL handleDrop(LLWindow *window,  LLCoordGL pos, MASK mask, std::string data);
+	/*virtual*/ BOOL handleDragNDrop(LLWindow *window,  LLCoordGL pos, MASK mask, BOOL drop, std::string data);
 				void handleMouseMove(LLWindow *window,  LLCoordGL pos, MASK mask);
 	/*virtual*/ void handleMouseLeave(LLWindow *window);
 	/*virtual*/ void handleResize(LLWindow *window,  S32 x,  S32 y);
-- 
GitLab


From 778005a350308d51f114ece74b4e7f3e7af3d37e Mon Sep 17 00:00:00 2001
From: callum <none@none>
Date: Fri, 13 Nov 2009 17:43:55 -0800
Subject: [PATCH 008/521] Reworked IDropTarget COM interface impl - now much
 cleaner and doesn't crash!

---
 indra/llwindow/lldragdropwin32.cpp | 287 +++++++++++++----------------
 indra/llwindow/lldragdropwin32.h   |   8 +-
 2 files changed, 135 insertions(+), 160 deletions(-)

diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp
index d05dbf19a5e..aac68e71af2 100644
--- a/indra/llwindow/lldragdropwin32.cpp
+++ b/indra/llwindow/lldragdropwin32.cpp
@@ -34,216 +34,183 @@
 
 #include "linden_common.h"
 
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-
 #include "llwindowwin32.h"
 #include "llkeyboardwin32.h"
-#include "lldragdropwin32.h"
-
 #include "llwindowcallbacks.h"
-
-#include <windows.h>
-#include <ole2.h>
-#include <shlobj.h>
-#include <shellapi.h>
-#include <shlwapi.h>
-
-// FIXME: this should be done in CMake
-#pragma comment( lib, "shlwapi.lib" )
+#include "lldragdropwin32.h"
 
 class LLDragDropWin32Target: 
 	public IDropTarget
 {
 	public:
+		////////////////////////////////////////////////////////////////////////////////
+		//
 		LLDragDropWin32Target( HWND  hWnd ) :
-		  mWindowHandle( hWnd ),
-		  mRefCount( 0 )
+			mRefCount( 1 ),
+			mAppWindowHandle( hWnd ),
+			mAllowDrop( false)
 		{
-			strcpy(szFileDropped,"");
-			bDropTargetValid = false;
-			bTextDropped = false;		
 		};
 
-		/* IUnknown methods */
-		STDMETHOD_( ULONG, AddRef )( void )
+		////////////////////////////////////////////////////////////////////////////////
+		//
+		ULONG __stdcall AddRef( void )
 		{
-			return ++mRefCount;
+			return InterlockedIncrement( &mRefCount );
 		};
 
-		STDMETHOD_( ULONG, Release )( void )
+		////////////////////////////////////////////////////////////////////////////////
+		//
+		ULONG __stdcall Release( void )
 		{
-			if ( --mRefCount == 0 )
+			LONG count = InterlockedDecrement( &mRefCount );
+				
+			if ( count == 0 )
 			{
 				delete this;
 				return 0;
 			}
-			return mRefCount;
+			else
+			{
+				return count;
+			};
 		};
 
-		STDMETHOD ( QueryInterface )( REFIID iid, void ** ppvObject )
+		////////////////////////////////////////////////////////////////////////////////
+		//
+		HRESULT __stdcall QueryInterface( REFIID iid, void** ppvObject )
 		{
 			if ( iid == IID_IUnknown || iid == IID_IDropTarget )
 			{
-				*ppvObject = this;
 				AddRef();
+				*ppvObject = this;
 				return S_OK;
+			}
+			else
+			{
+				*ppvObject = 0;
+				return E_NOINTERFACE;
 			};
-
-			*ppvObject = NULL;
-			return E_NOINTERFACE;
 		};
-		
-		/* IDropTarget methods */
-		STDMETHOD (DragEnter)(LPDATAOBJECT pDataObj, DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect)
+
+		////////////////////////////////////////////////////////////////////////////////
+		//
+		HRESULT __stdcall DragEnter( IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect )
 		{
-			HRESULT hr = E_INVALIDARG;
-			bDropTargetValid = false;
-			bTextDropped = false;
-			*pdwEffect=DROPEFFECT_NONE;
-			
-			FORMATETC fmte = {CF_HDROP, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
-			STGMEDIUM medium;
-				
-			if (pDataObj && SUCCEEDED (pDataObj->GetData (&fmte, &medium)))
-			{
-				// We can Handle Only one File At a time !!!
-				if (1 == DragQueryFile ((HDROP)medium.hGlobal,0xFFFFFFFF,NULL,0 ))
-				{
-					// Get the File Name
-					if (DragQueryFileA((HDROP)medium.hGlobal, 0, szFileDropped,MAX_PATH))
-					{
-						if (!PathIsDirectoryA(szFileDropped))
-						{
-							char szTempFile[MAX_PATH];
-							_splitpath(szFileDropped,NULL,NULL,NULL,szTempFile);
-
-//							if (!stricmp(szTempFile,".lnk"))
-//							{
-//								if (ResolveLink(szFileDropped,szTempFile))
-//								{
-//									strcpy(szFileDropped,szTempFile);
-//									*pdwEffect=DROPEFFECT_COPY;
-//									We Want to Create a Copy
-//									bDropTargetValid = true;
-//									hr = S_OK;
-//								}
-//							}
-//							else
-//							{
-								*pdwEffect=DROPEFFECT_COPY;
-								//We Want to Create a Copy
-								bDropTargetValid = true;
-								hr = S_OK;
-//							}
-						}
-					}
-				}
-
-				if (medium.pUnkForRelease)
-					medium.pUnkForRelease->Release ();
-				else
-					GlobalFree (medium.hGlobal);
-			}
-			else 
+			FORMATETC fmtetc = { CF_TEXT, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL };
+
+			// support CF_TEXT using a HGLOBAL?
+			if ( S_OK == pDataObject->QueryGetData( &fmtetc ) )
 			{
-				fmte.cfFormat = CF_TEXT;
-				fmte.ptd = NULL;
-				fmte.dwAspect = DVASPECT_CONTENT;
-				fmte.lindex = -1;
-				fmte.tymed = TYMED_HGLOBAL; 
-
-				// Does the drag source provide CF_TEXT ?    
-				if (NOERROR == pDataObj->QueryGetData(&fmte))
-				{
-					bDropTargetValid = true;
-					bTextDropped = true;
-					*pdwEffect=DROPEFFECT_COPY;
-					hr = S_OK;
-				}
-			}
-				return hr;
+				mAllowDrop = true;
 
+				*pdwEffect = DROPEFFECT_COPY;
 
+				SetFocus( mAppWindowHandle );
+			}
+			else
+			{
+				mAllowDrop = false;
+				*pdwEffect = DROPEFFECT_NONE;
+			};
 
+			return S_OK;
 		};
 
-		STDMETHOD (DragOver)(DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect)
+		////////////////////////////////////////////////////////////////////////////////
+		//
+		HRESULT __stdcall DragOver( DWORD grfKeyState, POINTL pt, DWORD* pdwEffect )
 		{
-			HRESULT hr = S_OK;
-			if (bDropTargetValid) 
-				*pdwEffect=DROPEFFECT_COPY;
+			if ( mAllowDrop )
+			{
+				*pdwEffect = DROPEFFECT_COPY;
+			}
+			else
+			{
+				*pdwEffect = DROPEFFECT_NONE;
+			};
 
-			return hr;
+			return S_OK;
 		};
 
-		STDMETHOD (DragLeave)(void)
+		////////////////////////////////////////////////////////////////////////////////
+		//
+		HRESULT __stdcall DragLeave( void )
 		{
-			HRESULT hr = S_OK;
-			strcpy(szFileDropped,"");
-			return hr;
+			return S_OK;
 		};
 
-		STDMETHOD (Drop)(LPDATAOBJECT pDataObj, DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect)
+		////////////////////////////////////////////////////////////////////////////////
+		//
+		HRESULT __stdcall Drop( IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect )
 		{
-			HRESULT hr = S_OK;
-			if (bDropTargetValid) 
+			if ( mAllowDrop )
 			{
-				*pdwEffect=DROPEFFECT_COPY;
-			
-				FORMATETC fmte;
-				STGMEDIUM medium;
+				// construct a FORMATETC object
+				FORMATETC fmtetc = { CF_TEXT, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL };
 
-				if (bTextDropped)
+				// do we have text?
+				if( S_OK == pDataObject->QueryGetData( &fmtetc ) )
 				{
-					fmte.cfFormat = CF_TEXT;
-					fmte.ptd = NULL;
-					fmte.dwAspect = DVASPECT_CONTENT;  
-					fmte.lindex = -1;
-					fmte.tymed = TYMED_HGLOBAL;       
-
-					hr = pDataObj->GetData(&fmte, &medium);
-					HGLOBAL hText = medium.hGlobal;
-					LPSTR lpszText = (LPSTR)GlobalLock(hText);
-
-					LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mWindowHandle, GWL_USERDATA);
-					if (NULL != window_imp)
+					STGMEDIUM stgmed;
+					if( S_OK == pDataObject->GetData( &fmtetc, &stgmed ) )
 					{
-						LLCoordGL gl_coord( 0, 0 );
-
-						POINT pt2;
-						pt2.x = pt.x;
-						pt2.y = pt.y;
-						ScreenToClient( mWindowHandle, &pt2 );
-
-						LLCoordWindow cursor_coord_window( pt2.x, pt2.y );
-						window_imp->convertCoords(cursor_coord_window, &gl_coord);
-						llinfos << "### (Drop) URL is: " << lpszText << llendl;
-						llinfos << "###        raw coords are: " << pt.x << " x " << pt.y << llendl;
-						llinfos << "###	    window coords are: " << pt2.x << " x " << pt2.y << llendl;
-						llinfos << "###         GL coords are: " << gl_coord.mX << " x " << gl_coord.mY << llendl;
-						llinfos << llendl;
-
-						MASK mask = gKeyboard->currentMask(TRUE);
-						window_imp->completeDropRequest( gl_coord, mask, std::string( lpszText ) );
+						// note: data is in an HGLOBAL - not 'regular' memory
+						PVOID data = GlobalLock( stgmed.hGlobal );
+
+						// window impl stored in Window data (neat!)
+						LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong( mAppWindowHandle, GWL_USERDATA );
+						if ( NULL != window_imp )
+						{
+							LLCoordGL gl_coord( 0, 0 );
+
+							POINT pt_client;
+							pt_client.x = pt.x;
+							pt_client.y = pt.y;
+							ScreenToClient( mAppWindowHandle, &pt_client );
+
+							LLCoordWindow cursor_coord_window( pt_client.x, pt_client.y );
+							window_imp->convertCoords(cursor_coord_window, &gl_coord);
+							llinfos << "### (Drop) URL is: " << data << llendl;
+							llinfos << "###        raw coords are: " << pt.x << " x " << pt.y << llendl;
+							llinfos << "###	    client coords are: " << pt_client.x << " x " << pt_client.y << llendl;
+							llinfos << "###         GL coords are: " << gl_coord.mX << " x " << gl_coord.mY << llendl;
+							llinfos << llendl;
+
+							// no keyboard modifier option yet but we could one day
+							MASK mask = gKeyboard->currentMask( TRUE );
+
+							// actually do the drop
+							window_imp->completeDropRequest( gl_coord, mask, std::string( (char*)data ) );
+						};
+
+						GlobalUnlock( stgmed.hGlobal );
+
+						ReleaseStgMedium( &stgmed );
 					};
+				};
 
-					GlobalUnlock(hText);
-					ReleaseStgMedium(&medium);
-				}
+				*pdwEffect = DROPEFFECT_COPY;
 			}
-			return hr;
+			else
+			{
+				*pdwEffect = DROPEFFECT_NONE;
+			};
+
+			return S_OK;
 		};
-	   
+
+	////////////////////////////////////////////////////////////////////////////////
+	//
 	private:
-		ULONG mRefCount;
-		HWND mWindowHandle;
-		char szFileDropped[1024];
-		bool bDropTargetValid;
-		bool bTextDropped;
+		LONG mRefCount;
+		HWND mAppWindowHandle;
+		bool mAllowDrop;
 		friend class LLWindowWin32;
 };
 
+////////////////////////////////////////////////////////////////////////////////
+//
 LLDragDropWin32::LLDragDropWin32() :
 	mDropTarget( NULL ),
 	mDropWindowHandle( NULL )
@@ -251,19 +218,23 @@ LLDragDropWin32::LLDragDropWin32() :
 {
 }
 
+////////////////////////////////////////////////////////////////////////////////
+//
 LLDragDropWin32::~LLDragDropWin32()
 {
 }
 
+////////////////////////////////////////////////////////////////////////////////
+//
 bool LLDragDropWin32::init( HWND hWnd )
 {
-	if (NOERROR != OleInitialize(NULL))
+	if ( NOERROR != OleInitialize( NULL ) )
 		return FALSE; 
 
 	mDropTarget = new LLDragDropWin32Target( hWnd );
 	if ( mDropTarget )
 	{
-		HRESULT result = CoLockObjectExternal( mDropTarget, TRUE, TRUE );
+		HRESULT result = CoLockObjectExternal( mDropTarget, TRUE, FALSE );
 		if ( S_OK == result )
 		{
 			result = RegisterDragDrop( hWnd, mDropTarget );
@@ -287,12 +258,14 @@ bool LLDragDropWin32::init( HWND hWnd )
 	return true;
 }
 
+////////////////////////////////////////////////////////////////////////////////
+//
 void LLDragDropWin32::reset()
 {
 	if ( mDropTarget )
 	{
-		CoLockObjectExternal( mDropTarget, FALSE, TRUE );
 		RevokeDragDrop( mDropWindowHandle );
+		CoLockObjectExternal( mDropTarget, FALSE, TRUE );
 		mDropTarget->Release();  
 	};
 	
diff --git a/indra/llwindow/lldragdropwin32.h b/indra/llwindow/lldragdropwin32.h
index 6137e5eb655..624f4ad24bc 100644
--- a/indra/llwindow/lldragdropwin32.h
+++ b/indra/llwindow/lldragdropwin32.h
@@ -33,10 +33,10 @@
 #ifndef LL_LLDRAGDROP32_H
 #define LL_LLDRAGDROP32_H
 
+#if LL_WINDOWS
+
 #include <windows.h>
 #include <ole2.h>
-#include <shlobj.h>
-#include <shlwapi.h>
 
 class LLDragDropWin32
 {
@@ -52,4 +52,6 @@ class LLDragDropWin32
 		HWND mDropWindowHandle;
 };
 
-#endif
+#endif // LL_WINDOWS
+
+#endif // LL_LLDRAGDROP32_H
-- 
GitLab


From 4419e367bcbe8c1b248e88eab8096f0b8ac4707c Mon Sep 17 00:00:00 2001
From: callum <none@none>
Date: Wed, 18 Nov 2009 21:15:44 -0800
Subject: [PATCH 009/521] Add support for removing the Windows specific
 drag/drop code from the codebase via a new CMake file (DragDrop.cmake).

---
 indra/cmake/DragDrop.cmake         | 25 +++++++++++++++++++++++++
 indra/llwindow/CMakeLists.txt      |  1 +
 indra/llwindow/lldragdropwin32.cpp |  7 ++++++-
 indra/llwindow/lldragdropwin32.h   | 29 ++++++++++++++++++++++++++---
 indra/newview/CMakeLists.txt       |  1 +
 5 files changed, 59 insertions(+), 4 deletions(-)
 create mode 100644 indra/cmake/DragDrop.cmake

diff --git a/indra/cmake/DragDrop.cmake b/indra/cmake/DragDrop.cmake
new file mode 100644
index 00000000000..a2d7df13129
--- /dev/null
+++ b/indra/cmake/DragDrop.cmake
@@ -0,0 +1,25 @@
+# -*- cmake -*-
+
+if (VIEWER)
+
+  OPTION (OS_DRAG_DROP
+  "Build the viewer with OS level drag and drop turned on or off"
+  OFF)
+
+  if (OS_DRAG_DROP)
+
+    if (WINDOWS)
+      add_definitions(-DLL_OS_DRAGDROP_ENABLED=1)
+    endif (WINDOWS)
+
+    if (DARWIN)
+      add_definitions(-DLL_OS_DRAGDROP_ENABLED=0)
+    endif (DARWIN)
+
+    if (LINUX)
+      add_definitions(-DLL_OS_DRAGDROP_ENABLED=0)
+    endif (LINUX)
+
+  endif (OS_DRAG_DROP)
+
+endif (VIEWER)
diff --git a/indra/llwindow/CMakeLists.txt b/indra/llwindow/CMakeLists.txt
index b4a3f744512..77c6fa57b6c 100644
--- a/indra/llwindow/CMakeLists.txt
+++ b/indra/llwindow/CMakeLists.txt
@@ -12,6 +12,7 @@ project(llwindow)
 
 include(00-Common)
 include(DirectX)
+include(DragDrop)
 include(LLCommon)
 include(LLImage)
 include(LLMath)
diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp
index aac68e71af2..471c88675df 100644
--- a/indra/llwindow/lldragdropwin32.cpp
+++ b/indra/llwindow/lldragdropwin32.cpp
@@ -32,6 +32,8 @@
 
 #if LL_WINDOWS
 
+#if LL_OS_DRAGDROP_ENABLED
+
 #include "linden_common.h"
 
 #include "llwindowwin32.h"
@@ -272,4 +274,7 @@ void LLDragDropWin32::reset()
 	OleUninitialize();
 }
 
-#endif
+#endif // LL_OS_DRAGDROP_ENABLED
+
+#endif // LL_WINDOWS
+
diff --git a/indra/llwindow/lldragdropwin32.h b/indra/llwindow/lldragdropwin32.h
index 624f4ad24bc..26c8e4aeff5 100644
--- a/indra/llwindow/lldragdropwin32.h
+++ b/indra/llwindow/lldragdropwin32.h
@@ -30,11 +30,13 @@
  * $/LicenseInfo$
  */
 
+#if LL_WINDOWS
+
+#if LL_OS_DRAGDROP_ENABLED
+
 #ifndef LL_LLDRAGDROP32_H
 #define LL_LLDRAGDROP32_H
 
-#if LL_WINDOWS
-
 #include <windows.h>
 #include <ole2.h>
 
@@ -51,7 +53,28 @@ class LLDragDropWin32
 		IDropTarget* mDropTarget;
 		HWND mDropWindowHandle;
 };
+#endif // LL_LLDRAGDROP32_H
 
-#endif // LL_WINDOWS
+#else // LL_OS_DRAGDROP_ENABLED
 
+#ifndef LL_LLDRAGDROP32_H
+#define LL_LLDRAGDROP32_H
+
+#include <windows.h>
+#include <ole2.h>
+
+// imposter class that does nothing 
+class LLDragDropWin32
+{
+	public:
+		LLDragDropWin32() {};
+		~LLDragDropWin32() {};
+
+		bool init( HWND hWnd ) { return false; };
+		void reset() { };
+};
 #endif // LL_LLDRAGDROP32_H
+
+#endif // LL_OS_DRAGDROP_ENABLED
+
+#endif // LL_WINDOWS
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index b129bca1f39..352e9a93820 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -7,6 +7,7 @@ include(Boost)
 include(BuildVersion)
 include(DBusGlib)
 include(DirectX)
+include(DragDrop)
 include(ELFIO)
 include(FMOD)
 include(OPENAL)
-- 
GitLab


From 9e53ad6111ce0e15cb10f2ffb47fee8b48d1c3db Mon Sep 17 00:00:00 2001
From: callum <none@none>
Date: Wed, 18 Nov 2009 21:17:39 -0800
Subject: [PATCH 010/521] Doh! Update the CMake file that controls drag and
 drop to turn it ON

---
 indra/cmake/DragDrop.cmake | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/cmake/DragDrop.cmake b/indra/cmake/DragDrop.cmake
index a2d7df13129..739d011813a 100644
--- a/indra/cmake/DragDrop.cmake
+++ b/indra/cmake/DragDrop.cmake
@@ -4,7 +4,7 @@ if (VIEWER)
 
   OPTION (OS_DRAG_DROP
   "Build the viewer with OS level drag and drop turned on or off"
-  OFF)
+  ON)
 
   if (OS_DRAG_DROP)
 
-- 
GitLab


From d4ba73ed721fa0811474fc53300f560539d38018 Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Thu, 19 Nov 2009 09:24:26 -0800
Subject: [PATCH 011/521] Fix merge error

---
 indra/llwindow/lldragdropwin32.cpp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp
index 4fc64f2f69d..b39cd836982 100644
--- a/indra/llwindow/lldragdropwin32.cpp
+++ b/indra/llwindow/lldragdropwin32.cpp
@@ -124,7 +124,7 @@ class LLDragDropWin32Target:
 			if ( mAllowDrop )
 			{
 			// XXX MAJOR MAJOR HACK!
-			LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mWindowHandle, GWL_USERDATA);
+			LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA);
 			if (NULL != window_imp)
 			{
 				LLCoordGL gl_coord( 0, 0 );
@@ -132,12 +132,12 @@ class LLDragDropWin32Target:
 				POINT pt2;
 				pt2.x = pt.x;
 				pt2.y = pt.y;
-				ScreenToClient( mWindowHandle, &pt2 );
+				ScreenToClient( mAppWindowHandle, &pt2 );
 
 				LLCoordWindow cursor_coord_window( pt2.x, pt2.y );
 				window_imp->convertCoords(cursor_coord_window, &gl_coord);
 				MASK mask = gKeyboard->currentMask(TRUE);
-				bDropTargetValid = window_imp->completeDragNDropRequest( gl_coord, mask, FALSE, std::string( "" ) );
+				window_imp->completeDragNDropRequest( gl_coord, mask, FALSE, std::string( "" ) );
 			}
 				*pdwEffect = DROPEFFECT_COPY;
 			}
-- 
GitLab


From dbe1f9755896e41e2064a3ee69725d753c67921f Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Mon, 23 Nov 2009 17:18:54 -0800
Subject: [PATCH 012/521] Highlight the object if it is being dragged over and
 can be dropped upon

---
 indra/newview/llviewerwindow.cpp | 10 ++++++++--
 indra/newview/llviewerwindow.h   |  3 +++
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 55e66e11382..17b9490f632 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -833,7 +833,8 @@ BOOL LLViewerWindow::handleDragNDrop( LLWindow *window,  LLCoordGL pos, MASK mas
 		llinfos << "### Object: picked at " << pos.mX << ", " << pos.mY << " - face = " << object_face << " - URL = " << url << llendl;
 
 		LLVOVolume *obj = dynamic_cast<LLVOVolume*>(static_cast<LLViewerObject*>(pick_info.getObject()));
-		if (obj)
+		gPipeline.setHighlightObject(NULL);
+		if (obj && obj->permModify())
 		{
 			LLTextureEntry *te = obj->getTE(object_face);
 			if (te)
@@ -859,11 +860,16 @@ BOOL LLViewerWindow::handleDragNDrop( LLWindow *window,  LLCoordGL pos, MASK mas
 					}
 				}
 				else {
-					// XXX TODO: make object glow?  Hard because how do we "unglow?"
+					mDragHoveredObject = obj;
+					// Make the object glow
+					gPipeline.setHighlightObject(mDragHoveredObject->mDrawable);
 				}
 				result = TRUE;
 			}
 		}
+		else {
+			mDragHoveredObject = NULL;
+		}
 	}
 	return result;
 }
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index 311fea3508f..428c602b73a 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -474,6 +474,9 @@ class LLViewerWindow : public LLWindowCallbacks
 	static std::string sSnapshotDir;
 
 	static std::string sMovieBaseName;
+	
+private:
+	LLPointer<LLViewerObject>	mDragHoveredObject;
 };	
 
 void toggle_flying(void*);
-- 
GitLab


From 8d84b7ae4062d8680aae2bb8325813bdac0335ed Mon Sep 17 00:00:00 2001
From: callum <none@none>
Date: Tue, 24 Nov 2009 18:31:30 -0800
Subject: [PATCH 013/521] Add support for changing OS cursor when mouse passes
 over a prim you can drop on versus one you can't.

---
 indra/llwindow/lldragdropwin32.cpp | 38 +++++++++++++++++-------------
 1 file changed, 22 insertions(+), 16 deletions(-)

diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp
index a10cfbf12f0..6024931092d 100644
--- a/indra/llwindow/lldragdropwin32.cpp
+++ b/indra/llwindow/lldragdropwin32.cpp
@@ -125,23 +125,29 @@ class LLDragDropWin32Target:
 		{
 			if ( mAllowDrop )
 			{
-			// XXX MAJOR MAJOR HACK!
-			LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA);
-			if (NULL != window_imp)
-			{
-				LLCoordGL gl_coord( 0, 0 );
-
-				POINT pt2;
-				pt2.x = pt.x;
-				pt2.y = pt.y;
-				ScreenToClient( mAppWindowHandle, &pt2 );
+				bool allowed_to_drop = false;
 
-				LLCoordWindow cursor_coord_window( pt2.x, pt2.y );
-				window_imp->convertCoords(cursor_coord_window, &gl_coord);
-				MASK mask = gKeyboard->currentMask(TRUE);
-				window_imp->completeDragNDropRequest( gl_coord, mask, FALSE, std::string( "" ) );
-			}
-				*pdwEffect = DROPEFFECT_COPY;
+				// XXX MAJOR MAJOR HACK!
+				LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA);
+				if (NULL != window_imp)
+				{
+					LLCoordGL gl_coord( 0, 0 );
+
+					POINT pt2;
+					pt2.x = pt.x;
+					pt2.y = pt.y;
+					ScreenToClient( mAppWindowHandle, &pt2 );
+
+					LLCoordWindow cursor_coord_window( pt2.x, pt2.y );
+					window_imp->convertCoords(cursor_coord_window, &gl_coord);
+					MASK mask = gKeyboard->currentMask(TRUE);
+					allowed_to_drop = window_imp->completeDragNDropRequest( gl_coord, mask, FALSE, std::string( "" ) );
+				}
+
+				if ( allowed_to_drop )
+					*pdwEffect = DROPEFFECT_COPY;
+				else
+					*pdwEffect = DROPEFFECT_NONE;
 			}
 			else
 			{
-- 
GitLab


From e2e7d544b6a114e70e3b46f516a4f0e8d7db4bd1 Mon Sep 17 00:00:00 2001
From: callum <none@none>
Date: Tue, 24 Nov 2009 20:20:53 -0800
Subject: [PATCH 014/521] Added support for dropping SURLs onto viewer Does
 right thing when logged in - needs some work at login page Removed (commented
 out) WM_DROPFILES code for now

---
 indra/llwindow/lldragdropwin32.cpp   | 103 +++++++++++++-------------
 indra/llwindow/llwindowcallbacks.cpp |   2 +-
 indra/llwindow/llwindowcallbacks.h   |   2 +-
 indra/llwindow/llwindowwin32.cpp     | 105 ++++++++++++++-------------
 indra/llwindow/llwindowwin32.h       |   2 +-
 indra/newview/llviewerwindow.cpp     |  10 ++-
 indra/newview/llviewerwindow.h       |   2 +-
 7 files changed, 121 insertions(+), 105 deletions(-)

diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp
index 6024931092d..74f96f6da3c 100644
--- a/indra/llwindow/lldragdropwin32.cpp
+++ b/indra/llwindow/lldragdropwin32.cpp
@@ -54,6 +54,10 @@ class LLDragDropWin32Target:
 		{
 		};
 
+		virtual ~LLDragDropWin32Target()
+		{
+		};
+
 		////////////////////////////////////////////////////////////////////////////////
 		//
 		ULONG __stdcall AddRef( void )
@@ -105,6 +109,20 @@ class LLDragDropWin32Target:
 			if ( S_OK == pDataObject->QueryGetData( &fmtetc ) )
 			{
 				mAllowDrop = true;
+				mDropUrl = std::string();
+				mIsSlurl = false;
+
+				STGMEDIUM stgmed;
+				if( S_OK == pDataObject->GetData( &fmtetc, &stgmed ) )
+				{
+					PVOID data = GlobalLock( stgmed.hGlobal );
+					mDropUrl = std::string( (char*)data );
+
+					mIsSlurl = ( mDropUrl.find( "slurl.com" ) != std::string::npos );
+
+					GlobalUnlock( stgmed.hGlobal );
+					ReleaseStgMedium( &stgmed );
+				};
 
 				*pdwEffect = DROPEFFECT_COPY;
 
@@ -125,8 +143,6 @@ class LLDragDropWin32Target:
 		{
 			if ( mAllowDrop )
 			{
-				bool allowed_to_drop = false;
-
 				// XXX MAJOR MAJOR HACK!
 				LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA);
 				if (NULL != window_imp)
@@ -141,13 +157,17 @@ class LLDragDropWin32Target:
 					LLCoordWindow cursor_coord_window( pt2.x, pt2.y );
 					window_imp->convertCoords(cursor_coord_window, &gl_coord);
 					MASK mask = gKeyboard->currentMask(TRUE);
-					allowed_to_drop = window_imp->completeDragNDropRequest( gl_coord, mask, FALSE, std::string( "" ) );
-				}
 
-				if ( allowed_to_drop )
-					*pdwEffect = DROPEFFECT_COPY;
-				else
-					*pdwEffect = DROPEFFECT_NONE;
+					bool allowed_to_drop = window_imp->completeDragNDropRequest( gl_coord, mask, FALSE, std::string( "" ), mIsSlurl );
+					if ( allowed_to_drop )
+						*pdwEffect = DROPEFFECT_COPY;
+					else
+						*pdwEffect = DROPEFFECT_NONE;
+
+					// special case for SLURLs - you can always drop them on the client window and we need a different cursor
+					if ( mIsSlurl )
+						*pdwEffect = DROPEFFECT_LINK;
+				};
 			}
 			else
 			{
@@ -161,6 +181,7 @@ class LLDragDropWin32Target:
 		//
 		HRESULT __stdcall DragLeave( void )
 		{
+			mDropUrl = std::string();
 			return S_OK;
 		};
 
@@ -170,48 +191,30 @@ class LLDragDropWin32Target:
 		{
 			if ( mAllowDrop )
 			{
-				// construct a FORMATETC object
-				FORMATETC fmtetc = { CF_TEXT, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL };
-
-				// do we have text?
-				if( S_OK == pDataObject->QueryGetData( &fmtetc ) )
+				// window impl stored in Window data (neat!)
+				LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong( mAppWindowHandle, GWL_USERDATA );
+				if ( NULL != window_imp )
 				{
-					STGMEDIUM stgmed;
-					if( S_OK == pDataObject->GetData( &fmtetc, &stgmed ) )
-					{
-						// note: data is in an HGLOBAL - not 'regular' memory
-						PVOID data = GlobalLock( stgmed.hGlobal );
-
-						// window impl stored in Window data (neat!)
-						LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong( mAppWindowHandle, GWL_USERDATA );
-						if ( NULL != window_imp )
-						{
-							LLCoordGL gl_coord( 0, 0 );
-
-							POINT pt_client;
-							pt_client.x = pt.x;
-							pt_client.y = pt.y;
-							ScreenToClient( mAppWindowHandle, &pt_client );
-
-							LLCoordWindow cursor_coord_window( pt_client.x, pt_client.y );
-							window_imp->convertCoords(cursor_coord_window, &gl_coord);
-							llinfos << "### (Drop) URL is: " << data << llendl;
-							llinfos << "###        raw coords are: " << pt.x << " x " << pt.y << llendl;
-							llinfos << "###	    client coords are: " << pt_client.x << " x " << pt_client.y << llendl;
-							llinfos << "###         GL coords are: " << gl_coord.mX << " x " << gl_coord.mY << llendl;
-							llinfos << llendl;
-
-							// no keyboard modifier option yet but we could one day
-							MASK mask = gKeyboard->currentMask( TRUE );
-
-							// actually do the drop
-							window_imp->completeDragNDropRequest( gl_coord, mask, TRUE, std::string( (char*)data ) );
-						};
-
-						GlobalUnlock( stgmed.hGlobal );
-
-						ReleaseStgMedium( &stgmed );
-					};
+					LLCoordGL gl_coord( 0, 0 );
+
+					POINT pt_client;
+					pt_client.x = pt.x;
+					pt_client.y = pt.y;
+					ScreenToClient( mAppWindowHandle, &pt_client );
+
+					LLCoordWindow cursor_coord_window( pt_client.x, pt_client.y );
+					window_imp->convertCoords(cursor_coord_window, &gl_coord);
+					llinfos << "### (Drop) URL is: " << mDropUrl << llendl;
+					llinfos << "###        raw coords are: " << pt.x << " x " << pt.y << llendl;
+					llinfos << "###	    client coords are: " << pt_client.x << " x " << pt_client.y << llendl;
+					llinfos << "###         GL coords are: " << gl_coord.mX << " x " << gl_coord.mY << llendl;
+					llinfos << llendl;
+
+					// no keyboard modifier option yet but we could one day
+					MASK mask = gKeyboard->currentMask( TRUE );
+
+					// actually do the drop
+					window_imp->completeDragNDropRequest( gl_coord, mask, TRUE, mDropUrl, mIsSlurl );
 				};
 
 				*pdwEffect = DROPEFFECT_COPY;
@@ -230,6 +233,8 @@ class LLDragDropWin32Target:
 		LONG mRefCount;
 		HWND mAppWindowHandle;
 		bool mAllowDrop;
+		std::string mDropUrl;
+		bool mIsSlurl;
 		friend class LLWindowWin32;
 };
 
diff --git a/indra/llwindow/llwindowcallbacks.cpp b/indra/llwindow/llwindowcallbacks.cpp
index b8927a1ac4f..3b0aeeab1fa 100644
--- a/indra/llwindow/llwindowcallbacks.cpp
+++ b/indra/llwindow/llwindowcallbacks.cpp
@@ -163,7 +163,7 @@ void LLWindowCallbacks::handleDataCopy(LLWindow *window, S32 data_type, void *da
 {
 }
 
-BOOL LLWindowCallbacks::handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data )
+BOOL LLWindowCallbacks::handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data, BOOL is_slurl )
 {
 	return FALSE;
 }
diff --git a/indra/llwindow/llwindowcallbacks.h b/indra/llwindow/llwindowcallbacks.h
index 8e7605a6505..1b4a6cbda22 100644
--- a/indra/llwindow/llwindowcallbacks.h
+++ b/indra/llwindow/llwindowcallbacks.h
@@ -68,7 +68,7 @@ class LLWindowCallbacks
 	virtual void handleWindowBlock(LLWindow *window);							// window is taking over CPU for a while
 	virtual void handleWindowUnblock(LLWindow *window);							// window coming back after taking over CPU for a while
 	virtual void handleDataCopy(LLWindow *window, S32 data_type, void *data);
-	virtual BOOL handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data);
+	virtual BOOL handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data, BOOL is_slurl);
 	virtual BOOL handleTimerEvent(LLWindow *window);
 	virtual BOOL handleDeviceChange(LLWindow *window);
 
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index eda8cf15b08..78bc3b9c587 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -2355,57 +2355,60 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
 			};
 			return 0;			
 
-		case WM_DROPFILES:
-			{
-				// HDROP contains what we need
-				HDROP hdrop = (HDROP)w_param;
-
-				// get location in window space where drop occured and convert to OpenGL coordinate space
-				POINT pt;
-				DragQueryPoint( hdrop, &pt );
-				LLCoordGL gl_coord;
-				LLCoordWindow cursor_coord_window( pt.x, pt.y );
-				window_imp->convertCoords(cursor_coord_window, &gl_coord);
-
-				// get payload (eventually, this needs to more advanced and grab size of payload dynamically
-				static char file_name[ 1024 ];
-				DragQueryFileA( hdrop, 0, file_name, 1024 );
-				void* url = (void*)( file_name );
-
-				// if it's a .URL or .lnk ("shortcut") file
-				if ( std::string( file_name ).find( ".lnk" ) != std::string::npos ||
-					  std::string( file_name ).find( ".URL" ) != std::string::npos )
-				{
-					// read through file - looks like a 2 line file with second line URL= but who knows..
-					std::ifstream file_handle( file_name );
-					if ( file_handle.is_open() )
-					{
-						std::string line;
-						while ( ! file_handle.eof() )
-						{
-							std::getline( file_handle, line );
-							if ( ! file_handle.eof() )
-							{
-								std::string prefix( "URL=" );
-								if ( line.find( prefix, 0 ) != std::string::npos )
-								{
-									line = line.substr( 4 );  // skip off the URL= bit
-									strcpy( (char*)url, line.c_str() );
-									break;
-								};
-							};
-						};
-						file_handle.close();
-					};
-				};
+		// only useful for droppnig files - could be used for file upload dialog one day
+		//case WM_DROPFILES:
+		//	{
+		//		// HDROP contains what we need
+		//		HDROP hdrop = (HDROP)w_param;
+
+		//		// get location in window space where drop occured and convert to OpenGL coordinate space
+		//		POINT pt;
+		//		DragQueryPoint( hdrop, &pt );
+		//		LLCoordGL gl_coord;
+		//		LLCoordWindow cursor_coord_window( pt.x, pt.y );
+		//		window_imp->convertCoords(cursor_coord_window, &gl_coord);
+
+		//		// get payload (eventually, this needs to more advanced and grab size of payload dynamically
+		//		static char file_name[ 1024 ];
+		//		DragQueryFileA( hdrop, 0, file_name, 1024 );
+		//		void* url = (void*)( file_name );
+
+		//		// if it's a .URL or .lnk ("shortcut") file
+		//		if ( std::string( file_name ).find( ".lnk" ) != std::string::npos ||
+		//			  std::string( file_name ).find( ".URL" ) != std::string::npos )
+		//		{
+		//			// read through file - looks like a 2 line file with second line URL= but who knows..
+		//			std::ifstream file_handle( file_name );
+		//			if ( file_handle.is_open() )
+		//			{
+		//				std::string line;
+		//				while ( ! file_handle.eof() )
+		//				{
+		//					std::getline( file_handle, line );
+		//					if ( ! file_handle.eof() )
+		//					{
+		//						std::string prefix( "URL=" );
+		//						if ( line.find( prefix, 0 ) != std::string::npos )
+		//						{
+		//							line = line.substr( 4 );  // skip off the URL= bit
+		//							strcpy( (char*)url, line.c_str() );
+		//							break;
+		//						};
+		//					};
+		//				};
+		//				file_handle.close();
+		//			};
+		//		};
+
+		//		MASK mask = gKeyboard->currentMask(TRUE);
+
+		//		if ( window_imp->completeDragNDropRequest( gl_coord, mask, true, (char*)url, false ) )
+		//		{
+		//			return 0;
+		//		};
+		//	}
 
-				MASK mask = gKeyboard->currentMask(TRUE);
 
-				if ( window_imp->completeDragNDropRequest( gl_coord, mask, true, (char*)url ) )
-				{
-					return 0;
-				};
-			}
 			break;
 		}
 
@@ -3578,9 +3581,9 @@ static LLWString find_context(const LLWString & wtext, S32 focus, S32 focus_leng
 
 // final stage of handling drop requests - both from WM_DROPFILES message
 // for files and via IDropTarget interface requests.
-BOOL LLWindowWin32::completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, BOOL drop, const std::string url )
+BOOL LLWindowWin32::completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, BOOL drop, const std::string url, BOOL is_slurl )
 {
-	return mCallbacks->handleDragNDrop( this, gl_coord, mask, drop, url );
+	return mCallbacks->handleDragNDrop( this, gl_coord, mask, drop, url, is_slurl );
 }
 
 // Handle WM_IME_REQUEST message.
diff --git a/indra/llwindow/llwindowwin32.h b/indra/llwindow/llwindowwin32.h
index e99c26b7f1f..7f7acd5751c 100644
--- a/indra/llwindow/llwindowwin32.h
+++ b/indra/llwindow/llwindowwin32.h
@@ -113,7 +113,7 @@ class LLWindowWin32 : public LLWindow
 	/*virtual*/ void interruptLanguageTextInput();
 	/*virtual*/ void spawnWebBrowser(const std::string& escaped_url);
 
-	BOOL completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, BOOL drop, const std::string url );
+	BOOL completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, BOOL drop, const std::string url, BOOL is_slurl );
 
 	static std::vector<std::string> getDynamicFallbackFontList();
 
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 17b9490f632..dd84140d5be 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -80,6 +80,7 @@
 #include "llviewermenu.h"
 #include "lltooltip.h"
 #include "llmediaentry.h"
+#include "llurldispatcher.h"
 
 // newview includes
 #include "llagent.h"
@@ -819,11 +820,18 @@ BOOL LLViewerWindow::handleMiddleMouseDown(LLWindow *window,  LLCoordGL pos, MAS
 	return TRUE;
 }
 
-BOOL LLViewerWindow::handleDragNDrop( LLWindow *window,  LLCoordGL pos, MASK mask, BOOL drop, std::string data )
+BOOL LLViewerWindow::handleDragNDrop( LLWindow *window,  LLCoordGL pos, MASK mask, BOOL drop, std::string data, BOOL slurl )
 {
 	BOOL result = FALSE;
 	if (gSavedSettings.getBOOL("PrimMediaDragNDrop"))
 	{
+		// special case SLURLs
+		if ( slurl )
+		{
+			LLURLDispatcher::dispatch( data, NULL, true );
+			return TRUE;
+		};
+
 		LLPickInfo pick_info = pickImmediate( pos.mX, pos.mY,  TRUE /*BOOL pick_transparent*/ );
 
 		LLUUID object_id = pick_info.getObjectID();
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index 428c602b73a..4296495067a 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -170,7 +170,7 @@ class LLViewerWindow : public LLWindowCallbacks
 	/*virtual*/ BOOL handleRightMouseUp(LLWindow *window,  LLCoordGL pos, MASK mask);
 	/*virtual*/ BOOL handleMiddleMouseDown(LLWindow *window,  LLCoordGL pos, MASK mask);
 	/*virtual*/ BOOL handleMiddleMouseUp(LLWindow *window,  LLCoordGL pos, MASK mask);
-	/*virtual*/ BOOL handleDragNDrop(LLWindow *window,  LLCoordGL pos, MASK mask, BOOL drop, std::string data);
+	/*virtual*/ BOOL handleDragNDrop(LLWindow *window,  LLCoordGL pos, MASK mask, BOOL drop, std::string data, BOOL slurl);
 				void handleMouseMove(LLWindow *window,  LLCoordGL pos, MASK mask);
 	/*virtual*/ void handleMouseLeave(LLWindow *window);
 	/*virtual*/ void handleResize(LLWindow *window,  S32 x,  S32 y);
-- 
GitLab


From 97af20b4ba4a400569e99a616fc026190d3eec6c Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Wed, 25 Nov 2009 09:52:20 -0800
Subject: [PATCH 015/521] Change drag highlighting to use
 LLSelectMgr::{un}highlightObjectOnly() instead of
 gPipeline.setHighlightObject().

The latter seems a little buggy.
---
 indra/newview/llviewerwindow.cpp | 14 ++++++++++----
 indra/newview/llviewerwindow.h   |  1 +
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 17b9490f632..cc74c1fbe23 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -833,7 +833,7 @@ BOOL LLViewerWindow::handleDragNDrop( LLWindow *window,  LLCoordGL pos, MASK mas
 		llinfos << "### Object: picked at " << pos.mX << ", " << pos.mY << " - face = " << object_face << " - URL = " << url << llendl;
 
 		LLVOVolume *obj = dynamic_cast<LLVOVolume*>(static_cast<LLViewerObject*>(pick_info.getObject()));
-		gPipeline.setHighlightObject(NULL);
+		
 		if (obj && obj->permModify())
 		{
 			LLTextureEntry *te = obj->getTE(object_face);
@@ -858,19 +858,25 @@ BOOL LLViewerWindow::handleDragNDrop( LLWindow *window,  LLCoordGL pos, MASK mas
 						// just navigate to the URL
 						obj->getMediaImpl(object_face)->navigateTo(url);
 					}
+					LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject);
+					mDragHoveredObject = NULL;
 				}
 				else {
 					mDragHoveredObject = obj;
-					// Make the object glow
-					gPipeline.setHighlightObject(mDragHoveredObject->mDrawable);
+					// Highlight the dragged object
+					LLSelectMgr::getInstance()->highlightObjectOnly(mDragHoveredObject);
 				}
 				result = TRUE;
 			}
 		}
-		else {
+
+		if (!result && !mDragHoveredObject.isNull())
+		{
+			LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject);
 			mDragHoveredObject = NULL;
 		}
 	}
+	
 	return result;
 }
   
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index 428c602b73a..c3aa1b2407f 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -476,6 +476,7 @@ class LLViewerWindow : public LLWindowCallbacks
 	static std::string sMovieBaseName;
 	
 private:
+	// Object temporarily hovered over while dragging
 	LLPointer<LLViewerObject>	mDragHoveredObject;
 };	
 
-- 
GitLab


From e0a7b7608f087b7d3a4b91ba7868e0a5c04aaa86 Mon Sep 17 00:00:00 2001
From: callum <none@none>
Date: Mon, 30 Nov 2009 20:19:39 -0800
Subject: [PATCH 016/521] Add support for dropping a region SLURL on login page
 and populating the UI

---
 indra/newview/llpanellogin.cpp   | 15 +++++++++++++++
 indra/newview/llpanellogin.h     |  3 ++-
 indra/newview/llviewerwindow.cpp |  6 +++++-
 3 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp
index d2a17dbd979..ba3782bf53a 100644
--- a/indra/newview/llpanellogin.cpp
+++ b/indra/newview/llpanellogin.cpp
@@ -682,6 +682,21 @@ void LLPanelLogin::refreshLocation( bool force_visible )
 #endif
 }
 
+// static
+void LLPanelLogin::updateLocationUI()
+{
+	std::string sim_string = LLURLSimString::sInstance.mSimString;
+	if (!sim_string.empty())
+	{
+		// Replace "<Type region name>" with this region name
+		LLComboBox* combo = sInstance->getChild<LLComboBox>("start_location_combo");
+		combo->remove(2);
+		combo->add( sim_string );
+		combo->setTextEntry(sim_string);
+		combo->setCurrentByIndex( 2 );
+	}
+}
+
 // static
 void LLPanelLogin::closePanel()
 {
diff --git a/indra/newview/llpanellogin.h b/indra/newview/llpanellogin.h
index acb2001c22f..8f24450c086 100644
--- a/indra/newview/llpanellogin.h
+++ b/indra/newview/llpanellogin.h
@@ -70,6 +70,7 @@ class LLPanelLogin:
 
 	static void addServer(const std::string& server, S32 domain_name);
 	static void refreshLocation( bool force_visible );
+	static void updateLocationUI();
 
 	static void getFields(std::string *firstname, std::string *lastname,
 						  std::string *password);
@@ -99,7 +100,7 @@ class LLPanelLogin:
 	static void onPassKey(LLLineEditor* caller, void* user_data);
 	static void onSelectServer(LLUICtrl*, void*);
 	static void onServerComboLostFocus(LLFocusableElement*);
-	
+
 private:
 	LLPointer<LLUIImage> mLogoImage;
 
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index f953a45890d..31b30344bef 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -50,6 +50,7 @@
 
 #include "llviewquery.h"
 #include "llxmltree.h"
+#include "llslurl.h"
 //#include "llviewercamera.h"
 #include "llrender.h"
 
@@ -828,9 +829,12 @@ BOOL LLViewerWindow::handleDragNDrop( LLWindow *window,  LLCoordGL pos, MASK mas
 	if (gSavedSettings.getBOOL("PrimMediaDragNDrop"))
 	{
 		// special case SLURLs
-		if ( slurl )
+		if ( drop && slurl )
 		{
 			LLURLDispatcher::dispatch( data, NULL, true );
+			LLURLSimString::setString( LLSLURL::stripProtocol( data ) );
+			LLPanelLogin::refreshLocation( true );
+			LLPanelLogin::updateLocationUI();
 			return TRUE;
 		};
 
-- 
GitLab


From c272582ab78d43c595eefb843126c999c09dfd4f Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Thu, 3 Dec 2009 11:48:28 -0800
Subject: [PATCH 017/521] Change API to no longer include slurl argument (its a
 platform-agnostic policy), add some code (not working yet) to implement DND
 on the mac

---
 indra/llwindow/llwindowcallbacks.cpp |  4 +-
 indra/llwindow/llwindowcallbacks.h   | 11 +++-
 indra/llwindow/llwindowmacosx.cpp    | 96 ++++++++++++++++++++++++++--
 indra/llwindow/llwindowmacosx.h      | 13 +++-
 indra/newview/llviewerwindow.cpp     | 22 ++++---
 indra/newview/llviewerwindow.h       |  2 +-
 6 files changed, 125 insertions(+), 23 deletions(-)

diff --git a/indra/llwindow/llwindowcallbacks.cpp b/indra/llwindow/llwindowcallbacks.cpp
index 3b0aeeab1fa..a6d23527327 100644
--- a/indra/llwindow/llwindowcallbacks.cpp
+++ b/indra/llwindow/llwindowcallbacks.cpp
@@ -163,9 +163,9 @@ void LLWindowCallbacks::handleDataCopy(LLWindow *window, S32 data_type, void *da
 {
 }
 
-BOOL LLWindowCallbacks::handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data, BOOL is_slurl )
+LLWindowCallbacks::DragNDropResult LLWindowCallbacks::handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data )
 {
-	return FALSE;
+	return LLWindowCallbacks::DND_NONE;
 }
 
 BOOL LLWindowCallbacks::handleTimerEvent(LLWindow *window)
diff --git a/indra/llwindow/llwindowcallbacks.h b/indra/llwindow/llwindowcallbacks.h
index 1b4a6cbda22..a109879da73 100644
--- a/indra/llwindow/llwindowcallbacks.h
+++ b/indra/llwindow/llwindowcallbacks.h
@@ -68,10 +68,17 @@ class LLWindowCallbacks
 	virtual void handleWindowBlock(LLWindow *window);							// window is taking over CPU for a while
 	virtual void handleWindowUnblock(LLWindow *window);							// window coming back after taking over CPU for a while
 	virtual void handleDataCopy(LLWindow *window, S32 data_type, void *data);
-	virtual BOOL handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data, BOOL is_slurl);
 	virtual BOOL handleTimerEvent(LLWindow *window);
 	virtual BOOL handleDeviceChange(LLWindow *window);
-
+	
+	enum DragNDropResult {
+		DND_NONE = 0,	// No drop allowed
+		DND_MOVE,		// Drop accepted would result in a "move" operation
+		DND_COPY,		// Drop accepted would result in a "copy" operation
+		DND_LINK		// Drop accepted would result in a "link" operation
+	};
+	virtual DragNDropResult handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data);
+	
 	virtual void handlePingWatchdog(LLWindow *window, const char * msg);
 	virtual void handlePauseWatchdog(LLWindow *window);
 	virtual void handleResumeWatchdog(LLWindow *window);
diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
index af9a30cb257..0acda8ab3a2 100644
--- a/indra/llwindow/llwindowmacosx.cpp
+++ b/indra/llwindow/llwindowmacosx.cpp
@@ -499,8 +499,9 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
 
 		// Set up window event handlers (some window-related events ONLY go to window handlers.)
 		InstallStandardEventHandler(GetWindowEventTarget(mWindow));
-		InstallWindowEventHandler (mWindow, mEventHandlerUPP, GetEventTypeCount (WindowHandlerEventList), WindowHandlerEventList, (void*)this, &mWindowHandlerRef); // add event handler
-
+		InstallWindowEventHandler(mWindow, mEventHandlerUPP, GetEventTypeCount (WindowHandlerEventList), WindowHandlerEventList, (void*)this, &mWindowHandlerRef); // add event handler
+		InstallTrackingHandler( dragTrackingHandler, mWindow, (void*)this );		
+		InstallReceiveHandler( dragReceiveHandler, mWindow, (void*)this );
 	}
 
 	{
@@ -2172,11 +2173,8 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 						}
 						else
 						{
-							MASK mask = 0;
-							if(modifiers & shiftKey) { mask |= MASK_SHIFT; }
-							if(modifiers & (cmdKey | controlKey)) { mask |= MASK_CONTROL; }
-							if(modifiers & optionKey) { mask |= MASK_ALT; }
-
+							MASK mask = LLWindowMacOSX::modifiersToMask(modifiers);
+							
 							llassert( actualType == typeUnicodeText );
 
 							// The result is a UTF16 buffer.  Pass the characters in turn to handleUnicodeChar.
@@ -3377,3 +3375,87 @@ std::vector<std::string> LLWindowMacOSX::getDynamicFallbackFontList()
 	return std::vector<std::string>();
 }
 
+// static
+MASK LLWindowMacOSX::modifiersToMask(SInt16 modifiers)
+{
+	MASK mask = 0;
+	if(modifiers & shiftKey) { mask |= MASK_SHIFT; }
+	if(modifiers & (cmdKey | controlKey)) { mask |= MASK_CONTROL; }
+	if(modifiers & optionKey) { mask |= MASK_ALT; }
+	return mask;
+}	
+
+OSErr LLWindowMacOSX::dragTrackingHandler(DragTrackingMessage message, WindowRef theWindow,
+						  void * handlerRefCon, DragRef theDrag)
+{
+	LLWindowMacOSX *self = (LLWindowMacOSX*)handlerRefCon;
+	return self->handleDragNDrop(theDrag, false);
+}
+
+OSErr LLWindowMacOSX::dragReceiveHandler(WindowRef theWindow, void * handlerRefCon,	
+										 DragRef theDrag)
+{	
+	LLWindowMacOSX *self = (LLWindowMacOSX*)handlerRefCon;
+	return self->handleDragNDrop(theDrag, true);
+
+}
+
+OSErr LLWindowMacOSX::handleDragNDrop(DragRef theDrag, bool drop)
+{	
+	OSErr result = noErr;
+	
+	UInt16 num_items = 0;
+	::CountDragItems(theDrag, &num_items);
+	if (1 == num_items)
+	{
+		SInt16 modifiers, mouseDownModifiers, mouseUpModifiers;
+		::GetDragModifiers(theDrag, &modifiers, &mouseDownModifiers, &mouseUpModifiers);
+		MASK mask = LLWindowMacOSX::modifiersToMask(modifiers);
+		
+		Point mouse_point;
+		// This will return the mouse point in global screen coords
+		::GetDragMouse(theDrag, &mouse_point, NULL);
+		LLCoordScreen screen_coords(mouse_point.v, mouse_point.h);
+		LLCoordGL gl_pos;
+		convertCoords(screen_coords, &gl_pos);
+		
+		DragItemRef theItemRef;
+		::GetDragItemReferenceNumber(theDrag, 0, &theItemRef);
+		
+		UInt16 numFlavors = 0;
+		::CountDragItemFlavors(theDrag, theItemRef, &numFlavors);		
+		
+		FlavorType theType = kScrapFlavorTypeUnicode;
+		std::string url;
+		for (UInt16 i=0; i<numFlavors; i++)
+		{
+			::GetFlavorType(theDrag, theItemRef, i, &theType);
+			
+			printf("Drag Flavor: '%lu'", theType);
+			fflush(stdout);
+		}
+		
+		Size size = 1024;
+		::GetFlavorDataSize(theDrag, theItemRef, theType, &size);
+		
+		::GetFlavorData(theDrag, theItemRef, theType, mDragData, &size, 0);
+		url = mDragData;
+				
+		printf("Drag Flavor: '%lu'  - Drag data : %s", theType, url.c_str());
+		fflush(stdout);
+			
+		LLWindowCallbacks::DragNDropResult res = 
+			mCallbacks->handleDragNDrop(this, gl_pos, mask, drop, url);
+		
+		if (LLWindowCallbacks::DND_NONE == res)
+		{
+			result = dragNotAcceptedErr;
+		}
+	}
+	else {
+		result = dragNotAcceptedErr;
+	}
+	
+	return result;
+}
+
diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h
index 17074080eb0..24e44417f50 100644
--- a/indra/llwindow/llwindowmacosx.h
+++ b/indra/llwindow/llwindowmacosx.h
@@ -160,8 +160,12 @@ class LLWindowMacOSX : public LLWindow
 	void adjustCursorDecouple(bool warpingMouse = false);
 	void fixWindowSize(void);
 	void stopDockTileBounce();
-
-
+	static MASK modifiersToMask(SInt16 modifiers);
+	static OSErr dragTrackingHandler(DragTrackingMessage message, WindowRef theWindow,
+									 void * handlerRefCon, DragRef theDrag);
+	static OSErr dragReceiveHandler(WindowRef theWindow, void * handlerRefCon,	DragRef theDrag);
+	OSErr handleDragNDrop(DragRef theDrag, bool drop);
+	
 	//
 	// Platform specific variables
 	//
@@ -198,13 +202,16 @@ class LLWindowMacOSX : public LLWindow
 	NMRec		mBounceRec;
 	LLTimer		mBounceTimer;
 
-	// Imput method management through Text Service Manager.
+	// Input method management through Text Service Manager.
 	TSMDocumentID	mTSMDocument;
 	BOOL		mLanguageTextInputAllowed;
 	ScriptCode	mTSMScriptCode;
 	LangCode	mTSMLangCode;
 	LLPreeditor*	mPreeditor;
 	
+	// Storage for drag data
+	char		mDragData[1024];
+								
 	static BOOL	sUseMultGL;
 
 	friend class LLWindowManager;
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index f953a45890d..fe6c9439bb0 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -822,16 +822,16 @@ BOOL LLViewerWindow::handleMiddleMouseDown(LLWindow *window,  LLCoordGL pos, MAS
 	return TRUE;
 }
 
-BOOL LLViewerWindow::handleDragNDrop( LLWindow *window,  LLCoordGL pos, MASK mask, BOOL drop, std::string data, BOOL slurl )
+LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data)
 {
-	BOOL result = FALSE;
+	LLWindowCallbacks::DragNDropResult result = LLWindowCallbacks::DND_NONE;
 	if (gSavedSettings.getBOOL("PrimMediaDragNDrop"))
 	{
 		// special case SLURLs
-		if ( slurl )
+		if ( std::string::npos != data.find("slurl.com") )
 		{
 			LLURLDispatcher::dispatch( data, NULL, true );
-			return TRUE;
+			return LLWindowCallbacks::DND_MOVE;
 		};
 
 		LLPickInfo pick_info = pickImmediate( pos.mX, pos.mY,  TRUE /*BOOL pick_transparent*/ );
@@ -863,24 +863,30 @@ BOOL LLViewerWindow::handleDragNDrop( LLWindow *window,  LLCoordGL pos, MASK mas
 						// XXX This shouldn't be necessary, should it ?!?
 						obj->getMediaImpl(object_face)->navigateReload();
 						obj->sendMediaDataUpdate();
+						
+						result = LLWindowCallbacks::DND_COPY;
 					}
 					else {
 						// just navigate to the URL
 						obj->getMediaImpl(object_face)->navigateTo(url);
+						
+						result = LLWindowCallbacks::DND_LINK;
 					}
 					LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject);
 					mDragHoveredObject = NULL;
+					
 				}
 				else {
 					mDragHoveredObject = obj;
 					// Highlight the dragged object
 					LLSelectMgr::getInstance()->highlightObjectOnly(mDragHoveredObject);
+					
+					result = (! te->hasMedia()) ? LLWindowCallbacks::DND_COPY : LLWindowCallbacks::DND_LINK;
 				}
-				result = TRUE;
 			}
 		}
 
-		if (!result && !mDragHoveredObject.isNull())
+		if (result == LLWindowCallbacks::DND_NONE && !mDragHoveredObject.isNull())
 		{
 			LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject);
 			mDragHoveredObject = NULL;
@@ -3312,8 +3318,8 @@ LLPickInfo LLViewerWindow::pickImmediate(S32 x, S32 y_from_bot,  BOOL pick_trans
 	}
 	else
 	{
-		llwarns << "List of last picks is empty" << llendl;
-		llwarns << "Using stub pick" << llendl;
+		lldebugs << "List of last picks is empty" << llendl;
+		lldebugs << "Using stub pick" << llendl;
 		mLastPick = LLPickInfo();
 	}
 
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index 11d19cf24d9..dc58292a6af 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -170,7 +170,7 @@ class LLViewerWindow : public LLWindowCallbacks
 	/*virtual*/ BOOL handleRightMouseUp(LLWindow *window,  LLCoordGL pos, MASK mask);
 	/*virtual*/ BOOL handleMiddleMouseDown(LLWindow *window,  LLCoordGL pos, MASK mask);
 	/*virtual*/ BOOL handleMiddleMouseUp(LLWindow *window,  LLCoordGL pos, MASK mask);
-	/*virtual*/ BOOL handleDragNDrop(LLWindow *window,  LLCoordGL pos, MASK mask, BOOL drop, std::string data, BOOL slurl);
+	/*virtual*/ LLWindowCallbacks::DragNDropResult handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data);
 				void handleMouseMove(LLWindow *window,  LLCoordGL pos, MASK mask);
 	/*virtual*/ void handleMouseLeave(LLWindow *window);
 	/*virtual*/ void handleResize(LLWindow *window,  S32 x,  S32 y);
-- 
GitLab


From ff53d4ff9b497f4f0f30035d7e02e6df290db6a4 Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Thu, 3 Dec 2009 12:19:02 -0800
Subject: [PATCH 018/521] Fix Windows build based on API change to
 handleDragNDrop()

---
 indra/llwindow/lldragdropwin32.cpp | 4 ++--
 indra/llwindow/llwindowwin32.cpp   | 4 ++--
 indra/llwindow/llwindowwin32.h     | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp
index 74f96f6da3c..a96f04ff1f2 100644
--- a/indra/llwindow/lldragdropwin32.cpp
+++ b/indra/llwindow/lldragdropwin32.cpp
@@ -158,7 +158,7 @@ class LLDragDropWin32Target:
 					window_imp->convertCoords(cursor_coord_window, &gl_coord);
 					MASK mask = gKeyboard->currentMask(TRUE);
 
-					bool allowed_to_drop = window_imp->completeDragNDropRequest( gl_coord, mask, FALSE, std::string( "" ), mIsSlurl );
+					bool allowed_to_drop = window_imp->completeDragNDropRequest( gl_coord, mask, FALSE, std::string( "" ) );
 					if ( allowed_to_drop )
 						*pdwEffect = DROPEFFECT_COPY;
 					else
@@ -214,7 +214,7 @@ class LLDragDropWin32Target:
 					MASK mask = gKeyboard->currentMask( TRUE );
 
 					// actually do the drop
-					window_imp->completeDragNDropRequest( gl_coord, mask, TRUE, mDropUrl, mIsSlurl );
+					window_imp->completeDragNDropRequest( gl_coord, mask, TRUE, mDropUrl );
 				};
 
 				*pdwEffect = DROPEFFECT_COPY;
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index 78bc3b9c587..dc1e2c017c5 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -3581,9 +3581,9 @@ static LLWString find_context(const LLWString & wtext, S32 focus, S32 focus_leng
 
 // final stage of handling drop requests - both from WM_DROPFILES message
 // for files and via IDropTarget interface requests.
-BOOL LLWindowWin32::completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, BOOL drop, const std::string url, BOOL is_slurl )
+BOOL LLWindowWin32::completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, BOOL drop, const std::string url )
 {
-	return mCallbacks->handleDragNDrop( this, gl_coord, mask, drop, url, is_slurl );
+	return mCallbacks->handleDragNDrop( this, gl_coord, mask, drop, url );
 }
 
 // Handle WM_IME_REQUEST message.
diff --git a/indra/llwindow/llwindowwin32.h b/indra/llwindow/llwindowwin32.h
index 7f7acd5751c..e99c26b7f1f 100644
--- a/indra/llwindow/llwindowwin32.h
+++ b/indra/llwindow/llwindowwin32.h
@@ -113,7 +113,7 @@ class LLWindowWin32 : public LLWindow
 	/*virtual*/ void interruptLanguageTextInput();
 	/*virtual*/ void spawnWebBrowser(const std::string& escaped_url);
 
-	BOOL completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, BOOL drop, const std::string url, BOOL is_slurl );
+	BOOL completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, BOOL drop, const std::string url );
 
 	static std::vector<std::string> getDynamicFallbackFontList();
 
-- 
GitLab


From bfe66526c83d260d3e69971d30786d1e061c2c47 Mon Sep 17 00:00:00 2001
From: Monroe Linden <monroe@lindenlab.com>
Date: Thu, 3 Dec 2009 17:01:58 -0800
Subject: [PATCH 019/521] Rewrote LLWindowMacOSX::handleDragNDrop() to use
 pasteboard manager instead of old, busted scrap manager to extract the data. 
 Also fixed a mouse coordinate issue that caused drag tracking to be off.

---
 indra/llwindow/llwindowmacosx.cpp | 141 +++++++++++++++++++-----------
 indra/llwindow/llwindowmacosx.h   |   3 -
 2 files changed, 92 insertions(+), 52 deletions(-)

diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
index 0acda8ab3a2..87296b1202b 100644
--- a/indra/llwindow/llwindowmacosx.cpp
+++ b/indra/llwindow/llwindowmacosx.cpp
@@ -3386,75 +3386,118 @@ MASK LLWindowMacOSX::modifiersToMask(SInt16 modifiers)
 }	
 
 OSErr LLWindowMacOSX::dragTrackingHandler(DragTrackingMessage message, WindowRef theWindow,
-						  void * handlerRefCon, DragRef theDrag)
+						  void * handlerRefCon, DragRef drag)
 {
+	OSErr result = noErr;
 	LLWindowMacOSX *self = (LLWindowMacOSX*)handlerRefCon;
-	return self->handleDragNDrop(theDrag, false);
+
+	lldebugs << "drag tracking handler, message = " << message << llendl;
+	
+	switch(message)
+	{
+		case kDragTrackingInWindow:
+			result = self->handleDragNDrop(drag, false);
+		break;
+		
+		case kDragTrackingEnterHandler:
+		case kDragTrackingLeaveHandler:
+			// TODO: We probably want to do something clever for these (at least for the LeaveHandler).
+		break;
+		
+		default:
+		break;
+	}
+	
+	return result;
 }
 
 OSErr LLWindowMacOSX::dragReceiveHandler(WindowRef theWindow, void * handlerRefCon,	
-										 DragRef theDrag)
+										 DragRef drag)
 {	
 	LLWindowMacOSX *self = (LLWindowMacOSX*)handlerRefCon;
-	return self->handleDragNDrop(theDrag, true);
+	return self->handleDragNDrop(drag, true);
 
 }
 
-OSErr LLWindowMacOSX::handleDragNDrop(DragRef theDrag, bool drop)
+OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, bool drop)
 {	
-	OSErr result = noErr;
+	OSErr result = dragNotAcceptedErr;	// overall function result
+	OSErr err = noErr;	// for local error handling
+	
+	// Get the mouse position and modifiers of this drag.
+	SInt16 modifiers, mouseDownModifiers, mouseUpModifiers;
+	::GetDragModifiers(drag, &modifiers, &mouseDownModifiers, &mouseUpModifiers);
+	MASK mask = LLWindowMacOSX::modifiersToMask(modifiers);
+	
+	Point mouse_point;
+	// This will return the mouse point in global screen coords
+	::GetDragMouse(drag, &mouse_point, NULL);
+	LLCoordScreen screen_coords(mouse_point.h, mouse_point.v);
+	LLCoordGL gl_pos;
+	convertCoords(screen_coords, &gl_pos);
 	
-	UInt16 num_items = 0;
-	::CountDragItems(theDrag, &num_items);
-	if (1 == num_items)
+	// Look at the pasteboard and try to extract an URL from it
+	PasteboardRef   pasteboard;
+	if(GetDragPasteboard(drag, &pasteboard) == noErr)
 	{
-		SInt16 modifiers, mouseDownModifiers, mouseUpModifiers;
-		::GetDragModifiers(theDrag, &modifiers, &mouseDownModifiers, &mouseUpModifiers);
-		MASK mask = LLWindowMacOSX::modifiersToMask(modifiers);
-		
-		Point mouse_point;
-		// This will return the mouse point in global screen coords
-		::GetDragMouse(theDrag, &mouse_point, NULL);
-		LLCoordScreen screen_coords(mouse_point.v, mouse_point.h);
-		LLCoordGL gl_pos;
-		convertCoords(screen_coords, &gl_pos);
-		
-		DragItemRef theItemRef;
-		::GetDragItemReferenceNumber(theDrag, 0, &theItemRef);
+		ItemCount num_items = 0;
+		// Treat an error here as an item count of 0
+		(void)PasteboardGetItemCount(pasteboard, &num_items);
 		
-		UInt16 numFlavors = 0;
-		::CountDragItemFlavors(theDrag, theItemRef, &numFlavors);		
-		
-		FlavorType theType = kScrapFlavorTypeUnicode;
-		std::string url;
-		for (UInt16 i=0; i<numFlavors; i++)
+		// Only deal with single-item drags.
+		if(num_items == 1)
 		{
-			::GetFlavorType(theDrag, theItemRef, i, &theType);
+			PasteboardItemID item_id = NULL;
+			CFArrayRef flavors = NULL;
+			CFDataRef data = NULL;
 			
-			printf("Drag Flavor: '%lu'", theType);
-			fflush(stdout);
-		}
-		
-		Size size = 1024;
-		::GetFlavorDataSize(theDrag, theItemRef, theType, &size);
-		
-		::GetFlavorData(theDrag, theItemRef, theType, mDragData, &size, 0);
-		url = mDragData;
+			err = PasteboardGetItemIdentifier(pasteboard, 1, &item_id); // Yes, this really is 1-based.
+			
+			// Try to extract an URL from the pasteboard
+			if(err == noErr)
+			{
+				err = PasteboardCopyItemFlavors( pasteboard, item_id, &flavors);
+			}
+			
+			if(err == noErr)
+			{
+				if(CFArrayContainsValue(flavors, CFRangeMake(0, CFArrayGetCount(flavors)), kUTTypeURL))
+				{
+					// This is an URL.
+					err = PasteboardCopyItemFlavorData(pasteboard, item_id, kUTTypeURL, &data);
+				}
+				else if(CFArrayContainsValue(flavors, CFRangeMake(0, CFArrayGetCount(flavors)), kUTTypeUTF8PlainText))
+				{
+					// This is a string that might be an URL.
+					err = PasteboardCopyItemFlavorData(pasteboard, item_id, kUTTypeUTF8PlainText, &data);
+				}
 				
-		printf("Drag Flavor: '%lu'  - Drag data : %s", theType, url.c_str());
-		fflush(stdout);
+			}
 			
-		LLWindowCallbacks::DragNDropResult res = 
-			mCallbacks->handleDragNDrop(this, gl_pos, mask, drop, url);
-		
-		if (LLWindowCallbacks::DND_NONE == res)
-		{
-			result = dragNotAcceptedErr;
+			if(flavors != NULL)
+			{
+				CFRelease(flavors);
+			}
+
+			if(data != NULL)
+			{
+				std::string url;
+				url.assign((char*)CFDataGetBytePtr(data), CFDataGetLength(data));
+				CFRelease(data);
+				
+				if(!url.empty())
+				{
+					LLWindowCallbacks::DragNDropResult res = 
+						mCallbacks->handleDragNDrop(this, gl_pos, mask, drop, url);
+					
+					if (LLWindowCallbacks::DND_NONE != res)
+					{
+						result = noErr;
+					}
+				}
+			}
 		}
 	}
-	else {
-		result = dragNotAcceptedErr;
-	}
 	
 	return result;
 }
diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h
index 24e44417f50..23e33a6e07e 100644
--- a/indra/llwindow/llwindowmacosx.h
+++ b/indra/llwindow/llwindowmacosx.h
@@ -209,9 +209,6 @@ class LLWindowMacOSX : public LLWindow
 	LangCode	mTSMLangCode;
 	LLPreeditor*	mPreeditor;
 	
-	// Storage for drag data
-	char		mDragData[1024];
-								
 	static BOOL	sUseMultGL;
 
 	friend class LLWindowManager;
-- 
GitLab


From fe0b027d4d7381a532bb0f14f64ecffdeb7190b6 Mon Sep 17 00:00:00 2001
From: Monroe Linden <monroe@lindenlab.com>
Date: Thu, 3 Dec 2009 17:40:58 -0800
Subject: [PATCH 020/521] Added the LLWindowCallbacks::DragNDropAction enum,
 and made the mac implementation and the cross-platform window callbacks use
 it (instead of 'bool drop').

This will break the windows impl until someone fixes it to match.
---
 indra/llwindow/llwindowcallbacks.cpp |   2 +-
 indra/llwindow/llwindowcallbacks.h   |   9 +-
 indra/llwindow/llwindowmacosx.cpp    |  13 +--
 indra/llwindow/llwindowmacosx.h      |   3 +-
 indra/newview/llviewerwindow.cpp     | 122 ++++++++++++++++-----------
 indra/newview/llviewerwindow.h       |   2 +-
 6 files changed, 91 insertions(+), 60 deletions(-)

diff --git a/indra/llwindow/llwindowcallbacks.cpp b/indra/llwindow/llwindowcallbacks.cpp
index a6d23527327..6d9f012cc32 100644
--- a/indra/llwindow/llwindowcallbacks.cpp
+++ b/indra/llwindow/llwindowcallbacks.cpp
@@ -163,7 +163,7 @@ void LLWindowCallbacks::handleDataCopy(LLWindow *window, S32 data_type, void *da
 {
 }
 
-LLWindowCallbacks::DragNDropResult LLWindowCallbacks::handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data )
+LLWindowCallbacks::DragNDropResult LLWindowCallbacks::handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, DragNDropAction action, std::string data )
 {
 	return LLWindowCallbacks::DND_NONE;
 }
diff --git a/indra/llwindow/llwindowcallbacks.h b/indra/llwindow/llwindowcallbacks.h
index a109879da73..42add8dde07 100644
--- a/indra/llwindow/llwindowcallbacks.h
+++ b/indra/llwindow/llwindowcallbacks.h
@@ -70,6 +70,13 @@ class LLWindowCallbacks
 	virtual void handleDataCopy(LLWindow *window, S32 data_type, void *data);
 	virtual BOOL handleTimerEvent(LLWindow *window);
 	virtual BOOL handleDeviceChange(LLWindow *window);
+
+	enum DragNDropAction {
+		DNDA_START_TRACKING = 0,// Start tracking an incoming drag
+		DNDA_TRACK,				// User is dragging an incoming drag around the window
+		DNDA_STOP_TRACKING,		// User is no longer dragging an incoming drag around the window (may have either cancelled or dropped on the window)
+		DNDA_DROPPED			// User dropped an incoming drag on the window (this is the "commit" event)
+	};
 	
 	enum DragNDropResult {
 		DND_NONE = 0,	// No drop allowed
@@ -77,7 +84,7 @@ class LLWindowCallbacks
 		DND_COPY,		// Drop accepted would result in a "copy" operation
 		DND_LINK		// Drop accepted would result in a "link" operation
 	};
-	virtual DragNDropResult handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data);
+	virtual DragNDropResult handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, DragNDropAction action, std::string data);
 	
 	virtual void handlePingWatchdog(LLWindow *window, const char * msg);
 	virtual void handlePauseWatchdog(LLWindow *window);
diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
index 87296b1202b..02fa9df22de 100644
--- a/indra/llwindow/llwindowmacosx.cpp
+++ b/indra/llwindow/llwindowmacosx.cpp
@@ -3396,12 +3396,15 @@ OSErr LLWindowMacOSX::dragTrackingHandler(DragTrackingMessage message, WindowRef
 	switch(message)
 	{
 		case kDragTrackingInWindow:
-			result = self->handleDragNDrop(drag, false);
+			result = self->handleDragNDrop(drag, LLWindowCallbacks::DNDA_TRACK);
 		break;
 		
 		case kDragTrackingEnterHandler:
+			result = self->handleDragNDrop(drag, LLWindowCallbacks::DNDA_START_TRACKING);
+		break;
+		
 		case kDragTrackingLeaveHandler:
-			// TODO: We probably want to do something clever for these (at least for the LeaveHandler).
+			result = self->handleDragNDrop(drag, LLWindowCallbacks::DNDA_STOP_TRACKING);
 		break;
 		
 		default:
@@ -3415,11 +3418,11 @@ OSErr LLWindowMacOSX::dragReceiveHandler(WindowRef theWindow, void * handlerRefC
 										 DragRef drag)
 {	
 	LLWindowMacOSX *self = (LLWindowMacOSX*)handlerRefCon;
-	return self->handleDragNDrop(drag, true);
+	return self->handleDragNDrop(drag, LLWindowCallbacks::DNDA_DROPPED);
 
 }
 
-OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, bool drop)
+OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, LLWindowCallbacks::DragNDropAction action)
 {	
 	OSErr result = dragNotAcceptedErr;	// overall function result
 	OSErr err = noErr;	// for local error handling
@@ -3488,7 +3491,7 @@ OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, bool drop)
 				if(!url.empty())
 				{
 					LLWindowCallbacks::DragNDropResult res = 
-						mCallbacks->handleDragNDrop(this, gl_pos, mask, drop, url);
+						mCallbacks->handleDragNDrop(this, gl_pos, mask, action, url);
 					
 					if (LLWindowCallbacks::DND_NONE != res)
 					{
diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h
index 23e33a6e07e..6af54c5471f 100644
--- a/indra/llwindow/llwindowmacosx.h
+++ b/indra/llwindow/llwindowmacosx.h
@@ -34,6 +34,7 @@
 #define LL_LLWINDOWMACOSX_H
 
 #include "llwindow.h"
+#include "llwindowcallbacks.h"
 
 #include "lltimer.h"
 
@@ -164,7 +165,7 @@ class LLWindowMacOSX : public LLWindow
 	static OSErr dragTrackingHandler(DragTrackingMessage message, WindowRef theWindow,
 									 void * handlerRefCon, DragRef theDrag);
 	static OSErr dragReceiveHandler(WindowRef theWindow, void * handlerRefCon,	DragRef theDrag);
-	OSErr handleDragNDrop(DragRef theDrag, bool drop);
+	OSErr handleDragNDrop(DragRef theDrag, LLWindowCallbacks::DragNDropAction action);
 	
 	//
 	// Platform specific variables
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index e80a2ae11c0..fed676775cb 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -823,71 +823,91 @@ BOOL LLViewerWindow::handleMiddleMouseDown(LLWindow *window,  LLCoordGL pos, MAS
 	return TRUE;
 }
 
-LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data)
+LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *window, LLCoordGL pos, MASK mask, LLWindowCallbacks::DragNDropAction action, std::string data)
 {
 	LLWindowCallbacks::DragNDropResult result = LLWindowCallbacks::DND_NONE;
 	if (gSavedSettings.getBOOL("PrimMediaDragNDrop"))
 	{
-		// special case SLURLs
-		if ( drop && std::string::npos != data.find("slurl.com") )
+		
+		switch(action)
 		{
-			LLURLDispatcher::dispatch( data, NULL, true );
-			LLURLSimString::setString( LLSLURL::stripProtocol( data ) );
-			LLPanelLogin::refreshLocation( true );
-			LLPanelLogin::updateLocationUI();
-			return LLWindowCallbacks::DND_MOVE;
-		};
+			// Much of the handling for these two cases is the same.
+			case LLWindowCallbacks::DNDA_TRACK:
+			case LLWindowCallbacks::DNDA_DROPPED:
+			{
+				bool drop = (LLWindowCallbacks::DNDA_DROPPED == action);
+					
+				// special case SLURLs
+				if ( drop && std::string::npos != data.find("slurl.com") )
+				{
+					LLURLDispatcher::dispatch( data, NULL, true );
+					LLURLSimString::setString( LLSLURL::stripProtocol( data ) );
+					LLPanelLogin::refreshLocation( true );
+					LLPanelLogin::updateLocationUI();
+					return LLWindowCallbacks::DND_MOVE;
+				};
 
-		LLPickInfo pick_info = pickImmediate( pos.mX, pos.mY,  TRUE /*BOOL pick_transparent*/ );
+				LLPickInfo pick_info = pickImmediate( pos.mX, pos.mY,  TRUE /*BOOL pick_transparent*/ );
 
-		LLUUID object_id = pick_info.getObjectID();
-		S32 object_face = pick_info.mObjectFace;
-		std::string url = data;
+				LLUUID object_id = pick_info.getObjectID();
+				S32 object_face = pick_info.mObjectFace;
+				std::string url = data;
 
-		llinfos << "### Object: picked at " << pos.mX << ", " << pos.mY << " - face = " << object_face << " - URL = " << url << llendl;
+				llinfos << "### Object: picked at " << pos.mX << ", " << pos.mY << " - face = " << object_face << " - URL = " << url << llendl;
 
-		LLVOVolume *obj = dynamic_cast<LLVOVolume*>(static_cast<LLViewerObject*>(pick_info.getObject()));
-		
-		if (obj && obj->permModify())
-		{
-			LLTextureEntry *te = obj->getTE(object_face);
-			if (te)
-			{
-				if (drop)
+				LLVOVolume *obj = dynamic_cast<LLVOVolume*>(static_cast<LLViewerObject*>(pick_info.getObject()));
+				
+				if (obj && obj->permModify())
 				{
-					if (! te->hasMedia())
+					LLTextureEntry *te = obj->getTE(object_face);
+					if (te)
 					{
-						// Create new media entry
-						LLSD media_data;
-						// XXX Should we really do Home URL too?
-						media_data[LLMediaEntry::HOME_URL_KEY] = url;
-						media_data[LLMediaEntry::CURRENT_URL_KEY] = url;
-						media_data[LLMediaEntry::AUTO_PLAY_KEY] = true;
-						obj->syncMediaData(object_face, media_data, true, true);
-						// XXX This shouldn't be necessary, should it ?!?
-						obj->getMediaImpl(object_face)->navigateReload();
-						obj->sendMediaDataUpdate();
-						
-						result = LLWindowCallbacks::DND_COPY;
-					}
-					else {
-						// just navigate to the URL
-						obj->getMediaImpl(object_face)->navigateTo(url);
-						
-						result = LLWindowCallbacks::DND_LINK;
+						if (drop)
+						{
+							if (! te->hasMedia())
+							{
+								// Create new media entry
+								LLSD media_data;
+								// XXX Should we really do Home URL too?
+								media_data[LLMediaEntry::HOME_URL_KEY] = url;
+								media_data[LLMediaEntry::CURRENT_URL_KEY] = url;
+								media_data[LLMediaEntry::AUTO_PLAY_KEY] = true;
+								obj->syncMediaData(object_face, media_data, true, true);
+								// XXX This shouldn't be necessary, should it ?!?
+								obj->getMediaImpl(object_face)->navigateReload();
+								obj->sendMediaDataUpdate();
+								
+								result = LLWindowCallbacks::DND_COPY;
+							}
+							else {
+								// just navigate to the URL
+								obj->getMediaImpl(object_face)->navigateTo(url);
+								
+								result = LLWindowCallbacks::DND_LINK;
+							}
+							LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject);
+							mDragHoveredObject = NULL;
+							
+						}
+						else {
+							mDragHoveredObject = obj;
+							// Highlight the dragged object
+							LLSelectMgr::getInstance()->highlightObjectOnly(mDragHoveredObject);
+							
+							result = (! te->hasMedia()) ? LLWindowCallbacks::DND_COPY : LLWindowCallbacks::DND_LINK;
+						}
 					}
-					LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject);
-					mDragHoveredObject = NULL;
-					
-				}
-				else {
-					mDragHoveredObject = obj;
-					// Highlight the dragged object
-					LLSelectMgr::getInstance()->highlightObjectOnly(mDragHoveredObject);
-					
-					result = (! te->hasMedia()) ? LLWindowCallbacks::DND_COPY : LLWindowCallbacks::DND_LINK;
 				}
 			}
+			break;
+			
+			case LLWindowCallbacks::DNDA_START_TRACKING:
+				// No special handling here yet -- we'll actually start tracking on the first DNDA_TRACK event.
+			break;
+			
+			case LLWindowCallbacks::DNDA_STOP_TRACKING:
+				// The cleanup case below will make sure things are unhilighted if necessary.
+			break;
 		}
 
 		if (result == LLWindowCallbacks::DND_NONE && !mDragHoveredObject.isNull())
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index 2543d1096f4..e209ff1ad97 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -170,7 +170,7 @@ class LLViewerWindow : public LLWindowCallbacks
 	/*virtual*/ BOOL handleRightMouseUp(LLWindow *window,  LLCoordGL pos, MASK mask);
 	/*virtual*/ BOOL handleMiddleMouseDown(LLWindow *window,  LLCoordGL pos, MASK mask);
 	/*virtual*/ BOOL handleMiddleMouseUp(LLWindow *window,  LLCoordGL pos, MASK mask);
-	/*virtual*/ LLWindowCallbacks::DragNDropResult handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, BOOL drop, std::string data);
+	/*virtual*/ LLWindowCallbacks::DragNDropResult handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, LLWindowCallbacks::DragNDropAction action, std::string data);
 				void handleMouseMove(LLWindow *window,  LLCoordGL pos, MASK mask);
 	/*virtual*/ void handleMouseLeave(LLWindow *window);
 	/*virtual*/ void handleResize(LLWindow *window,  S32 x,  S32 y);
-- 
GitLab


From 4c33c54ce03bffd3ad75be3dccaed2d26a68e157 Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Thu, 3 Dec 2009 19:02:12 -0800
Subject: [PATCH 021/521] Fix windows build to now use DragNDropAction instead
 of a bool 'drop'

---
 indra/llwindow/lldragdropwin32.cpp | 95 +++++++++++++++++++++++++-----
 indra/llwindow/llwindowwin32.cpp   |  4 +-
 indra/llwindow/llwindowwin32.h     |  3 +-
 3 files changed, 83 insertions(+), 19 deletions(-)

diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp
index a96f04ff1f2..4865570f07d 100644
--- a/indra/llwindow/lldragdropwin32.cpp
+++ b/indra/llwindow/lldragdropwin32.cpp
@@ -117,15 +117,45 @@ class LLDragDropWin32Target:
 				{
 					PVOID data = GlobalLock( stgmed.hGlobal );
 					mDropUrl = std::string( (char*)data );
-
-					mIsSlurl = ( mDropUrl.find( "slurl.com" ) != std::string::npos );
+					// XXX MAJOR MAJOR HACK!
+					LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA);
+					if (NULL != window_imp)
+					{
+						LLCoordGL gl_coord( 0, 0 );
+
+						POINT pt2;
+						pt2.x = pt.x;
+						pt2.y = pt.y;
+						ScreenToClient( mAppWindowHandle, &pt2 );
+
+						LLCoordWindow cursor_coord_window( pt2.x, pt2.y );
+						window_imp->convertCoords(cursor_coord_window, &gl_coord);
+						MASK mask = gKeyboard->currentMask(TRUE);
+
+						LLWindowCallbacks::DragNDropResult result = window_imp->completeDragNDropRequest( gl_coord, mask, 
+							LLWindowCallbacks::DNDA_START_TRACKING, mDropUrl );
+
+						switch (result)
+						{
+						case LLWindowCallbacks::DND_COPY:
+							*pdwEffect = DROPEFFECT_COPY;
+							break;
+						case LLWindowCallbacks::DND_LINK:
+							*pdwEffect = DROPEFFECT_LINK;
+							break;
+						case LLWindowCallbacks::DND_MOVE:
+							*pdwEffect = DROPEFFECT_MOVE;
+							break;
+						case LLWindowCallbacks::DND_NONE:
+						default:
+							*pdwEffect = DROPEFFECT_NONE;
+							break;
+						}
+					};
 
 					GlobalUnlock( stgmed.hGlobal );
 					ReleaseStgMedium( &stgmed );
 				};
-
-				*pdwEffect = DROPEFFECT_COPY;
-
 				SetFocus( mAppWindowHandle );
 			}
 			else
@@ -158,15 +188,25 @@ class LLDragDropWin32Target:
 					window_imp->convertCoords(cursor_coord_window, &gl_coord);
 					MASK mask = gKeyboard->currentMask(TRUE);
 
-					bool allowed_to_drop = window_imp->completeDragNDropRequest( gl_coord, mask, FALSE, std::string( "" ) );
-					if ( allowed_to_drop )
+					LLWindowCallbacks::DragNDropResult result = window_imp->completeDragNDropRequest( gl_coord, mask, 
+						LLWindowCallbacks::DNDA_TRACK, std::string( "" ) );
+					
+					switch (result)
+					{
+					case LLWindowCallbacks::DND_COPY:
 						*pdwEffect = DROPEFFECT_COPY;
-					else
-						*pdwEffect = DROPEFFECT_NONE;
-
-					// special case for SLURLs - you can always drop them on the client window and we need a different cursor
-					if ( mIsSlurl )
+						break;
+					case LLWindowCallbacks::DND_LINK:
 						*pdwEffect = DROPEFFECT_LINK;
+						break;
+					case LLWindowCallbacks::DND_MOVE:
+						*pdwEffect = DROPEFFECT_MOVE;
+						break;
+					case LLWindowCallbacks::DND_NONE:
+					default:
+						*pdwEffect = DROPEFFECT_NONE;
+						break;
+					}
 				};
 			}
 			else
@@ -181,7 +221,14 @@ class LLDragDropWin32Target:
 		//
 		HRESULT __stdcall DragLeave( void )
 		{
-			mDropUrl = std::string();
+			// XXX MAJOR MAJOR HACK!
+			LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA);
+			if (NULL != window_imp)
+			{
+				LLCoordGL gl_coord( 0, 0 );
+				MASK mask = gKeyboard->currentMask(TRUE);
+				window_imp->completeDragNDropRequest( gl_coord, mask, LLWindowCallbacks::DNDA_STOP_TRACKING, mDropUrl );
+			};
 			return S_OK;
 		};
 
@@ -214,10 +261,26 @@ class LLDragDropWin32Target:
 					MASK mask = gKeyboard->currentMask( TRUE );
 
 					// actually do the drop
-					window_imp->completeDragNDropRequest( gl_coord, mask, TRUE, mDropUrl );
-				};
+					LLWindowCallbacks::DragNDropResult result = window_imp->completeDragNDropRequest( gl_coord, mask, 
+						LLWindowCallbacks::DNDA_DROPPED, mDropUrl );
 
-				*pdwEffect = DROPEFFECT_COPY;
+					switch (result)
+					{
+					case LLWindowCallbacks::DND_COPY:
+						*pdwEffect = DROPEFFECT_COPY;
+						break;
+					case LLWindowCallbacks::DND_LINK:
+						*pdwEffect = DROPEFFECT_LINK;
+						break;
+					case LLWindowCallbacks::DND_MOVE:
+						*pdwEffect = DROPEFFECT_MOVE;
+						break;
+					case LLWindowCallbacks::DND_NONE:
+					default:
+						*pdwEffect = DROPEFFECT_NONE;
+						break;
+					}
+				};
 			}
 			else
 			{
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index dc1e2c017c5..322b9c9a01c 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -3581,9 +3581,9 @@ static LLWString find_context(const LLWString & wtext, S32 focus, S32 focus_leng
 
 // final stage of handling drop requests - both from WM_DROPFILES message
 // for files and via IDropTarget interface requests.
-BOOL LLWindowWin32::completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, BOOL drop, const std::string url )
+LLWindowCallbacks::DragNDropResult LLWindowWin32::completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, LLWindowCallbacks::DragNDropAction action, const std::string url )
 {
-	return mCallbacks->handleDragNDrop( this, gl_coord, mask, drop, url );
+	return mCallbacks->handleDragNDrop( this, gl_coord, mask, action, url );
 }
 
 // Handle WM_IME_REQUEST message.
diff --git a/indra/llwindow/llwindowwin32.h b/indra/llwindow/llwindowwin32.h
index e99c26b7f1f..3e907cde00e 100644
--- a/indra/llwindow/llwindowwin32.h
+++ b/indra/llwindow/llwindowwin32.h
@@ -39,6 +39,7 @@
 #include <windows.h>
 
 #include "llwindow.h"
+#include "llwindowcallbacks.h"
 #include "lldragdropwin32.h"
 
 // Hack for async host by name
@@ -113,7 +114,7 @@ class LLWindowWin32 : public LLWindow
 	/*virtual*/ void interruptLanguageTextInput();
 	/*virtual*/ void spawnWebBrowser(const std::string& escaped_url);
 
-	BOOL completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, BOOL drop, const std::string url );
+	LLWindowCallbacks::DragNDropResult completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, LLWindowCallbacks::DragNDropAction action, const std::string url );
 
 	static std::vector<std::string> getDynamicFallbackFontList();
 
-- 
GitLab


From 064c9be9aedf238530ccdc941861fd057580e5b1 Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Wed, 16 Dec 2009 18:56:01 -0800
Subject: [PATCH 022/521] Don't allow drag if the cap URL is empty or if the
 whitelist does not pass

---
 indra/newview/llviewerwindow.cpp | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 5d2ca331d64..e3de2891a13 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -827,9 +827,9 @@ BOOL LLViewerWindow::handleMiddleMouseDown(LLWindow *window,  LLCoordGL pos, MAS
 LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *window, LLCoordGL pos, MASK mask, LLWindowCallbacks::DragNDropAction action, std::string data)
 {
 	LLWindowCallbacks::DragNDropResult result = LLWindowCallbacks::DND_NONE;
+
 	if (gSavedSettings.getBOOL("PrimMediaDragNDrop"))
 	{
-		
 		switch(action)
 		{
 			// Much of the handling for these two cases is the same.
@@ -854,11 +854,11 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi
 				S32 object_face = pick_info.mObjectFace;
 				std::string url = data;
 
-				llinfos << "### Object: picked at " << pos.mX << ", " << pos.mY << " - face = " << object_face << " - URL = " << url << llendl;
+				lldebugs << "Object: picked at " << pos.mX << ", " << pos.mY << " - face = " << object_face << " - URL = " << url << llendl;
 
 				LLVOVolume *obj = dynamic_cast<LLVOVolume*>(static_cast<LLViewerObject*>(pick_info.getObject()));
 				
-				if (obj && obj->permModify())
+				if (obj && obj->permModify() && !obj->getRegion()->getCapability("ObjectMedia").empty())
 				{
 					LLTextureEntry *te = obj->getTE(object_face);
 					if (te)
@@ -881,10 +881,14 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi
 								result = LLWindowCallbacks::DND_COPY;
 							}
 							else {
-								// just navigate to the URL
-								obj->getMediaImpl(object_face)->navigateTo(url);
+								// Check the whitelist
+								if (te->getMediaData()->checkCandidateUrl(url))
+								{
+									// just navigate to the URL
+									obj->getMediaImpl(object_face)->navigateTo(url);
 								
-								result = LLWindowCallbacks::DND_LINK;
+									result = LLWindowCallbacks::DND_LINK;
+								}
 							}
 							LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject);
 							mDragHoveredObject = NULL;
-- 
GitLab


From 3b110e76332712e7efb7972fb27324a763596b6c Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Fri, 18 Dec 2009 15:52:45 -0800
Subject: [PATCH 023/521] Fix crash when DnD onto an item with media but no
 impl

---
 indra/newview/llviewerwindow.cpp | 19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 6c73cc18dbf..08f598b2885 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -875,7 +875,8 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi
 								media_data[LLMediaEntry::AUTO_PLAY_KEY] = true;
 								obj->syncMediaData(object_face, media_data, true, true);
 								// XXX This shouldn't be necessary, should it ?!?
-								obj->getMediaImpl(object_face)->navigateReload();
+								if (obj->getMediaImpl(object_face))
+									obj->getMediaImpl(object_face)->navigateReload();
 								obj->sendMediaDataUpdate();
 								
 								result = LLWindowCallbacks::DND_COPY;
@@ -885,8 +886,20 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi
 								if (te->getMediaData()->checkCandidateUrl(url))
 								{
 									// just navigate to the URL
-									obj->getMediaImpl(object_face)->navigateTo(url);
-								
+									if (obj->getMediaImpl(object_face))
+									{
+										obj->getMediaImpl(object_face)->navigateTo(url);
+									}
+									else {
+										// This is very strange.  Navigation should
+										// happen via the Impl, but we don't have one.
+										// This sends it to the server, which /should/
+										// trigger us getting it.  Hopefully.
+										LLSD media_data;
+										media_data[LLMediaEntry::CURRENT_URL_KEY] = url;
+										obj->syncMediaData(object_face, media_data, true, true);
+										obj->sendMediaDataUpdate();
+									}
 									result = LLWindowCallbacks::DND_LINK;
 								}
 							}
-- 
GitLab


From 9204681c31184c4c76c8f41c48da76e174e3276a Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Fri, 18 Dec 2009 16:21:57 -0800
Subject: [PATCH 024/521] Fix slurl crashing, fix slurls highlighting objects,
 fix overlapping objects not "unhighlighting"

---
 indra/newview/llpanellogin.cpp   |  2 ++
 indra/newview/llviewerwindow.cpp | 24 +++++++++++++++---------
 2 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp
index cdfa64ba57a..ce83ab3e374 100644
--- a/indra/newview/llpanellogin.cpp
+++ b/indra/newview/llpanellogin.cpp
@@ -688,6 +688,8 @@ void LLPanelLogin::refreshLocation( bool force_visible )
 // static
 void LLPanelLogin::updateLocationUI()
 {
+	if (!sInstance) return;
+	
 	std::string sim_string = LLURLSimString::sInstance.mSimString;
 	if (!sim_string.empty())
 	{
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 08f598b2885..71fe8dd7732 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -839,12 +839,15 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi
 				bool drop = (LLWindowCallbacks::DNDA_DROPPED == action);
 					
 				// special case SLURLs
-				if ( drop && std::string::npos != data.find("slurl.com") )
+				if (std::string::npos != data.find("slurl.com") )
 				{
-					LLURLDispatcher::dispatch( data, NULL, true );
-					LLURLSimString::setString( LLSLURL::stripProtocol( data ) );
-					LLPanelLogin::refreshLocation( true );
-					LLPanelLogin::updateLocationUI();
+					if (drop)
+					{
+						LLURLDispatcher::dispatch( data, NULL, true );
+						LLURLSimString::setString( LLSLURL::stripProtocol( data ) );
+						LLPanelLogin::refreshLocation( true );
+						LLPanelLogin::updateLocationUI();
+					}
 					return LLWindowCallbacks::DND_MOVE;
 				};
 
@@ -908,10 +911,13 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi
 							
 						}
 						else {
-							mDragHoveredObject = obj;
-							// Highlight the dragged object
-							LLSelectMgr::getInstance()->highlightObjectOnly(mDragHoveredObject);
-							
+							if ( obj != mDragHoveredObject)
+							{
+								// Highlight the dragged object
+								LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject);
+								mDragHoveredObject = obj;
+								LLSelectMgr::getInstance()->highlightObjectOnly(mDragHoveredObject);
+							}
 							result = (! te->hasMedia()) ? LLWindowCallbacks::DND_COPY : LLWindowCallbacks::DND_LINK;
 						}
 					}
-- 
GitLab


From 75c1fb26649df73770459a31641c434e156e2c17 Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Tue, 5 Jan 2010 15:03:27 -0800
Subject: [PATCH 025/521] Build fix: add missing #include

---
 indra/newview/llviewerwindow.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 21bf567b0c3..313f7284898 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -83,6 +83,7 @@
 #include "lltooltip.h"
 #include "llmediaentry.h"
 #include "llurldispatcher.h"
+#include "llurlsimstring.h"
 
 // newview includes
 #include "llagent.h"
-- 
GitLab


From e57f6a5cee1cf03df2bf43cd7a8b2c42c3918f8b Mon Sep 17 00:00:00 2001
From: Callum Prentice <callum@lindenlab.com>
Date: Thu, 7 Jan 2010 14:21:57 -0800
Subject: [PATCH 026/521] Fix drag and drop for windows. Makes Win32 state
 machine behave more like Mac.

---
 indra/llwindow/lldragdropwin32.cpp | 2 +-
 indra/newview/llviewerwindow.cpp   | 5 +----
 2 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp
index 4865570f07d..1e10626e8a0 100644
--- a/indra/llwindow/lldragdropwin32.cpp
+++ b/indra/llwindow/lldragdropwin32.cpp
@@ -189,7 +189,7 @@ class LLDragDropWin32Target:
 					MASK mask = gKeyboard->currentMask(TRUE);
 
 					LLWindowCallbacks::DragNDropResult result = window_imp->completeDragNDropRequest( gl_coord, mask, 
-						LLWindowCallbacks::DNDA_TRACK, std::string( "" ) );
+						LLWindowCallbacks::DNDA_TRACK, mDropUrl );
 					
 					switch (result)
 					{
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 02b81581886..81fcfc13c2d 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -835,6 +835,7 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi
 			// Much of the handling for these two cases is the same.
 			case LLWindowCallbacks::DNDA_TRACK:
 			case LLWindowCallbacks::DNDA_DROPPED:
+			case LLWindowCallbacks::DNDA_START_TRACKING:
 			{
 				bool drop = (LLWindowCallbacks::DNDA_DROPPED == action);
 					
@@ -925,10 +926,6 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi
 			}
 			break;
 			
-			case LLWindowCallbacks::DNDA_START_TRACKING:
-				// No special handling here yet -- we'll actually start tracking on the first DNDA_TRACK event.
-			break;
-			
 			case LLWindowCallbacks::DNDA_STOP_TRACKING:
 				// The cleanup case below will make sure things are unhilighted if necessary.
 			break;
-- 
GitLab


From 5d2167c66a027cc5e4e002dca51e163b0d08fe42 Mon Sep 17 00:00:00 2001
From: Nathan Wilcox <inoshiro@lindenlab.com>
Date: Fri, 8 Jan 2010 15:10:59 -0800
Subject: [PATCH 027/521] Fix a typo bug caught by pyflakes.  eys.exit(1) ->
 sys.exit(1)

---
 indra/develop.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/develop.py b/indra/develop.py
index eaecdd0ab66..9d606da1d9b 100755
--- a/indra/develop.py
+++ b/indra/develop.py
@@ -504,7 +504,7 @@ def _get_generator(self):
                     break
             else:
                 print >> sys.stderr, 'Cannot find a Visual Studio installation!'
-                eys.exit(1)
+                sys.exit(1)
         return self._generator
 
     def _set_generator(self, gen):
-- 
GitLab


From 1500e90eccf237fb50f901528c5dc9d747f6d2f0 Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Fri, 8 Jan 2010 15:11:03 -0800
Subject: [PATCH 028/521] Make sure mac build honors compile-time flag that
 en/disables OS drag and drop. Also fixed the cmake file to properly set
 LL_OS_DRAGDROP_ENABLED.

---
 indra/cmake/DragDrop.cmake        | 6 ++----
 indra/llwindow/llwindowmacosx.cpp | 5 +++++
 indra/llwindow/llwindowmacosx.h   | 3 +++
 3 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/indra/cmake/DragDrop.cmake b/indra/cmake/DragDrop.cmake
index 739d011813a..e56264f1875 100644
--- a/indra/cmake/DragDrop.cmake
+++ b/indra/cmake/DragDrop.cmake
@@ -2,9 +2,7 @@
 
 if (VIEWER)
 
-  OPTION (OS_DRAG_DROP
-  "Build the viewer with OS level drag and drop turned on or off"
-  ON)
+  set(OS_DRAG_DROP ON CACHE BOOL "Build the viewer with OS level drag and drop turned on or off")
 
   if (OS_DRAG_DROP)
 
@@ -13,7 +11,7 @@ if (VIEWER)
     endif (WINDOWS)
 
     if (DARWIN)
-      add_definitions(-DLL_OS_DRAGDROP_ENABLED=0)
+      add_definitions(-DLL_OS_DRAGDROP_ENABLED=1)
     endif (DARWIN)
 
     if (LINUX)
diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
index ffc44a1e84c..dc5a98756a3 100644
--- a/indra/llwindow/llwindowmacosx.cpp
+++ b/indra/llwindow/llwindowmacosx.cpp
@@ -500,8 +500,10 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
 		// Set up window event handlers (some window-related events ONLY go to window handlers.)
 		InstallStandardEventHandler(GetWindowEventTarget(mWindow));
 		InstallWindowEventHandler(mWindow, mEventHandlerUPP, GetEventTypeCount (WindowHandlerEventList), WindowHandlerEventList, (void*)this, &mWindowHandlerRef); // add event handler
+#if LL_OS_DRAGDROP_ENABLED
 		InstallTrackingHandler( dragTrackingHandler, mWindow, (void*)this );		
 		InstallReceiveHandler( dragReceiveHandler, mWindow, (void*)this );
+#endif // LL_OS_DRAGDROP_ENABLED
 	}
 
 	{
@@ -3387,6 +3389,8 @@ MASK LLWindowMacOSX::modifiersToMask(SInt16 modifiers)
 	return mask;
 }	
 
+#if LL_OS_DRAGDROP_ENABLED
+
 OSErr LLWindowMacOSX::dragTrackingHandler(DragTrackingMessage message, WindowRef theWindow,
 						  void * handlerRefCon, DragRef drag)
 {
@@ -3507,3 +3511,4 @@ OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, LLWindowCallbacks::DragNDrop
 	return result;
 }
 
+#endif // LL_OS_DRAGDROP_ENABLED
diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h
index bd3e46ebb49..09b8891db09 100644
--- a/indra/llwindow/llwindowmacosx.h
+++ b/indra/llwindow/llwindowmacosx.h
@@ -161,10 +161,13 @@ class LLWindowMacOSX : public LLWindow
 	void fixWindowSize(void);
 	void stopDockTileBounce();
 	static MASK modifiersToMask(SInt16 modifiers);
+	
+#if LL_OS_DRAGDROP_ENABLED
 	static OSErr dragTrackingHandler(DragTrackingMessage message, WindowRef theWindow,
 									 void * handlerRefCon, DragRef theDrag);
 	static OSErr dragReceiveHandler(WindowRef theWindow, void * handlerRefCon,	DragRef theDrag);
 	OSErr handleDragNDrop(DragRef theDrag, LLWindowCallbacks::DragNDropAction action);
+#endif // LL_OS_DRAGDROP_ENABLED
 	
 	//
 	// Platform specific variables
-- 
GitLab


From e31d695247f89df1490afb4b9581f562fa99617c Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Fri, 8 Jan 2010 15:11:15 -0800
Subject: [PATCH 029/521] get rid of commented-out code

---
 indra/llwindow/llwindowwin32.cpp | 54 --------------------------------
 1 file changed, 54 deletions(-)

diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index 439c10c95cc..ed39786b37d 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -2376,60 +2376,6 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
 			};
 			return 0;			
 
-		// only useful for droppnig files - could be used for file upload dialog one day
-		//case WM_DROPFILES:
-		//	{
-		//		// HDROP contains what we need
-		//		HDROP hdrop = (HDROP)w_param;
-
-		//		// get location in window space where drop occured and convert to OpenGL coordinate space
-		//		POINT pt;
-		//		DragQueryPoint( hdrop, &pt );
-		//		LLCoordGL gl_coord;
-		//		LLCoordWindow cursor_coord_window( pt.x, pt.y );
-		//		window_imp->convertCoords(cursor_coord_window, &gl_coord);
-
-		//		// get payload (eventually, this needs to more advanced and grab size of payload dynamically
-		//		static char file_name[ 1024 ];
-		//		DragQueryFileA( hdrop, 0, file_name, 1024 );
-		//		void* url = (void*)( file_name );
-
-		//		// if it's a .URL or .lnk ("shortcut") file
-		//		if ( std::string( file_name ).find( ".lnk" ) != std::string::npos ||
-		//			  std::string( file_name ).find( ".URL" ) != std::string::npos )
-		//		{
-		//			// read through file - looks like a 2 line file with second line URL= but who knows..
-		//			std::ifstream file_handle( file_name );
-		//			if ( file_handle.is_open() )
-		//			{
-		//				std::string line;
-		//				while ( ! file_handle.eof() )
-		//				{
-		//					std::getline( file_handle, line );
-		//					if ( ! file_handle.eof() )
-		//					{
-		//						std::string prefix( "URL=" );
-		//						if ( line.find( prefix, 0 ) != std::string::npos )
-		//						{
-		//							line = line.substr( 4 );  // skip off the URL= bit
-		//							strcpy( (char*)url, line.c_str() );
-		//							break;
-		//						};
-		//					};
-		//				};
-		//				file_handle.close();
-		//			};
-		//		};
-
-		//		MASK mask = gKeyboard->currentMask(TRUE);
-
-		//		if ( window_imp->completeDragNDropRequest( gl_coord, mask, true, (char*)url, false ) )
-		//		{
-		//			return 0;
-		//		};
-		//	}
-
-
 			break;
 		}
 
-- 
GitLab


From 010bfed411cffdb7037872a209adf51c77f48140 Mon Sep 17 00:00:00 2001
From: Nathan Wilcox <inoshiro@lindenlab.com>
Date: Fri, 8 Jan 2010 15:50:09 -0800
Subject: [PATCH 030/521] DEV-44838 - This is an attempt at the minimal
 possible change to fix the quoting bug on windows.

This commit is untested!  The simplest approach to testing is to push into a repo watched by parabuild.

Also, develop.py could be improved to use subprocess consistently across all platforms.  Doing so could simplify the code, but until I understand how to test it better, I'm going to leave it alone.
---
 indra/develop.py | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/indra/develop.py b/indra/develop.py
index 9d606da1d9b..27c3d0ca2ce 100755
--- a/indra/develop.py
+++ b/indra/develop.py
@@ -41,6 +41,7 @@
 import socket
 import sys
 import commands
+import subprocess
 
 class CommandError(Exception):
     pass
@@ -576,16 +577,20 @@ def get_build_cmd(self):
             return "buildconsole %(prj)s.sln /build /cfg=%(cfg)s" % {'prj': self.project_name, 'cfg': config}
 
         # devenv.com is CLI friendly, devenv.exe... not so much.
-        return ('"%sdevenv.com" %s.sln /build %s' % 
-                (self.find_visual_studio(), self.project_name, self.build_type))
+        executable = '%sdevenv.com' % (self.find_visual_studio(),)
+        cmd = ('"%s" %s.sln /build %s' % 
+                (executable, self.project_name, self.build_type))
+        return (executable, cmd)
         #return ('devenv.com %s.sln /build %s' % 
         #        (self.project_name, self.build_type))
 
     def run(self, command, name=None, retry_on=None, retries=1):
         '''Run a program.  If the program fails, raise an exception.'''
+        assert name is not None, 'On windows an executable path must be given in name.'
         while retries:
             retries = retries - 1
             print "develop.py tries to run:", command
+            ret = subprocess.call(command, executable=name)
             ret = os.system(command)
             print "got ret", ret, "from", command
             if ret:
@@ -617,18 +622,19 @@ def run_vstool(self):
             if prev_build == self.build_type:
                 # Only run vstool if the build type has changed.
                 continue
-            vstool_cmd = (os.path.join('tools','vstool','VSTool.exe') +
+            executable = os.path.join('tools','vstool','VSTool.exe')
+            vstool_cmd = (executable +
                           ' --solution ' +
                           os.path.join(build_dir,'SecondLife.sln') +
                           ' --config ' + self.build_type +
                           ' --startup secondlife-bin')
             print 'Running %r in %r' % (vstool_cmd, getcwd())
-            self.run(vstool_cmd)        
+            self.run(vstool_cmd, name=executable)        
             print >> open(stamp, 'w'), self.build_type
         
     def run_build(self, opts, targets):
         cwd = getcwd()
-        build_cmd = self.get_build_cmd()
+        executable, build_cmd = self.get_build_cmd()
 
         for d in self.build_dirs():
             try:
@@ -637,11 +643,11 @@ def run_build(self, opts, targets):
                     for t in targets:
                         cmd = '%s /project %s %s' % (build_cmd, t, ' '.join(opts))
                         print 'Running %r in %r' % (cmd, d)
-                        self.run(cmd, retry_on=4, retries=3)
+                        self.run(cmd, name=executable, retry_on=4, retries=3)
                 else:
                     cmd = '%s %s' % (build_cmd, ' '.join(opts))
                     print 'Running %r in %r' % (cmd, d)
-                    self.run(cmd, retry_on=4, retries=3)
+                    self.run(cmd, name=executable, retry_on=4, retries=3)
             finally:
                 os.chdir(cwd)
                 
-- 
GitLab


From 6b33d5955a2c4ff34c17b58dd4a23b53a3c1dde7 Mon Sep 17 00:00:00 2001
From: Nathan Wilcox <inoshiro@lindenlab.com>
Date: Fri, 8 Jan 2010 17:42:22 -0800
Subject: [PATCH 031/521] DEV-44838 - See if the executable parameter to
 subprocess.Popen must be absolute on windows.

---
 indra/develop.py | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/indra/develop.py b/indra/develop.py
index 27c3d0ca2ce..dc1190699ce 100755
--- a/indra/develop.py
+++ b/indra/develop.py
@@ -587,6 +587,8 @@ def get_build_cmd(self):
     def run(self, command, name=None, retry_on=None, retries=1):
         '''Run a program.  If the program fails, raise an exception.'''
         assert name is not None, 'On windows an executable path must be given in name.'
+        if not os.path.isfile(name):
+            name = self.find_in_path(name)
         while retries:
             retries = retries - 1
             print "develop.py tries to run:", command
-- 
GitLab


From 61bc236b355e19bf09851b79c7d73b7210b4a7af Mon Sep 17 00:00:00 2001
From: Nathan Wilcox <inoshiro@lindenlab.com>
Date: Fri, 8 Jan 2010 17:58:56 -0800
Subject: [PATCH 032/521] DEV-44838 - Remove a typo line which would cause
 duplicate executions for every run call.

---
 indra/develop.py | 1 -
 1 file changed, 1 deletion(-)

diff --git a/indra/develop.py b/indra/develop.py
index dc1190699ce..e19ecb7314c 100755
--- a/indra/develop.py
+++ b/indra/develop.py
@@ -593,7 +593,6 @@ def run(self, command, name=None, retry_on=None, retries=1):
             retries = retries - 1
             print "develop.py tries to run:", command
             ret = subprocess.call(command, executable=name)
-            ret = os.system(command)
             print "got ret", ret, "from", command
             if ret:
                 if name is None:
-- 
GitLab


From 8246b382b732a9b49c49a012274cd17ce1af4e94 Mon Sep 17 00:00:00 2001
From: Nathan Wilcox <inoshiro@lindenlab.com>
Date: Fri, 8 Jan 2010 18:00:32 -0800
Subject: [PATCH 033/521] DEV-44838 - find_in_path() returns a list of
 candidates.  Select the first.

---
 indra/develop.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/develop.py b/indra/develop.py
index e19ecb7314c..17ac1b38016 100755
--- a/indra/develop.py
+++ b/indra/develop.py
@@ -588,7 +588,7 @@ def run(self, command, name=None, retry_on=None, retries=1):
         '''Run a program.  If the program fails, raise an exception.'''
         assert name is not None, 'On windows an executable path must be given in name.'
         if not os.path.isfile(name):
-            name = self.find_in_path(name)
+            name = self.find_in_path(name)[0]
         while retries:
             retries = retries - 1
             print "develop.py tries to run:", command
-- 
GitLab


From f37f806660f66b064490b9c14d724273dc67fcbb Mon Sep 17 00:00:00 2001
From: Nathan Wilcox <inoshiro@lindenlab.com>
Date: Mon, 11 Jan 2010 10:38:13 -0800
Subject: [PATCH 034/521] DEV-44838 - Fix a bug introduced by inconsistently
 changing the get_build_cmd() interface.

---
 indra/develop.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/indra/develop.py b/indra/develop.py
index 17ac1b38016..a20badcfba3 100755
--- a/indra/develop.py
+++ b/indra/develop.py
@@ -574,15 +574,15 @@ def get_build_cmd(self):
             if self.gens[self.generator]['ver'] in [ r'8.0', r'9.0' ]:
                 config = '\"%s|Win32\"' % config
 
-            return "buildconsole %(prj)s.sln /build /cfg=%(cfg)s" % {'prj': self.project_name, 'cfg': config}
+            executable = self.find_in_path('buildconsole')
+            cmd = "%(bin)s %(prj)s.sln /build /cfg=%(cfg)s" % {'prj': self.project_name, 'cfg': config, 'bin': executable}
+            return (executable, cmd)
 
         # devenv.com is CLI friendly, devenv.exe... not so much.
         executable = '%sdevenv.com' % (self.find_visual_studio(),)
         cmd = ('"%s" %s.sln /build %s' % 
                 (executable, self.project_name, self.build_type))
         return (executable, cmd)
-        #return ('devenv.com %s.sln /build %s' % 
-        #        (self.project_name, self.build_type))
 
     def run(self, command, name=None, retry_on=None, retries=1):
         '''Run a program.  If the program fails, raise an exception.'''
-- 
GitLab


From 11eac588c2e26b42e269da9394bbb8918552fb1c Mon Sep 17 00:00:00 2001
From: Nathan Wilcox <inoshiro@lindenlab.com>
Date: Mon, 11 Jan 2010 10:45:01 -0800
Subject: [PATCH 035/521] DEV-44838 - Fix another bug introduced by passing
 "executable" in WindowsSetup.run();  find_in_path() does not handle absolute
 paths, but name is guaranteed to be an absolute path.

This explains the bogus message in the log of the form "process $foo exited with nonzero status; process $foo is not found", described here:
https://jira.lindenlab.com/jira/browse/DEV-44838?focusedCommentId=328441&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_328441
---
 indra/develop.py | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/indra/develop.py b/indra/develop.py
index a20badcfba3..71569f15d23 100755
--- a/indra/develop.py
+++ b/indra/develop.py
@@ -595,10 +595,7 @@ def run(self, command, name=None, retry_on=None, retries=1):
             ret = subprocess.call(command, executable=name)
             print "got ret", ret, "from", command
             if ret:
-                if name is None:
-                    name = command.split(None, 1)[0]
-                path = self.find_in_path(name)
-                if not path:
+                if not name:
                     error = 'was not found'
                 else:
                     error = 'exited with status %d' % ret
-- 
GitLab


From 33df069238130a9e8c02a2aadcd41956780397db Mon Sep 17 00:00:00 2001
From: Nathan Wilcox <inoshiro@lindenlab.com>
Date: Mon, 11 Jan 2010 11:07:04 -0800
Subject: [PATCH 036/521] DEV-44838 - Fix a silly bug in yet another place:
 find_in_path returns a list, so select the first element.

---
 indra/develop.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/develop.py b/indra/develop.py
index 71569f15d23..897fbb6544c 100755
--- a/indra/develop.py
+++ b/indra/develop.py
@@ -574,7 +574,7 @@ def get_build_cmd(self):
             if self.gens[self.generator]['ver'] in [ r'8.0', r'9.0' ]:
                 config = '\"%s|Win32\"' % config
 
-            executable = self.find_in_path('buildconsole')
+            executable = self.find_in_path('buildconsole')[0]
             cmd = "%(bin)s %(prj)s.sln /build /cfg=%(cfg)s" % {'prj': self.project_name, 'cfg': config, 'bin': executable}
             return (executable, cmd)
 
-- 
GitLab


From 2d337ca8c6b05ecd7e8d4a8f0c3d88fabcc5bcbc Mon Sep 17 00:00:00 2001
From: Nathan Wilcox <inoshiro@lindenlab.com>
Date: Mon, 11 Jan 2010 12:30:27 -0800
Subject: [PATCH 037/521] DEV-44838 - See if buildconsole is confused by having
 the absolute path (with spaces) in the commandline.  To accomplish this we
 put relative paths in the command string but lookup the absolute path for the
 executable parameter.

---
 indra/develop.py | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/indra/develop.py b/indra/develop.py
index 897fbb6544c..b8fdd1a8150 100755
--- a/indra/develop.py
+++ b/indra/develop.py
@@ -574,7 +574,7 @@ def get_build_cmd(self):
             if self.gens[self.generator]['ver'] in [ r'8.0', r'9.0' ]:
                 config = '\"%s|Win32\"' % config
 
-            executable = self.find_in_path('buildconsole')[0]
+            executable = 'buildconsole'
             cmd = "%(bin)s %(prj)s.sln /build /cfg=%(cfg)s" % {'prj': self.project_name, 'cfg': config, 'bin': executable}
             return (executable, cmd)
 
@@ -587,18 +587,17 @@ def get_build_cmd(self):
     def run(self, command, name=None, retry_on=None, retries=1):
         '''Run a program.  If the program fails, raise an exception.'''
         assert name is not None, 'On windows an executable path must be given in name.'
-        if not os.path.isfile(name):
-            name = self.find_in_path(name)[0]
+        if os.path.isfile(name):
+            path = name
+        else:
+            path = self.find_in_path(name)[0]
         while retries:
             retries = retries - 1
             print "develop.py tries to run:", command
-            ret = subprocess.call(command, executable=name)
+            ret = subprocess.call(command, executable=path)
             print "got ret", ret, "from", command
             if ret:
-                if not name:
-                    error = 'was not found'
-                else:
-                    error = 'exited with status %d' % ret
+                error = 'exited with status %d' % ret
                 if retry_on is not None and retry_on == ret:
                     print "Retrying... the command %r %s" % (name, error)
                 else:
-- 
GitLab


From a74d494dd7c13e0307ee5ba526ba021583b1f2b5 Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Mon, 11 Jan 2010 16:41:08 -0800
Subject: [PATCH 038/521] Fix unposted bug: drag feedback didn't check
 whitelist

http://codereview.lindenlab.com/274039/show
---
 indra/newview/llviewerwindow.cpp | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 81fcfc13c2d..5dd640539f4 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -912,14 +912,18 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi
 							
 						}
 						else {
-							if ( obj != mDragHoveredObject)
+							// Check the whitelist, if there's media (otherwise just show it)
+							if (te->getMediaData() == NULL || te->getMediaData()->checkCandidateUrl(url))
 							{
-								// Highlight the dragged object
-								LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject);
-								mDragHoveredObject = obj;
-								LLSelectMgr::getInstance()->highlightObjectOnly(mDragHoveredObject);
+								if ( obj != mDragHoveredObject)
+								{
+									// Highlight the dragged object
+									LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject);
+									mDragHoveredObject = obj;
+									LLSelectMgr::getInstance()->highlightObjectOnly(mDragHoveredObject);
+								}
+								result = (! te->hasMedia()) ? LLWindowCallbacks::DND_COPY : LLWindowCallbacks::DND_LINK;
 							}
-							result = (! te->hasMedia()) ? LLWindowCallbacks::DND_COPY : LLWindowCallbacks::DND_LINK;
 						}
 					}
 				}
-- 
GitLab


From a3ca95e3bd0e288792f6024d9487d618730fd40f Mon Sep 17 00:00:00 2001
From: Callum Prentice <callum@lindenlab.com>
Date: Mon, 11 Jan 2010 17:26:28 -0800
Subject: [PATCH 039/521] Fix that stops "Start Location" corruption if you
 drag an invalid http://slurl.com SLURL onto the login page

---
 indra/newview/llviewerwindow.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 81fcfc13c2d..c5c9e49934f 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -840,7 +840,7 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi
 				bool drop = (LLWindowCallbacks::DNDA_DROPPED == action);
 					
 				// special case SLURLs
-				if (std::string::npos != data.find("slurl.com") )
+				if ( LLSLURL::isSLURL( data ) )
 				{
 					if (drop)
 					{
-- 
GitLab


From b06d655727c15530c1f65ccea83ab911f42e04ff Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Mon, 11 Jan 2010 18:44:00 -0800
Subject: [PATCH 040/521] Add cursor-change override while dragging on the mac

This changes the setCursor() call in LLWindowMacOSX to be ignored if we're
currently dragging via the OS

http://codereview.lindenlab.com/273045
---
 indra/llwindow/llwindowmacosx.cpp | 38 +++++++++++++++++++++++++++++--
 indra/llwindow/llwindowmacosx.h   |  2 ++
 2 files changed, 38 insertions(+), 2 deletions(-)

diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
index dc5a98756a3..783d1f39cab 100644
--- a/indra/llwindow/llwindowmacosx.cpp
+++ b/indra/llwindow/llwindowmacosx.cpp
@@ -278,6 +278,8 @@ LLWindowMacOSX::LLWindowMacOSX(LLWindowCallbacks* callbacks,
 	mMoveEventCampartorUPP = NewEventComparatorUPP(staticMoveEventComparator);
 	mGlobalHandlerRef = NULL;
 	mWindowHandlerRef = NULL;
+	
+	mDragOverrideCursor = -1;
 
 	// We're not clipping yet
 	SetRect( &mOldMouseClip, 0, 0, 0, 0 );
@@ -2795,6 +2797,8 @@ void LLWindowMacOSX::setCursor(ECursorType cursor)
 {
 	OSStatus result = noErr;
 
+	if (mDragOverrideCursor != -1) return;
+	
 	if (cursor == UI_CURSOR_ARROW
 		&& mBusyCount > 0)
 	{
@@ -3499,10 +3503,40 @@ OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, LLWindowCallbacks::DragNDrop
 					LLWindowCallbacks::DragNDropResult res = 
 						mCallbacks->handleDragNDrop(this, gl_pos, mask, action, url);
 					
-					if (LLWindowCallbacks::DND_NONE != res)
+					switch (res) {
+						case LLWindowCallbacks::DND_NONE:		// No drop allowed
+							if (action == LLWindowCallbacks::DNDA_TRACK)
+							{
+								mDragOverrideCursor = kThemeNotAllowedCursor;
+							}
+							else {
+								mDragOverrideCursor = -1;
+							}
+							break;
+						case LLWindowCallbacks::DND_MOVE:		// Drop accepted would result in a "move" operation
+							mDragOverrideCursor = kThemePointingHandCursor;
+							result = noErr;
+							break;
+						case LLWindowCallbacks::DND_COPY:		// Drop accepted would result in a "copy" operation
+							mDragOverrideCursor = kThemeCopyArrowCursor;
+							result = noErr;
+							break;
+						case LLWindowCallbacks::DND_LINK:		// Drop accepted would result in a "link" operation:
+							mDragOverrideCursor = kThemeAliasArrowCursor;
+							result = noErr;
+							break;
+						default:
+							mDragOverrideCursor = -1;
+							break;
+					}
+					if (mDragOverrideCursor == -1)
 					{
-						result = noErr;
+						SetThemeCursor(kThemeArrowCursor);
+					}
+					else {
+						SetThemeCursor(mDragOverrideCursor);
 					}
+
 				}
 			}
 		}
diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h
index 09b8891db09..377f10b6d48 100644
--- a/indra/llwindow/llwindowmacosx.h
+++ b/indra/llwindow/llwindowmacosx.h
@@ -201,6 +201,8 @@ class LLWindowMacOSX : public LLWindow
 	U32			mFSAASamples;
 	BOOL		mForceRebuild;
 	
+	S32			mDragOverrideCursor;
+	
 	F32			mBounceTime;
 	NMRec		mBounceRec;
 	LLTimer		mBounceTimer;
-- 
GitLab


From df69302cd2f00dd44b5b34aeb3ba896ce7548556 Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Tue, 12 Jan 2010 11:31:07 -0800
Subject: [PATCH 041/521] Add restoring of previous cursor to mac impl

http://codereview.lindenlab.com/273045
---
 indra/llwindow/llwindowmacosx.cpp | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
index 783d1f39cab..9ccd4c7f97d 100644
--- a/indra/llwindow/llwindowmacosx.cpp
+++ b/indra/llwindow/llwindowmacosx.cpp
@@ -2797,8 +2797,14 @@ void LLWindowMacOSX::setCursor(ECursorType cursor)
 {
 	OSStatus result = noErr;
 
-	if (mDragOverrideCursor != -1) return;
-	
+	if (mDragOverrideCursor != -1) 
+	{
+		// A drag is in progress...remember the requested cursor and we'll
+		// restore it when it is done
+		mCurrentCursor = cursor;
+		return;
+	}
+		
 	if (cursor == UI_CURSOR_ARROW
 		&& mBusyCount > 0)
 	{
@@ -3529,11 +3535,19 @@ OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, LLWindowCallbacks::DragNDrop
 							mDragOverrideCursor = -1;
 							break;
 					}
+					// This overrides the cursor being set by setCursor.
+					// This is a bit of a hack workaround because lots of areas
+					// within the viewer just blindly set the cursor.
 					if (mDragOverrideCursor == -1)
 					{
-						SetThemeCursor(kThemeArrowCursor);
+						// Restore the cursor
+						ECursorType temp_cursor = mCurrentCursor;
+						// get around the "setting the same cursor" code in setCursor()
+						mCurrentCursor = UI_CURSOR_COUNT; 
+ 						setCursor(temp_cursor);
 					}
 					else {
+						// Override the cursor
 						SetThemeCursor(mDragOverrideCursor);
 					}
 
-- 
GitLab


From dd7840aa9e0627430753522c4480212cf032463e Mon Sep 17 00:00:00 2001
From: Nathan Wilcox <inoshiro@lindenlab.com>
Date: Wed, 13 Jan 2010 15:47:57 -0800
Subject: [PATCH 042/521] Add an assertion for my sanity.

---
 indra/develop.py | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/indra/develop.py b/indra/develop.py
index b8fdd1a8150..59722c4bc2e 100755
--- a/indra/develop.py
+++ b/indra/develop.py
@@ -630,6 +630,8 @@ def run_vstool(self):
             print >> open(stamp, 'w'), self.build_type
         
     def run_build(self, opts, targets):
+        for t in targets:
+            assert t.strip(), 'Unexpected empty targets: ' + repr(targets)
         cwd = getcwd()
         executable, build_cmd = self.get_build_cmd()
 
-- 
GitLab


From bee98d70e3a8eca7f6f6f80d4ee6a14939771ae0 Mon Sep 17 00:00:00 2001
From: Nathan Wilcox <inoshiro@lindenlab.com>
Date: Wed, 13 Jan 2010 16:08:30 -0800
Subject: [PATCH 043/521] DEV-44838 - Add the string "DEV-44838" to assertion
 failures to future devs understand preconditions on windows run().

---
 indra/develop.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/develop.py b/indra/develop.py
index 59722c4bc2e..a8a7b63aa7f 100755
--- a/indra/develop.py
+++ b/indra/develop.py
@@ -586,7 +586,7 @@ def get_build_cmd(self):
 
     def run(self, command, name=None, retry_on=None, retries=1):
         '''Run a program.  If the program fails, raise an exception.'''
-        assert name is not None, 'On windows an executable path must be given in name.'
+        assert name is not None, 'On windows an executable path must be given in name. [DEV-44838]'
         if os.path.isfile(name):
             path = name
         else:
-- 
GitLab


From d194d95391f03b8a60c779f50f830df014e4b71e Mon Sep 17 00:00:00 2001
From: Nathan Wilcox <inoshiro@lindenlab.com>
Date: Wed, 13 Jan 2010 16:09:07 -0800
Subject: [PATCH 044/521] DEV-44838 - Fix a logic flaw in the windows run()
 retry code which would re-execute a process if its exit status was 0.

---
 indra/develop.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/indra/develop.py b/indra/develop.py
index a8a7b63aa7f..0a2d3c5e521 100755
--- a/indra/develop.py
+++ b/indra/develop.py
@@ -596,7 +596,9 @@ def run(self, command, name=None, retry_on=None, retries=1):
             print "develop.py tries to run:", command
             ret = subprocess.call(command, executable=path)
             print "got ret", ret, "from", command
-            if ret:
+            if ret == 0:
+                break
+            else:
                 error = 'exited with status %d' % ret
                 if retry_on is not None and retry_on == ret:
                     print "Retrying... the command %r %s" % (name, error)
-- 
GitLab


From 228d37a8d72146d9baed57c7406a9324ce8c0175 Mon Sep 17 00:00:00 2001
From: Callum Prentice <callum@lindenlab.com>
Date: Tue, 19 Jan 2010 11:52:41 -0800
Subject: [PATCH 045/521] Fix for EXT-4191 -  Drag and Drop viewer resolves
 some slurls to "//"

---
 indra/newview/llviewerwindow.cpp | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 45e153049be..d4ffe70f249 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -824,8 +824,7 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi
 				{
 					if (drop)
 					{
-						LLURLDispatcher::dispatch( data, NULL, true );
-						LLURLSimString::setString( LLSLURL::stripProtocol( data ) );
+						LLURLSimString::setStringRaw( LLSLURL::stripProtocol( data ) );
 						LLPanelLogin::refreshLocation( true );
 						LLPanelLogin::updateLocationUI();
 					}
-- 
GitLab


From 95fc42c3219151d085f139a8f239bdc5fb6b30f3 Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Tue, 19 Jan 2010 15:19:11 -0500
Subject: [PATCH 046/521] Ensure Lynx's Boost patch is in place -- Windows

---
 install.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/install.xml b/install.xml
index 5069e44d46c..5cb960c506f 100644
--- a/install.xml
+++ b/install.xml
@@ -214,9 +214,9 @@
           <key>windows</key>
           <map>
             <key>md5sum</key>
-            <string>6746ae9fd9aff98b15f7b9f0f40334ab</string>
+            <string>acbf7a4165a917a4e087879d1756b355</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-windows-20091204.tar.bz2</uri>
+            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-windows-20100119.tar.bz2</uri>
           </map>
         </map>
       </map>
-- 
GitLab


From dab8a89df68fe29ce3794d7763e9890da5ff7ed2 Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Tue, 19 Jan 2010 12:23:25 -0800
Subject: [PATCH 047/521] Ensure Lynx's Boost patch is in place -- linux,
 linux64

---
 install.xml | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/install.xml b/install.xml
index fdd7458384f..e94654e1757 100644
--- a/install.xml
+++ b/install.xml
@@ -200,16 +200,16 @@
           <key>linux</key>
           <map>
             <key>md5sum</key>
-            <string>7085044567999489d82b9ed28f16e480</string>
+            <string>ee8e1b4bbcf137a84d6a85a1c51386ff</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-linux-20091202.tar.bz2</uri>
+            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-linux-20100119.tar.bz2</uri>
           </map>
           <key>linux64</key>
           <map>
             <key>md5sum</key>
-            <string>b4aeefcba3d749f1e9f2a12c6f70192b</string>
+            <string>af4badd6b2c10bc4db82ff1256695892</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-linux64-20091202.tar.bz2</uri>
+            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-linux64-20100119.tar.bz2</uri>
           </map>
           <key>windows</key>
           <map>
-- 
GitLab


From 56c021f606d249e4b7ba334809b0332fe2fdcc11 Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Tue, 19 Jan 2010 15:28:10 -0500
Subject: [PATCH 048/521] Ensure Lynx's Boost patch is in place -- darwin

---
 install.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/install.xml b/install.xml
index fdd7458384f..e08676d869d 100644
--- a/install.xml
+++ b/install.xml
@@ -193,9 +193,9 @@
           <key>darwin</key>
           <map>
             <key>md5sum</key>
-            <string>609c469ee1857723260b5a9943b9c2c1</string>
+            <string>84821102cb819257a66c8f38732647fc</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-darwin-20091202.tar.bz2</uri>
+            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-darwin-20100119.tar.bz2</uri>
           </map>
           <key>linux</key>
           <map>
-- 
GitLab


From ae079af48d8ab6b1939168b0a2ac95876da66d24 Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Wed, 20 Jan 2010 09:55:36 -0800
Subject: [PATCH 049/521] Add another setting controlling whether SLURL
 drag-and-drop performs a teleport

---
 indra/newview/app_settings/settings.xml |  13 ++-
 indra/newview/llviewerwindow.cpp        | 146 +++++++++++++-----------
 2 files changed, 90 insertions(+), 69 deletions(-)

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 9f261978e69..6096504b969 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -5552,7 +5552,7 @@
 	<key>PrimMediaDragNDrop</key>
 	<map>
 		<key>Comment</key>
-		<string>Enable drag and drop</string>
+		<string>Enable drag and drop of URLs onto prim faces</string>
 		<key>Persist</key>
 		<integer>1</integer>
 		<key>Type</key>
@@ -10786,6 +10786,17 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
+	<key>SLURLDragNDrop</key>
+	<map>
+		<key>Comment</key>
+		<string>Enable drag and drop of SLURLs onto the viewer</string>
+		<key>Persist</key>
+		<integer>1</integer>
+		<key>Type</key>
+		<string>Boolean</string>
+		<key>Value</key>
+		<integer>1</integer>
+	</map>
     <key>soundsbeacon</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 45e153049be..e743d3419ec 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -808,7 +808,10 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi
 {
 	LLWindowCallbacks::DragNDropResult result = LLWindowCallbacks::DND_NONE;
 
-	if (gSavedSettings.getBOOL("PrimMediaDragNDrop"))
+	const bool prim_media_dnd_enabled = gSavedSettings.getBOOL("PrimMediaDragNDrop");
+	const bool slurl_dnd_enabled = gSavedSettings.getBOOL("SLURLDragNDrop");
+	
+	if ( prim_media_dnd_enabled || slurl_dnd_enabled )
 	{
 		switch(action)
 		{
@@ -819,90 +822,96 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi
 			{
 				bool drop = (LLWindowCallbacks::DNDA_DROPPED == action);
 					
-				// special case SLURLs
-				if ( LLSLURL::isSLURL( data ) )
+				if (slurl_dnd_enabled)
 				{
-					if (drop)
+					// special case SLURLs
+					if ( LLSLURL::isSLURL( data ) )
 					{
-						LLURLDispatcher::dispatch( data, NULL, true );
-						LLURLSimString::setString( LLSLURL::stripProtocol( data ) );
-						LLPanelLogin::refreshLocation( true );
-						LLPanelLogin::updateLocationUI();
-					}
-					return LLWindowCallbacks::DND_MOVE;
-				};
+						if (drop)
+						{
+							LLURLDispatcher::dispatch( data, NULL, true );
+							LLURLSimString::setString( LLSLURL::stripProtocol( data ) );
+							LLPanelLogin::refreshLocation( true );
+							LLPanelLogin::updateLocationUI();
+						}
+						return LLWindowCallbacks::DND_MOVE;
+					};
+				}
 
-				LLPickInfo pick_info = pickImmediate( pos.mX, pos.mY,  TRUE /*BOOL pick_transparent*/ );
+				if (prim_media_dnd_enabled)
+				{
+					LLPickInfo pick_info = pickImmediate( pos.mX, pos.mY,  TRUE /*BOOL pick_transparent*/ );
 
-				LLUUID object_id = pick_info.getObjectID();
-				S32 object_face = pick_info.mObjectFace;
-				std::string url = data;
+					LLUUID object_id = pick_info.getObjectID();
+					S32 object_face = pick_info.mObjectFace;
+					std::string url = data;
 
-				lldebugs << "Object: picked at " << pos.mX << ", " << pos.mY << " - face = " << object_face << " - URL = " << url << llendl;
+					lldebugs << "Object: picked at " << pos.mX << ", " << pos.mY << " - face = " << object_face << " - URL = " << url << llendl;
 
-				LLVOVolume *obj = dynamic_cast<LLVOVolume*>(static_cast<LLViewerObject*>(pick_info.getObject()));
+					LLVOVolume *obj = dynamic_cast<LLVOVolume*>(static_cast<LLViewerObject*>(pick_info.getObject()));
 				
-				if (obj && obj->permModify() && !obj->getRegion()->getCapability("ObjectMedia").empty())
-				{
-					LLTextureEntry *te = obj->getTE(object_face);
-					if (te)
+					if (obj && obj->permModify() && !obj->getRegion()->getCapability("ObjectMedia").empty())
 					{
-						if (drop)
+						LLTextureEntry *te = obj->getTE(object_face);
+						if (te)
 						{
-							if (! te->hasMedia())
+							if (drop)
 							{
-								// Create new media entry
-								LLSD media_data;
-								// XXX Should we really do Home URL too?
-								media_data[LLMediaEntry::HOME_URL_KEY] = url;
-								media_data[LLMediaEntry::CURRENT_URL_KEY] = url;
-								media_data[LLMediaEntry::AUTO_PLAY_KEY] = true;
-								obj->syncMediaData(object_face, media_data, true, true);
-								// XXX This shouldn't be necessary, should it ?!?
-								if (obj->getMediaImpl(object_face))
-									obj->getMediaImpl(object_face)->navigateReload();
-								obj->sendMediaDataUpdate();
-								
-								result = LLWindowCallbacks::DND_COPY;
-							}
-							else {
-								// Check the whitelist
-								if (te->getMediaData()->checkCandidateUrl(url))
+								if (! te->hasMedia())
 								{
-									// just navigate to the URL
+									// Create new media entry
+									LLSD media_data;
+									// XXX Should we really do Home URL too?
+									media_data[LLMediaEntry::HOME_URL_KEY] = url;
+									media_data[LLMediaEntry::CURRENT_URL_KEY] = url;
+									media_data[LLMediaEntry::AUTO_PLAY_KEY] = true;
+									obj->syncMediaData(object_face, media_data, true, true);
+									// XXX This shouldn't be necessary, should it ?!?
 									if (obj->getMediaImpl(object_face))
+										obj->getMediaImpl(object_face)->navigateReload();
+									obj->sendMediaDataUpdate();
+								
+									result = LLWindowCallbacks::DND_COPY;
+								}
+								else {
+									// Check the whitelist
+									if (te->getMediaData()->checkCandidateUrl(url))
 									{
-										obj->getMediaImpl(object_face)->navigateTo(url);
+										// just navigate to the URL
+										if (obj->getMediaImpl(object_face))
+										{
+											obj->getMediaImpl(object_face)->navigateTo(url);
+										}
+										else {
+											// This is very strange.  Navigation should
+											// happen via the Impl, but we don't have one.
+											// This sends it to the server, which /should/
+											// trigger us getting it.  Hopefully.
+											LLSD media_data;
+											media_data[LLMediaEntry::CURRENT_URL_KEY] = url;
+											obj->syncMediaData(object_face, media_data, true, true);
+											obj->sendMediaDataUpdate();
+										}
+										result = LLWindowCallbacks::DND_LINK;
 									}
-									else {
-										// This is very strange.  Navigation should
-										// happen via the Impl, but we don't have one.
-										// This sends it to the server, which /should/
-										// trigger us getting it.  Hopefully.
-										LLSD media_data;
-										media_data[LLMediaEntry::CURRENT_URL_KEY] = url;
-										obj->syncMediaData(object_face, media_data, true, true);
-										obj->sendMediaDataUpdate();
-									}
-									result = LLWindowCallbacks::DND_LINK;
 								}
-							}
-							LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject);
-							mDragHoveredObject = NULL;
+								LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject);
+								mDragHoveredObject = NULL;
 							
-						}
-						else {
-							// Check the whitelist, if there's media (otherwise just show it)
-							if (te->getMediaData() == NULL || te->getMediaData()->checkCandidateUrl(url))
-							{
-								if ( obj != mDragHoveredObject)
+							}
+							else {
+								// Check the whitelist, if there's media (otherwise just show it)
+								if (te->getMediaData() == NULL || te->getMediaData()->checkCandidateUrl(url))
 								{
-									// Highlight the dragged object
-									LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject);
-									mDragHoveredObject = obj;
-									LLSelectMgr::getInstance()->highlightObjectOnly(mDragHoveredObject);
+									if ( obj != mDragHoveredObject)
+									{
+										// Highlight the dragged object
+										LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject);
+										mDragHoveredObject = obj;
+										LLSelectMgr::getInstance()->highlightObjectOnly(mDragHoveredObject);
+									}
+									result = (! te->hasMedia()) ? LLWindowCallbacks::DND_COPY : LLWindowCallbacks::DND_LINK;
 								}
-								result = (! te->hasMedia()) ? LLWindowCallbacks::DND_COPY : LLWindowCallbacks::DND_LINK;
 							}
 						}
 					}
@@ -915,7 +924,8 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi
 			break;
 		}
 
-		if (result == LLWindowCallbacks::DND_NONE && !mDragHoveredObject.isNull())
+		if (prim_media_dnd_enabled &&
+			result == LLWindowCallbacks::DND_NONE && !mDragHoveredObject.isNull())
 		{
 			LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject);
 			mDragHoveredObject = NULL;
-- 
GitLab


From 5fc9d8bddad16b7d8dc6d481107a8ce690fdf731 Mon Sep 17 00:00:00 2001
From: Nathan Wilcox <inoshiro@lindenlab.com>
Date: Wed, 20 Jan 2010 11:46:40 -0800
Subject: [PATCH 050/521] Remove a tab character from the end of a line to pass
 policy requirements.

---
 scripts/template_verifier.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/template_verifier.py b/scripts/template_verifier.py
index d5fc1192700..adcfcbcae63 100755
--- a/scripts/template_verifier.py
+++ b/scripts/template_verifier.py
@@ -103,7 +103,7 @@ def die(msg):
 PRODUCTION_ACCEPTABLE = (compatibility.Same, compatibility.Newer)
 DEVELOPMENT_ACCEPTABLE = (
     compatibility.Same, compatibility.Newer,
-    compatibility.Older, compatibility.Mixed)	
+    compatibility.Older, compatibility.Mixed)
 
 MAX_MASTER_AGE = 60 * 60 * 4   # refresh master cache every 4 hours
 
-- 
GitLab


From 5d8de7b7200c514bb874e4f60581c6df6cf3be5a Mon Sep 17 00:00:00 2001
From: Erica <erica@lindenlab.com>
Date: Thu, 21 Jan 2010 10:52:58 -0800
Subject: [PATCH 051/521] getting chiclet stuff out of test floater since it
 causes a crash

---
 .../default/xui/en/floater_test_checkbox.xml  | 79 -------------------
 1 file changed, 79 deletions(-)

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 042b4226c34..9977e85a9d1 100644
--- a/indra/newview/skins/default/xui/en/floater_test_checkbox.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_checkbox.xml
@@ -71,83 +71,4 @@
      name="font_checkbox"
      top_pad="14"
      width="150" />
-
-<chiclet_im_p2p
- height="25"
- name="im_p2p_chiclet"
- show_speaker="false"
- width="25">
-    <chiclet_im_p2p.chiclet_button
-     height="25"
-     image_selected="PushButton_Selected"
-     image_unselected="PushButton_Off"
-     name="chiclet_button"
-     tab_stop="false"
-     width="25"/>
-    <chiclet_im_p2p.speaker
-     auto_update="true"
-     draw_border="false"
-     height="25"
-     left="25"
-     name="speaker"
-     visible="false"
-     width="20" />
-    <chiclet_im_p2p.avatar_icon
-     bottom="3"
-     follows="left|top|bottom"
-     height="20"
-     left="2"
-     mouse_opaque="false"
-     name="avatar_icon"
-     width="21" />
-    <chiclet_im_p2p.unread_notifications
-     height="25"
-     font_halign="center"
-     left="25"
-     mouse_opaque="false"
-     name="unread"
-     text_color="white"
-     v_pad="5"
-     visible="false"
-     width="20"/>
-    <chiclet_im_p2p.new_message_icon
-  bottom="11"
-  height="14"
-  image_name="Unread_Chiclet"
-  left="12"
-  name="new_message_icon"
-  visible="false"
-  width="14" />
-</chiclet_im_p2p>
-
-
-<chiclet_offer
- height="25"
- name="offer_chiclet"
- width="25">
- <chiclet_offer.chiclet_button
-  height="25"
-  image_selected="PushButton_Selected"
-  image_unselected="PushButton_Off"
-  name="chiclet_button"
-  tab_stop="false"
-  width="25"/>
- <chiclet_offer.icon
-  bottom="3"
-  default_icon="Generic_Object_Small"
-  follows="all"
-  height="19"
-  left="3"
-  mouse_opaque="false"
-  name="chiclet_icon"
-  width="19" />
- <chiclet_offer.new_message_icon
-  bottom="11"
-  height="14"
-  image_name="Unread_Chiclet"
-  left="12"
-  name="new_message_icon"
-  visible="false"
-  width="14" />
-</chiclet_offer>
 </floater>
-- 
GitLab


From 8cf95e16830521d5aa9467b1f4d84e4d1343bd31 Mon Sep 17 00:00:00 2001
From: Eugene Mutavchi <emutavchi@productengine.com>
Date: Fri, 22 Jan 2010 20:27:58 +0200
Subject: [PATCH 052/521] Fixed normal bug EXT-4486(nearby voice list not
 aligned correctly): Corrected indent of my_panel content. Changed the order
 of buttons of avatar list item, notice that it affects all avatar lists(on
 people panel, group chat participants, etc).

--HG--
branch : product-engine
---
 indra/newview/llavatarlistitem.cpp            | 12 ++++----
 indra/newview/llavatarlistitem.h              |  2 +-
 .../default/xui/en/floater_voice_controls.xml |  3 +-
 .../default/xui/en/panel_avatar_list_item.xml | 28 ++++++++++---------
 4 files changed, 24 insertions(+), 21 deletions(-)

diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp
index 66ab32f3e88..2bcd0977175 100644
--- a/indra/newview/llavatarlistitem.cpp
+++ b/indra/newview/llavatarlistitem.cpp
@@ -440,17 +440,17 @@ LLAvatarListItem::icon_color_map_t& LLAvatarListItem::getItemIconColorMap()
 // static
 void LLAvatarListItem::initChildrenWidths(LLAvatarListItem* avatar_item)
 {
+	//speaking indicator width + padding
+	S32 speaking_indicator_width = avatar_item->getRect().getWidth() - avatar_item->mSpeakingIndicator->getRect().mLeft;
+
 	//profile btn width + padding
-	S32 profile_btn_width = avatar_item->getRect().getWidth() - avatar_item->mProfileBtn->getRect().mLeft;
+	S32 profile_btn_width = avatar_item->mSpeakingIndicator->getRect().mLeft - avatar_item->mProfileBtn->getRect().mLeft;
 
 	//info btn width + padding
 	S32 info_btn_width = avatar_item->mProfileBtn->getRect().mLeft - avatar_item->mInfoBtn->getRect().mLeft;
 
-	//speaking indicator width + padding
-	S32 speaking_indicator_width = avatar_item->mInfoBtn->getRect().mLeft - avatar_item->mSpeakingIndicator->getRect().mLeft;
-
 	// last interaction time textbox width + padding
-	S32 last_interaction_time_width = avatar_item->mSpeakingIndicator->getRect().mLeft - avatar_item->mLastInteractionTime->getRect().mLeft;
+	S32 last_interaction_time_width = avatar_item->mInfoBtn->getRect().mLeft - avatar_item->mLastInteractionTime->getRect().mLeft;
 
 	// icon width + padding
 	S32 icon_width = avatar_item->mAvatarName->getRect().mLeft - avatar_item->mAvatarIcon->getRect().mLeft;
@@ -462,9 +462,9 @@ void LLAvatarListItem::initChildrenWidths(LLAvatarListItem* avatar_item)
 	sChildrenWidths[--index] = icon_width;
 	sChildrenWidths[--index] = 0; // for avatar name we don't need its width, it will be calculated as "left available space"
 	sChildrenWidths[--index] = last_interaction_time_width;
-	sChildrenWidths[--index] = speaking_indicator_width;
 	sChildrenWidths[--index] = info_btn_width;
 	sChildrenWidths[--index] = profile_btn_width;
+	sChildrenWidths[--index] = speaking_indicator_width;
 }
 
 void LLAvatarListItem::updateChildren()
diff --git a/indra/newview/llavatarlistitem.h b/indra/newview/llavatarlistitem.h
index 479a4833cb9..61c0a8660e3 100644
--- a/indra/newview/llavatarlistitem.h
+++ b/indra/newview/llavatarlistitem.h
@@ -129,9 +129,9 @@ class LLAvatarListItem : public LLPanel, public LLFriendObserver
 	 * @see updateChildren()
 	 */
 	typedef enum e_avatar_item_child {
+		ALIC_SPEAKER_INDICATOR,
 		ALIC_PROFILE_BUTTON,
 		ALIC_INFO_BUTTON,
-		ALIC_SPEAKER_INDICATOR,
 		ALIC_INTERACTION_TIME,
 		ALIC_NAME,
 		ALIC_ICON,
diff --git a/indra/newview/skins/default/xui/en/floater_voice_controls.xml b/indra/newview/skins/default/xui/en/floater_voice_controls.xml
index f473a51ff6d..c4411db8c5b 100644
--- a/indra/newview/skins/default/xui/en/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/en/floater_voice_controls.xml
@@ -56,7 +56,7 @@
              height="18"
              default_icon_name="Generic_Person"
              layout="topleft"
-             left="0"
+             left="5"
              name="user_icon"
              top="0"
              width="18" />
@@ -78,6 +78,7 @@
              follows="top|right"
              height="16"
              layout="topleft"
+             right="-3"
              name="speaking_indicator"
              left_pad="5"
              visible="true"
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 615ade99a2b..c605975c8e1 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
@@ -65,28 +65,18 @@
      height="15"
      layout="topleft"
      left_pad="5"
+     right="-72"
      name="last_interaction"
      text_color="LtGray_50"
      value="0s"
      width="24" />
-    <output_monitor
-     auto_update="true"
-     follows="right"
-     draw_border="false"
-     height="16"
-     layout="topleft"
-     left_pad="5"
-     mouse_opaque="true"
-     name="speaking_indicator"
-     visible="true"
-     width="20" />
     <button
      follows="right"
      height="16"
      image_pressed="Info_Press"
      image_unselected="Info_Over"
      left_pad="3"
-     right="-31"
+     right="-53"
      name="info_btn"
      top_delta="-2"
      width="16" />
@@ -96,9 +86,21 @@
      image_overlay="ForwardArrow_Off"
      layout="topleft"
      left_pad="5"
-     right="-3"
+     right="-28"
      name="profile_btn"
      tool_tip="View profile"
      top_delta="-2"
      width="20" />
+    <output_monitor
+     auto_update="true"
+     follows="right"
+     draw_border="false"
+     height="16"
+     layout="topleft"
+     left_pad="5"
+     right="-3"
+     mouse_opaque="true"
+     name="speaking_indicator"
+     visible="true"
+     width="20" />
 </panel>
-- 
GitLab


From 69ead1e7987571e36f2a42e87093555bceb5885d Mon Sep 17 00:00:00 2001
From: Eugene Mutavchi <emutavchi@productengine.com>
Date: Fri, 22 Jan 2010 20:27:58 +0200
Subject: [PATCH 053/521] Fixed normal bug EXT-4557 ([BSI] New IM session
 steals focus)

--HG--
branch : product-engine
---
 indra/newview/skins/default/xui/en/floater_im_session.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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 613530b7aa9..d2e54731573 100644
--- a/indra/newview/skins/default/xui/en/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_session.xml
@@ -11,7 +11,7 @@
  can_dock="false"
  can_minimize="true"
  can_close="true"
- visible="true"
+ visible="false"
  width="360"
  can_resize="true"
  min_width="250"
-- 
GitLab


From 48b4b3ab6a54423686af3a2d8d3679291951d7ef Mon Sep 17 00:00:00 2001
From: Vadim Savchuk <vsavchuk@productengine.com>
Date: Fri, 22 Jan 2010 20:16:55 +0200
Subject: [PATCH 054/521] Removed a temporary comment.

--HG--
branch : product-engine
---
 indra/newview/llfloaterreporter.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp
index 2efae0c8dbf..4a1eb51dbe9 100644
--- a/indra/newview/llfloaterreporter.cpp
+++ b/indra/newview/llfloaterreporter.cpp
@@ -324,7 +324,7 @@ void LLFloaterReporter::setFromAvatar(const LLUUID& avatar_id, const std::string
 
 	std::string avatar_link = LLSLURL::buildCommand("agent", mObjectID, "inspect");
 	childSetText("owner_name", avatar_link);
-	childSetText("object_name", avatar_name); // name
+	childSetText("object_name", avatar_name);
 	childSetText("abuser_name_edit", avatar_name);
 }
 
-- 
GitLab


From 818ab4b493f97b6bd98f361518953a5f2d624c03 Mon Sep 17 00:00:00 2001
From: Vadim Savchuk <vsavchuk@productengine.com>
Date: Fri, 22 Jan 2010 22:10:20 +0200
Subject: [PATCH 055/521] Fixed bug EXT-4580 (Duplicated avatar's name appears
 in 'Group invitation' floater if use context menu for invitation). Because
 duplicated postBuild() calls, the "OK" button callback was set and *called*
 twice.

--HG--
branch : product-engine
---
 indra/newview/llfloatergroups.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llfloatergroups.cpp b/indra/newview/llfloatergroups.cpp
index 29f415bd439..c71764c2e54 100644
--- a/indra/newview/llfloatergroups.cpp
+++ b/indra/newview/llfloatergroups.cpp
@@ -75,7 +75,7 @@ LLFloaterGroupPicker::~LLFloaterGroupPicker()
 void LLFloaterGroupPicker::setPowersMask(U64 powers_mask)
 {
 	mPowersMask = powers_mask;
-	postBuild();
+	init_group_list(getChild<LLScrollListCtrl>("group list"), gAgent.getGroupID(), mPowersMask);
 }
 
 
-- 
GitLab


From ab0c9c6754836cb26a520d0a9b2d7bbdd13a5f32 Mon Sep 17 00:00:00 2001
From: Andrew Dyukov <adyukov@productengine.com>
Date: Fri, 22 Jan 2010 22:16:57 +0200
Subject: [PATCH 056/521] Fixed normal bugs EXT-4450 ([BSI] call buttons
 enabled when voice is disabled) and EXT-4313 (Should not be able to start a
 call when voice is disabled). Call buttons state now reacts on voice changes
 in time.

- Added voiceWorking() method to LLVoiceClient to determine real availability of voice, because voiceEnabled()
doesn't take into account possible errors. Perhaps there is no need in two methods- some investigation will be
made and depending on its results they may become one non-static method. voiceWorking() uses state of voice
client(mState) to determine voice availability. Also some states which are not currently counted by voiceWorking()
as valid may be added if testing reveals problems.

- To enable/disable call buttons in time, LLVoiceClientStatusObserver is used. Its trigger uses states from its
enum only to skip updating button in some states(to avoid button blinking), but to determine button state
LLVoiceClient's voiceWorking() is used.

--HG--
branch : product-engine
---
 indra/newview/llavataractions.cpp       | 13 +-----
 indra/newview/llavataractions.h         |  4 +-
 indra/newview/llgrouplist.cpp           |  4 ++
 indra/newview/llpanelavatar.cpp         | 31 +++++++++++++-
 indra/newview/llpanelavatar.h           | 11 +++++
 indra/newview/llpanelgroup.cpp          | 33 ++++++++++-----
 indra/newview/llpanelgroup.h            |  8 +++-
 indra/newview/llpanelimcontrolpanel.cpp | 54 ++++++++++++++++---------
 indra/newview/llpanelimcontrolpanel.h   | 12 +++++-
 indra/newview/llpanelpeople.cpp         | 45 +++++++++------------
 indra/newview/llpanelpeople.h           |  9 ++++-
 indra/newview/llpanelpeoplemenus.cpp    | 15 +------
 indra/newview/llparticipantlist.cpp     |  2 +-
 indra/newview/llvoiceclient.cpp         |  5 +++
 indra/newview/llvoiceclient.h           |  2 +
 15 files changed, 159 insertions(+), 89 deletions(-)

diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index 40c9bb6afab..bb14c41cec8 100644
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -263,18 +263,9 @@ bool LLAvatarActions::isCalling(const LLUUID &id)
 }
 
 //static
-bool LLAvatarActions::canCall(const LLUUID &id)
+bool LLAvatarActions::canCall()
 {
-	// For now we do not need to check whether passed UUID is ID of agent's friend.
-	// Use common check of Voice Client state.
-	{
-		// don't need to check online/offline status because "usual resident" (resident that is not a friend)
-		// can be only ONLINE. There is no way to see "usual resident" in OFFLINE status. If we see "usual
-		// resident" it automatically means that the resident is ONLINE. So to make a call to the "usual resident"
-		// we need to check only that "our" voice is enabled.
-		return LLVoiceClient::voiceEnabled();
-	}
-
+		return LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking();
 }
 
 // static
diff --git a/indra/newview/llavataractions.h b/indra/newview/llavataractions.h
index a4504ae679b..ebfd40b796f 100644
--- a/indra/newview/llavataractions.h
+++ b/indra/newview/llavataractions.h
@@ -129,10 +129,10 @@ class LLAvatarActions
 	static bool isCalling(const LLUUID &id);
 
 	/**
-	 * @return true if call to the resident can be made (resident is online and voice is enabled)
+	 * @return true if call to the resident can be made
 	 */
 
-	static bool canCall(const LLUUID &id);
+	static bool canCall();
 	/**
 	 * Invite avatar to a group.
 	 */	
diff --git a/indra/newview/llgrouplist.cpp b/indra/newview/llgrouplist.cpp
index e75d35bea41..e01709aa3a0 100644
--- a/indra/newview/llgrouplist.cpp
+++ b/indra/newview/llgrouplist.cpp
@@ -48,6 +48,7 @@
 #include "lltextutil.h"
 #include "llviewercontrol.h"	// for gSavedSettings
 #include "llviewermenu.h"		// for gMenuHolder
+#include "llvoiceclient.h"
 
 static LLDefaultChildRegistry::Register<LLGroupList> r("group_list");
 S32 LLGroupListItem::sIconWidth = 0;
@@ -271,6 +272,9 @@ bool LLGroupList::onContextMenuItemEnable(const LLSD& userdata)
 	if (userdata.asString() == "activate")
 		return gAgent.getGroupID() != selected_group_id;
 
+	if (userdata.asString() == "call")
+		return LLVoiceClient::voiceEnabled()&&gVoiceClient->voiceWorking();
+
 	return real_group_selected;
 }
 
diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp
index 85e95ca1d65..564c80a492c 100644
--- a/indra/newview/llpanelavatar.cpp
+++ b/indra/newview/llpanelavatar.cpp
@@ -165,6 +165,8 @@ BOOL LLPanelAvatarNotes::postBuild()
 	resetControls();
 	resetData();
 
+	gVoiceClient->addObserver((LLVoiceClientStatusObserver*)this);
+
 	return TRUE;
 }
 
@@ -337,6 +339,8 @@ LLPanelAvatarNotes::~LLPanelAvatarNotes()
 	if(getAvatarId().notNull())
 	{
 		LLAvatarTracker::instance().removeParticularFriendObserver(getAvatarId(), this);
+		if(LLVoiceClient::getInstance())
+			LLVoiceClient::getInstance()->removeObserver((LLVoiceClientStatusObserver*)this);
 	}
 }
 
@@ -346,6 +350,17 @@ void LLPanelAvatarNotes::changed(U32 mask)
 	childSetEnabled("teleport", LLAvatarTracker::instance().isBuddyOnline(getAvatarId()));
 }
 
+// virtual
+void LLPanelAvatarNotes::onChange(EStatusType status, const std::string &channelURI, bool proximal)
+{
+	if(status == STATUS_JOINING || status == STATUS_LEFT_CHANNEL)
+	{
+		return;
+	}
+
+	childSetEnabled("call", LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking());
+}
+
 void LLPanelAvatarNotes::setAvatarId(const LLUUID& id)
 {
 	if(id.notNull())
@@ -437,7 +452,6 @@ void LLPanelProfileTab::updateButtons()
 
 	bool enable_map_btn = is_avatar_online && gAgent.isGodlike() || is_agent_mappable(getAvatarId());
 	childSetEnabled("show_on_map_btn", enable_map_btn);
-	childSetEnabled("call", LLAvatarActions::canCall(getAvatarId()));
 }
 
 //////////////////////////////////////////////////////////////////////////
@@ -485,6 +499,8 @@ BOOL LLPanelAvatarProfile::postBuild()
 	pic = getChild<LLTextureCtrl>("real_world_pic");
 	pic->setFallbackImageName("default_profile_picture.j2c");
 
+	gVoiceClient->addObserver((LLVoiceClientStatusObserver*)this);
+
 	resetControls();
 	resetData();
 
@@ -757,6 +773,8 @@ LLPanelAvatarProfile::~LLPanelAvatarProfile()
 	if(getAvatarId().notNull())
 	{
 		LLAvatarTracker::instance().removeParticularFriendObserver(getAvatarId(), this);
+		if(LLVoiceClient::getInstance())
+			LLVoiceClient::getInstance()->removeObserver((LLVoiceClientStatusObserver*)this);
 	}
 }
 
@@ -766,6 +784,17 @@ void LLPanelAvatarProfile::changed(U32 mask)
 	childSetEnabled("teleport", LLAvatarTracker::instance().isBuddyOnline(getAvatarId()));
 }
 
+// virtual
+void LLPanelAvatarProfile::onChange(EStatusType status, const std::string &channelURI, bool proximal)
+{
+	if(status == STATUS_JOINING || status == STATUS_LEFT_CHANNEL)
+	{
+		return;
+	}
+
+	childSetEnabled("call", LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking());
+}
+
 void LLPanelAvatarProfile::setAvatarId(const LLUUID& id)
 {
 	if(id.notNull())
diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h
index 22efa5dc351..1174c72d60c 100644
--- a/indra/newview/llpanelavatar.h
+++ b/indra/newview/llpanelavatar.h
@@ -36,6 +36,7 @@
 #include "llpanel.h"
 #include "llavatarpropertiesprocessor.h"
 #include "llcallingcard.h"
+#include "llvoiceclient.h"
 
 class LLComboBox;
 class LLLineEditor;
@@ -122,6 +123,7 @@ class LLPanelProfileTab
 class LLPanelAvatarProfile
 	: public LLPanelProfileTab
 	, public LLFriendObserver
+	, public LLVoiceClientStatusObserver
 {
 public:
 	LLPanelAvatarProfile();
@@ -134,6 +136,10 @@ class LLPanelAvatarProfile
 	 */
 	virtual void changed(U32 mask);
 
+	// Implements LLVoiceClientStatusObserver::onChange() to enable the call
+	// button when voice is available
+	/*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal);
+
 	/*virtual*/ void setAvatarId(const LLUUID& id);
 
 	/**
@@ -257,6 +263,7 @@ class LLPanelMyProfile
 class LLPanelAvatarNotes 
 	: public LLPanelProfileTab
 	, public LLFriendObserver
+	, public LLVoiceClientStatusObserver
 {
 public:
 	LLPanelAvatarNotes();
@@ -269,6 +276,10 @@ class LLPanelAvatarNotes
 	 */
 	virtual void changed(U32 mask);
 
+	// Implements LLVoiceClientStatusObserver::onChange() to enable the call
+	// button when voice is available
+	/*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal);
+
 	/*virtual*/ void onOpen(const LLSD& key);
 
 	/*virtual*/ BOOL postBuild();
diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp
index c30ef3221d4..1d447a22d73 100644
--- a/indra/newview/llpanelgroup.cpp
+++ b/indra/newview/llpanelgroup.cpp
@@ -101,6 +101,8 @@ LLPanelGroup::LLPanelGroup()
 LLPanelGroup::~LLPanelGroup()
 {
 	LLGroupMgr::getInstance()->removeObserver(this);
+	if(LLVoiceClient::getInstance())
+		LLVoiceClient::getInstance()->removeObserver(this);
 }
 
 void LLPanelGroup::onOpen(const LLSD& key)
@@ -188,6 +190,8 @@ BOOL LLPanelGroup::postBuild()
 
 	if(panel_general)
 		panel_general->setupCtrls(this);
+
+	gVoiceClient->addObserver(this);
 	
 	return TRUE;
 }
@@ -300,6 +304,17 @@ void LLPanelGroup::changed(LLGroupChange gc)
 	update(gc);
 }
 
+// virtual
+void LLPanelGroup::onChange(EStatusType status, const std::string &channelURI, bool proximal)
+{
+	if(status == STATUS_JOINING || status == STATUS_LEFT_CHANNEL)
+	{
+		return;
+	}
+
+	childSetEnabled("btn_call", LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking());
+}
+
 void LLPanelGroup::notifyObservers()
 {
 	changed(GC_ALL);
@@ -356,6 +371,13 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id)
 	for(std::vector<LLPanelGroupTab* >::iterator it = mTabs.begin();it!=mTabs.end();++it)
 		(*it)->setGroupID(group_id);
 
+	LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(mID);
+	if(gdatap)
+	{
+		childSetValue("group_name", gdatap->mName);
+		childSetToolTip("group_name",gdatap->mName);
+	}
+
 	LLButton* button_apply = findChild<LLButton>("btn_apply");
 	LLButton* button_refresh = findChild<LLButton>("btn_refresh");
 	LLButton* button_create = findChild<LLButton>("btn_create");
@@ -457,17 +479,6 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id)
 	}
 
 	reposButtons();
-
-	LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(mID);
-
-	if(gdatap)
-	{
-		childSetValue("group_name", gdatap->mName);
-		childSetToolTip("group_name",gdatap->mName);
-		
-		//group data is already present, call update manually
-		update(GC_ALL);
-	}
 }
 
 bool LLPanelGroup::apply(LLPanelGroupTab* tab)
diff --git a/indra/newview/llpanelgroup.h b/indra/newview/llpanelgroup.h
index 7ea5e67b44f..8c846956771 100644
--- a/indra/newview/llpanelgroup.h
+++ b/indra/newview/llpanelgroup.h
@@ -35,6 +35,7 @@
 #include "llgroupmgr.h"
 #include "llpanel.h"
 #include "lltimer.h"
+#include "llvoiceclient.h"
 
 struct LLOfferInfo;
 
@@ -47,7 +48,8 @@ class LLAgent;
 
 
 class LLPanelGroup : public LLPanel,
-					 public LLGroupMgrObserver 
+					 public LLGroupMgrObserver,
+					 public LLVoiceClientStatusObserver
 {
 public:
 	LLPanelGroup();
@@ -64,6 +66,10 @@ class LLPanelGroup : public LLPanel,
 	// Group manager observer trigger.
 	virtual void changed(LLGroupChange gc);
 
+	// Implements LLVoiceClientStatusObserver::onChange() to enable the call
+	// button when voice is available
+	/*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal);
+
 	void showNotice(const std::string& subject,
 					const std::string& message,
 					const bool& has_inventory,
diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp
index a334eb9d680..ff1e43b5268 100644
--- a/indra/newview/llpanelimcontrolpanel.cpp
+++ b/indra/newview/llpanelimcontrolpanel.cpp
@@ -64,21 +64,52 @@ void LLPanelChatControlPanel::onOpenVoiceControlsClicked()
 	LLFloaterReg::showInstance("voice_controls");
 }
 
+void LLPanelChatControlPanel::onChange(EStatusType status, const std::string &channelURI, bool proximal)
+{
+	if(status == STATUS_JOINING || status == STATUS_LEFT_CHANNEL)
+	{
+		return;
+	}
+
+	updateCallButton();
+}
+
 void LLPanelChatControlPanel::onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state)
 {
 	updateButtons(new_state >= LLVoiceChannel::STATE_CALL_STARTED);
 }
 
+void LLPanelChatControlPanel::updateCallButton()
+{
+	// hide/show call button
+	bool voice_enabled = LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking();
+
+	LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(mSessionId);
+	if (!session) return;
+
+	bool session_initialized = session->mSessionInitialized;
+	bool callback_enabled = session->mCallBackEnabled;
+
+	BOOL enable_connect = session_initialized
+		&& voice_enabled
+		&& callback_enabled;
+	childSetEnabled("call_btn", enable_connect);
+}
+
 void LLPanelChatControlPanel::updateButtons(bool is_call_started)
 {
 	childSetVisible("end_call_btn_panel", is_call_started);
 	childSetVisible("voice_ctrls_btn_panel", is_call_started);
 	childSetVisible("call_btn_panel", ! is_call_started);
+	updateCallButton();
+	
 }
 
 LLPanelChatControlPanel::~LLPanelChatControlPanel()
 {
 	mVoiceChannelStateChangeConnection.disconnect();
+	if(LLVoiceClient::getInstance())
+		LLVoiceClient::getInstance()->removeObserver(this);
 }
 
 BOOL LLPanelChatControlPanel::postBuild()
@@ -87,26 +118,9 @@ BOOL LLPanelChatControlPanel::postBuild()
 	childSetAction("end_call_btn", boost::bind(&LLPanelChatControlPanel::onEndCallButtonClicked, this));
 	childSetAction("voice_ctrls_btn", boost::bind(&LLPanelChatControlPanel::onOpenVoiceControlsClicked, this));
 
-	return TRUE;
-}
-
-void LLPanelChatControlPanel::draw()
-{
-	// hide/show start call and end call buttons
-	bool voice_enabled = LLVoiceClient::voiceEnabled();
-
-	LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(mSessionId);
-	if (!session) return;
+	gVoiceClient->addObserver(this);
 
-	bool session_initialized = session->mSessionInitialized;
-	bool callback_enabled = session->mCallBackEnabled;
-
-	BOOL enable_connect = session_initialized
-		&& voice_enabled
-		&& callback_enabled;
-	childSetEnabled("call_btn", enable_connect);
-
-	LLPanel::draw();
+	return TRUE;
 }
 
 void LLPanelChatControlPanel::setSessionId(const LLUUID& session_id)
@@ -266,6 +280,8 @@ void LLPanelGroupControlPanel::draw()
 	// Need to resort the participant list if it's in sort by recent speaker order.
 	if (mParticipantList)
 		mParticipantList->updateRecentSpeakersOrder();
+	//* TODO: find better way to properly enable call button for group and remove this call from draw()
+	updateCallButton();
 	LLPanelChatControlPanel::draw();
 }
 
diff --git a/indra/newview/llpanelimcontrolpanel.h b/indra/newview/llpanelimcontrolpanel.h
index 25fdf944c92..3ab505a084d 100644
--- a/indra/newview/llpanelimcontrolpanel.h
+++ b/indra/newview/llpanelimcontrolpanel.h
@@ -39,7 +39,9 @@
 
 class LLParticipantList;
 
-class LLPanelChatControlPanel : public LLPanel
+class LLPanelChatControlPanel 
+	: public LLPanel
+	, public LLVoiceClientStatusObserver
 {
 public:
 	LLPanelChatControlPanel() :
@@ -47,15 +49,21 @@ class LLPanelChatControlPanel : public LLPanel
 	~LLPanelChatControlPanel();
 
 	virtual BOOL postBuild();
-	virtual void draw();
 
 	void onCallButtonClicked();
 	void onEndCallButtonClicked();
 	void onOpenVoiceControlsClicked();
 
+	// Implements LLVoiceClientStatusObserver::onChange() to enable the call
+	// button when voice is available
+	/*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal);
+
 	virtual void onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state);
 
 	void updateButtons(bool is_call_started);
+	
+	// Enables/disables call button depending on voice availability
+	void updateCallButton();
 
 	virtual void setSessionId(const LLUUID& session_id);
 	const LLUUID& getSessionId() { return mSessionId; }
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index c14b282488c..b01cdcc832b 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -462,6 +462,9 @@ LLPanelPeople::~LLPanelPeople()
 	delete mFriendListUpdater;
 	delete mRecentListUpdater;
 
+	if(LLVoiceClient::getInstance())
+		LLVoiceClient::getInstance()->removeObserver(this);
+
 	LLView::deleteViewByHandle(mGroupPlusMenuHandle);
 	LLView::deleteViewByHandle(mNearbyViewSortMenuHandle);
 	LLView::deleteViewByHandle(mFriendsViewSortMenuHandle);
@@ -612,6 +615,8 @@ BOOL LLPanelPeople::postBuild()
 	if(recent_view_sort)
 		mRecentViewSortMenuHandle  = recent_view_sort->getHandle();
 
+	gVoiceClient->addObserver(this);
+
 	// call this method in case some list is empty and buttons can be in inconsistent state
 	updateButtons();
 
@@ -621,6 +626,17 @@ BOOL LLPanelPeople::postBuild()
 	return TRUE;
 }
 
+// virtual
+void LLPanelPeople::onChange(EStatusType status, const std::string &channelURI, bool proximal)
+{
+	if(status == STATUS_JOINING || status == STATUS_LEFT_CHANNEL)
+	{
+		return;
+	}
+	
+	updateButtons();
+}
+
 void LLPanelPeople::updateFriendList()
 {
 	if (!mOnlineFriendList || !mAllFriendList)
@@ -775,41 +791,20 @@ void LLPanelPeople::updateButtons()
 		}
 	}
 
+	bool enable_calls = gVoiceClient->voiceWorking() && gVoiceClient->voiceEnabled();
+
 	buttonSetEnabled("teleport_btn",		friends_tab_active && item_selected && isFriendOnline(selected_uuids.front()));
 	buttonSetEnabled("view_profile_btn",	item_selected);
 	buttonSetEnabled("im_btn",				multiple_selected); // allow starting the friends conference for multiple selection
-	buttonSetEnabled("call_btn",			multiple_selected && canCall());
+	buttonSetEnabled("call_btn",			multiple_selected && enable_calls);
 	buttonSetEnabled("share_btn",			item_selected); // not implemented yet
 
 	bool none_group_selected = item_selected && selected_id.isNull();
 	buttonSetEnabled("group_info_btn", !none_group_selected);
-	buttonSetEnabled("group_call_btn", !none_group_selected);
+	buttonSetEnabled("group_call_btn", !none_group_selected && enable_calls);
 	buttonSetEnabled("chat_btn", !none_group_selected);
 }
 
-bool LLPanelPeople::canCall()
-{
-	std::vector<LLUUID> selected_uuids;
-	getCurrentItemIDs(selected_uuids);
-
-	bool result = false;
-
-	std::vector<LLUUID>::const_iterator
-		id = selected_uuids.begin(),
-		uuids_end = selected_uuids.end();
-
-	for (;id != uuids_end; ++id)
-	{
-		if (LLAvatarActions::canCall(*id))
-		{
-			result = true;
-			break;
-		}
-	}
-
-	return result;
-}
-
 std::string LLPanelPeople::getActiveTabName() const
 {
 	return mTabContainer->getCurrentPanel()->getName();
diff --git a/indra/newview/llpanelpeople.h b/indra/newview/llpanelpeople.h
index 7580fdbeeff..6d3d4361568 100644
--- a/indra/newview/llpanelpeople.h
+++ b/indra/newview/llpanelpeople.h
@@ -36,13 +36,16 @@
 #include <llpanel.h>
 
 #include "llcallingcard.h" // for avatar tracker
+#include "llvoiceclient.h"
 
 class LLFilterEditor;
 class LLTabContainer;
 class LLAvatarList;
 class LLGroupList;
 
-class LLPanelPeople : public LLPanel
+class LLPanelPeople 
+	: public LLPanel
+	, public LLVoiceClientStatusObserver
 {
 	LOG_CLASS(LLPanelPeople);
 public:
@@ -52,6 +55,9 @@ class LLPanelPeople : public LLPanel
 	/*virtual*/ BOOL 	postBuild();
 	/*virtual*/ void	onOpen(const LLSD& key);
 	/*virtual*/ bool	notifyChildren(const LLSD& info);
+	// Implements LLVoiceClientStatusObserver::onChange() to enable call buttons
+	// when voice is available
+	/*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal);
 
 	// internals
 	class Updater;
@@ -73,7 +79,6 @@ class LLPanelPeople : public LLPanel
 
 	bool					isFriendOnline(const LLUUID& id);
 	bool					isItemsFreeOfFriends(const std::vector<LLUUID>& uuids);
-	bool 					canCall();
 
 	void					updateButtons();
 	std::string				getActiveTabName() const;
diff --git a/indra/newview/llpanelpeoplemenus.cpp b/indra/newview/llpanelpeoplemenus.cpp
index c1c10e60220..d9651a60450 100644
--- a/indra/newview/llpanelpeoplemenus.cpp
+++ b/indra/newview/llpanelpeoplemenus.cpp
@@ -183,20 +183,7 @@ bool NearbyMenu::enableContextMenuItem(const LLSD& userdata)
 	}
 	else if (item == std::string("can_call"))
 	{
-		bool result = false;
-		std::vector<LLUUID>::const_iterator
-			id = mUUIDs.begin(),
-			uuids_end = mUUIDs.end();
-
-		for (;id != uuids_end; ++id)
-		{
-			if (LLAvatarActions::canCall(*id))
-			{
-				result = true;
-				break;
-			}
-		}
-		return result;
+		return LLAvatarActions::canCall();
 	}
 	return false;
 }
diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp
index 88b706fb6bf..c0302eee9e0 100644
--- a/indra/newview/llparticipantlist.cpp
+++ b/indra/newview/llparticipantlist.cpp
@@ -628,7 +628,7 @@ bool LLParticipantList::LLParticipantListMenu::enableContextMenuItem(const LLSD&
 	}
 	else if (item == "can_call")
 	{
-		return LLVoiceClient::voiceEnabled();
+		return LLVoiceClient::voiceEnabled()&&gVoiceClient->voiceWorking();
 	}
 
 	return true;
diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index c84afa5af12..e52d6a089bd 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -5853,6 +5853,11 @@ bool LLVoiceClient::voiceEnabled()
 	return gSavedSettings.getBOOL("EnableVoiceChat") && !gSavedSettings.getBOOL("CmdLineDisableVoice");
 }
 
+bool LLVoiceClient::voiceWorking()
+{
+	return (stateLoggedIn <= mState) && (mState <= stateLeavingSession);
+}
+
 void LLVoiceClient::setLipSyncEnabled(BOOL enabled)
 {
 	mLipSyncEnabled = enabled;
diff --git a/indra/newview/llvoiceclient.h b/indra/newview/llvoiceclient.h
index 6231c6ba29f..8f668dff196 100644
--- a/indra/newview/llvoiceclient.h
+++ b/indra/newview/llvoiceclient.h
@@ -191,6 +191,8 @@ static	void updatePosition(void);
 		void inputUserControlState(bool down); // interpret any sort of up-down mic-open control input according to ptt-toggle prefs
 		void setVoiceEnabled(bool enabled);
 		static bool voiceEnabled();
+		// Checks is voice working judging from mState
+		bool voiceWorking();
 		void setUsePTT(bool usePTT);
 		void setPTTIsToggle(bool PTTIsToggle);
 		bool getPTTIsToggle();
-- 
GitLab


From dcbe10044808d39c890fd26677374981147fe1f5 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 22 Jan 2010 15:55:41 -0800
Subject: [PATCH 057/521] Linux: Don't strip or tar the viewer if it's not a
 release build. This is some more work towards making RelWithDebInfo very
 developer-friendly.

---
 indra/newview/viewer_manifest.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 00a903431a6..15a51bbe140 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -822,8 +822,8 @@ def package_finish(self):
             'dst': self.get_dst_prefix(),
             'inst': self.build_path_of(installer_name)})
         try:
-            # only create tarball if it's not a debug build.
-            if self.args['buildtype'].lower() != 'debug':
+            # only create tarball if it's a release build.
+            if self.args['buildtype'].lower() == 'release':
                 # --numeric-owner hides the username of the builder for
                 # security etc.
                 self.run_command('tar -C %(dir)s --numeric-owner -cjf '
@@ -855,7 +855,7 @@ def construct(self):
                 pass
 
             
-        if(self.args['buildtype'].lower() != 'debug'):
+        if(self.args['buildtype'].lower() == 'release'):
             print "* packaging stripped viewer binary."
             self.path("secondlife-stripped","bin/do-not-directly-run-secondlife-bin")
         else:
-- 
GitLab


From 337716d946cf4ece8ba59cce82bd51b3c2148f75 Mon Sep 17 00:00:00 2001
From: richard <none@none>
Date: Fri, 22 Jan 2010 16:51:13 -0800
Subject: [PATCH 058/521] LLPointer cleanup and fix for EXT-4413 reviewed by
 Rick

---
 indra/llcommon/llpointer.h                    |  1 -
 indra/llcommon/llrefcount.cpp                 | 11 +++
 indra/llcommon/llrefcount.h                   | 14 +--
 indra/llui/llspinctrl.cpp                     | 16 ++--
 indra/llui/llspinctrl.h                       |  5 +-
 indra/llui/llstyle.h                          |  4 +-
 indra/llui/lltextbase.cpp                     | 49 ++++-------
 indra/llui/lltextbase.h                       | 19 ++--
 indra/llui/lltexteditor.cpp                   |  8 +-
 indra/llui/llui.cpp                           | 18 ++--
 indra/llui/lluicolortable.h                   |  2 +-
 indra/llui/lluiimage.cpp                      |  4 +-
 indra/llxuixml/llinitparam.cpp                | 12 ++-
 indra/llxuixml/llinitparam.h                  |  3 +-
 indra/llxuixml/lluicolor.cpp                  | 14 +--
 indra/llxuixml/lluicolor.h                    |  8 +-
 indra/newview/llavatarlist.h                  | 10 +--
 indra/newview/llavatarlistitem.cpp            | 88 +++++++------------
 indra/newview/llavatarlistitem.h              | 15 +++-
 indra/newview/llexpandabletextbox.cpp         |  6 +-
 indra/newview/llviewertexteditor.cpp          |  2 +-
 .../xui/en/widgets/avatar_list_item.xml       | 44 ++++++++++
 22 files changed, 195 insertions(+), 158 deletions(-)
 create mode 100644 indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml

diff --git a/indra/llcommon/llpointer.h b/indra/llcommon/llpointer.h
index 2c37eadcc65..e6c736a2632 100644
--- a/indra/llcommon/llpointer.h
+++ b/indra/llcommon/llpointer.h
@@ -95,7 +95,6 @@ template <class Type> class LLPointer
 	bool notNull() const						{ return (mPointer != NULL); }
 
 	operator Type*()       const				{ return mPointer; }
-	operator const 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); 	}
diff --git a/indra/llcommon/llrefcount.cpp b/indra/llcommon/llrefcount.cpp
index 33b6875fb0e..c90b52f482f 100644
--- a/indra/llcommon/llrefcount.cpp
+++ b/indra/llcommon/llrefcount.cpp
@@ -35,6 +35,17 @@
 
 #include "llerror.h"
 
+LLRefCount::LLRefCount(const LLRefCount& other)
+:	mRef(0)
+{
+}
+
+LLRefCount& LLRefCount::operator=(const LLRefCount&)
+{
+	// do nothing, since ref count is specific to *this* reference
+	return *this;
+}
+
 LLRefCount::LLRefCount() :
 	mRef(0)
 {
diff --git a/indra/llcommon/llrefcount.h b/indra/llcommon/llrefcount.h
index 9ab844eb22e..a18f6706a9b 100644
--- a/indra/llcommon/llrefcount.h
+++ b/indra/llcommon/llrefcount.h
@@ -41,22 +41,20 @@
 
 class LL_COMMON_API LLRefCount
 {
-private:
-	LLRefCount(const LLRefCount& other); // no implementation
-private:
-	LLRefCount& operator=(const LLRefCount&); // no implementation
 protected:
+	LLRefCount(const LLRefCount& other);
+	LLRefCount& operator=(const LLRefCount&);
 	virtual ~LLRefCount(); // use unref()
 	
 public:
 	LLRefCount();
 
-	void ref()
+	void ref() const
 	{ 
 		mRef++; 
 	} 
 
-	S32 unref()
+	S32 unref() const
 	{
 		llassert(mRef >= 1);
 		if (0 == --mRef) 
@@ -67,13 +65,15 @@ class LL_COMMON_API LLRefCount
 		return mRef;
 	}	
 
+	//NOTE: when passing around a const LLRefCount object, this can return different results
+	// at different types, since mRef is mutable
 	S32 getNumRefs() const
 	{
 		return mRef;
 	}
 
 private: 
-	S32	mRef; 
+	mutable S32	mRef; 
 };
 
 #endif
diff --git a/indra/llui/llspinctrl.cpp b/indra/llui/llspinctrl.cpp
index 20a1ab7af3a..28f3788817a 100644
--- a/indra/llui/llspinctrl.cpp
+++ b/indra/llui/llspinctrl.cpp
@@ -270,13 +270,19 @@ void LLSpinCtrl::clear()
 	mbHasBeenSet = FALSE;
 }
 
-
+void LLSpinCtrl::updateLabelColor()
+{
+	if( mLabelBox )
+	{
+		mLabelBox->setColor( getEnabled() ? mTextEnabledColor.get() : mTextDisabledColor.get() );
+	}
+}
 
 void LLSpinCtrl::updateEditor()
 {
 	LLLocale locale(LLLocale::USER_LOCALE);
 
-	// Don't display very small negative values as -0.000
+	// Don't display very small negative valu	es as -0.000
 	F32 displayed_value = clamp_precision((F32)getValue().asReal(), mPrecision);
 
 //	if( S32( displayed_value * pow( 10, mPrecision ) ) == 0 )
@@ -339,10 +345,7 @@ void LLSpinCtrl::setEnabled(BOOL b)
 {
 	LLView::setEnabled( b );
 	mEditor->setEnabled( b );
-	if( mLabelBox )
-	{
-		mLabelBox->setColor( b ? mTextEnabledColor.get() : mTextDisabledColor.get() );
-	}
+	updateLabelColor();
 }
 
 
@@ -390,6 +393,7 @@ void LLSpinCtrl::setLabel(const LLStringExplicit& label)
 	{
 		llwarns << "Attempting to set label on LLSpinCtrl constructed without one " << getName() << llendl;
 	}
+	updateLabelColor();
 }
 
 void LLSpinCtrl::setAllowEdit(BOOL allow_edit)
diff --git a/indra/llui/llspinctrl.h b/indra/llui/llspinctrl.h
index 0e610b77411..00d6f86f837 100644
--- a/indra/llui/llspinctrl.h
+++ b/indra/llui/llspinctrl.h
@@ -81,8 +81,8 @@ class LLSpinCtrl
 	virtual void	setPrecision(S32 precision);
 
 	void			setLabel(const LLStringExplicit& label);
-	void			setLabelColor(const LLColor4& c)			{ mTextEnabledColor = c; }
-	void			setDisabledLabelColor(const LLColor4& c)	{ mTextDisabledColor = c; }
+	void			setLabelColor(const LLColor4& c)			{ mTextEnabledColor = c; updateLabelColor(); }
+	void			setDisabledLabelColor(const LLColor4& c)	{ mTextDisabledColor = c; updateLabelColor();}
 	void			setAllowEdit(BOOL allow_edit);
 
 	virtual void	onTabInto();
@@ -103,6 +103,7 @@ class LLSpinCtrl
 	void			onDownBtn(const LLSD& data);
 
 private:
+	void			updateLabelColor();
 	void			updateEditor();
 	void			reportInvalidData();
 
diff --git a/indra/llui/llstyle.h b/indra/llui/llstyle.h
index ee9ca730e94..2067e8e8be3 100644
--- a/indra/llui/llstyle.h
+++ b/indra/llui/llstyle.h
@@ -59,11 +59,12 @@ class LLStyle : public LLRefCount
 	void setColor(const LLColor4 &color) { mColor = color; }
 
 	const LLColor4& getReadOnlyColor() const { return mReadOnlyColor; }
+	void setReadOnlyColor(const LLColor4& color) { mReadOnlyColor = color; }
 
 	BOOL isVisible() const;
 	void setVisible(BOOL is_visible);
 
-	LLFontGL::ShadowType getShadowType() { return mDropShadow; }
+	LLFontGL::ShadowType getShadowType() const { return mDropShadow; }
 
 	void setFont(const LLFontGL* font);
 	const LLFontGL* getFont() const;
@@ -116,5 +117,6 @@ class LLStyle : public LLRefCount
 };
 
 typedef LLPointer<LLStyle> LLStyleSP;
+typedef LLPointer<const LLStyle> LLStyleConstSP;
 
 #endif  // LL_LLSTYLE_H
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 17aecaf32fd..885a830c9fc 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -291,9 +291,13 @@ bool LLTextBase::truncate()
 	return did_truncate;
 }
 
-LLStyle::Params LLTextBase::getDefaultStyle()
+LLStyle::Params LLTextBase::getDefaultStyleParams()
 {
-	return LLStyle::Params().color(mFgColor.get()).readonly_color(mReadOnlyFgColor.get()).font(mDefaultFont).drop_shadow(mFontShadow);
+	return LLStyle::Params()
+		.color(LLUIColor(&mFgColor))
+		.readonly_color(LLUIColor(&mReadOnlyFgColor))
+		.font(mDefaultFont)
+		.drop_shadow(mFontShadow);
 }
 
 void LLTextBase::onValueChange(S32 start, S32 end)
@@ -619,7 +623,7 @@ S32 LLTextBase::insertStringNoUndo(S32 pos, const LLWString &wstr, LLTextBase::s
 	else
 	{
 		// create default editable segment to hold new text
-		default_segment = new LLNormalTextSegment( new LLStyle(getDefaultStyle()), pos, pos + insert_len, *this);
+		default_segment = new LLNormalTextSegment( LLStyleConstSP(new LLStyle(getDefaultStyleParams())), pos, pos + insert_len, *this);
 	}
 
 	// shift remaining segments to right
@@ -743,7 +747,7 @@ void LLTextBase::createDefaultSegment()
 	// ensures that there is always at least one segment
 	if (mSegments.empty())
 	{
-		LLTextSegmentPtr default_segment = new LLNormalTextSegment( new LLStyle(getDefaultStyle()), 0, getLength() + 1, *this);
+		LLTextSegmentPtr default_segment = new LLNormalTextSegment( LLStyleConstSP(new LLStyle(getDefaultStyleParams())), 0, getLength() + 1, *this);
 		mSegments.insert(default_segment);
 		default_segment->linkToDocument(this);
 	}
@@ -1510,16 +1514,7 @@ std::string LLTextBase::getText() const
 void LLTextBase::appendText(const std::string &new_text, bool prepend_newline, const LLStyle::Params& input_params)
 {
 	LLStyle::Params style_params(input_params);
-	style_params.fillFrom(getDefaultStyle());
-
-	if (!style_params.font.isProvided())
-	{
-		style_params.font = mDefaultFont;
-	}
-	if (!style_params.drop_shadow.isProvided())
-	{
-		style_params.drop_shadow = mFontShadow;
-	}
+	style_params.fillFrom(getDefaultStyleParams());
 
 	S32 part = (S32)LLTextParser::WHOLE;
 	if(mParseHTML)
@@ -1536,13 +1531,7 @@ void LLTextBase::appendText(const std::string &new_text, bool prepend_newline, c
 			LLStyle::Params link_params = style_params;
 			link_params.color = match.getColor();
 			link_params.readonly_color =  match.getColor();
-			// apply font name from requested style_params
-			std::string font_name = LLFontGL::nameFromFont(style_params.font());
-			std::string font_size = LLFontGL::sizeFromFont(style_params.font());
-			link_params.font.name(font_name);
-			link_params.font.size(font_size);
 			link_params.font.style("UNDERLINE");
-			
 			link_params.link_href = match.getUrl();
 
 			// output the text before the Url
@@ -1611,9 +1600,9 @@ void LLTextBase::appendText(const std::string &new_text, bool prepend_newline, c
 	}
 }
 
-void LLTextBase::appendAndHighlightText(const std::string &new_text, bool prepend_newline, S32 highlight_part, const LLStyle::Params& stylep)
+void LLTextBase::appendAndHighlightText(const std::string &new_text, bool prepend_newline, S32 highlight_part, const LLStyle::Params& style_params)
 {
-	if (new_text.empty()) return;
+	if (new_text.empty()) return;                                                                                 
 
 	// Save old state
 	S32 selection_start = mSelectionStart;
@@ -1631,7 +1620,7 @@ void LLTextBase::appendAndHighlightText(const std::string &new_text, bool prepen
 	
 	if (mParseHighlights && highlight)
 	{
-		LLStyle::Params highlight_params = stylep;
+		LLStyle::Params highlight_params(style_params);
 
 		LLSD pieces = highlight->parsePartialLineHighlights(new_text, highlight_params.color(), (LLTextParser::EHighlightPosition)highlight_part);
 		for (S32 i = 0; i < pieces.size(); i++)
@@ -1651,7 +1640,7 @@ void LLTextBase::appendAndHighlightText(const std::string &new_text, bool prepen
 				wide_text = utf8str_to_wstring(pieces[i]["text"].asString());
 			}
 			S32 cur_length = getLength();
-			LLTextSegmentPtr segmentp = new LLNormalTextSegment(new LLStyle(highlight_params), cur_length, cur_length + wide_text.size(), *this);
+			LLTextSegmentPtr segmentp = new LLNormalTextSegment(LLStyleConstSP(new LLStyle(highlight_params)), cur_length, cur_length + wide_text.size(), *this);
 			segment_vec_t segments;
 			segments.push_back(segmentp);
 			insertStringNoUndo(cur_length, wide_text, &segments);
@@ -1675,7 +1664,7 @@ void LLTextBase::appendAndHighlightText(const std::string &new_text, bool prepen
 		segment_vec_t segments;
 		S32 segment_start = old_length;
 		S32 segment_end = old_length + wide_text.size();
-		segments.push_back(new LLNormalTextSegment(new LLStyle(stylep), segment_start, segment_end, *this ));
+		segments.push_back(new LLNormalTextSegment(LLStyleConstSP(new LLStyle(style_params)), segment_start, segment_end, *this ));
 
 		insertStringNoUndo(getLength(), wide_text, &segments);
 	}
@@ -1719,7 +1708,7 @@ void LLTextBase::replaceUrlLabel(const std::string &url,
 	for (it = mSegments.begin(); it != mSegments.end(); ++it)
 	{
 		LLTextSegment *seg = *it;
-		const LLStyleSP style = seg->getStyle();
+		LLStyleConstSP style = seg->getStyle();
 
 		// update segment start/end length in case we replaced text earlier
 		S32 seg_length = seg->getEnd() - seg->getStart();
@@ -2212,9 +2201,9 @@ bool LLTextSegment::canEdit() const { return false; }
 void LLTextSegment::unlinkFromDocument(LLTextBase*) {}
 void LLTextSegment::linkToDocument(LLTextBase*) {}
 const LLColor4& LLTextSegment::getColor() const { return LLColor4::white; }
-void LLTextSegment::setColor(const LLColor4 &color) {}
-const LLStyleSP LLTextSegment::getStyle() const {static LLStyleSP sp(new LLStyle()); return sp; }
-void LLTextSegment::setStyle(const LLStyleSP &style) {}
+//void LLTextSegment::setColor(const LLColor4 &color) {}
+LLStyleConstSP LLTextSegment::getStyle() const {static LLStyleConstSP sp(new LLStyle()); return sp; }
+void LLTextSegment::setStyle(LLStyleConstSP &style) {}
 void LLTextSegment::setToken( LLKeywordToken* token ) {}
 LLKeywordToken*	LLTextSegment::getToken() const { return NULL; }
 void LLTextSegment::setToolTip( const std::string &msg ) {}
@@ -2239,7 +2228,7 @@ BOOL LLTextSegment::hasMouseCapture() { return FALSE; }
 // LLNormalTextSegment
 //
 
-LLNormalTextSegment::LLNormalTextSegment( const LLStyleSP& style, S32 start, S32 end, LLTextBase& editor ) 
+LLNormalTextSegment::LLNormalTextSegment( LLStyleConstSP& style, S32 start, S32 end, LLTextBase& editor ) 
 :	LLTextSegment(start, end),
 	mStyle( style ),
 	mToken(NULL),
diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h
index 038b9eaa62b..5526667166f 100644
--- a/indra/llui/lltextbase.h
+++ b/indra/llui/lltextbase.h
@@ -184,7 +184,6 @@ class LLTextBase
 	bool					scrolledToEnd();
 
 	const LLFontGL*			getDefaultFont() const					{ return mDefaultFont; }
-	LLStyle::Params			getDefaultStyle();
 
 public:
 	// Fired when a URL link is clicked
@@ -281,7 +280,8 @@ class LLTextBase
 	void							createDefaultSegment();
 	virtual void					updateSegments();
 	void							insertSegment(LLTextSegmentPtr segment_to_insert);
-	
+	LLStyle::Params					getDefaultStyleParams();
+
 	//  manage lines
 	S32								getLineStart( S32 line ) const;
 	S32								getLineEnd( S32 line ) const;
@@ -388,9 +388,9 @@ class LLTextSegment : public LLRefCount, public LLMouseHandler
 	virtual void				linkToDocument(class LLTextBase* editor);
 
 	virtual const LLColor4&		getColor() const;
-	virtual void 				setColor(const LLColor4 &color);
-	virtual const LLStyleSP		getStyle() const;
-	virtual void 				setStyle(const LLStyleSP &style);
+	//virtual void 				setColor(const LLColor4 &color);
+	virtual LLStyleConstSP		getStyle() const;
+	virtual void 				setStyle(LLStyleConstSP &style);
 	virtual void				setToken( LLKeywordToken* token );
 	virtual LLKeywordToken*		getToken() const;
 	virtual void				setToolTip(const std::string& tooltip);
@@ -426,7 +426,7 @@ class LLTextSegment : public LLRefCount, public LLMouseHandler
 class LLNormalTextSegment : public LLTextSegment
 {
 public:
-	LLNormalTextSegment( const LLStyleSP& style, S32 start, S32 end, LLTextBase& editor );
+	LLNormalTextSegment( LLStyleConstSP& style, S32 start, S32 end, LLTextBase& editor );
 	LLNormalTextSegment( const LLColor4& color, S32 start, S32 end, LLTextBase& editor, BOOL is_visible = TRUE);
 	~LLNormalTextSegment();
 
@@ -436,9 +436,8 @@ class LLNormalTextSegment : public LLTextSegment
 	/*virtual*/ F32					draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRect& draw_rect);
 	/*virtual*/ bool				canEdit() const { return true; }
 	/*virtual*/ const LLColor4&		getColor() const					{ return mStyle->getColor(); }
-	/*virtual*/ void 				setColor(const LLColor4 &color)		{ mStyle->setColor(color); }
-	/*virtual*/ const LLStyleSP		getStyle() const					{ return mStyle; }
-	/*virtual*/ void 				setStyle(const LLStyleSP &style)	{ mStyle = style; }
+	/*virtual*/ LLStyleConstSP		getStyle() const					{ return mStyle; }
+	/*virtual*/ void 				setStyle(LLStyleConstSP &style)	{ mStyle = style; }
 	/*virtual*/ void				setToken( LLKeywordToken* token )	{ mToken = token; }
 	/*virtual*/ LLKeywordToken*		getToken() const					{ return mToken; }
 	/*virtual*/ BOOL				getToolTip( std::string& msg ) const;
@@ -456,7 +455,7 @@ class LLNormalTextSegment : public LLTextSegment
 
 protected:
 	class LLTextBase&	mEditor;
-	LLStyleSP			mStyle;
+	LLStyleConstSP		mStyle;
 	S32					mFontHeight;
 	LLKeywordToken* 	mToken;
 	std::string     	mTooltip;
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index f2c3879a6c9..93ce7a4bea5 100644
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -2390,7 +2390,7 @@ void LLTextEditor::replaceUrlLabel(const std::string &url,
 	for (it = mSegments.begin(); it != mSegments.end(); ++it)
 	{
 		LLTextSegment *seg = *it;
-		const LLStyleSP style = seg->getStyle();
+		LLStyleConstSP style = seg->getStyle();
 
 		// update segment start/end length in case we replaced text earlier
 		S32 seg_length = seg->getEnd() - seg->getStart();
@@ -2559,13 +2559,15 @@ void LLTextEditor::updateLinkSegments()
 			// if the link's label (what the user can edit) is a valid Url,
 			// then update the link's HREF to be the same as the label text.
 			// This lets users edit Urls in-place.
-			LLStyleSP style = static_cast<LLStyleSP>(segment->getStyle());
+			LLStyleConstSP style = segment->getStyle();
+			LLStyle* new_style = new LLStyle(*style);
 			LLWString url_label = wtext.substr(segment->getStart(), segment->getEnd()-segment->getStart());
 			if (LLUrlRegistry::instance().hasUrl(url_label))
 			{
 				std::string new_url = wstring_to_utf8str(url_label);
 				LLStringUtil::trim(new_url);
-				style->setLinkHREF(new_url);
+				new_style->setLinkHREF(new_url);
+				segment->setStyle(LLStyleConstSP(new_style));
 			}
 		}
 	}
diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp
index d0ed3b6fcae..76f07373b44 100644
--- a/indra/llui/llui.cpp
+++ b/indra/llui/llui.cpp
@@ -1911,10 +1911,10 @@ namespace LLInitParam
 	void TypedParam<LLUIColor>::setBlockFromValue()
 	{
 		LLColor4 color = mData.mValue.get();
-		red = color.mV[VRED];
-		green = color.mV[VGREEN];
-		blue = color.mV[VBLUE];
-		alpha = color.mV[VALPHA];
+		red.set(color.mV[VRED], false);
+		green.set(color.mV[VGREEN], false);
+		blue.set(color.mV[VBLUE], false);
+		alpha.set(color.mV[VALPHA], false);
 		control.set("", false);
 	}
 
@@ -1965,9 +1965,9 @@ namespace LLInitParam
 	{
 		if (mData.mValue)
 		{
-			name = LLFontGL::nameFromFont(mData.mValue);
-			size = LLFontGL::sizeFromFont(mData.mValue);
-			style = LLFontGL::getStringFromStyle(mData.mValue->getFontDesc().getStyle());
+			name.set(LLFontGL::nameFromFont(mData.mValue), false);
+			size.set(LLFontGL::sizeFromFont(mData.mValue), false);
+			style.set(LLFontGL::getStringFromStyle(mData.mValue->getFontDesc().getStyle()), false);
 		}
 	}
 
@@ -2073,8 +2073,8 @@ namespace LLInitParam
 	
 	void TypedParam<LLCoordGL>::setBlockFromValue()
 	{
-		x = mData.mValue.mX;
-		y = mData.mValue.mY;
+		x.set(mData.mValue.mX, false);
+		y.set(mData.mValue.mY, false);
 	}
 
 
diff --git a/indra/llui/lluicolortable.h b/indra/llui/lluicolortable.h
index 59be0c4f9a4..c87695f456a 100644
--- a/indra/llui/lluicolortable.h
+++ b/indra/llui/lluicolortable.h
@@ -94,7 +94,7 @@ LOG_CLASS(LLUIColorTable);
 	bool loadFromFilename(const std::string& filename);
 
 	// consider using sorted vector, can be much faster
-	typedef std::map<std::string, LLColor4>  string_color_map_t;
+	typedef std::map<std::string, LLUIColor>  string_color_map_t;
 	
 	void clearTable(string_color_map_t& table);
 	void setColor(const std::string& name, const LLColor4& color, string_color_map_t& table);
diff --git a/indra/llui/lluiimage.cpp b/indra/llui/lluiimage.cpp
index 966d919dc76..8cd6460b662 100644
--- a/indra/llui/lluiimage.cpp
+++ b/indra/llui/lluiimage.cpp
@@ -182,11 +182,11 @@ namespace LLInitParam
 	{
 		if (mData.mValue == NULL)
 		{
-			name = "none";
+			name.set("none", false);
 		}
 		else
 		{
-			name = mData.mValue->getName();
+			name.set(mData.mValue->getName(), false);
 		}
 	}
 
diff --git a/indra/llxuixml/llinitparam.cpp b/indra/llxuixml/llinitparam.cpp
index 4c050844f86..424a9fae8e4 100644
--- a/indra/llxuixml/llinitparam.cpp
+++ b/indra/llxuixml/llinitparam.cpp
@@ -84,8 +84,7 @@ namespace LLInitParam
 	// BaseBlock
 	//
 	BaseBlock::BaseBlock()
-	:	mLastChangedParam(0),
-		mChangeVersion(0)
+	:	mChangeVersion(0)
 	{}
 
 	BaseBlock::~BaseBlock()
@@ -347,7 +346,6 @@ namespace LLInitParam
 
 			if (deserialize_func && deserialize_func(*paramp, p, name_stack, name_stack.first == name_stack.second ? -1 : name_stack.first->second))
 			{
-				mLastChangedParam = (*it)->mParamHandle;
 				return true;
 			}
 		}
@@ -416,8 +414,10 @@ namespace LLInitParam
 
 	void BaseBlock::setLastChangedParam(const Param& last_param, bool user_provided)
 	{ 
-		mLastChangedParam = getHandleFromParam(&last_param); 
-		mChangeVersion++;
+		if (user_provided)
+		{
+			mChangeVersion++;
+		}
 	}
 
 	const std::string& BaseBlock::getParamName(const BlockDescriptor& block_data, const Param* paramp) const
@@ -471,7 +471,6 @@ namespace LLInitParam
 			{
 				Param* paramp = getParamFromHandle(it->mParamHandle);
 				param_changed |= merge_func(*paramp, *other_paramp, true);
-				mLastChangedParam = it->mParamHandle;
 			}
 		}
 		return param_changed;
@@ -492,7 +491,6 @@ namespace LLInitParam
 			{
 				Param* paramp = getParamFromHandle(it->mParamHandle);
 				param_changed |= merge_func(*paramp, *other_paramp, false);
-				mLastChangedParam = it->mParamHandle;
 			}
 		}
 		return param_changed;
diff --git a/indra/llxuixml/llinitparam.h b/indra/llxuixml/llinitparam.h
index 7e1e4a3d218..529fae18c02 100644
--- a/indra/llxuixml/llinitparam.h
+++ b/indra/llxuixml/llinitparam.h
@@ -470,7 +470,6 @@ namespace LLInitParam
 		// Blocks can override this to do custom tracking of changes
 		virtual void setLastChangedParam(const Param& last_param, bool user_provided);
 
-		const Param* getLastChangedParam() const { return mLastChangedParam ? getParamFromHandle(mLastChangedParam) : NULL; }
 		S32 getLastChangeVersion() const { return mChangeVersion; }
 		bool isDefault() const { return mChangeVersion == 0; }
 
@@ -505,7 +504,6 @@ namespace LLInitParam
 		bool fillFromImpl(BlockDescriptor& block_data, const BaseBlock& other);
 
 		// can be updated in getters
-		mutable param_handle_t	mLastChangedParam;
 		mutable S32				mChangeVersion;
 
 		BlockDescriptor*		mBlockDescriptor;	// most derived block descriptor
@@ -1732,6 +1730,7 @@ namespace LLInitParam
 		void set(value_assignment_t val, bool flag_as_provided = true)
 		{
 			Param::enclosingBlock().setLastChangedParam(*this, flag_as_provided);
+			
 			// set param version number to be up to date, so we ignore block contents
 			mData.mLastParamVersion = BaseBlock::getLastChangeVersion();
 
diff --git a/indra/llxuixml/lluicolor.cpp b/indra/llxuixml/lluicolor.cpp
index 424d878a6b2..0049ec055c3 100644
--- a/indra/llxuixml/lluicolor.cpp
+++ b/indra/llxuixml/lluicolor.cpp
@@ -16,13 +16,15 @@ LLUIColor::LLUIColor()
 {
 }
 
-LLUIColor::LLUIColor(const LLColor4* color)
-	:mColorPtr(color)
+
+LLUIColor::LLUIColor(const LLColor4& color)
+:	mColor(color), 
+	mColorPtr(NULL)
 {
 }
 
-LLUIColor::LLUIColor(const LLColor4& color)
-	:mColor(color), mColorPtr(NULL)
+LLUIColor::LLUIColor(const LLUIColor* color)
+:	mColorPtr(color)
 {
 }
 
@@ -32,14 +34,14 @@ void LLUIColor::set(const LLColor4& color)
 	mColorPtr = NULL;
 }
 
-void LLUIColor::set(const LLColor4* color)
+void LLUIColor::set(const LLUIColor* color)
 {
 	mColorPtr = color;
 }
 
 const LLColor4& LLUIColor::get() const
 {
-	return (mColorPtr == NULL ? mColor : *mColorPtr);
+	return (mColorPtr == NULL ? mColor : mColorPtr->get());
 }
 
 LLUIColor::operator const LLColor4& () const
diff --git a/indra/llxuixml/lluicolor.h b/indra/llxuixml/lluicolor.h
index bb0f7863262..0ef2f78b248 100644
--- a/indra/llxuixml/lluicolor.h
+++ b/indra/llxuixml/lluicolor.h
@@ -22,11 +22,11 @@ class LLUIColor
 {
 public:
 	LLUIColor();
-	LLUIColor(const LLColor4* color);
 	LLUIColor(const LLColor4& color);
+	LLUIColor(const LLUIColor* color);
 
 	void set(const LLColor4& color);
-	void set(const LLColor4* color);
+	void set(const LLUIColor* color);
 
 	const LLColor4& get() const;
 
@@ -38,7 +38,7 @@ class LLUIColor
 private:
 	friend struct LLInitParam::ParamCompare<LLUIColor, false>;
 
-	const LLColor4* mColorPtr;
+	const LLUIColor* mColorPtr;
 	LLColor4 mColor;
 };
 
@@ -47,7 +47,7 @@ namespace LLInitParam
 	template<>
 	struct ParamCompare<LLUIColor, false>
 	{
-		static bool equals(const class LLUIColor& a, const class LLUIColor& b);
+		static bool equals(const LLUIColor& a, const LLUIColor& b);
 	};
 }
 
diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h
index a58a5623786..aeed4fee083 100644
--- a/indra/newview/llavatarlist.h
+++ b/indra/newview/llavatarlist.h
@@ -57,11 +57,11 @@ class LLAvatarList : public LLFlatListView
 
 	struct Params : public LLInitParam::Block<Params, LLFlatListView::Params> 
 	{
-		Optional<bool> ignore_online_status; // show all items as online
-		Optional<bool> show_last_interaction_time; // show most recent interaction time. *HACK: move this to a derived class
-		Optional<bool> show_info_btn;
-		Optional<bool> show_profile_btn;
-		Optional<bool> show_speaking_indicator;
+		Optional<bool>	ignore_online_status, // show all items as online
+						show_last_interaction_time, // show most recent interaction time. *HACK: move this to a derived class
+						show_info_btn,
+						show_profile_btn,
+						show_speaking_indicator;
 		Params();
 	};
 
diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp
index 66ab32f3e88..26a39532dda 100644
--- a/indra/newview/llavatarlistitem.cpp
+++ b/indra/newview/llavatarlistitem.cpp
@@ -48,6 +48,17 @@ S32 LLAvatarListItem::sLeftPadding = 0;
 S32 LLAvatarListItem::sRightNamePadding = 0;
 S32 LLAvatarListItem::sChildrenWidths[LLAvatarListItem::ALIC_COUNT];
 
+static LLWidgetNameRegistry::StaticRegistrar sRegisterAvatarListItemParams(&typeid(LLAvatarListItem::Params), "avatar_list_item");
+
+LLAvatarListItem::Params::Params()
+:	default_style("default_style"),
+	voice_call_invited_style("voice_call_invited_style"),
+	voice_call_joined_style("voice_call_joined_style"),
+	voice_call_left_style("voice_call_left_style"),
+	online_style("online_style"),
+	offline_style("offline_style")
+{};
+
 
 LLAvatarListItem::LLAvatarListItem(bool not_from_ui_factory/* = true*/)
 :	LLPanel(),
@@ -166,9 +177,30 @@ void LLAvatarListItem::setHighlight(const std::string& highlight)
 
 void LLAvatarListItem::setState(EItemState item_style)
 {
-	item_style_map_t& item_styles_params_map = getItemStylesParams();
+	const LLAvatarListItem::Params& params = LLUICtrlFactory::getDefaultParams<LLAvatarListItem>();
 
-	mAvatarNameStyle = item_styles_params_map[item_style];
+	switch(item_style)
+	{
+	default:
+	case IS_DEFAULT:
+		mAvatarNameStyle = params.default_style();
+		break;
+	case IS_VOICE_INVITED:
+		mAvatarNameStyle = params.voice_call_invited_style();
+		break;
+	case IS_VOICE_JOINED:
+		mAvatarNameStyle = params.voice_call_joined_style();
+		break;
+	case IS_VOICE_LEFT:
+		mAvatarNameStyle = params.voice_call_left_style();
+		break;
+	case IS_ONLINE:
+		mAvatarNameStyle = params.online_style();
+		break;
+	case IS_OFFLINE:
+		mAvatarNameStyle = params.offline_style();
+		break;
+	}
 
 	// *NOTE: You cannot set the style on a text box anymore, you must
 	// rebuild the text.  This will cause problems if the text contains
@@ -352,58 +384,6 @@ std::string LLAvatarListItem::formatSeconds(U32 secs)
 	return getString(fmt, args);
 }
 
-// static
-LLAvatarListItem::item_style_map_t& LLAvatarListItem::getItemStylesParams()
-{
-	static item_style_map_t item_styles_params_map;
-	if (!item_styles_params_map.empty()) return item_styles_params_map;
-
-	LLPanel::Params params = LLUICtrlFactory::getDefaultParams<LLPanel>();
-	LLPanel* params_panel = LLUICtrlFactory::create<LLPanel>(params);
-
-	BOOL sucsess = LLUICtrlFactory::instance().buildPanel(params_panel, "panel_avatar_list_item_params.xml");
-
-	if (sucsess)
-	{
-
-		item_styles_params_map.insert(
-			std::make_pair(IS_DEFAULT,
-			params_panel->getChild<LLTextBox>("default_style")->getDefaultStyle()));
-
-		item_styles_params_map.insert(
-			std::make_pair(IS_VOICE_INVITED,
-			params_panel->getChild<LLTextBox>("voice_call_invited_style")->getDefaultStyle()));
-
-		item_styles_params_map.insert(
-			std::make_pair(IS_VOICE_JOINED,
-			params_panel->getChild<LLTextBox>("voice_call_joined_style")->getDefaultStyle()));
-
-		item_styles_params_map.insert(
-			std::make_pair(IS_VOICE_LEFT,
-			params_panel->getChild<LLTextBox>("voice_call_left_style")->getDefaultStyle()));
-
-		item_styles_params_map.insert(
-			std::make_pair(IS_ONLINE,
-			params_panel->getChild<LLTextBox>("online_style")->getDefaultStyle()));
-
-		item_styles_params_map.insert(
-			std::make_pair(IS_OFFLINE,
-			params_panel->getChild<LLTextBox>("offline_style")->getDefaultStyle()));
-	}
-	else
-	{
-		item_styles_params_map.insert(std::make_pair(IS_DEFAULT, LLStyle::Params()));
-		item_styles_params_map.insert(std::make_pair(IS_VOICE_INVITED, LLStyle::Params()));
-		item_styles_params_map.insert(std::make_pair(IS_VOICE_JOINED, LLStyle::Params()));
-		item_styles_params_map.insert(std::make_pair(IS_VOICE_LEFT, LLStyle::Params()));
-		item_styles_params_map.insert(std::make_pair(IS_ONLINE, LLStyle::Params()));
-		item_styles_params_map.insert(std::make_pair(IS_OFFLINE, LLStyle::Params()));
-	}
-	if (params_panel) params_panel->die();
-
-	return item_styles_params_map;
-}
-
 // static
 LLAvatarListItem::icon_color_map_t& LLAvatarListItem::getItemIconColorMap()
 {
diff --git a/indra/newview/llavatarlistitem.h b/indra/newview/llavatarlistitem.h
index 479a4833cb9..9f81aa08040 100644
--- a/indra/newview/llavatarlistitem.h
+++ b/indra/newview/llavatarlistitem.h
@@ -46,6 +46,18 @@ class LLAvatarIconCtrl;
 class LLAvatarListItem : public LLPanel, public LLFriendObserver
 {
 public:
+	struct Params : public LLInitParam::Block<Params, LLPanel::Params>
+	{
+		Optional<LLStyle::Params>	default_style,
+									voice_call_invited_style,
+									voice_call_joined_style,
+									voice_call_left_style,
+									online_style,
+									offline_style;
+
+		Params();
+	};
+
 	typedef enum e_item_state_type {
 		IS_DEFAULT,
 		IS_VOICE_INVITED,
@@ -143,9 +155,6 @@ class LLAvatarListItem : public LLPanel, public LLFriendObserver
 
 	std::string formatSeconds(U32 secs);
 
-	typedef std::map<EItemState, LLStyle::Params> item_style_map_t;
-	static item_style_map_t& getItemStylesParams();
-
 	typedef std::map<EItemState, LLColor4> icon_color_map_t;
 	static icon_color_map_t& getItemIconColorMap();
 
diff --git a/indra/newview/llexpandabletextbox.cpp b/indra/newview/llexpandabletextbox.cpp
index 9f6412c0ab5..77b3a48cefe 100644
--- a/indra/newview/llexpandabletextbox.cpp
+++ b/indra/newview/llexpandabletextbox.cpp
@@ -169,8 +169,7 @@ void LLExpandableTextBox::LLTextBoxEx::showExpandText()
 		std::pair<S32, S32> visible_lines = getVisibleLines(true);
 		S32 last_line = visible_lines.second - 1;
 
-		LLStyle::Params expander_style = getDefaultStyle();
-		expander_style.font.name(LLFontGL::nameFromFont(expander_style.font));
+		LLStyle::Params expander_style(getDefaultStyleParams());
 		expander_style.font.style = "UNDERLINE";
 		expander_style.color = LLUIColorTable::instance().getColor("HTMLLinkColor");
 		LLExpanderSegment* expanderp = new LLExpanderSegment(new LLStyle(expander_style), getLineStart(last_line), getLength() + 1, mExpanderLabel, *this);
@@ -186,8 +185,7 @@ void LLExpandableTextBox::LLTextBoxEx::hideExpandText()
 	if (mExpanderVisible)
 	{
 		// this will overwrite the expander segment and all text styling with a single style
-		LLNormalTextSegment* segmentp = new LLNormalTextSegment(
-											new LLStyle(getDefaultStyle()), 0, getLength() + 1, *this);
+		LLNormalTextSegment* segmentp = new LLNormalTextSegment(LLStyleConstSP(new LLStyle(getDefaultStyleParams())), 0, getLength() + 1, *this);
 		insertSegment(segmentp);
 		
 		mExpanderVisible = false;
diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp
index 300aea1620c..94c257fe8c3 100644
--- a/indra/newview/llviewertexteditor.cpp
+++ b/indra/newview/llviewertexteditor.cpp
@@ -247,7 +247,7 @@ class LLEmbeddedItemSegment : public LLTextSegment
 		return FALSE; 
 	}
 
-	/*virtual*/ const LLStyleSP		getStyle() const { return mStyle; }
+	/*virtual*/ LLStyleConstSP		getStyle() const { return mStyle; }
 
 private:
 	LLUIImagePtr	mImage;
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
new file mode 100644
index 00000000000..1a9a882c7bc
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<avatar_list_item
+ height="0"
+ layout="topleft"
+ left="0"
+ name="avatar_list_item"
+ top="0"
+ width="0">
+  <!-- DEFAULT styles for avatar item -->
+  <default_style
+   font="SansSerifSmall"
+   font.style="NORMAL"
+   text_color="DkGray"/>
+
+  <!-- styles for avatar item INVITED to voice call -->
+  <voice_call_invited_style
+   font="SansSerifSmall"
+   font.style="NORMAL"
+   text_color="0.5 0.5 0.5 0.5"/>
+
+  <!-- styles for avatar item JOINED to voice call -->
+  <voice_call_joined_style
+   font="SansSerifSmall"
+   font.style="NORMAL"
+   text_color="white"/>
+
+  <!-- styles for avatar item which HAS LEFT voice call -->
+  <voice_call_left_style
+   font="SansSerifSmall"
+   font.style="ITALIC"
+   text_color="LtGray_50"/>
+
+  <!-- styles for ONLINE avatar item -->
+  <online_style
+   font="SansSerifSmall"
+   font.style="NORMAL"
+   text_color="white"/>
+
+  <!-- styles for OFFLINE avatar item -->
+  <offline_style
+   font="SansSerifSmall"
+   font.style="NORMAL"
+   text_color="0.5 0.5 0.5 1.0"/>
+</avatar_list_item>
-- 
GitLab


From 955c0cc5a9ab8fb9eda7a6c20cd7bd09c2fd9369 Mon Sep 17 00:00:00 2001
From: richard <none@none>
Date: Fri, 22 Jan 2010 17:17:12 -0800
Subject: [PATCH 059/521] wrong param names for avatar list item colors

reviewed by Rick
---
 .../default/xui/en/widgets/avatar_list_item.xml      | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

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 1a9a882c7bc..ed8df69bf40 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
@@ -10,35 +10,35 @@
   <default_style
    font="SansSerifSmall"
    font.style="NORMAL"
-   text_color="DkGray"/>
+   color="DkGray"/>
 
   <!-- styles for avatar item INVITED to voice call -->
   <voice_call_invited_style
    font="SansSerifSmall"
    font.style="NORMAL"
-   text_color="0.5 0.5 0.5 0.5"/>
+   color="0.5 0.5 0.5 0.5"/>
 
   <!-- styles for avatar item JOINED to voice call -->
   <voice_call_joined_style
    font="SansSerifSmall"
    font.style="NORMAL"
-   text_color="white"/>
+   color="white"/>
 
   <!-- styles for avatar item which HAS LEFT voice call -->
   <voice_call_left_style
    font="SansSerifSmall"
    font.style="ITALIC"
-   text_color="LtGray_50"/>
+   color="LtGray_50"/>
 
   <!-- styles for ONLINE avatar item -->
   <online_style
    font="SansSerifSmall"
    font.style="NORMAL"
-   text_color="white"/>
+   color="white"/>
 
   <!-- styles for OFFLINE avatar item -->
   <offline_style
    font="SansSerifSmall"
    font.style="NORMAL"
-   text_color="0.5 0.5 0.5 1.0"/>
+   color="0.5 0.5 0.5 1.0"/>
 </avatar_list_item>
-- 
GitLab


From f942ede38b12cecef954d67f52ff3416a7956a27 Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Fri, 22 Jan 2010 18:12:33 -0800
Subject: [PATCH 060/521] Remove code that enables tooltip inspector hover over
 media object (note: reverts changeset b6b3a58fdb30)

---
 indra/newview/lltoolpie.cpp | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index a08e77e3d88..c79a66892d5 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -68,7 +68,6 @@
 #include "llviewermedia.h"
 #include "llvoavatarself.h"
 #include "llviewermediafocus.h"
-#include "llvovolume.h"
 #include "llworld.h"
 #include "llui.h"
 #include "llweb.h"
@@ -630,14 +629,12 @@ static bool needs_tooltip(LLSelectNode* nodep)
 		return false;
 
 	LLViewerObject* object = nodep->getObject();
-	LLVOVolume* vovolume = dynamic_cast<LLVOVolume*>(object);
 	LLViewerObject *parent = (LLViewerObject *)object->getParent();
 	if (object->flagHandleTouch()
 		|| (parent && parent->flagHandleTouch())
 		|| object->flagTakesMoney()
 		|| (parent && parent->flagTakesMoney())
 		|| object->flagAllowInventoryAdd()
-		|| (vovolume && vovolume->hasMedia())
 		)
 	{
 		return true;
-- 
GitLab


From ae9449bff10d8c2247ae28044af50870c6a782eb Mon Sep 17 00:00:00 2001
From: Erica <erica@lindenlab.com>
Date: Fri, 22 Jan 2010 23:04:59 -0800
Subject: [PATCH 061/521] Group profile layout now resizes with the viewer
 window. Gave extra room to each accordion panel, and tweaked the layout a
 bit.

---
 .../default/xui/en/panel_group_general.xml    |  87 +++---
 .../xui/en/panel_group_info_sidetray.xml      | 163 +++++++-----
 .../default/xui/en/panel_group_land_money.xml | 104 ++++----
 .../default/xui/en/panel_group_notices.xml    |  82 +++---
 .../default/xui/en/panel_group_roles.xml      | 247 ++++++++++--------
 .../skins/default/xui/en/panel_side_tray.xml  |   2 +-
 6 files changed, 395 insertions(+), 290 deletions(-)

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 af73faf9a1d..96185bad56c 100644
--- a/indra/newview/skins/default/xui/en/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_general.xml
@@ -1,12 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <panel
- follows="all"
-     height="395"
  label="General"
+ follows="all"
+ height="604"
+ width="313"
  class="panel_group_general"
- layout="topleft"
- name="general_tab"
- width="323">
+ name="general_tab">
     <panel.string
      name="help_text">
         The General tab contains general information about this group, a list of members, general Group Preferences and member options.
@@ -25,12 +24,14 @@ Hover your mouse over the options for more help.
      type="string"
      follows="left|top|right"
      left="5"
-     height="60"
+     height="150"
      layout="topleft"
      max_length="511"
      name="charter"
      top="5"
      right="-1"
+    bg_readonly_color="DkGray2"
+    text_readonly_color="White"
      word_wrap="true">
      Group Charter
     </text_editor>
@@ -38,8 +39,8 @@ Hover your mouse over the options for more help.
      column_padding="0"
      draw_heading="true"
      follows="left|top|right"
-     heading_height="20"
-     height="156"
+     heading_height="23"
+     height="200"
      layout="topleft"
      left="0"
      right="-1"
@@ -60,17 +61,29 @@ Hover your mouse over the options for more help.
          height="12"
          layout="left|top|right"
          left="5"
+         text_color="EmphasisColor"
+         name="my_group_settngs_label"
+         top_pad="10"
+         width="300">
+           Me
+        </text>
+         <text
+         follows="left|top|right"
+         type="string"
+         height="12"
+         layout="left|top|right"
+         left="10"
          name="active_title_label"
          top_pad="5"
          width="300">
-            My Title
+            My title:
         </text>
         <combo_box
          follows="left|top|right"
-         height="20"
+         height="23"
          layout="topleft"
-         left="5"
-     right="-5"
+         left="10"
+         right="-5"
          name="active_title"
          tool_tip="Sets the title that appears in your avatar&apos;s name tag when this group is active."
          top_pad="2" />
@@ -79,7 +92,7 @@ Hover your mouse over the options for more help.
          font="SansSerifSmall"
          label="Receive group notices"
          layout="topleft"
-         left="5"
+         left="10"
          name="receive_notices"
          tool_tip="Sets whether you want to receive Notices from this group.  Uncheck this box if this group is spamming you."
          top_pad="5"
@@ -88,36 +101,46 @@ Hover your mouse over the options for more help.
          height="16"
          label="Show in my profile"
          layout="topleft"
-         left="5"
+         left="10"
          name="list_groups_in_profile"
          tool_tip="Sets whether you want to show this group in your profile"
          top_pad="5"
          width="295" />
-        <panel
+   <panel
          background_visible="true"
          bevel_style="in"
          border="true"
          bg_alpha_color="FloaterUnfocusBorderColor"
          follows="left|top|right"
-         height="88"
+         height="140"
+         width="313"
          layout="topleft"
-         left="2"
-         right="-1"
+         left="0"
          name="preferences_container"
-         top_pad="2">
+         top_pad="5">
+        <text
+         follows="left|top|right"
+         type="string"
+         height="12"
+         layout="left|top|right"
+         left="5"
+         text_color="EmphasisColor"
+         name="group_settngs_label"
+         width="300">
+         Group
+        </text>
         <check_box
          follows="right|top|left"
          height="16"
-         label="Open enrollment"
+         label="Anyone can join"
          layout="topleft"
          left="10"
          name="open_enrollement"
          tool_tip="Sets whether this group allows new members to join without being invited."
-         top_pad="5"
          width="90" />
         <check_box
          height="16"
-         label="Enrollment fee"
+         label="Cost to join"
          layout="topleft"
          left_delta="0"
          name="check_enrollment_fee"
@@ -126,27 +149,26 @@ Hover your mouse over the options for more help.
          width="300" />
         <spinner
          decimal_digits="0"
-         follows="left|top|right"
+         follows="left|top"
          halign="left"
-         height="16"
+         height="23"
          increment="1"
          label_width="15"
          label="L$"
          layout="topleft"
-         right="-30"
          max_val="99999"
-         left_pad="0"
+         left="30"
          name="spin_enrollment_fee"
          tool_tip="New members must pay this fee to join the group when Enrollment Fee is checked."
-         width="80" />
-         <combo_box
-         follows="left|top|right"
-         height="20"
+         width="170" />
+        <combo_box
+         follows="left|top"
+         height="23"
          layout="topleft"
          left="10"
          name="group_mature_check"
          tool_tip="Sets whether your group contains information rated as Moderate"
-         top_pad="0"
+         top_pad="4"
          width="190">
             <combo_box.item
              label="General Content"
@@ -158,7 +180,7 @@ Hover your mouse over the options for more help.
              value="Mature" />
         </combo_box>
         <check_box
-         follows="left|top|right"
+         follows="left|top"
          height="16"
          initial_value="true"
          label="Show in search"
@@ -168,5 +190,6 @@ Hover your mouse over the options for more help.
          tool_tip="Let people see this group in search results"
          top_pad="4"
          width="300" />
+
     </panel>
 </panel>
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 673052c3b5d..4e017819c10 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
@@ -2,17 +2,17 @@
 <panel
 background_visible="true"
  follows="all"
- height="635"
- label="Group Info"
+ height="570"
+ label="Group Profile"
  layout="topleft"
- min_height="460"
+ min_height="350"
  left="0"
  top="20"
  name="GroupInfo"
- width="323">
+ width="313">
     <panel.string
      name="default_needs_apply_text">
-        There are unsaved changes to the current tab
+        There are unsaved changes
     </panel.string>
     <panel.string
      name="want_apply_text">
@@ -26,6 +26,14 @@ background_visible="true"
      name="group_join_free">
         Free
     </panel.string>
+    <panel
+      name="group_info_top"
+      follows="top|left"
+      top="0"
+      left="0"
+      height="129"
+      width="313"
+      layout="topleft">
     <button
      follows="top|right"
      height="23"
@@ -37,17 +45,19 @@ background_visible="true"
      top="2"
      width="23" />
     <text
-     follows="top|left|right"
-     font="SansSerifHugeBold"
-     height="26"
      layout="topleft"
-     left_pad="10"
      name="group_name"
-     text_color="white"
-     top="0"
      value="(Loading...)"
-     use_ellipses="true"
-     width="300" />
+      font="SansSerifHuge"
+      height="20"
+      left_pad="5"
+      text_color="white"
+      top="3"
+      use_ellipses="true"
+      width="270"
+      follows="top|left"
+      word_wrap="true"
+      mouse_opaque="false"/>
     <line_editor
      follows="left|top"
      font="SansSerif"
@@ -57,7 +67,7 @@ background_visible="true"
      max_length="35"
      name="group_name_editor"
      top_delta="5"
-     width="250"
+     width="270"
      height="20"
      visible="false" />
     <texture_picker
@@ -65,21 +75,24 @@ background_visible="true"
      height="113"
      label=""
      layout="topleft"
-     left="20"
+     left="10"
      name="insignia"
      tool_tip="Click to choose a picture"
      top_pad="5"
      width="100" />
-    <text
+      <text
+      font="SansSerifSmall"
+      text_color="White_50"
+      width="190"
+      follows="top|left"
+      layout="topleft"
+      mouse_opaque="false"
      type="string"
-     follows="left|top"
      height="16"
      length="1"
-     layout="topleft"
      left_pad="10"
      name="prepend_founded_by"
-     top_delta="0"
-     width="140">
+     top_delta="0">
       Founder:
     </text>
     <name_box
@@ -92,9 +105,9 @@ background_visible="true"
      name="founder_name"
      top_pad="2"
      use_ellipses="true"
-     width="140" />
+     width="190" />
     <text
-    font="SansSerifBig"
+    font="SansSerifMedium"
     text_color="EmphasisColor"
      type="string"
      follows="left|top"
@@ -104,7 +117,7 @@ background_visible="true"
      name="join_cost_text"
      top_pad="10"
      visible="true"
-     width="140">
+     width="190">
       Free
     </text>
     <button
@@ -116,17 +129,31 @@ background_visible="true"
      name="btn_join"
      visible="true"
      width="120" />
+    </panel>
+   <layout_stack
+     name="layout"
+     orientation="vertical"
+      follows="all"
+     left="0"
+     top_pad="0"
+     height="437"
+     width="313"
+     border_size="0">
+   <layout_panel
+      name="group_accordions"
+      follows="all"
+      layout="topleft"
+      auto_resize="true"
+      >
    <accordion
+     left="0"
+     top="0"
            single_expansion="true"
              follows="all"
-             height="478"
              layout="topleft"
-             left="0"
-             name="groups_accordion"
-             top_pad="10"
-             width="323">
-             <accordion_tab
-            expanded="false"
+             name="groups_accordion">
+         <accordion_tab
+            expanded="true"
             layout="topleft"
             name="group_general_tab"
             title="General">
@@ -136,12 +163,13 @@ background_visible="true"
              filename="panel_group_general.xml"
              layout="topleft"
              left="0"
+             follows="all"
              help_topic="group_general_tab"
              name="group_general_tab_panel"
              top="0" />
          </accordion_tab>
          <accordion_tab
-            expanded="true"
+            expanded="false"
             layout="topleft"
             name="group_roles_tab"
             title="Roles">
@@ -184,28 +212,37 @@ background_visible="true"
          top="0" />
          </accordion_tab>
          </accordion>
-   <panel
+   </layout_panel>
+   <layout_panel
+         height="25"
+         layout="topleft"
+         auto_resize="false"
+         left="0"
    name="button_row"
-   height="23"
    follows="bottom|left"
-   top_pad="-1"
-   width="323">
+   width="313">
    <button
-     follows="top|left"
-     height="22"
+    follows="bottom|left"
+     height="23"
      image_overlay="Refresh_Off"
      layout="topleft"
-     left="10"
+     left="5"
+     top="0"
      name="btn_refresh"
      width="23" />
-    <button
-     height="22"
-     label="Create"
-     label_selected="New group"
+   <button
+    follows="bottom|left"
+                 height="18"
+                 image_selected="AddItem_Press"
+                 image_unselected="AddItem_Off"
+                 image_disabled="AddItem_Disabled"
+                 layout="topleft"
+                 left_pad="2"
+                 top_delta="3"
      name="btn_create"
-     left_pad="10"
-     visible="false"
-     width="100" />
+               visible="true"
+                 tool_tip="Create a new Group"
+                 width="18" />
    <!-- <button
      left_pad="10"
      height="20"
@@ -215,28 +252,30 @@ background_visible="true"
      visible="false"
      width="65" />-->
      <button
-     follows="bottom|right"          
-     label="Group Chat"
+      follows="bottom|left"
+     label="Chat"
      name="btn_chat"
-     right="-184"
-     left_pad="2"     
-     height="22"          
-     width="85" />
-     <button
-     follows="bottom|right"          
-     label="Group Call"
+     left_pad="2"
+     height="23"
+     top_delta="-3"
+     width="60" />
+    <button
+         follows="bottom|left"
+         left_pad="2"
+         height="23"
      name="btn_call"
-     right="-97"
-     left_pad="2"     
-     height="22"          
-     width="85" />
+         label="Group Call"
+         layout="topleft"
+         tool_tip="Call this group"
+         width="95" />
      <button
-     height="22"
+     follows="bottom|left"
+     height="23"
      label="Save"
      label_selected="Save"
      name="btn_apply"
-     left_pad="10"
-     right="-10"
+     left_pad="2"
      width="85" />
-     </panel>
+     </layout_panel>
+  </layout_stack>
 </panel>
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 2075d7e05b5..38b0f234d5f 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
@@ -2,13 +2,13 @@
 <panel
  border="false"
  follows="all"
- height="380"
+ height="500"
  label="Land &amp; L$"
  layout="topleft"
  left="0"
  name="land_money_tab"
  top="0"
- width="310">
+ width="313">
     <panel.string
      name="help_text">
    A warning appears until the Total Land in Use is less than or = to the Total Contribution.
@@ -41,16 +41,24 @@
      width="260">
         Group Owned Land
     </text> -->
+   <panel
+          name="layout_panel_landmoney"
+          follows="top|left|right"
+          left="0"
+          right="-1"
+          height="250"
+          width="313"
+          >
     <scroll_list
      draw_heading="true"
      follows="top|left|right"
-     heading_height="20"
      height="130"
      layout="topleft"
      left="0"
+     right="-1"
      top="0"
      name="group_parcel_list"
-     width="310">
+     width="313">
         <scroll_list.columns
          label="Parcel"
          name="name"
@@ -67,16 +75,12 @@
          label="Area"
          name="area"
          width="50" />
-        <scroll_list.columns
-         label=""
-         name="hidden"
-         width="-1" />
     </scroll_list>
     <text
      type="string"
      follows="left|top"
      halign="right"
-     height="15"
+     height="16"
      layout="topleft"
      left="0"
      name="total_contributed_land_label"
@@ -87,30 +91,30 @@
     text_color="EmphasisColor"
      type="string"
      follows="left|top"
-     height="15"
+     height="16"
      layout="topleft"
      left_pad="5"
      name="total_contributed_land_value"
      top_delta="0"
-     width="120">
+     width="90">
         [AREA] m²
     </text>
     <button
      follows="top"
-     height="20"
+     height="23"
      label="Map"
      label_selected="Map"
      layout="topleft"
      name="map_button"
-     right="-5"
+     top_delta="-4"
      left_pad="0"
-     width="95"
+     width="60"
      enabled="false" />
     <text
      type="string"
      follows="left|top"
      halign="right"
-     height="15"
+     height="16"
      layout="topleft"
      left="0"
      name="total_land_in_use_label"
@@ -122,7 +126,7 @@
     text_color="EmphasisColor"
      type="string"
      follows="left|top"
-     height="15"
+     height="16"
      layout="topleft"
      left_pad="5"
      name="total_land_in_use_value"
@@ -134,7 +138,7 @@
      type="string"
      follows="left|top"
      halign="right"
-     height="15"
+     height="16"
      layout="topleft"
      left="0"
      name="land_available_label"
@@ -146,7 +150,7 @@
     text_color="EmphasisColor"
      type="string"
      follows="left|top"
-     height="15"
+     height="16"
      layout="topleft"
      left_pad="5"
      name="land_available_value"
@@ -158,7 +162,7 @@
      type="string"
      follows="left|top"
      halign="right"
-     height="15"
+     height="16"
      layout="topleft"
      left="0"
      name="your_contribution_label"
@@ -190,21 +194,22 @@
      <text
      type="string"
      follows="left|top"
-     halign="right"
-     height="12"
+     halign="left"
+     height="16"
      layout="topleft"
      left="140"
      name="your_contribution_max_value"
      top_pad="2"
-     width="95">
+     width="170">
         ([AMOUNT] max)
     </text>
     <icon
-     height="18"
-     image_name="BuyArrow_Over"
+     height="16"
+     image_name="Parcel_Exp_Color"
      layout="topleft"
      left="75"
      name="group_over_limit_icon"
+     color="Green"
      top_pad="0"
      visible="true"
      width="18" />
@@ -212,12 +217,11 @@
      follows="left|top"
      type="string"
      word_wrap="true"
-     font="SansSerifSmall"
      height="20"
      layout="topleft"
      left_pad="2"
      name="group_over_limit_text"
-     text_color="EmphasisColor"
+     text_color="ColorPaletteEntry29"
      top_delta="0"
      width="213">
         More land credits are needed to support land in use
@@ -235,39 +239,39 @@
      width="100">
         Group L$
     </text>
+    </panel>
     <tab_container
      follows="all"
-     height="173"
+     height="230"
      halign="center"
      layout="topleft"
      left="0"
+     right="-1"
      name="group_money_tab_container"
      tab_position="top"
-     tab_height="20"
      top_pad="2"
-     tab_min_width="75"
-     width="310">
+     tab_min_width="90"
+     width="313">
         <panel
          border="false"
          follows="all"
-         height="173"
          label="PLANNING"
          layout="topleft"
          left="0"
          help_topic="group_money_planning_tab"
          name="group_money_planning_tab"
-         top="5"
-         width="300">
+         top="0"
+         width="313">
             <text_editor
              type="string"
              follows="all"
-             height="140"
+             height="200"
              layout="topleft"
              left="0"
              max_length="4096"
              name="group_money_planning_text"
              top="2"
-             width="300"
+             width="313"
              word_wrap="true">
                 Loading...
             </text_editor>
@@ -275,24 +279,23 @@
       <panel
          border="false"
          follows="all"
-         height="173"
          label="DETAILS"
          layout="topleft"
          left="0"
          help_topic="group_money_details_tab"
          name="group_money_details_tab"
          top="0"
-         width="300">
+         width="313">
           <text_editor
              type="string"
              follows="all"
-             height="140"
+             height="185"
              layout="topleft"
              left="0"
              max_length="4096"
              name="group_money_details_text"
              top="2"
-             width="300"
+             width="313"
              word_wrap="true">
                 Loading...
             </text_editor>
@@ -303,59 +306,58 @@
 	     layout="topleft"
 	     name="earlier_details_button"
 	     tool_tip="Back"
-             right="-45"
-             bottom="0"
+             left="200"
+             top_pad="0"
 	     width="25" />
              <button
 	     follows="left|top"
 	     height="18"
 	     image_overlay="Arrow_Right_Off"
 	     layout="topleft"
-	     left_pad="10"
        name="later_details_button"
 	     tool_tip="Next"
+             left_pad="15"
 	     width="25" />
         </panel>
       <panel
          border="false"
          follows="all"
-         height="173"
          label="SALES"
          layout="topleft"
-         left_delta="0"
+         left="0"
          help_topic="group_money_sales_tab"
          name="group_money_sales_tab"
          top="0"
-         width="300">
+         width="313">
             <text_editor
              type="string"
              follows="all"
-             height="140"
+             height="185"
              layout="topleft"
              left="0"
              max_length="4096"
              name="group_money_sales_text"
              top="2"
-             width="300"
+             width="313"
              word_wrap="true">
                 Loading...
             </text_editor>
-                         <button
-             bottom="0"
+           <button
 	     follows="left|top"
 	     height="18"
 	     image_overlay="Arrow_Left_Off"
 	     layout="topleft"
 	     name="earlier_sales_button"
 	     tool_tip="Back"
-         right="-45"
+             left="200"
+             top_pad="0"
 	     width="25" />
              <button
 	     follows="left|top"
 	     height="18"
 	     image_overlay="Arrow_Right_Off"
 	     layout="topleft"
-	     left_pad="10"
+	     left_pad="15"
          name="later_sales_button"
 	     tool_tip="Next"
 	     width="25" />
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 0d9c2c21627..5f46ad78601 100644
--- a/indra/newview/skins/default/xui/en/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_notices.xml
@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <panel
  follows="all"
- height="463"
+ height="530"
  label="Notices"
  layout="topleft"
  left="0"
  name="notices_tab"
  top="0"
- width="310">
+ width="313">
     <panel.string
      name="help_text">
         Notices let you send a message and an optionally attached item.
@@ -23,26 +23,28 @@ You can turn off Notices on the General tab.
      type="string"
      word_wrap="true"
      height="24"
-     halign="right"
+     halign="left"
      layout="topleft"
+     text_color="White_50"
      left="5"
      name="lbl2"
+     right="-1"
      top="5"
      width="300">
      Notices are kept for 14 days.
 Maximum 200 per group daily
     </text>
     <scroll_list
-      follows="left|top"
+     follows="left|top|right"
      column_padding="0"
      draw_heading="true"
-     heading_height="16"
-     height="125"
+     height="175"
      layout="topleft"
-     left="2"
+     left="0"
+     right="-1"
      name="notice_list"
      top_pad="0"
-     width="300">
+     width="313">
         <scroll_list.columns
          label=""
          name="icon"
@@ -71,8 +73,8 @@ Maximum 200 per group daily
      visible="false">
         None found
     </text>
-         <button
-       follows="bottom|left"
+      <button
+       follows="top|left"
        height="18"
        image_selected="AddItem_Press"
        image_unselected="AddItem_Off"
@@ -85,24 +87,25 @@ Maximum 200 per group daily
        width="18" />
      <button
      follows="top|left"
-     height="22"
+     height="23"
      image_overlay="Refresh_Off"
      layout="topleft"
      name="refresh_notices"
-     right="-5"
+     left_pad="230"
      tool_tip="Refresh list of notices"
      top_delta="0"
      width="23" />
     <panel
-     follows="left|top"
+     follows="left|top|right"
      height="280"
      label="Create New Notice"
      layout="topleft"
      left="0"
+     right="-1"
      top_pad="0"
      visible="true"
      name="panel_create_new_notice"
-     width="300">
+         width="313">
         <text
          follows="left|top"
          type="string"
@@ -204,13 +207,16 @@ Maximum 200 per group daily
          width="72" />
         <button
          follows="left|top"
-         height="23"
-         label="Remove"
          layout="topleft"
-         left="70"
+         left="140"
          name="remove_attachment"
-         top_delta="45"
-         width="90" />
+         top_delta="50"
+                 height="18"
+                 image_selected="TrashItem_Press"
+                 image_unselected="TrashItem_Off"
+                 image_disabled="TrashItem_Disabled"
+                 tool_tip="Remove attachment from your notification"
+                 width="18" />
         <button
          follows="left|top"
          height="23"
@@ -231,18 +237,19 @@ Maximum 200 per group daily
          width="280" />
    </panel>
     <panel
-     follows="left|top"
+     follows="left|top|right"
      height="280"
      label="View Past Notice"
      layout="topleft"
      left="0"
+     right="-1"
      visible="false"
      name="panel_view_past_notice"
-     top="180"
-     width="300">
+     top="230"
+    width="313">
         <text
          type="string"
-         font="SansSerifBig"
+         font="SansSerifMedium"
          height="16"
          layout="topleft"
          left="10"
@@ -280,7 +287,7 @@ Maximum 200 per group daily
          border_style="line"
          border_thickness="1"
          enabled="false"
-         height="16"
+         height="20"
          layout="topleft"
          left_pad="3"
          max_length="63"
@@ -301,40 +308,35 @@ Maximum 200 per group daily
             Message:
         </text>
         <text_editor
+                     follows="top|left|right"
          enabled="false"
          height="160"
          layout="topleft"
-         left="10"
+         left="0"
+         right="-1"
          max_length="511"
          name="view_message"
-         top_delta="-35"
-         width="285"
+         top_delta="-40"
+         width="313"
          word_wrap="true" />
         <line_editor
          enabled="false"
-         height="16"
+         height="20"
          layout="topleft"
-         left_delta="0"
+         left="5"
          max_length="63"
          mouse_opaque="false"
          name="view_inventory_name"
          top_pad="8"
-         width="285" />
-        <icon
-         height="16"
-         layout="topleft"
-         left_delta="0"
-         name="view_inv_icon"
-         top_delta="0"
-         width="16" />
+         width="250"/>
         <button
          follows="left|top"
          height="23"
-         label="Open attachment"
+         label="Open Attachment"
          layout="topleft"
-         right="-10"
+         left="5"
          name="open_attachment"
          top_pad="5"
-         width="135" />
+         width="180" />
         </panel>
 </panel>
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 6b3fb045499..a4249ce492c 100644
--- a/indra/newview/skins/default/xui/en/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_roles.xml
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <panel
  follows="all"
- height="552"
+ height="680"
  label="Members &amp; Roles"
  layout="topleft"
  left="0"
  top="0"
  name="roles_tab"
- width="310">
+ width="313">
     <panel.string
      name="default_needs_apply_text">
-        There are unsaved changes to the current tab
+        There are unsaved changes
     </panel.string>
     <panel.string
      name="want_apply_text">
@@ -20,17 +20,18 @@
      name="help_text" />
     <tab_container
     border="false"
-     follows="left|top"
+     follows="left|top|right"
      height="552"
      halign="center"
      layout="topleft"
      left="0"
+     right="-1"
      name="roles_tab_container"
      tab_position="top"
-     tab_height="20"
-     tab_min_width="75"
+     tab_height="22"
+     tab_min_width="90"
      top="0"
-     width="310">
+     width="313">
         <panel
          border="false"
          follows="all"
@@ -38,11 +39,11 @@
          label="MEMBERS"
          layout="topleft"
          left="0"
+         right="-1"
          help_topic="roles_members_tab"
          name="members_sub_tab"
          tool_tip="Members"
-         class="panel_group_members_subtab"
-         width="310">
+         class="panel_group_members_subtab">
             <panel.string
              name="help_text">
                 You can add or remove Roles assigned to Members.
@@ -53,24 +54,23 @@ clicking on their names.
          layout="topleft"
          top="5"
          left="5"
-         width="280"
-         height="20"
-         follows="top"
-         max_length="250"
+         right="-5"
+         height="22"
+         search_button_visible="false"
+         follows="left|top|right"
          label="Filter Members"
          name="filter_input" />
             <name_list
-             column_padding="0"
+             column_padding="2"
              draw_heading="true"
-             heading_height="20"
              height="240"
-             follows="left|top"
+             follows="left|top|right"
              layout="topleft"
              left="0"
+             right="-1"
              multi_select="true"
              name="member_list"
-             top_pad="2"
-             width="300">
+             top_pad="5">
                 <name_list.columns
                  label="Member"
                  name="name"
@@ -82,33 +82,33 @@ clicking on their names.
                 <name_list.columns
                  label="Status"
                  name="online"
-         relative_width="0.15" />
+                 relative_width="0.14" />
             </name_list>
             <button
-             height="20"
-             follows="bottom|left"
+             height="23"
+             follows="top|left"
              label="Invite"
-             left="5"
+             left="0"
              name="member_invite"
              width="100" />
             <button
-             height="20"
+             height="23"
              label="Eject"
-             left_pad="5"
-             right="-5"
+             follows="top|left"
+             left_pad="10"
              name="member_eject"
              width="100" />
         </panel>
         <panel
          border="false"
-         height="230"
+         height="303"
          label="ROLES"
          layout="topleft"
          left="0"
+         right="-1"
          help_topic="roles_roles_tab"
          name="roles_sub_tab"
-         class="panel_group_roles_subtab"
-         width="310">
+         class="panel_group_roles_subtab">
            <!-- <button
              enabled="false"
              height="20"
@@ -145,22 +145,23 @@ including the Everyone and Owner Roles.
          layout="topleft"
          top="5"
          left="5"
-         width="280"
-         height="20"
+         right="-5"
+         height="22"
+         search_button_visible="false"
          follows="left|top|right"
-         max_length="250"
          label="Filter Roles"
          name="filter_input" />
             <scroll_list
              column_padding="0"
              draw_heading="true"
              draw_stripes="false"
-             follows="left|top"
-             heading_height="20"
-             height="170"
+             heading_height="23"
+             height="130"
              layout="topleft"
              search_column="1"
              left="0"
+             follows="left|top|right"
+             right="-1"
              name="role_list"
              top_pad="2"
              width="310">
@@ -178,28 +179,29 @@ including the Everyone and Owner Roles.
                relative_width="0.15"  />
             </scroll_list>
             <button
-            follows="bottom|left"
-             height="20"
+            follows="top|left"
+             height="23"
              label="New Role"
              layout="topleft"
-             left="5"
+             left="0"
              name="role_create"
-             width="100" />
+             width="120" />
             <button
-             height="20"
+             height="23"
+             follows="top|left"
              label="Delete Role"
              layout="topleft"
-             left_pad="5"
-             right="-5"
+             left_pad="10"
              name="role_delete"
-             width="100" />
+             width="120" />
         </panel>
         <panel
          border="false"
-         height="220"
+         height="303"
          label="ABILITIES"
          layout="topleft"
          left="0"
+         right="-1"
          help_topic="roles_actions_tab"
          name="actions_sub_tab"
          class="panel_group_actions_subtab"
@@ -226,13 +228,12 @@ things in this group. There&apos;s a broad variety of Abilities.
          layout="topleft"
          top="5"
          left="5"
-         width="280"
-         height="20"
+         right="-5"
+         height="22"
+         search_button_visible="false"
          follows="left|top|right"
-         max_length="250"
          label="Filter Abilities"
          name="filter_input" />
-
         <scroll_list
          column_padding="0"
          draw_stripes="true"
@@ -240,6 +241,7 @@ things in this group. There&apos;s a broad variety of Abilities.
          follows="left|top"
          layout="topleft"
          left="0"
+         right="-1"
          name="action_list"
          search_column="2"
          tool_tip="Select an Ability to view more details"
@@ -261,35 +263,39 @@ things in this group. There&apos;s a broad variety of Abilities.
         </panel>
     </tab_container>
     <panel
-     height="252"
+     height="350"
+     background_visible="true"
+     bg_alpha_color="FloaterUnfocusBorderColor"
      layout="topleft"
-     follows="left|top"
+     follows="top|left|right"
      left="0"
-     mouse_opaque="false" 
+     right="-1"
+     width="313"
+     mouse_opaque="false"
      name="members_footer"
-     top="300"
-     visible="false"
-     width="310">
+     top="325"
+     visible="false">
         <text
          type="string"
-         height="14"
+         height="16"
          layout="topleft"
          follows="left|top"
-         left="0"
+         left="5"
+         top="8"
+         text_color="EmphasisColor"
          name="static"
-         top_pad="5"
          width="300">
             Assigned Roles
         </text>
         <scroll_list
          draw_stripes="true"
-         follows="left|top"
-         height="90"
+        follows="left|top|right"
+         height="150"
          layout="topleft"
          left="0"
+         right="-1"
          name="member_assigned_roles"
-         top_pad="0"
-         width="300">
+         top_pad="0">
             <scroll_list.columns
              label=""
              name="checkbox"
@@ -299,27 +305,29 @@ things in this group. There&apos;s a broad variety of Abilities.
              name="role"
              width="270" />
         </scroll_list>
-                 <text
+          <text
          type="string"
-         height="14"
+         height="16"
          layout="topleft"
          follows="left|top"
-         left="0"
-         name="static2"
+         left="5"
          top_pad="5"
+         text_color="EmphasisColor"
+         name="static2"
          width="285">
             Allowed Abilities
         </text>
          <scroll_list
          draw_stripes="true"
-         height="90"
+             follows="left|top|right"
+         height="150"
          layout="topleft"
          left="0"
+         right="-1"
          name="member_allowed_actions"
          search_column="2"
          tool_tip="For details of each allowed ability see the abilities tab"
-         top_pad="0"
-         width="300">
+         top_pad="0">
             <scroll_list.columns
              label=""
              name="action"
@@ -327,30 +335,37 @@ things in this group. There&apos;s a broad variety of Abilities.
         </scroll_list>
     </panel>
     <panel
-     height="297"
+     height="550"
+     background_visible="true"
+     bg_alpha_color="FloaterUnfocusBorderColor"
      layout="topleft"
+     follows="top|left|right"
      left="0"
+     right="-1"
+     width="313"
+     mouse_opaque="false"
      name="roles_footer"
      top_delta="0"
-     top="220"
-     visible="false"
-     width="310">
+     top="209"
+     visible="false">
         <text
          type="string"
-         height="14"
+         height="16"
          layout="topleft"
-         left="0"
+         follows="left|top"
+         left="5"
+         top="5"
          name="static"
-         top="0"
          width="300">
            Role Name
         </text>
         <line_editor
          type="string"
-         follows="left|top"
          height="20"
          layout="topleft"
          left="0"
+         follows="left|top|right"
+         right="-1"
          max_length="295"
          name="role_name"
          top_pad="0"
@@ -358,8 +373,10 @@ things in this group. There&apos;s a broad variety of Abilities.
         </line_editor>
         <text
          type="string"
-         height="14"
+         height="16"
          layout="topleft"
+         follows="left|top"
+         left="5"
          name="static3"
          top_pad="5"
          width="300">
@@ -367,19 +384,22 @@ things in this group. There&apos;s a broad variety of Abilities.
         </text>
         <line_editor
          type="string"
-         follows="left|top"
          height="20"
          layout="topleft"
+         left="0"
+         follows="left|top|right"
+         right="-1"
          max_length="295"
          name="role_title"
          top_pad="0"
          width="300">
         </line_editor>
-                <text
+               <text
          type="string"
-         height="14"
+         height="16"
          layout="topleft"
-         left="0"
+         follows="left|top"
+         left="5"
          name="static2"
          top_pad="5"
          width="200">
@@ -387,11 +407,12 @@ things in this group. There&apos;s a broad variety of Abilities.
         </text>
         <text_editor
          type="string"
-         halign="left"
-         height="35"
          layout="topleft"
          left="0"
+         follows="left|top|right"
+         right="-1"
          max_length="295"
+         height="35"
          name="role_description"
          top_pad="0"
          width="300"
@@ -399,10 +420,11 @@ things in this group. There&apos;s a broad variety of Abilities.
         </text_editor>
         <text
          type="string"
-         height="14"
+         height="16"
          layout="topleft"
          follows="left|top"
-         left="0"
+         left="5"
+         text_color="EmphasisColor"
          name="static4"
          top_pad="5"
          width="300">
@@ -410,15 +432,18 @@ things in this group. There&apos;s a broad variety of Abilities.
         </text>
         <name_list
          draw_stripes="true"
-         height="60"
+         height="128"
          layout="topleft"
          left="0"
+         follows="left|top|right"
+         right="-1"
          name="role_assigned_members"
          top_pad="0"
          width="300" />
         <check_box
          height="15"
          label="Reveal members"
+         left="5"
          layout="topleft"
          name="role_visible_in_list"
          tool_tip="Sets whether members of this role are visible in the General tab to people outside of the group."
@@ -426,29 +451,28 @@ things in this group. There&apos;s a broad variety of Abilities.
          width="300" />
          <text
          type="string"
-         height="13"
+         height="16"
          layout="topleft"
          follows="left|top"
-         left="0"
+         left="5"
+         text_color="EmphasisColor"
          name="static5"
-         top_pad="5"
+         top_pad="2"
          width="300">
             Allowed Abilities
         </text>
         <scroll_list
          draw_stripes="true"
-         height="60"
+         height="140"
          layout="topleft"
          left="0"
+         follows="left|top|right"
+         right="-1"
          name="role_allowed_actions"
          search_column="2"
          tool_tip="For details of each allowed ability see the abilities tab"
          top_pad="0"
          width="300">
-            <scroll_list.columns
-             label=""
-             name="icon"
-             width="2" />
             <scroll_list.columns
              label=""
              name="checkbox"
@@ -460,14 +484,19 @@ things in this group. There&apos;s a broad variety of Abilities.
         </scroll_list>
     </panel>
    <panel
-     height="303"
+     height="424"
+     background_visible="true"
+     bg_alpha_color="FloaterUnfocusBorderColor"
      layout="topleft"
+     follows="top|left|right"
      left="0"
+     right="-1"
+     width="313"
+     mouse_opaque="false"
      name="actions_footer"
      top_delta="0"
      top="255"
-     visible="false"
-     width="310">
+     visible="false">
         <text_editor
        bg_readonly_color="Transparent"
        text_readonly_color="EmphasisColor"
@@ -475,44 +504,54 @@ things in this group. There&apos;s a broad variety of Abilities.
          type="string"
          enabled="false"
          halign="left"
-         height="90"
          layout="topleft"
+         follows="left|top|right"
+         left="0"
+         right="-1"
+         height="90"
          max_length="512"
          name="action_description"
-         top_pad="0"
-         width="295"
+         top="0"
          word_wrap="true">
             This Ability is &apos;Eject Members from this Group&apos;. Only an Owner can eject another Owner.
         </text_editor>
         <text
          type="string"
-         height="14"
+         height="16"
          layout="topleft"
+         follows="left|top"
          left="5"
          name="static2"
-         top_pad="5"
+         top_pad="1"
          width="300">
             Roles with this ability
         </text>
         <scroll_list
-         height="65"
+         height="172"
          layout="topleft"
+         follows="left|top|right"
          left="5"
+         right="-1"
          name="action_roles"
          top_pad="0"
          width="300" />
         <text
          type="string"
-         height="14"
+         height="16"
          layout="topleft"
+         follows="left|top"
+         left="5"
          name="static3"
          top_pad="5"
          width="300">
             Members with this ability
         </text>
         <name_list
-         height="100"
+         height="122"
+         follows="left|top|right"
          layout="topleft"
+         left="5"
+         right="-1"
          name="action_members"
          top_pad="0"
          width="300" />
diff --git a/indra/newview/skins/default/xui/en/panel_side_tray.xml b/indra/newview/skins/default/xui/en/panel_side_tray.xml
index 3f836a661dd..eb95de3a7ca 100644
--- a/indra/newview/skins/default/xui/en/panel_side_tray.xml
+++ b/indra/newview/skins/default/xui/en/panel_side_tray.xml
@@ -91,7 +91,7 @@
         class="panel_group_info_sidetray"
         name="panel_group_info_sidetray"
         filename="panel_group_info_sidetray.xml"
-        label="Group Info"
+        label="Group Profile"
         font="SansSerifBold"
       />
       <panel
-- 
GitLab


From 6ffc21e00d07a7c90d46009571556a9caec96e62 Mon Sep 17 00:00:00 2001
From: Alexei Arabadji <aarabadji@productengine.com>
Date: Mon, 25 Jan 2010 12:07:23 +0200
Subject: [PATCH 062/521] fixed  EXT-3395 "Docked IM/Chat windows shouldn't
 hide when voice control panel is opened", added transient controls group
 'DOCKED' for temporary excluded docked floaters and dock widgets;

--HG--
branch : product-engine
---
 indra/newview/lltransientdockablefloater.cpp | 24 +++++++++++++-------
 indra/newview/lltransientfloatermgr.cpp      |  4 +++-
 indra/newview/lltransientfloatermgr.h        |  2 +-
 3 files changed, 20 insertions(+), 10 deletions(-)

diff --git a/indra/newview/lltransientdockablefloater.cpp b/indra/newview/lltransientdockablefloater.cpp
index c9bfe178ce4..9d39aa51824 100644
--- a/indra/newview/lltransientdockablefloater.cpp
+++ b/indra/newview/lltransientdockablefloater.cpp
@@ -48,6 +48,14 @@ LLTransientDockableFloater::LLTransientDockableFloater(LLDockControl* dockContro
 LLTransientDockableFloater::~LLTransientDockableFloater()
 {
 	LLTransientFloaterMgr::getInstance()->unregisterTransientFloater(this);
+	LLView* dock = getDockWidget();
+	LLTransientFloaterMgr::getInstance()->removeControlView(
+			LLTransientFloaterMgr::DOCKED, this);
+	if (dock != NULL)
+	{
+		LLTransientFloaterMgr::getInstance()->removeControlView(
+				LLTransientFloaterMgr::DOCKED, dock);
+	}
 }
 
 void LLTransientDockableFloater::setVisible(BOOL visible)
@@ -55,18 +63,18 @@ void LLTransientDockableFloater::setVisible(BOOL visible)
 	LLView* dock = getDockWidget();
 	if(visible && isDocked())
 	{
-		LLTransientFloaterMgr::getInstance()->addControlView(this);
+		LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::DOCKED, this);
 		if (dock != NULL)
 		{
-			LLTransientFloaterMgr::getInstance()->addControlView(dock);
+			LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::DOCKED, dock);
 		}
 	}
 	else
 	{
-		LLTransientFloaterMgr::getInstance()->removeControlView(this);
+		LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::DOCKED, this);
 		if (dock != NULL)
 		{
-			LLTransientFloaterMgr::getInstance()->removeControlView(dock);
+			LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::DOCKED, dock);
 		}
 	}
 
@@ -78,18 +86,18 @@ void LLTransientDockableFloater::setDocked(bool docked, bool pop_on_undock)
 	LLView* dock = getDockWidget();
 	if(docked)
 	{
-		LLTransientFloaterMgr::getInstance()->addControlView(this);
+		LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::DOCKED, this);
 		if (dock != NULL)
 		{
-			LLTransientFloaterMgr::getInstance()->addControlView(dock);
+			LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::DOCKED, dock);
 		}
 	}
 	else
 	{
-		LLTransientFloaterMgr::getInstance()->removeControlView(this);
+		LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::DOCKED, this);
 		if (dock != NULL)
 		{
-			LLTransientFloaterMgr::getInstance()->removeControlView(dock);
+			LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::DOCKED, dock);
 		}
 	}
 
diff --git a/indra/newview/lltransientfloatermgr.cpp b/indra/newview/lltransientfloatermgr.cpp
index 8f1a738453f..d82403070be 100644
--- a/indra/newview/lltransientfloatermgr.cpp
+++ b/indra/newview/lltransientfloatermgr.cpp
@@ -46,6 +46,7 @@ LLTransientFloaterMgr::LLTransientFloaterMgr()
 			&LLTransientFloaterMgr::leftMouseClickCallback, this, _1, _2, _3));
 
 	mGroupControls.insert(std::pair<ETransientGroup, std::set<LLView*> >(GLOBAL, std::set<LLView*>()));
+	mGroupControls.insert(std::pair<ETransientGroup, std::set<LLView*> >(DOCKED, std::set<LLView*>()));
 	mGroupControls.insert(std::pair<ETransientGroup, std::set<LLView*> >(IM, std::set<LLView*>()));
 }
 
@@ -132,7 +133,8 @@ void LLTransientFloaterMgr::leftMouseClickCallback(S32 x, S32 y,
 		return;
 	}
 
-	bool hide = isControlClicked(mGroupControls.find(GLOBAL)->second, x, y);
+	bool hide = isControlClicked(mGroupControls.find(DOCKED)->second, x, y)
+			&& isControlClicked(mGroupControls.find(GLOBAL)->second, x, y);
 	if (hide)
 	{
 		hideTransientFloaters(x, y);
diff --git a/indra/newview/lltransientfloatermgr.h b/indra/newview/lltransientfloatermgr.h
index 1f99325a7fb..9c5ae295f28 100644
--- a/indra/newview/lltransientfloatermgr.h
+++ b/indra/newview/lltransientfloatermgr.h
@@ -51,7 +51,7 @@ class LLTransientFloaterMgr: public LLSingleton<LLTransientFloaterMgr>
 public:
 	enum ETransientGroup
 	{
-		GLOBAL, IM
+		GLOBAL, DOCKED, IM
 	};
 
 	void registerTransientFloater(LLTransientFloater* floater);
-- 
GitLab


From 74b3c9e0e5cbcb2c34ae0f8dd2d0186826a227da Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Mon, 25 Jan 2010 12:53:02 +0200
Subject: [PATCH 063/521] Fixed normal bug EXT-3880 ( [BSI] functionality loss
 - online status in profile) -- removed logic implemented for EXT-2022 (show
 "Online" status or nothing) -- removed deprecated method
 LLPanelProfileView::togglePanel -- implemented required bihavior (for
 friends): --- Online when online and privacy settings allow to show ---
 Offline when offline and privacy settings allow to show --- Else: nothing --
 also implemented bihavior for non-friends to use global Preference: "Only
 Friends & Groups can see when I am online" --- Online when online and was not
 set in Preferences/"Only Friends & Groups can see when I am online" --- Else:
 Offline

--HG--
branch : product-engine
---
 indra/newview/llpanelprofileview.cpp | 54 ++++++++++++++--------------
 indra/newview/llpanelprofileview.h   | 20 ++++++++---
 2 files changed, 41 insertions(+), 33 deletions(-)

diff --git a/indra/newview/llpanelprofileview.cpp b/indra/newview/llpanelprofileview.cpp
index 7832f63e6a6..044036ea50e 100644
--- a/indra/newview/llpanelprofileview.cpp
+++ b/indra/newview/llpanelprofileview.cpp
@@ -101,8 +101,6 @@ void LLPanelProfileView::onOpen(const LLSD& key)
 		id = key["id"];
 	}
 
-	// subscribe observer to get online status. Request will be sent by LLPanelAvatarProfile itself
-	mAvatarStatusObserver->subscribe();
 	if(id.notNull() && getAvatarId() != id)
 	{
 		setAvatarId(id);
@@ -111,12 +109,9 @@ void LLPanelProfileView::onOpen(const LLSD& key)
 	// Update the avatar name.
 	gCacheName->get(getAvatarId(), FALSE,
 		boost::bind(&LLPanelProfileView::onAvatarNameCached, this, _1, _2, _3, _4));
-/*
-// disable this part of code according to EXT-2022. See processOnlineStatus
-	// status should only show if viewer has permission to view online/offline. EXT-453 
-	mStatusText->setVisible(isGrantedToSeeOnlineStatus());
+
 	updateOnlineStatus();
-*/
+
 
 	LLPanelProfile::onOpen(key);
 }
@@ -164,27 +159,43 @@ bool LLPanelProfileView::isGrantedToSeeOnlineStatus()
 	// *NOTE: GRANT_ONLINE_STATUS is always set to false while changing any other status.
 	// When avatar disallow me to see her online status processOfflineNotification Message is received by the viewer
 	// see comments for ChangeUserRights template message. EXT-453.
-//	return relationship->isRightGrantedFrom(LLRelationship::GRANT_ONLINE_STATUS);
-	return true;
+	// If GRANT_ONLINE_STATUS flag is changed it will be applied when viewer restarts. EXT-3880
+	return relationship->isRightGrantedFrom(LLRelationship::GRANT_ONLINE_STATUS);
 }
 
+// method was disabled according to EXT-2022. Re-enabled & improved according to EXT-3880
 void LLPanelProfileView::updateOnlineStatus()
 {
+	// set text box visible to show online status for non-friends who has not set in Preferences
+	// "Only Friends & Groups can see when I am online"
+	mStatusText->setVisible(TRUE);
+
 	const LLRelationship* relationship = LLAvatarTracker::instance().getBuddyInfo(getAvatarId());
 	if (NULL == relationship)
-		return;
+	{
+		// this is non-friend avatar. Status will be updated from LLAvatarPropertiesProcessor.
+		// in LLPanelProfileView::processOnlineStatus()
 
-	bool online = relationship->isOnline();
+		// subscribe observer to get online status. Request will be sent by LLPanelAvatarProfile itself.
+		// do not subscribe for friend avatar because online status can be wrong overridden
+		// via LLAvatarData::flags if Preferences: "Only Friends & Groups can see when I am online" is set.
+		mAvatarStatusObserver->subscribe();
+		return;
+	}
+	// For friend let check if he allowed me to see his status
 
-	std::string status = getString(online ? "status_online" : "status_offline");
+	// status should only show if viewer has permission to view online/offline. EXT-453, EXT-3880
+	mStatusText->setVisible(isGrantedToSeeOnlineStatus());
 
-	mStatusText->setValue(status);
+	bool online = relationship->isOnline();
+	processOnlineStatus(online);
 }
 
 void LLPanelProfileView::processOnlineStatus(bool online)
 {
-	mAvatarIsOnline = online;
-	mStatusText->setVisible(online);
+	std::string status = getString(online ? "status_online" : "status_offline");
+
+	mStatusText->setValue(status);
 }
 
 void LLPanelProfileView::onAvatarNameCached(const LLUUID& id, const std::string& first_name, const std::string& last_name, BOOL is_group)
@@ -193,17 +204,4 @@ void LLPanelProfileView::onAvatarNameCached(const LLUUID& id, const std::string&
 	getChild<LLUICtrl>("user_name", FALSE)->setValue(first_name + " " + last_name);
 }
 
-void LLPanelProfileView::togglePanel(LLPanel* panel, const LLSD& key)
-{
-	// *TODO: unused method?
-
-	LLPanelProfile::togglePanel(panel);
-	if(FALSE == panel->getVisible())
-	{
-		// LLPanelProfile::togglePanel shows/hides all children,
-		// we don't want to display online status for non friends, so re-hide it here
-		mStatusText->setVisible(mAvatarIsOnline);
-	}
-}
-
 // EOF
diff --git a/indra/newview/llpanelprofileview.h b/indra/newview/llpanelprofileview.h
index 5dc617d4a04..9b87e146a86 100644
--- a/indra/newview/llpanelprofileview.h
+++ b/indra/newview/llpanelprofileview.h
@@ -64,8 +64,6 @@ class LLPanelProfileView : public LLPanelProfile
 	
 	/*virtual*/ BOOL postBuild();
 
-	/*virtual*/ void togglePanel(LLPanel* panel, const LLSD& key = LLSD());
-
 	BOOL handleDragAndDrop(S32 x, S32 y, MASK mask,
 						   BOOL drop, EDragAndDropType cargo_type,
 						   void *cargo_data, EAcceptance *accept,
@@ -81,8 +79,21 @@ class LLPanelProfileView : public LLPanelProfile
 protected:
 
 	void onBackBtnClick();
-	bool isGrantedToSeeOnlineStatus(); // deprecated after EXT-2022 is implemented
-	void updateOnlineStatus(); // deprecated after EXT-2022 is implemented
+	bool isGrantedToSeeOnlineStatus();
+
+	/**
+	 * Displays avatar's online status if possible.
+	 *
+	 * Requirements from EXT-3880:
+	 * For friends:
+	 * - Online when online and privacy settings allow to show
+	 * - Offline when offline and privacy settings allow to show
+	 * - Else: nothing
+	 * For other avatars:
+	 *  - Online when online and was not set in Preferences/"Only Friends & Groups can see when I am online"
+	 *  - Else: Offline
+	 */
+	void updateOnlineStatus();
 	void processOnlineStatus(bool online);
 
 private:
@@ -96,7 +107,6 @@ class LLPanelProfileView : public LLPanelProfile
 
 	LLTextBox* mStatusText;
 	AvatarStatusObserver* mAvatarStatusObserver;
-	bool mAvatarIsOnline;
 };
 
 #endif //LL_LLPANELPROFILEVIEW_H
-- 
GitLab


From 2128a929c36dd51590349c9196e38dfc6006b24d Mon Sep 17 00:00:00 2001
From: Andrew Dyukov <adyukov@productengine.com>
Date: Mon, 25 Jan 2010 20:53:43 +0200
Subject: [PATCH 064/521] Fixed reopened normal bug EXT-4450([BSI] call buttons
 enabled when voice is disabled).

- Added check for call availability in miniinspector's context menu
- Removed ability to call yourself in group chat context menu
- Added check for call availability for context menu which appears on right mouse click on avatar in game area

--HG--
branch : product-engine
---
 indra/newview/llinspectavatar.cpp                             | 1 +
 indra/newview/llparticipantlist.cpp                           | 4 +++-
 indra/newview/llviewermenu.cpp                                | 1 +
 indra/newview/skins/default/xui/en/menu_attachment_other.xml  | 2 ++
 indra/newview/skins/default/xui/en/menu_avatar_other.xml      | 2 ++
 .../newview/skins/default/xui/en/menu_inspect_avatar_gear.xml | 2 ++
 6 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp
index 4b0539337ba..3a41aebf280 100644
--- a/indra/newview/llinspectavatar.cpp
+++ b/indra/newview/llinspectavatar.cpp
@@ -229,6 +229,7 @@ LLInspectAvatar::LLInspectAvatar(const LLSD& sd)
 	mEnableCallbackRegistrar.add("InspectAvatar.VisibleZoomIn", 
 		boost::bind(&LLInspectAvatar::onVisibleZoomIn, this));
 	mEnableCallbackRegistrar.add("InspectAvatar.Gear.Enable", boost::bind(&LLInspectAvatar::isNotFriend, this));
+	mEnableCallbackRegistrar.add("InspectAvatar.Gear.EnableCall", boost::bind(&LLAvatarActions::canCall));
 	mEnableCallbackRegistrar.add("InspectAvatar.EnableMute", boost::bind(&LLInspectAvatar::enableMute, this));
 	mEnableCallbackRegistrar.add("InspectAvatar.EnableUnmute", boost::bind(&LLInspectAvatar::enableUnmute, this));
 
diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp
index c0302eee9e0..f83f3eba968 100644
--- a/indra/newview/llparticipantlist.cpp
+++ b/indra/newview/llparticipantlist.cpp
@@ -628,7 +628,9 @@ bool LLParticipantList::LLParticipantListMenu::enableContextMenuItem(const LLSD&
 	}
 	else if (item == "can_call")
 	{
-		return LLVoiceClient::voiceEnabled()&&gVoiceClient->voiceWorking();
+		bool not_agent = mUUIDs.front() != gAgentID;
+		bool can_call = not_agent && LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking();
+		return can_call;
 	}
 
 	return true;
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 5ff5b82a17e..54de693222a 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -7959,6 +7959,7 @@ void initialize_menus()
 	commit.add("Avatar.Eject", boost::bind(&handle_avatar_eject, LLSD()));
 	view_listener_t::addMenu(new LLAvatarSendIM(), "Avatar.SendIM");
 	view_listener_t::addMenu(new LLAvatarCall(), "Avatar.Call");
+	enable.add("Avatar.EnableCall", boost::bind(&LLAvatarActions::canCall));
 	view_listener_t::addMenu(new LLAvatarReportAbuse(), "Avatar.ReportAbuse");
 	
 	view_listener_t::addMenu(new LLAvatarEnableAddFriend(), "Avatar.EnableAddFriend");
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 5b94645b603..c5b31c7f631 100644
--- a/indra/newview/skins/default/xui/en/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/en/menu_attachment_other.xml
@@ -30,6 +30,8 @@
      name="Call">
         <menu_item_call.on_click
          function="Avatar.Call" />
+        <menu_item_call.on_enable
+         function="Avatar.EnableCall" />
     </menu_item_call>
       <menu_item_call
          label="Invite to Group"
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 0ad41546d20..ac9101cfd90 100644
--- a/indra/newview/skins/default/xui/en/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/en/menu_avatar_other.xml
@@ -30,6 +30,8 @@
      name="Call">
         <menu_item_call.on_click
          function="Avatar.Call" />
+        <menu_item_call.on_enable
+         function="Avatar.EnableCall" />
     </menu_item_call>
       <menu_item_call
          label="Invite to Group"
diff --git a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
index dde92f23b6b..85ec1748291 100644
--- a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
@@ -32,6 +32,8 @@
    name="call">
     <menu_item_call.on_click
      function="InspectAvatar.Call"/>
+    <menu_item_call.on_enable
+     function="InspectAvatar.Gear.EnableCall"/>
   </menu_item_call>
   <menu_item_call
    label="Teleport"
-- 
GitLab


From a908a528fea9e51ca8c8d9e6cc7a7401991f160a Mon Sep 17 00:00:00 2001
From: Andrew Dyukov <adyukov@productengine.com>
Date: Mon, 25 Jan 2010 22:19:03 +0200
Subject: [PATCH 065/521] No ticket. Fixed a bit(added check for canCall())
 isCalling() method from LLAvataActions, but it appears that it is not used
 anywhere. So i commented it out. Maybe it should be removed?

--HG--
branch : product-engine
---
 indra/newview/llavataractions.cpp | 7 +++++--
 indra/newview/llavataractions.h   | 5 ++++-
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index bb14c41cec8..7eed2e7b9a2 100644
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -250,17 +250,20 @@ void LLAvatarActions::startAdhocCall(const std::vector<LLUUID>& ids)
 	make_ui_sound("UISndStartIM");
 }
 
+/* AD *TODO: Is this function needed any more?
+	I fixed it a bit(added check for canCall), but it appears that it is not used
+	anywhere. Maybe it should be removed?
 // static
 bool LLAvatarActions::isCalling(const LLUUID &id)
 {
-	if (id.isNull())
+	if (id.isNull() || !canCall())
 	{
 		return false;
 	}
 
 	LLUUID session_id = gIMMgr->computeSessionID(IM_NOTHING_SPECIAL, id);
 	return (LLIMModel::getInstance()->findIMSession(session_id) != NULL);
-}
+}*/
 
 //static
 bool LLAvatarActions::canCall()
diff --git a/indra/newview/llavataractions.h b/indra/newview/llavataractions.h
index ebfd40b796f..c751661acff 100644
--- a/indra/newview/llavataractions.h
+++ b/indra/newview/llavataractions.h
@@ -126,7 +126,10 @@ class LLAvatarActions
 	/**
 	 * Return true if the avatar is in a P2P voice call with a given user
 	 */
-	static bool isCalling(const LLUUID &id);
+	/* AD *TODO: Is this function needed any more?
+		I fixed it a bit(added check for canCall), but it appears that it is not used
+		anywhere. Maybe it should be removed?
+	static bool isCalling(const LLUUID &id);*/
 
 	/**
 	 * @return true if call to the resident can be made
-- 
GitLab


From 12961b57014f099ad35bd9c2e4dfae1bc4a549c3 Mon Sep 17 00:00:00 2001
From: Ychebotarev ProductEngine <ychebotarev@productengine.com>
Date: Tue, 26 Jan 2010 09:12:34 +0200
Subject: [PATCH 066/521] fix for normal EXT-4443 Copying text from
 notifications fails

--HG--
branch : product-engine
---
 indra/llui/lltexteditor.cpp | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index f2c3879a6c9..ae34b0a042d 100644
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -2040,6 +2040,19 @@ void LLTextEditor::showContextMenu(S32 x, S32 y)
 																				LLMenuHolderGL::child_registry_t::instance());
 	}
 
+	// Route menu to this class
+	// previously this was done in ::handleRightMoseDown:
+	//if(hasTabStop())
+	// setFocus(TRUE)  - why? weird...
+	// and then inside setFocus
+	// ....
+	//    gEditMenuHandler = this;
+	// ....
+	// but this didn't work in all cases and just weird...
+    //why not hear?
+
+	gEditMenuHandler = this;
+
 	S32 screen_x, screen_y;
 	localPointToScreen(x, y, &screen_x, &screen_y);
 	mContextMenu->show(screen_x, screen_y);
-- 
GitLab


From 865617da42d1ec723362f83d6ab2edbae5bb9a65 Mon Sep 17 00:00:00 2001
From: Ychebotarev ProductEngine <ychebotarev@productengine.com>
Date: Tue, 26 Jan 2010 10:16:19 +0200
Subject: [PATCH 067/521] sidefix for EXT-4484 [BSI] default find window size
 covers up lower tray

--HG--
branch : product-engine
---
 indra/newview/skins/default/xui/en/floater_search.xml | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/indra/newview/skins/default/xui/en/floater_search.xml b/indra/newview/skins/default/xui/en/floater_search.xml
index b0bb282abd4..775e7d66f79 100644
--- a/indra/newview/skins/default/xui/en/floater_search.xml
+++ b/indra/newview/skins/default/xui/en/floater_search.xml
@@ -2,9 +2,9 @@
 <floater
  legacy_header_height="13"
  can_resize="true"
- height="646"
+ height="546"
  layout="topleft"
- min_height="646"
+ min_height="546"
  min_width="670"
  name="floater_search"
  help_topic="floater_search"
@@ -21,7 +21,7 @@
         Done
     </floater.string>
     <layout_stack
-     bottom="641"
+     bottom="541"
      follows="left|right|top|bottom"
      layout="topleft"
      left="10"
@@ -42,7 +42,7 @@
              left="0"
              name="browser"
              top="0"
-             height="600"
+             height="500"
              width="650" />
             <text
              follows="bottom|left"
-- 
GitLab


From 6a3e89c34ab6db1120f2409a830ff561543a7fce Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Tue, 26 Jan 2010 10:40:30 +0200
Subject: [PATCH 068/521] Work on low bug EXT-4637 (Remove Warning flood from
 the VCP) -- refactoring: moved processing of participants which are not in
 current voice channel into separate method.

--HG--
branch : product-engine
---
 indra/newview/llcallfloater.cpp | 52 ++++++++++++++++++---------------
 indra/newview/llcallfloater.h   |  4 +++
 2 files changed, 32 insertions(+), 24 deletions(-)

diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp
index d9df537e032..ba50d0454ea 100644
--- a/indra/newview/llcallfloater.cpp
+++ b/indra/newview/llcallfloater.cpp
@@ -568,34 +568,38 @@ void LLCallFloater::updateParticipantsVoiceState()
 
 		if (!found)
 		{
-			// If an avatarID is not found in a speakers list from VoiceClient and
-			// a panel with this ID has a JOINED status this means that this person
-			// HAS LEFT the call.
-			if ((getState(participant_id) == STATE_JOINED))
-			{
-				setState(item, STATE_LEFT);
+			updateNotInVoiceParticipantState(item);
+		}
+	}
+}
 
-				LLPointer<LLSpeaker> speaker = mSpeakerManager->findSpeaker(item->getAvatarId());
-				if (speaker.isNull())
-				{
-					continue;
-				}
+void LLCallFloater::updateNotInVoiceParticipantState(LLAvatarListItem* item)
+{
+	LLUUID participant_id = item->getAvatarId();
+	// If an avatarID is not found in a speakers list from VoiceClient and
+	// a panel with this ID has a JOINED status this means that this person
+	// HAS LEFT the call.
+	if ((getState(participant_id) == STATE_JOINED))
+	{
+		setState(item, STATE_LEFT);
 
-				speaker->mHasLeftCurrentCall = TRUE;
-			}
-			// If an avatarID is not found in a speakers list from VoiceClient and
-			// a panel with this ID has a LEFT status this means that this person
-			// HAS ENTERED session but it is not in voice chat yet. So, set INVITED status
-			else if ((getState(participant_id) != STATE_LEFT))
-			{
-				setState(item, STATE_INVITED);
-			}
-			else
-			{
-				llwarns << "Unsupported (" << getState(participant_id) << ") state: " << item->getAvatarName()  << llendl;
-			}
+		LLPointer<LLSpeaker> speaker = mSpeakerManager->findSpeaker(participant_id);
+		if (speaker.notNull())
+		{
+			speaker->mHasLeftCurrentCall = TRUE;
 		}
 	}
+	// If an avatarID is not found in a speakers list from VoiceClient and
+	// a panel with this ID has a LEFT status this means that this person
+	// HAS ENTERED session but it is not in voice chat yet. So, set INVITED status
+	else if ((getState(participant_id) != STATE_LEFT))
+	{
+		setState(item, STATE_INVITED);
+	}
+	else
+	{
+		llwarns << "Unsupported (" << getState(participant_id) << ") state for: " << item->getAvatarName()  << llendl;
+	}
 }
 
 void LLCallFloater::setState(LLAvatarListItem* item, ESpeakerState state)
diff --git a/indra/newview/llcallfloater.h b/indra/newview/llcallfloater.h
index eded3a426b8..766191379ba 100644
--- a/indra/newview/llcallfloater.h
+++ b/indra/newview/llcallfloater.h
@@ -145,6 +145,10 @@ class LLCallFloater : public LLTransientDockableFloater, LLVoiceClientParticipan
 	 */
 	void updateParticipantsVoiceState();
 
+	/**
+	 * Updates voice state of participant not in current voice channel depend on its current state.
+	 */
+	void updateNotInVoiceParticipantState(LLAvatarListItem* item);
 	void setState(LLAvatarListItem* item, ESpeakerState state);
 	void setState(const LLUUID& speaker_id, ESpeakerState state)
 	{
-- 
GitLab


From b15bebb34853cb839100c48f5b28d52e60660c13 Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Tue, 26 Jan 2010 12:13:01 +0200
Subject: [PATCH 069/521] Fixed low bug EXT-4637 (Remove Warning flood from the
 VCP) -- refactoring: replaced "if-else" conditions with the "switch"
 statement. For now all existent for now states are processed.     VCP
 functionality was not changed.

--HG--
branch : product-engine
---
 indra/newview/llcallfloater.cpp | 41 ++++++++++++++++++++-------------
 1 file changed, 25 insertions(+), 16 deletions(-)

diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp
index ba50d0454ea..1e713dade8b 100644
--- a/indra/newview/llcallfloater.cpp
+++ b/indra/newview/llcallfloater.cpp
@@ -576,29 +576,38 @@ void LLCallFloater::updateParticipantsVoiceState()
 void LLCallFloater::updateNotInVoiceParticipantState(LLAvatarListItem* item)
 {
 	LLUUID participant_id = item->getAvatarId();
-	// If an avatarID is not found in a speakers list from VoiceClient and
-	// a panel with this ID has a JOINED status this means that this person
-	// HAS LEFT the call.
-	if ((getState(participant_id) == STATE_JOINED))
+	ESpeakerState current_state = getState(participant_id);
+
+	switch (current_state)
 	{
+	case STATE_JOINED:
+		// If an avatarID is not found in a speakers list from VoiceClient and
+		// a panel with this ID has a JOINED status this means that this person
+		// HAS LEFT the call.
 		setState(item, STATE_LEFT);
 
-		LLPointer<LLSpeaker> speaker = mSpeakerManager->findSpeaker(participant_id);
-		if (speaker.notNull())
 		{
-			speaker->mHasLeftCurrentCall = TRUE;
+			LLPointer<LLSpeaker> speaker = mSpeakerManager->findSpeaker(participant_id);
+			if (speaker.notNull())
+			{
+				speaker->mHasLeftCurrentCall = TRUE;
+			}
 		}
-	}
-	// If an avatarID is not found in a speakers list from VoiceClient and
-	// a panel with this ID has a LEFT status this means that this person
-	// HAS ENTERED session but it is not in voice chat yet. So, set INVITED status
-	else if ((getState(participant_id) != STATE_LEFT))
-	{
+		break;
+	case STATE_INVITED:
+	case STATE_LEFT:
+		// nothing to do. These states should not be changed.
+		break;
+	case STATE_UNKNOWN:
+		// If an avatarID is not found in a speakers list from VoiceClient and
+		// a panel with this ID has an UNKNOWN status this means that this person
+		// HAS ENTERED session but it is not in voice chat yet. So, set INVITED status
 		setState(item, STATE_INVITED);
-	}
-	else
-	{
+		break;
+	default:
+		// for possible new future states.
 		llwarns << "Unsupported (" << getState(participant_id) << ") state for: " << item->getAvatarName()  << llendl;
+		break;
 	}
 }
 
-- 
GitLab


From a402b2975fdb88781efa340d186c9ace449f9521 Mon Sep 17 00:00:00 2001
From: Ychebotarev ProductEngine <ychebotarev@productengine.com>
Date: Tue, 26 Jan 2010 12:25:11 +0200
Subject: [PATCH 070/521] fix for normal [BSI] About Land -> Script Information
 -> Divider between object owner and parcel location cannot be moved to resize
 fields

--HG--
branch : product-engine
---
 indra/newview/llfloaterscriptlimits.cpp | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llfloaterscriptlimits.cpp b/indra/newview/llfloaterscriptlimits.cpp
index 0964ad7f917..8875e35821b 100644
--- a/indra/newview/llfloaterscriptlimits.cpp
+++ b/indra/newview/llfloaterscriptlimits.cpp
@@ -528,7 +528,16 @@ BOOL LLPanelScriptLimitsRegionMemory::postBuild()
 		
 	std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestWaiting");
 	childSetValue("loading_text", LLSD(msg_waiting));
-	
+
+	LLScrollListCtrl *list = getChild<LLScrollListCtrl>("scripts_list");
+
+	//set all columns to resizable mode even if some columns will be empty
+	for(S32 column = 0; column < list->getNumColumns(); column++)
+	{
+		LLScrollListColumn* columnp = list->getColumn(column);
+		columnp->mHeader->setHasResizableElement(TRUE);
+	}
+
 	return StartRequestChain();
 }
 
-- 
GitLab


From cf7ff53d73a4f705e3caac7013ec40e9011f5963 Mon Sep 17 00:00:00 2001
From: Ychebotarev ProductEngine <ychebotarev@productengine.com>
Date: Tue, 26 Jan 2010 13:53:54 +0200
Subject: [PATCH 071/521] EXT-4432  [BSI] Script errors are shown in nearby
 chat floater, but not displayed as nearby chat toast when floater closed

--HG--
branch : product-engine
---
 indra/newview/llnearbychathandler.cpp | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp
index c50e049d4c3..a1a9d84c14b 100644
--- a/indra/newview/llnearbychathandler.cpp
+++ b/indra/newview/llnearbychathandler.cpp
@@ -356,12 +356,17 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg)
 		initChannel();
 	}
 
+	/*
+	//comment all this due to EXT-4432
+	..may clean up after some time...
+
 	//only messages from AGENTS
 	if(CHAT_SOURCE_OBJECT == chat_msg.mSourceType)
 	{
 		if(chat_msg.mChatType == CHAT_TYPE_DEBUG_MSG)
 			return;//ok for now we don't skip messeges from object, so skip only debug messages
 	}
+	*/
 
 	LLUUID id;
 	id.generate();
-- 
GitLab


From a1b81987228aca8ea533dcbf25aa8f05880abf84 Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Tue, 26 Jan 2010 14:09:15 +0200
Subject: [PATCH 072/521] done (fixing patch) EXT-4499 Replace "*" glyph in
 password fields with a proper circle [PATCH INCLUDED]

--HG--
branch : product-engine
---
 indra/llui/lllineeditor.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp
index 73e4d126f32..cb5aea272df 100644
--- a/indra/llui/lllineeditor.cpp
+++ b/indra/llui/lllineeditor.cpp
@@ -70,6 +70,8 @@ const S32   SCROLL_INCREMENT_DEL = 4;	// make space for baskspacing
 const F32   AUTO_SCROLL_TIME = 0.05f;
 const F32	TRIPLE_CLICK_INTERVAL = 0.3f;	// delay between double and triple click. *TODO: make this equal to the double click interval?
 
+const std::string PASSWORD_ASTERISK( "\xE2\x97\x8F" ); // U+25CF BLACK CIRCLE
+
 static LLDefaultChildRegistry::Register<LLLineEditor> r1("line_editor");
 
 // Compiler optimization, generate extern template
@@ -401,7 +403,7 @@ void LLLineEditor::setCursorAtLocalPos( S32 local_mouse_x )
 	{
 		for (S32 i = 0; i < mText.length(); i++)
 		{
-			asterix_text += '*';
+			asterix_text += utf8str_to_wstring(PASSWORD_ASTERISK);
 		}
 		wtext = asterix_text.c_str();
 	}
@@ -1599,7 +1601,7 @@ void LLLineEditor::draw()
 		std::string text;
 		for (S32 i = 0; i < mText.length(); i++)
 		{
-			text += '*';
+			text += PASSWORD_ASTERISK;
 		}
 		mText = text;
 	}
-- 
GitLab


From fd33910c39ceb7f589c085a5cccda7c10784f0ac Mon Sep 17 00:00:00 2001
From: Ychebotarev ProductEngine <ychebotarev@productengine.com>
Date: Tue, 26 Jan 2010 14:34:02 +0200
Subject: [PATCH 073/521] add comment for EXT-4443 about EXT-4443...

--HG--
branch : product-engine
---
 indra/llui/lltexteditor.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index ae34b0a042d..06ba0d80e9a 100644
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -2049,7 +2049,8 @@ void LLTextEditor::showContextMenu(S32 x, S32 y)
 	//    gEditMenuHandler = this;
 	// ....
 	// but this didn't work in all cases and just weird...
-    //why not hear?
+    //why not here? 
+	// (all this was done for EXT-4443)
 
 	gEditMenuHandler = this;
 
-- 
GitLab


From 1ac01f34b201154ec75d7e0143857b8229af776a Mon Sep 17 00:00:00 2001
From: Denis Serdjuk <dserduk@productengine.com>
Date: Tue, 26 Jan 2010 15:21:41 +0200
Subject: [PATCH 074/521] fixed minor bug EXT-4186 List items are displayed as
 links in the FlatList if match URL regexp Solution: disabling html parsing in
 teleport history  item.

--HG--
branch : product-engine
---
 .../newview/skins/default/xui/en/panel_teleport_history_item.xml | 1 +
 1 file changed, 1 insertion(+)

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 4f40e008156..c5f3fcc27df 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
@@ -41,6 +41,7 @@
      height="20"
      layout="topleft"
      left_pad="5"
+     allow_html="false"
      use_ellipses="true"
      name="region"
      text_color="white"
-- 
GitLab


From 4fec1fb665e5a6c93b6131d9746e3890a075c105 Mon Sep 17 00:00:00 2001
From: Alexei Arabadji <aarabadji@productengine.com>
Date: Tue, 26 Jan 2010 15:36:41 +0200
Subject: [PATCH 075/521] =?UTF-8?q?fixed=20EXT-3783=20=E2=80=9CSystem=20me?=
 =?UTF-8?q?ssages=20displayed=20in=20nearby=20chat=E2=80=9D,=20made=20voic?=
 =?UTF-8?q?e=20status=20messages=20displayed=20in=20pop-out=20window;?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

--HG--
branch : product-engine
---
 indra/newview/llimview.cpp           | 53 ++++++++++++++++++++--------
 indra/newview/llimview.h             | 17 ++++++---
 indra/newview/llviewerfloaterreg.cpp |  1 +
 indra/newview/llvoicechannel.cpp     | 12 +++----
 4 files changed, 57 insertions(+), 26 deletions(-)

diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 32b0cbff389..1b1e6501c0a 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -1577,7 +1577,7 @@ void LLCallDialog::setIcon(const LLSD& session_id, const LLSD& participant_id)
 	}
 }
 
-bool LLOutgoingCallDialog::lifetimeHasExpired()
+bool LLCallDialog::lifetimeHasExpired()
 {
 	if (mLifetimeTimer.getStarted())
 	{
@@ -1590,7 +1590,7 @@ bool LLOutgoingCallDialog::lifetimeHasExpired()
 	return false;
 }
 
-void LLOutgoingCallDialog::onLifetimeExpired()
+void LLCallDialog::onLifetimeExpired()
 {
 	mLifetimeTimer.stop();
 	closeFloater();
@@ -1744,19 +1744,6 @@ LLCallDialog(payload)
 {
 }
 
-bool LLIncomingCallDialog::lifetimeHasExpired()
-{
-	if (mLifetimeTimer.getStarted())
-	{
-		F32 elapsed_time = mLifetimeTimer.getElapsedTimeF32();
-		if (elapsed_time > mLifetime) 
-		{
-			return true;
-		}
-	}
-	return false;
-}
-
 void LLIncomingCallDialog::onLifetimeExpired()
 {
 	// check whether a call is valid or not
@@ -3218,6 +3205,42 @@ class LLViewerChatterBoxInvitation : public LLHTTPNode
 	}
 };
 
+LLCallInfoDialog::LLCallInfoDialog(const LLSD& payload) : LLCallDialog(payload)
+{
+}
+
+BOOL LLCallInfoDialog::postBuild()
+{
+	// init notification's lifetime
+	std::istringstream ss( getString("lifetime") );
+	if (!(ss >> mLifetime))
+	{
+		mLifetime = DEFAULT_LIFETIME;
+	}
+	return LLCallDialog::postBuild();
+}
+
+void LLCallInfoDialog::onOpen(const LLSD& key)
+{
+	if(key.has("msg"))
+	{
+		std::string msg = key["msg"];
+		getChild<LLTextBox>("msg")->setValue(msg);
+	}
+
+	mLifetimeTimer.start();
+}
+
+void LLCallInfoDialog::show(const std::string& status_name, const LLSD& args)
+{
+	LLUIString message = LLTrans::getString(status_name);
+	message.setArgs(args);
+
+	LLSD payload;
+	payload["msg"] = message;
+	LLFloaterReg::showInstance("call_info", payload);
+}
+
 LLHTTPRegistration<LLViewerChatterBoxSessionStartReply>
    gHTTPRegistrationMessageChatterboxsessionstartreply(
 	   "/message/ChatterBoxSessionStartReply");
diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h
index a3b4f78af0c..0386ff234dd 100644
--- a/indra/newview/llimview.h
+++ b/indra/newview/llimview.h
@@ -512,8 +512,8 @@ class LLCallDialog : public LLDockableFloater
 	// notification's lifetime in seconds
 	S32		mLifetime;
 	static const S32 DEFAULT_LIFETIME = 5;
-	virtual bool lifetimeHasExpired() {return false;};
-	virtual void onLifetimeExpired() {};
+	virtual bool lifetimeHasExpired();
+	virtual void onLifetimeExpired();
 
 	virtual void getAllowedRect(LLRect& rect);
 
@@ -543,7 +543,6 @@ class LLIncomingCallDialog : public LLCallDialog
 	static void onStartIM(void* user_data);
 
 private:
-	/*virtual*/ bool lifetimeHasExpired();
 	/*virtual*/ void onLifetimeExpired();
 	void processCallResponse(S32 response);
 };
@@ -562,8 +561,16 @@ class LLOutgoingCallDialog : public LLCallDialog
 private:
 	// hide all text boxes
 	void hideAllText();
-	/*virtual*/ bool lifetimeHasExpired();
-	/*virtual*/ void onLifetimeExpired();
+};
+
+class LLCallInfoDialog : public LLCallDialog
+{
+public:
+	LLCallInfoDialog(const LLSD& payload);
+	/*virtual*/ BOOL postBuild();
+	/*virtual*/ void onOpen(const LLSD& key);
+
+	static void show(const std::string& status_name, const LLSD& args);
 };
 
 // Globals
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index 3a834e75322..e87d380e4df 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -204,6 +204,7 @@ void LLViewerFloaterReg::registerFloaters()
 
 	LLFloaterReg::add("openobject", "floater_openobject.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterOpenObject>);
 	LLFloaterReg::add("outgoing_call", "floater_outgoing_call.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLOutgoingCallDialog>);
+	LLFloaterReg::add("call_info", "floater_call_info.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLCallInfoDialog>);
 	LLFloaterReg::add("parcel_info", "floater_preview_url.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterParcelInfo>);
 	LLFloaterPayUtil::registerFloater();
 
diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp
index 917d69fe16d..589999c0264 100644
--- a/indra/newview/llvoicechannel.cpp
+++ b/indra/newview/llvoicechannel.cpp
@@ -389,13 +389,13 @@ void LLVoiceChannel::setState(EState state)
 	switch(state)
 	{
 	case STATE_RINGING:
-		gIMMgr->addSystemMessage(mSessionID, "ringing", mNotifyArgs);
+		LLCallInfoDialog::show("ringing", mNotifyArgs);
 		break;
 	case STATE_CONNECTED:
-		gIMMgr->addSystemMessage(mSessionID, "connected", mNotifyArgs);
+		LLCallInfoDialog::show("connected", mNotifyArgs);
 		break;
 	case STATE_HUNG_UP:
-		gIMMgr->addSystemMessage(mSessionID, "hang_up", mNotifyArgs);
+		LLCallInfoDialog::show("hang_up", mNotifyArgs);
 		break;
 	default:
 		break;
@@ -635,7 +635,7 @@ void LLVoiceChannelGroup::setState(EState state)
 	case STATE_RINGING:
 		if ( !mIsRetrying )
 		{
-			gIMMgr->addSystemMessage(mSessionID, "ringing", mNotifyArgs);
+			LLCallInfoDialog::show("ringing", mNotifyArgs);
 		}
 
 		doSetState(state);
@@ -698,7 +698,7 @@ void LLVoiceChannelProximal::handleStatusChange(EStatusType status)
 		// do not notify user when leaving proximal channel
 		return;
 	case STATUS_VOICE_DISABLED:
-		 gIMMgr->addSystemMessage(LLUUID::null, "unavailable", mNotifyArgs);
+		LLCallInfoDialog::show("unavailable", mNotifyArgs);
 		return;
 	default:
 		break;
@@ -897,7 +897,7 @@ void LLVoiceChannelP2P::setState(EState state)
 		// so provide a special purpose message here
 		if (mReceivedCall && state == STATE_RINGING)
 		{
-			gIMMgr->addSystemMessage(mSessionID, "answering", mNotifyArgs);
+			LLCallInfoDialog::show("answering", mNotifyArgs);
 			doSetState(state);
 			return;
 		}
-- 
GitLab


From 366baa7b652bee00bd6f4fa2651f4a43ba8aabe0 Mon Sep 17 00:00:00 2001
From: Sergei Litovchuk <slitovchuk@productengine.com>
Date: Tue, 26 Jan 2010 15:35:41 +0200
Subject: [PATCH 076/521] Fixed (EXT-2249) Place profile data blinks several
 times while updating after teleport. - Added update timer to avoid data
 blinking.

--HG--
branch : product-engine
---
 indra/newview/llpanelplaces.cpp | 16 ++++++++++++----
 indra/newview/llpanelplaces.h   |  6 ++++++
 2 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp
index a8a9717750b..7272a8a652c 100644
--- a/indra/newview/llpanelplaces.cpp
+++ b/indra/newview/llpanelplaces.cpp
@@ -34,7 +34,7 @@
 #include "llpanelplaces.h"
 
 #include "llassettype.h"
-#include "llwindow.h"
+#include "lltimer.h"
 
 #include "llinventory.h"
 #include "lllandmark.h"
@@ -49,6 +49,8 @@
 #include "lltrans.h"
 #include "lluictrlfactory.h"
 
+#include "llwindow.h"
+
 #include "llagent.h"
 #include "llagentpicksinfo.h"
 #include "llavatarpropertiesprocessor.h"
@@ -73,6 +75,7 @@
 #include "llviewerwindow.h"
 
 static const S32 LANDMARK_FOLDERS_MENU_WIDTH = 250;
+static const F32 PLACE_INFO_UPDATE_INTERVAL = 3.0;
 static const std::string AGENT_INFO_TYPE			= "agent";
 static const std::string CREATE_LANDMARK_INFO_TYPE	= "create_landmark";
 static const std::string LANDMARK_INFO_TYPE			= "landmark";
@@ -830,6 +833,10 @@ void LLPanelPlaces::togglePlaceInfoPanel(BOOL visible)
 		{
 			mPlaceProfile->resetLocation();
 
+			// Do not reset location info until mResetInfoTimer has expired
+			// to avoid text blinking.
+			mResetInfoTimer.setTimerExpirySec(PLACE_INFO_UPDATE_INTERVAL);
+
 			LLRect rect = getRect();
 			LLRect new_rect = LLRect(rect.mLeft, rect.mTop, rect.mRight, mTabContainer->getRect().mBottom);
 			mPlaceProfile->reshape(new_rect.getWidth(), new_rect.getHeight());
@@ -920,11 +927,12 @@ void LLPanelPlaces::changedParcelSelection()
 		}
 	}
 
-	// Reset location info only if global position is changed
-	// to reduce unnecessary text and icons updates.
-	if (prev_pos_global != mPosGlobal)
+	// Reset location info only if global position has changed
+	// and update timer has expired to reduce unnecessary text and icons updates.
+	if (prev_pos_global != mPosGlobal && mResetInfoTimer.hasExpired())
 	{
 		mPlaceProfile->resetLocation();
+		mResetInfoTimer.setTimerExpirySec(PLACE_INFO_UPDATE_INTERVAL);
 	}
 
 	mPlaceProfile->displaySelectedParcelInfo(parcel, region, mPosGlobal, is_current_parcel);
diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h
index 0eba7f3afc1..a0989746599 100644
--- a/indra/newview/llpanelplaces.h
+++ b/indra/newview/llpanelplaces.h
@@ -34,6 +34,8 @@
 
 #include "llpanel.h"
 
+class LLTimer;
+
 class LLInventoryItem;
 class LLFilterEditor;
 class LLLandmark;
@@ -132,6 +134,10 @@ class LLPanelPlaces : public LLPanel
 	// be available (hence zero)
 	LLVector3d					mPosGlobal;
 
+	// Sets a period of time during which the requested place information
+	// is expected to be updated and doesn't need to be reset.
+	LLTimer						mResetInfoTimer;
+
 	// Information type currently shown in Place Information panel
 	std::string					mPlaceInfoType;
 
-- 
GitLab


From a5bb9a722d18ceb0f569013f0c522429bd037030 Mon Sep 17 00:00:00 2001
From: Dmitry Zaporozhan <dzaporozhan@productengine.com>
Date: Mon, 25 Jan 2010 13:09:50 +0200
Subject: [PATCH 077/521] Fixed low bug EXT-4659 - Unnecessary scroll bar
 appears in location history list if 10 items are presented.

--HG--
branch : product-engine
---
 indra/llui/llscrolllistctrl.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp
index 4e84013db0c..71bba575843 100644
--- a/indra/llui/llscrolllistctrl.cpp
+++ b/indra/llui/llscrolllistctrl.cpp
@@ -498,7 +498,7 @@ void LLScrollListCtrl::fitContents(S32 max_width, S32 max_height)
 {
 	S32 height = llmin( getRequiredRect().getHeight(), max_height );
 	if(mPageLines)
-		height = llmin( mPageLines * mLineHeight + (mDisplayColumnHeaders ? mHeadingHeight : 0), height );
+		height = llmin( mPageLines * mLineHeight + 2*mBorderThickness + (mDisplayColumnHeaders ? mHeadingHeight : 0), height );
 
 	S32 width = getRect().getWidth();
 
-- 
GitLab


From 149c56ae429b0dc8ebf349027fe855066b3447f7 Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Mon, 25 Jan 2010 13:11:19 +0200
Subject: [PATCH 078/521] Related to normal bug EXT-3880 ( [BSI] functionality
 loss - online status in profile) -- removed logic to process online status
 (LLPanelAvatarProfile::fillOnlineStatus) for non-existent view
 (name="online_status") on profile page

--HG--
branch : product-engine
---
 indra/newview/llpanelavatar.cpp | 17 -----------------
 indra/newview/llpanelavatar.h   |  5 -----
 indra/newview/llpanelme.cpp     |  2 --
 3 files changed, 24 deletions(-)

diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp
index 564c80a492c..fe5b20813ac 100644
--- a/indra/newview/llpanelavatar.cpp
+++ b/indra/newview/llpanelavatar.cpp
@@ -584,8 +584,6 @@ void LLPanelAvatarProfile::processProfileProperties(const LLAvatarData* avatar_d
 
 	fillPartnerData(avatar_data);
 
-	fillOnlineStatus(avatar_data);
-
 	fillAccountStatus(avatar_data);
 }
 
@@ -653,21 +651,6 @@ void LLPanelAvatarProfile::fillPartnerData(const LLAvatarData* avatar_data)
 	}
 }
 
-void LLPanelAvatarProfile::fillOnlineStatus(const LLAvatarData* avatar_data)
-{
-	bool online = avatar_data->flags & AVATAR_ONLINE;
-	if(LLAvatarActions::isFriend(avatar_data->avatar_id))
-	{
-		// Online status NO could be because they are hidden
-		// If they are a friend, we may know the truth!
-		online = LLAvatarTracker::instance().isBuddyOnline(avatar_data->avatar_id);
-	}
-	childSetValue("online_status", online ?
-		"Online" : "Offline");
-	childSetColor("online_status", online ? 
-		LLColor4::green : LLColor4::red);
-}
-
 void LLPanelAvatarProfile::fillAccountStatus(const LLAvatarData* avatar_data)
 {
 	LLStringUtil::format_map_t args;
diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h
index 1174c72d60c..ce59f1e93d2 100644
--- a/indra/newview/llpanelavatar.h
+++ b/indra/newview/llpanelavatar.h
@@ -177,11 +177,6 @@ class LLPanelAvatarProfile
 	 */
 	virtual void fillPartnerData(const LLAvatarData* avatar_data);
 
-	/**
-	 * Fills Avatar's online status.
-	 */
-	virtual void fillOnlineStatus(const LLAvatarData* avatar_data);
-
 	/**
 	 * Fills account status.
 	 */
diff --git a/indra/newview/llpanelme.cpp b/indra/newview/llpanelme.cpp
index ece93125b32..0f0fb4b94ea 100644
--- a/indra/newview/llpanelme.cpp
+++ b/indra/newview/llpanelme.cpp
@@ -198,8 +198,6 @@ void LLPanelMyProfileEdit::processProfileProperties(const LLAvatarData* avatar_d
 {
 	fillCommonData(avatar_data);
 
-	fillOnlineStatus(avatar_data);
-
 	fillPartnerData(avatar_data);
 
 	fillAccountStatus(avatar_data);
-- 
GitLab


From 7fc90e2385c6376599818a3a7a3d815535671178 Mon Sep 17 00:00:00 2001
From: Ychebotarev ProductEngine <ychebotarev@productengine.com>
Date: Mon, 25 Jan 2010 13:31:16 +0200
Subject: [PATCH 079/521] fix for major EXT-4621 Clicking the Nearby Voice
 floater steals keyboard focus note - didn't do this in xml since
 chrome="true" in xml hides floater caption

--HG--
branch : product-engine
---
 indra/newview/llcallfloater.cpp | 6 ++++++
 indra/newview/llnearbychat.cpp  | 5 +++++
 2 files changed, 11 insertions(+)

diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp
index f346a4b8c2b..d9767bc5730 100644
--- a/indra/newview/llcallfloater.cpp
+++ b/indra/newview/llcallfloater.cpp
@@ -43,6 +43,7 @@
 #include "llavatariconctrl.h"
 #include "llavatarlist.h"
 #include "llbottomtray.h"
+#include "lldraghandle.h"
 #include "llimfloater.h"
 #include "llfloaterreg.h"
 #include "llparticipantlist.h"
@@ -174,6 +175,11 @@ BOOL LLCallFloater::postBuild()
 
 	connectToChannel(LLVoiceChannel::getCurrentVoiceChannel());
 
+	setIsChrome(true);
+	//chrome="true" hides floater caption 
+	if (mDragHandle)
+		mDragHandle->setTitleVisible(TRUE);
+
 	return TRUE;
 }
 
diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index a7c1e73328e..0a8d020b4ff 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -101,6 +101,11 @@ BOOL LLNearbyChat::postBuild()
 			getDockTongue(), LLDockControl::TOP, boost::bind(&LLNearbyChat::getAllowedRect, this, _1)));
 	}
 
+	setIsChrome(true);
+	//chrome="true" hides floater caption 
+	if (mDragHandle)
+		mDragHandle->setTitleVisible(TRUE);
+
 	return true;
 }
 
-- 
GitLab


From 410e105f5293813dc63542414382e67273ab1d52 Mon Sep 17 00:00:00 2001
From: Denis Serdjuk <dserduk@productengine.com>
Date: Mon, 25 Jan 2010 15:15:06 +0200
Subject: [PATCH 080/521] fixed bug EXT-4433   	 [BSI] friend privacy settings
 greyed out EXT-4353, EXT-4587, EXT-4442 have same cause.  it should fix they.

--HG--
branch : product-engine
---
 indra/llui/lltextbase.cpp | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 17aecaf32fd..47db990a372 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -1009,6 +1009,16 @@ void LLTextBase::draw()
 void LLTextBase::setColor( const LLColor4& c )
 {
 	mFgColor = c;
+	//textsegments have own style property , 
+	//so we have to update it also to apply changes, EXT-4433
+	for(segment_set_t::iterator it = mSegments.begin(); it != mSegments.end(); it++)
+	{
+		LLTextSegment* segment = it->get(); 
+		if(segment)
+		{
+			segment->setColor(mFgColor);
+		}
+	}
 }
 
 //virtual 
-- 
GitLab


From f11f8b34478f0d408689fe7959f233567001374d Mon Sep 17 00:00:00 2001
From: Lynx Linden <lynx@lindenlab.com>
Date: Mon, 25 Jan 2010 13:42:22 +0000
Subject: [PATCH 081/521] EXT-4576: Changed the pre-login help behavior.

The F1 help topic now means: if the user is not logged in yet, show
the pre-login topic instead of the default fallback topic, otherwise
show help for the focused item
---
 indra/newview/llviewerhelp.cpp | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/indra/newview/llviewerhelp.cpp b/indra/newview/llviewerhelp.cpp
index 5af79b4fd32..7c491ad1541 100644
--- a/indra/newview/llviewerhelp.cpp
+++ b/indra/newview/llviewerhelp.cpp
@@ -65,18 +65,16 @@ void LLViewerHelp::showTopic(const std::string &topic)
 		help_topic = defaultTopic();
 	}
 
-	// f1 help topic means: if user not logged in yet, show the
-	// pre-login topic, otherwise show help for the focused item
+	// f1 help topic means: if the user is not logged in yet, show
+	// the pre-login topic instead of the default fallback topic,
+	// otherwise show help for the focused item
 	if (help_topic == f1HelpTopic())
 	{
-		if (! LLLoginInstance::getInstance()->authSuccess())
+		help_topic = getTopicFromFocus();
+		if (help_topic == defaultTopic() && ! LLLoginInstance::getInstance()->authSuccess())
 		{
 			help_topic = preLoginTopic();
 		}
-		else
-		{
-			help_topic = getTopicFromFocus();
-		}
 	}
 
 	// work out the URL for this topic and display it 
-- 
GitLab


From f9e12e9f6b614db645c79c13795c1a1d67bae7fd Mon Sep 17 00:00:00 2001
From: Ychebotarev ProductEngine <ychebotarev@productengine.com>
Date: Mon, 25 Jan 2010 16:47:25 +0200
Subject: [PATCH 082/521] sidefix for EXT-4577 Group profile: useless tab
 controls appear inside Land/Assets accordion if you place UI elements
 __outside__ of panel rect - they will be visible but unclickable... so I
 revert UI changes since they are maybe looks better...but useless.

--HG--
branch : product-engine
---
 .../default/xui/en/panel_group_land_money.xml | 90 ++++++++++---------
 1 file changed, 46 insertions(+), 44 deletions(-)

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 2075d7e05b5..db156f7877c 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
@@ -2,7 +2,7 @@
 <panel
  border="false"
  follows="all"
- height="380"
+ height="420"
  label="Land &amp; L$"
  layout="topleft"
  left="0"
@@ -237,7 +237,7 @@
     </text>
     <tab_container
      follows="all"
-     height="173"
+     height="180"
      halign="center"
      layout="topleft"
      left="0"
@@ -250,7 +250,7 @@
         <panel
          border="false"
          follows="all"
-         height="173"
+         height="180"
          label="PLANNING"
          layout="topleft"
          left="0"
@@ -275,7 +275,7 @@
       <panel
          border="false"
          follows="all"
-         height="173"
+         height="180"
          label="DETAILS"
          layout="topleft"
          left="0"
@@ -296,41 +296,44 @@
              word_wrap="true">
                 Loading...
             </text_editor>
+
+          <button
+             height="20"
+             image_overlay="Arrow_Left_Off"
+             layout="topleft"
+             left="5"
+             name="earlier_details_button"
+             tool_tip="Go back in time"
+             top_pad="10"
+             width="25" />
             <button
-	     follows="left|top"
-	     height="18"
-	     image_overlay="Arrow_Left_Off"
-	     layout="topleft"
-	     name="earlier_details_button"
-	     tool_tip="Back"
-             right="-45"
-             bottom="0"
-	     width="25" />
-             <button
-	     follows="left|top"
-	     height="18"
-	     image_overlay="Arrow_Right_Off"
-	     layout="topleft"
-	     left_pad="10"
-       name="later_details_button"
-	     tool_tip="Next"
-	     width="25" />
-        </panel>
+             height="20"
+             image_overlay="Arrow_Right_Off"
+             layout="topleft"
+             left_pad="5"
+             name="later_details_button"
+             tool_tip="Go forward in time"
+             top_delta="0"
+             width="25" />  
+
+
+      </panel>
       <panel
          border="false"
          follows="all"
-         height="173"
+         height="180"
          label="SALES"
          layout="topleft"
          left_delta="0"
          help_topic="group_money_sales_tab"
+         mouse_opaque="false"
          name="group_money_sales_tab"
          top="0"
          width="300">
             <text_editor
              type="string"
              follows="all"
-             height="140"
+             height="130"
              layout="topleft"
              left="0"
              max_length="4096"
@@ -340,25 +343,24 @@
              word_wrap="true">
                 Loading...
             </text_editor>
-                         <button
-             bottom="0"
-	     follows="left|top"
-	     height="18"
-	     image_overlay="Arrow_Left_Off"
-	     layout="topleft"
-	     name="earlier_sales_button"
-	     tool_tip="Back"
-         right="-45"
-	     width="25" />
-             <button
-	     follows="left|top"
-	     height="18"
-	     image_overlay="Arrow_Right_Off"
-	     layout="topleft"
-	     left_pad="10"
-         name="later_sales_button"
-	     tool_tip="Next"
-	     width="25" />
+            <button
+             height="20"
+             image_overlay="Arrow_Left_Off"
+             layout="topleft"
+             left="5"
+             name="earlier_sales_button"
+             tool_tip="Go back in time"
+             top_pad="10"
+             width="25" />
+            <button
+             height="20"
+             image_overlay="Arrow_Right_Off"
+             layout="topleft"
+             left_pad="5"
+             name="later_sales_button"
+             tool_tip="Go forward in time"
+             top_delta="0"
+             width="25" />
         </panel>
     </tab_container>
 </panel>
-- 
GitLab


From 307d94a92aa2111b05b7ab327685d1b2d79b68f3 Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Mon, 25 Jan 2010 17:20:09 +0200
Subject: [PATCH 083/521] implemented EXT-4131 [BSI] "Only friends and groups
 can call or IM me" NEEDS auto-response

added a modal warning window
"Non-friends won't know that you've choosen to ignore their calls and instant messages."

--HG--
branch : product-engine
---
 indra/newview/llfloaterpreference.cpp                |  9 +++++++++
 indra/newview/llfloaterpreference.h                  |  3 +++
 indra/newview/skins/default/xui/en/notifications.xml | 10 ++++++++++
 3 files changed, 22 insertions(+)

diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index fc036cb3548..27d0ccff4b0 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -1435,6 +1435,7 @@ BOOL LLPanelPreference::postBuild()
 		media_enabled_ctrl->set(enabled);
 		media_enabled_ctrl->setTentative(!(video_enabled == music_enabled == media_enabled));
 		getChild<LLCheckBoxCtrl>("autoplay_enabled")->setEnabled(enabled);
+		getChild<LLCheckBoxCtrl>("voice_call_friends_only_check")->setCommitCallback(showFriendsOnlyWarning);
 	}
 	
 	apply();
@@ -1485,6 +1486,14 @@ void LLPanelPreference::saveSettings()
 	}	
 }
 
+void LLPanelPreference::showFriendsOnlyWarning(LLUICtrl* checkbox, const LLSD& value)
+{
+	if (checkbox && checkbox->getValue())
+	{
+		LLNotificationsUtil::add("FriendsAndGroupsOnly");
+	}
+}
+
 void LLPanelPreference::cancel()
 {
 	for (control_values_map_t::iterator iter =  mSavedValues.begin();
diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h
index 6f382620ee0..8b02a4049d1 100644
--- a/indra/newview/llfloaterpreference.h
+++ b/indra/newview/llfloaterpreference.h
@@ -166,6 +166,9 @@ class LLPanelPreference : public LLPanel
 	virtual void saveSettings();
 	
 private:
+	//for "Only friends and groups can call or IM me"
+	static void showFriendsOnlyWarning(LLUICtrl*, const LLSD&);
+
 	typedef std::map<LLControlVariable*, LLSD> control_values_map_t;
 	control_values_map_t mSavedValues;
 
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 960da7a2746..41f4621d665 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -242,6 +242,16 @@ Save all changes to clothing/body parts?
      yestext="Save All"/>
   </notification>
 
+  <notification
+   icon="alertmodal.tga"
+   name="FriendsAndGroupsOnly"
+   type="alertmodal">
+    Non-friends won't know that you've choosen to ignore their calls and instant messages.
+    <usetemplate
+     name="okbutton"
+     yestext="Yes"/>
+  </notification>
+
   <notification
    icon="alertmodal.tga"
    name="GrantModifyRights"
-- 
GitLab


From d3d7dd6a6215a7ae50979a5a303ef9c109937822 Mon Sep 17 00:00:00 2001
From: Sergei Litovchuk <slitovchuk@productengine.com>
Date: Mon, 25 Jan 2010 17:28:39 +0200
Subject: [PATCH 084/521] (EXT-2249) Place profile data blinks several times
 while updating after teleport - Reduced place info unnecessary text and icons
 updates.

--HG--
branch : product-engine
---
 indra/newview/llpanelplaces.cpp | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp
index a4f0e55a932..a8a9717750b 100644
--- a/indra/newview/llpanelplaces.cpp
+++ b/indra/newview/llpanelplaces.cpp
@@ -384,6 +384,10 @@ void LLPanelPlaces::onOpen(const LLSD& key)
 	// Otherwise stop using land selection and deselect land.
 	if (mPlaceInfoType == AGENT_INFO_TYPE)
 	{
+		// We don't know if we are already added to LLViewerParcelMgr observers list
+		// so try to remove observer not to add an extra one.
+		parcel_mgr->removeObserver(mParcelObserver);
+
 		parcel_mgr->addObserver(mParcelObserver);
 		parcel_mgr->selectParcelAt(gAgent.getPositionGlobal());
 	}
@@ -898,6 +902,8 @@ void LLPanelPlaces::changedParcelSelection()
 	if (!region || !parcel)
 		return;
 
+	LLVector3d prev_pos_global = mPosGlobal;
+
 	// If agent is inside the selected parcel show agent's region<X, Y, Z>,
 	// otherwise show region<X, Y, Z> of agent's selection point.
 	bool is_current_parcel = is_agent_in_selected_parcel(parcel);
@@ -914,7 +920,13 @@ void LLPanelPlaces::changedParcelSelection()
 		}
 	}
 
-	mPlaceProfile->resetLocation();
+	// Reset location info only if global position is changed
+	// to reduce unnecessary text and icons updates.
+	if (prev_pos_global != mPosGlobal)
+	{
+		mPlaceProfile->resetLocation();
+	}
+
 	mPlaceProfile->displaySelectedParcelInfo(parcel, region, mPosGlobal, is_current_parcel);
 
 	updateVerbs();
-- 
GitLab


From c4cb6628b995fb785848493e263e607263ae68fd Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Mon, 25 Jan 2010 17:50:19 +0200
Subject: [PATCH 085/521] fixed linux build

--HG--
branch : product-engine
---
 indra/newview/llfloaterpreference.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index 27d0ccff4b0..60c15c253d7 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -1435,7 +1435,7 @@ BOOL LLPanelPreference::postBuild()
 		media_enabled_ctrl->set(enabled);
 		media_enabled_ctrl->setTentative(!(video_enabled == music_enabled == media_enabled));
 		getChild<LLCheckBoxCtrl>("autoplay_enabled")->setEnabled(enabled);
-		getChild<LLCheckBoxCtrl>("voice_call_friends_only_check")->setCommitCallback(showFriendsOnlyWarning);
+		getChild<LLCheckBoxCtrl>("voice_call_friends_only_check")->setCommitCallback(boost::bind(&showFriendsOnlyWarning, _1, _2));
 	}
 	
 	apply();
-- 
GitLab


From 2ea3fd95635073e68aa7626ea24c540717190127 Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Mon, 25 Jan 2010 17:06:35 +0200
Subject: [PATCH 086/521] Fixed normal bug EXT-4108 ([BSI] Voice volume sliders
 do not preserve settings per resident between voice sessions) - moved
 necessary functionality from LLMuteList to LLVoiceClient. It was used only in
 active speackers floater which is deprecated. - initialized saving/loading of
 voice level in voice client. - also saving voice levels between session is
 activated.

--HG--
branch : product-engine
---
 indra/newview/llmutelist.cpp    |  72 +------------------
 indra/newview/llmutelist.h      |   9 ---
 indra/newview/llspeakers.cpp    |   2 -
 indra/newview/llvoiceclient.cpp | 122 +++++++++++++++++++++++++++++++-
 4 files changed, 122 insertions(+), 83 deletions(-)

diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp
index 7ee4c64f8fb..8e9fa97faf8 100644
--- a/indra/newview/llmutelist.cpp
+++ b/indra/newview/llmutelist.cpp
@@ -52,12 +52,8 @@
 
 #include <boost/tokenizer.hpp>
 
-#include "llcrc.h"
-#include "lldir.h"
 #include "lldispatcher.h"
-#include "llsdserialize.h"
 #include "llxfermanager.h"
-#include "message.h"
 
 #include "llagent.h"
 #include "llviewergenericmessage.h"	// for gGenericDispatcher
@@ -219,61 +215,17 @@ LLMuteList* LLMuteList::getInstance()
 // LLMuteList()
 //-----------------------------------------------------------------------------
 LLMuteList::LLMuteList() :
-	mIsLoaded(FALSE),
-	mUserVolumesLoaded(FALSE)
+	mIsLoaded(FALSE)
 {
 	gGenericDispatcher.addHandler("emptymutelist", &sDispatchEmptyMuteList);
 }
 
-void LLMuteList::loadUserVolumes()
-{
-	// call once, after LLDir::setLindenUserDir() has been called
-	if (mUserVolumesLoaded)
-		return;
-	mUserVolumesLoaded = TRUE;
-	
-	// load per-resident voice volume information
-	// conceptually, this is part of the mute list information, although it is only stored locally
-	std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "volume_settings.xml");
-
-	LLSD settings_llsd;
-	llifstream file;
-	file.open(filename);
-	if (file.is_open())
-	{
-		LLSDSerialize::fromXML(settings_llsd, file);
-	}
-
-	for (LLSD::map_const_iterator iter = settings_llsd.beginMap();
-		 iter != settings_llsd.endMap(); ++iter)
-	{
-		mUserVolumeSettings.insert(std::make_pair(LLUUID(iter->first), (F32)iter->second.asReal()));
-	}
-}
-
 //-----------------------------------------------------------------------------
 // ~LLMuteList()
 //-----------------------------------------------------------------------------
 LLMuteList::~LLMuteList()
 {
-	// If we quit from the login screen we will not have an SL account
-	// name.  Don't try to save, otherwise we'll dump a file in
-	// C:\Program Files\SecondLife\ or similar. JC
-	std::string user_dir = gDirUtilp->getLindenUserDir();
-	if (!user_dir.empty())
-	{
-		std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "volume_settings.xml");
-		LLSD settings_llsd;
-
-		for(user_volume_map_t::iterator iter = mUserVolumeSettings.begin(); iter != mUserVolumeSettings.end(); ++iter)
-		{
-			settings_llsd[iter->first.asString()] = iter->second;
-		}
 
-		llofstream file;
-		file.open(filename);
-		LLSDSerialize::toPrettyXML(settings_llsd, file);
-	}
 }
 
 BOOL LLMuteList::isLinden(const std::string& name) const
@@ -715,8 +667,6 @@ BOOL LLMuteList::isMuted(const LLUUID& id, const std::string& name, U32 flags) c
 //-----------------------------------------------------------------------------
 void LLMuteList::requestFromServer(const LLUUID& agent_id)
 {
-	loadUserVolumes();
-	
 	std::string agent_id_string;
 	std::string filename;
 	agent_id.toString(agent_id_string);
@@ -751,26 +701,6 @@ void LLMuteList::cache(const LLUUID& agent_id)
 	}
 }
 
-void LLMuteList::setSavedResidentVolume(const LLUUID& id, F32 volume)
-{
-	// store new value in volume settings file
-	mUserVolumeSettings[id] = volume;
-}
-
-F32 LLMuteList::getSavedResidentVolume(const LLUUID& id)
-{
-	const F32 DEFAULT_VOLUME = 0.5f;
-
-	user_volume_map_t::iterator found_it = mUserVolumeSettings.find(id);
-	if (found_it != mUserVolumeSettings.end())
-	{
-		return found_it->second;
-	}
-	//FIXME: assumes default, should get this from somewhere
-	return DEFAULT_VOLUME;
-}
-
-
 //-----------------------------------------------------------------------------
 // Static message handlers
 //-----------------------------------------------------------------------------
diff --git a/indra/newview/llmutelist.h b/indra/newview/llmutelist.h
index 409b637bf2d..e1e81a24b4c 100644
--- a/indra/newview/llmutelist.h
+++ b/indra/newview/llmutelist.h
@@ -127,12 +127,7 @@ class LLMuteList : public LLSingleton<LLMuteList>
 	// call this method on logout to save everything.
 	void cache(const LLUUID& agent_id);
 
-	void setSavedResidentVolume(const LLUUID& id, F32 volume);
-	F32 getSavedResidentVolume(const LLUUID& id);
-
 private:
-	void loadUserVolumes();
-	
 	BOOL loadFromFile(const std::string& filename);
 	BOOL saveToFile(const std::string& filename);
 
@@ -179,12 +174,8 @@ class LLMuteList : public LLSingleton<LLMuteList>
 	observer_set_t mObservers;
 
 	BOOL mIsLoaded;
-	BOOL mUserVolumesLoaded;
 
 	friend class LLDispatchEmptyMuteList;
-
-	typedef std::map<LLUUID, F32> user_volume_map_t; 
-	user_volume_map_t mUserVolumeSettings;
 };
 
 class LLMuteListObserver
diff --git a/indra/newview/llspeakers.cpp b/indra/newview/llspeakers.cpp
index 9608cd12637..6f9a1ccdbe0 100644
--- a/indra/newview/llspeakers.cpp
+++ b/indra/newview/llspeakers.cpp
@@ -70,8 +70,6 @@ LLSpeaker::LLSpeaker(const LLUUID& id, const std::string& name, const ESpeakerTy
 	{
 		mDisplayName = name;
 	}
-
-	gVoiceClient->setUserVolume(id, LLMuteList::getInstance()->getSavedResidentVolume(id));
 }
 
 
diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index e52d6a089bd..68b271d6cbb 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -37,8 +37,10 @@
 
 // library includes
 #include "llnotificationsutil.h"
+#include "llsdserialize.h"
 #include "llsdutil.h"
 
+
 // project includes
 #include "llvoavatar.h"
 #include "llbufferstream.h"
@@ -1092,6 +1094,119 @@ static void killGateway()
 
 #endif
 
+class LLSpeakerVolumeStorage : public LLSingleton<LLSpeakerVolumeStorage>
+{
+	LOG_CLASS(LLSpeakerVolumeStorage);
+public:
+
+	/**
+	 * Sets internal voluem level for specified user.
+	 *
+	 * @param[in] speaker_id - LLUUID of user to store volume level for
+	 * @param[in] volume - internal volume level to be stored for user.
+	 */
+	void storeSpeakerVolume(const LLUUID& speaker_id, S32 volume);
+
+	/**
+	 * Gets stored internal volume level for specified speaker.
+	 *
+	 * If specified user is not found default level will be returned. It is equivalent of 
+	 * external level 0.5 from the 0.0..1.0 range.
+	 * Default internal level is calculated as: internal = 400 * external^2
+	 * Maps 0.0 to 1.0 to internal values 0-400 with default 0.5 == 100
+	 *
+	 * @param[in] speaker_id - LLUUID of user to get his volume level
+	 */
+	S32 getSpeakerVolume(const LLUUID& speaker_id);
+
+private:
+	friend class LLSingleton<LLSpeakerVolumeStorage>;
+	LLSpeakerVolumeStorage();
+	~LLSpeakerVolumeStorage();
+
+	const static std::string SETTINGS_FILE_NAME;
+
+	void load();
+	void save();
+
+	typedef std::map<LLUUID, S32> speaker_data_map_t;
+	speaker_data_map_t mSpeakersData;
+};
+
+const std::string LLSpeakerVolumeStorage::SETTINGS_FILE_NAME = "volume_settings.xml";
+
+LLSpeakerVolumeStorage::LLSpeakerVolumeStorage()
+{
+	load();
+}
+
+LLSpeakerVolumeStorage::~LLSpeakerVolumeStorage()
+{
+	save();
+}
+
+void LLSpeakerVolumeStorage::storeSpeakerVolume(const LLUUID& speaker_id, S32 volume)
+{
+	mSpeakersData[speaker_id] = volume;
+}
+
+S32 LLSpeakerVolumeStorage::getSpeakerVolume(const LLUUID& speaker_id)
+{
+	// default internal level of user voice.
+	static const S32 DEFAULT_INTERNAL_VOLUME_LEVEL = 100;
+	S32 ret_val = DEFAULT_INTERNAL_VOLUME_LEVEL;
+	speaker_data_map_t::const_iterator it = mSpeakersData.find(speaker_id);
+	
+	if (it != mSpeakersData.end())
+	{
+		ret_val = it->second;
+	}
+	return ret_val;
+}
+
+void LLSpeakerVolumeStorage::load()
+{
+	// load per-resident voice volume information
+	std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, SETTINGS_FILE_NAME);
+
+	LLSD settings_llsd;
+	llifstream file;
+	file.open(filename);
+	if (file.is_open())
+	{
+		LLSDSerialize::fromXML(settings_llsd, file);
+	}
+
+	for (LLSD::map_const_iterator iter = settings_llsd.beginMap();
+		iter != settings_llsd.endMap(); ++iter)
+	{
+		mSpeakersData.insert(std::make_pair(LLUUID(iter->first), (S32)iter->second.asInteger()));
+	}
+}
+
+void LLSpeakerVolumeStorage::save()
+{
+	// If we quit from the login screen we will not have an SL account
+	// name.  Don't try to save, otherwise we'll dump a file in
+	// C:\Program Files\SecondLife\ or similar. JC
+	std::string user_dir = gDirUtilp->getLindenUserDir();
+	if (!user_dir.empty())
+	{
+		std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, SETTINGS_FILE_NAME);
+		LLSD settings_llsd;
+
+		for(speaker_data_map_t::const_iterator iter = mSpeakersData.begin(); iter != mSpeakersData.end(); ++iter)
+		{
+			settings_llsd[iter->first.asString()] = iter->second;
+		}
+
+		llofstream file;
+		file.open(filename);
+		LLSDSerialize::toPrettyXML(settings_llsd, file);
+	}
+}
+
+
 ///////////////////////////////////////////////////////////////////////////////////////////////
 
 LLVoiceClient::LLVoiceClient() :
@@ -4914,7 +5029,9 @@ LLVoiceClient::participantState *LLVoiceClient::sessionState::addParticipant(con
 		}
 		
 		mParticipantsByUUID.insert(participantUUIDMap::value_type(&(result->mAvatarID), result));
-		
+
+		result->mUserVolume = LLSpeakerVolumeStorage::getInstance()->getSpeakerVolume(result->mAvatarID);
+
 		LL_DEBUGS("Voice") << "participant \"" << result->mURI << "\" added." << LL_ENDL;
 	}
 	
@@ -6163,6 +6280,9 @@ void LLVoiceClient::setUserVolume(const LLUUID& id, F32 volume)
 			participant->mUserVolume = llclamp(ivol, 0, 400);
 			participant->mVolumeDirty = TRUE;
 			mAudioSession->mVolumeDirty = TRUE;
+
+			// store this volume setting for future sessions
+			LLSpeakerVolumeStorage::getInstance()->storeSpeakerVolume(id, participant->mUserVolume);
 		}
 	}
 }
-- 
GitLab


From 6e932911d5b0a02b44caf3bf81a9c00fd0e1dc89 Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Mon, 25 Jan 2010 17:29:57 +0200
Subject: [PATCH 087/521] Related to normal bug EXT-4108 ([BSI] Voice volume
 sliders do not preserve settings per resident between voice sessions) - moved
 default internal voice level value into application settings - cleanned up
 include list in llmutelist.cpp

--HG--
branch : product-engine
---
 indra/newview/app_settings/settings.xml | 11 +++++++++++
 indra/newview/llmutelist.cpp            |  4 ----
 indra/newview/llvoiceclient.cpp         |  2 +-
 3 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index c29a3a0035a..72d2e1aba08 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -10314,6 +10314,17 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
+    <key>VoiceDefaultInternalLevel</key>
+    <map>
+      <key>Comment</key>
+      <string>Internal level of voice set by default. Is equivalent to 0.5 (from 0.0-1.0 range) external voice level (internal = 400 * external^2).</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>S32</string>
+      <key>Value</key>
+      <integer>100</integer>
+    </map>
     <key>VoiceEarLocation</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp
index 8e9fa97faf8..c1666f56667 100644
--- a/indra/newview/llmutelist.cpp
+++ b/indra/newview/llmutelist.cpp
@@ -57,14 +57,10 @@
 
 #include "llagent.h"
 #include "llviewergenericmessage.h"	// for gGenericDispatcher
-#include "llviewerwindow.h"
 #include "llworld.h" //for particle system banning
-#include "llchat.h"
 #include "llimpanel.h"
 #include "llimview.h"
 #include "llnotifications.h"
-#include "lluistring.h"
-#include "llviewerobject.h" 
 #include "llviewerobjectlist.h"
 #include "lltrans.h"
 
diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index 68b271d6cbb..8ca0fd6ef6c 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -1153,7 +1153,7 @@ void LLSpeakerVolumeStorage::storeSpeakerVolume(const LLUUID& speaker_id, S32 vo
 S32 LLSpeakerVolumeStorage::getSpeakerVolume(const LLUUID& speaker_id)
 {
 	// default internal level of user voice.
-	static const S32 DEFAULT_INTERNAL_VOLUME_LEVEL = 100;
+	const static LLUICachedControl<S32> DEFAULT_INTERNAL_VOLUME_LEVEL("VoiceDefaultInternalLevel", 100);
 	S32 ret_val = DEFAULT_INTERNAL_VOLUME_LEVEL;
 	speaker_data_map_t::const_iterator it = mSpeakersData.find(speaker_id);
 	
-- 
GitLab


From 172208d648c32b4d501fb6d37b59a697ae777e7d Mon Sep 17 00:00:00 2001
From: Chuck Linden <chuck@lindenlab.com>
Date: Mon, 25 Jan 2010 10:57:20 -0500
Subject: [PATCH 088/521] Enabled the Mono checkbox in the script editor and
 cleaned up the layout. http://jira.secondlife.com/browse/EXT-4442

---
 .../default/xui/en/floater_live_lsleditor.xml |  45 ++++---
 .../skins/default/xui/en/panel_script_ed.xml  | 120 ++++++++----------
 2 files changed, 78 insertions(+), 87 deletions(-)

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 e94717fe324..990be558478 100644
--- a/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml
+++ b/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml
@@ -5,7 +5,7 @@
  border_style="line"
  can_resize="true"
  follows="left|top"
- height="570"
+ height="580"
  layout="topleft"
  min_height="271"
  min_width="290"
@@ -13,7 +13,7 @@
  help_topic="script_ed_float"
  save_rect="true"
  title="SCRIPT: NEW SCRIPT"
- width="500">
+ width="508">
     <floater.string
      name="not_allowed">
         You can not view or edit this script, since it has been set as &quot;no copy&quot;. You need full permissions to view or edit a script inside an object.
@@ -24,19 +24,31 @@
     </floater.string>
     <floater.string
      name="Title">
-        Script: [NAME]
+        SCRIPT: [NAME]
     </floater.string>
+    <panel
+     bevel_style="none"
+     
+     border_style="line"
+     follows="left|top|right|bottom"
+     height="522"
+     layout="topleft"
+     left="10"
+     name="script ed panel"
+     top="20"
+     width="497" />
     <button
-     follows="right|bottom"
-     height="20"
+     follows="left|bottom"
+     height="23"
      label="Reset"
      label_selected="Reset"
      layout="topleft"
-     left="358"
      name="Reset"
-     top="545"
-     width="128" />
+     left="10"
+     width="61" />
     <check_box
+    left_delta="71"
+    top_delta="3"
      enabled="false"
      follows="left|bottom"
      font="SansSerif"
@@ -44,30 +56,17 @@
      initial_value="true"
      label="Running"
      layout="topleft"
-     left_delta="-350"
      name="running"
-     top_delta="2"
      width="100" />
     <check_box
-     enabled="false"
+    left_delta="75"
+     enabled="true"
      follows="left|bottom"
      font="SansSerif"
      height="18"
      initial_value="true"
      label="Mono"
      layout="topleft"
-     left_delta="70"
      name="mono"
-     top_delta="0"
      width="100" />
-    <panel
-     bevel_style="none"
-     border_style="line"
-     follows="left|top|right|bottom"
-     height="506"
-     layout="topleft"
-     left="1"
-     name="script ed panel"
-     top="18"
-     width="497" />
 </floater>
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 765e2ae6231..d14355b9f42 100644
--- a/indra/newview/skins/default/xui/en/panel_script_ed.xml
+++ b/indra/newview/skins/default/xui/en/panel_script_ed.xml
@@ -2,13 +2,12 @@
 <panel
  bevel_style="none"
  border_style="line"
- bottom="550"
  follows="left|top|right|bottom"
- height="508"
+ height="522"
  layout="topleft"
  left="0"
  name="script panel"
- width="500">
+ width="497">
     <panel.string
      name="loading">
         Loading...
@@ -29,71 +28,17 @@
      name="Title">
         Script: [NAME]
     </panel.string>
-    <text_editor
-     type="string"
-     length="1"
-     bottom="393"
-     follows="left|top|right|bottom"
-     font="Monospace"
-     height="376"
-     ignore_tab="false"
-     layout="topleft"
-     left="4"
-     max_length="65536"
-     name="Script Editor"
-     width="492"
-     show_line_numbers="true" 
-     handle_edit_keys_directly="true" 
-     word_wrap="true">
-        Loading...
-    </text_editor>
-    <button
-     bottom="499"
-     follows="right|bottom"
-     height="20"
-     label="Save"
-     label_selected="Save"
-     layout="topleft"
-     left="360"
-     name="Save_btn"
-     width="128" />
-    <scroll_list
-     bottom="457"
-     follows="left|right|bottom"
-     height="60"
-     layout="topleft"
-     left="4"
-     name="lsl errors"
-     width="492" />
-    <combo_box
-     bottom="499"
-     follows="left|bottom"
-     height="20"
-     label="Insert..."
-     layout="topleft"
-     left="12"
-     name="Insert..."
-     width="128" />
-    <text
-     bottom="473"
-     follows="left|bottom"
-     height="12"
-     layout="topleft"
-     left="12"
-     name="line_col"
-     width="128" />
     <menu_bar
      bg_visible="false"
-     bottom="18"
-     follows="left|top|right"
+     follows="left|top"
      height="18"
      layout="topleft"
-     left="8"
+     left="0"
      mouse_opaque="false"
      name="script_menu"
      width="476">
         <menu
-         bottom="18"
+         top="0"
          height="62"
          label="File"
          layout="topleft"
@@ -113,11 +58,10 @@
              name="Revert All Changes" />
         </menu>
         <menu
-         bottom="-647"
+         top="0"
          height="198"
          label="Edit"
          layout="topleft"
-         left="222"
          mouse_opaque="false"
          name="Edit"
          width="139">
@@ -169,11 +113,10 @@
              name="Search / Replace..." />
         </menu>
         <menu
-         bottom="18"
+         top="0"
          height="34"
          label="Help"
          layout="topleft"
-         left="0"
          mouse_opaque="false"
          name="Help"
          width="112">
@@ -187,4 +130,53 @@
              name="Keyword Help..." />
         </menu>
     </menu_bar>
+    <text_editor
+    left="0"
+     type="string"
+     length="1"
+     follows="left|top|right|bottom"
+     font="Monospace"
+     height="376"
+     ignore_tab="false"
+     layout="topleft"
+     max_length="65536"
+     name="Script Editor"
+     width="487"
+     show_line_numbers="true" 
+     handle_edit_keys_directly="true" 
+     word_wrap="true">
+        Loading...
+    </text_editor>
+    <scroll_list
+    top_pad="10"
+    left="0"
+     follows="left|right|bottom"
+     height="60"
+     layout="topleft"
+     name="lsl errors"
+     width="487" />
+    <text
+     follows="left|bottom"
+     height="12"
+     layout="topleft"
+     left="0"
+     name="line_col"
+     width="128" />
+    <combo_box
+     follows="left|bottom"
+     height="23"
+     label="Insert..."
+     layout="topleft"
+     name="Insert..."
+     width="128" />
+    <button
+     follows="right|bottom"
+     height="23"
+     label="Save"
+     label_selected="Save"
+     layout="topleft"
+     top_pad="-35"
+     right="487"
+     name="Save_btn"
+     width="61" />
 </panel>
-- 
GitLab


From e3e4a301ab00d62d7ecf5d5ce2f4d217bc6c79e0 Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Mon, 25 Jan 2010 18:06:01 +0200
Subject: [PATCH 089/521] implemented EXT-4567 [BSI] private voice floaters do
 not contain standard X buttons

--HG--
branch : product-engine
---
 indra/newview/llimview.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index c2a7969c0d0..32b0cbff389 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -1680,6 +1680,7 @@ void LLOutgoingCallDialog::show(const LLSD& key)
 	case LLVoiceChannel::STATE_ERROR :
 		getChild<LLTextBox>("noanswer")->setVisible(true);
 		getChild<LLButton>("Cancel")->setVisible(false);
+		setCanClose(true);
 		mLifetimeTimer.start();
 		break;
 	case LLVoiceChannel::STATE_HUNG_UP :
@@ -1692,6 +1693,7 @@ void LLOutgoingCallDialog::show(const LLSD& key)
 			getChild<LLTextBox>("nearby")->setVisible(true);
 		}
 		getChild<LLButton>("Cancel")->setVisible(false);
+		setCanClose(true);
 		mLifetimeTimer.start();
 	}
 
-- 
GitLab


From 254b7d72d17c279aa906ee235f08ff1fa9e2b9cf Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Mon, 25 Jan 2010 18:43:31 +0200
Subject: [PATCH 090/521] fixed EXT-4601 [BSI] New IM sessions use obsolete
 timestamps for first message

--HG--
branch : product-engine
---
 indra/newview/llchathistory.cpp | 5 +++--
 indra/newview/llchathistory.h   | 2 ++
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index a46cd84b608..d6a7edee5b4 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -550,8 +550,8 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_
 		if (mLastFromName == chat.mFromName 
 			&& mLastFromID == chat.mFromID
 			&& mLastMessageTime.notNull() 
-			&& (new_message_time.secondsSinceEpoch() - mLastMessageTime.secondsSinceEpoch()) < 60.0 
-			)
+			&& (new_message_time.secondsSinceEpoch() - mLastMessageTime.secondsSinceEpoch()) < 60.0
+			&& mLastMessageTimeStr.size() == chat.mTimeStr.size())  //*HACK to distinguish between current and previous chat session's histories
 		{
 			view = getSeparator();
 			p.top_pad = mTopSeparatorPad;
@@ -585,6 +585,7 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_
 		mLastFromName = chat.mFromName;
 		mLastFromID = chat.mFromID;
 		mLastMessageTime = new_message_time;
+		mLastMessageTimeStr = chat.mTimeStr;
 	}
 
 	std::string message = irc_me ? chat.mText.substr(3) : chat.mText;
diff --git a/indra/newview/llchathistory.h b/indra/newview/llchathistory.h
index f2d403f6393..c2c60e60cf9 100644
--- a/indra/newview/llchathistory.h
+++ b/indra/newview/llchathistory.h
@@ -125,6 +125,8 @@ class LLChatHistory : public LLUICtrl
 		std::string mLastFromName;
 		LLUUID mLastFromID;
 		LLDate mLastMessageTime;
+		std::string mLastMessageTimeStr;
+
 		std::string mMessageHeaderFilename;
 		std::string mMessageSeparatorFilename;
 
-- 
GitLab


From af83fe79d8d074d3056e6dff86dcf14d8e71c885 Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Mon, 25 Jan 2010 10:04:56 -0800
Subject: [PATCH 091/521] "Fix" confusion over media settings Review #89

This implements the changes Sam wanted in order to reduce the confusion over media enabled-ness, in particular:
- "Media Enabled" pref now only controls "AudioStreamingMedia"
- No more "tentative" state
- New "Music Enabled" pref
- First run dialog controls Media and Music (Sam, this is a change from your request...I think it works better)
- Put a reflection of the "Media Enabled" checkbox in the Nearby Media Floater
- Get rid of the "AudioStreamingVideo" setting altogether (whatever used it, it should now obey "AudioStreamingMedia").
---
 indra/newview/app_settings/settings.xml       | 11 -------
 indra/newview/llfloaterpreference.cpp         | 29 ++++++++++---------
 indra/newview/llfloaterpreference.h           |  1 +
 indra/newview/llviewermedia.cpp               |  2 --
 indra/newview/llviewerparcelmedia.cpp         |  2 +-
 indra/newview/llviewertexture.cpp             |  1 -
 .../xui/en/panel_preferences_privacy.xml      | 20 ++++++++++---
 .../xui/en/panel_preferences_setup.xml        |  2 +-
 8 files changed, 34 insertions(+), 34 deletions(-)

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index c29a3a0035a..e607c3ad15c 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -298,17 +298,6 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
-    <key>AudioStreamingVideo</key>
-    <map>
-      <key>Comment</key>
-      <string>Enable streaming video</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>1</integer>
-    </map>
   <key>AuditTexture</key>
   <map>
     <key>Comment</key>
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index fc036cb3548..eeda3f133cd 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -327,6 +327,7 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key)
 	mCommitCallbackRegistrar.add("Pref.AutoDetectAspect",       boost::bind(&LLFloaterPreference::onCommitAutoDetectAspect, this));	
 	mCommitCallbackRegistrar.add("Pref.ParcelMediaAutoPlayEnable",       boost::bind(&LLFloaterPreference::onCommitParcelMediaAutoPlayEnable, this));	
 	mCommitCallbackRegistrar.add("Pref.MediaEnabled",           boost::bind(&LLFloaterPreference::onCommitMediaEnabled, this));	
+	mCommitCallbackRegistrar.add("Pref.MusicEnabled",           boost::bind(&LLFloaterPreference::onCommitMusicEnabled, this));	
 	mCommitCallbackRegistrar.add("Pref.onSelectAspectRatio",    boost::bind(&LLFloaterPreference::onKeystrokeAspectRatio, this));	
 	mCommitCallbackRegistrar.add("Pref.QualityPerformance",     boost::bind(&LLFloaterPreference::onChangeQuality, this, _2));	
 	mCommitCallbackRegistrar.add("Pref.applyUIColor",			boost::bind(&LLFloaterPreference::applyUIColor, this ,_1, _2));
@@ -1001,12 +1002,14 @@ void LLFloaterPreference::onCommitMediaEnabled()
 {
 	LLCheckBoxCtrl *media_enabled_ctrl = getChild<LLCheckBoxCtrl>("media_enabled");
 	bool enabled = media_enabled_ctrl->get();
-	gSavedSettings.setBOOL("AudioStreamingVideo", enabled);
-	gSavedSettings.setBOOL("AudioStreamingMusic", enabled);
 	gSavedSettings.setBOOL("AudioStreamingMedia", enabled);
-	media_enabled_ctrl->setTentative(false);
-	// Update enabled state of the "autoplay" checkbox
-	getChild<LLCheckBoxCtrl>("autoplay_enabled")->setEnabled(enabled);
+}
+
+void LLFloaterPreference::onCommitMusicEnabled()
+{
+	LLCheckBoxCtrl *music_enabled_ctrl = getChild<LLCheckBoxCtrl>("music_enabled");
+	bool enabled = music_enabled_ctrl->get();
+	gSavedSettings.setBOOL("AudioStreamingMusic", enabled);
 }
 
 void LLFloaterPreference::refresh()
@@ -1424,17 +1427,15 @@ BOOL LLPanelPreference::postBuild()
 	}
 	
 	//////////////////////PanelPrivacy ///////////////////
-	if(hasChild("media_enabled"))
+	if (hasChild("media_enabled"))
 	{
-		bool video_enabled = gSavedSettings.getBOOL("AudioStreamingVideo");
-		bool music_enabled = gSavedSettings.getBOOL("AudioStreamingMusic");
 		bool media_enabled = gSavedSettings.getBOOL("AudioStreamingMedia");
-		bool enabled = video_enabled || music_enabled || media_enabled;
-		
-		LLCheckBoxCtrl *media_enabled_ctrl = getChild<LLCheckBoxCtrl>("media_enabled");	
-		media_enabled_ctrl->set(enabled);
-		media_enabled_ctrl->setTentative(!(video_enabled == music_enabled == media_enabled));
-		getChild<LLCheckBoxCtrl>("autoplay_enabled")->setEnabled(enabled);
+		getChild<LLCheckBoxCtrl>("media_enabled")->set(media_enabled);
+		getChild<LLCheckBoxCtrl>("autoplay_enabled")->setEnabled(media_enabled);
+	}
+	if (hasChild("music_enabled"))
+	{
+		getChild<LLCheckBoxCtrl>("music_enabled")->set(gSavedSettings.getBOOL("AudioStreamingMusic"));
 	}
 	
 	apply();
diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h
index 6f382620ee0..4ec2d277a8b 100644
--- a/indra/newview/llfloaterpreference.h
+++ b/indra/newview/llfloaterpreference.h
@@ -134,6 +134,7 @@ class LLFloaterPreference : public LLFloater
 	void onCommitAutoDetectAspect();
 	void onCommitParcelMediaAutoPlayEnable();
 	void onCommitMediaEnabled();
+	void onCommitMusicEnabled();
 	void applyResolution();
 	void applyUIColor(LLUICtrl* ctrl, const LLSD& param);
 	void getUIColor(LLUICtrl* ctrl, const LLSD& param);	
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index d712446d836..98d8780b343 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -940,7 +940,6 @@ bool LLViewerMedia::firstRunCallback(const LLSD& notification, const LLSD& respo
 	{
 		// user has elected to automatically play media.
 		gSavedSettings.setBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING, TRUE);
-		gSavedSettings.setBOOL("AudioStreamingVideo", TRUE);
 		gSavedSettings.setBOOL("AudioStreamingMusic", TRUE);
 		gSavedSettings.setBOOL("AudioStreamingMedia", TRUE);
 
@@ -961,7 +960,6 @@ bool LLViewerMedia::firstRunCallback(const LLSD& notification, const LLSD& respo
 	{
 		gSavedSettings.setBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING, FALSE);
 		gSavedSettings.setBOOL("AudioStreamingMedia", FALSE);
-		gSavedSettings.setBOOL("AudioStreamingVideo", FALSE);
 		gSavedSettings.setBOOL("AudioStreamingMusic", FALSE);
 	}
 	return false;
diff --git a/indra/newview/llviewerparcelmedia.cpp b/indra/newview/llviewerparcelmedia.cpp
index e87dbe5c07f..c4fc2e5cabf 100644
--- a/indra/newview/llviewerparcelmedia.cpp
+++ b/indra/newview/llviewerparcelmedia.cpp
@@ -179,7 +179,7 @@ void LLViewerParcelMedia::play(LLParcel* parcel)
 
 	if (!parcel) return;
 
-	if (!gSavedSettings.getBOOL("AudioStreamingMedia") || !gSavedSettings.getBOOL("AudioStreamingVideo"))
+	if (!gSavedSettings.getBOOL("AudioStreamingMedia"))
 		return;
 
 	std::string media_url = parcel->getMediaURL();
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index 3f42cba5614..b80dc7d9025 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -2777,7 +2777,6 @@ void LLViewerMediaTexture::updateClass()
 #if 0
 	//force to play media.
 	gSavedSettings.setBOOL("AudioStreamingMedia", true) ;
-	gSavedSettings.setBOOL("AudioStreamingVideo", true) ;
 #endif
 
 	for(media_map_t::iterator iter = sMediaMap.begin() ; iter != sMediaMap.end(); )
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 a8e24366f27..0aaeb6114ee 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
@@ -78,19 +78,19 @@
      top_pad="10"
      width="350" />
 	<check_box
-     control_name="MediaEnabled"
+     name="media_enabled"
+     control_name="AudioStreamingMedia"
      height="16"
      label="Media Enabled"
      layout="topleft"
      left="30"
-     name="media_enabled"
      top_pad="10"
      width="350">
        <check_box.commit_callback
           function="Pref.MediaEnabled" />
     </check_box>
 	<check_box
-	 enabled_control="MediaEnabled"
+	 enabled_control="AudioStreamingMedia"
      control_name="ParcelMediaAutoPlayEnable"
      height="16"
      label="Allow Media to auto-play"
@@ -102,7 +102,19 @@
        <check_box.commit_callback
           function="Pref.ParcelMediaAutoPlayEnable" />
     </check_box>
-   <text
+	<check_box
+     control_name="AudioStreamingMusic"
+     height="16"
+     label="Music Enabled"
+     layout="topleft"
+     left="30"
+     name="music_enabled"
+     top_pad="10"
+     width="350">
+       <check_box.commit_callback
+          function="Pref.MusicEnabled" />
+    </check_box>
+	<text
       type="string"
     length="1"
     follows="left|top"
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 17ababe8548..8723e0a8327 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
@@ -279,7 +279,7 @@
       width="480" />
     <radio_item
       height="20"
-      label="Use my browser (IE, Firefox)"
+      label="Use my browser (IE, Firefox, Safari)"
       layout="topleft"
       left_delta="0"
       name="external"
-- 
GitLab


From 55628798e14bdb25bc3eedcd18632ae5aebfaf68 Mon Sep 17 00:00:00 2001
From: Chuck Linden <chuck@lindenlab.com>
Date: Mon, 25 Jan 2010 13:27:03 -0500
Subject: [PATCH 092/521] Standardized use of "My..." in side-panel widget
 labels. http://jira.secondlife.com/browse/EXT-4055

---
 indra/newview/skins/default/xui/en/panel_landmarks.xml | 2 +-
 indra/newview/skins/default/xui/en/panel_me.xml        | 4 ++--
 indra/newview/skins/default/xui/en/panel_people.xml    | 4 ++--
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/indra/newview/skins/default/xui/en/panel_landmarks.xml b/indra/newview/skins/default/xui/en/panel_landmarks.xml
index 039e1ae0864..91d4cd6e833 100644
--- a/indra/newview/skins/default/xui/en/panel_landmarks.xml
+++ b/indra/newview/skins/default/xui/en/panel_landmarks.xml
@@ -38,7 +38,7 @@
         <accordion_tab
          layout="topleft"
          name="tab_landmarks"
-         title="Landmarks">
+         title="My Landmarks">
             <places_inventory_panel
              allow_multi_select="true"
              border="false"
diff --git a/indra/newview/skins/default/xui/en/panel_me.xml b/indra/newview/skins/default/xui/en/panel_me.xml
index e779e374192..2814fb071b5 100644
--- a/indra/newview/skins/default/xui/en/panel_me.xml
+++ b/indra/newview/skins/default/xui/en/panel_me.xml
@@ -39,13 +39,13 @@
       <panel
          class="panel_my_profile"
          filename="panel_my_profile.xml"
-         label="PROFILE"
+         label="MY PROFILE"
          help_topic="panel_my_profile_tab"
          name="panel_profile" />
       <panel
          class="panel_picks"
          filename="panel_picks.xml"
-         label="PICKS"
+         label="MY PICKS"
          help_topic="panel_my_picks_tab"
          name="panel_picks" />
     </tab_container>
diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml
index da3a2274c95..69643c243be 100644
--- a/indra/newview/skins/default/xui/en/panel_people.xml
+++ b/indra/newview/skins/default/xui/en/panel_people.xml
@@ -116,7 +116,7 @@ background_visible="true"
         <panel
          follows="all"
          height="500"
-         label="FRIENDS"
+         label="MY FRIENDS"
          layout="topleft"
          left="0"
          help_topic="people_friends_tab"
@@ -213,7 +213,7 @@ background_visible="true"
         <panel
          follows="all"
          height="500"
-         label="GROUPS"
+         label="MY GROUPS"
          layout="topleft"
          left="0"
          help_topic="people_groups_tab"
-- 
GitLab


From 9f44c4df7963b4ae06f4dd86a2078ebe704201f1 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Mon, 25 Jan 2010 10:30:57 -0800
Subject: [PATCH 093/521] Fix some Linux build breakage - can't treat the
 return of a constructor call as a ref with gcc, have to use intermediate
 variable.

---
 indra/llui/lltextbase.cpp   | 15 ++++++++++-----
 indra/llui/lltexteditor.cpp |  3 ++-
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 885a830c9fc..a6e410d3e16 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -623,7 +623,8 @@ S32 LLTextBase::insertStringNoUndo(S32 pos, const LLWString &wstr, LLTextBase::s
 	else
 	{
 		// create default editable segment to hold new text
-		default_segment = new LLNormalTextSegment( LLStyleConstSP(new LLStyle(getDefaultStyleParams())), pos, pos + insert_len, *this);
+		LLStyleConstSP sp(new LLStyle(getDefaultStyleParams()));
+		default_segment = new LLNormalTextSegment( sp, pos, pos + insert_len, *this);
 	}
 
 	// shift remaining segments to right
@@ -747,7 +748,8 @@ void LLTextBase::createDefaultSegment()
 	// ensures that there is always at least one segment
 	if (mSegments.empty())
 	{
-		LLTextSegmentPtr default_segment = new LLNormalTextSegment( LLStyleConstSP(new LLStyle(getDefaultStyleParams())), 0, getLength() + 1, *this);
+		LLStyleConstSP sp(new LLStyle(getDefaultStyleParams()));
+		LLTextSegmentPtr default_segment = new LLNormalTextSegment( sp, 0, getLength() + 1, *this);
 		mSegments.insert(default_segment);
 		default_segment->linkToDocument(this);
 	}
@@ -777,7 +779,8 @@ void LLTextBase::insertSegment(LLTextSegmentPtr segment_to_insert)
 			cur_segmentp->setEnd(segment_to_insert->getStart());
 			// advance to next segment
 			// insert remainder of old segment
-			LLTextSegmentPtr remainder_segment = new LLNormalTextSegment( cur_segmentp->getStyle(), segment_to_insert->getStart(), old_segment_end, *this);
+			LLStyleConstSP sp = cur_segmentp->getStyle();
+			LLTextSegmentPtr remainder_segment = new LLNormalTextSegment( sp, segment_to_insert->getStart(), old_segment_end, *this);
 			mSegments.insert(cur_seg_iter, remainder_segment);
 			remainder_segment->linkToDocument(this);
 			// insert new segment before remainder of old segment
@@ -1640,7 +1643,8 @@ void LLTextBase::appendAndHighlightText(const std::string &new_text, bool prepen
 				wide_text = utf8str_to_wstring(pieces[i]["text"].asString());
 			}
 			S32 cur_length = getLength();
-			LLTextSegmentPtr segmentp = new LLNormalTextSegment(LLStyleConstSP(new LLStyle(highlight_params)), cur_length, cur_length + wide_text.size(), *this);
+			LLStyleConstSP sp(new LLStyle(highlight_params));
+			LLTextSegmentPtr segmentp = new LLNormalTextSegment(sp, cur_length, cur_length + wide_text.size(), *this);
 			segment_vec_t segments;
 			segments.push_back(segmentp);
 			insertStringNoUndo(cur_length, wide_text, &segments);
@@ -1664,7 +1668,8 @@ void LLTextBase::appendAndHighlightText(const std::string &new_text, bool prepen
 		segment_vec_t segments;
 		S32 segment_start = old_length;
 		S32 segment_end = old_length + wide_text.size();
-		segments.push_back(new LLNormalTextSegment(LLStyleConstSP(new LLStyle(style_params)), segment_start, segment_end, *this ));
+		LLStyleConstSP sp(new LLStyle(style_params));
+		segments.push_back(new LLNormalTextSegment(sp, segment_start, segment_end, *this ));
 
 		insertStringNoUndo(getLength(), wide_text, &segments);
 	}
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index 93ce7a4bea5..3ea33d5f6a1 100644
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -2567,7 +2567,8 @@ void LLTextEditor::updateLinkSegments()
 				std::string new_url = wstring_to_utf8str(url_label);
 				LLStringUtil::trim(new_url);
 				new_style->setLinkHREF(new_url);
-				segment->setStyle(LLStyleConstSP(new_style));
+				LLStyleConstSP sp(new_style);
+				segment->setStyle(sp);
 			}
 		}
 	}
-- 
GitLab


From e4dc4b9a72637cf536545cfa44f3384e55c4f460 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Mon, 25 Jan 2010 11:13:44 -0800
Subject: [PATCH 094/521] gcc fix - more of the same.

---
 indra/newview/llexpandabletextbox.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llexpandabletextbox.cpp b/indra/newview/llexpandabletextbox.cpp
index 77b3a48cefe..e0a9e080fa0 100644
--- a/indra/newview/llexpandabletextbox.cpp
+++ b/indra/newview/llexpandabletextbox.cpp
@@ -185,7 +185,8 @@ void LLExpandableTextBox::LLTextBoxEx::hideExpandText()
 	if (mExpanderVisible)
 	{
 		// this will overwrite the expander segment and all text styling with a single style
-		LLNormalTextSegment* segmentp = new LLNormalTextSegment(LLStyleConstSP(new LLStyle(getDefaultStyleParams())), 0, getLength() + 1, *this);
+		LLStyleConstSP sp(new LLStyle(getDefaultStyleParams()));
+		LLNormalTextSegment* segmentp = new LLNormalTextSegment(sp, 0, getLength() + 1, *this);
 		insertSegment(segmentp);
 		
 		mExpanderVisible = false;
-- 
GitLab


From a406c7755edbe7c077e463e86b5ebdd405064a3e Mon Sep 17 00:00:00 2001
From: Eli Linden <eli@lindenlab.com>
Date: Mon, 25 Jan 2010 11:56:26 -0800
Subject: [PATCH 095/521] test commit

---
 indra/newview/skins/default/xui/en/floater_aaa.xml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml
index 0b48ba9321a..cb9f9439494 100644
--- a/indra/newview/skins/default/xui/en/floater_aaa.xml
+++ b/indra/newview/skins/default/xui/en/floater_aaa.xml
@@ -19,6 +19,7 @@
  width="320">
   <string name="nudge_parabuild">Nudge 1</string>
   <string name="test_the_vlt">This string CHANGE is extracted.</string>
+  <string name="testing_eli">Just a test.</string>
   <chat_history
    allow_html="true"
    bg_readonly_color="ChatHistoryBgColor"
-- 
GitLab


From 563daa96a873ef627ca42d24e0f6de6bb359326d Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Mon, 25 Jan 2010 12:07:25 -0800
Subject: [PATCH 096/521] pull in the linux+solaris fast-timers impl from
 snowglobe, fit it into viewer2, start moving headers around.

---
 doc/contributions.txt                         |   1 +
 .../{llfasttimer.h => llfasttimer_class.h}    | 103 +-----------------
 2 files changed, 6 insertions(+), 98 deletions(-)
 rename indra/llcommon/{llfasttimer.h => llfasttimer_class.h} (77%)

diff --git a/doc/contributions.txt b/doc/contributions.txt
index cf10ecccfbb..2e4d8032525 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -500,6 +500,7 @@ Ringo Tuxing
 	CT-231
 	CT-321
 Robin Cornelius
+	SNOW-108
 	SNOW-204
 	VWR-2488
 	VWR-9557
diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer_class.h
similarity index 77%
rename from indra/llcommon/llfasttimer.h
rename to indra/llcommon/llfasttimer_class.h
index 8af79c90fd6..93d2d0494d4 100644
--- a/indra/llcommon/llfasttimer.h
+++ b/indra/llcommon/llfasttimer_class.h
@@ -1,5 +1,5 @@
 /**
- * @file llfasttimer.h
+ * @file llfasttimer_class.h
  * @brief Declaration of a fast timer.
  *
  * $LicenseInfo:firstyear=2004&license=viewergpl$
@@ -30,108 +30,14 @@
  * $/LicenseInfo$
  */
 
-#ifndef LL_FASTTIMER_H
-#define LL_FASTTIMER_H
+#ifndef LL_FASTTIMER_CLASS_H
+#define LL_FASTTIMER_CLASS_H
 
 #include "llinstancetracker.h"
 
 #define FAST_TIMER_ON 1
 #define TIME_FAST_TIMERS 0
 
-#if LL_WINDOWS
-#define LL_INLINE __forceinline
-
-//
-// NOTE: put back in when we aren't using platform sdk anymore
-//
-// because MS has different signatures for these functions in winnt.h
-// need to rename them to avoid conflicts
-//#define _interlockedbittestandset _renamed_interlockedbittestandset
-//#define _interlockedbittestandreset _renamed_interlockedbittestandreset
-//#include <intrin.h>
-//#undef _interlockedbittestandset
-//#undef _interlockedbittestandreset
-
-//inline U32 get_cpu_clock_count_32()
-//{
-//	U64 time_stamp = __rdtsc();
-//	return (U32)(time_stamp >> 8);
-//}
-//
-//// return full timer value, *not* shifted by 8 bits
-//inline U64 get_cpu_clock_count_64()
-//{
-//	return __rdtsc();
-//}
-
-// shift off lower 8 bits for lower resolution but longer term timing
-// on 1Ghz machine, a 32-bit word will hold ~1000 seconds of timing
-inline U32 get_cpu_clock_count_32()
-{
-	U32 ret_val;
-	__asm
-	{
-        _emit   0x0f
-        _emit   0x31
-		shr eax,8
-		shl edx,24
-		or eax, edx
-		mov dword ptr [ret_val], eax
-	}
-    return ret_val;
-}
-
-// return full timer value, *not* shifted by 8 bits
-inline U64 get_cpu_clock_count_64()
-{
-	U64 ret_val;
-	__asm
-	{
-        _emit   0x0f
-        _emit   0x31
-		mov eax,eax
-		mov edx,edx
-		mov dword ptr [ret_val+4], edx
-		mov dword ptr [ret_val], eax
-	}
-    return ret_val;
-}
-#else
-#define LL_INLINE
-#endif
-
-#if (LL_LINUX || LL_SOLARIS || LL_DARWIN) && (defined(__i386__) || defined(__amd64__))
-inline U32 get_cpu_clock_count_32()
-{
-	U64 x;
-	__asm__ volatile (".byte 0x0f, 0x31": "=A"(x));
-	return (U32)x >> 8;
-}
-
-inline U32 get_cpu_clock_count_64()
-{
-	U64 x;
-	__asm__ volatile (".byte 0x0f, 0x31": "=A"(x));
-	return x >> 8;
-}
-#endif
-
-#if ( LL_DARWIN && !(defined(__i386__) || defined(__amd64__))) || (LL_SOLARIS && defined(__sparc__))
-//
-// Mac PPC (deprecated) & Solaris SPARC implementation of CPU clock
-//
-// Just use gettimeofday implementation for now
-
-inline U32 get_cpu_clock_count_32()
-{
-	return (U32)get_clock_count();
-}
-
-inline U32 get_cpu_clock_count_64()
-{
-	return get_clock_count();
-}
-#endif
 
 class LLMutex;
 
@@ -352,6 +258,7 @@ class LL_COMMON_API LLFastTimer
 	static S32				sLastFrameIndex;
 	static U64				sLastFrameTime;
 	static info_list_t*		sTimerInfos;
+	static U64 sClockResolution;
 
 	U32							mStartTime;
 	LLFastTimer::FrameState*	mFrameState;
@@ -361,4 +268,4 @@ class LL_COMMON_API LLFastTimer
 
 typedef class LLFastTimer LLFastTimer;
 
-#endif // LL_LLFASTTIMER_H
+#endif // LL_LLFASTTIMER_CLASS_H
-- 
GitLab


From ec7b204ed657f7c1becac3b410ae0bc94c03aa75 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Mon, 25 Jan 2010 12:31:50 -0800
Subject: [PATCH 097/521] shuffle shuffle of timer code.  cleanup.

---
 indra/llcommon/CMakeLists.txt        |   2 +-
 indra/llcommon/llfasttimer.h         | 169 ++++++
 indra/llcommon/llfasttimer_class.cpp | 751 +++++++++++++++++++++++++++
 indra/llcommon/llfasttimer_class.h   |  24 +-
 4 files changed, 937 insertions(+), 9 deletions(-)
 create mode 100644 indra/llcommon/llfasttimer.h
 create mode 100644 indra/llcommon/llfasttimer_class.cpp

diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt
index ac7cc2cdac7..05e45d6d8ac 100644
--- a/indra/llcommon/CMakeLists.txt
+++ b/indra/llcommon/CMakeLists.txt
@@ -50,7 +50,7 @@ set(llcommon_SOURCE_FILES
     lleventdispatcher.cpp
     lleventfilter.cpp
     llevents.cpp
-    llfasttimer.cpp
+    llfasttimer_class.cpp
     llfile.cpp
     llfindlocale.cpp
     llfixedbuffer.cpp
diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h
new file mode 100644
index 00000000000..0f3280023ca
--- /dev/null
+++ b/indra/llcommon/llfasttimer.h
@@ -0,0 +1,169 @@
+/**
+ * @file llfasttimer.h
+ * @brief Inline implementations of fast timers.
+ *
+ * $LicenseInfo:firstyear=2004&license=viewergpl$
+ *
+ * Copyright (c) 2004-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_FASTTIMER_H
+#define LL_FASTTIMER_H
+
+// pull in the actual class definition
+#include "llfasttimer_class.h"
+
+#if LL_WINDOWS
+#define LL_INLINE __forceinline
+//
+// Windows implementation of CPU clock
+//
+
+//
+// NOTE: put back in when we aren't using platform sdk anymore
+//
+// because MS has different signatures for these functions in winnt.h
+// need to rename them to avoid conflicts
+//#define _interlockedbittestandset _renamed_interlockedbittestandset
+//#define _interlockedbittestandreset _renamed_interlockedbittestandreset
+//#include <intrin.h>
+//#undef _interlockedbittestandset
+//#undef _interlockedbittestandreset
+
+//inline U32 get_cpu_clock_count_32()
+//{
+//	U64 time_stamp = __rdtsc();
+//	return (U32)(time_stamp >> 8);
+//}
+//
+//// return full timer value, *not* shifted by 8 bits
+//inline U64 get_cpu_clock_count_64()
+//{
+//	return __rdtsc();
+//}
+
+// shift off lower 8 bits for lower resolution but longer term timing
+// on 1Ghz machine, a 32-bit word will hold ~1000 seconds of timing
+inline U32 get_cpu_clock_count_32()
+{
+	U32 ret_val;
+	__asm
+	{
+        _emit   0x0f
+        _emit   0x31
+		shr eax,8
+		shl edx,24
+		or eax, edx
+		mov dword ptr [ret_val], eax
+	}
+    return ret_val;
+}
+
+// return full timer value, *not* shifted by 8 bits
+inline U64 get_cpu_clock_count_64()
+{
+	U64 ret_val;
+	__asm
+	{
+        _emit   0x0f
+        _emit   0x31
+		mov eax,eax
+		mov edx,edx
+		mov dword ptr [ret_val+4], edx
+		mov dword ptr [ret_val], eax
+	}
+    return ret_val;
+}
+#else
+#define LL_INLINE
+#endif
+
+
+#if LL_LINUX || LL_SOLARIS
+//
+// Linux and Solaris implementation of CPU clock - all architectures.
+//
+// Try to use the MONOTONIC clock if available, this is a constant time counter
+// with nanosecond resolution (but not necessarily accuracy) and attempts are made
+// to synchronize this value between cores at kernel start. It should not be affected
+// by CPU frequency. If not available use the REALTIME clock, but this may be affected by
+// NTP adjustments or other user activity affecting the system time.
+inline U64 get_cpu_clock_count_64()
+{
+	struct timespec tp;
+	
+#ifdef CLOCK_MONOTONIC // MONOTONIC supported at build-time?
+	if (-1 == clock_gettime(CLOCK_MONOTONIC,&tp)) // if MONOTONIC isn't supported at runtime, try REALTIME
+#endif
+		clock_gettime(CLOCK_REALTIME,&tp);
+
+	return (tp.tv_sec*LLFastTimer::sClockResolution)+tp.tv_nsec;        
+}
+
+inline U32 get_cpu_clock_count_32()
+{
+	return (U32)get_cpu_clock_count_64();
+}
+#endif // (LL_LINUX || LL_SOLARIS))
+
+
+#if (LL_DARWIN) && (defined(__i386__) || defined(__amd64__))
+//
+// Mac x86 implementation of CPU clock
+inline U32 get_cpu_clock_count_32()
+{
+	U64 x;
+	__asm__ volatile (".byte 0x0f, 0x31": "=A"(x));
+	return (U32)x >> 8;
+}
+
+inline U32 get_cpu_clock_count_64()
+{
+	U64 x;
+	__asm__ volatile (".byte 0x0f, 0x31": "=A"(x));
+	return x >> 8;
+}
+#endif
+
+
+#if ( LL_DARWIN && !(defined(__i386__) || defined(__amd64__)))
+//
+// Mac PPC (deprecated) implementation of CPU clock
+//
+// Just use gettimeofday implementation for now
+
+inline U32 get_cpu_clock_count_32()
+{
+	return (U32)get_clock_count();
+}
+
+inline U32 get_cpu_clock_count_64()
+{
+	return get_clock_count();
+}
+#endif
+
+#endif // LL_LLFASTTIMER_H
diff --git a/indra/llcommon/llfasttimer_class.cpp b/indra/llcommon/llfasttimer_class.cpp
new file mode 100644
index 00000000000..6dbd90f9fac
--- /dev/null
+++ b/indra/llcommon/llfasttimer_class.cpp
@@ -0,0 +1,751 @@
+/** 
+ * @file llfasttimer_class.cpp
+ * @brief Implementation of the fast timer.
+ *
+ * $LicenseInfo:firstyear=2004&license=viewergpl$
+ * 
+ * Copyright (c) 2004-2007, Linden Research, Inc.
+ * 
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlife.com/developers/opensource/gplv2
+ * 
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlife.com/developers/opensource/flossexception
+ * 
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ * 
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS."LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+#include "linden_common.h"
+
+#include "llfasttimer.h"
+
+#include "llmemory.h"
+#include "llprocessor.h"
+#include "llsingleton.h"
+#include "lltreeiterators.h"
+#include "llsdserialize.h"
+
+#include <boost/bind.hpp>
+
+#if LL_WINDOWS
+#elif LL_LINUX || LL_SOLARIS
+#include <sys/time.h>
+#include <sched.h>
+#elif LL_DARWIN
+#include <sys/time.h>
+#include "lltimer.h"	// get_clock_count()
+#else 
+#error "architecture not supported"
+#endif
+
+//////////////////////////////////////////////////////////////////////////////
+// statics
+
+S32 LLFastTimer::sCurFrameIndex = -1;
+S32 LLFastTimer::sLastFrameIndex = -1;
+U64 LLFastTimer::sLastFrameTime = get_cpu_clock_count_64();
+bool LLFastTimer::sPauseHistory = 0;
+bool LLFastTimer::sResetHistory = 0;
+LLFastTimer::CurTimerData LLFastTimer::sCurTimerData;
+BOOL LLFastTimer::sLog = FALSE;
+BOOL LLFastTimer::sMetricLog = FALSE;
+LLMutex* LLFastTimer::sLogLock = NULL;
+std::queue<LLSD> LLFastTimer::sLogQueue;
+
+#if LL_LINUX || LL_SOLARIS
+U64 LLFastTimer::sClockResolution = 1000000000; // Nanosecond resolution
+#else
+U64 LLFastTimer::sClockResolution = 1000000; // Microsecond resolution
+#endif
+
+std::vector<LLFastTimer::FrameState>* LLFastTimer::sTimerInfos = NULL;
+U64				LLFastTimer::sTimerCycles = 0;
+U32				LLFastTimer::sTimerCalls = 0;
+
+
+// FIXME: move these declarations to the relevant modules
+
+// helper functions
+typedef LLTreeDFSPostIter<LLFastTimer::NamedTimer, LLFastTimer::NamedTimer::child_const_iter> timer_tree_bottom_up_iterator_t;
+
+static timer_tree_bottom_up_iterator_t begin_timer_tree_bottom_up(LLFastTimer::NamedTimer& id) 
+{ 
+	return timer_tree_bottom_up_iterator_t(&id, 
+							boost::bind(boost::mem_fn(&LLFastTimer::NamedTimer::beginChildren), _1), 
+							boost::bind(boost::mem_fn(&LLFastTimer::NamedTimer::endChildren), _1));
+}
+
+static timer_tree_bottom_up_iterator_t end_timer_tree_bottom_up() 
+{ 
+	return timer_tree_bottom_up_iterator_t(); 
+}
+
+typedef LLTreeDFSIter<LLFastTimer::NamedTimer, LLFastTimer::NamedTimer::child_const_iter> timer_tree_dfs_iterator_t;
+
+
+static timer_tree_dfs_iterator_t begin_timer_tree(LLFastTimer::NamedTimer& id) 
+{ 
+	return timer_tree_dfs_iterator_t(&id, 
+		boost::bind(boost::mem_fn(&LLFastTimer::NamedTimer::beginChildren), _1), 
+							boost::bind(boost::mem_fn(&LLFastTimer::NamedTimer::endChildren), _1));
+}
+
+static timer_tree_dfs_iterator_t end_timer_tree() 
+{ 
+	return timer_tree_dfs_iterator_t(); 
+}
+
+
+
+// factory class that creates NamedTimers via static DeclareTimer objects
+class NamedTimerFactory : public LLSingleton<NamedTimerFactory>
+{
+public:
+	NamedTimerFactory() 
+	{}
+
+	/*virtual */ void initSingleton()
+	{
+		mTimerRoot = new LLFastTimer::NamedTimer("root");
+
+		mActiveTimerRoot = new LLFastTimer::NamedTimer("Frame");
+		mActiveTimerRoot->setCollapsed(false);
+
+		mRootFrameState = new LLFastTimer::FrameState(mActiveTimerRoot);
+		mRootFrameState->mParent = &mTimerRoot->getFrameState();
+		mActiveTimerRoot->setParent(mTimerRoot);
+
+		mAppTimer = new LLFastTimer(mRootFrameState);
+	}
+
+	~NamedTimerFactory()
+	{
+		std::for_each(mTimers.begin(), mTimers.end(), DeletePairedPointer());
+
+		delete mAppTimer;
+		delete mActiveTimerRoot; 
+		delete mTimerRoot;
+		delete mRootFrameState;
+	}
+
+	LLFastTimer::NamedTimer& createNamedTimer(const std::string& name)
+	{
+		timer_map_t::iterator found_it = mTimers.find(name);
+		if (found_it != mTimers.end())
+		{
+			return *found_it->second;
+		}
+
+		LLFastTimer::NamedTimer* timer = new LLFastTimer::NamedTimer(name);
+		timer->setParent(mTimerRoot);
+		mTimers.insert(std::make_pair(name, timer));
+
+		return *timer;
+	}
+
+	LLFastTimer::NamedTimer* getTimerByName(const std::string& name)
+	{
+		timer_map_t::iterator found_it = mTimers.find(name);
+		if (found_it != mTimers.end())
+		{
+			return found_it->second;
+		}
+		return NULL;
+	}
+
+	LLFastTimer::NamedTimer* getActiveRootTimer() { return mActiveTimerRoot; }
+	LLFastTimer::NamedTimer* getRootTimer() { return mTimerRoot; }
+	const LLFastTimer* getAppTimer() { return mAppTimer; }
+	LLFastTimer::FrameState& getRootFrameState() { return *mRootFrameState; }
+
+	typedef std::map<std::string, LLFastTimer::NamedTimer*> timer_map_t;
+	timer_map_t::iterator beginTimers() { return mTimers.begin(); }
+	timer_map_t::iterator endTimers() { return mTimers.end(); }
+	S32 timerCount() { return mTimers.size(); }
+
+private:
+	timer_map_t mTimers;
+
+	LLFastTimer::NamedTimer*		mActiveTimerRoot;
+	LLFastTimer::NamedTimer*		mTimerRoot;
+	LLFastTimer*						mAppTimer;
+	LLFastTimer::FrameState*		mRootFrameState;
+};
+
+void update_cached_pointers_if_changed()
+{
+	// detect when elements have moved and update cached pointers
+	static LLFastTimer::FrameState* sFirstTimerAddress = NULL;
+	if (&*(LLFastTimer::getFrameStateList().begin()) != sFirstTimerAddress)
+	{
+		LLFastTimer::DeclareTimer::updateCachedPointers();
+	}
+	sFirstTimerAddress = &*(LLFastTimer::getFrameStateList().begin());
+}
+
+LLFastTimer::DeclareTimer::DeclareTimer(const std::string& name, bool open )
+:	mTimer(NamedTimerFactory::instance().createNamedTimer(name))
+{
+	mTimer.setCollapsed(!open);
+	mFrameState = &mTimer.getFrameState();
+	update_cached_pointers_if_changed();
+}
+
+LLFastTimer::DeclareTimer::DeclareTimer(const std::string& name)
+:	mTimer(NamedTimerFactory::instance().createNamedTimer(name))
+{
+	mFrameState = &mTimer.getFrameState();
+	update_cached_pointers_if_changed();
+}
+
+// static
+void LLFastTimer::DeclareTimer::updateCachedPointers()
+{
+	// propagate frame state pointers to timer declarations
+	for (DeclareTimer::instance_iter it = DeclareTimer::beginInstances();
+		it != DeclareTimer::endInstances();
+		++it)
+	{
+		// update cached pointer
+		it->mFrameState = &it->mTimer.getFrameState();
+	}
+}
+
+//static
+#if LL_LINUX || LL_SOLARIS || ( LL_DARWIN && !(defined(__i386__) || defined(__amd64__)) )
+U64 LLFastTimer::countsPerSecond()
+{
+	return sClockResolution;
+}
+#else // windows or x86-mac
+U64 LLFastTimer::countsPerSecond()
+{
+	static U64 sCPUClockFrequency = U64(CProcessor().GetCPUFrequency(50));
+
+	// we drop the low-order byte in out timers, so report a lower frequency
+	return sCPUClockFrequency >> 8;
+}
+#endif
+
+LLFastTimer::FrameState::FrameState(LLFastTimer::NamedTimer* timerp)
+:	mActiveCount(0),
+	mCalls(0),
+	mSelfTimeCounter(0),
+	mParent(NULL),
+	mLastCaller(NULL),
+	mMoveUpTree(false),
+	mTimer(timerp)
+{}
+
+
+LLFastTimer::NamedTimer::NamedTimer(const std::string& name)
+:	mName(name),
+	mCollapsed(true),
+	mParent(NULL),
+	mTotalTimeCounter(0),
+	mCountAverage(0),
+	mCallAverage(0),
+	mNeedsSorting(false)
+{
+	info_list_t& frame_state_list = getFrameStateList();
+	mFrameStateIndex = frame_state_list.size();
+	getFrameStateList().push_back(FrameState(this));
+
+	mCountHistory = new U32[HISTORY_NUM];
+	memset(mCountHistory, 0, sizeof(U32) * HISTORY_NUM);
+	mCallHistory = new U32[HISTORY_NUM];
+	memset(mCallHistory, 0, sizeof(U32) * HISTORY_NUM);
+}
+
+LLFastTimer::NamedTimer::~NamedTimer()
+{
+	delete[] mCountHistory;
+	delete[] mCallHistory;
+}
+
+std::string LLFastTimer::NamedTimer::getToolTip(S32 history_idx)
+{
+	if (history_idx < 0)
+	{
+		// by default, show average number of calls
+		return llformat("%s (%d calls)", getName().c_str(), (S32)getCallAverage());
+	}
+	else
+	{
+		return llformat("%s (%d calls)", getName().c_str(), (S32)getHistoricalCalls(history_idx));
+	}
+}
+
+void LLFastTimer::NamedTimer::setParent(NamedTimer* parent)
+{
+	llassert_always(parent != this);
+	llassert_always(parent != NULL);
+
+	if (mParent)
+	{
+		// subtract our accumulated from previous parent
+		for (S32 i = 0; i < HISTORY_NUM; i++)
+		{
+			mParent->mCountHistory[i] -= mCountHistory[i];
+		}
+
+		// subtract average timing from previous parent
+		mParent->mCountAverage -= mCountAverage;
+
+		std::vector<NamedTimer*>& children = mParent->getChildren();
+		std::vector<NamedTimer*>::iterator found_it = std::find(children.begin(), children.end(), this);
+		if (found_it != children.end())
+		{
+			children.erase(found_it);
+		}
+	}
+
+	mParent = parent;
+	if (parent)
+	{
+		getFrameState().mParent = &parent->getFrameState();
+		parent->getChildren().push_back(this);
+		parent->mNeedsSorting = true;
+	}
+}
+
+S32 LLFastTimer::NamedTimer::getDepth()
+{
+	S32 depth = 0;
+	NamedTimer* timerp = mParent;
+	while(timerp)
+	{
+		depth++;
+		timerp = timerp->mParent;
+	}
+	return depth;
+}
+
+// static
+void LLFastTimer::NamedTimer::processTimes()
+{
+	if (sCurFrameIndex < 0) return;
+
+	buildHierarchy();
+	accumulateTimings();
+}
+
+// sort timer info structs by depth first traversal order
+struct SortTimersDFS
+{
+	bool operator()(const LLFastTimer::FrameState& i1, const LLFastTimer::FrameState& i2)
+	{
+		return i1.mTimer->getFrameStateIndex() < i2.mTimer->getFrameStateIndex();
+	}
+};
+
+// sort child timers by name
+struct SortTimerByName
+{
+	bool operator()(const LLFastTimer::NamedTimer* i1, const LLFastTimer::NamedTimer* i2)
+	{
+		return i1->getName() < i2->getName();
+	}
+};
+
+//static
+void LLFastTimer::NamedTimer::buildHierarchy()
+{
+	if (sCurFrameIndex < 0 ) return;
+
+	// set up initial tree
+    for (instance_iter it = NamedTimer::beginInstances();
+		it != endInstances();
+		++it)
+	{
+		NamedTimer& timer = *it;
+		if (&timer == NamedTimerFactory::instance().getRootTimer()) continue;
+
+		// bootstrap tree construction by attaching to last timer to be on stack
+		// when this timer was called
+		if (timer.getFrameState().mLastCaller && timer.mParent == NamedTimerFactory::instance().getRootTimer())
+		{
+			timer.setParent(timer.getFrameState().mLastCaller->mTimer);
+			// no need to push up tree on first use, flag can be set spuriously
+			timer.getFrameState().mMoveUpTree = false;
+		}
+	}
+
+	// bump timers up tree if they've been flagged as being in the wrong place
+	// do this in a bottom up order to promote descendants first before promoting ancestors
+	// this preserves partial order derived from current frame's observations
+	for(timer_tree_bottom_up_iterator_t it = begin_timer_tree_bottom_up(*NamedTimerFactory::instance().getRootTimer());
+		it != end_timer_tree_bottom_up();
+		++it)
+	{
+		NamedTimer* timerp = *it;
+		// skip root timer
+		if (timerp == NamedTimerFactory::instance().getRootTimer()) continue;
+
+		if (timerp->getFrameState().mMoveUpTree)
+		{
+			// since ancestors have already been visited, reparenting won't affect tree traversal
+			//step up tree, bringing our descendants with us
+			//llinfos << "Moving " << timerp->getName() << " from child of " << timerp->getParent()->getName() <<
+			//	" to child of " << timerp->getParent()->getParent()->getName() << llendl;
+			timerp->setParent(timerp->getParent()->getParent());
+			timerp->getFrameState().mMoveUpTree = false;
+
+			// don't bubble up any ancestors until descendants are done bubbling up
+			it.skipAncestors();
+		}
+	}
+
+	// sort timers by time last called, so call graph makes sense
+	for(timer_tree_dfs_iterator_t it = begin_timer_tree(*NamedTimerFactory::instance().getRootTimer());
+		it != end_timer_tree();
+		++it)
+	{
+		NamedTimer* timerp = (*it);
+		if (timerp->mNeedsSorting)
+		{
+			std::sort(timerp->getChildren().begin(), timerp->getChildren().end(), SortTimerByName());
+		}
+		timerp->mNeedsSorting = false;
+	}
+}
+
+//static
+void LLFastTimer::NamedTimer::accumulateTimings()
+{
+	U32 cur_time = get_cpu_clock_count_32();
+
+	// walk up stack of active timers and accumulate current time while leaving timing structures active
+	LLFastTimer* cur_timer = sCurTimerData.mCurTimer;
+	// root defined by parent pointing to self
+	CurTimerData* cur_data = &sCurTimerData;
+	while(cur_timer->mLastTimerData.mCurTimer != cur_timer)
+	{
+		U32 cumulative_time_delta = cur_time - cur_timer->mStartTime;
+		U32 self_time_delta = cumulative_time_delta - cur_data->mChildTime;
+		cur_data->mChildTime = 0;
+		cur_timer->mFrameState->mSelfTimeCounter += self_time_delta;
+		cur_timer->mStartTime = cur_time;
+
+		cur_data = &cur_timer->mLastTimerData;
+		cur_data->mChildTime += cumulative_time_delta;
+
+		cur_timer = cur_timer->mLastTimerData.mCurTimer;
+	}
+
+	// traverse tree in DFS post order, or bottom up
+	for(timer_tree_bottom_up_iterator_t it = begin_timer_tree_bottom_up(*NamedTimerFactory::instance().getActiveRootTimer());
+		it != end_timer_tree_bottom_up();
+		++it)
+	{
+		NamedTimer* timerp = (*it);
+		timerp->mTotalTimeCounter = timerp->getFrameState().mSelfTimeCounter;
+		for (child_const_iter child_it = timerp->beginChildren(); child_it != timerp->endChildren(); ++child_it)
+		{
+			timerp->mTotalTimeCounter += (*child_it)->mTotalTimeCounter;
+		}
+
+		S32 cur_frame = sCurFrameIndex;
+		if (cur_frame >= 0)
+		{
+			// update timer history
+			int hidx = cur_frame % HISTORY_NUM;
+
+			timerp->mCountHistory[hidx] = timerp->mTotalTimeCounter;
+			timerp->mCountAverage = (timerp->mCountAverage * cur_frame + timerp->mTotalTimeCounter) / (cur_frame+1);
+			timerp->mCallHistory[hidx] = timerp->getFrameState().mCalls;
+			timerp->mCallAverage = (timerp->mCallAverage * cur_frame + timerp->getFrameState().mCalls) / (cur_frame+1);
+		}
+	}
+}
+
+// static
+void LLFastTimer::NamedTimer::resetFrame()
+{
+	if (sLog)
+	{ //output current frame counts to performance log
+		F64 iclock_freq = 1000.0 / countsPerSecond(); // good place to calculate clock frequency
+
+		F64 total_time = 0;
+		LLSD sd;
+
+		for (NamedTimer::instance_iter it = NamedTimer::beginInstances();
+					it != NamedTimer::endInstances();
+					++it)
+		{
+			NamedTimer& timer = *it;
+			FrameState& info = timer.getFrameState();
+			sd[timer.getName()]["Time"] = (LLSD::Real) (info.mSelfTimeCounter*iclock_freq);	
+			sd[timer.getName()]["Calls"] = (LLSD::Integer) info.mCalls;
+			
+			// computing total time here because getting the root timer's getCountHistory
+			// doesn't work correctly on the first frame
+			total_time = total_time + info.mSelfTimeCounter * iclock_freq;
+		}
+
+		sd["Total"]["Time"] = (LLSD::Real) total_time;
+		sd["Total"]["Calls"] = (LLSD::Integer) 1;
+
+		{		
+			LLMutexLock lock(sLogLock);
+			sLogQueue.push(sd);
+		}
+	}
+
+
+	// tag timers by position in depth first traversal of tree
+	S32 index = 0;
+	for(timer_tree_dfs_iterator_t it = begin_timer_tree(*NamedTimerFactory::instance().getRootTimer());
+		it != end_timer_tree();
+		++it)
+	{
+		NamedTimer* timerp = (*it);
+		
+		timerp->mFrameStateIndex = index;
+		index++;
+
+		llassert_always(timerp->mFrameStateIndex < (S32)getFrameStateList().size());
+	}
+
+	// sort timers by dfs traversal order to improve cache coherency
+	std::sort(getFrameStateList().begin(), getFrameStateList().end(), SortTimersDFS());
+
+	// update pointers into framestatelist now that we've sorted it
+	DeclareTimer::updateCachedPointers();
+
+	// reset for next frame
+	for (NamedTimer::instance_iter it = NamedTimer::beginInstances();
+		it != NamedTimer::endInstances();
+		++it)
+	{
+		NamedTimer& timer = *it;
+
+		FrameState& info = timer.getFrameState();
+		info.mSelfTimeCounter = 0;
+		info.mCalls = 0;
+		info.mLastCaller = NULL;
+		info.mMoveUpTree = false;
+		// update parent pointer in timer state struct
+		if (timer.mParent)
+		{
+			info.mParent = &timer.mParent->getFrameState();
+		}
+	}
+
+	//sTimerCycles = 0;
+	//sTimerCalls = 0;
+}
+
+//static
+void LLFastTimer::NamedTimer::reset()
+{
+	resetFrame(); // reset frame data
+
+	// walk up stack of active timers and reset start times to current time
+	// effectively zeroing out any accumulated time
+	U32 cur_time = get_cpu_clock_count_32();
+
+	// root defined by parent pointing to self
+	CurTimerData* cur_data = &sCurTimerData;
+	LLFastTimer* cur_timer = cur_data->mCurTimer;
+	while(cur_timer->mLastTimerData.mCurTimer != cur_timer)
+	{
+		cur_timer->mStartTime = cur_time;
+		cur_data->mChildTime = 0;
+
+		cur_data = &cur_timer->mLastTimerData;
+		cur_timer = cur_data->mCurTimer;
+	}
+
+	// reset all history
+	for (NamedTimer::instance_iter it = NamedTimer::beginInstances();
+		it != NamedTimer::endInstances();
+		++it)
+	{
+		NamedTimer& timer = *it;
+		if (&timer != NamedTimerFactory::instance().getRootTimer()) 
+		{
+			timer.setParent(NamedTimerFactory::instance().getRootTimer());
+		}
+
+		timer.mCountAverage = 0;
+		timer.mCallAverage = 0;
+		memset(timer.mCountHistory, 0, sizeof(U32) * HISTORY_NUM);
+		memset(timer.mCallHistory, 0, sizeof(U32) * HISTORY_NUM);
+	}
+
+	sLastFrameIndex = 0;
+	sCurFrameIndex = 0;
+}
+
+//static 
+LLFastTimer::info_list_t& LLFastTimer::getFrameStateList() 
+{ 
+	if (!sTimerInfos) 
+	{ 
+		sTimerInfos = new info_list_t(); 
+	} 
+	return *sTimerInfos; 
+}
+
+
+U32 LLFastTimer::NamedTimer::getHistoricalCount(S32 history_index) const
+{
+	S32 history_idx = (getLastFrameIndex() + history_index) % LLFastTimer::NamedTimer::HISTORY_NUM;
+	return mCountHistory[history_idx];
+}
+
+U32 LLFastTimer::NamedTimer::getHistoricalCalls(S32 history_index ) const
+{
+	S32 history_idx = (getLastFrameIndex() + history_index) % LLFastTimer::NamedTimer::HISTORY_NUM;
+	return mCallHistory[history_idx];
+}
+
+LLFastTimer::FrameState& LLFastTimer::NamedTimer::getFrameState() const
+{
+	llassert_always(mFrameStateIndex >= 0);
+	if (this == NamedTimerFactory::instance().getActiveRootTimer()) 
+	{
+		return NamedTimerFactory::instance().getRootFrameState();
+	}
+	return getFrameStateList()[mFrameStateIndex];
+}
+
+// static
+LLFastTimer::NamedTimer& LLFastTimer::NamedTimer::getRootNamedTimer()
+{ 
+	return *NamedTimerFactory::instance().getActiveRootTimer(); 
+}
+
+std::vector<LLFastTimer::NamedTimer*>::const_iterator LLFastTimer::NamedTimer::beginChildren()
+{ 
+	return mChildren.begin(); 
+}
+
+std::vector<LLFastTimer::NamedTimer*>::const_iterator LLFastTimer::NamedTimer::endChildren()
+{
+	return mChildren.end();
+}
+
+std::vector<LLFastTimer::NamedTimer*>& LLFastTimer::NamedTimer::getChildren()
+{
+	return mChildren;
+}
+
+//static
+void LLFastTimer::nextFrame()
+{
+	countsPerSecond(); // good place to calculate clock frequency
+	U64 frame_time = get_cpu_clock_count_64();
+	if ((frame_time - sLastFrameTime) >> 8 > 0xffffffff)
+	{
+		llinfos << "Slow frame, fast timers inaccurate" << llendl;
+	}
+
+	if (sPauseHistory)
+	{
+		sResetHistory = true;
+	}
+	else if (sResetHistory)
+	{
+		sLastFrameIndex = 0;
+		sCurFrameIndex = 0;
+		sResetHistory = false;
+	}
+	else // not paused
+	{
+		NamedTimer::processTimes();
+		sLastFrameIndex = sCurFrameIndex++;
+	}
+	
+	// get ready for next frame
+	NamedTimer::resetFrame();
+	sLastFrameTime = frame_time;
+}
+
+//static
+void LLFastTimer::dumpCurTimes()
+{
+	// accumulate timings, etc.
+	NamedTimer::processTimes();
+	
+	F64 clock_freq = (F64)countsPerSecond();
+	F64 iclock_freq = 1000.0 / clock_freq; // clock_ticks -> milliseconds
+
+	// walk over timers in depth order and output timings
+	for(timer_tree_dfs_iterator_t it = begin_timer_tree(*NamedTimerFactory::instance().getRootTimer());
+		it != end_timer_tree();
+		++it)
+	{
+		NamedTimer* timerp = (*it);
+		F64 total_time_ms = ((F64)timerp->getHistoricalCount(0) * iclock_freq);
+		// Don't bother with really brief times, keep output concise
+		if (total_time_ms < 0.1) continue;
+
+		std::ostringstream out_str;
+		for (S32 i = 0; i < timerp->getDepth(); i++)
+		{
+			out_str << "\t";
+		}
+
+
+		out_str << timerp->getName() << " " 
+			<< std::setprecision(3) << total_time_ms << " ms, "
+			<< timerp->getHistoricalCalls(0) << " calls";
+
+		llinfos << out_str.str() << llendl;
+	}
+}
+
+//static 
+void LLFastTimer::reset()
+{
+	NamedTimer::reset();
+}
+
+
+//static
+void LLFastTimer::writeLog(std::ostream& os)
+{
+	while (!sLogQueue.empty())
+	{
+		LLSD& sd = sLogQueue.front();
+		LLSDSerialize::toXML(sd, os);
+		LLMutexLock lock(sLogLock);
+		sLogQueue.pop();
+	}
+}
+
+//static
+const LLFastTimer::NamedTimer* LLFastTimer::getTimerByName(const std::string& name)
+{
+	return NamedTimerFactory::instance().getTimerByName(name);
+}
+
+LLFastTimer::LLFastTimer(LLFastTimer::FrameState* state)
+:	mFrameState(state)
+{
+	U32 start_time = get_cpu_clock_count_32();
+	mStartTime = start_time;
+	mFrameState->mActiveCount++;
+	LLFastTimer::sCurTimerData.mCurTimer = this;
+	LLFastTimer::sCurTimerData.mFrameState = mFrameState;
+	LLFastTimer::sCurTimerData.mChildTime = 0;
+	mLastTimerData = LLFastTimer::sCurTimerData;
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
diff --git a/indra/llcommon/llfasttimer_class.h b/indra/llcommon/llfasttimer_class.h
index 93d2d0494d4..4cb0c2d04e9 100644
--- a/indra/llcommon/llfasttimer_class.h
+++ b/indra/llcommon/llfasttimer_class.h
@@ -39,6 +39,12 @@
 #define TIME_FAST_TIMERS 0
 
 
+#if LL_WINDOWS
+#define LL_INLINE __forceinline
+#else
+#define LL_INLINE
+#endif // LL_WINDOWS
+
 class LLMutex;
 
 #include <queue>
@@ -47,7 +53,6 @@ class LLMutex;
 class LL_COMMON_API LLFastTimer
 {
 public:
-
 	class NamedTimer;
 
 	struct LL_COMMON_API FrameState
@@ -163,11 +168,11 @@ class LL_COMMON_API LLFastTimer
 	:	mFrameState(timer.mFrameState)
 	{
 #if TIME_FAST_TIMERS
-		U64 timer_start = get_cpu_clock_count_64();
+		U64 timer_start = getCPUClockCount64();
 #endif
 #if FAST_TIMER_ON
 		LLFastTimer::FrameState* frame_state = mFrameState;
-		mStartTime = get_cpu_clock_count_32();
+		mStartTime = getCPUClockCount32();
 
 		frame_state->mActiveCount++;
 		frame_state->mCalls++;
@@ -181,7 +186,7 @@ class LL_COMMON_API LLFastTimer
 		cur_timer_data->mChildTime = 0;
 #endif
 #if TIME_FAST_TIMERS
-		U64 timer_end = get_cpu_clock_count_64();
+		U64 timer_end = getCPUClockCount64();
 		sTimerCycles += timer_end - timer_start;
 #endif
 	}
@@ -189,11 +194,11 @@ class LL_COMMON_API LLFastTimer
 	LL_INLINE ~LLFastTimer()
 	{
 #if TIME_FAST_TIMERS
-		U64 timer_start = get_cpu_clock_count_64();
+		U64 timer_start = getCPUClockCount64();
 #endif
 #if FAST_TIMER_ON
 		LLFastTimer::FrameState* frame_state = mFrameState;
-		U32 total_time = get_cpu_clock_count_32() - mStartTime;
+		U32 total_time = getCPUClockCount32() - mStartTime;
 
 		frame_state->mSelfTimeCounter += total_time - LLFastTimer::sCurTimerData.mChildTime;
 		frame_state->mActiveCount--;
@@ -208,7 +213,7 @@ class LL_COMMON_API LLFastTimer
 		LLFastTimer::sCurTimerData = mLastTimerData;
 #endif
 #if TIME_FAST_TIMERS
-		U64 timer_end = get_cpu_clock_count_64();
+		U64 timer_end = getCPUClockCount64();
 		sTimerCycles += timer_end - timer_start;
 		sTimerCalls++;
 #endif
@@ -254,11 +259,14 @@ class LL_COMMON_API LLFastTimer
 	static CurTimerData		sCurTimerData;
 
 private:
+	static U32 getCPUClockCount32();
+	static U64 getCPUClockCount64();
+	static U64 sClockResolution;
+
 	static S32				sCurFrameIndex;
 	static S32				sLastFrameIndex;
 	static U64				sLastFrameTime;
 	static info_list_t*		sTimerInfos;
-	static U64 sClockResolution;
 
 	U32							mStartTime;
 	LLFastTimer::FrameState*	mFrameState;
-- 
GitLab


From 3d0ff2585eb32c67d503452ce9f8d2198be823c8 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Mon, 25 Jan 2010 13:24:45 -0800
Subject: [PATCH 098/521] Final fix for fast timer reshuffle.

---
 indra/llcommon/llfasttimer.h         | 25 +++++++++++--------------
 indra/llcommon/llfasttimer_class.cpp | 10 +++++-----
 2 files changed, 16 insertions(+), 19 deletions(-)

diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h
index 0f3280023ca..9f9e2ea9452 100644
--- a/indra/llcommon/llfasttimer.h
+++ b/indra/llcommon/llfasttimer.h
@@ -37,7 +37,6 @@
 #include "llfasttimer_class.h"
 
 #if LL_WINDOWS
-#define LL_INLINE __forceinline
 //
 // Windows implementation of CPU clock
 //
@@ -53,21 +52,21 @@
 //#undef _interlockedbittestandset
 //#undef _interlockedbittestandreset
 
-//inline U32 get_cpu_clock_count_32()
+//inline U32 LLFastTimer::getCPUClockCount32()
 //{
 //	U64 time_stamp = __rdtsc();
 //	return (U32)(time_stamp >> 8);
 //}
 //
 //// return full timer value, *not* shifted by 8 bits
-//inline U64 get_cpu_clock_count_64()
+//inline U64 LLFastTimer::getCPUClockCount64()
 //{
 //	return __rdtsc();
 //}
 
 // shift off lower 8 bits for lower resolution but longer term timing
 // on 1Ghz machine, a 32-bit word will hold ~1000 seconds of timing
-inline U32 get_cpu_clock_count_32()
+inline U32 LLFastTimer::getCPUClockCount32()
 {
 	U32 ret_val;
 	__asm
@@ -83,7 +82,7 @@ inline U32 get_cpu_clock_count_32()
 }
 
 // return full timer value, *not* shifted by 8 bits
-inline U64 get_cpu_clock_count_64()
+inline U64 LLFastTimer::getCPUClockCount64()
 {
 	U64 ret_val;
 	__asm
@@ -97,8 +96,6 @@ inline U64 get_cpu_clock_count_64()
 	}
     return ret_val;
 }
-#else
-#define LL_INLINE
 #endif
 
 
@@ -111,7 +108,7 @@ inline U64 get_cpu_clock_count_64()
 // to synchronize this value between cores at kernel start. It should not be affected
 // by CPU frequency. If not available use the REALTIME clock, but this may be affected by
 // NTP adjustments or other user activity affecting the system time.
-inline U64 get_cpu_clock_count_64()
+inline U64 LLFastTimer::getCPUClockCount64()
 {
 	struct timespec tp;
 	
@@ -123,9 +120,9 @@ inline U64 get_cpu_clock_count_64()
 	return (tp.tv_sec*LLFastTimer::sClockResolution)+tp.tv_nsec;        
 }
 
-inline U32 get_cpu_clock_count_32()
+inline U32 LLFastTimer::getCPUClockCount32()
 {
-	return (U32)get_cpu_clock_count_64();
+	return (U32)LLFastTimer::getCPUClockCount64();
 }
 #endif // (LL_LINUX || LL_SOLARIS))
 
@@ -133,14 +130,14 @@ inline U32 get_cpu_clock_count_32()
 #if (LL_DARWIN) && (defined(__i386__) || defined(__amd64__))
 //
 // Mac x86 implementation of CPU clock
-inline U32 get_cpu_clock_count_32()
+inline U32 LLFastTimer::getCPUClockCount32()
 {
 	U64 x;
 	__asm__ volatile (".byte 0x0f, 0x31": "=A"(x));
 	return (U32)x >> 8;
 }
 
-inline U32 get_cpu_clock_count_64()
+inline U32 LLFastTimer::getCPUClockCount64()
 {
 	U64 x;
 	__asm__ volatile (".byte 0x0f, 0x31": "=A"(x));
@@ -155,12 +152,12 @@ inline U32 get_cpu_clock_count_64()
 //
 // Just use gettimeofday implementation for now
 
-inline U32 get_cpu_clock_count_32()
+inline U32 LLFastTimer::getCPUClockCount32()
 {
 	return (U32)get_clock_count();
 }
 
-inline U32 get_cpu_clock_count_64()
+inline U32 LLFastTimer::getCPUClockCount64()
 {
 	return get_clock_count();
 }
diff --git a/indra/llcommon/llfasttimer_class.cpp b/indra/llcommon/llfasttimer_class.cpp
index 6dbd90f9fac..abcaee673eb 100644
--- a/indra/llcommon/llfasttimer_class.cpp
+++ b/indra/llcommon/llfasttimer_class.cpp
@@ -56,7 +56,7 @@
 
 S32 LLFastTimer::sCurFrameIndex = -1;
 S32 LLFastTimer::sLastFrameIndex = -1;
-U64 LLFastTimer::sLastFrameTime = get_cpu_clock_count_64();
+U64 LLFastTimer::sLastFrameTime = LLFastTimer::getCPUClockCount64();
 bool LLFastTimer::sPauseHistory = 0;
 bool LLFastTimer::sResetHistory = 0;
 LLFastTimer::CurTimerData LLFastTimer::sCurTimerData;
@@ -426,7 +426,7 @@ void LLFastTimer::NamedTimer::buildHierarchy()
 //static
 void LLFastTimer::NamedTimer::accumulateTimings()
 {
-	U32 cur_time = get_cpu_clock_count_32();
+	U32 cur_time = getCPUClockCount32();
 
 	// walk up stack of active timers and accumulate current time while leaving timing structures active
 	LLFastTimer* cur_timer = sCurTimerData.mCurTimer;
@@ -556,7 +556,7 @@ void LLFastTimer::NamedTimer::reset()
 
 	// walk up stack of active timers and reset start times to current time
 	// effectively zeroing out any accumulated time
-	U32 cur_time = get_cpu_clock_count_32();
+	U32 cur_time = getCPUClockCount32();
 
 	// root defined by parent pointing to self
 	CurTimerData* cur_data = &sCurTimerData;
@@ -649,7 +649,7 @@ std::vector<LLFastTimer::NamedTimer*>& LLFastTimer::NamedTimer::getChildren()
 void LLFastTimer::nextFrame()
 {
 	countsPerSecond(); // good place to calculate clock frequency
-	U64 frame_time = get_cpu_clock_count_64();
+	U64 frame_time = getCPUClockCount64();
 	if ((frame_time - sLastFrameTime) >> 8 > 0xffffffff)
 	{
 		llinfos << "Slow frame, fast timers inaccurate" << llendl;
@@ -738,7 +738,7 @@ const LLFastTimer::NamedTimer* LLFastTimer::getTimerByName(const std::string& na
 LLFastTimer::LLFastTimer(LLFastTimer::FrameState* state)
 :	mFrameState(state)
 {
-	U32 start_time = get_cpu_clock_count_32();
+	U32 start_time = getCPUClockCount32();
 	mStartTime = start_time;
 	mFrameState->mActiveCount++;
 	LLFastTimer::sCurTimerData.mCurTimer = this;
-- 
GitLab


From 18bdeb3d0e5ef4e5b014b41a8003569061e00910 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Mon, 25 Jan 2010 13:32:49 -0800
Subject: [PATCH 099/521] DEV-45468 'SNOW-108: Fast timers are broken /
 badly-scaled on linux' ready to merge.

legacy coding policy fix-up.
---
 indra/llcommon/CMakeLists.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt
index 05e45d6d8ac..9ead183a9e0 100644
--- a/indra/llcommon/CMakeLists.txt
+++ b/indra/llcommon/CMakeLists.txt
@@ -250,7 +250,7 @@ list(APPEND llcommon_SOURCE_FILES ${llcommon_HEADER_FILES})
 
 if(LLCOMMON_LINK_SHARED)
     add_library (llcommon SHARED ${llcommon_SOURCE_FILES})
-	ll_stage_sharedlib(llcommon)
+    ll_stage_sharedlib(llcommon)
 else(LLCOMMON_LINK_SHARED)
     add_library (llcommon ${llcommon_SOURCE_FILES})
 endif(LLCOMMON_LINK_SHARED)
-- 
GitLab


From 2375afc4283e47a50516c1e003a6f699b0a2cfe1 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Mon, 25 Jan 2010 13:49:13 -0800
Subject: [PATCH 100/521] Gosh, the mac prototypes for get_cpu_clock_count_64
 have always been wrong, but the compiler didn't start caring until I made
 these proper member functions.

fixed.
---
 indra/llcommon/llfasttimer.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h
index 9f9e2ea9452..32f3561616c 100644
--- a/indra/llcommon/llfasttimer.h
+++ b/indra/llcommon/llfasttimer.h
@@ -137,7 +137,7 @@ inline U32 LLFastTimer::getCPUClockCount32()
 	return (U32)x >> 8;
 }
 
-inline U32 LLFastTimer::getCPUClockCount64()
+inline U64 LLFastTimer::getCPUClockCount64()
 {
 	U64 x;
 	__asm__ volatile (".byte 0x0f, 0x31": "=A"(x));
@@ -157,7 +157,7 @@ inline U32 LLFastTimer::getCPUClockCount32()
 	return (U32)get_clock_count();
 }
 
-inline U32 LLFastTimer::getCPUClockCount64()
+inline U64 LLFastTimer::getCPUClockCount64()
 {
 	return get_clock_count();
 }
-- 
GitLab


From 88108c0ae85c541be08a6b9313a2606c5bfd2d92 Mon Sep 17 00:00:00 2001
From: Eli Linden <eli@lindenlab.com>
Date: Mon, 25 Jan 2010 14:23:47 -0800
Subject: [PATCH 101/521] test change.

---
 indra/newview/skins/default/xui/en/floater_aaa.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml
index cb9f9439494..443be58c97b 100644
--- a/indra/newview/skins/default/xui/en/floater_aaa.xml
+++ b/indra/newview/skins/default/xui/en/floater_aaa.xml
@@ -19,7 +19,7 @@
  width="320">
   <string name="nudge_parabuild">Nudge 1</string>
   <string name="test_the_vlt">This string CHANGE is extracted.</string>
-  <string name="testing_eli">Just a test.</string>
+  <string name="testing_eli">Just a test. change here.</string>
   <chat_history
    allow_html="true"
    bg_readonly_color="ChatHistoryBgColor"
-- 
GitLab


From cbe647786f8631d32fc5f9226853950359207699 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Mon, 25 Jan 2010 14:25:58 -0800
Subject: [PATCH 102/521] We already have a LL_FORCE_INLINE in
 llpreprocessor.h, don't re-invent it for llfasttimers.h. Also define
 LL_LIKELY/LL_UNLIKELY with a warning about its micro-optimizey nature, and
 use it to annotate llasserts (i.e. make llassert() lower-overhead and thus
 more attractive, even in inner-ish loops.)

---
 indra/llcommon/llerrorlegacy.h     |  4 ++--
 indra/llcommon/llfasttimer_class.h | 11 ++---------
 indra/llcommon/llpreprocessor.h    | 15 +++++++++++++++
 3 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/indra/llcommon/llerrorlegacy.h b/indra/llcommon/llerrorlegacy.h
index 9920921a58d..476d75380f3 100644
--- a/indra/llcommon/llerrorlegacy.h
+++ b/indra/llcommon/llerrorlegacy.h
@@ -34,7 +34,7 @@
 #ifndef LL_LLERRORLEGACY_H
 #define LL_LLERRORLEGACY_H
 
-
+#include "llpreprocessor.h"
 
 /*
 	LEGACY -- DO NOT USE THIS STUFF ANYMORE
@@ -107,7 +107,7 @@ const int LL_ERR_PRICE_MISMATCH = -23018;
 
 #define llwarning(msg, num)		llwarns << "Warning # " << num << ": " << msg << llendl;
 
-#define llassert_always(func)	if (!(func)) llerrs << "ASSERT (" << #func << ")" << llendl;
+#define llassert_always(func)	if (LL_UNLIKELY(!(func))) llerrs << "ASSERT (" << #func << ")" << llendl;
 
 #ifdef SHOW_ASSERT
 #define llassert(func)			llassert_always(func)
diff --git a/indra/llcommon/llfasttimer_class.h b/indra/llcommon/llfasttimer_class.h
index 4cb0c2d04e9..ddb1a747935 100644
--- a/indra/llcommon/llfasttimer_class.h
+++ b/indra/llcommon/llfasttimer_class.h
@@ -38,13 +38,6 @@
 #define FAST_TIMER_ON 1
 #define TIME_FAST_TIMERS 0
 
-
-#if LL_WINDOWS
-#define LL_INLINE __forceinline
-#else
-#define LL_INLINE
-#endif // LL_WINDOWS
-
 class LLMutex;
 
 #include <queue>
@@ -164,7 +157,7 @@ class LL_COMMON_API LLFastTimer
 public:
 	LLFastTimer(LLFastTimer::FrameState* state);
 
-	LL_INLINE LLFastTimer(LLFastTimer::DeclareTimer& timer)
+	LL_FORCE_INLINE LLFastTimer(LLFastTimer::DeclareTimer& timer)
 	:	mFrameState(timer.mFrameState)
 	{
 #if TIME_FAST_TIMERS
@@ -191,7 +184,7 @@ class LL_COMMON_API LLFastTimer
 #endif
 	}
 
-	LL_INLINE ~LLFastTimer()
+	LL_FORCE_INLINE ~LLFastTimer()
 	{
 #if TIME_FAST_TIMERS
 		U64 timer_start = getCPUClockCount64();
diff --git a/indra/llcommon/llpreprocessor.h b/indra/llcommon/llpreprocessor.h
index 5eefa6a16b2..1c1503ca7b6 100644
--- a/indra/llcommon/llpreprocessor.h
+++ b/indra/llcommon/llpreprocessor.h
@@ -55,13 +55,28 @@
 #define LL_BIG_ENDIAN 1
 #endif
 
+
 // Per-compiler switches
+
 #ifdef __GNUC__
 #define LL_FORCE_INLINE inline __attribute__((always_inline))
 #else
 #define LL_FORCE_INLINE __forceinline
 #endif
 
+// Mark-up expressions with branch prediction hints.  Do NOT use
+// this with reckless abandon - it's an obfuscating micro-optimization
+// outside of inner loops or other places where you are OVERWHELMINGLY
+// sure which way an expression almost-always evaluates.
+#if __GNUC__ >= 3
+# define LL_LIKELY(EXPR) __builtin_expect (!!(EXPR), true)
+# define LL_UNLIKELY(EXPR) __builtin_expect (!!(EXPR), false)
+#else
+# define LL_LIKELY(EXPR) (EXPR)
+# define LL_UNLIKELY(EXPR) (EXPR)
+#endif
+
+
 // Figure out differences between compilers
 #if defined(__GNUC__)
 	#define GCC_VERSION (__GNUC__ * 10000 \
-- 
GitLab


From b897406e0591b82c685a76ac03bfe219e91ea96a Mon Sep 17 00:00:00 2001
From: Ramzi Linden <ramzi@lindenlab.com>
Date: Mon, 25 Jan 2010 14:45:59 -0800
Subject: [PATCH 103/521] harmless test commit to work with eli.

---
 indra/newview/skins/default/xui/en/floater_aaa.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml
index cb9f9439494..b072b57ce7b 100644
--- a/indra/newview/skins/default/xui/en/floater_aaa.xml
+++ b/indra/newview/skins/default/xui/en/floater_aaa.xml
@@ -18,7 +18,7 @@
  single_instance="true" 
  width="320">
   <string name="nudge_parabuild">Nudge 1</string>
-  <string name="test_the_vlt">This string CHANGE is extracted.</string>
+  <string name="test_the_vlt">This string CHANGE2 is extracted.</string>
   <string name="testing_eli">Just a test.</string>
   <chat_history
    allow_html="true"
-- 
GitLab


From 66e7c2ce7715873bc29437878c5bce1ca0bee27b Mon Sep 17 00:00:00 2001
From: angela <angela@lindenlab.com>
Date: Tue, 26 Jan 2010 06:48:42 +0800
Subject: [PATCH 104/521] fix mac build failure -- richard

---
 indra/llui/lltextbase.cpp | 4 ++--
 indra/llui/lltextbase.h   | 6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 885a830c9fc..ddbe81a6d44 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -2203,7 +2203,7 @@ void LLTextSegment::linkToDocument(LLTextBase*) {}
 const LLColor4& LLTextSegment::getColor() const { return LLColor4::white; }
 //void LLTextSegment::setColor(const LLColor4 &color) {}
 LLStyleConstSP LLTextSegment::getStyle() const {static LLStyleConstSP sp(new LLStyle()); return sp; }
-void LLTextSegment::setStyle(LLStyleConstSP &style) {}
+void LLTextSegment::setStyle(LLStyleConstSP style) {}
 void LLTextSegment::setToken( LLKeywordToken* token ) {}
 LLKeywordToken*	LLTextSegment::getToken() const { return NULL; }
 void LLTextSegment::setToolTip( const std::string &msg ) {}
@@ -2228,7 +2228,7 @@ BOOL LLTextSegment::hasMouseCapture() { return FALSE; }
 // LLNormalTextSegment
 //
 
-LLNormalTextSegment::LLNormalTextSegment( LLStyleConstSP& style, S32 start, S32 end, LLTextBase& editor ) 
+LLNormalTextSegment::LLNormalTextSegment( LLStyleConstSP style, S32 start, S32 end, LLTextBase& editor ) 
 :	LLTextSegment(start, end),
 	mStyle( style ),
 	mToken(NULL),
diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h
index 5526667166f..9fff9101732 100644
--- a/indra/llui/lltextbase.h
+++ b/indra/llui/lltextbase.h
@@ -390,7 +390,7 @@ class LLTextSegment : public LLRefCount, public LLMouseHandler
 	virtual const LLColor4&		getColor() const;
 	//virtual void 				setColor(const LLColor4 &color);
 	virtual LLStyleConstSP		getStyle() const;
-	virtual void 				setStyle(LLStyleConstSP &style);
+	virtual void 				setStyle(LLStyleConstSP style);
 	virtual void				setToken( LLKeywordToken* token );
 	virtual LLKeywordToken*		getToken() const;
 	virtual void				setToolTip(const std::string& tooltip);
@@ -426,7 +426,7 @@ class LLTextSegment : public LLRefCount, public LLMouseHandler
 class LLNormalTextSegment : public LLTextSegment
 {
 public:
-	LLNormalTextSegment( LLStyleConstSP& style, S32 start, S32 end, LLTextBase& editor );
+	LLNormalTextSegment( LLStyleConstSP style, S32 start, S32 end, LLTextBase& editor );
 	LLNormalTextSegment( const LLColor4& color, S32 start, S32 end, LLTextBase& editor, BOOL is_visible = TRUE);
 	~LLNormalTextSegment();
 
@@ -437,7 +437,7 @@ class LLNormalTextSegment : public LLTextSegment
 	/*virtual*/ bool				canEdit() const { return true; }
 	/*virtual*/ const LLColor4&		getColor() const					{ return mStyle->getColor(); }
 	/*virtual*/ LLStyleConstSP		getStyle() const					{ return mStyle; }
-	/*virtual*/ void 				setStyle(LLStyleConstSP &style)	{ mStyle = style; }
+	/*virtual*/ void 				setStyle(LLStyleConstSP style)	{ mStyle = style; }
 	/*virtual*/ void				setToken( LLKeywordToken* token )	{ mToken = token; }
 	/*virtual*/ LLKeywordToken*		getToken() const					{ return mToken; }
 	/*virtual*/ BOOL				getToolTip( std::string& msg ) const;
-- 
GitLab


From 9e83fb1f418f17fb92638d2ff75f71e96b5670bd Mon Sep 17 00:00:00 2001
From: Chuck Linden <chuck@lindenlab.com>
Date: Mon, 25 Jan 2010 18:07:34 -0500
Subject: [PATCH 105/521] Changed menu font to SansSerifSmall and cleaned up
 layout. http://jira.secondlife.com/browse/EXT-4175

---
 .../skins/default/xui/en/panel_status_bar.xml   | 17 +++++++++--------
 .../skins/default/xui/en/widgets/menu_item.xml  |  2 +-
 2 files changed, 10 insertions(+), 9 deletions(-)

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 7a6089c74e0..5754f67045f 100644
--- a/indra/newview/skins/default/xui/en/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml
@@ -49,7 +49,7 @@
      image_unselected="spacer35.tga"
      image_pressed="spacer35.tga"
      height="16"
-     right="-228"
+     right="-204"
      label_shadow="false"
      name="buycurrency"
      tool_tip="My Balance"
@@ -69,15 +69,16 @@
      left_pad="0"
      label_shadow="false"
      name="buyL"
-     pad_right="20px"
+     pad_right="20"
+     pad_bottom="2"
      tool_tip="Click to buy more L$"
      top="2"
-     width="100" />
+     width="71" />
     <text
      type="string"
      font="SansSerifSmall"
      text_readonly_color="TimeTextColor"
-     follows="right|bottom"
+     follows="right|top"
      halign="right"
      height="16"
      top="5"
@@ -85,11 +86,11 @@
      left_pad="0"
      name="TimeText"
      tool_tip="Current time (Pacific)"
-     width="85">
-        12:00 AM
+     width="89">
+        24:00 AM PST
     </text>
     <button
-     follows="right|bottom"
+     follows="right|top"
      height="15"
      image_selected="AudioMute_Off"
      image_pressed="Audio_Press"
@@ -101,7 +102,7 @@
      tool_tip="Global Volume Control"
      width="16" />
     <text
-     follows="right|bottom"
+     follows="right|top"
      halign="center"
      height="12"
      layout="topleft"
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 c65244ae224..563f3dc5c2b 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" ?>
 <!-- Use this for the top-level menu styling -->
-<menu_item font="SansSerif" />
+<menu_item font="SansSerifSmall" />
-- 
GitLab


From 4a0f58bbc6fa169acbfdbca344666d4385290e26 Mon Sep 17 00:00:00 2001
From: richard <none@none>
Date: Mon, 25 Jan 2010 15:43:25 -0800
Subject: [PATCH 106/521] EXT-1399 - Turn off wind when not flying

reviewed by Angela
---
 indra/newview/llvieweraudio.cpp | 25 ++++++++++++++++++++++---
 1 file changed, 22 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llvieweraudio.cpp b/indra/newview/llvieweraudio.cpp
index 38103f9e41c..934981b0ad8 100644
--- a/indra/newview/llvieweraudio.cpp
+++ b/indra/newview/llvieweraudio.cpp
@@ -242,10 +242,29 @@ void audio_update_wind(bool force_update)
 		// outside the fade-in.
 		F32 master_volume  = gSavedSettings.getBOOL("MuteAudio") ? 0.f : gSavedSettings.getF32("AudioLevelMaster");
 		F32 ambient_volume = gSavedSettings.getBOOL("MuteAmbient") ? 0.f : gSavedSettings.getF32("AudioLevelAmbient");
+		F32 max_wind_volume = master_volume * ambient_volume;
 
-		F32 wind_volume = master_volume * ambient_volume;
-		gAudiop->mMaxWindGain = wind_volume;
-		
+		const F32 WIND_SOUND_TRANSITION_TIME = 2.f;
+		// amount to change volume this frame
+		F32 volume_delta = (LLFrameTimer::getFrameDeltaTimeF32() / WIND_SOUND_TRANSITION_TIME) * max_wind_volume;
+		if (force_update) 
+		{
+			// initialize wind volume (force_update) by using large volume_delta
+			// which is sufficient to completely turn off or turn on wind noise
+			volume_delta = max_wind_volume;
+		}
+
+		// mute wind when not flying
+		if (gAgent.getFlying())
+		{
+			// volume increases by volume_delta, up to no more than max_wind_volume
+			gAudiop->mMaxWindGain = llmin(gAudiop->mMaxWindGain + volume_delta, max_wind_volume);
+		}
+		else
+		{
+			// volume decreases by volume_delta, down to no less than 0
+			gAudiop->mMaxWindGain = llmax(gAudiop->mMaxWindGain - volume_delta, 0.f);
+		}
 		
 		last_camera_water_height = camera_water_height;
 		gAudiop->updateWind(gRelativeWindVec, camera_water_height);
-- 
GitLab


From c555e837b19fd876bf155d131c30942d27fc8364 Mon Sep 17 00:00:00 2001
From: richard <none@none>
Date: Mon, 25 Jan 2010 15:55:12 -0800
Subject: [PATCH 107/521] EXT-4348 - List of names before "have said something
 new" wraps poorly accepted patch from Josh

---
 indra/newview/llchathistory.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index a46cd84b608..8074213b04d 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -470,7 +470,7 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_
 			chatters += *it;
 			if (++it != mUnreadChatSources.end())
 			{
-				chatters += ",";
+				chatters += ", ";
 			}
 		}
 		LLStringUtil::format_map_t args;
-- 
GitLab


From 226f64ea796745c8d95142cfffe75cc5a6d04e26 Mon Sep 17 00:00:00 2001
From: Eli Linden <eli@lindenlab.com>
Date: Mon, 25 Jan 2010 16:14:55 -0800
Subject: [PATCH 108/521] test change.

---
 indra/newview/skins/default/xui/en/floater_aaa.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml
index 55196d5b659..b4d2dabc5c8 100644
--- a/indra/newview/skins/default/xui/en/floater_aaa.xml
+++ b/indra/newview/skins/default/xui/en/floater_aaa.xml
@@ -19,7 +19,7 @@
  width="320">
   <string name="nudge_parabuild">Nudge 1</string>
   <string name="test_the_vlt">This string CHANGE2 is extracted.</string>
-  <string name="testing_eli">Just a test. change here.</string>
+  <string name="testing_eli">Just a test. change here. more change.</string>
   <chat_history
    allow_html="true"
    bg_readonly_color="ChatHistoryBgColor"
-- 
GitLab


From b00813ae3ca14a7531d93d35d795ce7c23119886 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Mon, 25 Jan 2010 16:35:50 -0800
Subject: [PATCH 109/521] EXT-4388 Crash in octree line segment intersection
 code

a more complete fix and some sanity to prevent recurrance of a similar problem.

reviewed by bao!
---
 indra/llrender/llimagegl.cpp | 43 +++++++++++++++++++++---------------
 indra/llrender/llimagegl.h   |  2 ++
 2 files changed, 27 insertions(+), 18 deletions(-)

diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp
index cd493481d5b..46478ba3c95 100644
--- a/indra/llrender/llimagegl.cpp
+++ b/indra/llrender/llimagegl.cpp
@@ -436,6 +436,8 @@ void LLImageGL::init(BOOL usemipmaps)
 	mLastBindTime = 0.f;
 
 	mPickMask = NULL;
+	mPickMaskWidth = 0;
+	mPickMaskHeight = 0;
 	mUseMipMaps = usemipmaps;
 	mHasExplicitFormat = FALSE;
 	mAutoGenMips = FALSE;
@@ -527,7 +529,12 @@ void LLImageGL::setSize(S32 width, S32 height, S32 ncomponents)
 // 			llwarns << "Setting Size of LLImageGL with existing mTexName = " << mTexName << llendl;
 			destroyGLTexture();
 		}
-		
+
+		// pickmask validity depends on old image size, delete it
+		delete [] mPickMask;
+		mPickMask = NULL;
+		mPickMaskWidth = mPickMaskHeight = 0;
+
 		mWidth = width;
 		mHeight = height;
 		mComponents = ncomponents;
@@ -1675,12 +1682,14 @@ void LLImageGL::updatePickMask(S32 width, S32 height, const U8* data_in)
 		return ;
 	}
 
+	delete [] mPickMask;
+	mPickMask = NULL;
+	mPickMaskWidth = mPickMaskHeight = 0;
+
 	if (mFormatType != GL_UNSIGNED_BYTE ||
 	    mFormatPrimary != GL_RGBA)
 	{
 		//cannot generate a pick mask for this texture
-		delete [] mPickMask;
-		mPickMask = NULL;
 		return;
 	}
 
@@ -1688,11 +1697,10 @@ void LLImageGL::updatePickMask(S32 width, S32 height, const U8* data_in)
 	U32 pick_height = height/2;
 
 	U32 size = llmax(pick_width, (U32) 1) * llmax(pick_height, (U32) 1);
-
 	size = size/8 + 1;
-
-	delete[] mPickMask;
 	mPickMask = new U8[size];
+	mPickMaskWidth = pick_width;
+	mPickMaskHeight = pick_height;
 
 	memset(mPickMask, 0, sizeof(U8) * size);
 
@@ -1727,35 +1735,34 @@ BOOL LLImageGL::getMask(const LLVector2 &tc)
 
 	if (mPickMask)
 	{
-		S32 width = getWidth()/2;
-		S32 height = getHeight()/2;
-
 		F32 u = tc.mV[0] - floorf(tc.mV[0]);
 		F32 v = tc.mV[1] - floorf(tc.mV[1]);
 
-		if (u < 0.f || u > 1.f ||
-		    v < 0.f || v > 1.f)
+		if (LL_UNLIKELY(u < 0.f || u > 1.f ||
+				v < 0.f || v > 1.f))
 		{
 			LL_WARNS_ONCE("render") << "Ugh, u/v out of range in image mask pick" << LL_ENDL;
 			u = v = 0.f;
 			llassert(false);
 		}
+
+		llassert(mPickMaskWidth > 0 && mPickMaskHeight > 0);
 		
-		S32 x = (S32)(u * width);
-		S32 y = (S32)(v * height);
+		S32 x = (S32)(u * mPickMaskWidth);
+		S32 y = (S32)(v * mPickMaskHeight);
 
-		if (x >= width)
+		if (LL_UNLIKELY(x >= mPickMaskWidth))
 		{
 			LL_WARNS_ONCE("render") << "Ooh, width overrun on pick mask read, that coulda been bad." << LL_ENDL;
-			x = llmax(0, width-1);
+			x = llmax(0, mPickMaskWidth-1);
 		}
-		if (y >= height)
+		if (LL_UNLIKELY(y >= mPickMaskHeight))
 		{
 			LL_WARNS_ONCE("render") << "Ooh, height overrun on pick mask read, that woulda been bad." << LL_ENDL;
-			y = llmax(0, height-1);
+			y = llmax(0, mPickMaskHeight-1);
 		}
 
-		S32 idx = y*width+x;
+		S32 idx = y*mPickMaskWidth+x;
 		S32 offset = idx%8;
 
 		res = mPickMask[idx/8] & (1 << offset) ? TRUE : FALSE;
diff --git a/indra/llrender/llimagegl.h b/indra/llrender/llimagegl.h
index facfb7bd62d..f0870c3fc45 100644
--- a/indra/llrender/llimagegl.h
+++ b/indra/llrender/llimagegl.h
@@ -193,6 +193,8 @@ class LLImageGL : public LLRefCount
 private:
 	LLPointer<LLImageRaw> mSaveData; // used for destroyGL/restoreGL
 	U8* mPickMask;  //downsampled bitmap approximation of alpha channel.  NULL if no alpha channel
+	U16 mPickMaskWidth;
+	U16 mPickMaskHeight;
 	S8 mUseMipMaps;
 	S8 mHasExplicitFormat; // If false (default), GL format is f(mComponents)
 	S8 mAutoGenMips;
-- 
GitLab


From fbf605ea321ee29afad63a4afe47f65584d67eea Mon Sep 17 00:00:00 2001
From: Palmer <palmer@lindenlab.com>
Date: Mon, 25 Jan 2010 17:13:35 -0800
Subject: [PATCH 110/521] EXT-4712 - Upgraded some 7000 series cards and 9000
 series cards from class 2 to 3 for more lights.  No code changed.

---
 indra/newview/gpu_table.txt | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/indra/newview/gpu_table.txt b/indra/newview/gpu_table.txt
index cc8f6780e3c..887dab66d18 100644
--- a/indra/newview/gpu_table.txt
+++ b/indra/newview/gpu_table.txt
@@ -192,9 +192,9 @@ NVIDIA GeForce 7100				.*NVIDIA.*GeForce 71.*				0		1
 NVIDIA GeForce 7200				.*NVIDIA.*GeForce 72.*				1		1
 NVIDIA GeForce 7300				.*NVIDIA.*GeForce 73.*				1		1
 NVIDIA GeForce 7500				.*NVIDIA.*GeForce 75.*				1		1
-NVIDIA GeForce 7600				.*NVIDIA.*GeForce 76.*				2		1
-NVIDIA GeForce 7800				.*NVIDIA.*GeForce.*78.*				2		1
-NVIDIA GeForce 7900				.*NVIDIA.*GeForce.*79.*				2		1
+NVIDIA GeForce 7600				.*NVIDIA.*GeForce 76.*				3		1
+NVIDIA GeForce 7800				.*NVIDIA.*GeForce.*78.*				3		1
+NVIDIA GeForce 7900				.*NVIDIA.*GeForce.*79.*				3		1
 NVIDIA GeForce 8100				.*NVIDIA.*GeForce 81.*				1		1
 NVIDIA GeForce 8200				.*NVIDIA.*GeForce 82.*				1		1
 NVIDIA GeForce 8300				.*NVIDIA.*GeForce 83.*				1		1
@@ -207,8 +207,8 @@ NVIDIA GeForce 8800				.*NVIDIA.*GeForce 88.*				3		1
 NVIDIA GeForce 9300M			.*NVIDIA.*GeForce 9300M.*			1		1
 NVIDIA GeForce 9400M			.*NVIDIA.*GeForce 9400M.*			1		1
 NVIDIA GeForce 9500M			.*NVIDIA.*GeForce 9500M.*			2		1
-NVIDIA GeForce 9600M			.*NVIDIA.*GeForce 9600M.*			2		1
-NVIDIA GeForce 9700M			.*NVIDIA.*GeForce 9700M.*			2		1
+NVIDIA GeForce 9600M			.*NVIDIA.*GeForce 9600M.*			3		1
+NVIDIA GeForce 9700M			.*NVIDIA.*GeForce 9700M.*			3		1
 NVIDIA GeForce 9300				.*NVIDIA.*GeForce 93.*				1		1
 NVIDIA GeForce 9400				.*GeForce 94.*						1		1
 NVIDIA GeForce 9500				.*NVIDIA.*GeForce 95.*				2		1
-- 
GitLab


From cd790bfd54733fe2d14dc501d99b826d968e1252 Mon Sep 17 00:00:00 2001
From: Dmitry Zaporozhan <dzaporozhan@productengine.com>
Date: Tue, 26 Jan 2010 10:45:53 +0200
Subject: [PATCH 111/521] Update for low bug EXT-4306 - Landmark name is shown
 with prefix in the group notice attachment.

--HG--
branch : product-engine
---
 indra/newview/llviewerinventory.h |  2 +-
 indra/newview/llviewermessage.cpp | 27 ++++++++++++++++++++++++++-
 2 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h
index 917b8747eaa..7f3f019b070 100644
--- a/indra/newview/llviewerinventory.h
+++ b/indra/newview/llviewerinventory.h
@@ -58,7 +58,6 @@ class LLViewerInventoryItem : public LLInventoryItem, public boost::signals2::tr
 protected:
 	~LLViewerInventoryItem( void ); // ref counted
 	BOOL extractSortFieldAndDisplayName(S32* sortField, std::string* displayName) const { return extractSortFieldAndDisplayName(mName, sortField, displayName); }
-	static char getSeparator() { return '@'; }
 	mutable std::string mDisplayName;
 	
 public:
@@ -67,6 +66,7 @@ class LLViewerInventoryItem : public LLInventoryItem, public boost::signals2::tr
 	virtual const std::string& getName() const;
 	virtual const std::string& getDisplayName() const;
 	static std::string getDisplayName(const std::string& name);
+	static char getSeparator() { return '@'; }
 	virtual S32 getSortField() const;
 	virtual void setSortField(S32 sortField);
 	virtual void rename(const std::string& new_name);
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 0358efc0afd..1d3ac3fb0fb 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -1436,6 +1436,31 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const
 	return false;
 }
 
+std::string get_display_name(const std::string& name)
+{
+	// We receive landmark name as \'<n>@name\' where <n> is a number
+	// LLViewerInventoryItem::getDisplayName will remove \'<n>@ though we need the \'
+	// Lets save all chars preceding @ and insert them back after <n>@ was removed
+
+	std::string saved;
+
+	if(std::string::npos != name.find(LLViewerInventoryItem::getSeparator()))
+	{
+		int n = 0;
+		while(!isdigit(name[n]) && LLViewerInventoryItem::getSeparator() != name[n])
+		{
+			++n;
+		}
+		saved = name.substr(0, n);
+	}
+
+	std::string d_name = LLViewerInventoryItem::getDisplayName(name);
+	d_name.insert(0, saved);
+	LLStringUtil::trim(d_name);
+
+	return d_name;
+}
+
 void inventory_offer_handler(LLOfferInfo* info)
 {
 	//Until throttling is implmented, busy mode should reject inventory instead of silently
@@ -1475,7 +1500,7 @@ void inventory_offer_handler(LLOfferInfo* info)
 
 	if(LLAssetType::AT_LANDMARK == info->mType)
 	{
-		msg = LLViewerInventoryItem::getDisplayName(msg);
+		msg = get_display_name(msg);
 	}
 
 	LLSD args;
-- 
GitLab


From 2bb3a24ca115832bdbfc5030f4ab553cab1e2ef8 Mon Sep 17 00:00:00 2001
From: Lynx Linden <lynx@lindenlab.com>
Date: Tue, 26 Jan 2010 10:40:17 +0000
Subject: [PATCH 112/521] EXT-4716: Added new SLapps for Home web content.

secondlife:///app/appearance - to open the My Appearance sidetray
secondlife:///app/help/{TOPIC} - to display help for a given topic

I've updated https://wiki.lindenlab.com/wiki/Viewer_2.0_SLapps
---
 indra/newview/llappearancemgr.cpp | 18 ++++++++++++++++++
 indra/newview/llviewerhelp.cpp    | 28 ++++++++++++++++++++++++++++
 2 files changed, 46 insertions(+)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 03180b6a9d5..66e9b377d94 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -35,6 +35,7 @@
 #include "llagent.h"
 #include "llagentwearables.h"
 #include "llappearancemgr.h"
+#include "llcommandhandler.h"
 #include "llfloatercustomize.h"
 #include "llgesturemgr.h"
 #include "llinventorybridge.h"
@@ -47,6 +48,23 @@
 #include "llviewerregion.h"
 #include "llwearablelist.h"
 
+// support for secondlife:///app/appearance SLapps
+class LLAppearanceHandler : public LLCommandHandler
+{
+public:
+	// requests will be throttled from a non-trusted browser
+	LLAppearanceHandler() : LLCommandHandler("appearance", UNTRUSTED_THROTTLE) {}
+
+	bool handle(const LLSD& params, const LLSD& query_map, LLMediaCtrl* web)
+	{
+		// we currently don't support any commands after the "appearance"
+		// part of the SLapp - we just show the appearance side panel
+		LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD());
+		return true;
+	}
+};
+LLAppearanceHandler gAppearanceHandler;
+
 class LLWearInventoryCategoryCallback : public LLInventoryCallback
 {
 public:
diff --git a/indra/newview/llviewerhelp.cpp b/indra/newview/llviewerhelp.cpp
index 7c491ad1541..b82538dacba 100644
--- a/indra/newview/llviewerhelp.cpp
+++ b/indra/newview/llviewerhelp.cpp
@@ -33,6 +33,7 @@
 
 #include "llviewerprecompiledheaders.h"
 
+#include "llcommandhandler.h"
 #include "llfloaterhelpbrowser.h"
 #include "llfloaterreg.h"
 #include "llfocusmgr.h"
@@ -43,6 +44,33 @@
 #include "llviewerhelputil.h"
 #include "llviewerhelp.h"
 
+// support for secondlife:///app/help/{TOPIC} SLapps
+class LLHelpHandler : public LLCommandHandler
+{
+public:
+	// requests will be throttled from a non-trusted browser
+	LLHelpHandler() : LLCommandHandler("help", UNTRUSTED_THROTTLE) {}
+
+	bool handle(const LLSD& params, const LLSD& query_map, LLMediaCtrl* web)
+	{
+		LLViewerHelp* vhelp = LLViewerHelp::getInstance();
+		if (! vhelp)
+		{
+			return false;
+		}
+
+		// get the requested help topic name, or use the fallback if none
+		std::string help_topic = vhelp->defaultTopic();
+		if (params.size() >= 1)
+		{
+			help_topic = params[0].asString();
+		}
+
+		vhelp->showTopic(help_topic);
+		return true;
+	}
+};
+LLHelpHandler gHelpHandler;
 
 //////////////////////////////
 // implement LLHelp interface
-- 
GitLab


From aad8a1bd00ff12afdfdb7f508bc57a8ea1347b3b Mon Sep 17 00:00:00 2001
From: Lynx Linden <lynx@lindenlab.com>
Date: Tue, 26 Jan 2010 10:42:54 +0000
Subject: [PATCH 113/521] EXT-4716: Updated a comment.

To say that we must explicitly support secondlife:///app/appearance/show
---
 indra/newview/llappearancemgr.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 66e9b377d94..1dec8c7bd85 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -57,8 +57,8 @@ class LLAppearanceHandler : public LLCommandHandler
 
 	bool handle(const LLSD& params, const LLSD& query_map, LLMediaCtrl* web)
 	{
-		// we currently don't support any commands after the "appearance"
-		// part of the SLapp - we just show the appearance side panel
+		// support secondlife:///app/appearance/show, but for now we just
+		// make all secondlife:///app/appearance SLapps behave this way
 		LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD());
 		return true;
 	}
-- 
GitLab


From 0a38adfd8af7d95627cd43e44901b9ae4e4e2d29 Mon Sep 17 00:00:00 2001
From: Lynx Linden <lynx@lindenlab.com>
Date: Tue, 26 Jan 2010 13:09:26 +0000
Subject: [PATCH 114/521] EXT-4678: Don't hyperlink sim URLs in About window.

Added support for specifying a black list of URLs on a per-widget
basis. URLs on this black list will not be hyperlinked in the text
widget. The About dialog adds the sim hostname to this black list.
---
 indra/llui/lltextbase.cpp        | 46 +++++++++++++++++++++++++-------
 indra/llui/lltextbase.h          |  8 ++++++
 indra/newview/llfloaterabout.cpp |  6 +++++
 3 files changed, 51 insertions(+), 9 deletions(-)

diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 47db990a372..ab0d9b2221b 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -1511,6 +1511,25 @@ void LLTextBase::setText(const LLStringExplicit &utf8str, const LLStyle::Params&
 	onValueChange(0, getLength());
 }
 
+void LLTextBase::addBlackListUrl(const std::string &url)
+{
+	mBlackListUrls.push_back(url);
+}
+
+bool LLTextBase::isBlackListUrl(const std::string &url) const
+{
+	std::vector<std::string>::const_iterator it;
+	for (it = mBlackListUrls.begin(); it != mBlackListUrls.end(); ++it)
+	{
+		const std::string &blacklist_url = *it;
+		if (url.find(blacklist_url) != std::string::npos)
+		{
+			return true;
+		}
+	}
+	return false;
+}
+
 //virtual
 std::string LLTextBase::getText() const
 {
@@ -1585,20 +1604,29 @@ void LLTextBase::appendText(const std::string &new_text, bool prepend_newline, c
 					prepend_newline = false;
 				}
 			}
-			// output the styled Url
-			appendAndHighlightText(match.getLabel(), prepend_newline, part, link_params);
-			prepend_newline = false;
 
-			// set the tooltip for the Url label
-			if (! match.getTooltip().empty())
+			// output the styled Url (unless we've been asked to suppress it)
+			if (isBlackListUrl(match.getUrl()))
+			{
+				std::string orig_url = text.substr(start, end-start);
+				appendAndHighlightText(orig_url, prepend_newline, part, style_params);
+			}
+			else
 			{
-				segment_set_t::iterator it = getSegIterContaining(getLength()-1);
-				if (it != mSegments.end())
+				appendAndHighlightText(match.getLabel(), prepend_newline, part, link_params);
+
+				// set the tooltip for the Url label
+				if (! match.getTooltip().empty())
 				{
-					LLTextSegmentPtr segment = *it;
-					segment->setToolTip(match.getTooltip());
+					segment_set_t::iterator it = getSegIterContaining(getLength()-1);
+					if (it != mSegments.end())
+						{
+							LLTextSegmentPtr segment = *it;
+							segment->setToolTip(match.getTooltip());
+						}
 				}
 			}
+			prepend_newline = false;
 
 			// move on to the rest of the text after the Url
 			if (end < (S32)text.length()) 
diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h
index 038b9eaa62b..e1c6cc36ab6 100644
--- a/indra/llui/lltextbase.h
+++ b/indra/llui/lltextbase.h
@@ -41,6 +41,7 @@
 #include "llpanel.h"
 
 #include <string>
+#include <vector>
 #include <set>
 
 #include <boost/signals2.hpp>
@@ -186,6 +187,9 @@ class LLTextBase
 	const LLFontGL*			getDefaultFont() const					{ return mDefaultFont; }
 	LLStyle::Params			getDefaultStyle();
 
+	// tell the text object to suppress auto highlighting of a specific URL
+	void                    addBlackListUrl(const std::string &url);
+
 public:
 	// Fired when a URL link is clicked
 	commit_signal_t mURLClickSignal;
@@ -308,6 +312,7 @@ class LLTextBase
 	void							updateRects();
 	void							needsScroll() { mScrollNeeded = TRUE; }
 	void							replaceUrlLabel(const std::string &url, const std::string &label);
+	bool                            isBlackListUrl(const std::string &url) const;
 
 protected:
 	// text segmentation and flow
@@ -359,6 +364,9 @@ class LLTextBase
 	LLView*						mDocumentView;
 	class LLScrollContainer*	mScroller;
 
+	// list of URLs to suppress from automatic hyperlinking
+	std::vector<std::string>    mBlackListUrls;
+
 	// transient state
 	bool						mReflowNeeded;		// need to reflow text because of change to text contents or display region
 	bool						mScrollNeeded;		// need to change scroll region because of change to cursor position
diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp
index ef69f39ad2d..04f4ddf9960 100644
--- a/indra/newview/llfloaterabout.cpp
+++ b/indra/newview/llfloaterabout.cpp
@@ -187,6 +187,12 @@ BOOL LLFloaterAbout::postBuild()
 		support << '\n' << getString("AboutTraffic", args);
 	}
 
+	// don't make the sim hostname be a hyperlink
+	if (info.has("HOSTNAME"))
+	{
+		support_widget->addBlackListUrl(info["HOSTNAME"].asString());
+	}
+	
 	support_widget->appendText(support.str(), 
 								FALSE, 
 								LLStyle::Params()
-- 
GitLab


From 71d47402514b26ea9adf768582ad7d8cfe1a1c74 Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Tue, 26 Jan 2010 16:15:26 +0200
Subject: [PATCH 115/521] Fixed EXT-4646 ([BSI] Movement controls close after
 hitting stand) - reason: fix for bug EXT-2504 (black bars present at top and
 bottom when in mouselook) (changing parent visibility of panel with
 "Stand/Stop flying" buttons) - fix: updated condition to process visibility
 of the parent of the panel with "Stand/Stop flying" buttons: only if panel is
 not attached to Move Floater 	NOTE: The same problem was for EXT-3632 (Move
 floater closes after user click on Stop Flying btn) 	Reverted that fix for
 Stop flying button to be consistent with "Stand".

--HG--
branch : product-engine
---
 indra/newview/llmoveview.cpp | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp
index 0ab3b07aea5..de8ea98e057 100644
--- a/indra/newview/llmoveview.cpp
+++ b/indra/newview/llmoveview.cpp
@@ -589,8 +589,12 @@ void LLPanelStandStopFlying::setVisible(BOOL visible)
 		updatePosition();
 	}
 
-	//change visibility of parent layout_panel to animate in/out
-	if (getParent()) getParent()->setVisible(visible);
+	// do not change parent visibility in case panel is attached into Move Floater: EXT-3632, EXT-4646
+	if (!mAttached) 
+	{
+		//change visibility of parent layout_panel to animate in/out. EXT-2504
+		if (getParent()) getParent()->setVisible(visible);
+	}
 }
 
 BOOL LLPanelStandStopFlying::handleToolTip(S32 x, S32 y, MASK mask)
@@ -614,7 +618,7 @@ void LLPanelStandStopFlying::reparent(LLFloaterMove* move_view)
 	LLPanel* parent = dynamic_cast<LLPanel*>(getParent());
 	if (!parent)
 	{
-		llwarns << "Stand/stop flying panel parent is unset" << llendl;
+		llwarns << "Stand/stop flying panel parent is unset, already attached?: " << mAttached << ", new parent: " << (move_view == NULL ? "NULL" : "Move Floater") << llendl;
 		return;
 	}
 
@@ -684,6 +688,7 @@ void LLPanelStandStopFlying::onStopFlyingButtonClick()
 	gAgent.setFlying(FALSE);
 
 	setFocus(FALSE); // EXT-482
+	setVisible(FALSE);
 }
 
 /**
-- 
GitLab


From 020f855f643a198737e7bd4066bdc1757d864a54 Mon Sep 17 00:00:00 2001
From: Lynx Linden <lynx@lindenlab.com>
Date: Tue, 26 Jan 2010 14:23:28 +0000
Subject: [PATCH 116/521] EXT-4063: Enable tear-offs for pre-login menus.

---
 indra/newview/skins/default/xui/en/menu_login.xml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml
index a0dec346a4f..5f385227581 100644
--- a/indra/newview/skins/default/xui/en/menu_login.xml
+++ b/indra/newview/skins/default/xui/en/menu_login.xml
@@ -10,6 +10,7 @@
     <menu
      create_jump_keys="true"
      label="Me"
+     tear_off="true"
      name="File">
         <menu_item_call
          label="Preferences"
@@ -39,6 +40,7 @@
     <menu
      create_jump_keys="true"
      label="Help"
+     tear_off="true"
      name="Help">
         <menu_item_call
          label="[SECOND_LIFE] Help"
-- 
GitLab


From 05b91f636bee32f6343765dfbae96b103e14f5a2 Mon Sep 17 00:00:00 2001
From: Eugene Mutavchi <emutavchi@productengine.com>
Date: Tue, 26 Jan 2010 16:30:51 +0200
Subject: [PATCH 117/521] Fixed low bug EXT-4354(Dragging landmarks into
 landmark folders doesn't scroll window)

--HG--
branch : product-engine
---
 indra/llui/llaccordionctrl.cpp    | 75 +++++++++++++++++++++++++++++++
 indra/llui/llaccordionctrl.h      |  9 ++++
 indra/llui/llaccordionctrltab.cpp | 34 ++++++++++++++
 indra/llui/llaccordionctrltab.h   |  1 +
 4 files changed, 119 insertions(+)

diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp
index b5e870228ad..d0c73fbfbce 100644
--- a/indra/llui/llaccordionctrl.cpp
+++ b/indra/llui/llaccordionctrl.cpp
@@ -63,6 +63,8 @@ static LLDefaultChildRegistry::Register<LLAccordionCtrl>	t2("accordion");
 
 LLAccordionCtrl::LLAccordionCtrl(const Params& params):LLPanel(params)
  , mFitParent(params.fit_parent)
+ , mAutoScrolling( false )
+ , mAutoScrollRate( 0.f )
 {
   mSingleExpansion = params.single_expansion;
 	if(mFitParent && !mSingleExpansion)
@@ -72,6 +74,8 @@ LLAccordionCtrl::LLAccordionCtrl(const Params& params):LLPanel(params)
 }
 
 LLAccordionCtrl::LLAccordionCtrl() : LLPanel()
+ , mAutoScrolling( false )
+ , mAutoScrollRate( 0.f )
 {
 	mSingleExpansion = false;
 	mFitParent = false;
@@ -81,6 +85,19 @@ LLAccordionCtrl::LLAccordionCtrl() : LLPanel()
 //---------------------------------------------------------------------------------
 void LLAccordionCtrl::draw()
 {
+	if (mAutoScrolling)
+	{
+		// add acceleration to autoscroll
+		mAutoScrollRate = llmin(mAutoScrollRate + (LLFrameTimer::getFrameDeltaTimeF32() * AUTO_SCROLL_RATE_ACCEL), MAX_AUTO_SCROLL_RATE);
+	}
+	else
+	{
+		// reset to minimum for next time
+		mAutoScrollRate = MIN_AUTO_SCROLL_RATE;
+	}
+	// clear this flag to be set on next call to autoScroll
+	mAutoScrolling = false;
+
 	LLRect local_rect(0, getRect().getHeight(), getRect().getWidth(), 0);
 	
 	LLLocalClipRect clip(local_rect);
@@ -420,6 +437,64 @@ BOOL LLAccordionCtrl::handleKeyHere			(KEY key, MASK mask)
 	return LLPanel::handleKeyHere(key,mask);
 }
 
+BOOL LLAccordionCtrl::handleDragAndDrop		(S32 x, S32 y, MASK mask,
+											 BOOL drop,
+											 EDragAndDropType cargo_type,
+											 void* cargo_data,
+											 EAcceptance* accept,
+											 std::string& tooltip_msg)
+{
+	// Scroll folder view if needed.  Never accepts a drag or drop.
+	*accept = ACCEPT_NO;
+	BOOL handled = autoScroll(x, y);
+
+	if( !handled )
+	{
+		handled = childrenHandleDragAndDrop(x, y, mask, drop, cargo_type,
+											cargo_data, accept, tooltip_msg) != NULL;
+	}
+	return TRUE;
+}
+
+BOOL LLAccordionCtrl::autoScroll		(S32 x, S32 y)
+{
+	static LLUICachedControl<S32> scrollbar_size ("UIScrollbarSize", 0);
+
+	bool scrolling = false;
+	if( mScrollbar->getVisible() )
+	{
+		LLRect rect_local( 0, getRect().getHeight(), getRect().getWidth() - scrollbar_size, 0 );
+		LLRect screen_local_extents;
+
+		// clip rect against root view
+		screenRectToLocal(getRootView()->getLocalRect(), &screen_local_extents);
+		rect_local.intersectWith(screen_local_extents);
+
+		// autoscroll region should take up no more than one third of visible scroller area
+		S32 auto_scroll_region_height = llmin(rect_local.getHeight() / 3, 10);
+		S32 auto_scroll_speed = llround(mAutoScrollRate * LLFrameTimer::getFrameDeltaTimeF32());
+
+		LLRect bottom_scroll_rect = screen_local_extents;
+		bottom_scroll_rect.mTop = rect_local.mBottom + auto_scroll_region_height;
+		if( bottom_scroll_rect.pointInRect( x, y ) && (mScrollbar->getDocPos() < mScrollbar->getDocPosMax()) )
+		{
+			mScrollbar->setDocPos( mScrollbar->getDocPos() + auto_scroll_speed );
+			mAutoScrolling = true;
+			scrolling = true;
+		}
+
+		LLRect top_scroll_rect = screen_local_extents;
+		top_scroll_rect.mBottom = rect_local.mTop - auto_scroll_region_height;
+		if( top_scroll_rect.pointInRect( x, y ) && (mScrollbar->getDocPos() > 0) )
+		{
+			mScrollbar->setDocPos( mScrollbar->getDocPos() - auto_scroll_speed );
+			mAutoScrolling = true;
+			scrolling = true;
+		}
+	}
+	return scrolling;
+}
+
 void	LLAccordionCtrl::updateLayout	(S32 width, S32 height)
 {
 	S32 panel_top = height - BORDER_MARGIN ;
diff --git a/indra/llui/llaccordionctrl.h b/indra/llui/llaccordionctrl.h
index 4cb0f382813..d57a42df324 100644
--- a/indra/llui/llaccordionctrl.h
+++ b/indra/llui/llaccordionctrl.h
@@ -81,6 +81,11 @@ class LLAccordionCtrl: public LLPanel
 	virtual BOOL handleRightMouseDown	( S32 x, S32 y, MASK mask); 
 	virtual BOOL handleScrollWheel		( S32 x, S32 y, S32 clicks );
 	virtual BOOL handleKeyHere			(KEY key, MASK mask);
+	virtual BOOL handleDragAndDrop		(S32 x, S32 y, MASK mask, BOOL drop,
+										 EDragAndDropType cargo_type,
+										 void* cargo_data,
+										 EAcceptance* accept,
+										 std::string& tooltip_msg);
 	//
 
 	// Call reshape after changing splitter's size
@@ -112,11 +117,15 @@ class LLAccordionCtrl: public LLPanel
 	void	showScrollbar			(S32 width, S32 height);
 	void	hideScrollbar			(S32 width, S32 height);
 
+	BOOL	autoScroll				(S32 x, S32 y);
+
 private:
 	LLRect			mInnerRect;
 	LLScrollbar*	mScrollbar;
 	bool			mSingleExpansion;
 	bool			mFitParent;
+	bool			mAutoScrolling;
+	F32				mAutoScrollRate;
 };
 
 
diff --git a/indra/llui/llaccordionctrltab.cpp b/indra/llui/llaccordionctrltab.cpp
index 4bfe44135aa..daa9e08f140 100644
--- a/indra/llui/llaccordionctrltab.cpp
+++ b/indra/llui/llaccordionctrltab.cpp
@@ -45,6 +45,7 @@ static const std::string DD_HEADER_NAME = "dd_header";
 static const S32 HEADER_HEIGHT = 20;
 static const S32 HEADER_IMAGE_LEFT_OFFSET = 5;
 static const S32 HEADER_TEXT_LEFT_OFFSET = 30;
+static const F32 AUTO_OPEN_TIME = 1.f;
 
 static LLDefaultChildRegistry::Register<LLAccordionCtrlTab> t1("accordion_tab");
 
@@ -73,6 +74,11 @@ class LLAccordionCtrlTab::LLAccordionCtrlTabHeader : public LLUICtrl
 	virtual void onMouseEnter(S32 x, S32 y, MASK mask);
 	virtual void onMouseLeave(S32 x, S32 y, MASK mask);
 	virtual BOOL handleKey(KEY key, MASK mask, BOOL called_from_parent);
+	virtual BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
+								   EDragAndDropType cargo_type,
+								   void* cargo_data,
+								   EAcceptance* accept,
+								   std::string& tooltip_msg);
 private:
 
 	LLTextBox* mHeaderTextbox;
@@ -92,6 +98,8 @@ class LLAccordionCtrlTab::LLAccordionCtrlTabHeader : public LLUICtrl
 	LLUIColor mHeaderBGColor;
 
 	bool mNeedsHighlight;
+
+	LLFrameTimer mAutoOpenTimer;
 };
 
 LLAccordionCtrlTab::LLAccordionCtrlTabHeader::Params::Params()
@@ -209,6 +217,7 @@ void LLAccordionCtrlTab::LLAccordionCtrlTabHeader::onMouseLeave(S32 x, S32 y, MA
 {
 	LLUICtrl::onMouseLeave(x, y, mask);
 	mNeedsHighlight = false;
+	mAutoOpenTimer.stop();
 }
 BOOL LLAccordionCtrlTab::LLAccordionCtrlTabHeader::handleKey(KEY key, MASK mask, BOOL called_from_parent)
 {
@@ -218,8 +227,33 @@ BOOL LLAccordionCtrlTab::LLAccordionCtrlTabHeader::handleKey(KEY key, MASK mask,
 	}
 	return LLUICtrl::handleKey(key, mask, called_from_parent);
 }
+BOOL LLAccordionCtrlTab::LLAccordionCtrlTabHeader::handleDragAndDrop(S32 x, S32 y, MASK mask,
+																	 BOOL drop,
+																	 EDragAndDropType cargo_type,
+																	 void* cargo_data,
+																	 EAcceptance* accept,
+																	 std::string& tooltip_msg)
+{
+	LLAccordionCtrlTab* parent = dynamic_cast<LLAccordionCtrlTab*>(getParent());
 
+	if ( parent && !parent->getDisplayChildren() && parent->getCollapsible() && parent->canOpenClose() )
+	{
+		if (mAutoOpenTimer.getStarted())
+		{
+			if (mAutoOpenTimer.getElapsedTimeF32() > AUTO_OPEN_TIME)
+			{
+				parent->changeOpenClose(false);
+				mAutoOpenTimer.stop();
+				return TRUE;
+			}
+		}
+		else
+			mAutoOpenTimer.start();
+	}
 
+	return LLUICtrl::handleDragAndDrop(x, y, mask, drop, cargo_type,
+									   cargo_data, accept, tooltip_msg);
+}
 LLAccordionCtrlTab::Params::Params()
 	: title("title")
 	,display_children("expanded", true)
diff --git a/indra/llui/llaccordionctrltab.h b/indra/llui/llaccordionctrltab.h
index b200d43438b..2e0260ab16d 100644
--- a/indra/llui/llaccordionctrltab.h
+++ b/indra/llui/llaccordionctrltab.h
@@ -115,6 +115,7 @@ class LLAccordionCtrlTab : public LLUICtrl
 	void changeOpenClose(bool is_open);
 
 	void canOpenClose(bool can_open_close) { mCanOpenClose = can_open_close;};
+	bool canOpenClose() const { return mCanOpenClose; };
 
 	virtual BOOL postBuild();
 
-- 
GitLab


From 3a0226824b7d03f7ad745af995066cfa99833cbc Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Tue, 26 Jan 2010 17:04:13 +0200
Subject: [PATCH 118/521] Fixed normal bug EXT-4718 ( Stop Flying button is
 displayed in the mouse look mode) - restore base processing of visibility of
 Panel with "stand/stop flying" buttons broken in EXT-2504

--HG--
branch : product-engine
---
 indra/newview/llmoveview.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp
index de8ea98e057..5981baab60e 100644
--- a/indra/newview/llmoveview.cpp
+++ b/indra/newview/llmoveview.cpp
@@ -595,6 +595,10 @@ void LLPanelStandStopFlying::setVisible(BOOL visible)
 		//change visibility of parent layout_panel to animate in/out. EXT-2504
 		if (getParent()) getParent()->setVisible(visible);
 	}
+
+	// also change own visibility to avoid displaying the panel in mouselook (broken when EXT-2504 was implemented).
+	// See EXT-4718.
+	LLPanel::setVisible(visible);
 }
 
 BOOL LLPanelStandStopFlying::handleToolTip(S32 x, S32 y, MASK mask)
-- 
GitLab


From e8b4a14b1ddf8225909a577a1060c9fbd9456dbe Mon Sep 17 00:00:00 2001
From: Dmitry Zaporozhan <dzaporozhan@productengine.com>
Date: Tue, 26 Jan 2010 17:07:12 +0200
Subject: [PATCH 119/521] Fixed major bug EXT-4719 - Crash in LLTextBase after
 showing popup menu for link.

--HG--
branch : product-engine
---
 indra/llui/lltextbase.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 47db990a372..f7da9f089a5 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -244,7 +244,8 @@ LLTextBase::LLTextBase(const LLTextBase::Params &p)
 
 LLTextBase::~LLTextBase()
 {
-	delete mPopupMenu;
+	// Menu, like any other LLUICtrl, is deleted by its parent - gMenuHolder
+
 	clearSegments();
 }
 
-- 
GitLab


From 4c82ec8088ec5972fdfdbcef8b6e985156d71de3 Mon Sep 17 00:00:00 2001
From: Alexei Arabadji <aarabadji@productengine.com>
Date: Tue, 26 Jan 2010 17:22:18 +0200
Subject: [PATCH 120/521] =?UTF-8?q?implemented=20EXT-4588=20=E2=80=9CRedir?=
 =?UTF-8?q?ect=20messages=20that=20went=20to=20the=20Communicate=20floater?=
 =?UTF-8?q?=E2=80=9D;?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

--HG--
branch : product-engine
---
 indra/newview/llcompilequeue.cpp  | 14 ++++++--------
 indra/newview/llviewermenu.cpp    | 14 ++++++--------
 indra/newview/llviewermessage.cpp | 31 +++++++++++++------------------
 3 files changed, 25 insertions(+), 34 deletions(-)

diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp
index 47f1b7c9f54..5c05a541204 100644
--- a/indra/newview/llcompilequeue.cpp
+++ b/indra/newview/llcompilequeue.cpp
@@ -446,19 +446,17 @@ void LLFloaterCompileQueue::scriptArrived(LLVFS *vfs, const LLUUID& asset_id,
 
 		if( LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE == status )
 		{
-			//TODO* CHAT: how to show this?
-			//LLSD args;
-			//args["MESSAGE"] = LLTrans::getString("CompileQueueScriptNotFound);
-			//LLNotificationsUtil::add("SystemMessage", args);
+			LLSD args;
+			args["MESSAGE"] = LLTrans::getString("CompileQueueScriptNotFound");
+			LLNotificationsUtil::add("SystemMessage", args);
 			
 			buffer = LLTrans::getString("CompileQueueProblemDownloading") + (": ") + data->mScriptName;
 		}
 		else if (LL_ERR_INSUFFICIENT_PERMISSIONS == status)
 		{
-			//TODO* CHAT: how to show this?
-			//LLSD args;
-			//args["MESSAGE"] = LLTrans::getString("CompileQueueScriptNotFound);
-			//LLNotificationsUtil::add("SystemMessage", args);
+			LLSD args;
+			args["MESSAGE"] = LLTrans::getString("CompileQueueInsufficientPermDownload");
+			LLNotificationsUtil::add("SystemMessage", args);
 
 			buffer = LLTrans::getString("CompileQueueInsufficientPermFor") + (": ") + data->mScriptName;
 		}
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 54de693222a..96251f75714 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -6389,10 +6389,9 @@ void handle_selected_texture_info(void*)
    		msg.assign("Texture info for: ");
    		msg.append(node->mName);
 
-		//TODO* CHAT: how to show this?
-		//LLSD args;
-		//args["MESSAGE"] = msg;
-		//LLNotificationsUtil::add("SystemMessage", args);
+		LLSD args;
+		args["MESSAGE"] = msg;
+		LLNotificationsUtil::add("SystemMessage", args);
 	   
    		U8 te_count = node->getObject()->getNumTEs();
    		// map from texture ID to list of faces using it
@@ -6425,10 +6424,9 @@ void handle_selected_texture_info(void*)
    				msg.append( llformat("%d ", (S32)(it->second[i])));
    			}
 
-			//TODO* CHAT: how to show this?
-			//LLSD args;
-			//args["MESSAGE"] = msg;
-			//LLNotificationsUtil::add("SystemMessage", args);
+			LLSD args;
+			args["MESSAGE"] = msg;
+			LLNotificationsUtil::add("SystemMessage", args);
    		}
 	}
 }
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 1d3ac3fb0fb..d6ce356c4b0 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -1365,10 +1365,9 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const
 			if (check_offer_throttle(mFromName, true))
 			{
 				log_message = chatHistory_string + " " + LLTrans::getString("InvOfferGaveYou") + " " + mDesc + LLTrans::getString(".");
-				//TODO* CHAT: how to show this?
-				//LLSD args;
-				//args["MESSAGE"] = log_message;
-				//LLNotificationsUtil::add("SystemMessage", args);
+				LLSD args;
+				args["MESSAGE"] = log_message;
+				LLNotificationsUtil::add("SystemMessage", args);
 			}
 			
 			// we will want to open this item when it comes back.
@@ -1410,11 +1409,10 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const
 			// send the message
 			msg->sendReliable(mHost);
 			
-			//TODO* CHAT: how to show this?
-			//log_message = LLTrans::getString("InvOfferYouDecline") + " " + mDesc + " " + LLTrans::getString("InvOfferFrom") + " " + mFromName +".";
-			//LLSD args;
-			//args["MESSAGE"] = log_message;
-			//LLNotificationsUtil::add("SystemMessage", args);
+			log_message = LLTrans::getString("InvOfferYouDecline") + " " + mDesc + " " + LLTrans::getString("InvOfferFrom") + " " + mFromName +".";
+			LLSD args;
+			args["MESSAGE"] = log_message;
+			LLNotificationsUtil::add("SystemMessage", args);
 			
 			if (busy &&	(!mFromGroup && !mFromObject))
 			{
@@ -1868,11 +1866,9 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 				// history.  Pretend the chat is from a local agent,
 				// so it will go into the history but not be shown on screen.
 
-				//TODO* CHAT: how to show this?
-				//and this is not system message...
-				//LLSD args;
-				//args["MESSAGE"] = buffer;
-				//LLNotificationsUtil::add("SystemMessage", args);
+				LLSD args;
+				args["MESSAGE"] = buffer;
+				LLNotificationsUtil::add("SystemMessageTip", args);
 			}
 		}
 		break;
@@ -3103,10 +3099,9 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)
 		{
 			// Chat the "back" SLURL. (DEV-4907)
 
-			//TODO* CHAT: how to show this?
-			//LLSD args;
-			//args["MESSAGE"] = message;
-			//LLNotificationsUtil::add("SystemMessage", args);
+			LLSD args;
+			args["MESSAGE"] = "Teleport completed from " + gAgent.getTeleportSourceSLURL();
+			LLNotificationsUtil::add("SystemMessageTip", args);
 
 			// Set the new position
 			avatarp->setPositionAgent(agent_pos);
-- 
GitLab


From 43bb3d00ecba66fe3dd9fa5a2d487ffc5633ed5e Mon Sep 17 00:00:00 2001
From: Alexei Arabadji <aarabadji@productengine.com>
Date: Tue, 26 Jan 2010 18:25:42 +0200
Subject: [PATCH 121/521] =?UTF-8?q?fixed=20EXT-4643=20=E2=80=9CIM=20toasts?=
 =?UTF-8?q?=20don't=20appear=20after=20few=20teleport=20offers=20were=20se?=
 =?UTF-8?q?nt=20to=20that=20avatar=E2=80=9D=20corrected=20checking=20opene?=
 =?UTF-8?q?d=20active=20IM=20session;=20corrected=20restoring=20active=20I?=
 =?UTF-8?q?M=20session=20after=20logging=20IM=20notification;?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

--HG--
branch : product-engine
---
 indra/newview/llimview.cpp                  | 3 ++-
 indra/newview/llnotificationhandlerutil.cpp | 9 ++++++++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 1b1e6501c0a..f90a51c3f37 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -95,7 +95,8 @@ void toast_callback(const LLSD& msg){
 	}
 
 	// check whether incoming IM belongs to an active session or not
-	if (LLIMModel::getInstance()->getActiveSessionID() == msg["session_id"])
+	if (LLIMModel::getInstance()->getActiveSessionID().notNull()
+			&& LLIMModel::getInstance()->getActiveSessionID() == msg["session_id"])
 	{
 		return;
 	}
diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp
index fba57736020..02f948eca9d 100644
--- a/indra/newview/llnotificationhandlerutil.cpp
+++ b/indra/newview/llnotificationhandlerutil.cpp
@@ -123,7 +123,14 @@ void LLHandlerUtil::logToIM(const EInstantMessage& session_type,
 				message);
 
 		// restore active session id
-		LLIMModel::instance().setActiveSessionID(active_session_id);
+		if (active_session_id.isNull())
+		{
+			LLIMModel::instance().resetActiveSessionID();
+		}
+		else
+		{
+			LLIMModel::instance().setActiveSessionID(active_session_id);
+		}
 	}
 }
 
-- 
GitLab


From 5344f82e282ed4ce1c016c1e164f674f64bb78be Mon Sep 17 00:00:00 2001
From: Sergei Litovchuk <slitovchuk@productengine.com>
Date: Tue, 26 Jan 2010 20:17:44 +0200
Subject: [PATCH 122/521] Fixed normal bug (EXT-4720) N/A is displayed in the
 Create Landmark panel while data is retrieved.

--HG--
branch : product-engine
---
 indra/newview/llpanellandmarkinfo.cpp |  8 +--
 indra/newview/llpanelplaceinfo.cpp    | 18 ++++--
 indra/newview/llpanelplaceprofile.cpp | 80 ++++++++++++++-------------
 3 files changed, 57 insertions(+), 49 deletions(-)

diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp
index 9654e176598..c792fd4fe3a 100644
--- a/indra/newview/llpanellandmarkinfo.cpp
+++ b/indra/newview/llpanellandmarkinfo.cpp
@@ -98,10 +98,10 @@ void LLPanelLandmarkInfo::resetLocation()
 {
 	LLPanelPlaceInfo::resetLocation();
 
-	std::string not_available = getString("not_available");
-	mCreator->setText(not_available);
-	mOwner->setText(not_available);
-	mCreated->setText(not_available);
+	std::string loading = LLTrans::getString("LoadingData");
+	mCreator->setText(loading);
+	mOwner->setText(loading);
+	mCreated->setText(loading);
 	mLandmarkTitle->setText(LLStringUtil::null);
 	mLandmarkTitleEditor->setText(LLStringUtil::null);
 	mNotesEditor->setText(LLStringUtil::null);
diff --git a/indra/newview/llpanelplaceinfo.cpp b/indra/newview/llpanelplaceinfo.cpp
index 0c10f11bfcb..5f75668722e 100644
--- a/indra/newview/llpanelplaceinfo.cpp
+++ b/indra/newview/llpanelplaceinfo.cpp
@@ -43,6 +43,8 @@
 #include "lliconctrl.h"
 #include "lltextbox.h"
 
+#include "lltrans.h"
+
 #include "llagent.h"
 #include "llexpandabletextbox.h"
 #include "llpanelpick.h"
@@ -99,12 +101,12 @@ void LLPanelPlaceInfo::resetLocation()
 	mRequestedID.setNull();
 	mPosRegion.clearVec();
 
-	std::string not_available = getString("not_available");
-	mMaturityRatingIcon->setValue(not_available);
-	mMaturityRatingText->setValue(not_available);
-	mRegionName->setText(not_available);
-	mParcelName->setText(not_available);
-	mDescEditor->setText(not_available);
+	std::string loading = LLTrans::getString("LoadingData");
+	mMaturityRatingIcon->setValue(loading);
+	mMaturityRatingText->setValue(loading);
+	mRegionName->setText(loading);
+	mParcelName->setText(loading);
+	mDescEditor->setText(loading);
 
 	mSnapshotCtrl->setImageAssetID(LLUUID::null);
 	mSnapshotCtrl->setFallbackImageName("default_land_picture.j2c");
@@ -206,6 +208,10 @@ void LLPanelPlaceInfo::processParcelInfo(const LLParcelData& parcel_data)
 	{
 		mDescEditor->setText(parcel_data.desc);
 	}
+	else
+	{
+		mDescEditor->setText(getString("not_available"));
+	}
 
 	S32 region_x;
 	S32 region_y;
diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp
index d892e2885b4..3c798639d4e 100644
--- a/indra/newview/llpanelplaceprofile.cpp
+++ b/indra/newview/llpanelplaceprofile.cpp
@@ -42,6 +42,8 @@
 #include "lltextbox.h"
 #include "lltexteditor.h"
 
+#include "lltrans.h"
+
 #include "llaccordionctrl.h"
 #include "llaccordionctrltab.h"
 #include "llagent.h"
@@ -163,45 +165,45 @@ void LLPanelPlaceProfile::resetLocation()
 	mForSalePanel->setVisible(FALSE);
 	mYouAreHerePanel->setVisible(FALSE);
 
-	std::string not_available = getString("not_available");
-	mParcelOwner->setValue(not_available);
-
-	mParcelRatingIcon->setValue(not_available);
-	mParcelRatingText->setText(not_available);
-	mVoiceIcon->setValue(not_available);
-	mVoiceText->setText(not_available);
-	mFlyIcon->setValue(not_available);
-	mFlyText->setText(not_available);
-	mPushIcon->setValue(not_available);
-	mPushText->setText(not_available);
-	mBuildIcon->setValue(not_available);
-	mBuildText->setText(not_available);
-	mScriptsIcon->setValue(not_available);
-	mScriptsText->setText(not_available);
-	mDamageIcon->setValue(not_available);
-	mDamageText->setText(not_available);
-
-	mRegionNameText->setValue(not_available);
-	mRegionTypeText->setValue(not_available);
-	mRegionRatingIcon->setValue(not_available);
-	mRegionRatingText->setValue(not_available);
-	mRegionOwnerText->setValue(not_available);
-	mRegionGroupText->setValue(not_available);
-
-	mEstateNameText->setValue(not_available);
-	mEstateRatingText->setValue(not_available);
-	mEstateOwnerText->setValue(not_available);
-	mCovenantText->setValue(not_available);
-
-	mSalesPriceText->setValue(not_available);
-	mAreaText->setValue(not_available);
-	mTrafficText->setValue(not_available);
-	mPrimitivesText->setValue(not_available);
-	mParcelScriptsText->setValue(not_available);
-	mTerraformLimitsText->setValue(not_available);
-	mSubdivideText->setValue(not_available);
-	mResaleText->setValue(not_available);
-	mSaleToText->setValue(not_available);
+	std::string loading = LLTrans::getString("LoadingData");
+	mParcelOwner->setValue(loading);
+
+	mParcelRatingIcon->setValue(loading);
+	mParcelRatingText->setText(loading);
+	mVoiceIcon->setValue(loading);
+	mVoiceText->setText(loading);
+	mFlyIcon->setValue(loading);
+	mFlyText->setText(loading);
+	mPushIcon->setValue(loading);
+	mPushText->setText(loading);
+	mBuildIcon->setValue(loading);
+	mBuildText->setText(loading);
+	mScriptsIcon->setValue(loading);
+	mScriptsText->setText(loading);
+	mDamageIcon->setValue(loading);
+	mDamageText->setText(loading);
+
+	mRegionNameText->setValue(loading);
+	mRegionTypeText->setValue(loading);
+	mRegionRatingIcon->setValue(loading);
+	mRegionRatingText->setValue(loading);
+	mRegionOwnerText->setValue(loading);
+	mRegionGroupText->setValue(loading);
+
+	mEstateNameText->setValue(loading);
+	mEstateRatingText->setValue(loading);
+	mEstateOwnerText->setValue(loading);
+	mCovenantText->setValue(loading);
+
+	mSalesPriceText->setValue(loading);
+	mAreaText->setValue(loading);
+	mTrafficText->setValue(loading);
+	mPrimitivesText->setValue(loading);
+	mParcelScriptsText->setValue(loading);
+	mTerraformLimitsText->setValue(loading);
+	mSubdivideText->setValue(loading);
+	mResaleText->setValue(loading);
+	mSaleToText->setValue(loading);
 }
 
 // virtual
-- 
GitLab


From dfad0f4e67821670cfc806dd2f8fcdf9a0d96530 Mon Sep 17 00:00:00 2001
From: Vadim Savchuk <vsavchuk@productengine.com>
Date: Tue, 26 Jan 2010 20:17:45 +0200
Subject: [PATCH 123/521] Fixed critical bug EXT-4663 ([BSI] Inviting Residents
 to groups produces error 100% of time). Overriden LLScrollListItem::getUUID()
 in LLNameListCtrl so that you can get correct ID of a name list item.

--HG--
branch : product-engine
---
 indra/llui/llscrolllistctrl.cpp     |  8 ++++++--
 indra/llui/llscrolllistctrl.h       |  1 +
 indra/llui/llscrolllistitem.h       |  2 +-
 indra/newview/llnamelistctrl.cpp    | 21 ++++++++-------------
 indra/newview/llnamelistctrl.h      | 21 ++++++++++++++++++++-
 indra/newview/llpanelgrouproles.cpp | 10 +++++-----
 6 files changed, 41 insertions(+), 22 deletions(-)

diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp
index 71bba575843..78386220d93 100644
--- a/indra/llui/llscrolllistctrl.cpp
+++ b/indra/llui/llscrolllistctrl.cpp
@@ -2760,9 +2760,13 @@ LLScrollListItem* LLScrollListCtrl::addElement(const LLSD& element, EAddPosition
 
 LLScrollListItem* LLScrollListCtrl::addRow(const LLScrollListItem::Params& item_p, EAddPosition pos)
 {
-	if (!item_p.validateBlock()) return NULL;
-
 	LLScrollListItem *new_item = new LLScrollListItem(item_p);
+	return addRow(new_item, item_p, pos);
+}
+
+LLScrollListItem* LLScrollListCtrl::addRow(LLScrollListItem *new_item, const LLScrollListItem::Params& item_p, EAddPosition pos)
+{
+	if (!item_p.validateBlock() || !new_item) return NULL;
 	new_item->setNumColumns(mColumns.size());
 
 	// Add any columns we don't already have
diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h
index 907dc90bead..d2d23793281 100644
--- a/indra/llui/llscrolllistctrl.h
+++ b/indra/llui/llscrolllistctrl.h
@@ -148,6 +148,7 @@ class LLScrollListCtrl : public LLUICtrl, public LLEditMenuHandler,
 	// "columns" => [ "column" => column name, "value" => value, "type" => type, "font" => font, "font-style" => style ], "id" => uuid
 	// Creates missing columns automatically.
 	virtual LLScrollListItem* addElement(const LLSD& element, EAddPosition pos = ADD_BOTTOM, void* userdata = NULL);
+	virtual LLScrollListItem* addRow(LLScrollListItem *new_item, const LLScrollListItem::Params& value, EAddPosition pos = ADD_BOTTOM);
 	virtual LLScrollListItem* addRow(const LLScrollListItem::Params& value, EAddPosition pos = ADD_BOTTOM);
 	// Simple add element. Takes a single array of:
 	// [ "value" => value, "font" => font, "font-style" => style ]
diff --git a/indra/llui/llscrolllistitem.h b/indra/llui/llscrolllistitem.h
index 15b86cc945d..25ce846d90f 100644
--- a/indra/llui/llscrolllistitem.h
+++ b/indra/llui/llscrolllistitem.h
@@ -95,7 +95,7 @@ class LLScrollListItem
 	void	setUserdata( void* userdata )	{ mUserdata = userdata; }
 	void*	getUserdata() const 			{ return mUserdata; }
 
-	LLUUID	getUUID() const					{ return mItemValue.asUUID(); }
+	virtual LLUUID	getUUID() const			{ return mItemValue.asUUID(); }
 	LLSD	getValue() const				{ return mItemValue; }
 	
 	void	setRect(LLRect rect)			{ mRectangle = rect; }
diff --git a/indra/newview/llnamelistctrl.cpp b/indra/newview/llnamelistctrl.cpp
index 6375362ae28..9f04558d508 100644
--- a/indra/newview/llnamelistctrl.cpp
+++ b/indra/newview/llnamelistctrl.cpp
@@ -148,7 +148,7 @@ BOOL LLNameListCtrl::handleToolTip(S32 x, S32 y, MASK mask)
 		&& column_index == mNameColumnIndex)
 	{
 		// ...this is the column with the avatar name
-		LLUUID avatar_id = getItemId(hit_item);
+		LLUUID avatar_id = hit_item->getUUID();
 		if (avatar_id.notNull())
 		{
 			// ...valid avatar id
@@ -230,14 +230,15 @@ LLScrollListItem* LLNameListCtrl::addNameItemRow(
 	std::string& suffix)
 {
 	LLUUID id = name_item.value().asUUID();
-	LLScrollListItem* item = NULL;
+	LLNameListItem* item = NULL;
 
 	// Store item type so that we can invoke the proper inspector.
 	// *TODO Vadim: Is there a more proper way of storing additional item data?
 	{
-		LLNameListCtrl::NameItem name_item_(name_item);
-		name_item_.value = LLSD().with("uuid", id).with("is_group", name_item.target() == GROUP);
-		item = LLScrollListCtrl::addRow(name_item_, pos);
+		LLNameListCtrl::NameItem item_p(name_item);
+		item_p.value = LLSD().with("uuid", id).with("is_group", name_item.target() == GROUP);
+		item = new LLNameListItem(item_p);
+		LLScrollListCtrl::addRow(item, item_p, pos);
 	}
 
 	if (!item) return NULL;
@@ -298,7 +299,7 @@ void LLNameListCtrl::removeNameItem(const LLUUID& agent_id)
 	for (item_list::iterator it = getItemList().begin(); it != getItemList().end(); it++)
 	{
 		LLScrollListItem* item = *it;
-		if (getItemId(item) == agent_id)
+		if (item->getUUID() == agent_id)
 		{
 			idx = getItemIndex(item);
 			break;
@@ -335,7 +336,7 @@ void LLNameListCtrl::refresh(const LLUUID& id, const std::string& first,
 	for (iter = getItemList().begin(); iter != getItemList().end(); iter++)
 	{
 		LLScrollListItem* item = *iter;
-		if (getItemId(item) == id)
+		if (item->getUUID() == id)
 		{
 			LLScrollListCell* cell = (LLScrollListCell*)item->getColumn(0);
 			cell = item->getColumn(mNameColumnIndex);
@@ -375,9 +376,3 @@ void LLNameListCtrl::updateColumns()
 		}
 	}
 }
-
-// static
-LLUUID LLNameListCtrl::getItemId(LLScrollListItem* item)
-{
-	return item->getValue()["uuid"].asUUID();
-}
diff --git a/indra/newview/llnamelistctrl.h b/indra/newview/llnamelistctrl.h
index 192a3a5afae..23b1cb68975 100644
--- a/indra/newview/llnamelistctrl.h
+++ b/indra/newview/llnamelistctrl.h
@@ -122,7 +122,6 @@ class LLNameListCtrl
 	/*virtual*/ void updateColumns();
 private:
 	void showInspector(const LLUUID& avatar_id, bool is_group);
-	static LLUUID getItemId(LLScrollListItem* item);
 
 private:
 	S32    			mNameColumnIndex;
@@ -130,4 +129,24 @@ class LLNameListCtrl
 	BOOL			mAllowCallingCardDrop;
 };
 
+/**
+ * LLNameListCtrl item
+ * 
+ * We don't use LLScrollListItem to be able to override getUUID(), which is needed
+ * because the name list item value is not simply an UUID but a map (uuid, is_group).
+ */
+class LLNameListItem : public LLScrollListItem
+{
+public:
+	LLUUID	getUUID() const		{ return getValue()["uuid"].asUUID(); }
+
+protected:
+	friend class LLNameListCtrl;
+
+	LLNameListItem( const LLScrollListItem::Params& p )
+	:	LLScrollListItem(p)
+	{
+	}
+};
+
 #endif
diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp
index 45f0381d6fd..c6287472fed 100644
--- a/indra/newview/llpanelgrouproles.cpp
+++ b/indra/newview/llpanelgrouproles.cpp
@@ -867,7 +867,7 @@ void LLPanelGroupMembersSubTab::handleMemberSelect()
 	for (itor = selection.begin();
 		 itor != selection.end(); ++itor)
 	{
-		LLUUID member_id = (*itor)->getValue()["uuid"];
+		LLUUID member_id = (*itor)->getUUID();
 
 		selected_members.push_back( member_id );
 		// Get this member's power mask including any unsaved changes
@@ -1093,7 +1093,7 @@ void LLPanelGroupMembersSubTab::handleEjectMembers()
 	for (itor = selection.begin() ; 
 		 itor != selection.end(); ++itor)
 	{
-		LLUUID member_id = (*itor)->getValue()["uuid"];
+		LLUUID member_id = (*itor)->getUUID();
 		selected_members.push_back( member_id );
 	}
 
@@ -1151,7 +1151,7 @@ void LLPanelGroupMembersSubTab::handleRoleCheck(const LLUUID& role_id,
 		 itor != selection.end(); ++itor)
 	{
 
-		member_id = (*itor)->getValue()["uuid"];
+		member_id = (*itor)->getUUID();
 
 		//see if we requested a change for this member before
 		if ( mMemberRoleChangeData.find(member_id) == mMemberRoleChangeData.end() )
@@ -1242,7 +1242,7 @@ void LLPanelGroupMembersSubTab::handleMemberDoubleClick()
 	LLScrollListItem* selected = mMembersList->getFirstSelected();
 	if (selected)
 	{
-		LLUUID member_id = selected->getValue()["uuid"];
+		LLUUID member_id = selected->getUUID();
 		LLAvatarActions::showProfile( member_id );
 	}
 }
@@ -1632,7 +1632,7 @@ void LLPanelGroupMembersSubTab::updateMembers()
 
 			LLScrollListItem* member = mMembersList->addElement(row);//, ADD_SORTED);
 
-			LLUUID id = member->getValue()["uuid"];
+			LLUUID id = member->getUUID();
 			mHasMatch = TRUE;
 		}
 	}
-- 
GitLab


From d72748a0af3e77de9a5dfedd2b8c9d87bfe7da24 Mon Sep 17 00:00:00 2001
From: Vadim Savchuk <vsavchuk@productengine.com>
Date: Tue, 26 Jan 2010 20:19:39 +0200
Subject: [PATCH 124/521] Removed an unused class.

--HG--
branch : product-engine
---
 indra/newview/CMakeLists.txt | 2 --
 1 file changed, 2 deletions(-)

diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 5373556c20f..492e3b1c7f0 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -343,7 +343,6 @@ set(viewer_SOURCE_FILES
     llpanelprimmediacontrols.cpp
     llpanelprofile.cpp
     llpanelprofileview.cpp
-    llpanelshower.cpp
     llpanelteleporthistory.cpp
     llpanelvolume.cpp
     llpanelvolumepulldown.cpp
@@ -846,7 +845,6 @@ set(viewer_HEADER_FILES
     llpanelprimmediacontrols.h
     llpanelprofile.h
     llpanelprofileview.h
-    llpanelshower.h
     llpanelteleporthistory.h
     llpanelvolume.h
     llpanelvolumepulldown.h
-- 
GitLab


From e33483a7eee40615677b9abf1691c44dd80a961e Mon Sep 17 00:00:00 2001
From: Eugene Mutavchi <emutavchi@productengine.com>
Date: Tue, 26 Jan 2010 21:38:29 +0200
Subject: [PATCH 125/521] Fixed normal bug EXT-4672 (Relog displays Voice
 Controls floater with Leave Call button)

--HG--
branch : product-engine
---
 indra/newview/llcallfloater.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp
index 1e713dade8b..f62fd44bc06 100644
--- a/indra/newview/llcallfloater.cpp
+++ b/indra/newview/llcallfloater.cpp
@@ -163,6 +163,8 @@ BOOL LLCallFloater::postBuild()
 	//chrome="true" hides floater caption 
 	if (mDragHandle)
 		mDragHandle->setTitleVisible(TRUE);
+	
+	updateSession();
 
 	return TRUE;
 }
@@ -246,7 +248,7 @@ void LLCallFloater::updateSession()
 		}
 	}
 
-	const LLUUID& session_id = voice_channel->getSessionID();
+	const LLUUID& session_id = voice_channel ? voice_channel->getSessionID() : LLUUID::null;
 	lldebugs << "Set speaker manager for session: " << session_id << llendl;
 
 	LLIMModel::LLIMSession* im_session = LLIMModel::getInstance()->findIMSession(session_id);
-- 
GitLab


From 88a6cbdaecc06c0ff174d29ca9ff600775edff49 Mon Sep 17 00:00:00 2001
From: Andrew Dyukov <adyukov@productengine.com>
Date: Tue, 26 Jan 2010 22:29:17 +0200
Subject: [PATCH 126/521] Workaround for EXT-4725(Viewer crashes if try to call
 from 'Nearby voice' floater).

- Enabling/disabling 'Call'menu item is moved to createMenu(). Some way to properly enable/disable it in
 enableContextMenuItem() should be found.

--HG--
branch : product-engine
---
 indra/newview/llparticipantlist.cpp                         | 6 ++++++
 .../newview/skins/default/xui/en/menu_participant_list.xml  | 3 ---
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp
index f83f3eba968..d54cbfe2031 100644
--- a/indra/newview/llparticipantlist.cpp
+++ b/indra/newview/llparticipantlist.cpp
@@ -433,6 +433,12 @@ LLContextMenu* LLParticipantList::LLParticipantListMenu::createMenu()
 	LLContextMenu* main_menu = LLUICtrlFactory::getInstance()->createFromFile<LLContextMenu>(
 		"menu_participant_list.xml", LLMenuGL::sMenuContainer, LLViewerMenuHolderGL::child_registry_t::instance());
 
+	// AD *TODO: This is workaround for EXT-4725- way to properly enable/disable "Call" menu item in
+	// enableContextMenuItem() should be found.
+	bool not_agent = mUUIDs.front() != gAgentID;
+	bool can_call = not_agent && LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking();
+	main_menu->setItemEnabled("Call", can_call);
+
 	// Don't show sort options for P2P chat
 	bool is_sort_visible = (mParent.mAvatarList && mParent.mAvatarList->size() > 1);
 	main_menu->setItemVisible("SortByName", is_sort_visible);
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 805ffbae668..04e02d0f6cc 100644
--- a/indra/newview/skins/default/xui/en/menu_participant_list.xml
+++ b/indra/newview/skins/default/xui/en/menu_participant_list.xml
@@ -57,9 +57,6 @@
      name="Call">
          <menu_item_call.on_click
          function="Avatar.Call" />
-        <menu_item_call.on_enable
-         function="ParticipantList.EnableItem"
-         parameter="can_call" />
     </menu_item_call>
     <menu_item_call
      enabled="true"
-- 
GitLab


From b77fe6dc724c162b3de194d1b3f362ac4c7f5021 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Tue, 26 Jan 2010 12:35:22 -0800
Subject: [PATCH 127/521] DEV-45468 SNOW-108: Fast timers are broken /
 badly-scaled on linux

more reliable fix based on feedback from Richard.  dicked with the Darwin results too since those seemed wrong based on the same feedback (also covered in test plan).
---
 indra/llcommon/llfasttimer.h         | 10 +++++-----
 indra/llcommon/llfasttimer_class.cpp |  6 +++---
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h
index 32f3561616c..48461df6ae3 100644
--- a/indra/llcommon/llfasttimer.h
+++ b/indra/llcommon/llfasttimer.h
@@ -113,7 +113,7 @@ inline U64 LLFastTimer::getCPUClockCount64()
 	struct timespec tp;
 	
 #ifdef CLOCK_MONOTONIC // MONOTONIC supported at build-time?
-	if (-1 == clock_gettime(CLOCK_MONOTONIC,&tp)) // if MONOTONIC isn't supported at runtime, try REALTIME
+	if (-1 == clock_gettime(CLOCK_MONOTONIC,&tp)) // if MONOTONIC isn't supported at runtime then ouch, try REALTIME
 #endif
 		clock_gettime(CLOCK_REALTIME,&tp);
 
@@ -122,7 +122,7 @@ inline U64 LLFastTimer::getCPUClockCount64()
 
 inline U32 LLFastTimer::getCPUClockCount32()
 {
-	return (U32)LLFastTimer::getCPUClockCount64();
+	return (U32)(LLFastTimer::getCPUClockCount64() >> 8);
 }
 #endif // (LL_LINUX || LL_SOLARIS))
 
@@ -134,14 +134,14 @@ inline U32 LLFastTimer::getCPUClockCount32()
 {
 	U64 x;
 	__asm__ volatile (".byte 0x0f, 0x31": "=A"(x));
-	return (U32)x >> 8;
+	return (U32)(x >> 8);
 }
 
 inline U64 LLFastTimer::getCPUClockCount64()
 {
 	U64 x;
 	__asm__ volatile (".byte 0x0f, 0x31": "=A"(x));
-	return x >> 8;
+	return x;
 }
 #endif
 
@@ -154,7 +154,7 @@ inline U64 LLFastTimer::getCPUClockCount64()
 
 inline U32 LLFastTimer::getCPUClockCount32()
 {
-	return (U32)get_clock_count();
+	return (U32)(get_clock_count()>>8);
 }
 
 inline U64 LLFastTimer::getCPUClockCount64()
diff --git a/indra/llcommon/llfasttimer_class.cpp b/indra/llcommon/llfasttimer_class.cpp
index abcaee673eb..fae0a668732 100644
--- a/indra/llcommon/llfasttimer_class.cpp
+++ b/indra/llcommon/llfasttimer_class.cpp
@@ -226,12 +226,12 @@ void LLFastTimer::DeclareTimer::updateCachedPointers()
 
 //static
 #if LL_LINUX || LL_SOLARIS || ( LL_DARWIN && !(defined(__i386__) || defined(__amd64__)) )
-U64 LLFastTimer::countsPerSecond()
+U64 LLFastTimer::countsPerSecond() // counts per second for the *32-bit* timer
 {
-	return sClockResolution;
+	return sClockResolution >> 8;
 }
 #else // windows or x86-mac
-U64 LLFastTimer::countsPerSecond()
+U64 LLFastTimer::countsPerSecond() // counts per second for the *32-bit* timer
 {
 	static U64 sCPUClockFrequency = U64(CProcessor().GetCPUFrequency(50));
 
-- 
GitLab


From 38f4c6981fc49a8c2b0c290a8baed9f317440069 Mon Sep 17 00:00:00 2001
From: "Mark Palange (Mani)" <palange@lindenlab.com>
Date: Tue, 26 Jan 2010 13:13:38 -0800
Subject: [PATCH 128/521] Configured build for the windows lightweight(stub)
 installer. Added a dependency on the package target to get parabuild to build
 the indra/win_setup project. Reviewed by Palmer

---
 indra/newview/CMakeLists.txt | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 5373556c20f..ecea72fa0de 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1580,7 +1580,10 @@ if (WINDOWS)
         DEPENDS ${VIEWER_BINARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
         )
 
-      add_custom_target(package ALL DEPENDS ${CMAKE_CFG_INTDIR}/touched.bat)
+      add_custom_target(package ALL DEPENDS 
+      	${CMAKE_CFG_INTDIR}/touched.bat
+      	windows-setup-build-all 
+	)
         # temporarily disable packaging of event_host until hg subrepos get
         # sorted out on the parabuild cluster...
         #${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event_host.tar.bz2)
-- 
GitLab


From fee564c26e1018787cf70b95fc677c1da447118c Mon Sep 17 00:00:00 2001
From: "Mark Palange (Mani)" <palange@lindenlab.com>
Date: Tue, 26 Jan 2010 13:15:52 -0800
Subject: [PATCH 129/521] Removed tabs.

---
 indra/newview/CMakeLists.txt | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 8f333e9fd87..7ddeb90d295 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1579,9 +1579,9 @@ if (WINDOWS)
         )
 
       add_custom_target(package ALL DEPENDS 
-      	${CMAKE_CFG_INTDIR}/touched.bat
-      	windows-setup-build-all 
-	)
+        ${CMAKE_CFG_INTDIR}/touched.bat
+        windows-setup-build-all 
+        )
         # temporarily disable packaging of event_host until hg subrepos get
         # sorted out on the parabuild cluster...
         #${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event_host.tar.bz2)
-- 
GitLab


From 3f7ed7ef1de1012e3bea719e8042a256deb10ac3 Mon Sep 17 00:00:00 2001
From: Eli Linden <eli@lindenlab.com>
Date: Tue, 26 Jan 2010 14:28:07 -0800
Subject: [PATCH 130/521] DEV-43688 cycle3 for DE

---
 .../default/xui/de/floater_about_land.xml     | 144 ++++-----
 .../xui/de/floater_animation_preview.xml      |   5 +-
 .../xui/de/floater_avatar_textures.xml        |  62 ++--
 .../default/xui/de/floater_buy_currency.xml   |   2 +-
 .../default/xui/de/floater_customize.xml      |  71 ++---
 .../default/xui/de/floater_god_tools.xml      |   9 +-
 .../default/xui/de/floater_im_container.xml   |   2 +-
 .../default/xui/de/floater_incoming_call.xml  |   6 +
 .../default/xui/de/floater_lsl_guide.xml      |   2 +-
 .../default/xui/de/floater_media_browser.xml  |   2 +-
 .../default/xui/de/floater_outfit_save_as.xml |  11 +
 .../default/xui/de/floater_outgoing_call.xml  |   9 +
 .../xui/de/floater_preview_gesture.xml        |   3 +
 .../xui/de/floater_preview_notecard.xml       |   4 +-
 .../xui/de/floater_preview_texture.xml        |   5 +-
 .../default/xui/de/floater_report_abuse.xml   |   4 +-
 .../default/xui/de/floater_script_limits.xml  |   2 +
 .../skins/default/xui/de/floater_search.xml   |   7 +
 .../default/xui/de/floater_select_key.xml     |   7 +-
 .../default/xui/de/floater_sell_land.xml      |   2 +-
 .../skins/default/xui/de/floater_snapshot.xml |  18 +-
 .../skins/default/xui/de/floater_sys_well.xml |   9 +-
 .../skins/default/xui/de/floater_telehub.xml  |  11 +-
 .../skins/default/xui/de/floater_tools.xml    |  13 +-
 .../default/xui/de/floater_top_objects.xml    |  67 ++--
 .../default/xui/de/floater_voice_controls.xml |  30 +-
 .../xui/de/floater_whitelist_entry.xml        |   2 +-
 .../default/xui/de/floater_window_size.xml    |  17 ++
 .../default/xui/de/floater_world_map.xml      | 128 +++++---
 .../skins/default/xui/de/inspect_avatar.xml   |  10 +-
 .../skins/default/xui/de/inspect_group.xml    |   1 +
 .../default/xui/de/menu_attachment_other.xml  |  17 ++
 .../default/xui/de/menu_attachment_self.xml   |  12 +
 .../skins/default/xui/de/menu_avatar_icon.xml |   2 +-
 .../default/xui/de/menu_avatar_other.xml      |  16 +
 .../skins/default/xui/de/menu_avatar_self.xml |  27 ++
 .../skins/default/xui/de/menu_bottomtray.xml  |   5 +
 .../default/xui/de/menu_im_well_button.xml    |   4 +
 .../default/xui/de/menu_imchiclet_adhoc.xml   |   4 +
 .../xui/de/menu_inspect_avatar_gear.xml       |   1 +
 .../skins/default/xui/de/menu_inventory.xml   |  10 +-
 .../default/xui/de/menu_inventory_add.xml     |   2 +-
 .../xui/de/menu_inventory_gear_default.xml    |   2 +
 .../skins/default/xui/de/menu_land.xml        |   9 +
 .../skins/default/xui/de/menu_login.xml       |   6 +-
 .../xui/de/menu_notification_well_button.xml  |   4 +
 .../skins/default/xui/de/menu_object.xml      |  25 ++
 .../default/xui/de/menu_participant_list.xml  |  19 +-
 .../default/xui/de/menu_people_groups.xml     |   8 +
 .../default/xui/de/menu_people_nearby.xml     |   1 +
 .../default/xui/de/menu_profile_overflow.xml  |   4 +
 .../skins/default/xui/de/menu_viewer.xml      |  46 ++-
 .../skins/default/xui/de/mime_types_linux.xml | 217 +++++++++++++
 .../skins/default/xui/de/mime_types_mac.xml   | 217 +++++++++++++
 .../skins/default/xui/de/notifications.xml    | 159 ++++------
 .../xui/de/panel_active_object_row.xml        |   9 +
 .../xui/de/panel_adhoc_control_panel.xml      |  16 +-
 .../default/xui/de/panel_avatar_list_item.xml |   1 +
 .../xui/de/panel_block_list_sidetray.xml      |   4 +-
 .../skins/default/xui/de/panel_bottomtray.xml |  12 +-
 .../default/xui/de/panel_edit_classified.xml  |   4 +-
 .../default/xui/de/panel_edit_profile.xml     |   5 +-
 .../skins/default/xui/de/panel_friends.xml    |  46 ++-
 .../xui/de/panel_group_control_panel.xml      |  20 +-
 .../default/xui/de/panel_group_general.xml    |   8 +-
 .../xui/de/panel_group_info_sidetray.xml      |   2 +
 .../default/xui/de/panel_group_invite.xml     |   8 +-
 .../default/xui/de/panel_group_list_item.xml  |   1 +
 .../default/xui/de/panel_group_notices.xml    |  14 +-
 .../default/xui/de/panel_im_control_panel.xml |  32 +-
 .../default/xui/de/panel_landmark_info.xml    |   1 +
 .../skins/default/xui/de/panel_login.xml      |  68 +++--
 .../default/xui/de/panel_main_inventory.xml   |   8 +-
 .../xui/de/panel_media_settings_general.xml   |  10 +-
 .../de/panel_media_settings_permissions.xml   |  25 +-
 .../xui/de/panel_media_settings_security.xml  |   6 +-
 .../skins/default/xui/de/panel_my_profile.xml |  80 +++--
 .../default/xui/de/panel_navigation_bar.xml   |   2 +-
 .../skins/default/xui/de/panel_notes.xml      |  18 +-
 .../xui/de/panel_outfits_inventory.xml        |  15 +-
 .../panel_outfits_inventory_gear_default.xml  |   6 +-
 .../skins/default/xui/de/panel_people.xml     |   1 +
 .../skins/default/xui/de/panel_picks.xml      |  12 +-
 .../default/xui/de/panel_place_profile.xml    |   1 +
 .../skins/default/xui/de/panel_places.xml     |   7 +-
 .../xui/de/panel_preferences_alerts.xml       |   2 +-
 .../default/xui/de/panel_preferences_chat.xml |  10 +-
 .../xui/de/panel_preferences_general.xml      |  24 +-
 .../xui/de/panel_preferences_privacy.xml      |   6 +-
 .../xui/de/panel_preferences_setup.xml        |   8 +-
 .../xui/de/panel_preferences_sound.xml        |   2 +-
 .../xui/de/panel_prim_media_controls.xml      |  52 +++-
 .../skins/default/xui/de/panel_profile.xml    |  77 +++--
 .../default/xui/de/panel_region_estate.xml    |   9 +-
 .../default/xui/de/panel_region_general.xml   |   6 +-
 .../xui/de/panel_region_general_layout.xml    |  43 +++
 .../default/xui/de/panel_region_texture.xml   |   3 +-
 .../xui/de/panel_script_limits_my_avatar.xml  |  13 +
 .../de/panel_script_limits_region_memory.xml  |  24 ++
 .../skins/default/xui/de/panel_side_tray.xml  |  11 +-
 .../skins/default/xui/de/panel_status_bar.xml |   3 +-
 .../default/xui/de/panel_teleport_history.xml |   4 +-
 .../xui/de/panel_teleport_history_item.xml    |   1 +
 .../skins/default/xui/de/role_actions.xml     | 244 ++++-----------
 .../default/xui/de/sidepanel_appearance.xml   |   8 +-
 .../default/xui/de/sidepanel_inventory.xml    |   2 +-
 .../default/xui/de/sidepanel_item_info.xml    |  57 ++--
 .../default/xui/de/sidepanel_task_info.xml    |  76 ++---
 .../newview/skins/default/xui/de/strings.xml  | 286 ++++++++++++++++--
 109 files changed, 1904 insertions(+), 991 deletions(-)
 create mode 100644 indra/newview/skins/default/xui/de/floater_outfit_save_as.xml
 create mode 100644 indra/newview/skins/default/xui/de/floater_script_limits.xml
 create mode 100644 indra/newview/skins/default/xui/de/floater_window_size.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_attachment_other.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_attachment_self.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_avatar_other.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_avatar_self.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_im_well_button.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_imchiclet_adhoc.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_land.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_notification_well_button.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_object.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_people_groups.xml
 create mode 100644 indra/newview/skins/default/xui/de/mime_types_linux.xml
 create mode 100644 indra/newview/skins/default/xui/de/mime_types_mac.xml
 create mode 100644 indra/newview/skins/default/xui/de/panel_active_object_row.xml
 create mode 100644 indra/newview/skins/default/xui/de/panel_region_general_layout.xml
 create mode 100644 indra/newview/skins/default/xui/de/panel_script_limits_my_avatar.xml
 create mode 100644 indra/newview/skins/default/xui/de/panel_script_limits_region_memory.xml

diff --git a/indra/newview/skins/default/xui/de/floater_about_land.xml b/indra/newview/skins/default/xui/de/floater_about_land.xml
index af489d39d24..cd5abf86e05 100644
--- a/indra/newview/skins/default/xui/de/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/de/floater_about_land.xml
@@ -13,7 +13,7 @@
 		Restzeit
 	</floater.string>
 	<tab_container name="landtab">
-		<panel label="Allgemein" name="land_general_panel">
+		<panel label="ALLGEMEIN" name="land_general_panel">
 			<panel.string name="new users only">
 				Nur neue Benutzer
 			</panel.string>
@@ -36,10 +36,10 @@
 				(In Gruppenbesitz)
 			</panel.string>
 			<panel.string name="profile_text">
-				Profil...
+				Profil
 			</panel.string>
 			<panel.string name="info_text">
-				Info...
+				Info
 			</panel.string>
 			<panel.string name="public_text">
 				(öffentlich)
@@ -52,7 +52,6 @@
 			</panel.string>
 			<panel.string name="no_selection_text">
 				Keine Parzelle ausgewählt.
-Öffnen Sie „Welt“ &gt; „Land-Info“ oder wählen Sie eine andere Parzelle aus, um Informationen darüber anzuzeigen.
 			</panel.string>
 			<text name="Name:">
 				Name:
@@ -78,33 +77,35 @@
 			<text name="OwnerText">
 				Leyla Linden
 			</text>
-			<button label="Profil..." label_selected="Profil..." name="Profile..."/>
 			<text name="Group:">
 				Gruppe:
 			</text>
-			<button label="Einstellen..." label_selected="Einstellen..." name="Set..."/>
+			<text name="GroupText">
+				Leyla Linden
+			</text>
+			<button label="Festlegen" label_selected="Einstellen..." name="Set..."/>
 			<check_box label="Übertragung an Gruppe zulassen" name="check deed" tool_tip="Ein Gruppen-Officer kann dieses Land der Gruppe übertragen. Das Land wird dann über die Landzuteilung der Gruppe verwaltet."/>
-			<button label="Übertragen..." label_selected="Übertragen..." name="Deed..." tool_tip="Sie können Land nur übertragen, wenn Sie in der ausgewählten Gruppe Officer sind."/>
+			<button label="Übertragung" label_selected="Übertragen..." name="Deed..." tool_tip="Sie können Land nur übertragen, wenn Sie in der ausgewählten Gruppe Officer sind."/>
 			<check_box label="Eigentümer leistet Beitrag durch Übertragung" name="check contrib" tool_tip="Wenn das Land an die Gruppe übertragen wird, trägt der frühere Eigentümer ausreichend Landnutzungsrechte bei, um es zu halten."/>
 			<text name="For Sale:">
 				Zum Verkauf:
 			</text>
 			<text name="Not for sale.">
-				Nicht zu verkaufen.
+				Nicht zu verkaufen
 			</text>
 			<text name="For Sale: Price L$[PRICE].">
-				Preis: [PRICE] L$ ([PRICE_PER_SQM]L$/m²).
+				Preis: [PRICE] L$ ([PRICE_PER_SQM]L$/m²)
 			</text>
 			<text name="SalePending"/>
-			<button bottom="-222" label="Land verkaufen..." label_selected="Land verkaufen..." name="Sell Land..."/>
+			<button bottom="-222" label="Land verkaufen" label_selected="Land verkaufen..." name="Sell Land..."/>
 			<text name="For sale to">
 				Zum Verkauf an: [BUYER]
 			</text>
 			<text name="Sell with landowners objects in parcel." width="210">
-				Objekte sind im Verkauf eingeschlossen.
+				Objekte sind im Verkauf eingeschlossen
 			</text>
 			<text name="Selling with no objects in parcel." width="237">
-				Objekte sind im Verkauf nicht eingeschlossen.
+				Objekte sind im Verkauf nicht eingeschlossen
 			</text>
 			<button bottom="-222" label="Landverkauf abbrechen" label_selected="Landverkauf abbrechen" name="Cancel Land Sale"/>
 			<text name="Claimed:">
@@ -125,14 +126,15 @@
 			<text name="DwellText">
 				0
 			</text>
-			<button label="Land kaufen..." label_selected="Land kaufen..." name="Buy Land..."/>
-			<button label="Für Gruppe kaufen..." label_selected="Für Gruppe kaufen..." name="Buy For Group..."/>
-			<button label="Pass kaufen..." label_selected="Pass kaufen..." name="Buy Pass..." tool_tip="Ein Pass gibt Ihnen zeitbegrenzten Zugang zu diesem Land."/>
-			<button label="Land aufgeben..." label_selected="Land aufgeben..." name="Abandon Land..."/>
-			<button label="Land in Besitz nehmen..." label_selected="Land in Besitz nehmen..." name="Reclaim Land..."/>
-			<button label="Linden-Verkauf..." label_selected="Linden-Verkauf..." name="Linden Sale..." tool_tip="Land muss Eigentum und auf Inhalt gesetzt sein und nicht zur Auktion stehen."/>
+			<button label="Land kaufen" label_selected="Land kaufen..." name="Buy Land..."/>
+			<button label="Skriptinfo" name="Scripts..."/>
+			<button label="Für Gruppe kaufen" label_selected="Für Gruppe kaufen..." name="Buy For Group..."/>
+			<button label="Pass kaufen" label_selected="Pass kaufen..." name="Buy Pass..." tool_tip="Ein Pass gibt Ihnen zeitbegrenzten Zugang zu diesem Land."/>
+			<button label="Land aufgeben" label_selected="Land aufgeben..." name="Abandon Land..."/>
+			<button label="Land in Besitz nehmen" label_selected="Land in Besitz nehmen..." name="Reclaim Land..."/>
+			<button label="Linden-Verkauf" label_selected="Linden-Verkauf..." name="Linden Sale..." tool_tip="Land muss Eigentum und auf Inhalt gesetzt sein und nicht zur Auktion stehen."/>
 		</panel>
-		<panel label="Vertrag" name="land_covenant_panel">
+		<panel label="VERTRAG" name="land_covenant_panel">
 			<panel.string name="can_resell">
 				Gekauftes Land in dieser Region kann wiederverkauft werden.
 			</panel.string>
@@ -150,9 +152,6 @@ und geteilt werden.
 			<text name="estate_section_lbl">
 				Grundstück:
 			</text>
-			<text name="estate_name_lbl">
-				Name:
-			</text>
 			<text name="estate_name_text">
 				Mainland
 			</text>
@@ -171,11 +170,8 @@ und geteilt werden.
 			<text name="region_section_lbl">
 				Region:
 			</text>
-			<text name="region_name_lbl">
-				Name:
-			</text>
 			<text name="region_name_text">
-				leyla
+				EricaVille
 			</text>
 			<text name="region_landtype_lbl">
 				Typ:
@@ -203,7 +199,7 @@ und geteilt werden.
 werden.
 			</text>
 		</panel>
-		<panel label="Objekte" name="land_objects_panel">
+		<panel label="OBJEKTE" name="land_objects_panel">
 			<panel.string name="objects_available_text">
 				[COUNT] von [MAX] ([AVAILABLE] verfügbar)
 			</panel.string>
@@ -214,19 +210,19 @@ werden.
 				Objektbonusfaktor in Region: [BONUS]
 			</text>
 			<text name="Simulator primitive usage:">
-				Primitive in Simulator:
+				Prim-Verwendung:
 			</text>
 			<text name="objects_available">
 				[COUNT] von [MAX] ([AVAILABLE] verfügbar)
 			</text>
 			<text name="Primitives parcel supports:" width="200">
-				Von Parzelle unterstützte Primitiva:
+				Von Parzelle unterstützte Prims:
 			</text>
 			<text left="204" name="object_contrib_text" width="152">
 				[COUNT]
 			</text>
 			<text name="Primitives on parcel:">
-				Primitiva auf Parzelle:
+				Prims auf Parzelle:
 			</text>
 			<text left="204" name="total_objects_text" width="48">
 				[COUNT]
@@ -238,7 +234,7 @@ werden.
 				[COUNT]
 			</text>
 			<button label="Anzeigen" label_selected="Anzeigen" name="ShowOwner" right="-135" width="60"/>
-			<button label="Zurückgeben..." label_selected="Zurückgeben..." name="ReturnOwner..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/>
+			<button label="Zurückgeben" label_selected="Zurückgeben..." name="ReturnOwner..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/>
 			<text left="14" name="Set to group:">
 				Der Gruppe zugeordnet:
 			</text>
@@ -246,7 +242,7 @@ werden.
 				[COUNT]
 			</text>
 			<button label="Anzeigen" label_selected="Anzeigen" name="ShowGroup" right="-135" width="60"/>
-			<button label="Zurückgeben..." label_selected="Zurückgeben..." name="ReturnGroup..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/>
+			<button label="Zurückgeben" label_selected="Zurückgeben..." name="ReturnGroup..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/>
 			<text left="14" name="Owned by others:" width="128">
 				Im Eigentum anderer:
 			</text>
@@ -254,7 +250,7 @@ werden.
 				[COUNT]
 			</text>
 			<button label="Anzeigen" label_selected="Anzeigen" name="ShowOther" right="-135" width="60"/>
-			<button label="Zurückgeben..." label_selected="Zurückgeben..." name="ReturnOther..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/>
+			<button label="Zurückgeben" label_selected="Zurückgeben..." name="ReturnOther..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/>
 			<text left="14" name="Selected / sat upon:" width="140">
 				Ausgewählt/gesessen auf:
 			</text>
@@ -268,8 +264,8 @@ werden.
 			<text name="Object Owners:">
 				Objekteigentümer:
 			</text>
-			<button label="Liste aktualisieren" label_selected="Liste aktualisieren" name="Refresh List"/>
-			<button label="Objekte zurückgeben..." label_selected="Objekte zurückgeben..." name="Return objects..."/>
+			<button label="Liste aktualisieren" label_selected="Liste aktualisieren" name="Refresh List" tool_tip="Objektliste aktualisieren"/>
+			<button label="Objekte zurückgeben" label_selected="Objekte zurückgeben..." name="Return objects..."/>
 			<name_list name="owner list">
 				<name_list.columns label="Typ" name="type"/>
 				<name_list.columns label="Name" name="name"/>
@@ -277,7 +273,7 @@ werden.
 				<name_list.columns label="Aktuellster" name="mostrecent"/>
 			</name_list>
 		</panel>
-		<panel label="Optionen" name="land_options_panel">
+		<panel label="OPTIONEN" name="land_options_panel">
 			<panel.string name="search_enabled_tooltip">
 				Diese Parzelle in Suchergebnissen anzeigen.
 			</panel.string>
@@ -289,13 +285,13 @@ Nur große Parzellen können in der Suche aufgeführt werden.
 				Diese Option ist nicht aktiviert, da Sie die Parzellenoptionen nicht verändern können.
 			</panel.string>
 			<panel.string name="mature_check_mature">
-				Mature-Inhalt
+				Moderater Inhalt
 			</panel.string>
 			<panel.string name="mature_check_adult">
 				Adult-Inhalt
 			</panel.string>
 			<panel.string name="mature_check_mature_tooltip">
-				Die Informationen oder Inhalte Ihrer Parzelle sind „Mature“.
+				Die Informationen oder Inhalte Ihrer Parzelle sind „Moderat“.
 			</panel.string>
 			<panel.string name="mature_check_adult_tooltip">
 				Die Informationen oder Inhalte Ihrer Parzelle sind „Adult“.
@@ -315,26 +311,26 @@ Nur große Parzellen können in der Suche aufgeführt werden.
 			<check_box label="Terrain bearbeiten" name="edit land check" tool_tip="Falls aktiviert, kann jeder Ihr Land terraformen. Am besten ist es, wenn Sie diese Option deaktiviert lassen. Sie können Ihr eigenes Land jederzeit bearbeiten."/>
 			<check_box label="Fliegen" name="check fly" tool_tip="Falls aktiviert, können Einwohner auf Ihrem Land fliegen. Falls nicht aktiviert, können Einwohner lediglich auf Ihr Land fliegen und dort landen (dann jedoch nicht wieder weiterfliegen) oder über Ihr Land hinweg fliegen."/>
 			<text name="allow_label2">
-				Objekte erstellen:
+				Bauen:
 			</text>
-			<check_box label="Alle Einwohner" name="edit objects check"/>
+			<check_box label="Jeder" name="edit objects check"/>
 			<check_box label="Gruppe" name="edit group objects check"/>
 			<text name="allow_label3">
 				Objekteintritt:
 			</text>
-			<check_box label="Alle Einwohner" name="all object entry check"/>
+			<check_box label="Jeder" name="all object entry check"/>
 			<check_box label="Gruppe" name="group object entry check"/>
 			<text name="allow_label4">
 				Skripts ausführen:
 			</text>
-			<check_box label="Alle Einwohner" name="check other scripts"/>
+			<check_box label="Jeder" name="check other scripts"/>
 			<check_box label="Gruppe" name="check group scripts"/>
 			<text name="land_options_label">
 				Landoptionen:
 			</text>
 			<check_box label="Sicher (kein Schaden)" name="check safe" tool_tip="Falls aktiviert, wird Land auf Option „Sicher“ eingestellt, Kampfschäden sind deaktiviert. Falls nicht aktiviert, sind Kampfschäden aktiviert."/>
 			<check_box label="Kein Stoßen" name="PushRestrictCheck" tool_tip="Verhindert Skripte am Stoßen. Durch Aktivieren dieser Option verhindern Sie störendes Verhalten auf Ihrem Land."/>
-			<check_box label="Ort in Suche anzeigen (30 L$/Woche) unter" name="ShowDirectoryCheck" tool_tip="Diese Parzelle in Suchergebnissen anzeigen."/>
+			<check_box label="Ort in Suche anzeigen (30 L$/Woche)" name="ShowDirectoryCheck" tool_tip="Diese Parzelle in Suchergebnissen anzeigen."/>
 			<combo_box name="land category with adult">
 				<combo_box.item label="Alle Kategorien" name="item0"/>
 				<combo_box.item label="Lindenort" name="item1"/>
@@ -364,7 +360,7 @@ Nur große Parzellen können in der Suche aufgeführt werden.
 				<combo_box.item label="Shopping" name="item11"/>
 				<combo_box.item label="Sonstige" name="item12"/>
 			</combo_box>
-			<check_box label="Mature-Inhalt" name="MatureCheck" tool_tip=""/>
+			<check_box label="Moderater Inhalt" name="MatureCheck" tool_tip=""/>
 			<text name="Snapshot:">
 				Foto:
 			</text>
@@ -383,33 +379,30 @@ Nur große Parzellen können in der Suche aufgeführt werden.
 				<combo_box.item label="Überall" name="Anywhere"/>
 			</combo_box>
 		</panel>
-		<panel label="Medien" name="land_media_panel">
+		<panel label="MEDIEN" name="land_media_panel">
 			<text name="with media:">
 				Typ:
 			</text>
 			<combo_box name="media type" tool_tip="Geben Sie einen URL für den Film, die Webseite oder ein anderes Medium ein"/>
 			<text name="at URL:">
-				Start URL:
+				Homepage:
 			</text>
-			<button label="Einstellen..." label_selected="Einstellen..." name="set_media_url"/>
+			<button label="Festlegen" label_selected="Einstellen..." name="set_media_url"/>
 			<text name="CurrentURL:">
-				Aktuelle URL:
+				Aktuelle Seite:
 			</text>
-			<button label="Zurücksetzen..." label_selected="Zurücksetzen..." name="reset_media_url"/>
+			<button label="Zurücksetzen..." label_selected="Zurücksetzen..." name="reset_media_url" tool_tip="URL aktualisieren"/>
 			<check_box label="URL ausblenden" name="hide_media_url" tool_tip="Aktivieren Sie diese Option, wenn Sie nicht möchten, dass unautorisierte Personen die Medien-URL sehen können. Diese Option ist für HTML-Medien nicht verfügbar."/>
 			<text name="Description:">
 				Inhalt:
 			</text>
 			<line_editor name="url_description" tool_tip="Text, der neben der Abspielen/Laden-Schaltfläche angezeigt wird"/>
 			<text name="Media texture:">
-				Textur
-ersetzen:
+				Textur ersetzen:
 			</text>
 			<texture_picker label="" name="media texture" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/>
 			<text name="replace_texture_help">
-				Objekte, die diese Textur verwenden, werden den Film oder die Webseite anzeigen, nachdem Sie auf den Pfeil (Wiedergabe) klicken.
-
-Wählen Sie das kleine Bild aus, um eine andere Textur auszuwählen.
+				Objekte, die diese Textur verwenden, werden den Film oder die Webseite anzeigen, nachdem Sie auf den Pfeil (Wiedergabe) klicken.  Wählen Sie das kleine Bild aus, um eine andere Textur auszuwählen.
 			</text>
 			<check_box label="Automatisch skalieren" name="media_auto_scale" tool_tip="Aktivieren Sie diese Option, um den Inhalt für diese Parzelle automatisch zu skalieren. Dies ist eventuell langsamer und die Qualität ist schlechter, aber Sie müssen keine weitere Texturskalierung oder -anpassung vornehmen."/>
 			<text name="media_size" tool_tip="Darstellungsgröße von Webmedien, für Standard bei 0 belassen.">
@@ -425,7 +418,7 @@ Wählen Sie das kleine Bild aus, um eine andere Textur auszuwählen.
 			</text>
 			<check_box label="Schleife" name="media_loop" tool_tip="Spielt das Medium in einer Schleife ab.  Der Abspielvorgang wird immer wieder von vorne fortgesetzt."/>
 		</panel>
-		<panel label="Audio" name="land_audio_panel">
+		<panel label="SOUND" name="land_audio_panel">
 			<text name="MusicURL:">
 				Musik-URL:
 			</text>
@@ -440,19 +433,22 @@ Wählen Sie das kleine Bild aus, um eine andere Textur auszuwählen.
 			<check_box label="Voice aktivieren (vom Grundstück eingerichtet)" name="parcel_enable_voice_channel_is_estate_disabled"/>
 			<check_box label="Voice auf diese Parzelle beschränken" name="parcel_enable_voice_channel_parcel"/>
 		</panel>
-		<panel label="Zugang" name="land_access_panel">
+		<panel label="ZUGANG" name="land_access_panel">
+			<panel.string name="access_estate_defined">
+				(Durch Grundstück festgelegt)
+			</panel.string>
 			<panel.string name="estate_override">
 				Eine oder mehrere dieser Optionen gelten auf Grundstücksebene
 			</panel.string>
 			<text name="Limit access to this parcel to:">
 				Zugang zu dieser Parzelle
 			</text>
-			<check_box label="Freien Zugang erlauben" name="public_access"/>
+			<check_box label="Öffentlichen Zugang erlauben [MATURITY]" name="public_access"/>
 			<text name="Only Allow">
-				Zugang verweigern für:
+				Zugang auf Einwohner beschränken, die überprüft wurden von:
 			</text>
-			<check_box label="Einwohner, die keine Zahlungsinformationen bei Linden Lab hinterlegt haben" name="limit_payment" tool_tip="Nicht identifizierte Einwohner verbannen."/>
-			<check_box label="Einwohner, die keine altersgeprüften Erwachsenen sind" name="limit_age_verified" tool_tip="Einwohner ohne Altersüberprüfung verbannen. Weitere Informationen finden Sie auf [SUPPORT_SITE]."/>
+			<check_box label="Zahlungsinformation gespeichert [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="Nicht identifizierte Einwohner verbannen."/>
+			<check_box label="Altersüberprüfung [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="Einwohner ohne Altersüberprüfung verbannen. Weitere Informationen finden Sie auf [SUPPORT_SITE]."/>
 			<check_box label="Gruppenzugang erlauben: [GROUP]" name="GroupCheck" tool_tip="Gruppe im Register „Allgemein“ festlegen."/>
 			<check_box label="Pässe verkaufen an:" name="PassCheck" tool_tip="Ermöglicht befristeten Zugang zu dieser Parzelle"/>
 			<combo_box name="pass_combo">
@@ -461,18 +457,22 @@ Wählen Sie das kleine Bild aus, um eine andere Textur auszuwählen.
 			</combo_box>
 			<spinner label="Preis in L$:" name="PriceSpin"/>
 			<spinner label="Online-Zeit:" name="HoursSpin"/>
-			<text label="Immer erlauben" name="AllowedText">
-				Zulässige Einwohner
-			</text>
-			<name_list name="AccessList" tool_tip="([LISTED] angezeigt, max. [MAX])"/>
-			<button label="Hinzufügen..." label_selected="Hinzufügen..." name="add_allowed"/>
-			<button label="Entfernen" label_selected="Entfernen" name="remove_allowed"/>
-			<text label="Verbannen" name="BanCheck">
-				Verbannte Einwohner
-			</text>
-			<name_list name="BannedList" tool_tip="([LISTED] angezeigt, max. [MAX])"/>
-			<button label="Hinzufügen..." label_selected="Hinzufügen..." name="add_banned"/>
-			<button label="Entfernen" label_selected="Entfernen" name="remove_banned"/>
+			<panel name="Allowed_layout_panel">
+				<text label="Immer erlauben" name="AllowedText">
+					Zulässige Einwohner
+				</text>
+				<name_list name="AccessList" tool_tip="([LISTED] aufgeführt, [MAX] max)"/>
+				<button label="Hinzufügen" name="add_allowed"/>
+				<button label="Entfernen" label_selected="Entfernen" name="remove_allowed"/>
+			</panel>
+			<panel name="Banned_layout_panel">
+				<text label="Verbannen" name="BanCheck">
+					Verbannte Einwohner
+				</text>
+				<name_list name="BannedList" tool_tip="([LISTED] aufgeführt, [MAX] max)"/>
+				<button label="Hinzufügen" name="add_banned"/>
+				<button label="Entfernen" label_selected="Entfernen" name="remove_banned"/>
+			</panel>
 		</panel>
 	</tab_container>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/floater_animation_preview.xml b/indra/newview/skins/default/xui/de/floater_animation_preview.xml
index 4b4067f1863..ce971d158dd 100644
--- a/indra/newview/skins/default/xui/de/floater_animation_preview.xml
+++ b/indra/newview/skins/default/xui/de/floater_animation_preview.xml
@@ -171,7 +171,8 @@ Maximal erlaubt sind [MAX_LENGTH] Sekunden.
 	</combo_box>
 	<spinner label="Eingang glätten (s)" label_width="105" name="ease_in_time" tool_tip="Einblendungsgeschwindigkeit von Animationen (in Sekunden)" width="175"/>
 	<spinner bottom_delta="-20" label="Ausgang glätten (s)" label_width="105" left="10" name="ease_out_time" tool_tip="Ausblendegeschwindigkeit von Animationen (in Sekunden)" width="175"/>
-	<button bottom_delta="-32" label="" name="play_btn" tool_tip="Animation stoppen/wiedergeben"/>
+	<button bottom_delta="-32" label="" name="play_btn" tool_tip="Ihre Animation abspielen"/>
+	<button name="pause_btn" tool_tip="Ihre Animation pausieren"/>
 	<button label="" name="stop_btn" tool_tip="Animation anhalten"/>
 	<slider label="" name="playback_slider"/>
 	<text name="bad_animation_text">
@@ -179,6 +180,6 @@ Maximal erlaubt sind [MAX_LENGTH] Sekunden.
 
 Wir empfehlen exportierte BVH-Dateien aus Poser 4.
 	</text>
-	<button label="Abbrechen" name="cancel_btn"/>
 	<button label="Hochladen ([AMOUNT] L$)" name="ok_btn"/>
+	<button label="Abbrechen" name="cancel_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/floater_avatar_textures.xml b/indra/newview/skins/default/xui/de/floater_avatar_textures.xml
index 6f5fe23d4c0..3be5194a8f4 100644
--- a/indra/newview/skins/default/xui/de/floater_avatar_textures.xml
+++ b/indra/newview/skins/default/xui/de/floater_avatar_textures.xml
@@ -10,33 +10,37 @@
 		Zusammengesetzte Texturen
 	</text>
 	<button label="Läd IDs in Konsole ab" label_selected="Abladen" name="Dump"/>
-	<texture_picker label="Haare" name="hair-baked"/>
-	<texture_picker label="Haare" name="hair_grain"/>
-	<texture_picker label="Alpha: Haare" name="hair_alpha"/>
-	<texture_picker label="Kopf" name="head-baked"/>
-	<texture_picker label="Make-Uup" name="head_bodypaint"/>
-	<texture_picker label="Kopf: Alpha" name="head_alpha"/>
-	<texture_picker label="Kopftattoo" name="head_tattoo"/>
-	<texture_picker label="Augen" name="eyes-baked"/>
-	<texture_picker label="Auge" name="eyes_iris"/>
-	<texture_picker label="Alpha: Augen" name="eyes_alpha"/>
-	<texture_picker label="Oberkörper" name="upper-baked"/>
-	<texture_picker label="Oberkörper: Körperfarbe" name="upper_bodypaint"/>
-	<texture_picker label="Unterhemd" name="upper_undershirt"/>
-	<texture_picker label="Handschuhe" name="upper_gloves"/>
-	<texture_picker label="Hemd" name="upper_shirt"/>
-	<texture_picker label="Oberjacke" name="upper_jacket"/>
-	<texture_picker label="Alpha: Oben" name="upper_alpha"/>
-	<texture_picker label="Obere Tattoos" name="upper_tattoo"/>
-	<texture_picker label="Unterkörper" name="lower-baked"/>
-	<texture_picker label="Unterkörper: Körperfarbe" name="lower_bodypaint"/>
-	<texture_picker label="Unterhose" name="lower_underpants"/>
-	<texture_picker label="Socken" name="lower_socks"/>
-	<texture_picker label="Schuhe" name="lower_shoes"/>
-	<texture_picker label="Hose" name="lower_pants"/>
-	<texture_picker label="Jacke" name="lower_jacket"/>
-	<texture_picker label="Alpha: Unten" name="lower_alpha"/>
-	<texture_picker label="Untere Tattoos" name="lower_tattoo"/>
-	<texture_picker label="Rock" name="skirt-baked"/>
-	<texture_picker label="Rock" name="skirt"/>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<texture_picker label="Haare" name="hair-baked"/>
+			<texture_picker label="Haare" name="hair_grain"/>
+			<texture_picker label="Alpha: Haare" name="hair_alpha"/>
+			<texture_picker label="Kopf" name="head-baked"/>
+			<texture_picker label="Make-Uup" name="head_bodypaint"/>
+			<texture_picker label="Kopf: Alpha" name="head_alpha"/>
+			<texture_picker label="Kopftattoo" name="head_tattoo"/>
+			<texture_picker label="Augen" name="eyes-baked"/>
+			<texture_picker label="Auge" name="eyes_iris"/>
+			<texture_picker label="Alpha: Augen" name="eyes_alpha"/>
+			<texture_picker label="Oberkörper" name="upper-baked"/>
+			<texture_picker label="Oberkörper: Körperfarbe" name="upper_bodypaint"/>
+			<texture_picker label="Unterhemd" name="upper_undershirt"/>
+			<texture_picker label="Handschuhe" name="upper_gloves"/>
+			<texture_picker label="Hemd" name="upper_shirt"/>
+			<texture_picker label="Oberjacke" name="upper_jacket"/>
+			<texture_picker label="Alpha: Oben" name="upper_alpha"/>
+			<texture_picker label="Obere Tattoos" name="upper_tattoo"/>
+			<texture_picker label="Unterkörper" name="lower-baked"/>
+			<texture_picker label="Unterkörper: Körperfarbe" name="lower_bodypaint"/>
+			<texture_picker label="Unterhose" name="lower_underpants"/>
+			<texture_picker label="Socken" name="lower_socks"/>
+			<texture_picker label="Schuhe" name="lower_shoes"/>
+			<texture_picker label="Hose" name="lower_pants"/>
+			<texture_picker label="Jacke" name="lower_jacket"/>
+			<texture_picker label="Alpha: Unten" name="lower_alpha"/>
+			<texture_picker label="Untere Tattoos" name="lower_tattoo"/>
+			<texture_picker label="Rock" name="skirt-baked"/>
+			<texture_picker label="Rock" name="skirt"/>
+		</panel>
+	</scroll_container>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/floater_buy_currency.xml b/indra/newview/skins/default/xui/de/floater_buy_currency.xml
index 287b16273a0..aa6201ec26f 100644
--- a/indra/newview/skins/default/xui/de/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/de/floater_buy_currency.xml
@@ -46,7 +46,7 @@
 		[AMT] L$
 	</text>
 	<text name="currency_links">
-		[http://www.secondlife.com/my/account/payment_method_management.php?lang=de-DE payment method] | [http://www.secondlife.com/my/account/currency.php?lang=de-DE currency] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=de-DE exchange rate]
+		[http://www.secondlife.com/my/account/payment_method_management.php?lang=de-DE Zahlungsart] | [http://www.secondlife.com/my/account/currency.php?lang=de-DE Währung] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=de-DE Umtauschrate]
 	</text>
 	<text name="exchange_rate_note">
 		Geben Sie den Betrag erneut ein, um die aktuellste Umtauschrate anzuzeigen.
diff --git a/indra/newview/skins/default/xui/de/floater_customize.xml b/indra/newview/skins/default/xui/de/floater_customize.xml
index 34aa17bbe02..a2bf45852a9 100644
--- a/indra/newview/skins/default/xui/de/floater_customize.xml
+++ b/indra/newview/skins/default/xui/de/floater_customize.xml
@@ -1,7 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="floater customize" title="AUSSEHEN">
 	<tab_container name="customize tab container">
-		<placeholder label="Körperteile" name="body_parts_placeholder"/>
+		<text label="Körperteile" name="body_parts_placeholder">
+			Körperteile
+		</text>
 		<panel label="Form" name="Shape">
 			<button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/>
 			<button label="Körper" label_selected="Körper" name="Body"/>
@@ -14,8 +16,8 @@
 			<button label="Oberkörper" label_selected="Oberkörper" name="Torso"/>
 			<button label="Beine" label_selected="Beine" name="Legs"/>
 			<radio_group name="sex radio">
-				<radio_item label="Weiblich" name="radio"/>
-				<radio_item label="Männlich" name="radio2"/>
+				<radio_item label="Weiblich" name="radio" value="0"/>
+				<radio_item label="Männlich" name="radio2" value="1"/>
 			</radio_group>
 			<text name="title">
 				[DESC]
@@ -33,9 +35,7 @@
 				In [PATH]
 			</text>
 			<text name="not worn instructions">
-				Ziehen Sie eine Körperform aus dem Inventar auf Ihren Avatar,
-um sie zu tragen. Sie können auch eine neue Körperform erstellen
-und diese anziehen.
+				Ziehen Sie eine neue Form aus dem Inventar auf Ihren Avatar, um diese anzulegen. Sie können aber auch eine neue erstellen und diese anlegen.
 			</text>
 			<text name="no modify instructions">
 				Sie sind nicht berechtigt, diese Kleidung zu bearbeiten.
@@ -68,9 +68,7 @@ und diese anziehen.
 				In [PATH]
 			</text>
 			<text name="not worn instructions">
-				Ziehen Sie eine Haut aus dem Inventar auf Ihren Avatar,
-um sie zu tragen. Sie können auch eine neue Haut erstellen
-und diese anziehen.
+				Ziehen Sie eine neue Skin (Haut) aus dem Inventar auf Ihren Avatar, um diese anzulegen. Sie können aber auch eine neue erstellen und diese anlegen.
 			</text>
 			<text name="no modify instructions">
 				Sie sind nicht berechtigt, diese Kleidung zu bearbeiten.
@@ -107,9 +105,7 @@ und diese anziehen.
 				In [PATH]
 			</text>
 			<text name="not worn instructions">
-				Ziehen Sie Haare aus dem Inventar auf Ihren Avatar,
-um sie zu tragen. Sie können auch neue Haare erstellen
-und diese anziehen.
+				Ziehen Sie Haar aus dem Inventar auf Ihren Avatar, um dieses anzulegen. Sie können aber auch eine neue erstellen und diese anlegen.
 			</text>
 			<text name="no modify instructions">
 				Sie sind nicht berechtigt, diese Kleidung zu bearbeiten.
@@ -140,9 +136,7 @@ und diese anziehen.
 				In [PATH]
 			</text>
 			<text name="not worn instructions">
-				Ziehen Sie Augen aus dem Inventar auf Ihren Avatar,
-um sie zu tragen. Sie können auch neue Augen erstellen
-und diese anziehen.
+				Ziehen Sie neue Augen aus dem Inventar auf Ihren Avatar, um diese anzulegen. Sie können aber auch eine neue erstellen und diese anlegen.
 			</text>
 			<text name="no modify instructions">
 				Sie sind nicht berechtigt, diese Kleidung zu bearbeiten.
@@ -156,7 +150,9 @@ und diese anziehen.
 			<button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/>
 			<button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/>
 		</panel>
-		<placeholder label="Kleidung" name="clothes_placeholder"/>
+		<text label="Kleidung" name="clothes_placeholder">
+			Kleidung
+		</text>
 		<panel label="Hemd" name="Shirt">
 			<texture_picker label="Stoff" name="Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/>
 			<color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/>
@@ -181,9 +177,7 @@ und diese anziehen.
 				In [PATH]
 			</text>
 			<text name="not worn instructions">
-				Ziehen Sie ein Hemd aus dem Inventar auf Ihren Avatar,
-um es zu tragen. Sie können auch ein neues Hemd erstellen
-und dieses anziehen.
+				Ziehen Sie ein neues Hemd aus dem Inventar auf Ihren Avatar, um dieses anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen.
 			</text>
 			<text name="no modify instructions">
 				Sie sind nicht berechtigt, diese Kleidung zu bearbeiten.
@@ -216,9 +210,7 @@ und dieses anziehen.
 				In [PATH]
 			</text>
 			<text name="not worn instructions">
-				Ziehen Sie eine Hose aus dem Inventar auf Ihren Avatar,
-um sie zu tragen. Sie können auch eine neue Hose erstellen
-und diese anziehen.
+				Ziehen Sie eine neue Hose aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen.
 			</text>
 			<text name="no modify instructions">
 				Sie sind nicht berechtigt, diese Kleidung zu bearbeiten.
@@ -244,9 +236,7 @@ und diese anziehen.
 				In [PATH]
 			</text>
 			<text name="not worn instructions">
-				Ziehen Sie Schuhe aus dem Inventar auf Ihren Avatar,
-um sie zu tragen. Sie können auch neue Schuhe erstellen
-und diese anziehen.
+				Ziehen Sie neue Schuhe aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen.
 			</text>
 			<text name="no modify instructions">
 				Sie sind nicht berechtigt, diese Kleidung zu bearbeiten.
@@ -279,9 +269,7 @@ und diese anziehen.
 				In [PATH]
 			</text>
 			<text name="not worn instructions">
-				Ziehen Sie Socken aus dem Inventar auf Ihren Avatar,
-um sie zu tragen. Sie können auch neue Socken erstellen
-und diese anziehen.
+				Ziehen Sie neue Strümpfe aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen.
 			</text>
 			<text name="no modify instructions">
 				Sie sind nicht berechtigt, diese Kleidung zu bearbeiten.
@@ -314,9 +302,7 @@ und diese anziehen.
 				In [PATH]
 			</text>
 			<text name="not worn instructions">
-				Ziehen Sie eine Jacke aus dem Inventar auf Ihren Avatar,
-um sie zu tragen. Sie können auch eine neue Jacke erstellen
-und diese anziehen.
+				Ziehen Sie eine neue Jacke aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen.
 			</text>
 			<text name="no modify instructions">
 				Sie sind nicht berechtigt, diese Kleidung zu bearbeiten.
@@ -350,9 +336,7 @@ und diese anziehen.
 				In [PATH]
 			</text>
 			<text name="not worn instructions">
-				Ziehen Sie Handschuhe aus dem Inventar auf Ihren Avatar,
-um sie zu tragen. Sie können auch neue Handschuhe erstellen
-und diese anziehen.
+				Ziehen Sie neue Handschuhe aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen.
 			</text>
 			<text name="no modify instructions">
 				Sie sind nicht berechtigt, diese Kleidung zu bearbeiten.
@@ -385,9 +369,7 @@ und diese anziehen.
 				In [PATH]
 			</text>
 			<text name="not worn instructions">
-				Ziehen Sie ein Unterhemd aus dem Inventar auf Ihren Avatar,
-um es zu tragen. Sie können auch ein neues Unterhemd erstellen
-und dieses anziehen.
+				Ziehen Sie ein neues Unterhemd aus dem Inventar auf Ihren Avatar, um dieses anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen.
 			</text>
 			<text name="no modify instructions">
 				Sie sind nicht berechtigt, diese Kleidung zu bearbeiten.
@@ -420,9 +402,7 @@ und dieses anziehen.
 				In [PATH]
 			</text>
 			<text name="not worn instructions">
-				Ziehen Sie eine Unterhose aus dem Inventar auf Ihren Avatar,
-um sie zu tragen. Sie können auch eine neue Unterhose erstellen
-und diese anziehen.
+				Ziehen Sie eine neue Unterhose aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen.
 			</text>
 			<text name="no modify instructions">
 				Sie sind nicht berechtigt, diese Kleidung zu bearbeiten.
@@ -455,9 +435,7 @@ und diese anziehen.
 				In [PATH]
 			</text>
 			<text name="not worn instructions">
-				Ziehen Sie einen Rock aus dem Inventar auf Ihren Avatar,
-um ihn zu tragen. Sie können auch einen neuen Rock erstellen
-und diesen anziehen.
+				Ziehen Sie einen neuen Rock aus dem Inventar auf Ihren Avatar, um diesen anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen.
 			</text>
 			<text name="no modify instructions">
 				Sie sind nicht berechtigt, diese Kleidung zu bearbeiten.
@@ -490,8 +468,7 @@ und diesen anziehen.
 				Befindet sich in [PATH]
 			</text>
 			<text name="not worn instructions">
-				Sie können eine neue Alpha-Maske anlegen, indem Sie eine von Ihrem Inventar auf Ihren Avatar ziehen.
-Sie können aber auch eine neue erstellen und diese anlegen.
+				Sie können eine neue Alpha-Maske anlegen, indem Sie eine von Ihrem Inventar auf Ihren Avatar ziehen. Sie können aber auch eine neue erstellen und diese anlegen.
 			</text>
 			<text name="no modify instructions">
 				Sie sind nicht berechtigt, diese Kleidung zu bearbeiten.
@@ -527,8 +504,7 @@ Sie können aber auch eine neue erstellen und diese anlegen.
 				Befindet sich in [PATH]
 			</text>
 			<text name="not worn instructions">
-				Ziehen Sie eine neue Tätowierung aus dem Inventar auf Ihren Avatar, um diese anzulegen.
-Sie können aber auch eine neue erstellen und diese anlegen.
+				Ziehen Sie eine neue Tätowierung aus dem Inventar auf Ihren Avatar, um diese anzulegen. Sie können aber auch eine neue erstellen und diese anlegen.
 			</text>
 			<text name="no modify instructions">
 				Sie sind nicht berechtigt, diese Kleidung zu bearbeiten.
@@ -546,6 +522,7 @@ Sie können aber auch eine neue erstellen und diese anlegen.
 			<button label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/>
 		</panel>
 	</tab_container>
+	<button label="Skriptinfo" label_selected="Skriptinfo" name="script_info"/>
 	<button label="Outfit erstellen" label_selected="Outfit erstellen" name="make_outfit_btn"/>
 	<button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/>
 	<button label="OK" label_selected="OK" name="Ok"/>
diff --git a/indra/newview/skins/default/xui/de/floater_god_tools.xml b/indra/newview/skins/default/xui/de/floater_god_tools.xml
index e790420efb6..716165bb6b8 100644
--- a/indra/newview/skins/default/xui/de/floater_god_tools.xml
+++ b/indra/newview/skins/default/xui/de/floater_god_tools.xml
@@ -11,8 +11,7 @@
 			</text>
 			<check_box label="Startbereich Einleitung" name="check prelude" tool_tip="Diese Region zu einem Startbereich machen."/>
 			<check_box label="Sonne fest" name="check fixed sun" tool_tip="Fixiert den Sonnenstand (wie in „Region/Grundstück“ &gt; „Terrain“."/>
-			<check_box height="32" label="Zuhause auf Teleport 
-zurücksetzen" name="check reset home" tool_tip="Wenn Einwohner wegteleportieren, ihr Zuhause auf Zielposition setzen."/>
+			<check_box height="32" label="Zuhause auf Teleport  zurücksetzen" name="check reset home" tool_tip="Wenn Einwohner weg teleportieren, ihr Zuhause auf Zielposition setzen."/>
 			<check_box bottom_delta="-32" label="Sichtbar" name="check visible" tool_tip="Diese Region für Nicht-Götter sichtbar machen."/>
 			<check_box label="Schaden" name="check damage" tool_tip="Schaden in dieser Region aktivieren."/>
 			<check_box label="Trafficüberwachung blockieren" name="block dwell" tool_tip="In dieser Region die Traffic-Berechnung abschalten."/>
@@ -59,10 +58,8 @@ zurücksetzen" name="check reset home" tool_tip="Wenn Einwohner wegteleportieren
 			<text name="region name">
 				Welsh
 			</text>
-			<check_box label="Skripts 
-deaktivieren" name="disable scripts" tool_tip="Skripts in dieser Region komplett abschalten"/>
-			<check_box label="Kollisionen 
-deaktivieren" name="disable collisions" tool_tip="Nicht-Avatar-Kollisionen in dieser Region komplett abschalten"/>
+			<check_box label="Skripts  deaktivieren" name="disable scripts" tool_tip="Skripts in dieser Region komplett abschalten"/>
+			<check_box label="Kollisionen  deaktivieren" name="disable collisions" tool_tip="Nicht-Avatar-Kollisionen in dieser Region komplett abschalten"/>
 			<check_box label="Physik deaktivieren" name="disable physics" tool_tip="Die Physik in dieser Region komplett abschalten"/>
 			<button label="Übernehmen" label_selected="Übernehmen" name="Apply" tool_tip="Klicken Sie hier, um die obigen Änderungen zu übernehmen."/>
 			<button label="Ziel festlegen" label_selected="Ziel festlegen" name="Set Target" tool_tip="Den Ziel-Avatar für das Löschen von Objekten auswählen."/>
diff --git a/indra/newview/skins/default/xui/de/floater_im_container.xml b/indra/newview/skins/default/xui/de/floater_im_container.xml
index 62578c00d5a..95eda97938c 100644
--- a/indra/newview/skins/default/xui/de/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/de/floater_im_container.xml
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="Sofortnachrichten"/>
+<multi_floater name="floater_im_box" title="GESPRÄCHE"/>
diff --git a/indra/newview/skins/default/xui/de/floater_incoming_call.xml b/indra/newview/skins/default/xui/de/floater_incoming_call.xml
index e40d57976f9..740085599fd 100644
--- a/indra/newview/skins/default/xui/de/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/de/floater_incoming_call.xml
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="incoming call" title="ANRUF VON UNBEKANNT">
+	<floater.string name="lifetime">
+		5
+	</floater.string>
 	<floater.string name="localchat">
 		Voice-Chat in der Nähe
 	</floater.string>
@@ -12,6 +15,9 @@
 	<floater.string name="VoiceInviteAdHoc">
 		ist einem Voice-Konferenz-Chat beigetreten.
 	</floater.string>
+	<floater.string name="VoiceInviteGroup">
+		ist einem Voice-Chat mit der Gruppe [GROUP] beigetreten.
+	</floater.string>
 	<text name="question">
 		Möchten Sie [CURRENT_CHAT] verlassen und diesem Voice-Chat beitreten?
 	</text>
diff --git a/indra/newview/skins/default/xui/de/floater_lsl_guide.xml b/indra/newview/skins/default/xui/de/floater_lsl_guide.xml
index 5e90076487b..1d6f690d3c1 100644
--- a/indra/newview/skins/default/xui/de/floater_lsl_guide.xml
+++ b/indra/newview/skins/default/xui/de/floater_lsl_guide.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="script ed float" title="LSL-WIKI">
+<floater name="script ed float" title="LSL-REFERENZ">
 	<check_box label="Cursor folgen" name="lock_check"/>
 	<combo_box label="Sperren" name="history_combo"/>
 	<button label="Zurück" name="back_btn"/>
diff --git a/indra/newview/skins/default/xui/de/floater_media_browser.xml b/indra/newview/skins/default/xui/de/floater_media_browser.xml
index 62a047b8fe7..18adb5ee7f3 100644
--- a/indra/newview/skins/default/xui/de/floater_media_browser.xml
+++ b/indra/newview/skins/default/xui/de/floater_media_browser.xml
@@ -19,7 +19,7 @@
 			<button label="vorwärts" name="seek"/>
 		</layout_panel>
 		<layout_panel name="parcel_owner_controls">
-			<button label="Aktuelle URL an Parzelle senden" name="assign"/>
+			<button label="Aktuelle Seite an Parzelle senden" name="assign"/>
 		</layout_panel>
 		<layout_panel name="external_controls">
 			<button label="In meinem Browser öffnen" name="open_browser"/>
diff --git a/indra/newview/skins/default/xui/de/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/de/floater_outfit_save_as.xml
new file mode 100644
index 00000000000..42cb91ccbb8
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_outfit_save_as.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="modal container">
+	<button label="Speichern" label_selected="Speichern" name="Save"/>
+	<button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/>
+	<text name="Save item as:">
+		Outfit speichern als:
+	</text>
+	<line_editor name="name ed">
+		[BESCHR]
+	</line_editor>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_outgoing_call.xml b/indra/newview/skins/default/xui/de/floater_outgoing_call.xml
index 65f2fe10e24..99ef0e900e2 100644
--- a/indra/newview/skins/default/xui/de/floater_outgoing_call.xml
+++ b/indra/newview/skins/default/xui/de/floater_outgoing_call.xml
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="outgoing call" title="ANRUF">
+	<floater.string name="lifetime">
+		5
+	</floater.string>
 	<floater.string name="localchat">
 		Voice-Chat in der Nähe
 	</floater.string>
@@ -21,6 +24,12 @@
 	<text name="noanswer">
 		Der Anruf wurde nicht entgegengenommen.   Bitte versuchen Sie es später erneut.
 	</text>
+	<text name="nearby">
+		Die Verbindung zu [VOICE_CHANNEL_NAME] wurde abgebrochen.  Sie werden nun wieder mit dem Chat in Ihrer Nähe verbunden.
+	</text>
+	<text name="nearby_P2P">
+		[VOICE_CHANNEL_NAME] hat den Anruf beendet.  Sie werden nun wieder mit dem Chat in Ihrer Nähe verbunden.
+	</text>
 	<text name="leaving">
 		[CURRENT_CHAT] wird verlassen.
 	</text>
diff --git a/indra/newview/skins/default/xui/de/floater_preview_gesture.xml b/indra/newview/skins/default/xui/de/floater_preview_gesture.xml
index 16e2fc18cb6..51c41a32090 100644
--- a/indra/newview/skins/default/xui/de/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/de/floater_preview_gesture.xml
@@ -24,6 +24,9 @@
 	<floater.string name="Title">
 		Gesten: [NAME]
 	</floater.string>
+	<text name="name_text">
+		Name:
+	</text>
 	<text name="desc_label">
 		Beschreibung:
 	</text>
diff --git a/indra/newview/skins/default/xui/de/floater_preview_notecard.xml b/indra/newview/skins/default/xui/de/floater_preview_notecard.xml
index a02a58ee0e2..62f9e1e9e5f 100644
--- a/indra/newview/skins/default/xui/de/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/de/floater_preview_notecard.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview notecard" title="HINWEIS:">
+<floater name="preview notecard" title="NOTIZKARTE:">
 	<floater.string name="no_object">
-		Es wurde kein Objekt gefunden, das diese Notiz enthält.
+		Es wurde kein Objekt gefunden, das diese Notizkarte enthält.
 	</floater.string>
 	<floater.string name="not_allowed">
 		Ihnen fehlt die Berechtigung zur Anzeige dieser Notizkarte.
diff --git a/indra/newview/skins/default/xui/de/floater_preview_texture.xml b/indra/newview/skins/default/xui/de/floater_preview_texture.xml
index 95d1db1877f..ac6a61cde6b 100644
--- a/indra/newview/skins/default/xui/de/floater_preview_texture.xml
+++ b/indra/newview/skins/default/xui/de/floater_preview_texture.xml
@@ -9,8 +9,6 @@
 	<text name="desc txt">
 		Beschreibung:
 	</text>
-	<button label="OK" name="Keep"/>
-	<button label="Abbrechen" name="Discard"/>
 	<text name="dimensions">
 		[WIDTH]px x [HEIGHT]px
 	</text>
@@ -43,4 +41,7 @@
 			2:1
 		</combo_item>
 	</combo_box>
+	<button label="OK" name="Keep"/>
+	<button label="Abbrechen" name="Discard"/>
+	<button label="Speichern unter" name="save_tex_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/floater_report_abuse.xml b/indra/newview/skins/default/xui/de/floater_report_abuse.xml
index 3e4cf86a752..3edf5959a22 100644
--- a/indra/newview/skins/default/xui/de/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/de/floater_report_abuse.xml
@@ -41,7 +41,7 @@
 	<combo_box name="category_combo" tool_tip="Kategorie -- wählen Sie die Kategorie aus, die am besten auf diesen Bericht zutrifft">
 		<combo_box.item label="Kategorie auswählen" name="Select_category"/>
 		<combo_box.item label="Alter&gt; Age-Play" name="Age__Age_play"/>
-		<combo_box.item label="Alter&gt; Erwachsener Einwohner in Teen Second Life" name="Age__Adult_resident_on_Teen_Second_Life"/>
+		<combo_box.item label="Alter &gt; Erwachsener Einwohner in Teen Second Life" name="Age__Adult_resident_on_Teen_Second_Life"/>
 		<combo_box.item label="Alter &gt; Minderjähriger Einwohner außerhalb Teen Second Life" name="Age__Underage_resident_outside_of_Teen_Second_Life"/>
 		<combo_box.item label="Angriff&gt; Kampf-Sandbox / unsichere Region" name="Assault__Combat_sandbox___unsafe_area"/>
 		<combo_box.item label="Angriff&gt; Sichere Region" name="Assault__Safe_area"/>
@@ -68,7 +68,7 @@
 		<combo_box.item label="Unanständigkeit &gt; Anstößige Inhalte oder Handlungen in der Öffentlichkeit" name="Indecency__Broadly_offensive_content_or_conduct"/>
 		<combo_box.item label="Unanständigkeit &gt; Anstößiger Avatarname" name="Indecency__Inappropriate_avatar_name"/>
 		<combo_box.item label="Unanständigkeit &gt; Unangemessener Inhalt oder unangemessenes Verhalten in PG-Region" name="Indecency__Mature_content_in_PG_region"/>
-		<combo_box.item label="Unanständigkeit &gt; Unangemessener Inhalt oder unangemessenes Verhalten in Mature-Region" name="Indecency__Inappropriate_content_in_Mature_region"/>
+		<combo_box.item label="Unanständigkeit &gt; Unangemessener Inhalt oder unangemessenes Verhalten in moderater Region" name="Indecency__Inappropriate_content_in_Mature_region"/>
 		<combo_box.item label="Urheberrechtsverletzung &gt; Entfernen von Inhalten" name="Intellectual_property_infringement_Content_Removal"/>
 		<combo_box.item label="Urheberrechtsverletzung &gt; CopyBot oder Berechtigungs-Exploit" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/>
 		<combo_box.item label="Intoleranz" name="Intolerance"/>
diff --git a/indra/newview/skins/default/xui/de/floater_script_limits.xml b/indra/newview/skins/default/xui/de/floater_script_limits.xml
new file mode 100644
index 00000000000..94a24a97ae0
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_script_limits.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="scriptlimits" title="SKRIPT-INFORMATION"/>
diff --git a/indra/newview/skins/default/xui/de/floater_search.xml b/indra/newview/skins/default/xui/de/floater_search.xml
index 3401db1a393..d44ad44aea6 100644
--- a/indra/newview/skins/default/xui/de/floater_search.xml
+++ b/indra/newview/skins/default/xui/de/floater_search.xml
@@ -6,4 +6,11 @@
 	<floater.string name="done_text">
 		Fertig
 	</floater.string>
+	<layout_stack name="stack1">
+		<layout_panel name="browser_layout">
+			<text name="refresh_search">
+				Suche wiederholen, um aktuellen Gott-Level zu berücksichtigen
+			</text>
+		</layout_panel>
+	</layout_stack>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/floater_select_key.xml b/indra/newview/skins/default/xui/de/floater_select_key.xml
index 6094d113595..8ab9db520a9 100644
--- a/indra/newview/skins/default/xui/de/floater_select_key.xml
+++ b/indra/newview/skins/default/xui/de/floater_select_key.xml
@@ -1,8 +1,7 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="modal container">
-	<button label="Abbrechen" label_selected="Abbrechen" name="Cancel" />
+	<button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/>
 	<text name="Save item as:">
-		Zur Auswahl gewünschte
-Taste drücken.
+		Eine Taste drücken, um die Auslösetaste zum Sprechen festzulegen.
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/floater_sell_land.xml b/indra/newview/skins/default/xui/de/floater_sell_land.xml
index c9e21a6c4f3..2bc7356e65c 100644
--- a/indra/newview/skins/default/xui/de/floater_sell_land.xml
+++ b/indra/newview/skins/default/xui/de/floater_sell_land.xml
@@ -39,7 +39,7 @@
 				Wählen Sie, ob der Verkauf offen oder auf eine bestimmte Person beschränkt ist.
 			</text>
 			<combo_box bottom_delta="-32" height="16" left="72" name="sell_to" width="140">
-				<combo_box.item label="-- Wählen --" name="--selectone--"/>
+				<combo_box.item label="-- Auswählen --" name="--selectone--"/>
 				<combo_box.item label="Jeder" name="Anyone"/>
 				<combo_box.item label="Bestimmte Person:" name="Specificuser:"/>
 			</combo_box>
diff --git a/indra/newview/skins/default/xui/de/floater_snapshot.xml b/indra/newview/skins/default/xui/de/floater_snapshot.xml
index 8aa1ef54978..80573d69ada 100644
--- a/indra/newview/skins/default/xui/de/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/de/floater_snapshot.xml
@@ -4,12 +4,12 @@
 		Zweck des Fotos
 	</text>
 	<radio_group label="Fototyp" name="snapshot_type_radio">
-		<radio_item label="Per E-Mail senden" name="postcard"/>
-		<radio_item label="Im Inventar speichern ([AMOUNT] L$)" name="texture"/>
-		<radio_item label="Auf Festplatte speichern" name="local"/>
+		<radio_item label="Email-Adresse" name="postcard"/>
+		<radio_item label="Mein Inventar ([AMOUNT] L$)" name="texture"/>
+		<radio_item label="Auf meinem Computer speichern" name="local"/>
 	</radio_group>
 	<text name="file_size_label">
-		Dateigröße: [SIZE] KB
+		[SIZE] KB
 	</text>
 	<button label="Foto aktualisieren" name="new_snapshot_btn"/>
 	<button label="Senden" name="send_btn"/>
@@ -19,8 +19,8 @@
 		<flyout_button_item label="Speichern unter..." name="saveas_item"/>
 	</flyout_button>
 	<button label="Abbrechen" name="discard_btn"/>
-	<button label="Mehr &gt;&gt;" name="more_btn" tool_tip="Erweiterte Optionen"/>
-	<button label="&lt;&lt; Weniger" name="less_btn" tool_tip="Erweiterte Optionen"/>
+	<button label="Mehr" name="more_btn" tool_tip="Erweiterte Optionen"/>
+	<button label="Weniger" name="less_btn" tool_tip="Erweiterte Optionen"/>
 	<text name="type_label2">
 		Größe
 	</text>
@@ -68,10 +68,10 @@
 		<combo_box.item label="Tiefe" name="Depth"/>
 		<combo_box.item label="Objektmasken" name="ObjectMattes"/>
 	</combo_box>
-	<check_box label="Interface auf Foto anzeigen" name="ui_check"/>
-	<check_box label="HUD-Objekte auf Foto anzeigen" name="hud_check"/>
+	<check_box label="Schnittstelle" name="ui_check"/>
+	<check_box label="HUDs" name="hud_check"/>
 	<check_box label="Nach dem Speichern offen lassen" name="keep_open_check"/>
-	<check_box label="Frame einfrieren (Vollbildvorschau)" name="freeze_frame_check"/>
+	<check_box label="Frame einfrieren (Vollbild)" name="freeze_frame_check"/>
 	<check_box label="Automatisch aktualisieren" name="auto_snapshot_check"/>
 	<string name="unknown">
 		unbekannt
diff --git a/indra/newview/skins/default/xui/de/floater_sys_well.xml b/indra/newview/skins/default/xui/de/floater_sys_well.xml
index bcf0cbd4192..0aa0014baaf 100644
--- a/indra/newview/skins/default/xui/de/floater_sys_well.xml
+++ b/indra/newview/skins/default/xui/de/floater_sys_well.xml
@@ -1,2 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="notification_chiclet" title="BENACHRICHTIGUNGEN"/>
+<floater name="notification_chiclet" title="BENACHRICHTIGUNGEN">
+	<string name="title_im_well_window">
+		IM-SITZUNGEN
+	</string>
+	<string name="title_notification_well_window">
+		BENACHRICHTIGUNGEN
+	</string>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_telehub.xml b/indra/newview/skins/default/xui/de/floater_telehub.xml
index f348371e4d6..923b4c0079f 100644
--- a/indra/newview/skins/default/xui/de/floater_telehub.xml
+++ b/indra/newview/skins/default/xui/de/floater_telehub.xml
@@ -21,12 +21,9 @@
 	<button label="Spawn hinzufügen" name="add_spawn_point_btn"/>
 	<button label="Spawn entfernen" name="remove_spawn_point_btn"/>
 	<text name="spawn_point_help">
-		Wählen Sie ein Objekt und klicken zur
-Positionsangabe auf „Hinzufügen“. Anschließend
-können sie das Objekt verschieben oder löschen.
-Positionsangaben sind relativ zum
-Telehub-Mittelpunkt.
-Wählen Sie ein Objekt aus, um seine Position in
-der Welt anzuzeigen.
+		Wählen Sie ein Objekt und klicken zur Positionsangabe auf Spawn hinzufügen.
+Anschließend können Sie das Objekt verschieben oder löschen.
+Positionsangaben sind relativ zum Telehub-Mittelpunkt.
+Wählen Sie ein Objekt aus der Liste aus, um dieses inworld zu markieren.
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml
index 48887191e03..b2f8cbed45f 100644
--- a/indra/newview/skins/default/xui/de/floater_tools.xml
+++ b/indra/newview/skins/default/xui/de/floater_tools.xml
@@ -454,12 +454,12 @@
 			<spinner label="Vertikal (V)" name="TexOffsetV"/>
 			<panel name="Add_Media">
 				<text name="media_tex">
-					Medien-URL
+					Medien
 				</text>
 				<button name="add_media" tool_tip="Medien hinzufügen"/>
 				<button name="delete_media" tool_tip="Diese Medien-Textur löschen"/>
 				<button name="edit_media" tool_tip="Diese Medien bearbeiten"/>
-				<button label="Ausrichten" label_selected="Medien angleichen" name="button align"/>
+				<button label="Ausrichten" label_selected="Medien angleichen" name="button align" tool_tip="Medientexturen angleichen (müssen zunächst geladen werden)"/>
 			</panel>
 		</panel>
 		<panel label="Inhalt" name="Contents">
@@ -478,14 +478,7 @@
 			Gebiet: [AREA] m².
 		</text>
 		<button label="Über Land" label_selected="Über Land" name="button about land"/>
-		<check_box label="Eigentümer anzeigen" name="checkbox show owners" tool_tip="Die Parzellen farblich nach Eigentümtertyp anzeigen 
-
-Grün = Ihr Land 
-Blau = Das Land Ihrer Gruppe 
-Rot = Im Eigentum anderer 
-Geld = Zum Verkauf 
-Lila = Zur Auktion 
-Grau = Öffentlich"/>
+		<check_box label="Eigentümer anzeigen" name="checkbox show owners" tool_tip="Die Parzellen farblich nach Eigentümtertyp anzeigen   Grün = Ihr Land  Blau = Das Land Ihrer Gruppe  Rot = Im Eigentum anderer  Geld = Zum Verkauf  Lila = Zur Auktion  Grau = Öffentlich"/>
 		<text name="label_parcel_modify">
 			Parzelle ändern
 		</text>
diff --git a/indra/newview/skins/default/xui/de/floater_top_objects.xml b/indra/newview/skins/default/xui/de/floater_top_objects.xml
index 579e5cbe7e4..dad550227e0 100644
--- a/indra/newview/skins/default/xui/de/floater_top_objects.xml
+++ b/indra/newview/skins/default/xui/de/floater_top_objects.xml
@@ -1,15 +1,40 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="top_objects" title="WIRD GELDADEN...">
+<floater name="top_objects" title="Top-Objekte">
+	<floater.string name="top_scripts_title">
+		Top-Skripts
+	</floater.string>
+	<floater.string name="top_scripts_text">
+		[COUNT] Skripts benötigen insgesamt [TIME] ms
+	</floater.string>
+	<floater.string name="scripts_score_label">
+		Zeit
+	</floater.string>
+	<floater.string name="scripts_mono_time_label">
+		Mono-Uhrzeit:
+	</floater.string>
+	<floater.string name="top_colliders_title">
+		Top-Kollisionsobjekte
+	</floater.string>
+	<floater.string name="top_colliders_text">
+		Top [COUNT] Objekte mit vielen potenziellen Kollisionen
+	</floater.string>
+	<floater.string name="colliders_score_label">
+		Wertung
+	</floater.string>
+	<floater.string name="none_descriptor">
+		Nicht gefunden.
+	</floater.string>
 	<text name="title_text">
 		Wird geladen...
 	</text>
 	<scroll_list name="objects_list">
-		<column label="Wertung" name="score" width="65"/>
-		<column label="Name" name="name" width="135"/>
-		<column label="Eigentümer" name="owner"/>
-		<column label="Position" name="location" width="125"/>
-		<column label="Uhrzeit" name="time"/>
-		<column label="Mono-Uhrzeit:" name="mono_time"/>
+		<scroll_list.columns label="Wertung" name="score" width="65"/>
+		<scroll_list.columns label="Name" name="name" width="135"/>
+		<scroll_list.columns label="Eigentümer" name="owner"/>
+		<scroll_list.columns label="Position" name="location" width="125"/>
+		<scroll_list.columns label="Uhrzeit" name="time"/>
+		<scroll_list.columns label="Mono-Uhrzeit:" name="mono_time"/>
+		<scroll_list.columns label="URLs" name="URLs"/>
 	</scroll_list>
 	<text name="id_text">
 		Objekt-ID:
@@ -22,37 +47,13 @@
 	<line_editor bg_readonly_color="clear" bottom_delta="3" enabled="false" follows="left|bottom|right" font="SansSerifSmall" height="20" left="80" name="object_name_editor" text_readonly_color="white" width="244"/>
 	<button bottom_delta="0" follows="bottom|right" height="20" label="Filter" name="filter_object_btn" right="-10" width="110"/>
 	<text name="owner_name_text">
-		Eigentümername:
+		Eigentümer:
 	</text>
 	<line_editor bg_readonly_color="clear" bottom_delta="3" enabled="true" follows="left|bottom|right" font="SansSerifSmall" height="20" left="106" name="owner_name_editor" text_readonly_color="white" width="218"/>
 	<button bottom_delta="0" follows="bottom|right" height="20" label="Filter" name="filter_owner_btn" right="-10" width="110"/>
+	<button bottom_delta="0" follows="bottom|right" height="20" label="Aktualisieren" name="refresh_btn" right="-10" width="110"/>
 	<button bottom="35" follows="bottom|left" height="20" label="Auswahl zurückgeben" left="10" name="return_selected_btn" width="134"/>
 	<button bottom="35" follows="bottom|left" height="20" label="Alle zurückgeben" left="150" name="return_all_btn" width="134"/>
 	<button bottom="10" follows="bottom|left" height="20" label="Auswahl deaktivieren" left="10" name="disable_selected_btn" width="134"/>
 	<button bottom="10" follows="bottom|left" height="20" label="Alle deaktivieren" left="150" name="disable_all_btn" width="134"/>
-	<button bottom_delta="0" follows="bottom|right" height="20" label="Aktualisieren" name="refresh_btn" right="-10" width="110"/>
-	<string name="top_scripts_title">
-		Top-Skripts
-	</string>
-	<string name="top_scripts_text">
-		[COUNT] Skripts benötigen insgesamt [TIME] ms
-	</string>
-	<string name="scripts_score_label">
-		Zeit
-	</string>
-	<string name="scripts_mono_time_label">
-		Mono-Uhrzeit:
-	</string>
-	<string name="top_colliders_title">
-		Top-Kollisionsobjekte
-	</string>
-	<string name="top_colliders_text">
-		Top [COUNT] Objekte mit vielen potenziellen Kollisionen
-	</string>
-	<string name="colliders_score_label">
-		Wertung
-	</string>
-	<string name="none_descriptor">
-		Nicht gefunden.
-	</string>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/floater_voice_controls.xml b/indra/newview/skins/default/xui/de/floater_voice_controls.xml
index 39675beb456..f978042cc2d 100644
--- a/indra/newview/skins/default/xui/de/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/de/floater_voice_controls.xml
@@ -1,13 +1,23 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="floater_voice_controls" title="Voice-Steuerung">
-	<panel name="control_panel">
-		<panel name="my_panel">
-			<text name="user_text" value="Mein Avatar:"/>
-		</panel>
-		<layout_stack>
-			<layout_panel>
-				<slider_bar name="volume_slider_bar" tool_tip="Master-Lautstärke"/>
-			</layout_panel>
-		</layout_stack>
-	</panel>
+	<string name="title_nearby">
+		VOICE IN DER NÄHE
+	</string>
+	<string name="title_group">
+		Gruppengespräch mit [GROUP]
+	</string>
+	<string name="title_adhoc">
+		Konferenzgespräch
+	</string>
+	<string name="title_peer_2_peer">
+		Gespräch mit [NAME]
+	</string>
+	<string name="no_one_near">
+		Es ist niemand in der Nähe, der Voice aktiviert hat.
+	</string>
+	<layout_stack name="my_call_stack">
+		<layout_panel name="leave_call_btn_panel">
+			<button label="Anruf beenden" name="leave_call_btn"/>
+		</layout_panel>
+	</layout_stack>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml
index a0bfc57e425..35a5ec35f71 100644
--- a/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml
+++ b/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="whitelist_entry">
+<floater name="whitelist_entry" title="WHITELISTEN-EINTRAG">
 	<text name="media_label">
 		Eine URL oder URL
 	</text>
diff --git a/indra/newview/skins/default/xui/de/floater_window_size.xml b/indra/newview/skins/default/xui/de/floater_window_size.xml
new file mode 100644
index 00000000000..a2a53e0567a
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_window_size.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="window_size" title="FENSTERGRÖSSE">
+	<string name="resolution_format">
+		[RES_X] x [RES_Y]
+	</string>
+	<text name="windowsize_text">
+		Fenstergröße einstellen:
+	</text>
+	<combo_box name="window_size_combo" tool_tip="Breite x Höhe">
+		<combo_box.item label="1000 x 700 (Standard)" name="item0"/>
+		<combo_box.item label="1024 x 768" name="item1"/>
+		<combo_box.item label="1280 x 720 (720p)" name="item2"/>
+		<combo_box.item label="1920 x 1080 (1080p)" name="item3"/>
+	</combo_box>
+	<button label="Festlegen" name="set_btn"/>
+	<button label="Abbrechen" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_world_map.xml b/indra/newview/skins/default/xui/de/floater_world_map.xml
index dd13623f918..89af5d4a30c 100644
--- a/indra/newview/skins/default/xui/de/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/de/floater_world_map.xml
@@ -1,53 +1,81 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="worldmap" title="KARTE">
-	<text name="you_label">
-		Sie
-	</text>
-	<text name="home_label">
-		Zuhause
-	</text>
-	<text name="auction_label">
-		Auktion
-	</text>
-	<text font="SansSerifSmall" name="land_for_sale_label">
-		Land zum Verkauf
-	</text>
-	<button label="Nach Hause" label_selected="Nach Hause" name="Go Home" tool_tip="Nach Hause teleportieren"/>
-	<check_box label="Einwohner" name="people_chk"/>
-	<check_box label="Infohub" name="infohub_chk"/>
-	<check_box label="Telehub" name="telehub_chk"/>
-	<check_box label="Land zu verkaufen" name="land_for_sale_chk"/>
-	<text name="events_label">
-		Events:
-	</text>
-	<check_box label="PG" name="event_chk"/>
-	<check_box initial_value="true" label="Mature" name="event_mature_chk"/>
-	<check_box label="Adult" name="event_adult_chk"/>
-	<combo_box label="Online-Freunde" name="friend combo" tool_tip="Freund, der auf Karte angezeigt werden soll">
-		<combo_box.item label="Online-Freunde" name="item1"/>
-	</combo_box>
-	<combo_box label="Landmarken" name="landmark combo" tool_tip="Landmarke, die auf Karte angezeigt werden soll">
-		<combo_box.item label="Landmarken" name="item1"/>
-	</combo_box>
-	<line_editor label="Nach Regionsname suchen" name="location" tool_tip="Geben Sie den Namen einer Region ein"/>
-	<button label="Suchen" name="DoSearch" tool_tip="Nach einer Region suchen"/>
-	<text name="search_label">
-		Suchergebnisse:
-	</text>
-	<scroll_list name="search_results">
-		<scroll_list.columns label="" name="icon"/>
-		<scroll_list.columns label="" name="sim_name"/>
-	</scroll_list>
-	<text name="location_label">
-		Standort:
-	</text>
-	<spinner name="spin x" tool_tip="X-Koordinate der Position auf der Karte"/>
-	<spinner name="spin y" tool_tip="Y-Koordinate der Position auf der Karte"/>
-	<spinner name="spin z" tool_tip="Z-Koordinate der Position auf der Karte"/>
-	<button label="Teleportieren" label_selected="Teleportieren" name="Teleport" tool_tip="Zu ausgewählter Position teleportieren"/>
-	<button label="Gesuchte Position" label_selected="Ziel anzeigen" name="Show Destination" tool_tip="Karte auf ausgewählte Position zentrieren"/>
-	<button label="Löschen" label_selected="Löschen" name="Clear" tool_tip="Verfolgung abschalten"/>
-	<button label="Meine Position" label_selected="Wo bin ich?" name="Show My Location" tool_tip="Karte auf Position Ihres Avatars zentrieren"/>
-	<button font="SansSerifSmall" label="SLurl in die Zwischenablage kopieren" name="copy_slurl" tool_tip="Kopiert die aktuelle Position als SLurl zur Verwendung im Web."/>
-	<slider label="Zoom" name="zoom slider"/>
+	<panel name="layout_panel_1">
+		<text name="events_label">
+			Legende
+		</text>
+	</panel>
+	<panel>
+		<button label="Meine Position" label_selected="Wo bin ich?" name="Show My Location" tool_tip="Karte auf Position meines Avatars zentrieren"/>
+		<text name="me_label">
+			Ich
+		</text>
+		<check_box label="Einwohner" name="people_chk"/>
+		<text name="person_label">
+			Person
+		</text>
+		<check_box label="Infohub" name="infohub_chk"/>
+		<text name="infohub_label">
+			Infohub
+		</text>
+		<check_box label="Land zu verkaufen" name="land_for_sale_chk"/>
+		<text name="land_sale_label">
+			Land-Verkauf
+		</text>
+		<text name="by_owner_label">
+			durch Besitzer
+		</text>
+		<text name="auction_label">
+			Land-Auktion
+		</text>
+		<button label="Nach Hause" label_selected="Nach Hause" name="Go Home" tool_tip="An meinen Heimatort teleportieren"/>
+		<text name="Home_label">
+			Startseite
+		</text>
+		<text name="events_label">
+			Events:
+		</text>
+		<check_box label="PG" name="event_chk"/>
+		<text name="pg_label">
+			Allgemein
+		</text>
+		<check_box initial_value="true" label="Mature" name="event_mature_chk"/>
+		<text name="mature_label">
+			Moderat
+		</text>
+		<check_box label="Adult" name="event_adult_chk"/>
+		<text name="adult_label">
+			Adult
+		</text>
+	</panel>
+	<panel>
+		<text name="find_on_map_label">
+			Auf Karte anzeigen
+		</text>
+	</panel>
+	<panel>
+		<combo_box label="Online-Freunde" name="friend combo" tool_tip="Freunde auf Karte anzeigen">
+			<combo_box.item label="Meine Freunde: Online" name="item1"/>
+		</combo_box>
+		<combo_box label="Meine Landmarken" name="landmark combo" tool_tip="Landmarke, die auf Karte angezeigt werden soll">
+			<combo_box.item label="Meine Landmarken" name="item1"/>
+		</combo_box>
+		<search_editor label="Regionen nach Name" name="location" tool_tip="Geben Sie den Namen einer Region ein"/>
+		<button label="Suchen" name="DoSearch" tool_tip="Nach einer Region suchen"/>
+		<scroll_list name="search_results">
+			<scroll_list.columns label="" name="icon"/>
+			<scroll_list.columns label="" name="sim_name"/>
+		</scroll_list>
+		<button label="Teleportieren" label_selected="Teleportieren" name="Teleport" tool_tip="Zu ausgewählter Position teleportieren"/>
+		<button font="SansSerifSmall" label="SLurl kopieren" name="copy_slurl" tool_tip="Kopiert die aktuelle Position als SLurl zur Verwendung im Web."/>
+		<button label="Auswahl anzeigen" label_selected="Ziel anzeigen" name="Show Destination" tool_tip="Karte auf ausgewählte Position zentrieren"/>
+	</panel>
+	<panel>
+		<text name="zoom_label">
+			Zoom
+		</text>
+	</panel>
+	<panel>
+		<slider label="Zoom" name="zoom slider"/>
+	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/inspect_avatar.xml b/indra/newview/skins/default/xui/de/inspect_avatar.xml
index 91b76503766..489e2578678 100644
--- a/indra/newview/skins/default/xui/de/inspect_avatar.xml
+++ b/indra/newview/skins/default/xui/de/inspect_avatar.xml
@@ -10,19 +10,17 @@
 	<string name="Details">
 		[SL_PROFILE]
 	</string>
-	<string name="Partner">
-		Partner: [PARTNER]
-	</string>
 	<text name="user_name" value="Grumpity ProductEngine"/>
 	<text name="user_subtitle" value="11 Monate und 3 Tage alt"/>
 	<text name="user_details">
 		Dies ist meine Beschreibung und ich finde sie wirklich gut!
 	</text>
-	<text name="user_partner">
-		Erica Linden
-	</text>
 	<slider name="volume_slider" tool_tip="Lautstärke" value="0.5"/>
 	<button label="Freund hinzufügen" name="add_friend_btn"/>
 	<button label="IM" name="im_btn"/>
 	<button label="Mehr" name="view_profile_btn"/>
+	<panel name="moderator_panel">
+		<button label="Voice deaktivieren" name="disable_voice"/>
+		<button label="Voice aktivieren" name="enable_voice"/>
+	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/inspect_group.xml b/indra/newview/skins/default/xui/de/inspect_group.xml
index fa9764e4207..81d946be9d2 100644
--- a/indra/newview/skins/default/xui/de/inspect_group.xml
+++ b/indra/newview/skins/default/xui/de/inspect_group.xml
@@ -31,4 +31,5 @@ Hoch solln sie leben!  Elche forever!  Und auch Mungos!
 	</text>
 	<button label="Zusammen" name="join_btn"/>
 	<button label="Verlassen" name="leave_btn"/>
+	<button label="Profil anzeigen" name="view_profile_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/menu_attachment_other.xml b/indra/newview/skins/default/xui/de/menu_attachment_other.xml
new file mode 100644
index 00000000000..33cff066a28
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_attachment_other.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- *NOTE: See also menu_avatar_other.xml -->
+<context_menu name="Avatar Pie">
+	<menu_item_call label="Profil anzeigen" name="Profile..."/>
+	<menu_item_call label="Freund hinzufügen" name="Add Friend"/>
+	<menu_item_call label="IM" name="Send IM..."/>
+	<menu_item_call label="Anrufen" name="Call"/>
+	<menu_item_call label="In Gruppe einladen" name="Invite..."/>
+	<menu_item_call label="Ignorieren" name="Avatar Mute"/>
+	<menu_item_call label="Melden" name="abuse"/>
+	<menu_item_call label="Einfrieren" name="Freeze..."/>
+	<menu_item_call label="Hinauswerfen" name="Eject..."/>
+	<menu_item_call label="Debug" name="Debug..."/>
+	<menu_item_call label="Hineinzoomen" name="Zoom In"/>
+	<menu_item_call label="Zahlen" name="Pay..."/>
+	<menu_item_call label="Objektprofil" name="Object Inspect"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_attachment_self.xml b/indra/newview/skins/default/xui/de/menu_attachment_self.xml
new file mode 100644
index 00000000000..bc33b9b93df
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_attachment_self.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Attachment Pie">
+	<menu_item_call label="Berühren" name="Attachment Object Touch"/>
+	<menu_item_call label="Bearbeiten" name="Edit..."/>
+	<menu_item_call label="Abnehmen" name="Detach"/>
+	<menu_item_call label="Fallen lassen" name="Drop"/>
+	<menu_item_call label="Aufstehen" name="Stand Up"/>
+	<menu_item_call label="Mein Aussehen" name="Appearance..."/>
+	<menu_item_call label="Meine Freunde" name="Friends..."/>
+	<menu_item_call label="Meine Gruppen" name="Groups..."/>
+	<menu_item_call label="Mein Profil" name="Profile..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_avatar_icon.xml b/indra/newview/skins/default/xui/de/menu_avatar_icon.xml
index b1e119c66a9..c036cf5515e 100644
--- a/indra/newview/skins/default/xui/de/menu_avatar_icon.xml
+++ b/indra/newview/skins/default/xui/de/menu_avatar_icon.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="Avatar Icon Menu">
-	<menu_item_call label="Profil anzeigen..." name="Show Profile"/>
+	<menu_item_call label="Profil anzeigen" name="Show Profile"/>
 	<menu_item_call label="IM senden..." name="Send IM"/>
 	<menu_item_call label="Freund hinzufügen..." name="Add Friend"/>
 	<menu_item_call label="Freund entfernen..." name="Remove Friend"/>
diff --git a/indra/newview/skins/default/xui/de/menu_avatar_other.xml b/indra/newview/skins/default/xui/de/menu_avatar_other.xml
new file mode 100644
index 00000000000..85db6481193
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_avatar_other.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- *NOTE: See also menu_attachment_other.xml -->
+<context_menu name="Avatar Pie">
+	<menu_item_call label="Profil anzeigen" name="Profile..."/>
+	<menu_item_call label="Freund hinzufügen" name="Add Friend"/>
+	<menu_item_call label="IM" name="Send IM..."/>
+	<menu_item_call label="Anrufen" name="Call"/>
+	<menu_item_call label="In Gruppe einladen" name="Invite..."/>
+	<menu_item_call label="Ignorieren" name="Avatar Mute"/>
+	<menu_item_call label="Melden" name="abuse"/>
+	<menu_item_call label="Einfrieren" name="Freeze..."/>
+	<menu_item_call label="Hinauswerfen" name="Eject..."/>
+	<menu_item_call label="Debug" name="Debug..."/>
+	<menu_item_call label="Hineinzoomen" name="Zoom In"/>
+	<menu_item_call label="Zahlen" name="Pay..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_avatar_self.xml b/indra/newview/skins/default/xui/de/menu_avatar_self.xml
new file mode 100644
index 00000000000..5f9856a9cbe
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_avatar_self.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Self Pie">
+	<menu_item_call label="Aufstehen" name="Stand Up"/>
+	<context_menu label="Ausziehen &gt;" name="Take Off &gt;">
+		<context_menu label="Kleidung &gt;" name="Clothes &gt;">
+			<menu_item_call label="Hemd" name="Shirt"/>
+			<menu_item_call label="Hose" name="Pants"/>
+			<menu_item_call label="Rock" name="Skirt"/>
+			<menu_item_call label="Schuhe" name="Shoes"/>
+			<menu_item_call label="Strümpfe" name="Socks"/>
+			<menu_item_call label="Jacke" name="Jacket"/>
+			<menu_item_call label="Handschuhe" name="Gloves"/>
+			<menu_item_call label="Unterhemd" name="Self Undershirt"/>
+			<menu_item_call label="Unterhose" name="Self Underpants"/>
+			<menu_item_call label="Tätowierung" name="Self Tattoo"/>
+			<menu_item_call label="Alpha" name="Self Alpha"/>
+			<menu_item_call label="Alle Kleider" name="All Clothes"/>
+		</context_menu>
+		<context_menu label="HUD &gt;" name="Object Detach HUD"/>
+		<context_menu label="Abnehmen &gt;" name="Object Detach"/>
+		<menu_item_call label="Alles abnehmen" name="Detach All"/>
+	</context_menu>
+	<menu_item_call label="Mein Aussehen" name="Appearance..."/>
+	<menu_item_call label="Meine Freunde" name="Friends..."/>
+	<menu_item_call label="Meine Gruppen" name="Groups..."/>
+	<menu_item_call label="Mein Profil" name="Profile..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_bottomtray.xml b/indra/newview/skins/default/xui/de/menu_bottomtray.xml
index 246275bee1e..3f12906adcc 100644
--- a/indra/newview/skins/default/xui/de/menu_bottomtray.xml
+++ b/indra/newview/skins/default/xui/de/menu_bottomtray.xml
@@ -4,4 +4,9 @@
 	<menu_item_check label="Schaltfläche Bewegungssteuerung" name="ShowMoveButton"/>
 	<menu_item_check label="Schaltfläche Ansicht" name="ShowCameraButton"/>
 	<menu_item_check label="Schaltfläche Foto" name="ShowSnapshotButton"/>
+	<menu_item_call label="Ausschneiden" name="NearbyChatBar_Cut"/>
+	<menu_item_call label="Kopieren" name="NearbyChatBar_Copy"/>
+	<menu_item_call label="Einfügen" name="NearbyChatBar_Paste"/>
+	<menu_item_call label="Löschen" name="NearbyChatBar_Delete"/>
+	<menu_item_call label="Alle auswählen" name="NearbyChatBar_Select_All"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/de/menu_im_well_button.xml b/indra/newview/skins/default/xui/de/menu_im_well_button.xml
new file mode 100644
index 00000000000..f464b71f4a7
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_im_well_button.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="IM Well Button Context Menu">
+	<menu_item_call label="Alle schließen" name="Close All"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/de/menu_imchiclet_adhoc.xml
new file mode 100644
index 00000000000..11f93f47b47
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_imchiclet_adhoc.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="IMChiclet AdHoc Menu">
+	<menu_item_call label="Sitzung beenden" name="End Session"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml
index 128bcdb86a9..9b6a6b2c4a1 100644
--- a/indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml
+++ b/indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml
@@ -7,6 +7,7 @@
 	<menu_item_call label="Teleportieren" name="teleport"/>
 	<menu_item_call label="In Gruppe einladen" name="invite_to_group"/>
 	<menu_item_call label="Ignorieren" name="block"/>
+	<menu_item_call label="Freischalten" name="unblock"/>
 	<menu_item_call label="Melden" name="report"/>
 	<menu_item_call label="Einfrieren" name="freeze"/>
 	<menu_item_call label="Hinauswerfen" name="eject"/>
diff --git a/indra/newview/skins/default/xui/de/menu_inventory.xml b/indra/newview/skins/default/xui/de/menu_inventory.xml
index fcdfc8b9e00..77c012d0456 100644
--- a/indra/newview/skins/default/xui/de/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/de/menu_inventory.xml
@@ -10,7 +10,7 @@
 	<menu_item_call label="Fundstücke ausleeren" name="Empty Lost And Found"/>
 	<menu_item_call label="Neuer Ordner" name="New Folder"/>
 	<menu_item_call label="Neues Skript" name="New Script"/>
-	<menu_item_call label="Neue Notiz" name="New Note"/>
+	<menu_item_call label="Neue Notizkarte" name="New Note"/>
 	<menu_item_call label="Neue Geste" name="New Gesture"/>
 	<menu label="Neue Kleider" name="New Clothes">
 		<menu_item_call label="Neues Hemd" name="New Shirt"/>
@@ -46,6 +46,9 @@
 	<menu_item_call label="Teleportieren" name="Landmark Open"/>
 	<menu_item_call label="Öffnen" name="Animation Open"/>
 	<menu_item_call label="Öffnen" name="Sound Open"/>
+	<menu_item_call label="Aktuelles Outfit ersetzen" name="Replace Outfit"/>
+	<menu_item_call label="Zum aktuellen Outfit hinzufügen" name="Add To Outfit"/>
+	<menu_item_call label="Vom aktuellen Outfit entfernen" name="Remove From Outfit"/>
 	<menu_item_call label="Objekt löschen" name="Purge Item"/>
 	<menu_item_call label="Objekt wiederherstellen" name="Restore Item"/>
 	<menu_item_call label="Original suchen" name="Find Original"/>
@@ -56,10 +59,9 @@
 	<menu_item_call label="Kopieren" name="Copy"/>
 	<menu_item_call label="Einfügen" name="Paste"/>
 	<menu_item_call label="Als Link einfügen" name="Paste As Link"/>
+	<menu_item_call label="Link entfernen" name="Remove Link"/>
 	<menu_item_call label="Löschen" name="Delete"/>
-	<menu_item_call label="Von Outfit entfernen" name="Remove From Outfit"/>
-	<menu_item_call label="Zum Outfit hinzufügen" name="Add To Outfit"/>
-	<menu_item_call label="Outfit ersetzen" name="Replace Outfit"/>
+	<menu_item_call label="Systemordner löschen" name="Delete System Folder"/>
 	<menu_item_call label="Konferenz-Chat starten" name="Conference Chat Folder"/>
 	<menu_item_call label="Wiedergeben/Abspielen" name="Sound Play"/>
 	<menu_item_call label="Landmarken-Info" name="About Landmark"/>
diff --git a/indra/newview/skins/default/xui/de/menu_inventory_add.xml b/indra/newview/skins/default/xui/de/menu_inventory_add.xml
index f6b7e513255..448b1d80bf7 100644
--- a/indra/newview/skins/default/xui/de/menu_inventory_add.xml
+++ b/indra/newview/skins/default/xui/de/menu_inventory_add.xml
@@ -8,7 +8,7 @@
 	</menu>
 	<menu_item_call label="Neuer Ordner" name="New Folder"/>
 	<menu_item_call label="Neues Skript" name="New Script"/>
-	<menu_item_call label="Neue Notiz" name="New Note"/>
+	<menu_item_call label="Neue Notizkarte" name="New Note"/>
 	<menu_item_call label="Neue Geste" name="New Gesture"/>
 	<menu label="Neue Kleider" name="New Clothes">
 		<menu_item_call label="Neues Hemd" name="New Shirt"/>
diff --git a/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml
index 69f9b86d751..472d7bc4fda 100644
--- a/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml
+++ b/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml
@@ -9,4 +9,6 @@
 	<menu_item_call label="Papierkorb ausleeren" name="empty_trash"/>
 	<menu_item_call label="Fundbüro ausleeren" name="empty_lostnfound"/>
 	<menu_item_call label="Textur speichern als" name="Save Texture As"/>
+	<menu_item_call label="Original suchen" name="Find Original"/>
+	<menu_item_call label="Alle Links suchen" name="Find All Links"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/de/menu_land.xml b/indra/newview/skins/default/xui/de/menu_land.xml
new file mode 100644
index 00000000000..9b1e6727b7b
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_land.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Land Pie">
+	<menu_item_call label="Land-Info" name="Place Information..."/>
+	<menu_item_call label="Hier sitzen" name="Sit Here"/>
+	<menu_item_call label="Dieses Land kaufen" name="Land Buy"/>
+	<menu_item_call label="Pass kaufen" name="Land Buy Pass"/>
+	<menu_item_call label="Bauen" name="Create"/>
+	<menu_item_call label="Terrain bearbeiten" name="Edit Terrain"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_login.xml b/indra/newview/skins/default/xui/de/menu_login.xml
index 26c2a4c2f46..fffa056cac2 100644
--- a/indra/newview/skins/default/xui/de/menu_login.xml
+++ b/indra/newview/skins/default/xui/de/menu_login.xml
@@ -23,10 +23,8 @@
 		<menu_item_call label="Debug-Einstellungen anzeigen" name="Debug Settings"/>
 		<menu_item_call label="UI/Farb-Einstellungen" name="UI/Color Settings"/>
 		<menu_item_call label="XUI-Editor" name="UI Preview Tool"/>
-		<menu_item_call label="Seitenleiste anzeigen" name="Show Side Tray"/>
-		<menu_item_call label="Widget testen" name="Widget Test"/>
-		<menu_item_call label="Inspektor-Test" name="Inspectors Test"/>
-		<menu_item_check label="Reg In Client Test (Neustart)" name="Reg In Client Test (restart)"/>
+		<menu label="UI-Tests" name="UI Tests"/>
+		<menu_item_call label="Fenstergröße einstellen..." name="Set Window Size..."/>
 		<menu_item_call label="Servicebedingungen anzeigen" name="TOS"/>
 		<menu_item_call label="Wichtige Meldung anzeigen" name="Critical"/>
 		<menu_item_call label="Web-Browser-Test" name="Web Browser Test"/>
diff --git a/indra/newview/skins/default/xui/de/menu_notification_well_button.xml b/indra/newview/skins/default/xui/de/menu_notification_well_button.xml
new file mode 100644
index 00000000000..0f2784f1607
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_notification_well_button.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Notification Well Button Context Menu">
+	<menu_item_call label="Alle schließen" name="Close All"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_object.xml b/indra/newview/skins/default/xui/de/menu_object.xml
new file mode 100644
index 00000000000..6f8d85ecb83
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_object.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Object Pie">
+	<menu_item_call label="Berühren" name="Object Touch"/>
+	<menu_item_call label="Bearbeiten" name="Edit..."/>
+	<menu_item_call label="Bauen" name="Build"/>
+	<menu_item_call label="Öffnen" name="Open"/>
+	<menu_item_call label="Hier sitzen" name="Object Sit"/>
+	<menu_item_call label="Objektprofil" name="Object Inspect"/>
+	<menu_item_call label="Hineinzoomen" name="Zoom In"/>
+	<context_menu label="Anziehen &gt;" name="Put On">
+		<menu_item_call label="Anziehen" name="Wear"/>
+		<context_menu label="Anhängen &gt;" name="Object Attach"/>
+		<context_menu label="HUD anhängen &gt;" name="Object Attach HUD"/>
+	</context_menu>
+	<context_menu label="Entfernen &gt;" name="Remove">
+		<menu_item_call label="Nehmen" name="Pie Object Take"/>
+		<menu_item_call label="Missbrauch melden" name="Report Abuse..."/>
+		<menu_item_call label="Ignorieren" name="Object Mute"/>
+		<menu_item_call label="Zurückgeben" name="Return..."/>
+		<menu_item_call label="Löschen" name="Delete"/>
+	</context_menu>
+	<menu_item_call label="Kopie nehmen" name="Take Copy"/>
+	<menu_item_call label="Zahlen" name="Pay..."/>
+	<menu_item_call label="Kaufen" name="Buy..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_participant_list.xml b/indra/newview/skins/default/xui/de/menu_participant_list.xml
index 042123cde4d..15c957cee3c 100644
--- a/indra/newview/skins/default/xui/de/menu_participant_list.xml
+++ b/indra/newview/skins/default/xui/de/menu_participant_list.xml
@@ -1,5 +1,20 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Participant List Context Menu">
-	<menu_item_check label="Text stummschalten" name="MuteText"/>
-	<menu_item_check label="Text-Chat zulassen" name="AllowTextChat"/>
+	<menu_item_check label="Nach Name sortieren" name="SortByName"/>
+	<menu_item_check label="Nach letzten Sprechern sortieren" name="SortByRecentSpeakers"/>
+	<menu_item_call label="Profil anzeigen" name="View Profile"/>
+	<menu_item_call label="Freund hinzufügen" name="Add Friend"/>
+	<menu_item_call label="IM" name="IM"/>
+	<menu_item_call label="Anrufen" name="Call"/>
+	<menu_item_call label="Teilen" name="Share"/>
+	<menu_item_call label="Zahlen" name="Pay"/>
+	<menu_item_check label="Voice ignorieren" name="Block/Unblock"/>
+	<menu_item_check label="Text ignorieren" name="MuteText"/>
+	<context_menu label="Moderator-Optionen &gt;" name="Moderator Options">
+		<menu_item_check label="Text-Chat zulassen" name="AllowTextChat"/>
+		<menu_item_call label="Diesen Teilnehmer stummschalten" name="ModerateVoiceMuteSelected"/>
+		<menu_item_call label="Alle anderen stummschalten" name="ModerateVoiceMuteOthers"/>
+		<menu_item_call label="Stummschaltung für diesen Teilnehmer aufheben" name="ModerateVoiceUnMuteSelected"/>
+		<menu_item_call label="Stummschaltung für alle anderen aufheben" name="ModerateVoiceUnMuteOthers"/>
+	</context_menu>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_groups.xml b/indra/newview/skins/default/xui/de/menu_people_groups.xml
new file mode 100644
index 00000000000..87f43d27e6a
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_people_groups.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_group_plus">
+	<menu_item_call label="Ansichts-Info" name="View Info"/>
+	<menu_item_call label="Chat" name="Chat"/>
+	<menu_item_call label="Anrufen" name="Call"/>
+	<menu_item_call label="Aktivieren" name="Activate"/>
+	<menu_item_call label="Verlassen" name="Leave"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_nearby.xml b/indra/newview/skins/default/xui/de/menu_people_nearby.xml
index ef58b4136e6..9fa5db5fa38 100644
--- a/indra/newview/skins/default/xui/de/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/de/menu_people_nearby.xml
@@ -7,4 +7,5 @@
 	<menu_item_call label="Teilen" name="Share"/>
 	<menu_item_call label="Zahlen" name="Pay"/>
 	<menu_item_check label="Ignorieren/Freischalten" name="Block/Unblock"/>
+	<menu_item_call label="Teleport anbieten" name="teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_profile_overflow.xml b/indra/newview/skins/default/xui/de/menu_profile_overflow.xml
index 89b56d15715..f5cedf54640 100644
--- a/indra/newview/skins/default/xui/de/menu_profile_overflow.xml
+++ b/indra/newview/skins/default/xui/de/menu_profile_overflow.xml
@@ -2,4 +2,8 @@
 <toggleable_menu name="profile_overflow_menu">
 	<menu_item_call label="Zahlen" name="pay"/>
 	<menu_item_call label="Teilen" name="share"/>
+	<menu_item_call label="Hinauswerfen" name="kick"/>
+	<menu_item_call label="Einfrieren" name="freeze"/>
+	<menu_item_call label="Auftauen" name="unfreeze"/>
+	<menu_item_call label="CSR" name="csr"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml
index ee2f1ee7c9a..e972e5d1f53 100644
--- a/indra/newview/skins/default/xui/de/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/de/menu_viewer.xml
@@ -9,7 +9,7 @@
 		<menu_item_call label="Mein Profil" name="Profile"/>
 		<menu_item_call label="Mein Aussehen" name="Appearance"/>
 		<menu_item_check label="Mein Inventar" name="Inventory"/>
-		<menu_item_call label="Inventar in Seitenleiste anzeigen" name="ShowSidetrayInventory"/>
+		<menu_item_call label="Inventar auf Seitenleiste anzeigen" name="ShowSidetrayInventory"/>
 		<menu_item_call label="Meine Gesten" name="Gestures"/>
 		<menu label="Mein Status" name="Status">
 			<menu_item_call label="Abwesend" name="Set Away"/>
@@ -25,36 +25,30 @@
 		<menu_item_check label="Lokaler Chat" name="Nearby Chat"/>
 		<menu_item_call label="Leute in dern Nähe" name="Active Speakers"/>
 		<menu_item_check label="Medien in der Nähe" name="Nearby Media"/>
-		<menu_item_check label="(Legacy) Kommunikation" name="Instant Message"/>
-		<menu_item_call label="(Temp) Mediensteuerung" name="Preferences"/>
 	</menu>
 	<menu label="Welt" name="World">
-		<menu_item_check label="Bewegen" name="Movement Controls"/>
-		<menu_item_check label="Ansicht" name="Camera Controls"/>
-		<menu_item_call label="Über Land" name="About Land"/>
-		<menu_item_call label="Region/Grundstück" name="Region/Estate"/>
-		<menu_item_call label="Land kaufen" name="Buy Land"/>
-		<menu_item_call label="Mein Land" name="My Land"/>
-		<menu label="Anzeigen" name="Land">
-			<menu_item_check label="Bannlinien" name="Ban Lines"/>
-			<menu_item_check label="Strahlen" name="beacons"/>
-			<menu_item_check label="Grundstücksgrenzen" name="Property Lines"/>
-			<menu_item_check label="Landeigentümer" name="Land Owners"/>
-		</menu>
-		<menu label="Landmarken" name="Landmarks">
-			<menu_item_call label="Landmarke hier setzen" name="Create Landmark Here"/>
-			<menu_item_call label="Hier als Zuhause wählen" name="Set Home to Here"/>
-		</menu>
-		<menu_item_call label="Startseite" name="Teleport Home"/>
 		<menu_item_check label="Minikarte" name="Mini-Map"/>
 		<menu_item_check label="Weltkarte" name="World Map"/>
 		<menu_item_call label="Foto" name="Take Snapshot"/>
+		<menu_item_call label="Landmarke für diesen Ort setzen" name="Create Landmark Here"/>
+		<menu label="Ortsprofil" name="Land">
+			<menu_item_call label="Land-Info" name="About Land"/>
+			<menu_item_call label="Region/Grundstück" name="Region/Estate"/>
+		</menu>
+		<menu_item_call label="Dieses Land kaufen" name="Buy Land"/>
+		<menu_item_call label="Mein Land" name="My Land"/>
+		<menu label="Anzeigen" name="LandShow">
+			<menu_item_check label="Bewegungssteuerung" name="Movement Controls"/>
+			<menu_item_check label="Ansichtsteuerung" name="Camera Controls"/>
+		</menu>
+		<menu_item_call label="Teleport nach Hause" name="Teleport Home"/>
+		<menu_item_call label="Hier als Zuhause wählen" name="Set Home to Here"/>
 		<menu label="Sonne" name="Environment Settings">
 			<menu_item_call label="Sonnenaufgang" name="Sunrise"/>
 			<menu_item_call label="Mittag" name="Noon"/>
 			<menu_item_call label="Sonnenuntergang" name="Sunset"/>
 			<menu_item_call label="Mitternacht" name="Midnight"/>
-			<menu_item_call label="Grundstückszeit verwenden" name="Revert to Region Default"/>
+			<menu_item_call label="Grundstückszeit" name="Revert to Region Default"/>
 			<menu_item_call label="Umwelt-Editor" name="Environment Editor"/>
 		</menu>
 	</menu>
@@ -125,21 +119,20 @@
 	</menu>
 	<menu label="Hilfe" name="Help">
 		<menu_item_call label="[SECOND_LIFE]-Hilfe" name="Second Life Help"/>
-		<menu_item_call label="Tutorial" name="Tutorial"/>
 		<menu_item_call label="Missbrauch melden" name="Report Abuse"/>
+		<menu_item_call label="Fehler melden" name="Report Bug"/>
 		<menu_item_call label="INFO ÜBER [APP_NAME]" name="About Second Life"/>
 	</menu>
 	<menu label="Erweitert" name="Advanced">
-		<menu_item_check label="Nach 30 Min auf Abwesend stellen" name="Go Away/AFK When Idle"/>
 		<menu_item_call label="Animation meines Avatars stoppen" name="Stop Animating My Avatar"/>
 		<menu_item_call label="Textur neu laden" name="Rebake Texture"/>
 		<menu_item_call label="UI-Größe auf Standard setzen" name="Set UI Size to Default"/>
+		<menu_item_call label="Fenstergröße einstellen..." name="Set Window Size..."/>
 		<menu_item_check label="Auswahldistanz einschränken" name="Limit Select Distance"/>
 		<menu_item_check label="Kamerabeschränkungen deaktivieren" name="Disable Camera Distance"/>
 		<menu_item_check label="Foto (hohe Auflösung)" name="HighResSnapshot"/>
 		<menu_item_check label="Fotos auf Festplatte leise speichern" name="QuietSnapshotsToDisk"/>
 		<menu_item_check label="Fotos auf Festplatte komprimieren" name="CompressSnapshotsToDisk"/>
-		<menu_item_call label="Textur speichern als" name="Save Texture As"/>
 		<menu label="Performance Tools" name="Performance Tools">
 			<menu_item_call label="Lag-Anzeige" name="Lag Meter"/>
 			<menu_item_check label="Statistikleiste" name="Statistics Bar"/>
@@ -333,7 +326,6 @@
 			<menu_item_call label="Als XML speichern" name="Save to XML"/>
 			<menu_item_check label="XUI-Namen anzeigen" name="Show XUI Names"/>
 			<menu_item_call label="Test-IMs senden" name="Send Test IMs"/>
-			<menu_item_call label="Inspektoren testen" name="Test Inspectors"/>
 		</menu>
 		<menu label="Avatar" name="Character">
 			<menu label="Geladene Textur nehmen" name="Grab Baked Texture">
@@ -366,6 +358,7 @@
 			<menu_item_call label="Fehler in Avatar-Texturen beseitigen" name="Debug Avatar Textures"/>
 			<menu_item_call label="Lokale Texturen ausgeben" name="Dump Local Textures"/>
 		</menu>
+		<menu_item_check label="HTTP-Texturen" name="HTTP Textures"/>
 		<menu_item_call label="Bilder komprimieren" name="Compress Images"/>
 		<menu_item_check label="Ausgabe Fehlerbeseitigung ausgeben" name="Output Debug Minidump"/>
 		<menu_item_check label="Bei nächster Ausführung Fenster öffnen" name="Console Window"/>
@@ -383,7 +376,7 @@
 			<menu_item_call label="Asset-ID zulassen" name="Get Assets IDs"/>
 		</menu>
 		<menu label="Parzelle" name="Parcel">
-			<menu_item_call label="Besitzer zu mir" name="Owner To Me"/>
+			<menu_item_call label="Besitzer zu mir zwingen" name="Owner To Me"/>
 			<menu_item_call label="Auf Linden-Inhalt festlegen" name="Set to Linden Content"/>
 			<menu_item_call label="Öffentiches Land in Besitz nehmen" name="Claim Public Land"/>
 		</menu>
@@ -410,7 +403,6 @@
 			<menu_item_call label="Tätowierung" name="Tattoo"/>
 			<menu_item_call label="Alle Kleider" name="All Clothes"/>
 		</menu>
-		<menu_item_check label="Werkzeugleiste anzeigen" name="Show Toolbar"/>
 		<menu label="Hilfe" name="Help">
 			<menu_item_call label="Offizielles Linden-Blog" name="Official Linden Blog"/>
 			<menu_item_call label="Scripting-Portal" name="Scripting Portal"/>
diff --git a/indra/newview/skins/default/xui/de/mime_types_linux.xml b/indra/newview/skins/default/xui/de/mime_types_linux.xml
new file mode 100644
index 00000000000..e4b5c532921
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/mime_types_linux.xml
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<mimetypes name="default">
+	<widgetset name="web">
+		<label name="web_label">
+			Webinhalt
+		</label>
+		<tooltip name="web_tooltip">
+			Dieser Ort verfügt über Webinhalte
+		</tooltip>
+		<playtip name="web_playtip">
+			Webinhalt anzeigen
+		</playtip>
+	</widgetset>
+	<widgetset name="movie">
+		<label name="movie_label">
+			Video
+		</label>
+		<tooltip name="movie_tooltip">
+			Ein Video wurde gefunden.
+		</tooltip>
+		<playtip name="movie_playtip">
+			Video wiedergeben
+		</playtip>
+	</widgetset>
+	<widgetset name="image">
+		<label name="image_label">
+			Bild
+		</label>
+		<tooltip name="image_tooltip">
+			Dieser Ort verfügt über Bildinhalte
+		</tooltip>
+		<playtip name="image_playtip">
+			Das Bild an diesem Ort anzeigen
+		</playtip>
+	</widgetset>
+	<widgetset name="audio">
+		<label name="audio_label">
+			Audio
+		</label>
+		<tooltip name="audio_tooltip">
+			Dieser Ort verfügt über Audioinhalte
+		</tooltip>
+		<playtip name="audio_playtip">
+			Das Audio dieses Standorts abspielen
+		</playtip>
+	</widgetset>
+	<scheme name="rtsp">
+		<label name="rtsp_label">
+			Echtzeit-Streaming
+		</label>
+	</scheme>
+	<mimetype name="blank">
+		<label name="blank_label">
+			- Keine -
+		</label>
+	</mimetype>
+	<mimetype name="none/none">
+		<label name="none/none_label">
+			- Keine -
+		</label>
+	</mimetype>
+	<mimetype name="audio/*">
+		<label name="audio2_label">
+			Audio
+		</label>
+	</mimetype>
+	<mimetype name="video/*">
+		<label name="video2_label">
+			Video
+		</label>
+	</mimetype>
+	<mimetype name="image/*">
+		<label name="image2_label">
+			Bild
+		</label>
+	</mimetype>
+	<mimetype name="video/vnd.secondlife.qt.legacy">
+		<label name="vnd.secondlife.qt.legacy_label">
+			Video (QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="application/javascript">
+		<label name="application/javascript_label">
+			Javascript
+		</label>
+	</mimetype>
+	<mimetype name="application/ogg">
+		<label name="application/ogg_label">
+			Ogg Audio/Video
+		</label>
+	</mimetype>
+	<mimetype name="application/pdf">
+		<label name="application/pdf_label">
+			PDF-Dokument
+		</label>
+	</mimetype>
+	<mimetype name="application/postscript">
+		<label name="application/postscript_label">
+			Postscript-Dokument
+		</label>
+	</mimetype>
+	<mimetype name="application/rtf">
+		<label name="application/rtf_label">
+			Rich Text (RTF)
+		</label>
+	</mimetype>
+	<mimetype name="application/smil">
+		<label name="application/smil_label">
+			Synchronized Multimedia Integration Language (SMIL)
+		</label>
+	</mimetype>
+	<mimetype name="application/xhtml+xml">
+		<label name="application/xhtml+xml_label">
+			Webseite (XHTML)
+		</label>
+	</mimetype>
+	<mimetype name="application/x-director">
+		<label name="application/x-director_label">
+			Macromedia Director
+		</label>
+	</mimetype>
+	<mimetype name="audio/mid">
+		<label name="audio/mid_label">
+			Audio (MIDI)
+		</label>
+	</mimetype>
+	<mimetype name="audio/mpeg">
+		<label name="audio/mpeg_label">
+			Audio (MP3)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-aiff">
+		<label name="audio/x-aiff_label">
+			Audio (AIFF)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-wav">
+		<label name="audio/x-wav_label">
+			Audio (WAV)
+		</label>
+	</mimetype>
+	<mimetype name="image/bmp">
+		<label name="image/bmp_label">
+			Bild (BMP)
+		</label>
+	</mimetype>
+	<mimetype name="image/gif">
+		<label name="image/gif_label">
+			Bild (GIF)
+		</label>
+	</mimetype>
+	<mimetype name="image/jpeg">
+		<label name="image/jpeg_label">
+			Bild (JPEG)
+		</label>
+	</mimetype>
+	<mimetype name="image/png">
+		<label name="image/png_label">
+			Bild (PNG)
+		</label>
+	</mimetype>
+	<mimetype name="image/svg+xml">
+		<label name="image/svg+xml_label">
+			Bild (SVG)
+		</label>
+	</mimetype>
+	<mimetype name="image/tiff">
+		<label name="image/tiff_label">
+			Bild (TIFF)
+		</label>
+	</mimetype>
+	<mimetype name="text/html">
+		<label name="text/html_label">
+			Webseite
+		</label>
+	</mimetype>
+	<mimetype name="text/plain">
+		<label name="text/plain_label">
+			Text
+		</label>
+	</mimetype>
+	<mimetype name="text/xml">
+		<label name="text/xml_label">
+			XML
+		</label>
+	</mimetype>
+	<mimetype name="video/mpeg">
+		<label name="video/mpeg_label">
+			Video (MPEG)
+		</label>
+	</mimetype>
+	<mimetype name="video/mp4">
+		<label name="video/mp4_label">
+			Video (MP4)
+		</label>
+	</mimetype>
+	<mimetype name="video/quicktime">
+		<label name="video/quicktime_label">
+			Video (QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-asf">
+		<label name="video/x-ms-asf_label">
+			Video (Windows Media ASF)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-wmv">
+		<label name="video/x-ms-wmv_label">
+			Video (Windows Media WMV)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-msvideo">
+		<label name="video/x-msvideo_label">
+			Video (AVI)
+		</label>
+	</mimetype>
+</mimetypes>
diff --git a/indra/newview/skins/default/xui/de/mime_types_mac.xml b/indra/newview/skins/default/xui/de/mime_types_mac.xml
new file mode 100644
index 00000000000..e4b5c532921
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/mime_types_mac.xml
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<mimetypes name="default">
+	<widgetset name="web">
+		<label name="web_label">
+			Webinhalt
+		</label>
+		<tooltip name="web_tooltip">
+			Dieser Ort verfügt über Webinhalte
+		</tooltip>
+		<playtip name="web_playtip">
+			Webinhalt anzeigen
+		</playtip>
+	</widgetset>
+	<widgetset name="movie">
+		<label name="movie_label">
+			Video
+		</label>
+		<tooltip name="movie_tooltip">
+			Ein Video wurde gefunden.
+		</tooltip>
+		<playtip name="movie_playtip">
+			Video wiedergeben
+		</playtip>
+	</widgetset>
+	<widgetset name="image">
+		<label name="image_label">
+			Bild
+		</label>
+		<tooltip name="image_tooltip">
+			Dieser Ort verfügt über Bildinhalte
+		</tooltip>
+		<playtip name="image_playtip">
+			Das Bild an diesem Ort anzeigen
+		</playtip>
+	</widgetset>
+	<widgetset name="audio">
+		<label name="audio_label">
+			Audio
+		</label>
+		<tooltip name="audio_tooltip">
+			Dieser Ort verfügt über Audioinhalte
+		</tooltip>
+		<playtip name="audio_playtip">
+			Das Audio dieses Standorts abspielen
+		</playtip>
+	</widgetset>
+	<scheme name="rtsp">
+		<label name="rtsp_label">
+			Echtzeit-Streaming
+		</label>
+	</scheme>
+	<mimetype name="blank">
+		<label name="blank_label">
+			- Keine -
+		</label>
+	</mimetype>
+	<mimetype name="none/none">
+		<label name="none/none_label">
+			- Keine -
+		</label>
+	</mimetype>
+	<mimetype name="audio/*">
+		<label name="audio2_label">
+			Audio
+		</label>
+	</mimetype>
+	<mimetype name="video/*">
+		<label name="video2_label">
+			Video
+		</label>
+	</mimetype>
+	<mimetype name="image/*">
+		<label name="image2_label">
+			Bild
+		</label>
+	</mimetype>
+	<mimetype name="video/vnd.secondlife.qt.legacy">
+		<label name="vnd.secondlife.qt.legacy_label">
+			Video (QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="application/javascript">
+		<label name="application/javascript_label">
+			Javascript
+		</label>
+	</mimetype>
+	<mimetype name="application/ogg">
+		<label name="application/ogg_label">
+			Ogg Audio/Video
+		</label>
+	</mimetype>
+	<mimetype name="application/pdf">
+		<label name="application/pdf_label">
+			PDF-Dokument
+		</label>
+	</mimetype>
+	<mimetype name="application/postscript">
+		<label name="application/postscript_label">
+			Postscript-Dokument
+		</label>
+	</mimetype>
+	<mimetype name="application/rtf">
+		<label name="application/rtf_label">
+			Rich Text (RTF)
+		</label>
+	</mimetype>
+	<mimetype name="application/smil">
+		<label name="application/smil_label">
+			Synchronized Multimedia Integration Language (SMIL)
+		</label>
+	</mimetype>
+	<mimetype name="application/xhtml+xml">
+		<label name="application/xhtml+xml_label">
+			Webseite (XHTML)
+		</label>
+	</mimetype>
+	<mimetype name="application/x-director">
+		<label name="application/x-director_label">
+			Macromedia Director
+		</label>
+	</mimetype>
+	<mimetype name="audio/mid">
+		<label name="audio/mid_label">
+			Audio (MIDI)
+		</label>
+	</mimetype>
+	<mimetype name="audio/mpeg">
+		<label name="audio/mpeg_label">
+			Audio (MP3)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-aiff">
+		<label name="audio/x-aiff_label">
+			Audio (AIFF)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-wav">
+		<label name="audio/x-wav_label">
+			Audio (WAV)
+		</label>
+	</mimetype>
+	<mimetype name="image/bmp">
+		<label name="image/bmp_label">
+			Bild (BMP)
+		</label>
+	</mimetype>
+	<mimetype name="image/gif">
+		<label name="image/gif_label">
+			Bild (GIF)
+		</label>
+	</mimetype>
+	<mimetype name="image/jpeg">
+		<label name="image/jpeg_label">
+			Bild (JPEG)
+		</label>
+	</mimetype>
+	<mimetype name="image/png">
+		<label name="image/png_label">
+			Bild (PNG)
+		</label>
+	</mimetype>
+	<mimetype name="image/svg+xml">
+		<label name="image/svg+xml_label">
+			Bild (SVG)
+		</label>
+	</mimetype>
+	<mimetype name="image/tiff">
+		<label name="image/tiff_label">
+			Bild (TIFF)
+		</label>
+	</mimetype>
+	<mimetype name="text/html">
+		<label name="text/html_label">
+			Webseite
+		</label>
+	</mimetype>
+	<mimetype name="text/plain">
+		<label name="text/plain_label">
+			Text
+		</label>
+	</mimetype>
+	<mimetype name="text/xml">
+		<label name="text/xml_label">
+			XML
+		</label>
+	</mimetype>
+	<mimetype name="video/mpeg">
+		<label name="video/mpeg_label">
+			Video (MPEG)
+		</label>
+	</mimetype>
+	<mimetype name="video/mp4">
+		<label name="video/mp4_label">
+			Video (MP4)
+		</label>
+	</mimetype>
+	<mimetype name="video/quicktime">
+		<label name="video/quicktime_label">
+			Video (QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-asf">
+		<label name="video/x-ms-asf_label">
+			Video (Windows Media ASF)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-wmv">
+		<label name="video/x-ms-wmv_label">
+			Video (Windows Media WMV)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-msvideo">
+		<label name="video/x-msvideo_label">
+			Video (AVI)
+		</label>
+	</mimetype>
+</mimetypes>
diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml
index 7f5a561f744..65d3b74bd56 100644
--- a/indra/newview/skins/default/xui/de/notifications.xml
+++ b/indra/newview/skins/default/xui/de/notifications.xml
@@ -32,10 +32,10 @@
 			<button name="No" text="$notext"/>
 		</form>
 	</template>
-	<notification functor="GenericAcknowledge" label="Unbekannter Warnhinweis" name="MissingAlert">
-		Ihre Version von [APP_NAME] kann den gerade empfangenen Warnhinweis nicht anzeigen.  Bitte vergewissern Sie sich, dass Sie den aktuellsten Viewer installiert haben.
+	<notification functor="GenericAcknowledge" label="Unbekannte Meldung" name="MissingAlert">
+		Ihre Version von [APP_NAME] kann die gerade empfangene Benachrichtigung nicht anzeigen.  Bitte vergewissern Sie sich, dass Sie den aktuellsten Viewer installiert haben.
 
-Fehlerdetails: Der Warnhinweis &apos;[_NAME]&apos; wurde in notifications.xml nicht gefunden.
+Fehlerdetails: The notification called &apos;[_NAME]&apos; was not found in notifications.xml.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="FloaterNotFound">
@@ -94,12 +94,12 @@ Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut.
 		<usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nicht speichern" yestext="Alles speichern"/>
 	</notification>
 	<notification name="GrantModifyRights">
-		Die Gewährung von Änderungsrechten an andere Einwohner ermöglicht es diesen, JEDES BELIEBIGE Objekt zu ändern oder an sich zu nehmen, das Sie in der [SECOND_LIFE]-Welt besitzen. Seien Sie SEHR vorsichtig beim Erteilen dieser Erlaubnis.
-Möchten Sie [FIRST_NAME] [LAST_NAME] Änderungsrechte gewähren?
+		Wenn Sie einem anderen Einwohner, das die Erlaubnis zum Bearbeiten erteilen, dann kann dieser JEDES Objekt, das Sie inworld besitzen, verändern, löschen oder nehmen. Seien Sie SEHR vorsichtig, wenn Sie diese Erlaubnis gewähren!
+Möchten Sie [FIRST_NAME] [LAST_NAME] die Erlaubnis zum Bearbeiten gewähren?
 		<usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
 	</notification>
 	<notification name="GrantModifyRightsMultiple">
-		Die Gewährung von Änderungsrechten an andere Einwohner ermöglicht es diesen, JEDES BELIEBIGE Objekt zu ändern, das Sie in der [SECOND_LIFE]-Welt besitzen. Seien Sie SEHR vorsichtig beim Erteilen dieser Erlaubnis.
+		Wenn Sie einem anderen Einwohner, die Erlaubnis zum Bearbeiten erteilen, dann kann dieser JEDES Objekt, das Sie inworld besitzen, verändern. Seien Sie SEHR vorsichtig, wenn Sie diese Erlaubnis gewähren!
 Möchten Sie den ausgewählten Einwohnern Änderungsrechte gewähren?
 		<usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
 	</notification>
@@ -156,6 +156,11 @@ Der Rolle „[ROLE_NAME]“ diese Fähigkeit zuweisen?
 Der Rolle „[ROLE_NAME]“ diese Fähigkeit zuweisen?
 		<usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
 	</notification>
+	<notification name="AttachmentDrop">
+		Sie möchten Ihren Anhang wirklich fallen lassen?
+Möchten Sie fortfahren?
+		<usetemplate ignoretext="Bestätigen, bevor Anhänge fallen gelassen werden" name="okcancelignore" notext="Nein" yestext="Ja"/>
+	</notification>
 	<notification name="ClickUnimplemented">
 		Leider ist diese Funktion noch nicht implementiert.
 	</notification>
@@ -253,15 +258,11 @@ Für die gesamte Region ist Schaden aktiviert.
 Damit Waffen funktionieren, müssen Skripts erlaubt sein.
 	</notification>
 	<notification name="MultipleFacesSelected">
-		Momentan sind mehrere Seiten ausgewählt. Wenn Sie fortfahren, werden einzelne Medien auf mehreren Seiten des Objektes dargestellt. Um die Medien auf einer einzigen Seite darzustellen, wählen Sie Textur auswählen und klicken Sie auf die gewünschte Seite. Danach klicken Sie Hinzufügen.
+		Mehrere Flächen wurden ausgewählt.
+Wenn Sie fortfahren werden auf mehrere Flächen des Objekts unterschiedlichen Medien-Instanzen eingefügt.
+Um Medien nur auf einer Fläche einzufügen, wählen Sie „Oberfläche auswählen&quot; und klicken Sie auf die gewünschte Fläche des Objektes. Klicken Sie dann auf „Hinzufügen&quot;.
 		<usetemplate ignoretext="Die Medien werden auf mehrere ausgewählte Seiten übertragen" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
 	</notification>
-	<notification name="WhiteListInvalidatesHomeUrl">
-		Wenn Sie diesen Eintrag zur Whitelist hinzufügen, dann wird die URL, 
-die Sie für diese Medien-Instanz festgelegt haben, ungültig. Dies ist nicht zulässig.
-Der Eintrag kann nicht zur Whitelist hinzugefügt werden.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
 	<notification name="MustBeInParcel">
 		Sie müssen auf einer Landparzelle stehen, um ihren Landepunkt festzulegen.
 	</notification>
@@ -352,14 +353,6 @@ Sind Sie sicher, dass Sie fortfahren wollen?
 	<notification name="SelectHistoryItemToView">
 		Wählen Sie ein Element zur Ansicht.
 	</notification>
-	<notification name="ResetShowNextTimeDialogs">
-		Möchten Sie alle Popups wieder aktivieren, die Sie zuvor auf „Nicht mehr anzeigen“ gesetzt haben?
-		<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
-	</notification>
-	<notification name="SkipShowNextTimeDialogs">
-		Möchten Sie alle Popups, die übersprungen werden können, deaktivieren?
-		<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
-	</notification>
 	<notification name="CacheWillClear">
 		Der Cache wird nach einem Neustart von [APP_NAME] geleert.
 	</notification>
@@ -621,6 +614,10 @@ Bitte versuchen Sie es erneut.
 	<notification name="LandmarkCreated">
 		„[LANDMARK_NAME]“ wurde zum Ordner „[FOLDER_NAME]“ hinzugefügt.
 	</notification>
+	<notification name="LandmarkAlreadyExists">
+		Sie besitzen für diesen Standort bereits eine Landmarke.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
 	<notification name="CannotCreateLandmarkNotOwner">
 		Sie können hier keine Landmarke erstellen, da der Landeigentümer dies verboten hat.
 	</notification>
@@ -722,7 +719,8 @@ Keine Parzelle ausgewählt.
 		Eine erzwungene Landübertragung ist nicht möglich, da die Auswahl mehrere Regionen umfasst. Wählen Sie ein kleineres Gebiet und versuchen Sie es erneut.
 	</notification>
 	<notification name="ForceOwnerAuctionWarning">
-		Diese Parzelle steht zur Auktion. Eine zwangsweise Eigentumsübertragung beendet die Auktion und verärgert womöglich Einwohner, die bereits ein Gebot abgegeben haben. Eigentumsübertragung erzwingen?
+		Diese Parzelle steht zur Auktion. Wenn Sie eine Eigentumsübertragung erzwingen, wird die Auktion abgesagt. Wenn die Auktion bereits begonnen hatte, dann werden Sie sich hiermit keine Freunde machen!
+Eigentumsübertragung erzwingen?
 		<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
 	</notification>
 	<notification name="CannotContentifyNothingSelected">
@@ -775,7 +773,7 @@ Wählen Sie eine einzelne Parzelle.
 Streaming-Medien erfordern eine schnelle Internet-Verbindung.
 
 Streaming-Medien abspielen, wenn verfügbar?
-(Sie können diese Option später unter „Einstellungen“ &gt; „Audio &amp; Video“ ändern.)
+(Sie können diese Option später unter Einstellungen &gt; Datenschutz ändern.)
 		<usetemplate name="okcancelbuttons" notext="Deaktivieren" yestext="Medien wiedergeben"/>
 	</notification>
 	<notification name="CannotDeedLandWaitingForServer">
@@ -1340,6 +1338,10 @@ Chat und Instant Messages werden ausgeblendet. Instant Messages (Sofortnachricht
 [INVITE]
 		<usetemplate name="okcancelbuttons" notext="Ablehnen" yestext="Beitreten"/>
 	</notification>
+	<notification name="JoinedTooManyGroups">
+		Sie haben die maximale Anzahl an Gruppen erreicht. Bitte verlassen Sie eine Gruppe bevor Sie einer neuen beitreten oder eine neue Gruppe bilden.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
 	<notification name="KickUser">
 		Beim Hinauswerfen dieses Benutzers welche Meldung anzeigen?
 		<form name="form">
@@ -1584,11 +1586,11 @@ Anzeige für [AMOUNT] L$ veröffentlichen?
 		<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
 	</notification>
 	<notification name="SetClassifiedMature">
-		Enthält diese Anzeige Mature-Inhalte?
+		Enthält diese Anzeige moderate Inhalte?
 		<usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nein" yestext="Ja"/>
 	</notification>
 	<notification name="SetGroupMature">
-		Beschäftigt sich diese Gruppe mit Mature-Inhalten?
+		Beschäftigt sich diese Gruppe mit moderaten Inhalten?
 		<usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nein" yestext="Ja"/>
 	</notification>
 	<notification label="Neustart bestätigen" name="ConfirmRestart">
@@ -1605,7 +1607,9 @@ Anzeige für [AMOUNT] L$ veröffentlichen?
 	</notification>
 	<notification label="Alterseinstufung der Region ändern" name="RegionMaturityChange">
 		Die Alterseinstufung dieser Region wurde aktualisiert.
-Es kann eine Weile dauern, bis sich die Änderung auf die Karte auswirkt.
+Es kann eine Weile dauern, bis diese Änderung auf der Karte angezeigt wird.
+
+Um Regionen der Alterseinstufung „Adult&quot; zu betreten, müssen Einwohner altersüberprüft sein. Dies kann entweder über die Alterverifizierung oder Zahlungsverifizierung geschehen.
 	</notification>
 	<notification label="Falsche Voice-Version" name="VoiceVersionMismatch">
 		Diese Version von [APP_NAME] ist mit der Voice-Chat-Funktion in dieser Region nicht kompatibel. Damit Voice-Chat funktioniert, müssen Sie [APP_NAME] aktualisieren.
@@ -1727,16 +1731,6 @@ Inventarobjekt(e) verschieben?
 		Mit dieser Funktion können Sie Verstöße gegen die [http://secondlife.com/corporate/tos.php Servicebedingungen (EN)] and [http://secondlife.com/corporate/cs.php Community-Standards] melden.
 
 Alle gemeldeten Verstöße werden bearbeitet. Sie können auf der Seite [http://secondlife.com/support/incidentreport.php Verstoßmeldungen] nachverfolgen, welche Verstoßmeldungen bearbeitet wurden.
-	</notification>
-	<notification name="HelpReportAbuseEmailEO">
-		WICHTIG: Diese Meldung wird an den Eigentümer der Region gesendet, in der Sie sich gerade befinden, nicht an Linden Lab.
-
-Als besonderen Service für Einwohner und Besucher übernimmt der Eigentümer dieser Region die Bearbeitung aller anfallenden Meldungen. Von diesem Standort aus eingereichte Meldungen werden nicht von Linden Lab bearbeitet.
-
-Der Eigentümer der Region bearbeitet Meldungen auf Grundlage der Richtlinien, die im für diese Region geltenden Grundstücksvertrag festgelegt sind.
-(Den Vertrag können Sie unter  &apos;Welt &apos;  &gt;  &apos;Land-Info &apos; einsehen.)
-
-Die Klärung des gemeldeten Verstoßes bezieht sich nur auf diese Region. Der Zugang für Einwohner zu anderen Bereichen von [SECOND_LIFE] wird durch das Resultat dieser Meldung nicht beeinträchtigt. Nur Linden Lab kann den Zugang zu [SECOND_LIFE] beschränken.
 	</notification>
 	<notification name="HelpReportAbuseSelectCategory">
 		Wählen Sie eine Missbrauchskategorie aus.
@@ -1971,7 +1965,6 @@ Von einer Webseite zu diesem Formular linken, um anderen leichten Zugang zu dies
 	</notification>
 	<notification name="UnableToLoadGesture">
 		Geste [NAME] konnte nicht geladen werden.
-Bitte versuchen Sie es erneut.
 	</notification>
 	<notification name="LandmarkMissing">
 		Landmarke fehlt in Datenbank.
@@ -2073,7 +2066,7 @@ Wählen Sie eine kleinere Landfläche.
 		Einige Begriffe in Ihrer Suchanfrage wurden ausgeschlossen, aufgrund von in den Community Standards definierten Inhaltsbeschränkungen.
 	</notification>
 	<notification name="NoContentToSearch">
-		Bitte wählen Sie mindestens eine Inhaltsart für die Suche aus (PG, Mature oder Adult).
+		Bitte wählen Sie mindestens eine Inhaltsart für die Suche aus (Allgemein, Moderat oder Adult).
 	</notification>
 	<notification name="GroupVote">
 		[NAME] hat eine Abstimmung vorgeschlagen über:
@@ -2086,6 +2079,9 @@ Wählen Sie eine kleinere Landfläche.
 	<notification name="SystemMessage">
 		[MESSAGE]
 	</notification>
+	<notification name="PaymentRecived">
+		[MESSAGE]
+	</notification>
 	<notification name="EventNotification">
 		Event-Benachrichtigung:
 
@@ -2132,8 +2128,7 @@ Bitte installieren Sie das Plugin erneut. Falls weiterhin Problem auftreten, kon
 		Die Objekte von [FIRST] [LAST] auf dieser Parzelle wurden in das Inventar dieser Person transferiert.
 	</notification>
 	<notification name="OtherObjectsReturned2">
-		Die Objekte von [FIRST] [LAST] auf dieser
-Parzelle von „[NAME]“ wurden an ihren Eigentümer zurückgegeben.
+		Alle Objekte auf der ausgewählten Parzelle, die Einwohner &apos;[NAME]&apos; gehören, wurden an ihren Eigentümern zurückgegeben.
 	</notification>
 	<notification name="GroupObjectsReturned">
 		Die mit der Gruppe [GROUPNAME] gemeinsam genutzten Objekte auf dieser Parzelle wurden in das Inventar ihrer Eigentümer transferiert.
@@ -2146,7 +2141,6 @@ Nicht transferierbare an die Gruppe übertragene Objekte wurden gelöscht.
 	<notification name="ServerObjectMessage">
 		Nachricht von [NAME]:
 [MSG]
-		<usetemplate name="okcancelbuttons" notext="OK" yestext="Untersuchen"/>
 	</notification>
 	<notification name="NotSafe">
 		Auf diesem Land ist Schaden aktiviert.
@@ -2276,12 +2270,12 @@ Versuchen Sie es in einigen Minuten erneut.
 		</form>
 	</notification>
 	<notification name="UserGiveItem">
-		[NAME_SLURL] hat Ihnen folgendes [OBJECTTYPE]:
+		[NAME_SLURL] hat Ihnen folgendes [OBJECTTYPE] übergeben:
 [ITEM_SLURL]
 		<form name="form">
-			<button name="Keep" text="Behalten"/>
 			<button name="Show" text="Anzeigen"/>
 			<button name="Discard" text="Verwerfen"/>
+			<button name="Mute" text="Ignorieren"/>
 		</form>
 	</notification>
 	<notification name="GodMessage">
@@ -2306,6 +2300,9 @@ Versuchen Sie es in einigen Minuten erneut.
 			<button name="Cancel" text="Abbrechen"/>
 		</form>
 	</notification>
+	<notification name="TeleportOfferSent">
+		Ein Teleportangebot wurde an [TO_NAME] geschickt
+	</notification>
 	<notification name="GotoURL">
 		[MESSAGE]
 [URL]
@@ -2323,8 +2320,12 @@ Versuchen Sie es in einigen Minuten erneut.
 		<form name="form">
 			<button name="Accept" text="Akzeptieren"/>
 			<button name="Decline" text="Ablehnen"/>
+			<button name="Send IM" text="IM senden"/>
 		</form>
 	</notification>
+	<notification name="FriendshipOffered">
+		Sie haben [TO_NAME] die Freundschaft angeboten.
+	</notification>
 	<notification name="OfferFriendshipNoMessage">
 		[NAME] bietet Ihnen die Freundschaft an.
 
@@ -2341,8 +2342,8 @@ Versuchen Sie es in einigen Minuten erneut.
 		[NAME] hat Ihr Freundschaftsangebot abgelehnt.
 	</notification>
 	<notification name="OfferCallingCard">
-		[FIRST] [LAST] bietet Ihnen eine Visitenkarte an.
-Dies erstellt ein Lesezeichen in Ihrem Inventar, damit Sie diesen Einwohner jederzeit über IM erreichen.
+		[FIRST] [LAST] bietet Ihnen ihre/seine Visitenkarte an.
+Ihrem Inventar wird ein Lesezeichen erstellt, damit Sie diesem Einwohner einfach eine IM schicken können.
 		<form name="form">
 			<button name="Accept" text="Akzeptieren"/>
 			<button name="Decline" text="Ablehnen"/>
@@ -2422,14 +2423,6 @@ Anfrage gestatten?
 			<button name="Block" text="Ignorieren"/>
 		</form>
 	</notification>
-	<notification name="FirstBalanceIncrease">
-		Sie haben gerade [AMOUNT] L$ erhalten.
-Ihr Kontostand wird oben rechts angezeigt.
-	</notification>
-	<notification name="FirstBalanceDecrease">
-		Sie haben gerade [AMOUNT] L$ bezahlt.
-Ihr Kontostand wird oben rechts angezeigt.
-	</notification>
 	<notification name="BuyLindenDollarSuccess">
 		Vielen Dank für Ihre Zahlung.
 
@@ -2437,58 +2430,17 @@ Ihr L$-Kontostand wird aktualisiert, sobald die Bearbeitung abgeschlossen ist. F
 
 Der Zahlungsstatus kann auf Ihrer [http://secondlife.com/account/ Startseite] unter Transaktionsübersicht überprüft werden.
 	</notification>
-	<notification name="FirstSit">
-		Sie sitzen.
-Verwenden Sie die Pfeiltasten (oder AWSD-Tasten), um sich umzusehen.
-Um aufzustehen, klicken Sie auf die Schaltfläche „Aufstehen“.
-	</notification>
-	<notification name="FirstMap">
-		Klicken Sie auf die Karte und bewegen Sie die Maus, um sich auf der Karte umzusehen.
-Zum Teleportieren doppelklicken.
-Nutzen Sie die Optionen rechts, um Objekte, Einwohner oder Events anzuzeigen und einen anderen Hintergrund auszuwählen.
-	</notification>
-	<notification name="FirstBuild">
-		Sie haben die Bauwerkzeuge geöffnet. Jedes Objekt, dass Sie sehen wurde mit diesen Werkzeugen gebaut.
-	</notification>
-	<notification name="FirstTeleport">
-		Sie können nur zu bestimmten Bereichen in dieser Region teleportieren. Der Pfeil deutet zu Ihrem Ziel hin. Klicken Sie auf den Pfeil, um diesen auszublenden.
-	</notification>
 	<notification name="FirstOverrideKeys">
 		Ihre Bewegungstasten werden jetzt von einem Objekt gesteuert.
 Probieren Sie die Pfeil- oder WASD-Tasten aus.
 Manche Objekte (wie Waffen) müssen per Mouselook gesteuert werden.
 Drücken Sie dazu „M“.
-	</notification>
-	<notification name="FirstAppearance">
-		Sie bearbeiten gerade Ihr Aussehen.
-Verwenden Sie die Pfeiltasten, um sich umzusehen.
-Klicken Sie auf „Alles speichern“, wenn Sie fertig sind.
-	</notification>
-	<notification name="FirstInventory">
-		Dies ist Ihr Inventar. Es enthält Objekte, die Ihnen gehören.
-
-* Um etwas anzuziehen, ziehen Sie es mit der Maus auf Ihren Avatar.
-* Um etwas inworld zu rezzen, ziehen Sie das Objekt auf den Boden.
-* Zum Lesen einer Notizkarte klicken Sie sie doppelt an.
 	</notification>
 	<notification name="FirstSandbox">
 		Dies ist ein Sandkasten. Hier können Einwohner lernen, wie Objekte gebaut werden. 
 
 Objekte, die Sie hier bauen, werden gelöscht, nachdem Sie den Sandkasten verlassen. Vergessen Sie nicht, Ihr Werk mit einem Rechtsklick und der Auswahl „Nehmen“ in Ihrem Inventar zu speichern.
 	</notification>
-	<notification name="FirstFlexible">
-		Dieses Objekt ist flexibel. Flexible Objekte müssen die Eigenschaft „Phantom“ haben und dürfen nicht „physisch“ sein.
-	</notification>
-	<notification name="FirstDebugMenus">
-		Sie haben das Menü „Erweitert“ geöffnet.
-
-Um dieses Menü zu aktivieren bzw. deaktivieren:
-  Windows Strg+Alt+D
-  Mac &#8997;&#8984;D
-	</notification>
-	<notification name="FirstSculptedPrim">
-		Sie bearbeiten ein geformtes Primitiv. Geformte Primitive benötigen eine spezielle Textur, die ihre Form definiert.
-	</notification>
 	<notification name="MaxListSelectMessage">
 		Sie können maximal [MAX_SELECT] Objekte
 von der Liste auswählen.
@@ -2583,12 +2535,23 @@ Klicken Sie auf  &apos;Akzeptieren &apos;, um dem Chat beizutreten, oder auf  &a
 	<notification name="UnsupportedCommandSLURL">
 		Die SLurl, auf die Sie geklickt haben, wird nicht unterstützt.
 	</notification>
+	<notification name="BlockedSLURL">
+		Ein untrusted Browser hat eine SLurl geschickt, diese wurde sicherheitshalber gesperrt.
+	</notification>
+	<notification name="ThrottledSLURL">
+		Innerhalb kurzer Zeit wurden von einem untrusted Browser mehrere SLurls erhalten.
+Diese werden für ein paar Sekunden sicherheitshalber gesperrt.
+	</notification>
 	<notification name="IMToast">
 		[MESSAGE]
 		<form name="form">
 			<button name="respondbutton" text="Antworten"/>
 		</form>
 	</notification>
+	<notification name="ConfirmCloseAll">
+		Möchten Sie wirklich alle IMs schließen?
+		<usetemplate name="okcancelignore" notext="Abbrechen" yestext="OK"/>
+	</notification>
 	<notification name="AttachmentSaved">
 		Der Anhang wurde gespeichert.
 	</notification>
@@ -2600,6 +2563,14 @@ Klicken Sie auf  &apos;Akzeptieren &apos;, um dem Chat beizutreten, oder auf  &a
 &apos;[ERROR]&apos;
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
+	<notification name="TextChatIsMutedByModerator">
+		Sie wurden vom Moderator stummgeschaltet.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="VoiceIsMutedByModerator">
+		Sie wurden vom Moderator stummgeschaltet.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
 	<notification name="ConfirmClearTeleportHistory">
 		Möchten Sie Ihren Teleport-Verlauf löschen?
 		<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
diff --git a/indra/newview/skins/default/xui/de/panel_active_object_row.xml b/indra/newview/skins/default/xui/de/panel_active_object_row.xml
new file mode 100644
index 00000000000..00de705a307
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/panel_active_object_row.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_activeim_row">
+	<string name="unknown_obj">
+		Unbekanntes Objekt
+	</string>
+	<text name="object_name">
+		Unbenanntes Objekt
+	</text>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/de/panel_adhoc_control_panel.xml
index 6109d8b0ea1..6ad18781f55 100644
--- a/indra/newview/skins/default/xui/de/panel_adhoc_control_panel.xml
+++ b/indra/newview/skins/default/xui/de/panel_adhoc_control_panel.xml
@@ -1,8 +1,14 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="panel_im_control_panel">
-	<panel name="panel_call_buttons">
-		<button label="Anrufen" name="call_btn"/>
-		<button label="Anruf beenden" name="end_call_btn"/>
-		<button label="Voice-Steuerung" name="voice_ctrls_btn"/>
-	</panel>
+	<layout_stack name="vertical_stack">
+		<layout_panel name="call_btn_panel">
+			<button label="Anrufen" name="call_btn"/>
+		</layout_panel>
+		<layout_panel name="end_call_btn_panel">
+			<button label="Anruf beenden" name="end_call_btn"/>
+		</layout_panel>
+		<layout_panel name="voice_ctrls_btn_panel">
+			<button label="Voice-Steuerung" name="voice_ctrls_btn"/>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml
index ae5c1ec4243..0715175dd93 100644
--- a/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml
@@ -23,4 +23,5 @@
 	</string>
 	<text name="avatar_name" value="Unbekannt"/>
 	<text name="last_interaction" value="0s"/>
+	<button name="profile_btn" tool_tip="Profil anzeigen"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml
index 462009746b4..eb4832770ea 100644
--- a/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml
@@ -4,7 +4,7 @@
 		Liste der ignorierten Einwohner
 	</text>
 	<scroll_list name="blocked" tool_tip="Liste der zur Zeit ignorierten Einwohner"/>
-	<button label="Einwohner ignorieren..." label_selected="Einwohner ignorieren..." name="Block resident..." tool_tip="Wählen Sie einen Einwohner, um ihn zu ignorieren"/>
-	<button label="Objekt nach Name ignorieren..." label_selected="Objekt nach Name ignorieren..." name="Block object by name..." tool_tip="Ein Objekt auswählen, um nach Namen zu ignorieren."/>
+	<button label="Einwohner ignorieren" label_selected="Einwohner ignorieren..." name="Block resident..." tool_tip="Wählen Sie einen Einwohner, um ihn zu ignorieren"/>
+	<button label="Objekt nach Name ignorieren" label_selected="Objekt nach Name ignorieren..." name="Block object by name..." tool_tip="Ein Objekt auswählen, um nach Namen zu ignorieren."/>
 	<button label="Freischalten" label_selected="Freischalten" name="Unblock" tool_tip="Einwohner oder Objekt von der Liste der ignorierten Einwohner oder Objekte entfernen"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_bottomtray.xml b/indra/newview/skins/default/xui/de/panel_bottomtray.xml
index 11dd99a1d48..7a627e32c89 100644
--- a/indra/newview/skins/default/xui/de/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/de/panel_bottomtray.xml
@@ -8,7 +8,7 @@
 	</string>
 	<layout_stack name="toolbar_stack">
 		<layout_panel name="gesture_panel">
-			<gesture_combo_box label="Gesten" name="Gesture" tool_tip="Gesten anzeigen/ausblenden"/>
+			<gesture_combo_list label="Gesten" name="Gesture" tool_tip="Gesten anzeigen/ausblenden"/>
 		</layout_panel>
 		<layout_panel name="movement_panel">
 			<button label="Bewegen" name="movement_btn" tool_tip="Bewegungssteuerung anzeigen/ausblenden"/>
@@ -19,5 +19,15 @@
 		<layout_panel name="snapshot_panel">
 			<button label="" name="snapshots" tool_tip="Foto machen"/>
 		</layout_panel>
+		<layout_panel name="im_well_panel">
+			<chiclet_im_well name="im_well">
+				<button name="Unread IM messages" tool_tip="IMs"/>
+			</chiclet_im_well>
+		</layout_panel>
+		<layout_panel name="notification_well_panel">
+			<chiclet_notification name="notification_well">
+				<button name="Unread" tool_tip="Benachrichtigungen"/>
+			</chiclet_notification>
+		</layout_panel>
 	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_edit_classified.xml b/indra/newview/skins/default/xui/de/panel_edit_classified.xml
index ca357abda3b..a9b5da163f1 100644
--- a/indra/newview/skins/default/xui/de/panel_edit_classified.xml
+++ b/indra/newview/skins/default/xui/de/panel_edit_classified.xml
@@ -24,10 +24,10 @@
 			<button label="Auf aktuelle Position einstellen" name="set_to_curr_location_btn"/>
 			<combo_box name="content_type">
 				<combo_item name="mature_ci">
-					Mature-Inhalt
+					Moderater Inhalt
 				</combo_item>
 				<combo_item name="pg_ci">
-					PG-Inhalt
+					Allgemeiner Inhalt
 				</combo_item>
 			</combo_box>
 			<spinner label="L$" name="price_for_listing" tool_tip="Preis für Anzeige." value="50"/>
diff --git a/indra/newview/skins/default/xui/de/panel_edit_profile.xml b/indra/newview/skins/default/xui/de/panel_edit_profile.xml
index 811ca118d67..f643115dbe4 100644
--- a/indra/newview/skins/default/xui/de/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/de/panel_edit_profile.xml
@@ -19,6 +19,9 @@
 	<string name="partner_edit_link_url">
 		http://www.secondlife.com/account/partners.php?lang=de
 	</string>
+	<string name="my_account_link_url">
+		http://de.secondlife.com/my
+	</string>
 	<string name="no_partner_text" value="Keiner"/>
 	<scroll_container name="profile_scroll">
 		<panel name="scroll_content_panel">
@@ -44,7 +47,7 @@
 				<text name="title_partner_text" value="Mein Partner:"/>
 				<text name="partner_edit_link" value="[[URL] bearbeiten]"/>
 				<panel name="partner_data_panel">
-					<text name="partner_text" value="[FIRST] [LAST]"/>
+					<name_box name="partner_text" value="[FIRST] [LAST]"/>
 				</panel>
 			</panel>
 		</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_friends.xml b/indra/newview/skins/default/xui/de/panel_friends.xml
index bb2adb36fe5..10c59547758 100644
--- a/indra/newview/skins/default/xui/de/panel_friends.xml
+++ b/indra/newview/skins/default/xui/de/panel_friends.xml
@@ -1,41 +1,31 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="friends">
 	<string name="Multiple">
-		Mehrere Freunde...
+		Mehrere Freunde
 	</string>
-	<scroll_list name="friend_list"
-	     tool_tip="Halten Sie die Tasten „Umschalt“ oder „Strg“ gedrückt, um durch Klicken mehrere Freunde auszuwählen.">
-		<column name="icon_online_status" tool_tip="Online-Status" />
-		<column label="Name" name="friend_name" tool_tip="Name" />
-		<column name="icon_visible_online" tool_tip="Freund kann sehen, wenn Sie online sind" />
-		<column name="icon_visible_map" tool_tip="Freund kann Sie auf der Karte finden" />
-		<column name="icon_edit_mine"
-		     tool_tip="Freunde können Objekte bearbeiten, löschen und an sich nehmen" />
-		<column name="icon_edit_theirs"
-		     tool_tip="Sie können die Objekte dieses Freunds bearbeiten" />
+	<scroll_list name="friend_list" tool_tip="Halten Sie die Tasten „Umschalt“ oder „Strg“ gedrückt, um durch Klicken mehrere Freunde auszuwählen.">
+		<column name="icon_online_status" tool_tip="Online-Status"/>
+		<column label="Name" name="friend_name" tool_tip="Name"/>
+		<column name="icon_visible_online" tool_tip="Freund kann sehen, wenn Sie online sind"/>
+		<column name="icon_visible_map" tool_tip="Freund kann Sie auf der Karte finden"/>
+		<column name="icon_edit_mine" tool_tip="Freunde können Objekte bearbeiten, löschen und an sich nehmen"/>
+		<column name="icon_edit_theirs" tool_tip="Sie können die Objekte dieses Freunds bearbeiten"/>
 	</scroll_list>
 	<panel name="rights_container">
 		<text name="friend_name_label">
 			Wählen Sie den/die Freund(e) aus, dessen/deren Rechte Sie ändern möchten...
 		</text>
-		<check_box label="Kann meinen Online-Status sehen" name="online_status_cb"
-		     tool_tip="Festlegen, ob dieser Freund meinen Online-Status auf seiner Freundesliste oder Visitenkarte einsehen kann" />
-		<check_box label="Kann mich auf der Weltkarte sehen" name="map_status_cb"
-		     tool_tip="Festlegen, ob dieser Freund auf seiner Karte meinen Standort sehen kann" />
-		<check_box label="Kann meine Objekte verändern" name="modify_status_cb"
-		     tool_tip="Festlegen, ob dieser Freund meine Objekte verändern kann" />
+		<check_box label="Kann meinen Online-Status sehen" name="online_status_cb" tool_tip="Festlegen, ob dieser Freund meinen Online-Status auf seiner Freundesliste oder Visitenkarte einsehen kann"/>
+		<check_box label="Kann mich auf der Weltkarte sehen" name="map_status_cb" tool_tip="Festlegen, ob dieser Freund auf seiner Karte meinen Standort sehen kann"/>
+		<check_box label="Kann meine Objekte verändern" name="modify_status_cb" tool_tip="Festlegen, ob dieser Freund meine Objekte verändern kann"/>
 		<text name="process_rights_label">
 			Rechte werden geändert...
 		</text>
 	</panel>
-	<button label="IM/Anruf" name="im_btn" tool_tip="Beginnt eine Instant Message-Sitzung" />
-	<button label="Profil" name="profile_btn"
-	     tool_tip="Bilder, Gruppen und andere Informationen anzeigen" />
-	<button label="Teleport" name="offer_teleport_btn"
-	     tool_tip="Bieten Sie diesem Freund einen Teleport an Ihre Position an" />
-	<button label="Zahlen" name="pay_btn" tool_tip="Diesem Freund Linden-Dollar (L$) geben" />
-	<button label="Entfernen" name="remove_btn"
-	     tool_tip="Diese Person von Ihrer Freundesliste entfernen" />
-	<button label="Hinzufügen" name="add_btn"
-	     tool_tip="Bieten Sie einem Einwohner die Freundschaft an" />
+	<button label="IM/Anruf" name="im_btn" tool_tip="Beginnt eine Instant Message-Sitzung"/>
+	<button label="Profil" name="profile_btn" tool_tip="Bilder, Gruppen und andere Informationen anzeigen"/>
+	<button label="Teleportieren" name="offer_teleport_btn" tool_tip="Bieten Sie diesem Freund einen Teleport an Ihre Position an"/>
+	<button label="Zahlen" name="pay_btn" tool_tip="Diesem Freund Linden-Dollar (L$) geben"/>
+	<button label="Entfernen" name="remove_btn" tool_tip="Diese Person von Ihrer Freundesliste entfernen"/>
+	<button label="Hinzufügen" name="add_btn" tool_tip="Bieten Sie einem Einwohner die Freundschaft an"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_group_control_panel.xml b/indra/newview/skins/default/xui/de/panel_group_control_panel.xml
index 6a7546457f6..9cb72fafff0 100644
--- a/indra/newview/skins/default/xui/de/panel_group_control_panel.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_control_panel.xml
@@ -1,9 +1,17 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="panel_im_control_panel">
-	<button label="Gruppeninfo" name="group_info_btn"/>
-	<panel name="panel_call_buttons">
-		<button label="Gruppe anrufen" name="call_btn"/>
-		<button label="Anruf beenden" name="end_call_btn"/>
-		<button label="Voice-Steuerung öffnen" name="voice_ctrls_btn"/>
-	</panel>
+	<layout_stack name="vertical_stack">
+		<layout_panel name="group_info_btn_panel">
+			<button label="Gruppenprofil" name="group_info_btn"/>
+		</layout_panel>
+		<layout_panel name="call_btn_panel">
+			<button label="Gruppe anrufen" name="call_btn"/>
+		</layout_panel>
+		<layout_panel name="end_call_btn_panel">
+			<button label="Anruf beenden" name="end_call_btn"/>
+		</layout_panel>
+		<layout_panel name="voice_ctrls_btn_panel">
+			<button label="Voice-Steuerung öffnen" name="voice_ctrls_btn"/>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_group_general.xml b/indra/newview/skins/default/xui/de/panel_group_general.xml
index e6abd4349da..8904193f183 100644
--- a/indra/newview/skins/default/xui/de/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_general.xml
@@ -22,16 +22,16 @@ Bewegen Sie die Maus über die Optionen, um weitere Informationen anzuzeigen.
 		Mein Titel
 	</text>
 	<combo_box name="active_title" tool_tip="Legt fest, was im Namensschild Ihres Avatars angezeigt wird, wenn diese Gruppe aktiviert ist."/>
-	<check_box label="Notizen erhalten" name="receive_notices" tool_tip="Festlegen, ob Sie von dieser Gruppe Mitteilungen erhalten können.  Deaktivieren Sie diese Option, wenn Sie von der Gruppe Spam erhalten."/>
+	<check_box label="Gruppenmitteilungen erhalten" name="receive_notices" tool_tip="Festlegen, ob Sie von dieser Gruppe Mitteilungen erhalten können.  Deaktivieren Sie diese Option, wenn Sie von der Gruppe Spam erhalten."/>
 	<check_box label="In meinem Profil anzeigen" name="list_groups_in_profile" tool_tip="Steuert, ob diese Gruppe in Ihrem Profil angezeigt wird"/>
 	<panel name="preferences_container">
 		<check_box label="Registrierung offen" name="open_enrollement" tool_tip="Festlegen, ob der Gruppenbeitritt ohne Einladung zulässig ist."/>
 		<check_box label="Beitrittsgebühr" name="check_enrollment_fee" tool_tip="Festlegen, ob Neumitglieder eine Beitrittsgebühr zahlen müssen"/>
 		<spinner label="L$" name="spin_enrollment_fee" tool_tip="Wenn Beitrittsgebühr aktiviert ist, müssen neue Mitglieder diesen Betrag zahlen."/>
 		<check_box initial_value="true" label="In Suche anzeigen" name="show_in_group_list" tool_tip="Diese Gruppe in Suchergebnissen anzeigen"/>
-		<combo_box name="group_mature_check" tool_tip="Festlegen, ob die Informationen Ihrer Gruppe „Moderat“ sind">
-			<combo_box.item label="PG-Inhalt" name="pg"/>
-			<combo_box.item label="Mature-Inhalt" name="mature"/>
+		<combo_box name="group_mature_check" tool_tip="Legt fest, ob Ihre Gruppeninformation moderate Inhalte enthält">
+			<combo_box.item label="Allgemeiner Inhalt" name="pg"/>
+			<combo_box.item label="Moderater Inhalt" name="mature"/>
 		</combo_box>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/de/panel_group_info_sidetray.xml
index 71a0adcdfbd..f70291c922c 100644
--- a/indra/newview/skins/default/xui/de/panel_group_info_sidetray.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_info_sidetray.xml
@@ -31,6 +31,8 @@
 	</accordion>
 	<panel name="button_row">
 		<button label="Erstellen" label_selected="Neue Gruppe" name="btn_create"/>
+		<button label="Gruppen-Chat" name="btn_chat"/>
+		<button label="Gruppe anrufen" name="btn_call"/>
 		<button label="Speichern" label_selected="Speichern" name="btn_apply"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_group_invite.xml b/indra/newview/skins/default/xui/de/panel_group_invite.xml
index 0712722cb30..8e1fb5e4b2e 100644
--- a/indra/newview/skins/default/xui/de/panel_group_invite.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_invite.xml
@@ -7,15 +7,13 @@
 		(wird geladen...)
 	</panel.string>
 	<panel.string name="already_in_group">
-		Einige Avatare sind bereits Mitglied und wurden nicht eingeladen.
+		Einige der ausgewählten Einwohner sind bereits Gruppenmitglieder und haben aus diesem Grund keine Einladung erhalten.
 	</panel.string>
 	<text name="help_text">
-		Sie können mehrere Einwohner in Ihre 
-Gruppe einladen. Klicken Sie hierzu
-auf „Einwohnerliste öffnen“.
+		Sie können mehrere Einwohner auswählen, um diese in Ihre Gruppe einzuladen. Klicken Sie hierzu auf „Einwohnerliste öffnen“.
 	</text>
 	<button label="Einwohnerliste öffnen" name="add_button" tool_tip=""/>
-	<name_list name="invitee_list" tool_tip="Halten Sie zur Mehrfachauswahl die Strg-Taste gedrückt und klicken Sie auf die Einwohnernamen."/>
+	<name_list name="invitee_list" tool_tip="Halten Sie zur Mehrfachauswahl die Strg-Taste gedrückt und klicken Sie auf die Namen."/>
 	<button label="Auswahl aus Liste löschen" name="remove_button" tool_tip="Die oben ausgewählten Einwohner von der Einladungsliste entfernen."/>
 	<text name="role_text">
 		Wählen Sie eine Rolle aus:
diff --git a/indra/newview/skins/default/xui/de/panel_group_list_item.xml b/indra/newview/skins/default/xui/de/panel_group_list_item.xml
index 1b37c35ea52..d097a2b18c3 100644
--- a/indra/newview/skins/default/xui/de/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_list_item.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="Unbekannt"/>
+	<button name="profile_btn" tool_tip="Profil anzeigen"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_group_notices.xml b/indra/newview/skins/default/xui/de/panel_group_notices.xml
index 6d0fd9eefbd..d2ba40ae2c6 100644
--- a/indra/newview/skins/default/xui/de/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_notices.xml
@@ -1,11 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Mitteilungen" name="notices_tab">
 	<panel.string name="help_text">
-		Mit Mitteilungen können Sie eine Nachricht und
-Objekte im Anhang versenden. Mitteilungen werden
-nur an Mitglieder mit einer entsprechenden Rolle
-gesendet. Mitteilungen können unter
- &apos;Allgemein &apos; ausgeschaltet werden.
+		Mit Mitteilungen können Sie eine Nachricht und auch einen Anhang versenden.
+Mitteilungen werden nur an Gruppenmitglieder verschickt, deren Rolle es zulässt, dass sie Mitteilungen empfangen.
+Sie können auf der Registerkarte „Allgemein“ wählen, ob Sie Mitteilungen empfangen möchten.
 	</panel.string>
 	<panel.string name="no_notices_text">
 		Keine älteren Mitteilungen.
@@ -24,7 +22,7 @@ Maximal 200 pro Gruppe täglich
 		Nicht gefunden.
 	</text>
 	<button label="Neue Mitteilung erstellen" label_selected="Neue Mitteilung" name="create_new_notice" tool_tip="Neue Mitteilung erstellen"/>
-	<button label="Aktualisieren" label_selected="Liste aktualisieren" name="refresh_notices"/>
+	<button label="Aktualisieren" label_selected="Liste aktualisieren" name="refresh_notices" tool_tip="Mitteilungsliste aktualisieren"/>
 	<panel label="Neue Mitteilung" name="panel_create_new_notice">
 		<text name="lbl">
 			Mitteilung schreiben
@@ -39,11 +37,11 @@ Maximal 200 pro Gruppe täglich
 			Anhängen:
 		</text>
 		<text name="string">
-			Hierhin ziehen, um etwas anzuhängen -- &gt;
+			Das Objekt hierin ziehen und ablegen, um es anzuhängen:
 		</text>
 		<button label="Entfernen" label_selected="Anhang entfernen" name="remove_attachment"/>
 		<button label="Senden" label_selected="Senden" name="send_notice"/>
-		<group_drop_target name="drop_target" tool_tip="Drag an inventory item onto the message box to send it with the notice. You must have permission to copy and transfer the object to send it with the notice."/>
+		<group_drop_target name="drop_target" tool_tip="Ziehen Sie ein Objekt aus Ihrem Inventar auf dieses Feld, um es mit dieser Mitteilung zu versenden. Um das Objekt anhängen zu können, müssen Sie die Erlaubnis zum Kopieren und Übertragen besitzen."/>
 	</panel>
 	<panel label="Ältere Notiz anzeigen" name="panel_view_past_notice">
 		<text name="lbl">
diff --git a/indra/newview/skins/default/xui/de/panel_im_control_panel.xml b/indra/newview/skins/default/xui/de/panel_im_control_panel.xml
index d91c7c0dcf0..8132f769cb4 100644
--- a/indra/newview/skins/default/xui/de/panel_im_control_panel.xml
+++ b/indra/newview/skins/default/xui/de/panel_im_control_panel.xml
@@ -1,13 +1,27 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="panel_im_control_panel">
 	<text name="avatar_name" value="Unbekannt"/>
-	<button label="Profil" name="view_profile_btn"/>
-	<button label="Freund hinzufügen" name="add_friend_btn"/>
-	<button label="Teleportieren" name="teleport_btn"/>
-	<button label="Teilen" name="share_btn"/>
-	<panel name="panel_call_buttons">
-		<button label="Anrufen" name="call_btn"/>
-		<button label="Anruf beenden" name="end_call_btn"/>
-		<button label="Voice-Steuerung" name="voice_ctrls_btn"/>
-	</panel>
+	<layout_stack name="button_stack">
+		<layout_panel name="view_profile_btn_panel">
+			<button label="Profil" name="view_profile_btn"/>
+		</layout_panel>
+		<layout_panel name="add_friend_btn_panel">
+			<button label="Freund hinzufügen" name="add_friend_btn"/>
+		</layout_panel>
+		<layout_panel name="teleport_btn_panel">
+			<button label="Teleportieren" name="teleport_btn"/>
+		</layout_panel>
+		<layout_panel name="share_btn_panel">
+			<button label="Teilen" name="share_btn"/>
+		</layout_panel>
+		<layout_panel name="call_btn_panel">
+			<button label="Anrufen" name="call_btn"/>
+		</layout_panel>
+		<layout_panel name="end_call_btn_panel">
+			<button label="Anruf beenden" name="end_call_btn"/>
+		</layout_panel>
+		<layout_panel name="voice_ctrls_btn_panel">
+			<button label="Voice-Steuerung" name="voice_ctrls_btn"/>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_landmark_info.xml b/indra/newview/skins/default/xui/de/panel_landmark_info.xml
index 1a68c9b3513..9cef7b6d351 100644
--- a/indra/newview/skins/default/xui/de/panel_landmark_info.xml
+++ b/indra/newview/skins/default/xui/de/panel_landmark_info.xml
@@ -21,6 +21,7 @@
 	<string name="icon_PG" value="parcel_drk_PG"/>
 	<string name="icon_M" value="parcel_drk_M"/>
 	<string name="icon_R" value="parcel_drk_R"/>
+	<button name="back_btn" tool_tip="Hinten"/>
 	<text name="title" value="Ortsprofil"/>
 	<scroll_container name="place_scroll">
 		<panel name="scrolling_panel">
diff --git a/indra/newview/skins/default/xui/de/panel_login.xml b/indra/newview/skins/default/xui/de/panel_login.xml
index 62973be4cbb..bd82fc68724 100644
--- a/indra/newview/skins/default/xui/de/panel_login.xml
+++ b/indra/newview/skins/default/xui/de/panel_login.xml
@@ -6,36 +6,40 @@
 	<panel.string name="forgot_password_url">
 		http://secondlife.com/account/request.php?lang=de
 	</panel.string>
-	<panel name="login_widgets">
-		<text name="first_name_text">
-			Vorname:
-		</text>
-		<line_editor name="first_name_edit" tool_tip="[SECOND_LIFE] Vorname"/>
-		<text name="last_name_text">
-			Nachname:
-		</text>
-		<line_editor name="last_name_edit" tool_tip="[SECOND_LIFE] Nachname"/>
-		<text name="password_text">
-			Kennwort:
-		</text>
-		<button label="Login" label_selected="Login" name="connect_btn"/>
-		<text name="start_location_text">
-			Startposition:
-		</text>
-		<combo_box name="start_location_combo">
-			<combo_box.item label="Mein letzter Standort" name="MyLastLocation"/>
-			<combo_box.item label="Mein Zuhause" name="MyHome"/>
-			<combo_box.item label="&lt;Region eingeben&gt;" name="Typeregionname"/>
-		</combo_box>
-		<check_box label="Kennwort merken" name="remember_check"/>
-		<text name="create_new_account_text">
-			Neues Konto erstellen
-		</text>
-		<text name="forgot_password_text">
-			Namen oder Kennwort vergessen?
-		</text>
-		<text name="channel_text">
-			[VERSION]
-		</text>
-	</panel>
+	<layout_stack name="login_widgets">
+		<layout_panel name="login">
+			<text name="first_name_text">
+				Vorname:
+			</text>
+			<line_editor label="Vorname" name="first_name_edit" tool_tip="[SECOND_LIFE] Vorname"/>
+			<text name="last_name_text">
+				Nachname:
+			</text>
+			<line_editor label="Nachname" name="last_name_edit" tool_tip="[SECOND_LIFE] Nachname"/>
+			<text name="password_text">
+				Kennwort:
+			</text>
+			<check_box label="Kennwort merken" name="remember_check"/>
+			<text name="start_location_text">
+				Hier anfangen:
+			</text>
+			<combo_box name="start_location_combo">
+				<combo_box.item label="Mein letzter Standort" name="MyLastLocation"/>
+				<combo_box.item label="Mein Zuhause" name="MyHome"/>
+				<combo_box.item label="&lt;Region eingeben&gt;" name="Typeregionname"/>
+			</combo_box>
+			<button label="Anmelden" name="connect_btn"/>
+		</layout_panel>
+		<layout_panel name="links">
+			<text name="create_new_account_text">
+				Registrieren
+			</text>
+			<text name="forgot_password_text">
+				Namen oder Kennwort vergessen?
+			</text>
+			<text name="login_help">
+				Sie brauchen Hilfe?
+			</text>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_main_inventory.xml b/indra/newview/skins/default/xui/de/panel_main_inventory.xml
index 3d1b89ff407..026e766ab58 100644
--- a/indra/newview/skins/default/xui/de/panel_main_inventory.xml
+++ b/indra/newview/skins/default/xui/de/panel_main_inventory.xml
@@ -3,10 +3,10 @@
 	<panel.string name="Title">
 		Sonstiges
 	</panel.string>
-	<filter_editor label="Filter" name="inventory search editor"/>
+	<filter_editor label="Inventar filtern" name="inventory search editor"/>
 	<tab_container name="inventory filter tabs">
-		<inventory_panel label="Alle Objekte" name="All Items"/>
-		<inventory_panel label="Letzte Objekte" name="Recent Items"/>
+		<inventory_panel label="MEIN INVENTAR" name="All Items"/>
+		<inventory_panel label="AKTUELL" name="Recent Items"/>
 	</tab_container>
 	<panel name="bottom_panel">
 		<button name="options_gear_btn" tool_tip="Zusätzliche Optionen anzeigen"/>
@@ -32,7 +32,7 @@
 		<menu label="Bauen" name="Create">
 			<menu_item_call label="Neuer Ordner" name="New Folder"/>
 			<menu_item_call label="Neues Skript" name="New Script"/>
-			<menu_item_call label="Neue Notiz" name="New Note"/>
+			<menu_item_call label="Neue Notizkarte" name="New Note"/>
 			<menu_item_call label="Neue Geste" name="New Gesture"/>
 			<menu label="Neue Kleider" name="New Clothes">
 				<menu_item_call label="Neues Hemd" name="New Shirt"/>
diff --git a/indra/newview/skins/default/xui/de/panel_media_settings_general.xml b/indra/newview/skins/default/xui/de/panel_media_settings_general.xml
index b657333439c..75c90575711 100644
--- a/indra/newview/skins/default/xui/de/panel_media_settings_general.xml
+++ b/indra/newview/skins/default/xui/de/panel_media_settings_general.xml
@@ -1,19 +1,19 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Allgemein" name="Media Settings General">
 	<text name="home_label">
-		Home-URL:
+		Homepage:
 	</text>
 	<text name="home_fails_whitelist_label">
-		(Diese URL befindet sich nicht auf der festgelegten Whitelist)
+		(Diese Seite wird von der angegebenen Whiteliste nicht zugelassen)
 	</text>
-	<line_editor name="home_url" tool_tip="Die Home-URL für diese Medienquelle"/>
+	<line_editor name="home_url" tool_tip="Die Start-URL für diese Medienquelle"/>
 	<text name="preview_label">
 		Vorschau
 	</text>
 	<text name="current_url_label">
-		Derzeitige URL:
+		Aktuelle Seite:
 	</text>
-	<text name="current_url" tool_tip="Die derzeitige URL für diese Medienquelle" value=""/>
+	<text name="current_url" tool_tip="Die aktuelle Seite für diese Medienquelle" value=""/>
 	<button label="Zurücksetzen" name="current_url_reset_btn"/>
 	<check_box initial_value="false" label="Automatisch wiederholen" name="auto_loop"/>
 	<check_box initial_value="false" label="Interaktion beim ersten Anklicken" name="first_click_interact"/>
diff --git a/indra/newview/skins/default/xui/de/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/de/panel_media_settings_permissions.xml
index 603fb67fd21..7ee0074a3bb 100644
--- a/indra/newview/skins/default/xui/de/panel_media_settings_permissions.xml
+++ b/indra/newview/skins/default/xui/de/panel_media_settings_permissions.xml
@@ -1,9 +1,20 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Steuerung" name="Media settings for controls">
-	<check_box initial_value="false" label="Navigation &amp; Interaktivität deaktivieren" name="perms_owner_interact"/>
-	<check_box initial_value="false" label="Kontrollleiste verstecken" name="perms_owner_control"/>
-	<check_box initial_value="false" label="Navigation &amp; Interaktivität deaktivieren" name="perms_group_interact"/>
-	<check_box initial_value="false" label="Kontrollleiste verstecken" name="perms_group_control"/>
-	<check_box initial_value="false" label="Navigation &amp; Interaktivität deaktivieren" name="perms_anyone_interact"/>
-	<check_box initial_value="false" label="Kontrollleiste verstecken" name="perms_anyone_control"/>
+<panel label="Anpassen" name="Media settings for controls">
+	<text name="controls_label">
+		Steuerung:
+	</text>
+	<combo_box name="controls">
+		<combo_item name="Standard">
+			Standard
+		</combo_item>
+		<combo_item name="Mini">
+			Mini
+		</combo_item>
+	</combo_box>
+	<check_box initial_value="false" label="Naviation &amp; Interaktion zulassen" name="perms_owner_interact"/>
+	<check_box initial_value="false" label="Steuerungsleiste anzeigen" name="perms_owner_control"/>
+	<check_box initial_value="false" label="Naviation &amp; Interaktion zulassen" name="perms_group_interact"/>
+	<check_box initial_value="false" label="Steuerungsleiste anzeigen" name="perms_group_control"/>
+	<check_box initial_value="false" label="Naviation &amp; Interaktion zulassen" name="perms_anyone_interact"/>
+	<check_box initial_value="false" label="Steuerungsleiste anzeigen" name="perms_anyone_control"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_media_settings_security.xml b/indra/newview/skins/default/xui/de/panel_media_settings_security.xml
index d94d8b93753..8ff013f66bc 100644
--- a/indra/newview/skins/default/xui/de/panel_media_settings_security.xml
+++ b/indra/newview/skins/default/xui/de/panel_media_settings_security.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Sicherheit" name="Media Settings Security">
-	<check_box initial_value="false" label="Zugang nur für bestimmte URLs ermöglichen (mittels Präfix)" name="whitelist_enable"/>
+	<check_box initial_value="false" label="Nur Zugriff auf festgelegte URL-Muster zulassen" name="whitelist_enable"/>
 	<text name="home_url_fails_some_items_in_whitelist">
-		Einträge, die auf ungültige Home-URLs hinweisen, sind markiert:
+		Einträge, die für die Startseite nicht akzeptiert werden, sind markiert:
 	</text>
 	<button label="Hinzufügen" name="whitelist_add"/>
 	<button label="Löschen" name="whitelist_del"/>
 	<text name="home_url_fails_whitelist">
-		Warnung: Die Home-URL, die in der Registerkarte &quot;Allgemein&quot; angegeben wurde, entspricht nicht den Einträgen auf der Whitelist. Sie wurde deaktiviert, bis ein gültiger Eintrag angegeben wird.
+		Achtung: Die auf der Registerkarte Allgemein festgelegte Startseite wird von der Whitelist nicht akzeptiert. Sie wurde deaktiviert bis ein gültiger Eintrag hinzugefügt wurde.
 	</text>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_my_profile.xml b/indra/newview/skins/default/xui/de/panel_my_profile.xml
index 8357e4318d9..618ed888468 100644
--- a/indra/newview/skins/default/xui/de/panel_my_profile.xml
+++ b/indra/newview/skins/default/xui/de/panel_my_profile.xml
@@ -4,52 +4,44 @@
 		[ACCTTYPE]
 [PAYMENTINFO] [AGEVERIFICATION]
 	</string>
+	<string name="payment_update_link_url">
+		http://www.secondlife.com/account/billing.php?lang=de-DE
+	</string>
+	<string name="partner_edit_link_url">
+		http://www.secondlife.com/account/partners.php?lang=de
+	</string>
+	<string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=de-DE"/>
 	<string name="no_partner_text" value="Keiner"/>
+	<string name="no_group_text" value="Keiner"/>
 	<string name="RegisterDateFormat">
 		[REG_DATE] ([AGE])
 	</string>
-	<scroll_container name="profile_scroll">
-		<panel name="scroll_content_panel">
-			<panel name="second_life_image_panel">
-				<icon label="" name="2nd_life_edit_icon" tool_tip="Klicken Sie unten auf die Schaltfläche Profil bearbeiten, um das Bild zu ändern."/>
-				<text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
-				<expandable_text name="sl_description_edit">
-					Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
-				</expandable_text>
-			</panel>
-			<panel name="first_life_image_panel">
-				<icon label="" name="real_world_edit_icon" tool_tip="Klicken Sie unten auf die Schaltfläche Profil bearbeiten, um das Bild zu ändern."/>
-				<text name="title_rw_descr_text" value="Echtes Leben:"/>
-				<expandable_text name="fl_description_edit">
-					Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
-				</expandable_text>
-			</panel>
-			<text name="me_homepage_text">
-				Webseite:
-			</text>
-			<text name="title_member_text" value="Mitglied seit:"/>
-			<text name="register_date" value="05/31/1976"/>
-			<text name="title_acc_status_text" value="Kontostatus:"/>
-			<text name="acc_status_text" value="Einwohner. Keine Zahlungsinfo archiviert."/>
-			<text name="title_partner_text" value="Partner:"/>
-			<panel name="partner_data_panel">
-				<text name="partner_text" value="[FIRST] [LAST]"/>
-			</panel>
-			<text name="title_groups_text" value="Gruppen:"/>
-			<expandable_text name="sl_groups">
-				Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
-			</expandable_text>
-		</panel>
-	</scroll_container>
-	<panel name="profile_buttons_panel">
-		<button label="Freund hinzufügen" name="add_friend"/>
-		<button label="IM" name="im"/>
-		<button label="Anrufen" name="call"/>
-		<button label="Karte" name="show_on_map_btn"/>
-		<button label="Teleportieren" name="teleport"/>
-	</panel>
-	<panel name="profile_me_buttons_panel">
-		<button label="Profil bearbeiten" name="edit_profile_btn"/>
-		<button label="Aussehen bearbeiten" name="edit_appearance_btn"/>
-	</panel>
+	<layout_stack name="layout">
+		<layout_panel name="profile_stack">
+			<scroll_container name="profile_scroll">
+				<panel name="scroll_content_panel">
+					<panel name="second_life_image_panel">
+						<icon label="" name="2nd_life_edit_icon" tool_tip="Klicken Sie unten auf die Schaltfläche Profil bearbeiten, um das Bild zu ändern."/>
+						<text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
+					</panel>
+					<panel name="first_life_image_panel">
+						<icon label="" name="real_world_edit_icon" tool_tip="Klicken Sie unten auf die Schaltfläche Profil bearbeiten, um das Bild zu ändern."/>
+						<text name="title_rw_descr_text" value="Echtes Leben:"/>
+					</panel>
+					<text name="title_member_text" value="Einwohner seit:"/>
+					<text name="title_acc_status_text" value="Kontostatus:"/>
+					<text name="acc_status_text">
+						Einwohner. Keine Zahlungsinfo archiviert.
+              Linden.
+					</text>
+					<text name="title_partner_text" value="Partner:"/>
+					<text name="title_groups_text" value="Gruppen:"/>
+				</panel>
+			</scroll_container>
+		</layout_panel>
+		<layout_panel name="profile_me_buttons_panel">
+			<button label="Profil bearbeiten" name="edit_profile_btn" tool_tip="Ihre persönlichen Informationen bearbeiten"/>
+			<button label="Aussehen bearbeiten" name="edit_appearance_btn" tool_tip="Ihr Aussehen bearbeiten: Körpermaße, Bekleidung, usw."/>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_navigation_bar.xml b/indra/newview/skins/default/xui/de/panel_navigation_bar.xml
index 5bf78be3d33..ab59c207bf9 100644
--- a/indra/newview/skins/default/xui/de/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/de/panel_navigation_bar.xml
@@ -10,6 +10,6 @@
 		</search_combo_box>
 	</panel>
 	<favorites_bar name="favorite">
-		<chevron_button name="&gt;&gt;" tool_tip="Zeige weitere meiner Favoriten an"/>
+		<chevron_button name="&gt;&gt;" tool_tip="Mehr meiner Favoriten anzeigen"/>
 	</favorites_bar>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_notes.xml b/indra/newview/skins/default/xui/de/panel_notes.xml
index 994c02935c9..e6a63fc0c82 100644
--- a/indra/newview/skins/default/xui/de/panel_notes.xml
+++ b/indra/newview/skins/default/xui/de/panel_notes.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Notizen &amp; Privatsphäre" name="panel_notes">
 	<layout_stack name="layout">
-		<panel name="notes_stack">
+		<layout_panel name="notes_stack">
 			<scroll_container name="profile_scroll">
 				<panel name="profile_scroll_panel">
 					<text name="status_message" value="Meine Notizen:"/>
@@ -11,13 +11,13 @@
 					<check_box label="meine Objekte bearbeiten, löschen oder nehmen." name="objects_check"/>
 				</panel>
 			</scroll_container>
-		</panel>
-		<panel name="notes_buttons_panel">
-			<button label="Hinzufügen" name="add_friend"/>
-			<button label="IM" name="im"/>
-			<button label="Anrufen" name="call"/>
-			<button label="Karte" name="show_on_map_btn"/>
-			<button label="Teleportieren" name="teleport"/>
-		</panel>
+		</layout_panel>
+		<layout_panel name="notes_buttons_panel">
+			<button label="Freund hinzufügen" name="add_friend" tool_tip="Bieten Sie dem Einwohner die Freundschaft an"/>
+			<button label="IM" name="im" tool_tip="Instant Messenger öffnen"/>
+			<button label="Anrufen" name="call" tool_tip="Diesen Einwohner anrufen"/>
+			<button label="Karte" name="show_on_map_btn" tool_tip="Einwohner auf Karte anzeigen"/>
+			<button label="Teleportieren" name="teleport" tool_tip="Teleport anbieten"/>
+		</layout_panel>
 	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml
index da871cad472..8d2dd84512c 100644
--- a/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml
+++ b/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml
@@ -1,13 +1,14 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="Outfits">
-	<accordion name="outfits_accordion">
-		<accordion_tab name="tab_outfits" title="Outfit-Leiste"/>
-		<accordion_tab name="tab_cof" title="Aktuelles Outfit"/>
-	</accordion>
-	<button label="&gt;" name="selector" tool_tip="Outfit-Eigenschaften anzeigen"/>
+<panel label="Sonstiges" name="Outfits">
+	<tab_container name="appearance_tabs">
+		<inventory_panel label="MEINE OUTFITS" name="outfitslist_tab"/>
+		<inventory_panel label="AKTUELLES OUTFIT" name="cof_accordionpanel"/>
+	</tab_container>
 	<panel name="bottom_panel">
 		<button name="options_gear_btn" tool_tip="Zusätzliche Optionen anzeigen"/>
-		<button name="add_btn" tool_tip="Neues Objekt hinzufügen"/>
 		<dnd_button name="trash_btn" tool_tip="Auswahl löschen"/>
+		<button label="Outfit speichern" name="make_outfit_btn" tool_tip="Aussehen als Outfit speichern"/>
+		<button label="Anziehen" name="wear_btn" tool_tip="Ausgewähltes Outfit tragen"/>
+		<button label="M" name="look_edit_btn"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/de/panel_outfits_inventory_gear_default.xml
index ec4d109acdd..ad0e039070b 100644
--- a/indra/newview/skins/default/xui/de/panel_outfits_inventory_gear_default.xml
+++ b/indra/newview/skins/default/xui/de/panel_outfits_inventory_gear_default.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="menu_gear_default">
-	<menu_item_call label="Neues Outfit" name="new"/>
-	<menu_item_call label="Outfit anziehen" name="wear"/>
+	<menu_item_call label="Aktuelles Outfit ersetzen" name="wear"/>
+	<menu_item_call label="Vom aktuellen Outfit entfernen" name="remove"/>
+	<menu_item_call label="Umbenennen" name="rename"/>
+	<menu_item_call label="Link entfernen" name="remove_link"/>
 	<menu_item_call label="Outfit löschen" name="delete"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/de/panel_people.xml b/indra/newview/skins/default/xui/de/panel_people.xml
index 3e99272833b..91a17e127af 100644
--- a/indra/newview/skins/default/xui/de/panel_people.xml
+++ b/indra/newview/skins/default/xui/de/panel_people.xml
@@ -49,5 +49,6 @@
 		<button label="Teleportieren" name="teleport_btn" tool_tip="Teleport anbieten"/>
 		<button label="Gruppenprofil" name="group_info_btn" tool_tip="Gruppeninformationen anzeigen"/>
 		<button label="Gruppen-Chat" name="chat_btn" tool_tip="Chat öffnen"/>
+		<button label="Gruppe anrufen" name="group_call_btn" tool_tip="Diese Gruppe anrufen"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_picks.xml b/indra/newview/skins/default/xui/de/panel_picks.xml
index a1588e59301..a07bc170f6c 100644
--- a/indra/newview/skins/default/xui/de/panel_picks.xml
+++ b/indra/newview/skins/default/xui/de/panel_picks.xml
@@ -2,20 +2,16 @@
 <panel label="Auswahl" name="panel_picks">
 	<string name="no_picks" value="Keine Auswahl"/>
 	<string name="no_classifieds" value="Keine Anzeigen"/>
-	<text name="empty_picks_panel_text">
-		Es wurde keine Auswahl getroffen/keine Anzeigen ausgewählt
-	</text>
 	<accordion name="accordion">
 		<accordion_tab name="tab_picks" title="Auswahl"/>
 		<accordion_tab name="tab_classifieds" title="Anzeigen"/>
 	</accordion>
 	<panel label="bottom_panel" name="edit_panel">
-		<button name="new_btn" tool_tip="Aktuellen Standort zur Auswahl hinzufügen"/>
+		<button name="new_btn" tool_tip="An aktuellem Standort neue Auswahl oder Anzeige erstellen"/>
 	</panel>
 	<panel name="buttons_cucks">
-		<button label="Info" name="info_btn"/>
-		<button label="Teleportieren" name="teleport_btn"/>
-		<button label="Karte" name="show_on_map_btn"/>
-		<button label="â–¼" name="overflow_btn"/>
+		<button label="Info" name="info_btn" tool_tip="Auswahl-Information anzeigen"/>
+		<button label="Teleportieren" name="teleport_btn" tool_tip="Zu entsprechendem Standort teleportieren"/>
+		<button label="Karte" name="show_on_map_btn" tool_tip="Den entsprechenden Standort auf der Karte anzeigen"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_place_profile.xml b/indra/newview/skins/default/xui/de/panel_place_profile.xml
index e012acac8d3..b933a0a4990 100644
--- a/indra/newview/skins/default/xui/de/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/de/panel_place_profile.xml
@@ -56,6 +56,7 @@
 	<string name="icon_ScriptsNo" value="parcel_drk_ScriptsNo"/>
 	<string name="icon_Damage" value="parcel_drk_Damage"/>
 	<string name="icon_DamageNo" value="parcel_drk_DamageNo"/>
+	<button name="back_btn" tool_tip="Hinten"/>
 	<text name="title" value="Ortsprofil"/>
 	<scroll_container name="place_scroll">
 		<panel name="scrolling_panel">
diff --git a/indra/newview/skins/default/xui/de/panel_places.xml b/indra/newview/skins/default/xui/de/panel_places.xml
index a2f98bf1997..d57ba9d0ab1 100644
--- a/indra/newview/skins/default/xui/de/panel_places.xml
+++ b/indra/newview/skins/default/xui/de/panel_places.xml
@@ -2,11 +2,12 @@
 <panel label="Orte" name="places panel">
 	<string name="landmarks_tab_title" value="MEINE LANDMARKEN"/>
 	<string name="teleport_history_tab_title" value="TELEPORT-VERLAUF"/>
-	<filter_editor label="Filter" name="Filter"/>
+	<filter_editor label="Orte filtern" name="Filter"/>
 	<panel name="button_panel">
-		<button label="Teleportieren" name="teleport_btn"/>
+		<button label="Teleportieren" name="teleport_btn" tool_tip="Zu ausgewähltem Standort teleportieren"/>
 		<button label="Karte" name="map_btn"/>
-		<button label="Bearbeiten" name="edit_btn"/>
+		<button label="Bearbeiten" name="edit_btn" tool_tip="Landmarken-Info bearbeiten"/>
+		<button name="overflow_btn" tool_tip="Zusätzliche Optionen anzeigen"/>
 		<button label="Schließen" name="close_btn"/>
 		<button label="Abbrechen" name="cancel_btn"/>
 		<button label="Speichern" name="save_btn"/>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/de/panel_preferences_alerts.xml
index 3e00c392896..def5fb3b1b2 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_alerts.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_alerts.xml
@@ -9,6 +9,6 @@
 		Diese Warnhinweise immer anzeigen:
 	</text>
 	<text name="dont_show_label">
-		Diese Warnhinweise immer anzeigen:
+		Diese Benachrichtungen nie anzeigen:
 	</text>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
index d51675e150a..cc0a09c06c7 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Text-Chat" name="chat">
 	<radio_group name="chat_font_size">
-		<radio_item label="Klein" name="radio"/>
-		<radio_item label="Mittel" name="radio2"/>
-		<radio_item label="Groß" name="radio3"/>
+		<radio_item label="Klein" name="radio" value="0"/>
+		<radio_item label="Mittel" name="radio2" value="1"/>
+		<radio_item label="Groß" name="radio3" value="2"/>
 	</radio_group>
 	<color_swatch label="Sie" name="user"/>
 	<text name="text_box1">
@@ -40,4 +40,8 @@
 	<check_box initial_value="true" label="Beim Chatten Tippanimation abspielen" name="play_typing_animation"/>
 	<check_box label="IMs per Email zuschicken, wenn ich offline bin" name="send_im_to_email"/>
 	<check_box label="Text-Chatverlauf aktivieren" name="plain_text_chat_history"/>
+	<radio_group name="chat_window" tool_tip="Zeigen sie Ihre Sofortnachrichten (Instant Messages) in einem anderen Fenster oder in einem einzigen Fenster mit viele Registerkarten an (Neustart erforderlich).">
+		<radio_item label="Mehrere Fenster" name="radio" value="0"/>
+		<radio_item label="Ein Fenster" name="radio2" value="1"/>
+	</radio_group>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_general.xml b/indra/newview/skins/default/xui/de/panel_preferences_general.xml
index 5bbd579ff68..490b0b296b4 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_general.xml
@@ -15,7 +15,6 @@
 		<combo_box.item label="Polski (Polnisch) - Beta" name="Polish"/>
 		<combo_box.item label="Português (Portugiesisch) - Beta" name="Portugese"/>
 		<combo_box.item label="日本語 (Japanisch) - Beta" name="(Japanese)"/>
-		<combo_box.item label="Testsprache" name="TestLanguage"/>
 	</combo_box>
 	<text name="language_textbox2">
 		(Erfordert Neustart)
@@ -25,8 +24,8 @@
 	</text>
 	<text name="maturity_desired_textbox"/>
 	<combo_box name="maturity_desired_combobox">
-		<combo_box.item label="PG, Mature und Adult" name="Desired_Adult"/>
-		<combo_box.item label="PG und Mature" name="Desired_Mature"/>
+		<combo_box.item label="Allgemein, Moderat, Adult" name="Desired_Adult"/>
+		<combo_box.item label="Allgemein und Moderat" name="Desired_Mature"/>
 		<combo_box.item label="Allgemein" name="Desired_PG"/>
 	</combo_box>
 	<text name="start_location_textbox">
@@ -41,9 +40,9 @@
 		Avatarnamen:
 	</text>
 	<radio_group name="Name_Tag_Preference">
-		<radio_item label="Aus" name="radio"/>
-		<radio_item label="An" name="radio2"/>
-		<radio_item label="Vorübergehend anzeigen" name="radio3"/>
+		<radio_item label="Aus" name="radio" value="0"/>
+		<radio_item label="An" name="radio2" value="1"/>
+		<radio_item label="Vorübergehend anzeigen" name="radio3" value="2"/>
 	</radio_group>
 	<check_box label="Meinen Namen anzeigen" name="show_my_name_checkbox1"/>
 	<check_box initial_value="true" label="Kleine Avatarnamen" name="small_avatar_names_checkbox"/>
@@ -51,14 +50,17 @@
 	<text name="effects_color_textbox">
 		Meine Effekte:
 	</text>
-	<color_swatch label="" name="effect_color_swatch" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/>
 	<text name="title_afk_text">
 		Zeit bis zur Abwesenheit:
 	</text>
-	<spinner label="" name="afk_timeout_spinner"/>
-	<text name="seconds_textbox">
-		Sekunden
-	</text>
+	<color_swatch label="" name="effect_color_swatch" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/>
+	<combo_box label="Timeout für Abwesenheit:" name="afk">
+		<combo_box.item label="2 Minuten" name="item0"/>
+		<combo_box.item label="5 Minuten" name="item1"/>
+		<combo_box.item label="10 Minuten" name="item2"/>
+		<combo_box.item label="30 Minuten" name="item3"/>
+		<combo_box.item label="nie" name="item4"/>
+	</combo_box>
 	<text name="text_box3">
 		Antwort, wenn im „Beschäftigt“-Modus:
 	</text>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml
index fe0dca78d10..0c0924026ed 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml
@@ -11,8 +11,8 @@
 	<check_box label="Nur Freunde und Gruppen können mich anrufen oder mir eine IM schicken" name="voice_call_friends_only_check"/>
 	<check_box label="Mikrofon ausschalten, wenn Anrufe beendet werden" name="auto_disengage_mic_check"/>
 	<check_box label="Cookies annehmen" name="cookies_enabled"/>
-	<check_box label="Automatisches Abspielen von Medien erlauben" name="autoplay_enabled"/>
-	<check_box label="Medien auf Parzellen automatisch abspielen" name="parcel_autoplay_enabled"/>
+	<check_box label="Medien aktiviert" name="media_enabled"/>
+	<check_box label="Automatische Wiedergabe zulassen" name="autoplay_enabled"/>
 	<text name="Logs:">
 		Protokolle:
 	</text>
@@ -20,7 +20,7 @@
 	<check_box label="IM Protokolle auf meinem Computer speichern" name="log_instant_messages"/>
 	<check_box label="Zeitstempel hinzufügen" name="show_timestamps_check_im"/>
 	<text name="log_path_desc">
-		Speicherort der Protokolldateien
+		Speicherort für Protokolle:
 	</text>
 	<button label="Durchsuchen" label_selected="Durchsuchen" name="log_path_button"/>
 	<button label="Ignorierte Einwohner/Objekte" name="block_list"/>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_setup.xml b/indra/newview/skins/default/xui/de/panel_preferences_setup.xml
index f1d4a853e8c..89433378bb5 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_setup.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Kamera" name="Input panel">
+<panel label="Hardware &amp; Web" name="Input panel">
 	<button label="Andere Geräte" name="joystick_setup_button"/>
 	<text name="Mouselook:">
 		Mouselook:
@@ -26,9 +26,9 @@
 		MB
 	</text>
 	<button label="Durchsuchen" label_selected="Durchsuchen" name="set_cache"/>
-	<button label="Zurücksetzen" label_selected="Set" name="reset_cache"/>
+	<button label="Zurücksetzen" label_selected="Zurücksetzen" name="reset_cache"/>
 	<text name="Cache location">
-		Speicherort des Caches
+		Cache-Ordner:
 	</text>
 	<text name="Web:">
 		Web:
@@ -41,6 +41,6 @@
 	<line_editor name="web_proxy_editor" tool_tip="Name oder IP Adresse des Proxyservers, den Sie benutzen möchten"/>
 	<button label="Durchsuchen" label_selected="Durchsuchen" name="set_proxy"/>
 	<text name="Proxy location">
-		Proxyadresse
+		Proxy-Standort:
 	</text>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml
index 94c215b80bf..6060b1e6107 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml
@@ -7,7 +7,7 @@
 	<slider label="Medien" name="Media Volume"/>
 	<slider label="Soundeffekte" name="SFX Volume"/>
 	<slider label="Musik wird gestreamt" name="Music Volume"/>
-	<check_box label="Sprache" name="enable_voice_check"/>
+	<check_box label="Voice aktivieren" name="enable_voice_check"/>
 	<slider label="Sprache" name="Voice Volume"/>
 	<text name="Listen from">
 		Hören von:
diff --git a/indra/newview/skins/default/xui/de/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/de/panel_prim_media_controls.xml
index ed5daa60ce3..0a19483f8b7 100644
--- a/indra/newview/skins/default/xui/de/panel_prim_media_controls.xml
+++ b/indra/newview/skins/default/xui/de/panel_prim_media_controls.xml
@@ -6,7 +6,36 @@
 	<string name="skip_step">
 		0.2
 	</string>
+	<layout_stack name="progress_indicator_area">
+		<panel name="media_progress_indicator">
+			<progress_bar name="media_progress_bar" tool_tip="Medien werden geladen"/>
+		</panel>
+	</layout_stack>
 	<layout_stack name="media_controls">
+		<layout_panel name="back">
+			<button name="back_btn" tool_tip="Rückwärts"/>
+		</layout_panel>
+		<layout_panel name="fwd">
+			<button name="fwd_btn" tool_tip="Vorwärts"/>
+		</layout_panel>
+		<layout_panel name="home">
+			<button name="home_btn" tool_tip="Startseite"/>
+		</layout_panel>
+		<layout_panel name="media_stop">
+			<button name="media_stop_btn" tool_tip="Medienwiedergabe stoppen"/>
+		</layout_panel>
+		<layout_panel name="reload">
+			<button name="reload_btn" tool_tip="Neu laden"/>
+		</layout_panel>
+		<layout_panel name="stop">
+			<button name="stop_btn" tool_tip="Ladevorgang stoppen"/>
+		</layout_panel>
+		<layout_panel name="play">
+			<button name="play_btn" tool_tip="Medien wiedergeben"/>
+		</layout_panel>
+		<layout_panel name="pause">
+			<button name="pause_btn" tool_tip="Medien pausieren"/>
+		</layout_panel>
 		<layout_panel name="media_address">
 			<line_editor name="media_address_url" tool_tip="Medien URL"/>
 			<layout_stack name="media_address_url_icons">
@@ -21,13 +50,24 @@
 		<layout_panel name="media_play_position">
 			<slider_bar initial_value="0.5" name="media_play_slider" tool_tip="Fortschritt der Filmwiedergabe"/>
 		</layout_panel>
+		<layout_panel name="skip_back">
+			<button name="skip_back_btn" tool_tip="Rückwärts"/>
+		</layout_panel>
+		<layout_panel name="skip_forward">
+			<button name="skip_forward_btn" tool_tip="Vorwärts"/>
+		</layout_panel>
 		<layout_panel name="media_volume">
-			<button name="media_volume_button" tool_tip="Dieses Medium stummschalten"/>
+			<button name="media_mute_button" tool_tip="Stummschalten"/>
+			<slider name="volume_slider" tool_tip="Lautstärke"/>
+		</layout_panel>
+		<layout_panel name="zoom_frame">
+			<button name="zoom_frame_btn" tool_tip="Auf Medien zoomen"/>
+		</layout_panel>
+		<layout_panel name="close">
+			<button name="close_btn" tool_tip="Herauszoomen"/>
+		</layout_panel>
+		<layout_panel name="new_window">
+			<button name="new_window_btn" tool_tip="URL in Browser öffnen"/>
 		</layout_panel>
-	</layout_stack>
-	<layout_stack>
-		<panel name="media_progress_indicator">
-			<progress_bar name="media_progress_bar" tool_tip="Medien werden geladen"/>
-		</panel>
 	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_profile.xml b/indra/newview/skins/default/xui/de/panel_profile.xml
index c67d7f7fbc6..82467eb570b 100644
--- a/indra/newview/skins/default/xui/de/panel_profile.xml
+++ b/indra/newview/skins/default/xui/de/panel_profile.xml
@@ -12,50 +12,41 @@
 	</string>
 	<string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=de-DE"/>
 	<string name="no_partner_text" value="Keiner"/>
+	<string name="no_group_text" value="Keiner"/>
 	<string name="RegisterDateFormat">
 		[REG_DATE] ([AGE])
 	</string>
-	<scroll_container name="profile_scroll">
-		<panel name="scroll_content_panel">
-			<panel name="second_life_image_panel">
-				<text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
-				<expandable_text name="sl_description_edit">
-					Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
-				</expandable_text>
-			</panel>
-			<panel name="first_life_image_panel">
-				<text name="title_rw_descr_text" value="Echtes Leben:"/>
-				<expandable_text name="fl_description_edit">
-					Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
-				</expandable_text>
-			</panel>
-			<text name="me_homepage_text">
-				Webseite:
-			</text>
-			<text name="title_member_text" value="Mitglied seit:"/>
-			<text name="register_date" value="05/31/1976"/>
-			<text name="title_acc_status_text" value="Kontostatus:"/>
-			<text name="acc_status_text" value="Einwohner. Keine Zahlungsinfo archiviert."/>
-			<text name="title_partner_text" value="Partner:"/>
-			<panel name="partner_data_panel">
-				<text name="partner_text" value="[FIRST] [LAST]"/>
-			</panel>
-			<text name="title_groups_text" value="Gruppen:"/>
-			<expandable_text name="sl_groups">
-				Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
-			</expandable_text>
-		</panel>
-	</scroll_container>
-	<panel name="profile_buttons_panel">
-		<button label="Freund hinzufügen" name="add_friend"/>
-		<button label="IM" name="im"/>
-		<button label="Anrufen" name="call"/>
-		<button label="Karte" name="show_on_map_btn"/>
-		<button label="Teleportieren" name="teleport"/>
-		<button label="â–¼" name="overflow_btn"/>
-	</panel>
-	<panel name="profile_me_buttons_panel">
-		<button label="Profil bearbeiten" name="edit_profile_btn"/>
-		<button label="Aussehen bearbeiten" name="edit_appearance_btn"/>
-	</panel>
+	<layout_stack name="layout">
+		<layout_panel name="profile_stack">
+			<scroll_container name="profile_scroll">
+				<panel name="profile_scroll_panel">
+					<panel name="second_life_image_panel">
+						<text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
+					</panel>
+					<panel name="first_life_image_panel">
+						<text name="title_rw_descr_text" value="Echtes Leben:"/>
+					</panel>
+					<text name="title_member_text" value="Einwohner seit:"/>
+					<text name="title_acc_status_text" value="Kontostatus:"/>
+					<text name="acc_status_text">
+						Einwohner. Keine Zahlungsinfo archiviert.
+              Linden.
+					</text>
+					<text name="title_partner_text" value="Partner:"/>
+					<text name="title_groups_text" value="Gruppen:"/>
+				</panel>
+			</scroll_container>
+		</layout_panel>
+		<layout_panel name="profile_buttons_panel">
+			<button label="Freund hinzufügen" name="add_friend" tool_tip="Bieten Sie dem Einwohner die Freundschaft an"/>
+			<button label="IM" name="im" tool_tip="Instant Messenger öffnen"/>
+			<button label="Anrufen" name="call" tool_tip="Diesen Einwohner anrufen"/>
+			<button label="Karte" name="show_on_map_btn" tool_tip="Einwohner auf Karte anzeigen"/>
+			<button label="Teleportieren" name="teleport" tool_tip="Teleport anbieten"/>
+		</layout_panel>
+		<layout_panel name="profile_me_buttons_panel">
+			<button label="Profil bearbeiten" name="edit_profile_btn" tool_tip="Ihre persönlichen Informationen bearbeiten"/>
+			<button label="Aussehen bearbeiten" name="edit_appearance_btn" tool_tip="Ihr Aussehen bearbeiten: Körpermaße, Bekleidung, usw."/>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_region_estate.xml b/indra/newview/skins/default/xui/de/panel_region_estate.xml
index e0008d2a397..b0c6dce8cf9 100644
--- a/indra/newview/skins/default/xui/de/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/de/panel_region_estate.xml
@@ -1,8 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Grundstück" name="Estate">
 	<text name="estate_help_text">
-		Änderungen auf dieser Registerkarte wirken sich
-auf alle Regionen auf dem Grundstück aus.
+		Änderungen auf dieser Registerkarte wirken sich auf alle Regionen auf dem Grundstück aus.
 	</text>
 	<text name="estate_text">
 		Grundstück:
@@ -17,10 +16,10 @@ auf alle Regionen auf dem Grundstück aus.
 		(unbekannt)
 	</text>
 	<text name="Only Allow">
-		Zugang beschränken auf:
+		Zugang auf Einwohner beschränken, die überprüft wurden von:
 	</text>
-	<check_box label="Einwohner mit Zahlungsinformationen" name="limit_payment" tool_tip="Nicht identifizierte Einwohner verbannen"/>
-	<check_box label="Altersgeprüfte Erwachsene" name="limit_age_verified" tool_tip="Einwohner ohne Altersüberprüfung verbannen. Weitere Informationen finden Sie auf [SUPPORT_SITE]."/>
+	<check_box label="Zahlungsinformation gespeichert" name="limit_payment" tool_tip="Nicht identifizierte Einwohner verbannen"/>
+	<check_box label="Altersüberprüfung" name="limit_age_verified" tool_tip="Einwohner ohne Altersüberprüfung verbannen. Weitere Informationen finden Sie auf [SUPPORT_SITE]."/>
 	<check_box label="Voice-Chat erlauben" name="voice_chat_check"/>
 	<button label="?" name="voice_chat_help"/>
 	<text name="abuse_email_text" width="222">
diff --git a/indra/newview/skins/default/xui/de/panel_region_general.xml b/indra/newview/skins/default/xui/de/panel_region_general.xml
index 13df2bfb3b7..978b701054c 100644
--- a/indra/newview/skins/default/xui/de/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/de/panel_region_general.xml
@@ -39,10 +39,10 @@
 	<text label="Alterseinstufung" name="access_text">
 		Einstufung:
 	</text>
-	<combo_box label="Mature" name="access_combo">
+	<combo_box label="Moderat" name="access_combo">
 		<combo_box.item label="Adult" name="Adult"/>
-		<combo_box.item label="Mature" name="Mature"/>
-		<combo_box.item label="PG" name="PG"/>
+		<combo_box.item label="Moderat" name="Mature"/>
+		<combo_box.item label="Allgemein" name="PG"/>
 	</combo_box>
 	<button label="?" name="access_help"/>
 	<button label="Übernehmen" name="apply_btn"/>
diff --git a/indra/newview/skins/default/xui/de/panel_region_general_layout.xml b/indra/newview/skins/default/xui/de/panel_region_general_layout.xml
new file mode 100644
index 00000000000..732249df35f
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/panel_region_general_layout.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Region" name="General">
+	<text name="region_text_lbl">
+		Region:
+	</text>
+	<text name="region_text">
+		unbekannt
+	</text>
+	<text name="version_channel_text_lbl">
+		Version:
+	</text>
+	<text name="version_channel_text">
+		unbekannt
+	</text>
+	<text name="region_type_lbl">
+		Typ:
+	</text>
+	<text name="region_type">
+		unbekannt
+	</text>
+	<check_box label="Terraformen blockieren" name="block_terraform_check"/>
+	<check_box label="Fliegen blockieren" name="block_fly_check"/>
+	<check_box label="Schaden zulassen" name="allow_damage_check"/>
+	<check_box label="Stoßen beschränken" name="restrict_pushobject"/>
+	<check_box label="Landwiederverkauf zulassen" name="allow_land_resell_check"/>
+	<check_box label="Zusammenlegen/Teilen von Land zulassen" name="allow_parcel_changes_check"/>
+	<check_box label="Landanzeige in Suche blockieren" name="block_parcel_search_check" tool_tip="Diese Region und ihre Parzellen in Suchergebnissen anzeigen"/>
+	<spinner label="Avatar-Limit" name="agent_limit_spin"/>
+	<spinner label="Objektbonus" name="object_bonus_spin"/>
+	<text label="Alterseinstufung" name="access_text">
+		Einstufung:
+	</text>
+	<combo_box label="Moderat" name="access_combo">
+		<combo_box.item label="Adult" name="Adult"/>
+		<combo_box.item label="Moderat" name="Mature"/>
+		<combo_box.item label="Allgemein" name="PG"/>
+	</combo_box>
+	<button label="Übernehmen" name="apply_btn"/>
+	<button label="Einen Benutzer nach Hause teleportieren..." name="kick_btn"/>
+	<button label="Alle Benutzer nach Hause teleportieren..." name="kick_all_btn"/>
+	<button label="Nachricht an Region senden..." name="im_btn"/>
+	<button label="Telehub verwalten..." name="manage_telehub_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_region_texture.xml b/indra/newview/skins/default/xui/de/panel_region_texture.xml
index 4361b39defe..d489b5bac8a 100644
--- a/indra/newview/skins/default/xui/de/panel_region_texture.xml
+++ b/indra/newview/skins/default/xui/de/panel_region_texture.xml
@@ -48,8 +48,7 @@
 		Diese Werte geben den Mischungsgrad für die obigen Texturen an.
 	</text>
 	<text name="height_text_lbl11">
-		Der UNTERE Wert gibt die MAXIMALE Höhe von Textur Nr. 1 an
-und der OBERE WERT die MINIMALE Höhe von Textur 4.
+		In Metern gemessen. Der NIEDRIG-Wert ist die MAXIMALE Höhe der Textur #1, der HÖCHST-Wert ist die MINDEST-Höhe von Textur #4.
 	</text>
 	<text name="height_text_lbl12">
 		und der OBERE WERT die MINIMALE Höhe von Textur 4.
diff --git a/indra/newview/skins/default/xui/de/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/de/panel_script_limits_my_avatar.xml
new file mode 100644
index 00000000000..f6a1d7e9b5e
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/panel_script_limits_my_avatar.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="MEIN AVATAR" name="script_limits_my_avatar_panel">
+	<text name="loading_text">
+		Wird geladen...
+	</text>
+	<scroll_list name="scripts_list">
+		<scroll_list.columns label="Größe (KB)" name="size"/>
+		<scroll_list.columns label="URLs" name="urls"/>
+		<scroll_list.columns label="Objektname" name="name"/>
+		<scroll_list.columns label="Ort" name="location"/>
+	</scroll_list>
+	<button label="Liste aktualisieren" name="refresh_list_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/de/panel_script_limits_region_memory.xml
new file mode 100644
index 00000000000..c466c04e869
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/panel_script_limits_region_memory.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="REGIONSSPEICHER" name="script_limits_region_memory_panel">
+	<text name="script_memory">
+		Parzellenskript-Speicher
+	</text>
+	<text name="parcels_listed">
+		Parzelleneigentümer:
+	</text>
+	<text name="memory_used">
+		Verwendeter Speicher:
+	</text>
+	<text name="loading_text">
+		Wird geladen...
+	</text>
+	<scroll_list name="scripts_list">
+		<scroll_list.columns label="Größe (KB)" name="size"/>
+		<scroll_list.columns label="Objektname" name="name"/>
+		<scroll_list.columns label="Objekteigentümer" name="owner"/>
+		<scroll_list.columns label="Parzelle / Standort" name="location"/>
+	</scroll_list>
+	<button label="Liste aktualisieren" name="refresh_list_btn"/>
+	<button label="Markieren" name="highlight_btn"/>
+	<button label="Zurückgeben" name="return_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_side_tray.xml b/indra/newview/skins/default/xui/de/panel_side_tray.xml
index d5baacd357a..2cd11cdcef7 100644
--- a/indra/newview/skins/default/xui/de/panel_side_tray.xml
+++ b/indra/newview/skins/default/xui/de/panel_side_tray.xml
@@ -2,9 +2,13 @@
 <!-- Side tray cannot show background because it is always
 	partially on screen to hold tab buttons. -->
 <side_tray name="sidebar">
+	<sidetray_tab description="Seitenleiste auf-/zuklappen." name="sidebar_openclose"/>
 	<sidetray_tab description="Startseite." name="sidebar_home">
 		<panel label="Startseite" name="panel_home"/>
 	</sidetray_tab>
+	<sidetray_tab description="Ihr öffentliches Profil und Auswahl bearbeiten." name="sidebar_me">
+		<panel label="Ich" name="panel_me"/>
+	</sidetray_tab>
 	<sidetray_tab description="Freunde, Kontakte und Leute in Ihrer Nähe finden." name="sidebar_people">
 		<panel_container name="panel_container">
 			<panel label="Gruppeninfo" name="panel_group_info_sidetray"/>
@@ -14,13 +18,10 @@
 	<sidetray_tab description="Hier finden Sie neue Orte und Orte, die Sie bereits besucht haben." label="Orte" name="sidebar_places">
 		<panel label="Orte" name="panel_places"/>
 	</sidetray_tab>
-	<sidetray_tab description="Ihr öffentliches Profil und Auswahl bearbeiten." name="sidebar_me">
-		<panel label="Ich" name="panel_me"/>
+	<sidetray_tab description="Inventar durchsuchen." name="sidebar_inventory">
+		<panel label="Inventar bearbeiten" name="sidepanel_inventory"/>
 	</sidetray_tab>
 	<sidetray_tab description="Ändern Sie Ihr Aussehen und Ihren aktuellen Look." name="sidebar_appearance">
 		<panel label="Aussehen bearbeiten" name="sidepanel_appearance"/>
 	</sidetray_tab>
-	<sidetray_tab description="Inventar durchsuchen." name="sidebar_inventory">
-		<panel label="Inventar bearbeiten" name="sidepanel_inventory"/>
-	</sidetray_tab>
 </side_tray>
diff --git a/indra/newview/skins/default/xui/de/panel_status_bar.xml b/indra/newview/skins/default/xui/de/panel_status_bar.xml
index 253207fe735..33fd0f6348f 100644
--- a/indra/newview/skins/default/xui/de/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/de/panel_status_bar.xml
@@ -21,7 +21,8 @@
 	<panel.string name="buycurrencylabel">
 		[AMT] L$
 	</panel.string>
-	<button label="" label_selected="" name="buycurrency" tool_tip="Mein Kontostand: Hier klicken, um mehr L$ zu kaufen"/>
+	<button label="" label_selected="" name="buycurrency" tool_tip="Mein Kontostand"/>
+	<button label="L$ kaufen" name="buyL" tool_tip="Hier klicken, um mehr L$ zu kaufen"/>
 	<text name="TimeText" tool_tip="Aktuelle Zeit (Pazifik)">
 		12:00
 	</text>
diff --git a/indra/newview/skins/default/xui/de/panel_teleport_history.xml b/indra/newview/skins/default/xui/de/panel_teleport_history.xml
index 3149ddf19e1..4efd83dffff 100644
--- a/indra/newview/skins/default/xui/de/panel_teleport_history.xml
+++ b/indra/newview/skins/default/xui/de/panel_teleport_history.xml
@@ -11,5 +11,7 @@
 		<accordion_tab name="1_month_and_older" title="1 Monat und älter"/>
 		<accordion_tab name="6_months_and_older" title="6 Monate und älter"/>
 	</accordion>
-	<panel label="bottom_panel" name="bottom_panel"/>
+	<panel label="bottom_panel" name="bottom_panel">
+		<button name="gear_btn" tool_tip="Zusätzliche Optionen anzeigen"/>
+	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/de/panel_teleport_history_item.xml
index 9d18c52442d..4b57aa69b60 100644
--- a/indra/newview/skins/default/xui/de/panel_teleport_history_item.xml
+++ b/indra/newview/skins/default/xui/de/panel_teleport_history_item.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="teleport_history_item">
 	<text name="region" value="..."/>
+	<button name="profile_btn" tool_tip="Objektinfo anzeigen"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/role_actions.xml b/indra/newview/skins/default/xui/de/role_actions.xml
index 95eb6c5eb29..554a5c27a4b 100644
--- a/indra/newview/skins/default/xui/de/role_actions.xml
+++ b/indra/newview/skins/default/xui/de/role_actions.xml
@@ -1,200 +1,76 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <role_actions>
-	<action_set
-	     description="Diese Fähigkeiten ermöglichen das Hinzufügen und Entfernen von Mitgliedern sowie den Beitritt ohne Einladung."
-	     name="Membership">
-		<action description="Personen in diese Gruppe einladen"
-		     longdescription="Personen zu dieser Gruppe einladen können Sie mit „Neue Person einladen...“ unter „Mitglieder und Rollen“ &gt; „Mitglieder“."
-		     name="member invite" />
-		<action description="Mitglieder aus dieser Gruppe werfen"
-		     longdescription="Mitglieder von der Gruppe ausschließen können Sie mit „Aus Gruppe werfen“ unter „Mitglieder und Rollen“ &gt; „Mitglieder“. Ein Eigentümer kann jeden, außer einen anderen Eigentümer, ausschließen. Wenn Sie kein Eigentümer sind, können Sie ein Mitglied nur dann von der Gruppe ausschließen, wenn es die Rolle „Jeder“ innehat, aber KEINE ANDERE Rolle. Um Mitgliedern Rollen entziehen zu können, müssen Sie über die Fähigkeit „Mitgliedern Rollen entziehen“ verfügen."
-		     name="member eject" />
-		<action
-		     description="„Registrierung offen“ einstellen und „Beitrittsgebühr“ ändern"
-		     longdescription="„Beitritt möglich“ erlaubt den Beitritt zur Gruppe ohne vorhergehende Einladung. Die „Beitrittsgebühr“ wird in den Gruppeneinstellungen auf der Registerkarte „Allgemein“ festgelegt."
-		     name="member options" />
+	<action_set description="Diese Fähigkeiten ermöglichen das Hinzufügen und Entfernen von Mitgliedern sowie den Beitritt ohne Einladung." name="Membership">
+		<action description="Personen in diese Gruppe einladen" longdescription="Leute in diese Gruppe mit der Schaltfläche „Einladen“ im Abschnitt „Rollen“ &gt; Registerkarte „Mitglieder“ in die Gruppe einladen." name="member invite"/>
+		<action description="Mitglieder aus dieser Gruppe werfen" longdescription="Leute aus dieser Gruppe mit der Schaltfläche „Hinauswerfen“ im Abschnitt „Rollen“ &gt; Registerkarte „Mitglieder“ aus der Gruppe werfen. Ein Eigentümer kann jeden, außer einen anderen Eigentümer, ausschließen. Wenn Sie kein Eigentümer sind, können Sie ein Mitglied nur dann aus der Gruppe werfen, wenn es die Rolle Jeder inne hat, jedoch KEINE andere Rolle. Um Mitgliedern Rollen entziehen zu können, müssen Sie über die Fähigkeit „Mitgliedern Rollen entziehen“ verfügen." name="member eject"/>
+		<action description="„Registrierung offen“ aktivieren/deaktivieren und „Beitrittsgebühr“ ändern." longdescription="„Registrierung offen“ aktivieren, um damit neue Mitglieder ohne Einladung beitreten können, und die „Beitrittsgebühr“ im Abschnitt „Allgemein“ ändern." name="member options"/>
 	</action_set>
-	<action_set
-	     description="Diese Fähigkeiten ermöglichen das Hinzufügen, Entfernen und Ändern von Gruppenrollen, das Zuweisen und Entfernen von Rollen und das Zuweisen von Fähigkeiten zu Rollen."
-	     name="Roles">
-		<action description="Neue Rollen erstellen"
-		     longdescription="Neue Rollen erstellen Sie unter „Mitglieder und Rollen“ &gt; „Rollen“."
-		     name="role create" />
-		<action description="Rollen löschen"
-		     longdescription="Rollen löschen können Sie unter „Mitglieder und Rollen“ &gt; „Rollen“."
-		     name="role delete" />
-		<action description="Rollennamen, Titel und Beschreibung ändern"
-		     longdescription="Namen, Titel und Beschreibungen von Rollen können Sie nach Auswahl einer Rolle unten auf der Registerkarte „Mitglieder und Rollen“ &gt; „Rollen“ ändern."
-		     name="role properties" />
-		<action description="Mitgliedern nur eigene Rollen zuweisen"
-		     longdescription="Mitgliedern nur eigene Rollen zuweisen können Sie im Bereich „Zugewiesene Rollen“ auf der Registerkarte „Mitglieder und Rollen“ &gt; „Mitglieder“. Ein Mitglied mit dieser Fähigkeit kann anderen Mitgliedern nur die eigenen Rollen zuweisen."
-		     name="role assign member limited" />
-		<action description="Mitgliedern beliebige Rolle zuweisen"
-		     longdescription="Mitgliedern beliebige Rolle zuweisen können Sie im Bereich „Zugewiesene Rollen“ auf der Registerkarte „Mitglieder und Rollen“ &gt; „Mitglieder“. *WARNUNG* Jedes Mitglied in einer Rolle mit dieser Fähigkeit kann sich selbst und jedem anderen Mitglied (außer dem Eigentümer) Rollen mit weitreichenden Fähigkeiten zuweisen und damit fast Eigentümerrechte erreichen. Überlegen Sie sich, wem Sie diese Fähigkeit verleihen."
-		     name="role assign member" />
-		<action description="Mitgliedern Rollen entziehen"
-		     longdescription="Mitgliedern Rollen entziehen können Sie im Bereich „Rollen“ auf der Registerkarte „Mitglieder und Rollen“ &gt; „Mitglieder“. Eigentümer können nicht entfernt werden."
-		     name="role remove member" />
-		<action description="Rollenfähigkeiten zuweisen und entfernen"
-		     longdescription="Rollenfähigkeiten zuweisen und entfernen können Sie im Bereich „Zulässige Fähigkeiten“ auf der Registerkarte „Mitglieder und Rollen“ &gt; „Rollen“. *WARNUNG* Jedes Mitglied in einer Rolle mit dieser Fähigkeit kann sich selbst und jedem anderen Mitglied (außer dem Eigentümer) alle Fähigkeiten zuweisen und damit fast Eigentümerrechte erreichen. Überlegen Sie sich, wem Sie diese Fähigkeit verleihen."
-		     name="role change actions" />
+	<action_set description="Diese Fähigkeiten ermöglichen das Hinzufügen, Entfernen und Ändern von Gruppenrollen, das Zuweisen und Entfernen von Rollen und das Zuweisen von Fähigkeiten zu Rollen." name="Roles">
+		<action description="Neue Rollen erstellen" longdescription="Neue Rollen im Abschnitt „Rollen“ &gt; Registerkarte „Rollen“ erstellen." name="role create"/>
+		<action description="Rollen löschen" longdescription="Neue Rollen im Abschnitt „Rollen“ &gt; Registerkarte „Rollen“ löschen." name="role delete"/>
+		<action description="Rollennamen, Titel, Beschreibungen und ob die Rolleninhaber öffentlich bekannt sein sollen, ändern." longdescription="Rollennamen, Titel, Beschreibungen und ob die Rolleninhaber öffentlich bekannt sein sollen, ändern. Dies wird im unteren Bereich des Abschnitts „Rollen“ &gt; Registerkarte „Rollen“ eingestellt, nachdem eine Rolle ausgewählt wurde." name="role properties"/>
+		<action description="Mitgliedern nur eigene Rollen zuweisen" longdescription="In der Liste „Rollen“ (Abschnitt „Rollen“ &gt; Registerkarte „Mitglieder“) können Mitgliedern Rollen zugewiesen werden. Ein Mitglied mit dieser Fähigkeit kann anderen Mitgliedern nur die eigenen Rollen zuweisen." name="role assign member limited"/>
+		<action description="Mitgliedern beliebige Rolle zuweisen" longdescription="Sie können Mitglieder jede beliebige Rolle der Liste „Rollen“ (Abschnitt „Rollen“ &gt; Registerkarte „Mitglieder“) zuweisen. *WARNUNG* Jedes Mitglied in einer Rolle mit dieser Fähigkeit kann sich selbst und jedem anderen Mitglied (außer dem Eigentümer) Rollen mit weitreichenden Fähigkeiten zuweisen und damit fast Eigentümerrechte erreichen. Überlegen Sie sich gut, wem Sie diese Fähigkeit verleihen." name="role assign member"/>
+		<action description="Mitgliedern Rollen entziehen" longdescription="In der Liste „Rollen“ (Abschnitt „Rollen“ &gt; Registerkarte „Mitglieder“) können Mitgliedern Rollen abgenommen werden. Eigentümer können nicht entfernt werden." name="role remove member"/>
+		<action description="Rollenfähigkeiten zuweisen und entfernen" longdescription="Fähigkeiten für jede Rolle können in der Liste „Zulässige Fähigkeiten&quot; (Abschnitt „Rollen&quot; &gt; Registerkarte „Rollen“) zugewiesen und auch entzogen werden. *WARNUNG* Jedes Mitglied in einer Rolle mit dieser Fähigkeit kann sich selbst und jedem anderen Mitglied (außer dem Eigentümer) alle Fähigkeiten zuweisen und damit fast Eigentümerrechte erreichen. Überlegen Sie sich gut, wem Sie diese Fähigkeit verleihen." name="role change actions"/>
 	</action_set>
-	<action_set
-	     description="Diese Fähigkeiten ermöglichen es, die Gruppenidentität zu ändern, z. B. öffentliche Sichtbarkeit, Charta und Insignien."
-	     name="Group Identity">
-		<action
-		     description="Charta, Insignien und „Im Web veröffentlichen“ ändern und festlegen, welche Mitglieder in der Gruppeninfo öffentlich sichtbar sind."
-		     longdescription="Charta, Insignien und „Im Web veröffentlichen“ ändern und festlegen, welche Mitglieder in der Gruppeninfo öffentlich sichtbar sind. Diese Einstellungen finden Sie auf der Registerkarte „Allgemein“."
-		     name="group change identity" />
+	<action_set description="Diese Fähigkeiten ermöglichen es, die Gruppenidentität zu ändern, z. B. öffentliche Sichtbarkeit, Charta und Insignien." name="Group Identity">
+		<action description="Charta, Insignien und „Im Web veröffentlichen“ ändern und festlegen, welche Mitglieder in der Gruppeninfo öffentlich sichtbar sind." longdescription="Charta, Insignien und „In Suche anzeigen&quot; ändern. Diese Einstellungen werden im Abschnitt „Allgemein&quot; vorgenommen." name="group change identity"/>
 	</action_set>
-	<action_set
-	     description="Diese Fähigkeiten ermöglichen es, gruppeneigenes Land zu übertragen, zu bearbeiten und zu verkaufen. Klicken Sie mit rechts auf den Boden und wählen Sie „Land-Info...“ oder klicken Sie in der Menüleiste auf den Parzellennamen."
-	     name="Parcel Management">
-		<action description="Land übertragen und für Gruppe kaufen"
-		     longdescription="Land übertragen und für Gruppe kaufen. Diese Einstellung finden Sie unter „Land-Info“ &gt; „Allgemein“."
-		     name="land deed" />
-		<action description="Land Governor Linden überlassen"
-		     longdescription="Land Governor Linden überlassen. *WARNUNG* Jedes Mitglied in einer Rolle mit dieser Fähigkeit kann gruppeneigenes Land unter „Land-Info“ &gt; „Allgemein“ aufgeben und es ohne Verkauf in das Eigentum von Linden zurückführen! Überlegen Sie sich, wem Sie diese Fähigkeit verleihen."
-		     name="land release" />
-		<action description="Land.zu.verkaufen-Info einstellen"
-		     longdescription="Land zu verkaufen-Info einstellen. *WARNUNG* Mitglieder in einer Rolle mit dieser Fähigkeit können gruppeneigenes Land jederzeit unter „Land-Info“ &gt; „Allgemein“ verkaufen! Überlegen Sie sich, wem Sie diese Fähigkeit verleihen."
-		     name="land set sale info" />
-		<action description="Parzellen teilen und zusammenlegen"
-		     longdescription="Parzellen teilen und zusammenlegen. Klicken Sie dazu mit rechts auf den Boden, wählen sie „Terrain bearbeiten“ und ziehen Sie die Maus auf das Land, um eine Auswahl zu treffen. Zum Teilen treffen Sie eine Auswahl und klicken auf „Unterteilen...“. Zum Zusammenlegen von zwei oder mehr angrenzenden Parzellen klicken Sie auf „Zusammenlegen...“."
-		     name="land divide join" />
+	<action_set description="Diese Fähigkeiten ermöglichen es, gruppeneigenes Land zu übertragen, zu bearbeiten und zu verkaufen. Klicken Sie mit rechts auf den Boden und wählen Sie „Land-Info...“ oder klicken Sie in der Navigationsleiste auf das Symbol „i&quot;." name="Parcel Management">
+		<action description="Land übertragen und für Gruppe kaufen" longdescription="Land übertragen und für Gruppe kaufen. Diese Einstellung finden Sie unter „Land-Info“ &gt; „Allgemein“." name="land deed"/>
+		<action description="Land Governor Linden überlassen" longdescription="Land Governor Linden überlassen. *WARNUNG* Jedes Mitglied in einer Rolle mit dieser Fähigkeit kann gruppeneigenes Land unter „Land-Info“ &gt; „Allgemein“ aufgeben und es ohne Verkauf in das Eigentum von Linden zurückführen! Überlegen Sie sich, wem Sie diese Fähigkeit verleihen." name="land release"/>
+		<action description="Land.zu.verkaufen-Info einstellen" longdescription="Land zu verkaufen-Info einstellen. *WARNUNG* Mitglieder in einer Rolle mit dieser Fähigkeit können gruppeneigenes Land jederzeit unter „Land-Info“ &gt; „Allgemein“ verkaufen! Überlegen Sie sich, wem Sie diese Fähigkeit verleihen." name="land set sale info"/>
+		<action description="Parzellen teilen und zusammenlegen" longdescription="Parzellen teilen und zusammenlegen. Klicken Sie dazu mit rechts auf den Boden, wählen sie „Terrain bearbeiten“ und ziehen Sie die Maus auf das Land, um eine Auswahl zu treffen. Zum Teilen treffen Sie eine Auswahl und klicken auf „Unterteilen“. Zum Zusammenlegen von zwei oder mehr angrenzenden Parzellen klicken Sie auf „Zusammenlegen“." name="land divide join"/>
 	</action_set>
-	<action_set
-	     description="Diese Fähigkeiten ermöglichen es, den Parzellennamen und die Veröffentlichungseinstellungen sowie die Anzeige des Suchverzeichnisses, den Landepunkt und die TP-Routenoptionen festzulegen."
-	     name="Parcel Identity">
-		<action
-		     description="„In Orte suchen anzeigen“ ein-/ausschalten und Kategorie festlegen"
-		     longdescription="Auf der Registerkarte „Optionen“ unter „Land-Info“ können Sie „In Orte suchen anzeigen“ ein- und ausschalten und die Parzellenkategorie festlegen."
-		     name="land find places" />
-		<action
-		     description="Name und Beschreibung der Parzelle und Einstellungen für „Im Web veröffentlichen“ ändern"
-		     longdescription="Name und Beschreibung der Parzelle und Einstellungen für „Im Web veröffentlichen“ ändern. Diese Einstellungen finden Sie unter „Land-Info“ &gt; „Optionen“."
-		     name="land change identity" />
-		<action description="Landepunkt und Teleport-Route festlegen"
-		     longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle einen Landepunkt für ankommende Teleports und Teleport-Routen festlegen. Diese Einstellungen finden Sie unter „Land-Info“ &gt; „Optionen“."
-		     name="land set landing point" />
+	<action_set description="Diese Fähigkeiten ermöglichen es, den Parzellennamen und die Veröffentlichungseinstellungen sowie die Anzeige des Suchverzeichnisses, den Landepunkt und die TP-Routenoptionen festzulegen." name="Parcel Identity">
+		<action description="„Ort in Suche anzeigen&quot; ein-/ausschalten und Kategorie festlegen." longdescription="Auf der Registerkarte „Optionen“ unter „Land-Info“ können Sie „Ort in Suche anzeigen“ ein- und ausschalten und die Parzellenkategorie festlegen." name="land find places"/>
+		<action description="Parzellenname, Beschreibung und Einstellung für „Ort in Suche anzeigen&quot; ändern" longdescription="Parzellenname, Beschreibung und Einstellung für „Ort in Suche anzeigen&quot; ändern Diese Einstellungen finden Sie unter „Land-Info“ &gt; Registerkarte „Optionen“." name="land change identity"/>
+		<action description="Landepunkt und Teleport-Route festlegen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle einen Landepunkt für ankommende Teleports und Teleport-Routen festlegen. Diese Einstellungen finden Sie unter „Land-Info“ &gt; „Optionen“." name="land set landing point"/>
 	</action_set>
-	<action_set
-	     description="Diese Fähigkeiten ermöglichen es, Parzellenoptionen wie „Objekte erstellen“, „Terrain bearbeiten“ sowie Musik- und Medieneinstellungen zu ändern."
-	     name="Parcel Settings">
-		<action description="Musik- und Medieneinstellungen ändern"
-		     longdescription="Die Einstellungen für Streaming-Musik und Filme finden Sie unter „Land-Info“ &gt; „Medien“."
-		     name="land change media" />
-		<action description="„Terrain bearbeiten“ ein/aus"
-		     longdescription="„Terrain bearbeiten“ ein/aus. *WARNUNG* „Land-Info“ &gt; „Optionen“ &gt; „Terrain bearbeiten“ ermöglicht jedem das Terraformen Ihres Grundstücks und das Setzen und Verschieben von Linden-Pflanzen. Überlegen Sie sich, wem Sie diese Fähigkeit verleihen. Diese Einstellung finden Sie unter „Land-Info“ &gt; „Optionen“."
-		     name="land edit" />
-		<action description="„Land-Info“-Optionen einstellen"
-		     longdescription="Auf der Registerkarte „Optionen“ unter „Land-Info“ können Sie „Sicher (kein Schaden)“ und „Fliegen“ ein- und ausschalten und Einwohnern folgende Aktionen auf gruppeneigenem Land erlauben: „Objekte erstellen“, „Terrain bearbeiten“, „Landmarken erstellen“ und „Skripts ausführen“."
-		     name="land options" />
+	<action_set description="Diese Fähigkeiten ermöglichen es, Parzellenoptionen wie „Objekte erstellen“, „Terrain bearbeiten“ sowie Musik- und Medieneinstellungen zu ändern." name="Parcel Settings">
+		<action description="Musik- und Medieneinstellungen ändern" longdescription="Die Einstellungen für Streaming-Musik und Filme finden Sie unter „Land-Info“ &gt; „Medien“." name="land change media"/>
+		<action description="„Terrain bearbeiten“ ein/aus" longdescription="„Terrain bearbeiten“ ein/aus. *WARNUNG* „Land-Info“ &gt; „Optionen“ &gt; „Terrain bearbeiten“ ermöglicht jedem das Terraformen Ihres Grundstücks und das Setzen und Verschieben von Linden-Pflanzen. Überlegen Sie sich, wem Sie diese Fähigkeit verleihen. Diese Einstellung finden Sie unter „Land-Info“ &gt; „Optionen“." name="land edit"/>
+		<action description="„Land-Info“-Optionen einstellen" longdescription="„Sicher (kein Schaden)“ und „Fliegen“ ein- und ausschalten und Einwohnern folgende Aktionen erlauben: „Terrain bearbeiten“, „Bauen“, „Landmarken erstellen“ und „Skripts ausführen“ auf gruppeneigenem Land in „Land-Info“ &gt; Registerkarte „Optionen“." name="land options"/>
 	</action_set>
-	<action_set
-	     description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Umgehen von Restriktionen auf gruppeneigenen Parzellen zu erlauben."
-	     name="Parcel Powers">
-		<action description="„Terrain bearbeiten“ zulassen"
-		     longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle das Terrain bearbeiten, selbst wenn diese Option unter „Land-Info“ &gt; „Optionen“ deaktiviert ist."
-		     name="land allow edit land" />
-		<action description="„Fliegen“ zulassen"
-		     longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle fliegen, selbst wenn diese Option unter „Land-Info“ &gt; „Optionen“ deaktiviert ist."
-		     name="land allow fly" />
-		<action description="„Objekte erstellen“ zulassen"
-		     longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle Objekte erstellen, selbst wenn diese Option unter „Land-Info“ &gt; „Optionen“ deaktiviert ist."
-		     name="land allow create" />
-		<action description="„Landmarke erstellen“ zulassen"
-		     longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können für eine gruppeneigene Parzelle eine Landmarke erstellen, selbst wenn diese Option unter „Land-Info“ &gt; „Optionen“ deaktiviert ist."
-		     name="land allow landmark" />
-		<action description="„Hier als Zuhause wählen“ auf Gruppenland zulassen"
-		     longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer an diese Gruppe übertragenen Parzelle die Funktion „Welt“ &gt; „Hier als Zuhause wählen“ verwenden."
-		     name="land allow set home" />
+	<action_set description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Umgehen von Restriktionen auf gruppeneigenen Parzellen zu erlauben." name="Parcel Powers">
+		<action description="„Terrain bearbeiten“ zulassen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle das Terrain bearbeiten, selbst wenn diese Option unter „Land-Info“ &gt; „Optionen“ deaktiviert ist." name="land allow edit land"/>
+		<action description="„Fliegen“ zulassen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle fliegen, selbst wenn diese Option unter „Land-Info“ &gt; „Optionen“ deaktiviert ist." name="land allow fly"/>
+		<action description="„Objekte erstellen“ zulassen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle Objekte erstellen, selbst wenn diese Option unter „Land-Info“ &gt; „Optionen“ deaktiviert ist." name="land allow create"/>
+		<action description="„Landmarke erstellen“ zulassen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können für eine gruppeneigene Parzelle eine Landmarke erstellen, selbst wenn diese Option unter „Land-Info“ &gt; „Optionen“ deaktiviert ist." name="land allow landmark"/>
+		<action description="„Hier als Zuhause wählen“ auf Gruppenland zulassen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer an diese Gruppe übertragenen Parzelle die Funktion „Welt“ &gt; „Landmarken“ &gt; „Hier als Zuhause wählen“ verwenden." name="land allow set home"/>
 	</action_set>
-	<action_set
-	     description="Diese Fähigkeiten ermöglichen es, den Zugang auf gruppeneigenen Parzellen zu steuern. Dazu gehört das Einfrieren und Ausschließen von Einwohnern."
-	     name="Parcel Access">
-		<action description="Parzellen-Zugangslisten verwalten"
-		     longdescription="Parzellen-Zugangslisten bearbeiten Sie unter „Land-Info“ &gt; „Zugang“."
-		     name="land manage allowed" />
-		<action description="Parzellen-Bannlisten verwalten"
-		     longdescription="Parzellen-Bannlisten bearbeiten Sie unter „Land-Info“ &gt; „Verbannen“."
-		     name="land manage banned" />
-		<action
-		     description="Parzelleneinstellungen für „Pässe verkaufen...“ ändern"
-		     longdescription="Die Parzellen-Einstellungen für „Pässe verkaufen...“ ändern Sie unter „Land-Info“ &gt; „Zugang“."
-		     name="land manage passes" />
-		<action description="Einwohner aus Parzellen werfen und einfrieren"
-		     longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können gegen unerwünschte Personen auf einer gruppeneigenen Parzelle Maßnahmen ergreifen. Klicken Sie die Person mit rechts an und wählen Sie „Mehr“ &gt;, dann „Ausschließen...“ oder „Einfrieren...“."
-		     name="land admin" />
+	<action_set description="Diese Fähigkeiten ermöglichen es, den Zugang auf gruppeneigenen Parzellen zu steuern. Dazu gehört das Einfrieren und Ausschließen von Einwohnern." name="Parcel Access">
+		<action description="Parzellen-Zugangslisten verwalten" longdescription="Parzellen-Zugangslisten bearbeiten Sie unter „Land-Info“ &gt; „Zugang“." name="land manage allowed"/>
+		<action description="Parzellen-Bannlisten verwalten" longdescription="Bannlisten für Parzellen bearbeiten Sie unter „Land-Info“ &gt; Registerkarte „Zugang“." name="land manage banned"/>
+		<action description="Parzelleneinstellungen für „Pässe verkaufen“ ändern" longdescription="Die Parzellen-Einstellungen für „Pässe verkaufen“ ändern Sie unter „Land-Info“ &gt; Registerkarte „Zugang“." name="land manage passes"/>
+		<action description="Einwohner aus Parzellen werfen und einfrieren" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können gegen unerwünschte Einwohner auf einer gruppeneigenen Parzelle Maßnahmen ergreifen. Klicken Sie den Einwohner mit rechts an und wählen Sie „Hinauswerfen“ oder „Einfrieren“." name="land admin"/>
 	</action_set>
-	<action_set
-	     description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Zurückgeben von Objekten sowie das Platzieren und Verschieben von Linden-Pflanzen zu erlauben. Mitglieder können das Grundstück aufräumen und an der Landschaftsgestaltung mitwirken. Aber Vorsicht: Zurückgegebene Objekte können nicht mehr zurückgeholt werden."
-	     name="Parcel Content">
-		<action description="Gruppeneigene Objekte zurückgeben"
-		     longdescription="Gruppeneigene Objekte auf gruppeneigenen Parzellen können Sie unter „Land-Info“ &gt; „Objekte“ zurückgeben."
-		     name="land return group owned" />
-		<action description="Gruppenobjekte zurückgeben"
-		     longdescription="Gruppenobjekte auf gruppeneigenen Parzellen können Sie unter „Land-Info“ &gt; „Objekte“ zurückgeben."
-		     name="land return group set" />
-		<action description="Gruppenfremde Objekte zurückgeben"
-		     longdescription="Objekte von gruppenfremden Personen auf gruppeneigenen Parzellen können Sie unter „Land-Info“ &gt; „Objekte“ zurückgeben."
-		     name="land return non group" />
-		<action description="Landschaftsgestaltung mit Linden-Pflanzen"
-		     longdescription="Die Fähigkeit zur Landschaftsgestaltung ermöglicht das Platzieren und Verschieben von Linden-Bäumen, -Pflanzen und -Gräsern. Diese Objekte finden Sie im Bibliotheksordner des Inventars unter „Objekte“. Sie lassen sich auch mit der Schaltfläche „Erstellen“ erzeugen."
-		     name="land gardening" />
+	<action_set description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Zurückgeben von Objekten sowie das Platzieren und Verschieben von Linden-Pflanzen zu erlauben. Mitglieder können das Grundstück aufräumen und an der Landschaftsgestaltung mitwirken. Aber Vorsicht: Zurückgegebene Objekte können nicht mehr zurückgeholt werden." name="Parcel Content">
+		<action description="Gruppeneigene Objekte zurückgeben" longdescription="Gruppeneigene Objekte auf gruppeneigenen Parzellen können Sie unter „Land-Info“ &gt; „Objekte“ zurückgeben." name="land return group owned"/>
+		<action description="Gruppenobjekte zurückgeben" longdescription="Gruppenobjekte auf gruppeneigenen Parzellen können Sie unter „Land-Info“ &gt; „Objekte“ zurückgeben." name="land return group set"/>
+		<action description="Gruppenfremde Objekte zurückgeben" longdescription="Objekte von gruppenfremden Personen auf gruppeneigenen Parzellen können Sie unter „Land-Info“ &gt; „Objekte“ zurückgeben." name="land return non group"/>
+		<action description="Landschaftsgestaltung mit Linden-Pflanzen" longdescription="Die Fähigkeit zur Landschaftsgestaltung ermöglicht das Platzieren und Verschieben von Linden-Bäumen, -Pflanzen und -Gräsern. Diese Objekte finden Sie im Bibliotheksordner des Inventars unter Objekte. Sie lassen sich auch mit der Menü Erstellen erzeugen." name="land gardening"/>
 	</action_set>
-	<action_set
-	     description="Diese Fähigkeiten ermöglichen es, gruppeneigene Objekte zu übertragen, zu bearbeiten und zu verkaufen. Änderungen werden unter „Auswahl-Tool“ &gt; „Bearbeiten“ auf der Registerkarte „Allgemein“ vorgenommen. Klicken Sie mit rechts auf ein Objekt und wählen Sie „Bearbeiten“, um seine Einstellungen anzuzeigen."
-	     name="Object Management">
-		<action description="Objekte an Gruppe übertragen"
-		     longdescription="Objekte an eine Gruppe übertragen können Sie unter „Auswahl-Tool“ &gt; „Bearbeiten“ auf der Registerkarte „Allgemein“."
-		     name="object deed" />
-		<action
-		     description="Gruppeneigene Objekte manipulieren (verschieben, kopieren, bearbeiten)"
-		     longdescription="Gruppeneigene Objekte lassen sich unter „Auswahl-Tool“ &gt; „Bearbeiten“ auf der Registerkarte „Allgemein“ manipulieren (verschieben, kopieren, bearbeiten)."
-		     name="object manipulate" />
-		<action description="Gruppeneigene Objekte zum Verkauf freigeben"
-		     longdescription="Gruppeneigene Objekte zum Verkauf freigeben können Sie unter „Auswahl-Tool“ &gt; „Bearbeiten“ auf der Registerkarte „Allgemein“."
-		     name="object set sale" />
+	<action_set description="Diese Fähigkeiten ermöglichen es, gruppeneigene Objekte zu übertragen, zu bearbeiten und zu verkaufen. Änderungen werden im Werkzeug Bearbeiten auf der Registerkarte Allgemein vorgenommen. Klicken Sie mit rechts auf ein Objekt und wählen Sie  &apos;Bearbeiten &apos;, um seine Einstellungen anzuzeigen." name="Object Management">
+		<action description="Objekte an Gruppe übertragen" longdescription="Objekte an eine Gruppe übertragen können Sie im Werkzeug „Bearbeiten“ auf der Registerkarte „Allgemein“." name="object deed"/>
+		<action description="Gruppeneigene Objekte manipulieren (verschieben, kopieren, bearbeiten)" longdescription="Gruppeneigene Objekte lassen sich im Werkzeug „Bearbeiten“ auf der Registerkarte „Allgemein“ manipulieren (verschieben, kopieren, bearbeiten)." name="object manipulate"/>
+		<action description="Gruppeneigene Objekte zum Verkauf freigeben" longdescription="Gruppeneigene Objekte zum Verkauf freigeben, können Sie im Werkzeug „Bearbeiten“ auf der Registerkarte „Allgemein“." name="object set sale"/>
 	</action_set>
-	<action_set
-	     description="Diese Fähigkeiten ermöglichen es, Gruppenschulden und Gruppendividenden zu aktivieren und den Zugriff auf das Gruppenkonto zu beschränken."
-	     name="Accounting">
-		<action description="Gruppenschulden zahlen und Gruppendividende erhalten"
-		     longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit zahlen automatisch Gruppenschulden und erhalten Gruppendividenden. D. h. sie erhalten einen Anteil an Verkäufen von gruppeneigenem Land, der täglich verrechnet wird. Außerdem zahlen Sie automatisch für anfallende Kosten wie Parzellenlisten-Gebühren."
-		     name="accounting accountable" />
+	<action_set description="Diese Fähigkeiten ermöglichen es, Gruppenschulden und Gruppendividenden zu aktivieren und den Zugriff auf das Gruppenkonto zu beschränken." name="Accounting">
+		<action description="Gruppenschulden zahlen und Gruppendividende erhalten" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit zahlen automatisch Gruppenschulden und erhalten Gruppendividenden. D. h. sie erhalten einen Anteil an Verkäufen von gruppeneigenem Land, der täglich verrechnet wird. Außerdem zahlen Sie automatisch für anfallende Kosten wie Parzellenlisten-Gebühren." name="accounting accountable"/>
 	</action_set>
-	<action_set
-	     description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Senden, Empfangen und Anzeigen von Gruppennachrichten zu erlauben."
-	     name="Notices">
-		<action description="Mitteilungen senden"
-		     longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können in der Gruppeninfo unter „Mitteilungen“ Mitteilungen senden."
-		     name="notices send" />
-		<action description="Mitteilungen erhalten und ältere Mitteilungen anzeigen"
-		     longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Mitteilungen erhalten und in der Gruppeninfo unter „Mitteilungen“ ältere Mitteilungen einsehen."
-		     name="notices receive" />
+	<action_set description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Senden, Empfangen und Anzeigen von Gruppennachrichten zu erlauben." name="Notices">
+		<action description="Mitteilungen senden" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Mitteilungen im Abschnitt Gruppe &gt; Mitteilungen senden." name="notices send"/>
+		<action description="Mitteilungen erhalten und ältere Mitteilungen anzeigen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Mitteilungen erhalten und im Abschnitt Gruppe &gt; Mitteilungen ältere Mitteilungen anzeigen." name="notices receive"/>
 	</action_set>
-	<action_set
-	     description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Erstellen von Anfragen, das Abstimmen über Anfragen und das Anzeigen des Abstimmprotokolls zu erlauben."
-	     name="Proposals">
-		<action description="Neue Anfragen"
-		     longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Anfragen stellen, über die auf der Registerkarte „Anfragen“ in der Gruppeninfo abgestimmt werden kann."
-		     name="proposal start" />
-		<action description="Über Anfragen abstimmen"
-		     longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können in der Gruppeninfo unter „Anfragen“ über Anfragen abstimmen."
-		     name="proposal vote" />
+	<action_set description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Erstellen von Anfragen, das Abstimmen über Anfragen und das Anzeigen des Abstimmprotokolls zu erlauben." name="Proposals">
+		<action description="Neue Anfragen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Anfragen stellen, über die auf der Registerkarte „Anfragen“ in der Gruppeninfo abgestimmt werden kann." name="proposal start"/>
+		<action description="Über Anfragen abstimmen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können in der Gruppeninfo unter „Anfragen“ über Anfragen abstimmen." name="proposal vote"/>
 	</action_set>
-	<action_set
-	     description="Diese Fähigkeiten ermöglichen es, den Zugang zu Gruppen-Chat und Gruppen-Voice-Chat zu steuern."
-	     name="Chat">
-		<action description="Gruppen-Chat beitreten"
-		     longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Gruppen-Chat und Gruppen-Voice-Chat beitreten."
-		     name="join group chat" />
-		<action description="Gruppen-Voice-Chat beitreten"
-		     longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Gruppen-Voice-Chat beitreten. HINWEIS: Sie benötigen die Fähigkeit „Gruppen-Chat beitreten“, um Zugang zu dieser Voice-Chat-Sitzung zu erhalten."
-		     name="join voice chat" />
-		<action description="Gruppen-Chat moderieren"
-		     longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können den Zugang zu und die Teilnahme an Gruppen-Chat- und Voice-Chat-Sitzungen steuern."
-		     name="moderate group chat" />
+	<action_set description="Diese Fähigkeiten ermöglichen es, den Zugang zu Gruppen-Chat und Gruppen-Voice-Chat zu steuern." name="Chat">
+		<action description="Gruppen-Chat beitreten" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Gruppen-Chat und Gruppen-Voice-Chat beitreten." name="join group chat"/>
+		<action description="Gruppen-Voice-Chat beitreten" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Gruppen-Voice-Chat beitreten. HINWEIS: Sie benötigen die Fähigkeit „Gruppen-Chat beitreten“, um Zugang zu dieser Voice-Chat-Sitzung zu erhalten." name="join voice chat"/>
+		<action description="Gruppen-Chat moderieren" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können den Zugang zu und die Teilnahme an Gruppen-Chat- und Voice-Chat-Sitzungen steuern." name="moderate group chat"/>
 	</action_set>
 </role_actions>
diff --git a/indra/newview/skins/default/xui/de/sidepanel_appearance.xml b/indra/newview/skins/default/xui/de/sidepanel_appearance.xml
index 07d35f30e45..7a280bd7ffc 100644
--- a/indra/newview/skins/default/xui/de/sidepanel_appearance.xml
+++ b/indra/newview/skins/default/xui/de/sidepanel_appearance.xml
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Aussehen" name="appearance panel">
+<panel label="Outfits" name="appearance panel">
 	<string name="No Outfit" value="Kein Outfit"/>
 	<panel name="panel_currentlook">
 		<button label="Bearbeiten" name="editappearance_btn"/>
 		<text name="currentlook_title">
-			Aktuelles Outfit:
+			(nicht gespeichert)
 		</text>
 		<text name="currentlook_name">
-			Mein Outfit
+			MyOutfit With a really Long Name like MOOSE
 		</text>
 	</panel>
-	<filter_editor label="Filter" name="Filter"/>
+	<filter_editor label="Outfits filtern" name="Filter"/>
 	<button label="Anziehen" name="wear_btn"/>
 	<button label="Neues Outfit" name="newlook_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/sidepanel_inventory.xml b/indra/newview/skins/default/xui/de/sidepanel_inventory.xml
index d40e2f33981..f6cf911bb32 100644
--- a/indra/newview/skins/default/xui/de/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/de/sidepanel_inventory.xml
@@ -2,7 +2,7 @@
 <panel label="Sonstiges" name="objects panel">
 	<panel label="" name="sidepanel__inventory_panel">
 		<panel name="button_panel">
-			<button label="Info" name="info_btn"/>
+			<button label="Profil" name="info_btn"/>
 			<button label="Anziehen" name="wear_btn"/>
 			<button label="Wiedergeben" name="play_btn"/>
 			<button label="Teleportieren" name="teleport_btn"/>
diff --git a/indra/newview/skins/default/xui/de/sidepanel_item_info.xml b/indra/newview/skins/default/xui/de/sidepanel_item_info.xml
index 947ffbf1862..09935019ab8 100644
--- a/indra/newview/skins/default/xui/de/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/de/sidepanel_item_info.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="item properties" title="Inventarobjekt-Eigenschaften">
+<panel name="item properties" title="Objektprofil">
 	<panel.string name="unknown">
 		(unbekannt)
 	</panel.string>
@@ -15,6 +15,8 @@
 	<panel.string name="acquiredDate">
 		[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
 	</panel.string>
+	<text name="title" value="Objektprofil"/>
+	<text name="where" value="(Inventar)"/>
 	<panel label="">
 		<text name="LabelItemNameTitle">
 			Name:
@@ -28,53 +30,50 @@
 		<text name="LabelCreatorName">
 			Nicole Linden
 		</text>
-		<button label="Profil..." name="BtnCreator"/>
+		<button label="Profil" name="BtnCreator"/>
 		<text name="LabelOwnerTitle">
 			Eigentümer:
 		</text>
 		<text name="LabelOwnerName">
 			Thrax Linden
 		</text>
-		<button label="Profil..." name="BtnOwner"/>
+		<button label="Profil" name="BtnOwner"/>
 		<text name="LabelAcquiredTitle">
 			Erworben:
 		</text>
 		<text name="LabelAcquiredDate">
 			Mittwoch, 24. Mai 2006, 12:50:46
 		</text>
-		<text name="OwnerLabel">
-			Sie:
-		</text>
-		<check_box label="Bearbeiten" name="CheckOwnerModify"/>
-		<check_box label="Kopieren" name="CheckOwnerCopy"/>
-		<check_box label="Wiederverkaufen" name="CheckOwnerTransfer"/>
-		<text name="AnyoneLabel">
-			Jeder:
-		</text>
-		<check_box label="Kopieren" name="CheckEveryoneCopy"/>
-		<text name="GroupLabel">
-			Gruppe:
-		</text>
-		<check_box label="Teilen" name="CheckShareWithGroup"/>
-		<text name="NextOwnerLabel">
-			Nächster Eigentümer:
-		</text>
-		<check_box label="Bearbeiten" name="CheckNextOwnerModify"/>
-		<check_box label="Kopieren" name="CheckNextOwnerCopy"/>
-		<check_box label="Wiederverkaufen" name="CheckNextOwnerTransfer"/>
+		<panel name="perms_inv">
+			<text name="perm_modify">
+				Sie können:
+			</text>
+			<check_box label="Bearbeiten" name="CheckOwnerModify"/>
+			<check_box label="Kopieren" name="CheckOwnerCopy"/>
+			<check_box label="Transferieren" name="CheckOwnerTransfer"/>
+			<text name="AnyoneLabel">
+				Jeder:
+			</text>
+			<check_box label="Kopieren" name="CheckEveryoneCopy"/>
+			<text name="GroupLabel">
+				Gruppe:
+			</text>
+			<check_box label="Teilen" name="CheckShareWithGroup" tool_tip="Mit allen Mitgliedern der zugeordneten Gruppe, Ihre Berechtigungen dieses Objekt zu ändern teilen. Sie müssen Übereignen, um Rollenbeschränkungen zu aktivieren."/>
+			<text name="NextOwnerLabel">
+				Nächster Eigentümer:
+			</text>
+			<check_box label="Bearbeiten" name="CheckNextOwnerModify"/>
+			<check_box label="Kopieren" name="CheckNextOwnerCopy"/>
+			<check_box label="Transferieren" name="CheckNextOwnerTransfer" tool_tip="Nächster Eigentümer kann dieses Objekt weitergeben oder -verkaufen"/>
+		</panel>
 		<check_box label="Zum Verkauf" name="CheckPurchase"/>
 		<combo_box name="combobox sale copy">
 			<combo_box.item label="Kopieren" name="Copy"/>
 			<combo_box.item label="Original" name="Original"/>
 		</combo_box>
-		<spinner label="Preis:" name="Edit Cost"/>
-		<text name="CurrencySymbol">
-			L$
-		</text>
+		<spinner label="Preis: L$" name="Edit Cost"/>
 	</panel>
 	<panel name="button_panel">
-		<button label="Bearbeiten" name="edit_btn"/>
 		<button label="Abbrechen" name="cancel_btn"/>
-		<button label="Speichern" name="save_btn"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/sidepanel_task_info.xml b/indra/newview/skins/default/xui/de/sidepanel_task_info.xml
index b0ce47e3ae3..9f8fdc085a3 100644
--- a/indra/newview/skins/default/xui/de/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/de/sidepanel_task_info.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="object properties" title="Objekteigenschaften">
+<panel name="object properties" title="Objektprofil">
 	<panel.string name="text deed continued">
 		Übertragung
 	</panel.string>
@@ -36,6 +36,8 @@
 	<panel.string name="Sale Mixed">
 		Mischverkauf
 	</panel.string>
+	<text name="title" value="Objektprofil"/>
+	<text name="where" value="(Inworld)"/>
 	<panel label="">
 		<text name="Name:">
 			Name:
@@ -43,11 +45,11 @@
 		<text name="Description:">
 			Beschreibung:
 		</text>
-		<text name="Creator:">
+		<text name="CreatorNameLabel">
 			Ersteller:
 		</text>
 		<text name="Creator Name">
-			Esbee Linden
+			Erica Linden
 		</text>
 		<text name="Owner:">
 			Eigentümer:
@@ -55,13 +57,12 @@
 		<text name="Owner Name">
 			Erica Linden
 		</text>
-		<text name="Group:">
+		<text name="Group_label">
 			Gruppe:
 		</text>
 		<button name="button set group" tool_tip="Eine Gruppe auswählen, um die Berechtigungen des Objekts zu teilen."/>
 		<name_box initial_value="Wird geladen..." name="Group Name Proxy"/>
 		<button label="Übertragung" label_selected="Übertragung" name="button deed" tool_tip="Eine Übertragung bedeutet, dass das Objekt mit den Berechtigungen „Nächster Eigentümer“ weitergegeben wird. Mit der Gruppe geteilte Objekte können von einem Gruppen-Officer übertragen werden."/>
-		<check_box label="Teilen" name="checkbox share with group" tool_tip="Mit allen Mitgliedern der zugeordneten Gruppe, Ihre Berechtigungen dieses Objekt zu ändern teilen. Sie müssen Übereignen, um Rollenbeschränkungen zu aktivieren."/>
 		<text name="label click action">
 			Bei Linksklick:
 		</text>
@@ -72,55 +73,56 @@
 			<combo_box.item label="Objekt bezahlen" name="Payobject"/>
 			<combo_box.item label="Öffnen" name="Open"/>
 		</combo_box>
-		<check_box label="Zum Verkauf:" name="checkbox for sale"/>
-		<combo_box name="sale type">
-			<combo_box.item label="Kopieren" name="Copy"/>
-			<combo_box.item label="Inhalte" name="Contents"/>
-			<combo_box.item label="Original" name="Original"/>
-		</combo_box>
-		<spinner label="Preis: L$" name="Edit Cost"/>
-		<check_box label="In Suche anzeigen" name="search_check" tool_tip="Dieses Objekt in Suchergebnissen anzeigen"/>
-		<panel name="perms_build">
+		<panel name="perms_inv">
 			<text name="perm_modify">
 				Sie können dieses Objekt bearbeiten.
 			</text>
 			<text name="Anyone can:">
 				Jeder:
 			</text>
-			<check_box label="Bewegen" name="checkbox allow everyone move"/>
 			<check_box label="Kopieren" name="checkbox allow everyone copy"/>
-			<text name="Next owner can:">
+			<check_box label="Bewegen" name="checkbox allow everyone move"/>
+			<text name="GroupLabel">
+				Gruppe:
+			</text>
+			<check_box label="Teilen" name="checkbox share with group" tool_tip="Mit allen Mitgliedern der zugeordneten Gruppe, Ihre Berechtigungen dieses Objekt zu ändern teilen. Sie müssen Übereignen, um Rollenbeschränkungen zu aktivieren."/>
+			<text name="NextOwnerLabel">
 				Nächster Eigentümer:
 			</text>
 			<check_box label="Bearbeiten" name="checkbox next owner can modify"/>
 			<check_box label="Kopieren" name="checkbox next owner can copy"/>
 			<check_box label="Transferieren" name="checkbox next owner can transfer" tool_tip="Nächster Eigentümer kann dieses Objekt weitergeben oder -verkaufen"/>
-			<text name="B:">
-				B:
-			</text>
-			<text name="O:">
-				O:
-			</text>
-			<text name="G:">
-				G:
-			</text>
-			<text name="E:">
-				E:
-			</text>
-			<text name="N:">
-				N:
-			</text>
-			<text name="F:">
-				F:
-			</text>
 		</panel>
+		<check_box label="Zum Verkauf" name="checkbox for sale"/>
+		<combo_box name="sale type">
+			<combo_box.item label="Kopieren" name="Copy"/>
+			<combo_box.item label="Inhalte" name="Contents"/>
+			<combo_box.item label="Original" name="Original"/>
+		</combo_box>
+		<spinner label="Preis: L$" name="Edit Cost"/>
+		<check_box label="In Suche anzeigen" name="search_check" tool_tip="Dieses Objekt in Suchergebnissen anzeigen"/>
+		<text name="B:">
+			B:
+		</text>
+		<text name="O:">
+			O:
+		</text>
+		<text name="G:">
+			G:
+		</text>
+		<text name="E:">
+			E:
+		</text>
+		<text name="N:">
+			N:
+		</text>
+		<text name="F:">
+			F:
+		</text>
 	</panel>
 	<panel name="button_panel">
-		<button label="Bearbeiten" name="edit_btn"/>
 		<button label="Öffnen" name="open_btn"/>
 		<button label="Zahlen" name="pay_btn"/>
 		<button label="Kaufen" name="buy_btn"/>
-		<button label="Abbrechen" name="cancel_btn"/>
-		<button label="Speichern" name="save_btn"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
index 1488f615a32..29c07f9f660 100644
--- a/indra/newview/skins/default/xui/de/strings.xml
+++ b/indra/newview/skins/default/xui/de/strings.xml
@@ -10,6 +10,9 @@
 	<string name="APP_NAME">
 		Second Life
 	</string>
+	<string name="CAPITALIZED_APP_NAME">
+		SECOND LIFE
+	</string>
 	<string name="SECOND_LIFE_GRID">
 		Second Life-Grid:
 	</string>
@@ -49,6 +52,9 @@
 	<string name="LoginInitializingMultimedia">
 		Multimedia wird initialisiert...
 	</string>
+	<string name="LoginInitializingFonts">
+		Schriftarten werden geladen...
+	</string>
 	<string name="LoginVerifyingCache">
 		Cache-Dateien werden überprüft (dauert 60-90 Sekunden)...
 	</string>
@@ -79,6 +85,9 @@
 	<string name="LoginDownloadingClothing">
 		Kleidung wird geladen...
 	</string>
+	<string name="LoginFailedNoNetwork">
+		Netzwerk Fehler: Eine Verbindung konnte nicht hergestellt werden. Bitte überprüfen Sie Ihre Netzwerkverbindung.
+	</string>
 	<string name="Quit">
 		Beenden
 	</string>
@@ -174,7 +183,7 @@
 		Karte anzeigen für
 	</string>
 	<string name="BUTTON_CLOSE_DARWIN">
-		Schließen (&#8984;W)
+		Schließen (⌘W)
 	</string>
 	<string name="BUTTON_CLOSE_WIN">
 		Schließen (Strg+W)
@@ -191,9 +200,6 @@
 	<string name="BUTTON_DOCK">
 		Andocken
 	</string>
-	<string name="BUTTON_UNDOCK">
-		Abkoppeln
-	</string>
 	<string name="BUTTON_HELP">
 		Hilfe anzeigen
 	</string>
@@ -626,11 +632,14 @@
 	<string name="ControlYourCamera">
 		Kamerasteuerung
 	</string>
+	<string name="NotConnected">
+		Nicht verbunden
+	</string>
 	<string name="SIM_ACCESS_PG">
-		PG
+		Allgemein
 	</string>
 	<string name="SIM_ACCESS_MATURE">
-		Mature
+		Moderat
 	</string>
 	<string name="SIM_ACCESS_ADULT">
 		Adult
@@ -818,6 +827,9 @@
 	<string name="InventoryNoMatchingItems">
 		Im Inventar wurden keine passenden Artikel gefunden.
 	</string>
+	<string name="FavoritesNoMatchingItems">
+		Hier eine Landmarke hin ziehen, um diese zu Ihrem Favoriten hinzuzufügen.
+	</string>
 	<string name="InventoryNoTexture">
 		Sie haben keine Kopie dieser Textur in Ihrem Inventar.
 	</string>
@@ -1288,6 +1300,156 @@
 	<string name="RegionInfoAllowedGroups">
 		Zulässige Gruppen: ([ALLOWEDGROUPS], max [MAXACCESS])
 	</string>
+	<string name="ScriptLimitsParcelScriptMemory">
+		Parzellenskript-Speicher
+	</string>
+	<string name="ScriptLimitsParcelsOwned">
+		Aufgeführte Parzellen: [PARCELS]
+	</string>
+	<string name="ScriptLimitsMemoryUsed">
+		Verwendeter Speicher: [COUNT] KB von [MAX] KB; [AVAILABLE] KB verfügbar
+	</string>
+	<string name="ScriptLimitsMemoryUsedSimple">
+		Verwendeter Speicher: [COUNT] KB
+	</string>
+	<string name="ScriptLimitsParcelScriptURLs">
+		Parzelleskript-URLs
+	</string>
+	<string name="ScriptLimitsURLsUsed">
+		Verwendete URLs: [COUNT] von [MAX]; [AVAILABLE] verfügbar
+	</string>
+	<string name="ScriptLimitsURLsUsedSimple">
+		Verwendete URLs: [COUNT]
+	</string>
+	<string name="ScriptLimitsRequestError">
+		Fehler bei Informationsabruf
+	</string>
+	<string name="ScriptLimitsRequestWrongRegion">
+		Fehler: Skriptinformationen sind nur für Ihre aktuelle Region verfügbar
+	</string>
+	<string name="ScriptLimitsRequestWaiting">
+		Informationen werden abgerufen...
+	</string>
+	<string name="ScriptLimitsRequestDontOwnParcel">
+		Sie sind nicht berechtigt, diese Parzelle zu untersuchen.
+	</string>
+	<string name="SITTING_ON">
+		sitzt auf
+	</string>
+	<string name="ATTACH_CHEST">
+		Brust
+	</string>
+	<string name="ATTACH_HEAD">
+		Kopf
+	</string>
+	<string name="ATTACH_LSHOULDER">
+		Linke Schulter
+	</string>
+	<string name="ATTACH_RSHOULDER">
+		Rechte Schulter
+	</string>
+	<string name="ATTACH_LHAND">
+		Linke Hand
+	</string>
+	<string name="ATTACH_RHAND">
+		Rechte Hand
+	</string>
+	<string name="ATTACH_LFOOT">
+		Linker Fuß
+	</string>
+	<string name="ATTACH_RFOOT">
+		Rechter Fuß
+	</string>
+	<string name="ATTACH_BACK">
+		Hinten
+	</string>
+	<string name="ATTACH_PELVIS">
+		Becken
+	</string>
+	<string name="ATTACH_MOUTH">
+		Mund
+	</string>
+	<string name="ATTACH_CHIN">
+		Kinn
+	</string>
+	<string name="ATTACH_LEAR">
+		Linkes Ohr
+	</string>
+	<string name="ATTACH_REAR">
+		Rechtes Ohr
+	</string>
+	<string name="ATTACH_LEYE">
+		Linkes Auge
+	</string>
+	<string name="ATTACH_REYE">
+		Rechtes Auge
+	</string>
+	<string name="ATTACH_NOSE">
+		Nase
+	</string>
+	<string name="ATTACH_RUARM">
+		Rechter Oberarm
+	</string>
+	<string name="ATTACH_RLARM">
+		Rechter Unterarm
+	</string>
+	<string name="ATTACH_LUARM">
+		Linker Oberarm
+	</string>
+	<string name="ATTACH_LLARM">
+		Linker Unterarm
+	</string>
+	<string name="ATTACH_RHIP">
+		Rechte Hüfte
+	</string>
+	<string name="ATTACH_RULEG">
+		Rechter Oberschenkel
+	</string>
+	<string name="ATTACH_RLLEG">
+		Rechter Unterschenkel
+	</string>
+	<string name="ATTACH_LHIP">
+		Linke Hüfte
+	</string>
+	<string name="ATTACH_LULEG">
+		Linker Oberschenkel
+	</string>
+	<string name="ATTACH_LLLEG">
+		Linker Unterschenkel
+	</string>
+	<string name="ATTACH_BELLY">
+		Bauch
+	</string>
+	<string name="ATTACH_RPEC">
+		Rechts
+	</string>
+	<string name="ATTACH_LPEC">
+		Linke Brust
+	</string>
+	<string name="ATTACH_HUD_CENTER_2">
+		HUD Mitte 2
+	</string>
+	<string name="ATTACH_HUD_TOP_RIGHT">
+		HUD oben rechts
+	</string>
+	<string name="ATTACH_HUD_TOP_CENTER">
+		HUD oben Mitte
+	</string>
+	<string name="ATTACH_HUD_TOP_LEFT">
+		HUD oben links
+	</string>
+	<string name="ATTACH_HUD_CENTER_1">
+		HUD Mitte 1
+	</string>
+	<string name="ATTACH_HUD_BOTTOM_LEFT">
+		HUD unten links
+	</string>
+	<string name="ATTACH_HUD_BOTTOM">
+		HUD unten
+	</string>
+	<string name="ATTACH_HUD_BOTTOM_RIGHT">
+		HUD unten rechts
+	</string>
 	<string name="CursorPos">
 		Zeile [LINE], Spalte [COLUMN]
 	</string>
@@ -1338,6 +1500,12 @@
 	<string name="ClassifiedUpdateAfterPublish">
 		(wird nach Veröffentlichung aktualisiert)
 	</string>
+	<string name="NoPicksClassifiedsText">
+		Es wurde keine Auswahl getroffen/keine Anzeigen ausgewählt
+	</string>
+	<string name="PicksClassifiedsLoadingText">
+		Wird geladen...
+	</string>
 	<string name="MultiPreviewTitle">
 		Vorschau
 	</string>
@@ -1414,23 +1582,35 @@
 		Unbekanntes Dateiformat .%s
 Gültige Formate: .wav, .tga, .bmp, .jpg, .jpeg oder .bvh
 	</string>
+	<string name="MuteObject2">
+		Ignorieren
+	</string>
+	<string name="MuteAvatar">
+		Ignorieren
+	</string>
+	<string name="UnmuteObject">
+		Freischalten
+	</string>
+	<string name="UnmuteAvatar">
+		Freischalten
+	</string>
 	<string name="AddLandmarkNavBarMenu">
-		Landmarke hinzufügen...
+		Zu meinen Landmarken hinzufügen...
 	</string>
 	<string name="EditLandmarkNavBarMenu">
-		Landmarke bearbeiten...
+		Meine Landmarken bearbeiten...
 	</string>
 	<string name="accel-mac-control">
-		&#8963;
+		⌃
 	</string>
 	<string name="accel-mac-command">
-		&#8984;
+		⌘
 	</string>
 	<string name="accel-mac-option">
-		&#8997;
+		⌥
 	</string>
 	<string name="accel-mac-shift">
-		&#8679;
+		⇧
 	</string>
 	<string name="accel-win-control">
 		Strg+
@@ -1616,7 +1796,7 @@ Falls der Fehler dann weiterhin auftritt, müssen Sie [APP_NAME] von Ihrem Syste
 		Unbehebbarer Fehler
 	</string>
 	<string name="MBRequiresAltiVec">
-		 [APP_NAME] erfordert einen Prozessor mit AltiVec (G4 oder später).
+		[APP_NAME] erfordert einen Prozessor mit AltiVec (G4 oder später).
 	</string>
 	<string name="MBAlreadyRunning">
 		[APP_NAME] läuft bereits.
@@ -1628,7 +1808,7 @@ Falls diese Nachricht erneut angezeigt wird, starten Sie Ihren Computer bitte ne
 Möchten Sie einen Absturz-Bericht einschicken?
 	</string>
 	<string name="MBAlert">
-		Alarm
+		Benachrichtigung
 	</string>
 	<string name="MBNoDirectX">
 		[APP_NAME] kann DirectX 9.0b oder höher nicht feststellen.
@@ -2010,12 +2190,6 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 	<string name="Eyes Bugged">
 		Glubschaugen
 	</string>
-	<string name="Eyes Shear Left Up">
-		Augen Verzerrung links hoch
-	</string>
-	<string name="Eyes Shear Right Up">
-		Augen Verzerrung rechts hoch
-	</string>
 	<string name="Face Shear">
 		Gesichtsverzerrung
 	</string>
@@ -3018,6 +3192,27 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 	<string name="LocationCtrlComboBtnTooltip">
 		Mein Reiseverlauf
 	</string>
+	<string name="LocationCtrlForSaleTooltip">
+		Dieses Land kaufen
+	</string>
+	<string name="LocationCtrlVoiceTooltip">
+		Voice hier nicht möglich
+	</string>
+	<string name="LocationCtrlFlyTooltip">
+		Fliegen ist unzulässig
+	</string>
+	<string name="LocationCtrlPushTooltip">
+		Kein Stoßen
+	</string>
+	<string name="LocationCtrlBuildTooltip">
+		Bauen/Fallen lassen von Objekten ist verboten
+	</string>
+	<string name="LocationCtrlScriptsTooltip">
+		Skripte sind unzulässig
+	</string>
+	<string name="LocationCtrlDamageTooltip">
+		Gesundheit
+	</string>
 	<string name="UpdaterWindowTitle">
 		[APP_NAME] Aktualisierung
 	</string>
@@ -3075,6 +3270,33 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 	<string name="IM_moderator_label">
 		(Moderator)
 	</string>
+	<string name="started_call">
+		haben/hat einen Anruf initiiert
+	</string>
+	<string name="joined_call">
+		ist dem Gespräch beigetreten
+	</string>
+	<string name="ringing-im">
+		Verbindung wird hergestellt...
+	</string>
+	<string name="connected-im">
+		Verbunden. Klicken Sie auf Anruf beenden, um die Verbindung zu trennen
+	</string>
+	<string name="hang_up-im">
+		Anruf wurde beendet
+	</string>
+	<string name="answering-im">
+		Wird verbunden...
+	</string>
+	<string name="conference-title">
+		Ad-hoc-Konferenz
+	</string>
+	<string name="inventory_item_offered-im">
+		Inventarobjekt angeboten
+	</string>
+	<string name="share_alert">
+		Objekte aus dem Inventar hier her ziehen
+	</string>
 	<string name="only_user_message">
 		Sie sind der einzige Benutzer in dieser Sitzung.
 	</string>
@@ -3084,6 +3306,12 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 	<string name="invite_message">
 		Klicken Sie auf [BUTTON NAME], um eine Verbindung zu diesem Voice-Chat herzustellen.
 	</string>
+	<string name="muted_message">
+		Sie haben diesen Einwohner ignoriert. Wenn Sie eine Nachricht senden, wird dieser freigeschaltet.
+	</string>
+	<string name="generic">
+		Fehler bei Anfrage, bitte versuchen Sie es später.
+	</string>
 	<string name="generic_request_error">
 		Fehler bei Anfrage, bitte versuchen Sie es später.
 	</string>
@@ -3102,19 +3330,37 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 	<string name="not_a_mod_error">
 		Sie sind kein Sitzungsmoderator.
 	</string>
+	<string name="muted">
+		Ein Gruppenmoderator hat Ihren Text-Chat deaktiviert.
+	</string>
 	<string name="muted_error">
 		Ein Gruppenmoderator hat Ihren Text-Chat deaktiviert.
 	</string>
 	<string name="add_session_event">
 		Es konnten keine Benutzer zur Chat-Sitzung mit [RECIPIENT] hinzugefügt werden.
 	</string>
+	<string name="message">
+		Ihre Nachricht konnte nicht an die Chat-Sitzung mit [RECIPIENT] gesendet werden.
+	</string>
 	<string name="message_session_event">
 		Ihre Nachricht konnte nicht an die Chat-Sitzung mit [RECIPIENT] gesendet werden.
 	</string>
+	<string name="mute">
+		Fehler während Moderation.
+	</string>
+	<string name="removed">
+		Sie wurden von der Gruppe ausgeschlossen.
+	</string>
 	<string name="removed_from_group">
 		Sie wurden von der Gruppe ausgeschlossen.
 	</string>
 	<string name="close_on_no_ability">
 		Sie haben nicht mehr die Berechtigung an der Chat-Sitzung teilzunehmen.
 	</string>
+	<string name="unread_chat_single">
+		[SOURCES] hat etwas Neues gesagt
+	</string>
+	<string name="unread_chat_multiple">
+		[SOURCES] haben etwas Neues gesagt
+	</string>
 </strings>
-- 
GitLab


From 25ddb4f261ebedd8d4ab5b0c26bd3af24ffaef03 Mon Sep 17 00:00:00 2001
From: Eli Linden <eli@lindenlab.com>
Date: Tue, 26 Jan 2010 15:03:41 -0800
Subject: [PATCH 131/521] DEV-43688 cycle3 for JA

---
 .../default/xui/ja/floater_about_land.xml     | 130 +++---
 .../xui/ja/floater_animation_preview.xml      |   5 +-
 .../xui/ja/floater_avatar_textures.xml        |  62 +--
 .../default/xui/ja/floater_bulk_perms.xml     |   2 +-
 .../default/xui/ja/floater_buy_currency.xml   | 388 +++++++++++++++---
 .../default/xui/ja/floater_color_picker.xml   |   2 +-
 .../default/xui/ja/floater_customize.xml      |  58 ++-
 .../default/xui/ja/floater_god_tools.xml      |   2 +-
 .../default/xui/ja/floater_im_container.xml   |   2 +-
 .../default/xui/ja/floater_incoming_call.xml  |   6 +
 .../default/xui/ja/floater_lsl_guide.xml      |   2 +-
 .../default/xui/ja/floater_media_browser.xml  |   2 +-
 .../default/xui/ja/floater_outfit_save_as.xml |  11 +
 .../default/xui/ja/floater_outgoing_call.xml  |   9 +
 .../default/xui/ja/floater_preferences.xml    |   2 +-
 .../xui/ja/floater_preview_gesture.xml        |   3 +
 .../xui/ja/floater_preview_notecard.xml       |   4 +-
 .../xui/ja/floater_preview_texture.xml        |   5 +-
 .../default/xui/ja/floater_report_abuse.xml   |   6 +-
 .../default/xui/ja/floater_script_limits.xml  |   2 +
 .../skins/default/xui/ja/floater_search.xml   |   7 +
 .../default/xui/ja/floater_select_key.xml     |   6 +-
 .../default/xui/ja/floater_sell_land.xml      |   2 +-
 .../skins/default/xui/ja/floater_snapshot.xml |  18 +-
 .../skins/default/xui/ja/floater_sys_well.xml |   9 +-
 .../skins/default/xui/ja/floater_telehub.xml  |   8 +-
 .../default/xui/ja/floater_texture_ctrl.xml   |   2 +-
 .../skins/default/xui/ja/floater_tools.xml    |  13 +-
 .../default/xui/ja/floater_top_objects.xml    |  69 ++--
 .../default/xui/ja/floater_voice_controls.xml |  30 +-
 .../xui/ja/floater_whitelist_entry.xml        |   2 +-
 .../default/xui/ja/floater_window_size.xml    |  17 +
 .../default/xui/ja/floater_world_map.xml      | 129 +++---
 .../skins/default/xui/ja/inspect_avatar.xml   |  10 +-
 .../skins/default/xui/ja/inspect_group.xml    |   1 +
 .../default/xui/ja/menu_attachment_other.xml  |  17 +
 .../default/xui/ja/menu_attachment_self.xml   |  12 +
 .../skins/default/xui/ja/menu_avatar_icon.xml |   2 +-
 .../default/xui/ja/menu_avatar_other.xml      |  16 +
 .../skins/default/xui/ja/menu_avatar_self.xml |  27 ++
 .../skins/default/xui/ja/menu_bottomtray.xml  |   5 +
 .../default/xui/ja/menu_im_well_button.xml    |   4 +
 .../default/xui/ja/menu_imchiclet_adhoc.xml   |   4 +
 .../default/xui/ja/menu_imchiclet_p2p.xml     |   2 +-
 .../xui/ja/menu_inspect_avatar_gear.xml       |   1 +
 .../skins/default/xui/ja/menu_inventory.xml   |  10 +-
 .../default/xui/ja/menu_inventory_add.xml     |   2 +-
 .../xui/ja/menu_inventory_gear_default.xml    |   2 +
 .../skins/default/xui/ja/menu_land.xml        |   9 +
 .../skins/default/xui/ja/menu_login.xml       |   6 +-
 .../xui/ja/menu_notification_well_button.xml  |   4 +
 .../skins/default/xui/ja/menu_object.xml      |  25 ++
 .../default/xui/ja/menu_participant_list.xml  |  19 +-
 .../default/xui/ja/menu_people_groups.xml     |   8 +
 .../default/xui/ja/menu_people_nearby.xml     |   1 +
 .../default/xui/ja/menu_profile_overflow.xml  |   4 +
 .../skins/default/xui/ja/menu_viewer.xml      |  44 +-
 .../skins/default/xui/ja/mime_types_linux.xml | 217 ++++++++++
 .../skins/default/xui/ja/mime_types_mac.xml   | 217 ++++++++++
 .../skins/default/xui/ja/notifications.xml    | 187 ++++-----
 .../xui/ja/panel_active_object_row.xml        |   9 +
 .../xui/ja/panel_adhoc_control_panel.xml      |  16 +-
 .../default/xui/ja/panel_avatar_list_item.xml |   1 +
 .../xui/ja/panel_block_list_sidetray.xml      |   2 +-
 .../skins/default/xui/ja/panel_bottomtray.xml |  12 +-
 .../default/xui/ja/panel_classified_info.xml  |   4 +-
 .../default/xui/ja/panel_edit_classified.xml  |   4 +-
 .../default/xui/ja/panel_edit_profile.xml     |   5 +-
 .../skins/default/xui/ja/panel_friends.xml    |  59 +--
 .../xui/ja/panel_group_control_panel.xml      |  20 +-
 .../default/xui/ja/panel_group_general.xml    |   8 +-
 .../xui/ja/panel_group_info_sidetray.xml      |   2 +
 .../default/xui/ja/panel_group_invite.xml     |   7 +-
 .../default/xui/ja/panel_group_list_item.xml  |   1 +
 .../default/xui/ja/panel_group_notices.xml    |  14 +-
 .../default/xui/ja/panel_group_notify.xml     |   2 +-
 .../default/xui/ja/panel_im_control_panel.xml |  32 +-
 .../default/xui/ja/panel_landmark_info.xml    |   1 +
 .../skins/default/xui/ja/panel_login.xml      |  68 +--
 .../default/xui/ja/panel_main_inventory.xml   |   8 +-
 .../xui/ja/panel_media_settings_general.xml   |  22 +-
 .../ja/panel_media_settings_permissions.xml   |  25 +-
 .../xui/ja/panel_media_settings_security.xml  |   8 +-
 .../skins/default/xui/ja/panel_my_profile.xml |  80 ++--
 .../default/xui/ja/panel_navigation_bar.xml   |   3 +
 .../skins/default/xui/ja/panel_notes.xml      |  18 +-
 .../xui/ja/panel_outfits_inventory.xml        |  15 +-
 .../panel_outfits_inventory_gear_default.xml  |   6 +-
 .../skins/default/xui/ja/panel_people.xml     |   1 +
 .../skins/default/xui/ja/panel_picks.xml      |  12 +-
 .../default/xui/ja/panel_place_profile.xml    |   3 +-
 .../skins/default/xui/ja/panel_places.xml     |   7 +-
 .../xui/ja/panel_preferences_alerts.xml       |   4 +-
 .../default/xui/ja/panel_preferences_chat.xml |  10 +-
 .../xui/ja/panel_preferences_general.xml      |  26 +-
 .../xui/ja/panel_preferences_privacy.xml      |   6 +-
 .../xui/ja/panel_preferences_setup.xml        |   8 +-
 .../xui/ja/panel_preferences_sound.xml        |   2 +-
 .../xui/ja/panel_prim_media_controls.xml      |  52 ++-
 .../skins/default/xui/ja/panel_profile.xml    |  77 ++--
 .../default/xui/ja/panel_region_estate.xml    |   9 +-
 .../default/xui/ja/panel_region_general.xml   |   6 +-
 .../xui/ja/panel_region_general_layout.xml    |  43 ++
 .../default/xui/ja/panel_region_texture.xml   |   5 +-
 .../xui/ja/panel_script_limits_my_avatar.xml  |  13 +
 .../ja/panel_script_limits_region_memory.xml  |  24 ++
 .../skins/default/xui/ja/panel_side_tray.xml  |  11 +-
 .../skins/default/xui/ja/panel_status_bar.xml |   3 +-
 .../default/xui/ja/panel_teleport_history.xml |   4 +-
 .../xui/ja/panel_teleport_history_item.xml    |   1 +
 .../skins/default/xui/ja/role_actions.xml     | 249 +++--------
 .../default/xui/ja/sidepanel_appearance.xml   |   8 +-
 .../default/xui/ja/sidepanel_inventory.xml    |   2 +-
 .../default/xui/ja/sidepanel_item_info.xml    |  57 ++-
 .../default/xui/ja/sidepanel_task_info.xml    |  78 ++--
 .../newview/skins/default/xui/ja/strings.xml  | 286 ++++++++++++-
 116 files changed, 2248 insertions(+), 1082 deletions(-)
 create mode 100644 indra/newview/skins/default/xui/ja/floater_outfit_save_as.xml
 create mode 100644 indra/newview/skins/default/xui/ja/floater_script_limits.xml
 create mode 100644 indra/newview/skins/default/xui/ja/floater_window_size.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_attachment_other.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_attachment_self.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_avatar_other.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_avatar_self.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_im_well_button.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_land.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_notification_well_button.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_object.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_people_groups.xml
 create mode 100644 indra/newview/skins/default/xui/ja/mime_types_linux.xml
 create mode 100644 indra/newview/skins/default/xui/ja/mime_types_mac.xml
 create mode 100644 indra/newview/skins/default/xui/ja/panel_active_object_row.xml
 create mode 100644 indra/newview/skins/default/xui/ja/panel_region_general_layout.xml
 create mode 100644 indra/newview/skins/default/xui/ja/panel_script_limits_my_avatar.xml
 create mode 100644 indra/newview/skins/default/xui/ja/panel_script_limits_region_memory.xml

diff --git a/indra/newview/skins/default/xui/ja/floater_about_land.xml b/indra/newview/skins/default/xui/ja/floater_about_land.xml
index 4b134526e07..71a38391cd4 100644
--- a/indra/newview/skins/default/xui/ja/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/ja/floater_about_land.xml
@@ -36,10 +36,10 @@
 				(グループ所有)
 			</panel.string>
 			<panel.string name="profile_text">
-				プロフィール...
+				プロフィール
 			</panel.string>
 			<panel.string name="info_text">
-				情報...
+				情報
 			</panel.string>
 			<panel.string name="public_text">
 				(公共)
@@ -51,8 +51,7 @@
 				(購入審査中)
 			</panel.string>
 			<panel.string name="no_selection_text">
-				区画が選定されていません。
-「世界」メニュー>「土地情報」に進むか、別の区画を選択して、詳細を表示します。
+				区画が選択されていません。
 			</panel.string>
 			<text name="Name:">
 				名前:
@@ -79,13 +78,15 @@
 			<text name="OwnerText">
 				Leyla Linden
 			</text>
-			<button label="プロフィール..." label_selected="プロフィール..." name="Profile..."/>
 			<text name="Group:">
 				グループ:
 			</text>
-			<button label="設定..." label_selected="設定..." name="Set..."/>
+			<text name="GroupText">
+				Leyla Linden
+			</text>
+			<button label="設定" label_selected="設定..." name="Set..."/>
 			<check_box label="グループへの譲渡を許可" name="check deed" tool_tip="グループのオフィサーはこの土地をグループに譲渡できます。そうするとグループの土地割り当てによってサポートされます。"/>
-			<button label="譲渡..." label_selected="譲渡..." name="Deed..." tool_tip="選択されたグループのオフィサーであるときのみ、土地を譲渡できます。"/>
+			<button label="譲渡" label_selected="譲渡..." name="Deed..." tool_tip="選択されたグループのオフィサーであるときのみ、土地を譲渡できます。"/>
 			<check_box label="オーナーが譲渡と共に寄付" name="check contrib" tool_tip="土地がグループに譲渡されるとき、前の所有者は譲渡が成立するよう、十分な土地を寄付します。"/>
 			<text name="For Sale:">
 				販売の有無:
@@ -96,15 +97,15 @@
 			<text name="For Sale: Price L$[PRICE].">
 				価格: L$[PRICE] (L$[PRICE_PER_SQM]/平方メートル)
 			</text>
-			<button label="土地を販売..." label_selected="土地を販売..." name="Sell Land..."/>
+			<button label="土地を売る" label_selected="土地を販売..." name="Sell Land..."/>
 			<text name="For sale to">
 				販売先:[BUYER]
 			</text>
 			<text name="Sell with landowners objects in parcel.">
-				オブジェクトも販売価格に含まれます
+				オブジェクトを一緒に販売
 			</text>
 			<text name="Selling with no objects in parcel.">
-				オブジェクトは販売対象外です
+				オブジェクトは販売しない
 			</text>
 			<button label="土地販売の取り消し" label_selected="土地販売の取り消し" name="Cancel Land Sale"/>
 			<text name="Claimed:">
@@ -125,12 +126,13 @@
 			<text name="DwellText">
 				誤
 			</text>
-			<button label="土地を購入..." label_selected="土地を購入..." left="130" name="Buy Land..." width="125"/>
-			<button label="グループ用に購入..." label_selected="グループ用に購入..." name="Buy For Group..."/>
-			<button label="入場許可を購入..." label_selected="入場許可を購入..." left="130" name="Buy Pass..." tool_tip="この土地への一時的なアクセスを許可します。" width="125"/>
-			<button label="土地を放棄..." label_selected="土地を放棄..." name="Abandon Land..."/>
-			<button label="土地の返還を要求..." label_selected="土地の返還を要求..." name="Reclaim Land..."/>
-			<button label="Lindenセール..." label_selected="Lindenセール..." name="Linden Sale..." tool_tip="土地が所有されており、コンテンツが設定されている必要があります。オークションの対象になっていないことも必要条件です。"/>
+			<button label="土地の購入" label_selected="土地を購入..." left="130" name="Buy Land..." width="125"/>
+			<button label="スクリプト情報" name="Scripts..."/>
+			<button label="グループに購入" label_selected="グループ用に購入..." name="Buy For Group..."/>
+			<button label="入場許可を購入" label_selected="入場許可を購入..." left="130" name="Buy Pass..." tool_tip="この土地への一時的なアクセスを許可します。" width="125"/>
+			<button label="土地の放棄" label_selected="土地を放棄..." name="Abandon Land..."/>
+			<button label="土地を取り戻す" label_selected="土地の返還を要求..." name="Reclaim Land..."/>
+			<button label="リンデンセール" label_selected="Lindenセール..." name="Linden Sale..." tool_tip="土地が所有されており、コンテンツが設定されている必要があります。オークションの対象になっていないことも必要条件です。"/>
 		</panel>
 		<panel label="約款" name="land_covenant_panel">
 			<panel.string name="can_resell">
@@ -149,9 +151,6 @@
 			<text font="SansSerifLarge" name="estate_section_lbl">
 				不動産:
 			</text>
-			<text name="estate_name_lbl">
-				名前:
-			</text>
 			<text name="estate_name_text">
 				メインランド
 			</text>
@@ -170,11 +169,8 @@
 			<text font="SansSerifLarge" name="region_section_lbl">
 				地域:
 			</text>
-			<text name="region_name_lbl">
-				名前:
-			</text>
 			<text name="region_name_text">
-				Leyla
+				EricaVille
 			</text>
 			<text name="region_landtype_lbl">
 				種類:
@@ -213,7 +209,7 @@
 				地域オブジェクトボーナス要因: [BONUS]
 			</text>
 			<text name="Simulator primitive usage:" width="500">
-				地域全体のプリム使用状況:
+				プリム使用状況:
 			</text>
 			<text left="200" name="objects_available">
 				[MAX]の内[COUNT]([AVAILABLE]利用可能)
@@ -237,7 +233,7 @@
 				[COUNT]
 			</text>
 			<button label="表示" label_selected="表示" name="ShowOwner" right="-145"/>
-			<button label="返却..." label_selected="返却..." name="ReturnOwner..." right="-15" tool_tip="オブジェクトをオーナーに返却します"/>
+			<button label="返却" label_selected="返却..." name="ReturnOwner..." right="-15" tool_tip="オブジェクトをオーナーに返却します"/>
 			<text name="Set to group:">
 				グループに設定:
 			</text>
@@ -245,7 +241,7 @@
 				[COUNT]
 			</text>
 			<button label="表示" label_selected="表示" name="ShowGroup" right="-145"/>
-			<button label="返却..." label_selected="返却..." name="ReturnGroup..." right="-15" tool_tip="オブジェクトをオーナーに返却します"/>
+			<button label="返却" label_selected="返却..." name="ReturnGroup..." right="-15" tool_tip="オブジェクトをオーナーに返却します"/>
 			<text name="Owned by others:">
 				他人による所有:
 			</text>
@@ -253,7 +249,7 @@
 				[COUNT]
 			</text>
 			<button label="表示" label_selected="表示" name="ShowOther" right="-145"/>
-			<button label="返却..." label_selected="返却..." name="ReturnOther..." right="-15" tool_tip="オブジェクトをオーナーに返却します"/>
+			<button label="返却" label_selected="返却..." name="ReturnOther..." right="-15" tool_tip="オブジェクトをオーナーに返却します"/>
 			<text name="Selected / sat upon:">
 				選択済み/決定済み:
 			</text>
@@ -261,14 +257,14 @@
 				[COUNT]
 			</text>
 			<text name="Autoreturn" width="500">
-				他の住人のオブジェクトの自動返却(分、0で自動返却なし)
+				他人のオブジェクトを自動返却(分単位、0で自動返却なし):
 			</text>
 			<line_editor left_delta="5" name="clean other time" right="-80"/>
 			<text name="Object Owners:" width="150">
 				オブジェクトのオーナー:
 			</text>
-			<button label="リスト更新" label_selected="リスト更新" left="146" name="Refresh List"/>
-			<button label="オブジェクトの返却..." label_selected="オブジェクトの返却..." left="256" name="Return objects..."/>
+			<button label="リスト更新" label_selected="リスト更新" left="146" name="Refresh List" tool_tip="オブジェクトのリストを更新"/>
+			<button label="オブジェクトを返却する" label_selected="オブジェクトの返却..." left="256" name="Return objects..."/>
 			<name_list label="カウント" name="owner list">
 				<name_list.columns label="タイプ" name="type"/>
 				<name_list.columns name="online_status"/>
@@ -289,13 +285,13 @@
 				あなたはこの区画の設定編集ができないため、このオプションは無効です。
 			</panel.string>
 			<panel.string name="mature_check_mature">
-				Matureコンテンツ
+				控えめコンテンツ
 			</panel.string>
 			<panel.string name="mature_check_adult">
 				Adultコンテンツ
 			</panel.string>
 			<panel.string name="mature_check_mature_tooltip">
-				あなたの区画情報及びコンテンツはMatureとされています。
+				あなたの区画情報及びコンテンツは控えめとされています。
 			</panel.string>
 			<panel.string name="mature_check_adult_tooltip">
 				あなたの区画情報及びコンテンツはAdultとされています。
@@ -310,31 +306,31 @@
 				プッシングを制限 (地域優先)
 			</panel.string>
 			<text name="allow_label">
-				他の住人に以下を許可:
+				他の住人への許可:
 			</text>
 			<check_box label="地形を編集" name="edit land check" tool_tip="チェックを入れると、他人があなたの土地の地形編集を行うことが可能となります。このオプションのチェックを外しておくことをおすすめします。外した状態であなたの土地の地形編集が可能です。"/>
 			<check_box label="飛行" name="check fly" tool_tip="チェックを入れるとこの土地での飛行が可能となります。チェックを外すと土地に入る際と通り過ぎるときのみ飛行可能となります。"/>
 			<text left="138" name="allow_label2" width="144">
-				オブジェクトの作成:
+				制作:
 			</text>
-			<check_box label="すべての住人" left="280" name="edit objects check"/>
+			<check_box label="全員" left="280" name="edit objects check"/>
 			<check_box label="グループ" left="380" name="edit group objects check"/>
 			<text left="138" name="allow_label3" width="144">
 				オブジェクトの進入:
 			</text>
-			<check_box label="すべての住人" left="280" name="all object entry check"/>
+			<check_box label="全員" left="280" name="all object entry check"/>
 			<check_box label="グループ" left="380" name="group object entry check"/>
 			<text left="138" name="allow_label4" width="144">
 				スクリプトの実行:
 			</text>
-			<check_box label="すべての住人" left="280" name="check other scripts"/>
+			<check_box label="全員" left="280" name="check other scripts"/>
 			<check_box label="グループ" left="380" name="check group scripts"/>
 			<text name="land_options_label">
 				土地オプション:
 			</text>
 			<check_box label="安全(ダメージなし)" name="check safe" tool_tip="チェックを入れるとこの土地でのダメージコンバットが無効になり、「安全」に設定されます。 チェックを外すとダメージコンバットが有効になります。"/>
 			<check_box label="プッシングを制限" name="PushRestrictCheck" tool_tip="スクリプトによるプッシングを制限します。 このオプションを選択することにより、あなたの土地での破壊的行動を妨げることができます。"/>
-			<check_box label="検索に表示>(週L$30)以下の場所" name="ShowDirectoryCheck" tool_tip="検索結果でこの区画を表示させる"/>
+			<check_box label="検索に区画を表示(週 L$30)" name="ShowDirectoryCheck" tool_tip="検索結果でこの区画を表示させる"/>
 			<combo_box name="land category with adult">
 				<combo_box.item label="全カテゴリ" name="item0"/>
 				<combo_box.item label="Linden所在地" name="item1"/>
@@ -364,7 +360,7 @@
 				<combo_box.item label="ショッピング" name="item11"/>
 				<combo_box.item label="その他" name="item12"/>
 			</combo_box>
-			<check_box label="Matureコンテンツ" name="MatureCheck" tool_tip=""/>
+			<check_box label="控えめコンテンツ" name="MatureCheck" tool_tip=""/>
 			<text name="Snapshot:">
 				スナップショット:
 			</text>
@@ -389,27 +385,24 @@
 			</text>
 			<combo_box name="media type" tool_tip="URL が動画、ウェブ・ページ、その他のメディアの場合に指定します"/>
 			<text name="at URL:">
-				ホーム URL:
+				ホームページ:
 			</text>
-			<button label="設定..." label_selected="設定..." name="set_media_url"/>
+			<button label="設定" label_selected="設定..." name="set_media_url"/>
 			<text name="CurrentURL:">
-				現在の URL:
+				現在のページ:
 			</text>
-			<button label="リセット..." label_selected="リセット..." name="reset_media_url"/>
+			<button label="リセット..." label_selected="リセット..." name="reset_media_url" tool_tip="URLを更新"/>
 			<check_box label="URL を非表示" name="hide_media_url" tool_tip="このオプションをオンにすると、許可なしでこの区画情報にアクセスしているユーザーにはメディア URL が表示されません。 これは HTML タイプには使用できませんのでご注意ください。"/>
 			<text name="Description:">
 				説明:
 			</text>
 			<line_editor name="url_description" tool_tip="[再生]/[ロード]ボタンの隣に表示されるテキスト"/>
 			<text name="Media texture:">
-				テクスチ
-ャ取替:
+				テクスチャの置き換え:
 			</text>
 			<texture_picker label="" name="media texture" tool_tip="写真をクリックして選択"/>
 			<text name="replace_texture_help" width="290">
-				このテクスチャを使用するオブジェクトのプレイをクリックすると、ムービーや Web ページを表示します。
-
-テクスチャを変更するにはサムネイルを選択してください。
+				このテクスチャを使用するオブジェクトのプレイをクリックすると、ムービーや Web ページを表示します。  テクスチャを変更するにはサムネイルを選択してください。
 			</text>
 			<check_box label="スケールを自動設定" name="media_auto_scale" tool_tip="このオプションをチェックすると、この区画のコンテンツのスケールが自動的に設定されます。 動作速度と画質が少し低下することがありますが、他のテクスチャーのスケーリングや整列が必要になることはありません。"/>
 			<text name="media_size" tool_tip="レンダリングするウェブ・メディアのサイズ。デフォルトの 0 のままにします。">
@@ -425,7 +418,7 @@
 			</text>
 			<check_box label="ループ" name="media_loop" tool_tip="メディアをループ再生します。  メディアの再生が終わったら、最初から再生し直します。"/>
 		</panel>
-		<panel label="オーディオ" name="land_audio_panel">
+		<panel label="サウンド" name="land_audio_panel">
 			<text name="MusicURL:">
 				音楽 URL:
 			</text>
@@ -441,18 +434,21 @@
 			<check_box label="この区画でのボイス使用を制限" name="parcel_enable_voice_channel_parcel"/>
 		</panel>
 		<panel label="アクセス" name="land_access_panel">
+			<panel.string name="access_estate_defined">
+				(エステートに限定)
+			</panel.string>
 			<panel.string name="estate_override">
 				1つ以上のオプションが、不動産レベルで設定されています。
 			</panel.string>
 			<text name="Limit access to this parcel to:">
 				この区画にアクセス
 			</text>
-			<check_box label="パブリック・アクセスを許可" name="public_access"/>
+			<check_box label="パブリックアクセスを許可 [MATURITY]" name="public_access"/>
 			<text name="Only Allow">
-				次の住人のアクセスをブロック:
+				次の住人のアクセス禁止:
 			</text>
-			<check_box label="Linden Labに支払い情報を登録していない住人" name="limit_payment" tool_tip="支払い情報未確認の住人を排除する"/>
-			<check_box label="年齢確認を済ませていない成人の住人" name="limit_age_verified" tool_tip="年齢確認を済ませていない住人を立入禁止にします。 詳しい情報は [SUPPORT_SITE] をご覧下さい。"/>
+			<check_box label="支払情報登録済 [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="未確認の住人の立入を禁止します。"/>
+			<check_box label="年齢確認 [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="年齢確認を済ませていない住人の立入を禁止します。 詳しい情報は [SUPPORT_SITE] をご覧下さい。"/>
 			<check_box label="グループ・アクセスを許可:[GROUP]" name="GroupCheck" tool_tip="[一般]タブで、グループを選択してください。"/>
 			<check_box label="入場許可を販売:" name="PassCheck" tool_tip="この区画への一時的なアクセスを許可"/>
 			<combo_box name="pass_combo">
@@ -461,18 +457,22 @@
 			</combo_box>
 			<spinner label="価格(L$):" name="PriceSpin"/>
 			<spinner label="アクセス時間:" name="HoursSpin"/>
-			<text label="常に許可" name="AllowedText">
-				許可された住人
-			</text>
-			<name_list name="AccessList" tool_tip="([LISTED]リスト入り、[MAX]最大)"/>
-			<button label="追加..." label_selected="追加..." name="add_allowed"/>
-			<button label="削除" label_selected="削除" name="remove_allowed"/>
-			<text label="禁止" name="BanCheck">
-				禁止された住人
-			</text>
-			<name_list name="BannedList" tool_tip="([LISTED]リスト入り、[MAX]最大)"/>
-			<button label="追加..." label_selected="追加..." name="add_banned"/>
-			<button label="削除" label_selected="削除" name="remove_banned"/>
+			<panel name="Allowed_layout_panel">
+				<text label="常に許可" name="AllowedText">
+					立入を許可された住人
+				</text>
+				<name_list name="AccessList" tool_tip="(合計[LISTED] 人、最大 [MAX] 人)"/>
+				<button label="追加" name="add_allowed"/>
+				<button label="削除" label_selected="削除" name="remove_allowed"/>
+			</panel>
+			<panel name="Banned_layout_panel">
+				<text label="禁止" name="BanCheck">
+					立入禁止された住人
+				</text>
+				<name_list name="BannedList" tool_tip="(合計 [LISTED] 人、最大 [MAX] 人)"/>
+				<button label="追加" name="add_banned"/>
+				<button label="削除" label_selected="削除" name="remove_banned"/>
+			</panel>
 		</panel>
 	</tab_container>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_animation_preview.xml b/indra/newview/skins/default/xui/ja/floater_animation_preview.xml
index 9ec4bfc4e78..c355924f33a 100644
--- a/indra/newview/skins/default/xui/ja/floater_animation_preview.xml
+++ b/indra/newview/skins/default/xui/ja/floater_animation_preview.xml
@@ -170,7 +170,8 @@
 	</combo_box>
 	<spinner label="フェーズイン(秒)" name="ease_in_time" tool_tip="アニメーションのブレンドイン時間(秒)"/>
 	<spinner label="フェーズアウト(秒)" name="ease_out_time" tool_tip="アニメーションのブレンドアウト時間(秒)"/>
-	<button label="" name="play_btn" tool_tip="アニメーションの再生・一時停止"/>
+	<button label="" name="play_btn" tool_tip="アニメーションを再生する"/>
+	<button name="pause_btn" tool_tip="アニメーションを一時停止する"/>
 	<button label="" name="stop_btn" tool_tip="アニメーションの再生を停止"/>
 	<slider label="" name="playback_slider"/>
 	<text name="bad_animation_text">
@@ -178,6 +179,6 @@
  
  Poser 4からエクスポートされたBVHファイルを推奨します。
 	</text>
-	<button label="取り消し" name="cancel_btn"/>
 	<button label="アップロードL$[AMOUNT]" name="ok_btn"/>
+	<button label="取り消し" name="cancel_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml b/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml
index 4a20c58181f..a199a10823e 100644
--- a/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml
+++ b/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml
@@ -10,33 +10,37 @@
 		合成テクスチャー
 	</text>
 	<button label="テクスチャID一覧をコンソールに書き込む" label_selected="捨てる" name="Dump"/>
-	<texture_picker label="髪型" name="hair-baked"/>
-	<texture_picker label="髪" name="hair_grain"/>
-	<texture_picker label="髪のアルファ" name="hair_alpha"/>
-	<texture_picker label="é ­" name="head-baked"/>
-	<texture_picker label="メイクアップ" name="head_bodypaint"/>
-	<texture_picker label="頭部のアルファ" name="head_alpha"/>
-	<texture_picker label="頭部のタトゥー" name="head_tattoo"/>
-	<texture_picker label="ç›®" name="eyes-baked"/>
-	<texture_picker label="ç›®" name="eyes_iris"/>
-	<texture_picker label="目のアルファ" name="eyes_alpha"/>
-	<texture_picker label="上半身" name="upper-baked"/>
-	<texture_picker label="上半身のボディペイント" name="upper_bodypaint"/>
-	<texture_picker label="下着シャツ" name="upper_undershirt"/>
-	<texture_picker label="手袋" name="upper_gloves"/>
-	<texture_picker label="シャツ" name="upper_shirt"/>
-	<texture_picker label="上着" name="upper_jacket"/>
-	<texture_picker label="アルファ(上)" name="upper_alpha"/>
-	<texture_picker label="上部のタトゥー" name="upper_tattoo"/>
-	<texture_picker label="下半身" name="lower-baked"/>
-	<texture_picker label="下半身のボディペイント" name="lower_bodypaint"/>
-	<texture_picker label="下着パンツ" name="lower_underpants"/>
-	<texture_picker label="靴下" name="lower_socks"/>
-	<texture_picker label="靴" name="lower_shoes"/>
-	<texture_picker label="パンツ" name="lower_pants"/>
-	<texture_picker label="ジャケット" name="lower_jacket"/>
-	<texture_picker label="アルファ(下)" name="lower_alpha"/>
-	<texture_picker label="下部のタトゥー" name="lower_tattoo"/>
-	<texture_picker label="スカート" name="skirt-baked"/>
-	<texture_picker label="スカート" name="skirt"/>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<texture_picker label="髪" name="hair-baked"/>
+			<texture_picker label="髪" name="hair_grain"/>
+			<texture_picker label="髪のアルファ" name="hair_alpha"/>
+			<texture_picker label="é ­" name="head-baked"/>
+			<texture_picker label="メイクアップ" name="head_bodypaint"/>
+			<texture_picker label="頭部のアルファ" name="head_alpha"/>
+			<texture_picker label="頭部のタトゥー" name="head_tattoo"/>
+			<texture_picker label="ç›®" name="eyes-baked"/>
+			<texture_picker label="ç›®" name="eyes_iris"/>
+			<texture_picker label="目のアルファ" name="eyes_alpha"/>
+			<texture_picker label="上半身" name="upper-baked"/>
+			<texture_picker label="上半身のボディペイント" name="upper_bodypaint"/>
+			<texture_picker label="下着シャツ" name="upper_undershirt"/>
+			<texture_picker label="手袋" name="upper_gloves"/>
+			<texture_picker label="シャツ" name="upper_shirt"/>
+			<texture_picker label="上着" name="upper_jacket"/>
+			<texture_picker label="アルファ(上)" name="upper_alpha"/>
+			<texture_picker label="上部のタトゥー" name="upper_tattoo"/>
+			<texture_picker label="下半身" name="lower-baked"/>
+			<texture_picker label="下半身のボディペイント" name="lower_bodypaint"/>
+			<texture_picker label="下着パンツ" name="lower_underpants"/>
+			<texture_picker label="靴下" name="lower_socks"/>
+			<texture_picker label="靴" name="lower_shoes"/>
+			<texture_picker label="パンツ" name="lower_pants"/>
+			<texture_picker label="ジャケット" name="lower_jacket"/>
+			<texture_picker label="アルファ(下)" name="lower_alpha"/>
+			<texture_picker label="下部のタトゥー" name="lower_tattoo"/>
+			<texture_picker label="スカート" name="skirt-baked"/>
+			<texture_picker label="スカート" name="skirt"/>
+		</panel>
+	</scroll_container>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml b/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml
index 7afe70f4d70..fbbbd85890a 100644
--- a/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml
+++ b/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml
@@ -49,6 +49,6 @@
 	<check_box label="修正" name="next_owner_modify"/>
 	<check_box label="コピー" name="next_owner_copy"/>
 	<check_box initial_value="true" label="再販・プレゼント" name="next_owner_transfer" tool_tip="次の所有者はこのオブジェクトを他人にあげたり再販することができます"/>
-	<button label="Ok" name="apply"/>
+	<button label="OK" name="apply"/>
 	<button label="キャンセル" name="close"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_buy_currency.xml b/indra/newview/skins/default/xui/ja/floater_buy_currency.xml
index ffdcf838d3f..d202bf1b9f1 100644
--- a/indra/newview/skins/default/xui/ja/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/ja/floater_buy_currency.xml
@@ -1,66 +1,324 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="buy currency" title="L$ の購入">
-	<floater.string name="buy_currency">
-		約 [LOCALAMOUNT] で L$ [LINDENS] を購入
-	</floater.string>
-	<text name="info_need_more">
-		L$ が足りません
-	</text>
-	<text name="contacting">
-		LindeXとコンタクト中…
-	</text>
-	<text name="info_buying">
-		L$ の購入
-	</text>
-	<text name="balance_label">
-		残高
-	</text>
-	<text name="balance_amount">
-		L$ [AMT]
-	</text>
-	<text name="currency_action">
-		購入希望額
-	</text>
-	<text name="currency_label">
-		L$
-	</text>
-	<line_editor label="L$" name="currency_amt">
-		1234
-	</line_editor>
-	<text name="buying_label">
-		価格
-	</text>
-	<text name="currency_est">
-		ç´„ [LOCALAMOUNT]
-	</text>
-	<text left_delta="3" name="getting_data">
-		見積もり中...
-	</text>
-	<text name="buy_action">
-		[NAME] L$ [PRICE]
-	</text>
-	<text name="total_label">
-		新しい残高
-	</text>
-	<text name="total_amount">
-		L$ [AMT]
-	</text>
-	<text name="currency_links">
-		[http://www.secondlife.com/my/account/payment_method_management.php?lang=ja-JP payment method] | [http://www.secondlife.com/my/account/currency.php?lang=ja-JP currency] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=ja-JP exchange rate]
-	</text>
-	<text name="exchange_rate_note">
-		金額を再入力して最新換算レートを確認します。
-	</text>
-	<text name="purchase_warning_repurchase">
-		この取引を決定すると、L$ を購入します。オブジェクトは購入しません。
-	</text>
-	<text name="purchase_warning_notenough">
-		購入しようとしている L$ が不足しています。 金額を上げてください。
-	</text>
-	<button label="購入する" name="buy_btn"/>
-	<button label="取り消し" name="cancel_btn"/>
-	<text name="info_cannot_buy">
-		購入できません
-	</text>
-	<button label="Web サイトに移動" name="error_web" width="140"/>
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<floater
+ legacy_header_height="18"
+ can_minimize="false"
+ height="275"
+ layout="topleft"
+ title="BUY L$"
+ name="buy currency"
+ help_topic="buy_linden_dollars"
+ single_instance="true"
+ width="350">
+    <floater.string
+     name="buy_currency">
+        Buy L$ [LINDENS] for approx. [LOCALAMOUNT]
+    </floater.string>
+    <icon
+     height="215"
+     image_name="Linden_Dollar_Background"
+     layout="topleft"
+     left="0"
+     name="normal_background"
+     top="17"
+     width="350" />
+   <text
+     type="string"
+     length="1"
+     follows="top|left"
+     font="SansSerifHuge"
+     layout="topleft"
+     left="20"
+     height="30"
+     top="25"
+     width="300"
+     name="info_need_more">
+        You need more L$
+    </text>
+    <text
+     type="string"
+     length="1"
+     follows="top|left"
+     height="16"
+     layout="topleft"
+     top="246"
+     left="15"
+     width="300"
+     name="contacting">
+        Contacting LindeX...
+    </text>
+    <text
+     type="string"
+     length="1"
+     follows="top|left"
+     font="SansSerifHuge"
+     layout="topleft"
+     left="20"
+     height="30"
+     top="25"
+     width="200"
+     name="info_buying">
+        Buy L$
+    </text>
+    <text
+     type="string"
+     length="1"
+     follows="top|left"
+     font="SansSerifMedium"
+     height="16"
+     layout="topleft"
+     left="20"
+     name="balance_label"
+     top="65"
+     width="210">
+        I have
+    </text>
+    <text
+     type="string"
+     length="1"
+     font="SansSerifMedium"
+     follows="top|left"
+     halign="right"
+     height="16"
+     layout="topleft"
+     left="200"
+     name="balance_amount"
+     top_delta="0"
+     width="120">
+        L$ [AMT]
+    </text>
+    <text
+     type="string"
+     length="1"
+     follows="top|left"
+     font="SansSerifMedium"
+     height="16"
+     top="95"
+     layout="topleft"
+     left="20"
+     name="currency_action"
+     width="210">
+        I want to buy
+    </text>
+    <text
+     font="SansSerifMedium"
+     type="string"
+     length="1"
+     follows="left|top"
+     height="16"
+     layout="topleft"
+     top_delta="0"
+     left="217"
+     name="currency_label"
+     width="15">
+      L$
+    </text>
+    <line_editor
+     type="string"
+     halign="right"
+     font="SansSerifMedium"
+     select_on_focus="true"
+     follows="top|left"
+     top_delta="-7"
+     height="22"
+     label="L$"
+     left_pad="3"
+     name="currency_amt"
+     width="85">
+        1234
+    </line_editor>
+    <text
+     type="string"
+     font="SansSerifMedium"
+     length="1"
+     follows="top|left"
+     height="16"
+     layout="topleft"
+     left="20"
+     top="125"
+     name="buying_label"
+     width="210">
+        For the price
+    </text>
+    <text
+     type="string"
+     length="1"
+     font="SansSerifMedium"
+     text_color="EmphasisColor"
+     follows="top|left"
+     halign="right"
+     height="16"
+     top_delta="0"
+     layout="topleft"
+     left="150"
+     name="currency_est"
+     width="170">
+     approx. [LOCALAMOUNT]
+    </text>
+    <text
+     type="string"
+     font="SansSerifSmall"
+     text_color="EmphasisColor"
+     length="1"
+     follows="top|left"
+     height="16"
+     layout="topleft"
+     top="125"
+     left="170"
+     width="150"
+     halign="right"
+     name="getting_data">
+        Estimating...
+    </text>
+    <text
+     type="string"
+     font="SansSerifSmall"
+     top="145"
+     length="1"
+     follows="top|left"
+     height="16"
+     halign="right"
+     left="150"
+     width="170"
+     layout="topleft"
+     name="buy_action">
+        [NAME] L$ [PRICE]
+    </text>
+    <text
+     type="string"
+     font="SansSerifMedium"
+     length="1"
+     follows="top|left"
+     height="16"
+     layout="topleft"
+     left="20"
+     name="total_label"
+     top="165"
+     width="210">
+        My new balance will be
+    </text>
+    <text
+     type="string"
+     length="1"
+     font="SansSerifMedium"
+     follows="top|left"
+     top_delta="0"
+     height="16"
+     layout="topleft"
+     left="200"
+     halign="right"
+     name="total_amount"
+     width="120">
+        L$ [AMT]
+    </text>
+    <text
+     type="string"
+     length="1"
+     text_color="0.7 0.7 0.7 0.5"
+     follows="top|left"
+     layout="topleft"
+     halign="right"
+     top="189"
+     left="20"
+     width="300"
+     height="30"
+     name="currency_links">
+      [http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency] | [http://www.secondlife.com/my/account/exchange_rates.php exchange rate]
+    </text>
+    <text
+     type="string"
+     length="1"
+     text_color="0.7 0.7 0.7 0.5"
+     follows="top|left"
+     layout="topleft"
+     halign="right"
+     top="202"
+     left="20"
+     width="300"
+     height="30"
+     name="exchange_rate_note">
+Re-enter amount to see the latest exchange rate.
+    </text>
+    <text
+     type="string"
+     length="1"
+     text_color="0.7 0.7 0.7 0.5"
+     follows="top|left"
+     layout="topleft"
+     halign="right"
+     top="213"
+     left="10"
+     width="310"
+     height="30"
+     name="purchase_warning_repurchase">
+        Confirming this purchase only buys L$, not the object.
+    </text>
+    <text
+     type="string"
+     length="1"
+     text_color="0.7 0.7 0.7 0.5"
+     follows="top|left"
+     layout="topleft"
+     halign="right"
+     top="213"
+     left="20"
+     width="300"
+     height="30"
+     name="purchase_warning_notenough">
+        You aren&apos;t buying enough L$. Please increase the amount.
+    </text>
+
+    <button
+     follows="bottom|left"
+     height="20"
+     label="Buy Now"
+     layout="topleft"
+     left="151"
+     name="buy_btn"
+     top="242"
+     width="90"/>
+    <button
+     follows="bottom|right"
+     height="20"
+     label="Cancel"
+     layout="topleft"
+     left_pad="10"
+     name="cancel_btn"
+     width="90"/>
+    <icon
+     height="215"
+     image_name="Linden_Dollar_Alert"
+     layout="topleft"
+     left="0"
+     name="error_background"
+     top="15"
+     width="350"/>
+    <text
+     type="string"
+     font="SansSerifHuge"
+     left="165"
+     width="170"
+     height="25"
+     top="25"
+     name="info_cannot_buy">
+        Unable to Buy
+    </text>
+     <text
+      type="string"
+      width="175"
+      height="125"
+      top="60"
+      left="165"
+      word_wrap="true"
+      follows="bottom|right"
+      name="cannot_buy_message">
+     </text>
+     <button
+      follows="bottom|left"
+      height="20"
+      label="Continue to the Web"
+      layout="topleft"
+      left="170"
+      name="error_web"
+      top="200"
+      width="160"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_color_picker.xml b/indra/newview/skins/default/xui/ja/floater_color_picker.xml
index f6739d59e8a..a98da4b8bae 100644
--- a/indra/newview/skins/default/xui/ja/floater_color_picker.xml
+++ b/indra/newview/skins/default/xui/ja/floater_color_picker.xml
@@ -21,7 +21,7 @@
 	<check_box label="今すぐ適用" name="apply_immediate"/>
 	<button label="" label_selected="" name="color_pipette"/>
 	<button label="取り消し" label_selected="取り消し" name="cancel_btn"/>
-	<button label="Ok" label_selected="Ok" name="select_btn"/>
+	<button label="OK" label_selected="OK" name="select_btn"/>
 	<text name="Current color:">
 		現在の色:
 	</text>
diff --git a/indra/newview/skins/default/xui/ja/floater_customize.xml b/indra/newview/skins/default/xui/ja/floater_customize.xml
index 61423fcf05b..7d1809f1ed2 100644
--- a/indra/newview/skins/default/xui/ja/floater_customize.xml
+++ b/indra/newview/skins/default/xui/ja/floater_customize.xml
@@ -1,7 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="floater customize" title="容姿">
 	<tab_container name="customize tab container">
-		<placeholder label="身体部位" name="body_parts_placeholder"/>
+		<text label="身体部位" name="body_parts_placeholder">
+			身体部位
+		</text>
 		<panel label="シェイプ" name="Shape">
 			<button label="戻す" label_selected="戻す" name="Revert"/>
 			<button label="身体" label_selected="身体" name="Body"/>
@@ -14,8 +16,8 @@
 			<button label="胴体" label_selected="胴体" name="Torso"/>
 			<button label="両脚" label_selected="両脚" name="Legs"/>
 			<radio_group name="sex radio">
-				<radio_item label="女性" name="radio"/>
-				<radio_item label="男性" name="radio2"/>
+				<radio_item label="女性" name="radio" value="0"/>
+				<radio_item label="男性" name="radio2" value="1"/>
 			</radio_group>
 			<text name="title">
 				[DESC]
@@ -33,8 +35,7 @@
 				[PATH] に所在
 			</text>
 			<text name="not worn instructions">
-				新しいシェイプ(体型)を持ち物からアバターにドラッグして装着しま
-しょう。完全に新規の状態から作成して装着することもできます。
+				持ち物からあなたのアバターに1つドラッグして、新しいシェイプをつけます。 代わりに、はじめから新しく作成して着用することもできます。
 			</text>
 			<text name="no modify instructions">
 				あなたはこの服の修正を許されていません。
@@ -67,8 +68,7 @@
 				[PATH] に所在
 			</text>
 			<text name="not worn instructions">
-				新しいスキンを持ち物からアバターにドラッグして装着しましょう。
- 				完全に新規の状態から作成して装着することもできます。
+				持ち物からあなたのアバターに1つドラッグして、新しいスキンをつけます。 代わりに、はじめから新しく作成して着用することもできます。
 			</text>
 			<text name="no modify instructions">
 				あなたはこの服の修正を許されていません。
@@ -105,8 +105,7 @@
 				[PATH] に所在
 			</text>
 			<text name="not worn instructions">
-				新しい髪型を持ち物からアバターにドラッグして装着しましょう。
- 完全に新規の状態から作成して装着することもできます。
+				持ち物からあなたのアバターに1つドラッグして、新しい髪をつけます。 代わりに、はじめから新しく作成して着用することもできます。
 			</text>
 			<text name="no modify instructions">
 				あなたはこの服の修正を許されていません。
@@ -137,8 +136,7 @@
 				[PATH] に所在
 			</text>
 			<text name="not worn instructions">
-				新しい眼を持ち物からアバターにドラッグして装着しましょう。
- 完全に新規の状態から作成して装着することもできます。
+				あなたの持ち物からアバターにドラッグして、新しい目をつけます。 代わりに、はじめから新しく作成して着用することもできます。
 			</text>
 			<text name="no modify instructions">
 				あなたはこの服の修正を許されていません。
@@ -152,7 +150,9 @@
 			<button label="別名で保存..." label_selected="別名で保存..." name="Save As"/>
 			<button label="戻す" label_selected="戻す" name="Revert"/>
 		</panel>
-		<placeholder label="服" name="clothes_placeholder"/>
+		<text label="服" name="clothes_placeholder">
+			衣類
+		</text>
 		<panel label="シャツ" name="Shirt">
 			<texture_picker label="生地" name="Fabric" tool_tip="写真をクリックして選択"/>
 			<color_swatch label="色/明暗" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/>
@@ -177,8 +177,7 @@
 				[PATH] に所在
 			</text>
 			<text name="not worn instructions">
-				新しいシャツを持ち物からアバターにドラッグして装着しましょう。
- 完全に新規の状態から作成して装着することもできます。
+				持ち物からあなたのアバターに1つドラッグして、新しいシャツを着ます。 代わりに、はじめから新しく作成して着用することもできます。
 			</text>
 			<text name="no modify instructions">
 				あなたはこの服の修正を許されていません。
@@ -211,8 +210,7 @@
 				[PATH] に所在
 			</text>
 			<text name="not worn instructions">
-				新しいズボンを持ち物からアバターにドラッグして装着しましょう。
- 完全に新規の状態から作成して装着することもできます。
+				あなたの持ち物からアバターにドラッグして、新しいパンツを履きます。 代わりに、はじめから新しく作成して着用することもできます。
 			</text>
 			<text name="no modify instructions">
 				あなたはこの服の修正を許されていません。
@@ -238,8 +236,7 @@
 				[PATH] に所在
 			</text>
 			<text name="not worn instructions">
-				新しい靴を持ち物からアバターにドラッグして装着しましょう。
- 完全に新規の状態から作成して装着することもできます。
+				あなたの持ち物からアバターにドラッグして、新しい靴を履きます。 代わりに、はじめから新しく作成して着用することもできます。
 			</text>
 			<text name="no modify instructions">
 				あなたはこの服の修正を許されていません。
@@ -272,8 +269,7 @@
 				[PATH] に所在
 			</text>
 			<text name="not worn instructions">
-				新しい靴下を持ち物からアバターにドラッグして装着しましょう。
- 完全に新規の状態から作成して装着することもできます。
+				あなたの持ち物からアバターにドラッグして、新しい靴下を履きます。 代わりに、はじめから新しく作成して着用することもできます。
 			</text>
 			<text name="no modify instructions">
 				あなたはこの服の修正を許されていません。
@@ -306,8 +302,7 @@
 				[PATH] に所在
 			</text>
 			<text name="not worn instructions">
-				新しい上着を持ち物からアバターにドラッグして装着しましょう。
- 完全に新規の状態から作成して装着することもできます。
+				持ち物からあなたのアバターに1つドラッグして、新しいジャケットを着ます。 代わりに、はじめから新しく作成して着用することもできます。
 			</text>
 			<text name="no modify instructions">
 				あなたはこの服の修正を許されていません。
@@ -341,8 +336,7 @@
 				[PATH] に所在
 			</text>
 			<text name="not worn instructions">
-				新しい手袋を持ち物からアバターにドラッグして装着しましょう。
- 完全に新規の状態から作成して装着することもできます。
+				あなたの持ち物からアバターにドラッグして、新しい手袋をつけます。 代わりに、はじめから新しく作成して着用することもできます。
 			</text>
 			<text name="no modify instructions">
 				あなたはこの服の修正を許されていません。
@@ -375,8 +369,7 @@
 				[PATH] に所在
 			</text>
 			<text name="not worn instructions">
-				新しい下着を持ち物からアバターにドラッグして装着しましょう。
- 完全に新規の状態から作成して装着することもできます。
+				持ち物からあなたのアバターに1つドラッグして、新しい下着(上)を着ます。 代わりに、はじめから新しく作成して着用することもできます。
 			</text>
 			<text name="no modify instructions">
 				あなたはこの服の修正を許されていません。
@@ -409,8 +402,7 @@
 				[PATH] に所在
 			</text>
 			<text name="not worn instructions">
-				新しいパンツを持ち物からアバターにドラッグして装着しましょう。
- 完全に新規の状態から作成して装着することもできます。
+				あなたの持ち物からアバターにドラッグして、新しい下着(下)を履きます。 代わりに、はじめから新しく作成して着用することもできます。
 			</text>
 			<text name="no modify instructions">
 				あなたはこの服の修正を許されていません。
@@ -443,8 +435,7 @@
 				[PATH] に所在
 			</text>
 			<text name="not worn instructions">
-				新しいスカートを持物からアバターにドラッグして装着しましょう。
- 完全に新規の状態から作成して装着することもできます。
+				持ち物からあなたのアバターに1つドラッグして、新しいスカートを履きます。 代わりに、はじめから新しく作成して着用することもできます。
 			</text>
 			<text name="no modify instructions">
 				あなたはこの服の修正を許されていません。
@@ -477,8 +468,7 @@
 				参照 [PATH]
 			</text>
 			<text name="not worn instructions">
-				あなたの持ち物からアバターにドラッグして、新しいアルファマスクをつけます。
-代わりに、はじめから新しく作成して着用できます。
+				あなたの持ち物からアバターにドラッグして、新しいアルファマスクをつけます。 代わりに、はじめから新しく作成して着用することもできます。
 			</text>
 			<text name="no modify instructions">
 				この着用物を修正する権限がありません。
@@ -514,8 +504,7 @@
 				参照 [PATH]
 			</text>
 			<text name="not worn instructions">
-				あなたの持ち物からアバターにドラッグして、新しいタトゥをつけます。
-代わりに、はじめから新しく作成して着用できます。
+				あなたの持ち物からアバターにドラッグして、新しいタトゥをつけます。 代わりに、はじめから新しく作成して着用することもできます。
 			</text>
 			<text name="no modify instructions">
 				この着用物を修正する権限がありません。
@@ -533,6 +522,7 @@
 			<button label="元に戻す" label_selected="元に戻す" name="Revert"/>
 		</panel>
 	</tab_container>
+	<button label="スクリプト情報" label_selected="スクリプト情報" name="script_info"/>
 	<button label="アウトフィット作成" label_selected="アウトフィット作成" name="make_outfit_btn"/>
 	<button label="キャンセル" label_selected="キャンセル" name="Cancel"/>
 	<button label="OK" label_selected="OK" name="Ok"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_god_tools.xml b/indra/newview/skins/default/xui/ja/floater_god_tools.xml
index 25de45c0944..18380bddc25 100644
--- a/indra/newview/skins/default/xui/ja/floater_god_tools.xml
+++ b/indra/newview/skins/default/xui/ja/floater_god_tools.xml
@@ -11,7 +11,7 @@
 			</text>
 			<check_box label="準備" name="check prelude" tool_tip="この設定により、この地域の準備をします。"/>
 			<check_box label="太陽固定" name="check fixed sun" tool_tip="太陽位置を固定([地域/不動産]>[地形]の場合と同様)"/>
-			<check_box label="テレポートのホームをリセット" name="check reset home" tool_tip="住人がテレポートで去ったとき、彼らのホームを目的地にリセットする。"/>
+			<check_box label="テレポートのホームをリセット" name="check reset home" tool_tip="住人がテレポートで外に出たら、ホームを目的地にリセットします。"/>
 			<check_box label="可視" name="check visible" tool_tip="この設定により、この地域をゴッド・モード以外でも可視にします。"/>
 			<check_box label="ダメージ" name="check damage" tool_tip="この設定により、この地域内でダメージを有効化します。"/>
 			<check_box label="トラフィック・トラッキングをブロック" name="block dwell" tool_tip="この設定により、この地域内のトラフィック計算をオフにします。"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_im_container.xml b/indra/newview/skins/default/xui/ja/floater_im_container.xml
index 24cef14ee00..1d028258ecc 100644
--- a/indra/newview/skins/default/xui/ja/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/ja/floater_im_container.xml
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="インスタントメッセージ"/>
+<multi_floater name="floater_im_box" title="換算"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_incoming_call.xml b/indra/newview/skins/default/xui/ja/floater_incoming_call.xml
index 32793faa6d6..04013799ec1 100644
--- a/indra/newview/skins/default/xui/ja/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/ja/floater_incoming_call.xml
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="incoming call" title="不明のユーザーからのコール">
+	<floater.string name="lifetime">
+		5
+	</floater.string>
 	<floater.string name="localchat">
 		近くのボイスチャット
 	</floater.string>
@@ -12,6 +15,9 @@
 	<floater.string name="VoiceInviteAdHoc">
 		がコンファレンスチャットで、ボイスチャットに参加しました。
 	</floater.string>
+	<floater.string name="VoiceInviteGroup">
+		は [GROUP]. のボイスチャットコールに参加しました。
+	</floater.string>
 	<text name="question">
 		[CURRENT_CHAT] を退席して、このボイスチャットに参加しますか?
 	</text>
diff --git a/indra/newview/skins/default/xui/ja/floater_lsl_guide.xml b/indra/newview/skins/default/xui/ja/floater_lsl_guide.xml
index 2af693be648..5773752788a 100644
--- a/indra/newview/skins/default/xui/ja/floater_lsl_guide.xml
+++ b/indra/newview/skins/default/xui/ja/floater_lsl_guide.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="script ed float" title="LSL WIKI">
+<floater name="script ed float" title="LSL レファレンス">
 	<check_box label="カーソルを追う" name="lock_check"/>
 	<combo_box label="ロック" name="history_combo"/>
 	<button label="戻る" name="back_btn"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_media_browser.xml b/indra/newview/skins/default/xui/ja/floater_media_browser.xml
index 5a6f2121f81..4f67523eec9 100644
--- a/indra/newview/skins/default/xui/ja/floater_media_browser.xml
+++ b/indra/newview/skins/default/xui/ja/floater_media_browser.xml
@@ -19,7 +19,7 @@
 			<button label="早送り" name="seek"/>
 		</layout_panel>
 		<layout_panel name="parcel_owner_controls">
-			<button label="現在の URL を区画に送信" name="assign"/>
+			<button label="現在のページを区画に送る" name="assign"/>
 		</layout_panel>
 		<layout_panel name="external_controls">
 			<button label="外部ウェブ・ブラウザで開く" name="open_browser"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/ja/floater_outfit_save_as.xml
new file mode 100644
index 00000000000..a869b106cee
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_outfit_save_as.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="modal container">
+	<button label="保存" label_selected="保存" name="Save"/>
+	<button label="キャンセル" label_selected="キャンセル" name="Cancel"/>
+	<text name="Save item as:">
+		アウトフィットを別名で保存:
+	</text>
+	<line_editor name="name ed">
+		[DESC]
+	</line_editor>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_outgoing_call.xml b/indra/newview/skins/default/xui/ja/floater_outgoing_call.xml
index 416d1045866..8d67108b77a 100644
--- a/indra/newview/skins/default/xui/ja/floater_outgoing_call.xml
+++ b/indra/newview/skins/default/xui/ja/floater_outgoing_call.xml
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="outgoing call" title="コール中">
+	<floater.string name="lifetime">
+		5
+	</floater.string>
 	<floater.string name="localchat">
 		近くのボイスチャット
 	</floater.string>
@@ -21,6 +24,12 @@
 	<text name="noanswer">
 		繋がりませんでした。  あとでもう一度お試しください。
 	</text>
+	<text name="nearby">
+		[VOICE_CHANNEL_NAME] への接続が切れました。  「近くのボイスチャット」に再接続されます。
+	</text>
+	<text name="nearby_P2P">
+		[VOICE_CHANNEL_NAME] がコールを終了しました。  「近くのボイスチャット」に再接続されます。
+	</text>
 	<text name="leaving">
 		[CURRENT_CHAT] を終了します。
 	</text>
diff --git a/indra/newview/skins/default/xui/ja/floater_preferences.xml b/indra/newview/skins/default/xui/ja/floater_preferences.xml
index 7c9a8b61bd1..1493219b833 100644
--- a/indra/newview/skins/default/xui/ja/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preferences.xml
@@ -8,7 +8,7 @@
 		<panel label="プライバシー" name="im"/>
 		<panel label="サウンド" name="audio"/>
 		<panel label="チャット" name="chat"/>
-		<panel label="警告" name="msgs"/>
+		<panel label="通知" name="msgs"/>
 		<panel label="セットアップ" name="input"/>
 		<panel label="詳細" name="advanced1"/>
 	</tab_container>
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml b/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml
index 4b4df983488..a378700d155 100644
--- a/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml
@@ -24,6 +24,9 @@
 	<floater.string name="Title">
 		ジェスチャー: [NAME]
 	</floater.string>
+	<text name="name_text">
+		名前:
+	</text>
 	<text name="desc_label">
 		説明:
 	</text>
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_notecard.xml b/indra/newview/skins/default/xui/ja/floater_preview_notecard.xml
index 0ab1efd127d..6e6e04c7d82 100644
--- a/indra/newview/skins/default/xui/ja/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preview_notecard.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview notecard" title="メモ:">
+<floater name="preview notecard" title="ノートカード:">
 	<floater.string name="no_object">
-		このノートを含んだオブジェクトが見つかりません。
+		このノートカードが含まれたオブジェクトが見つかりません。
 	</floater.string>
 	<floater.string name="not_allowed">
 		このノートを見る権限がありません。
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_texture.xml b/indra/newview/skins/default/xui/ja/floater_preview_texture.xml
index 3313ae84b93..c3225381274 100644
--- a/indra/newview/skins/default/xui/ja/floater_preview_texture.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preview_texture.xml
@@ -9,8 +9,6 @@
 	<text name="desc txt">
 		説明:
 	</text>
-	<button label="OK" name="Keep"/>
-	<button label="キャンセル" name="Discard"/>
 	<text name="dimensions">
 		[WIDTH]px x [HEIGHT]px
 	</text>
@@ -43,4 +41,7 @@
 			2:1
 		</combo_item>
 	</combo_box>
+	<button label="OK" name="Keep"/>
+	<button label="キャンセル" name="Discard"/>
+	<button label="別名で保存" name="save_tex_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_report_abuse.xml b/indra/newview/skins/default/xui/ja/floater_report_abuse.xml
index 599cd5d98d8..ca6faf59c20 100644
--- a/indra/newview/skins/default/xui/ja/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/ja/floater_report_abuse.xml
@@ -41,8 +41,8 @@
 	<combo_box name="category_combo" tool_tip="カテゴリー -- この報告に最も適したカテゴリーを選択してください">
 		<combo_box.item label="カテゴリーを選択" name="Select_category"/>
 		<combo_box.item label="年齢>年齢偽証" name="Age__Age_play"/>
-		<combo_box.item label="年齢>成人の住人がTeen Second Life上にいる" name="Age__Adult_resident_on_Teen_Second_Life"/>
-		<combo_box.item label="年齢>未成年な住人がTeen Second Lifeの外にいる" name="Age__Underage_resident_outside_of_Teen_Second_Life"/>
+		<combo_box.item label="年齢 &gt; 成人の住人が Teen Second Life にいる" name="Age__Adult_resident_on_Teen_Second_Life"/>
+		<combo_box.item label="年齢 &gt; 未成年の住人がTeen Second Life の外にいる" name="Age__Underage_resident_outside_of_Teen_Second_Life"/>
 		<combo_box.item label="攻撃>コンバット・サンドボックス/危険なエリア" name="Assault__Combat_sandbox___unsafe_area"/>
 		<combo_box.item label="攻撃>安全なエリア" name="Assault__Safe_area"/>
 		<combo_box.item label="攻撃>武器テスト用サンドボックス" name="Assault__Weapons_testing_sandbox"/>
@@ -68,7 +68,7 @@
 		<combo_box.item label="わいせつ>著しく不快であると見なされるコンテンツまたは行為" name="Indecency__Broadly_offensive_content_or_conduct"/>
 		<combo_box.item label="わいせつ>不適切なアバター名" name="Indecency__Inappropriate_avatar_name"/>
 		<combo_box.item label="わいせつ>PG地域での不適切なコンテンツまたは行為" name="Indecency__Mature_content_in_PG_region"/>
-		<combo_box.item label="わいせつ>Mature地域での不適切なコンテンツまたは行為" name="Indecency__Inappropriate_content_in_Mature_region"/>
+		<combo_box.item label="わいせつ &gt; 控えめ指定の地域での不適切なコンテンツまたは行為" name="Indecency__Inappropriate_content_in_Mature_region"/>
 		<combo_box.item label="知的財産の侵害>コンテンツの撤去" name="Intellectual_property_infringement_Content_Removal"/>
 		<combo_box.item label="知的財産の侵害>コピーBot及び権限の悪用" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/>
 		<combo_box.item label="不寛容" name="Intolerance"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_script_limits.xml b/indra/newview/skins/default/xui/ja/floater_script_limits.xml
new file mode 100644
index 00000000000..7ccd858af77
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_script_limits.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="scriptlimits" title="スクリプト情報"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_search.xml b/indra/newview/skins/default/xui/ja/floater_search.xml
index 9d65e840727..289098a3435 100644
--- a/indra/newview/skins/default/xui/ja/floater_search.xml
+++ b/indra/newview/skins/default/xui/ja/floater_search.xml
@@ -6,4 +6,11 @@
 	<floater.string name="done_text">
 		完了
 	</floater.string>
+	<layout_stack name="stack1">
+		<layout_panel name="browser_layout">
+			<text name="refresh_search">
+				現在のゴッドレベルに反映させるため検索をやり直してください
+			</text>
+		</layout_panel>
+	</layout_stack>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_select_key.xml b/indra/newview/skins/default/xui/ja/floater_select_key.xml
index 09c98add471..d41be868738 100644
--- a/indra/newview/skins/default/xui/ja/floater_select_key.xml
+++ b/indra/newview/skins/default/xui/ja/floater_select_key.xml
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="modal container">
-	<button label="キャンセル" label_selected="キャンセル" name="Cancel" />
+	<button label="キャンセル" label_selected="キャンセル" name="Cancel"/>
 	<text name="Save item as:">
-		キーを押して選択
+		キーを押してスピーカーボタンのトリガーを設定します。
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_sell_land.xml b/indra/newview/skins/default/xui/ja/floater_sell_land.xml
index 951499d0e37..b06b16bbb33 100644
--- a/indra/newview/skins/default/xui/ja/floater_sell_land.xml
+++ b/indra/newview/skins/default/xui/ja/floater_sell_land.xml
@@ -39,7 +39,7 @@
 				販売先の指定なしか、特定の人に販売するか選択してください。
 			</text>
 			<combo_box name="sell_to">
-				<combo_box.item label="-- 1つ選択 --" name="--selectone--"/>
+				<combo_box.item label="- 1つ選択 -" name="--selectone--"/>
 				<combo_box.item label="指定なし・誰にでも販売" name="Anyone"/>
 				<combo_box.item label="特定の人:" name="Specificuser:"/>
 			</combo_box>
diff --git a/indra/newview/skins/default/xui/ja/floater_snapshot.xml b/indra/newview/skins/default/xui/ja/floater_snapshot.xml
index 22f21b0b167..6c84de9b194 100644
--- a/indra/newview/skins/default/xui/ja/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/ja/floater_snapshot.xml
@@ -4,12 +4,12 @@
 		スナップショットの送り先
 	</text>
 	<radio_group label="スナップショット・タイプ" name="snapshot_type_radio">
-		<radio_item label="Eメールで送信" name="postcard"/>
-		<radio_item label="持ち物に保存(L$[AMOUNT])" name="texture"/>
-		<radio_item label="ハードディスクに保存" name="local"/>
+		<radio_item label="メール" name="postcard"/>
+		<radio_item label="私の持ち物(L$[AMOUNT])" name="texture"/>
+		<radio_item label="コンピューターに保存" name="local"/>
 	</radio_group>
 	<text name="file_size_label">
-		ファイル・サイズ: [SIZE] KB
+		[SIZE] KB
 	</text>
 	<button label="スナップショットを更新" name="new_snapshot_btn"/>
 	<button label="送信" name="send_btn"/>
@@ -19,8 +19,8 @@
 		<flyout_button.item label="名前を付けて保存" name="saveas_item"/>
 	</flyout_button>
 	<button label="キャンセル" name="discard_btn"/>
-	<button label="全表示 &gt;&gt;" name="more_btn" tool_tip="詳しい設定"/>
-	<button label="&lt;&lt; 簡易" name="less_btn" tool_tip="詳しい設定"/>
+	<button label="全表示" name="more_btn" tool_tip="詳しい設定"/>
+	<button label="簡易" name="less_btn" tool_tip="詳しい設定"/>
 	<text name="type_label2">
 		サイズ
 	</text>
@@ -68,10 +68,10 @@
 		<combo_box.item label="深さ" name="Depth"/>
 		<combo_box.item label="オグジェクトのつや消し" name="ObjectMattes"/>
 	</combo_box>
-	<check_box label="インタフェースを表示" name="ui_check"/>
-	<check_box label="HUD オブジェクトを表示" name="hud_check"/>
+	<check_box label="インターフェース" name="ui_check"/>
+	<check_box label="HUD" name="hud_check"/>
 	<check_box label="保存後も開いた状態を保持" name="keep_open_check"/>
-	<check_box label="画面全体を静止させる" name="freeze_frame_check"/>
+	<check_box label="画面全体を静止" name="freeze_frame_check"/>
 	<check_box label="自動更新" name="auto_snapshot_check"/>
 	<string name="unknown">
 		未知
diff --git a/indra/newview/skins/default/xui/ja/floater_sys_well.xml b/indra/newview/skins/default/xui/ja/floater_sys_well.xml
index 91e29fd595a..a7c0a2b391e 100644
--- a/indra/newview/skins/default/xui/ja/floater_sys_well.xml
+++ b/indra/newview/skins/default/xui/ja/floater_sys_well.xml
@@ -1,2 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="notification_chiclet" title="通知"/>
+<floater name="notification_chiclet" title="通知">
+	<string name="title_im_well_window">
+		IMセッション
+	</string>
+	<string name="title_notification_well_window">
+		通知
+	</string>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_telehub.xml b/indra/newview/skins/default/xui/ja/floater_telehub.xml
index fea497b6226..bdb92c8e305 100644
--- a/indra/newview/skins/default/xui/ja/floater_telehub.xml
+++ b/indra/newview/skins/default/xui/ja/floater_telehub.xml
@@ -20,9 +20,9 @@
 	<button label="出現位置を追加" name="add_spawn_point_btn"/>
 	<button label="出現地点を削除" name="remove_spawn_point_btn"/>
 	<text name="spawn_point_help">
-		物体を選択し「追加」をクリックし位置を指定。
-物体を移動または削除できる。
-位置はテレハブ・センターが基準の相対位置。
-リスト内品目を選択しワールド内位置を示す。
+		オブジェクトを選び、「出現地点を追加」をクリックして位置を指定します。
+そうするとそのオブジェクトを移動させたり削除できます。
+位置はテレハブセンターに関連します。
+リストのアイテムを選択してインワールドでハイライトさせます。
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml
index c93f3156286..1500808e60e 100644
--- a/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml
@@ -17,7 +17,7 @@
 	<check_box label="今すぐ適用" name="apply_immediate_check"/>
 	<button label="" label_selected="" name="Pipette"/>
 	<button label="取り消し" label_selected="取り消し" name="Cancel"/>
-	<button label="Ok" label_selected="Ok" name="Select"/>
+	<button label="OK" label_selected="OK" name="Select"/>
 	<text name="pick title">
 		ピック:
 	</text>
diff --git a/indra/newview/skins/default/xui/ja/floater_tools.xml b/indra/newview/skins/default/xui/ja/floater_tools.xml
index cbb062dea35..52d3537d9a3 100644
--- a/indra/newview/skins/default/xui/ja/floater_tools.xml
+++ b/indra/newview/skins/default/xui/ja/floater_tools.xml
@@ -451,12 +451,12 @@
 			<spinner label="垂直(V)" name="TexOffsetV"/>
 			<panel name="Add_Media">
 				<text name="media_tex">
-					メディア URL
+					メディア
 				</text>
 				<button name="add_media" tool_tip="メディアを追加"/>
 				<button name="delete_media" tool_tip="このメディアテクスチャを削除"/>
 				<button name="edit_media" tool_tip="このメディアを編集"/>
-				<button label="揃える" label_selected="メディアを一列に揃える" name="button align"/>
+				<button label="揃える" label_selected="メディアを一列に揃える" name="button align" tool_tip="メディアテクスチャを一列に揃える(最初に読み込む必要があります)"/>
 			</panel>
 		</panel>
 		<panel label="中身" name="Contents">
@@ -475,14 +475,7 @@
 			面積: [AREA] 平方メートル
 		</text>
 		<button label="土地情報" label_selected="土地情報" name="button about land"/>
-		<check_box label="オーナーを表示" name="checkbox show owners" tool_tip="所有者の種類別に区画を色づけ: 
-
-緑 = あなたの土地 
-アクア = あなたのグループ所有地 
-赤 = 他人が所有する土地 
-黄色 = 売り出し中 
-紫 = オークション 
-グレー = パブリック"/>
+		<check_box label="オーナーを表示" name="checkbox show owners" tool_tip="所有者の種類別に区画を色づけ:   緑 = あなたの土地  アクア = あなたのグループ所有地  赤 = 他人が所有する土地  黄色 = 売り出し中  紫 = オークション  グレー = パブリック"/>
 		<text name="label_parcel_modify">
 			区画の編集
 		</text>
diff --git a/indra/newview/skins/default/xui/ja/floater_top_objects.xml b/indra/newview/skins/default/xui/ja/floater_top_objects.xml
index e5d1fc5f038..bfc93e56245 100644
--- a/indra/newview/skins/default/xui/ja/floater_top_objects.xml
+++ b/indra/newview/skins/default/xui/ja/floater_top_objects.xml
@@ -1,55 +1,56 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="top_objects" title="ローディング...">
+<floater name="top_objects" title="トップオブジェクト">
+	<floater.string name="top_scripts_title">
+		トップ・スクリプト
+	</floater.string>
+	<floater.string name="top_scripts_text">
+		[COUNT]スクリプト全体の実行時間は[TIME]ミリ秒。
+	</floater.string>
+	<floater.string name="scripts_score_label">
+		時間
+	</floater.string>
+	<floater.string name="scripts_mono_time_label">
+		Monoタイム
+	</floater.string>
+	<floater.string name="top_colliders_title">
+		上部コライダー
+	</floater.string>
+	<floater.string name="top_colliders_text">
+		上位[COUNT]個の物体は多くの衝突可能性があります。
+	</floater.string>
+	<floater.string name="colliders_score_label">
+		æ•°
+	</floater.string>
+	<floater.string name="none_descriptor">
+		何も見つかりませんでした。
+	</floater.string>
 	<text name="title_text">
 		ロード中...
 	</text>
 	<scroll_list name="objects_list">
-		<column label="æ•°" name="score"/>
-		<column label="名前" name="name"/>
-		<column label="所有者" name="owner"/>
-		<column label="ロケーション" name="location"/>
-		<column label="時間" name="time"/>
-		<column label="Monoタイム" name="mono_time"/>
+		<scroll_list.columns label="æ•°" name="score"/>
+		<scroll_list.columns label="名前" name="name"/>
+		<scroll_list.columns label="所有者" name="owner"/>
+		<scroll_list.columns label="ロケーション" name="location"/>
+		<scroll_list.columns label="時間" name="time"/>
+		<scroll_list.columns label="Monoタイム" name="mono_time"/>
+		<scroll_list.columns label="URL" name="URLs"/>
 	</scroll_list>
 	<text name="id_text">
 		物体ID:
 	</text>
 	<button label="標識を表示" name="show_beacon_btn"/>
 	<text name="obj_name_text">
-		物体名:
+		オブジェクト名:
 	</text>
 	<button label="フィルタ" name="filter_object_btn"/>
 	<text name="owner_name_text">
-		所有者名:
+		所有者:
 	</text>
 	<button label="フィルタ" name="filter_owner_btn"/>
+	<button label="æ›´æ–°" name="refresh_btn"/>
 	<button label="選択内容を返却" name="return_selected_btn"/>
 	<button label="すべて返却" name="return_all_btn"/>
 	<button label="選択内容を無効化" name="disable_selected_btn"/>
 	<button label="すべて無効化" name="disable_all_btn"/>
-	<button label="æ›´æ–°" name="refresh_btn"/>
-	<string name="top_scripts_title">
-		トップ・スクリプト
-	</string>
-	<string name="top_scripts_text">
-		[COUNT]スクリプト全体の実行時間は[TIME]ミリ秒。
-	</string>
-	<string name="scripts_score_label">
-		時間
-	</string>
-	<string name="scripts_mono_time_label">
-		Monoタイム
-	</string>
-	<string name="top_colliders_title">
-		上部コライダー
-	</string>
-	<string name="top_colliders_text">
-		上位[COUNT]個の物体は多くの衝突可能性があります。
-	</string>
-	<string name="colliders_score_label">
-		æ•°
-	</string>
-	<string name="none_descriptor">
-		何も見つかりませんでした。
-	</string>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_voice_controls.xml b/indra/newview/skins/default/xui/ja/floater_voice_controls.xml
index 5d52144265c..5a0694e5c5e 100644
--- a/indra/newview/skins/default/xui/ja/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/ja/floater_voice_controls.xml
@@ -1,13 +1,23 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="floater_voice_controls" title="ボイスコントロール">
-	<panel name="control_panel">
-		<panel name="my_panel">
-			<text name="user_text" value="Mya Avatar:"/>
-		</panel>
-		<layout_stack>
-			<layout_panel>
-				<slider_bar name="volume_slider_bar" tool_tip="音量"/>
-			</layout_panel>
-		</layout_stack>
-	</panel>
+	<string name="title_nearby">
+		近くのボイス
+	</string>
+	<string name="title_group">
+		[GROUP] とグループコール
+	</string>
+	<string name="title_adhoc">
+		コンファレンスコール
+	</string>
+	<string name="title_peer_2_peer">
+		[NAME] でコール
+	</string>
+	<string name="no_one_near">
+		近くにボイスを有効にしている人はいません。
+	</string>
+	<layout_stack name="my_call_stack">
+		<layout_panel name="leave_call_btn_panel">
+			<button label="コール終了" name="leave_call_btn"/>
+		</layout_panel>
+	</layout_stack>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/ja/floater_whitelist_entry.xml
index b518d874775..34aba9d485a 100644
--- a/indra/newview/skins/default/xui/ja/floater_whitelist_entry.xml
+++ b/indra/newview/skins/default/xui/ja/floater_whitelist_entry.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="whitelist_entry">
+<floater name="whitelist_entry" title="ホワイトリストの入力">
 	<text name="media_label">
 		URL か URL パターンを入力して、許可するドメインをリストに追加します。
 	</text>
diff --git a/indra/newview/skins/default/xui/ja/floater_window_size.xml b/indra/newview/skins/default/xui/ja/floater_window_size.xml
new file mode 100644
index 00000000000..a31336c0f8f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_window_size.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="window_size" title="ウィンドウサイズ">
+	<string name="resolution_format">
+		[RES_X] x [RES_Y]
+	</string>
+	<text name="windowsize_text">
+		ウィンドウのサイズの設定:
+	</text>
+	<combo_box name="window_size_combo" tool_tip="横幅 x 高さ">
+		<combo_box.item label="1000 x 700 (標準)" name="item0"/>
+		<combo_box.item label="1024 x 768" name="item1"/>
+		<combo_box.item label="1280 x 720 (720p)" name="item2"/>
+		<combo_box.item label="1920 x 1080 (1080p)" name="item3"/>
+	</combo_box>
+	<button label="設定" name="set_btn"/>
+	<button label="キャンセル" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_world_map.xml b/indra/newview/skins/default/xui/ja/floater_world_map.xml
index 370c95530ab..a0f2d98adf9 100644
--- a/indra/newview/skins/default/xui/ja/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/ja/floater_world_map.xml
@@ -1,54 +1,81 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="worldmap" title="世界地図">
-	<text name="you_label">
-		あなた
-	</text>
-	<text name="home_label">
-		ホーム
-	</text>
-	<text name="auction_label">
-		オークション
-	</text>
-	<icon left="1123" name="square"/>
-	<text left_delta="20" name="land_for_sale_label">
-		売出し中の土地
-	</text>
-	<button label="ホームへ" label_selected="ホームへ" name="Go Home" tool_tip="自分のホームにテレポート"/>
-	<check_box label="住人" name="people_chk"/>
-	<check_box label="インフォハブ" name="infohub_chk"/>
-	<check_box label="テレハブ" name="telehub_chk"/>
-	<check_box label="売り地" name="land_for_sale_chk"/>
-	<text name="events_label">
-		イベント:
-	</text>
-	<check_box label="PG" name="event_chk"/>
-	<check_box initial_value="true" label="Mature" name="event_mature_chk"/>
-	<check_box label="Adult" name="event_adult_chk"/>
-	<combo_box label="オンラインのフレンド" name="friend combo" tool_tip="地図に表示するフレンド">
-		<combo_box.item label="オンラインのフレンド" name="item1"/>
-	</combo_box>
-	<combo_box label="ランドマーク" name="landmark combo" tool_tip="地図に表示するランドマーク">
-		<combo_box.item label="ランドマーク" name="item1"/>
-	</combo_box>
-	<line_editor label="地域名で検索" name="location" tool_tip="地域名を入力してください。"/>
-	<button label="検索" name="DoSearch" tool_tip="地域検索"/>
-	<text name="search_label">
-		検索結果:
-	</text>
-	<scroll_list name="search_results">
-		<scroll_list.columns label="" name="icon"/>
-		<scroll_list.columns label="" name="sim_name"/>
-	</scroll_list>
-	<text name="location_label">
-		位置:
-	</text>
-	<spinner name="spin x" tool_tip="地図上に表示される位置のX座標"/>
-	<spinner name="spin y" tool_tip="地図上に表示される位置のY座標"/>
-	<spinner name="spin z" tool_tip="地図上に表示される位置のZ座標"/>
-	<button label="テレポート" label_selected="テレポート" name="Teleport" tool_tip="選択されたロケーションにテレポート"/>
-	<button label="目的地を表示" label_selected="目的地を表示" name="Show Destination" tool_tip="選択したロケーションを地図の中心にする"/>
-	<button label="クリア" label_selected="クリア" name="Clear" tool_tip="トラッキングを停止"/>
-	<button label="現在地を表示" label_selected="現在地を表示" name="Show My Location" tool_tip="あなたのアバターのロケーションを地図の中心にする"/>
-	<button label="SLurl をクリップボードにコピー" name="copy_slurl" tool_tip="現在地を SLurl としてコピーして、Webで使用します。"/>
-	<slider label="ズーム" name="zoom slider"/>
+	<panel name="layout_panel_1">
+		<text name="events_label">
+			レジェンド
+		</text>
+	</panel>
+	<panel>
+		<button label="現在地を表示" label_selected="現在地を表示" name="Show My Location" tool_tip="マップを中央に表示する"/>
+		<text name="me_label">
+			ミー
+		</text>
+		<check_box label="住人" name="people_chk"/>
+		<text name="person_label">
+			住人
+		</text>
+		<check_box label="インフォハブ" name="infohub_chk"/>
+		<text name="infohub_label">
+			インフォハブ
+		</text>
+		<check_box label="売り地" name="land_for_sale_chk"/>
+		<text name="land_sale_label">
+			土地販売
+		</text>
+		<text name="by_owner_label">
+			by owner
+		</text>
+		<text name="auction_label">
+			土地オークション
+		</text>
+		<button label="ホームへ" label_selected="ホームへ" name="Go Home" tool_tip="「ホーム」にテレポート"/>
+		<text name="Home_label">
+			ホーム
+		</text>
+		<text name="events_label">
+			イベント:
+		</text>
+		<check_box label="PG" name="event_chk"/>
+		<text name="pg_label">
+			一般
+		</text>
+		<check_box initial_value="true" label="Mature" name="event_mature_chk"/>
+		<text name="mature_label">
+			控えめ
+		</text>
+		<check_box label="Adult" name="event_adult_chk"/>
+		<text name="adult_label">
+			アダルト
+		</text>
+	</panel>
+	<panel>
+		<text name="find_on_map_label">
+			地図で探す
+		</text>
+	</panel>
+	<panel>
+		<combo_box label="オンラインのフレンド" name="friend combo" tool_tip="フレンドを地図に表示">
+			<combo_box.item label="オンラインのフレンド" name="item1"/>
+		</combo_box>
+		<combo_box label="マイ ランドマーク" name="landmark combo" tool_tip="地図に表示するランドマーク">
+			<combo_box.item label="マイ ランドマーク" name="item1"/>
+		</combo_box>
+		<search_editor label="リージョン名" name="location" tool_tip="地域名を入力してください。"/>
+		<button label="検索" name="DoSearch" tool_tip="地域検索"/>
+		<scroll_list name="search_results">
+			<scroll_list.columns label="" name="icon"/>
+			<scroll_list.columns label="" name="sim_name"/>
+		</scroll_list>
+		<button label="テレポート" label_selected="テレポート" name="Teleport" tool_tip="選択されたロケーションにテレポート"/>
+		<button label="SLurl をコピー" name="copy_slurl" tool_tip="現在地を SLurl としてコピーして、Webで使用します。"/>
+		<button label="選択したリージョンを表示する" label_selected="目的地を表示" name="Show Destination" tool_tip="選択したロケーションを地図の中心にする"/>
+	</panel>
+	<panel>
+		<text name="zoom_label">
+			ズーム
+		</text>
+	</panel>
+	<panel>
+		<slider label="ズーム" name="zoom slider"/>
+	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/inspect_avatar.xml b/indra/newview/skins/default/xui/ja/inspect_avatar.xml
index df3f6d0cd04..9371b80af55 100644
--- a/indra/newview/skins/default/xui/ja/inspect_avatar.xml
+++ b/indra/newview/skins/default/xui/ja/inspect_avatar.xml
@@ -10,19 +10,17 @@
 	<string name="Details">
 		[SL_PROFILE]
 	</string>
-	<string name="Partner">
-		パートナー: [PARTNER]
-	</string>
 	<text name="user_name" value="Grumpity ProductEngine"/>
 	<text name="user_subtitle" value="11 Months, 3 days old"/>
 	<text name="user_details">
 		This is my second life description and I really think it is great.
 	</text>
-	<text name="user_partner">
-		Erica Linden
-	</text>
 	<slider name="volume_slider" tool_tip="ボイス音量" value="0.5"/>
 	<button label="フレンド登録" name="add_friend_btn"/>
 	<button label="IM" name="im_btn"/>
 	<button label="詳細" name="view_profile_btn"/>
+	<panel name="moderator_panel">
+		<button label="ボイスを無効にする" name="disable_voice"/>
+		<button label="ボイスを有効にする" name="enable_voice"/>
+	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/inspect_group.xml b/indra/newview/skins/default/xui/ja/inspect_group.xml
index b292d4b5258..b461b93f650 100644
--- a/indra/newview/skins/default/xui/ja/inspect_group.xml
+++ b/indra/newview/skins/default/xui/ja/inspect_group.xml
@@ -31,4 +31,5 @@ Fear the moose!  Fear it!  And the mongoose too!
 	</text>
 	<button label="参加" name="join_btn"/>
 	<button label="脱退" name="leave_btn"/>
+	<button label="プロフィールの表示" name="view_profile_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/menu_attachment_other.xml b/indra/newview/skins/default/xui/ja/menu_attachment_other.xml
new file mode 100644
index 00000000000..f163c2cf4fe
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_attachment_other.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- *NOTE: See also menu_avatar_other.xml -->
+<context_menu name="Avatar Pie">
+	<menu_item_call label="プロフィールの表示" name="Profile..."/>
+	<menu_item_call label="フレンド登録" name="Add Friend"/>
+	<menu_item_call label="IM" name="Send IM..."/>
+	<menu_item_call label="コール" name="Call"/>
+	<menu_item_call label="グループに招待" name="Invite..."/>
+	<menu_item_call label="ブロック" name="Avatar Mute"/>
+	<menu_item_call label="報告" name="abuse"/>
+	<menu_item_call label="フリーズ" name="Freeze..."/>
+	<menu_item_call label="追放" name="Eject..."/>
+	<menu_item_call label="デバッグ" name="Debug..."/>
+	<menu_item_call label="ズームイン" name="Zoom In"/>
+	<menu_item_call label="支払う" name="Pay..."/>
+	<menu_item_call label="オブジェクトのプロフィール" name="Object Inspect"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_attachment_self.xml b/indra/newview/skins/default/xui/ja/menu_attachment_self.xml
new file mode 100644
index 00000000000..209edd80ba9
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_attachment_self.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Attachment Pie">
+	<menu_item_call label="触る" name="Attachment Object Touch"/>
+	<menu_item_call label="編集" name="Edit..."/>
+	<menu_item_call label="取り外す" name="Detach"/>
+	<menu_item_call label="下に落とす" name="Drop"/>
+	<menu_item_call label="立ち上がる" name="Stand Up"/>
+	<menu_item_call label="容姿" name="Appearance..."/>
+	<menu_item_call label="フレンド" name="Friends..."/>
+	<menu_item_call label="グループ" name="Groups..."/>
+	<menu_item_call label="プロフィール" name="Profile..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml b/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml
index ef63f3f4e09..b04f602134d 100644
--- a/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml
+++ b/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="Avatar Icon Menu">
-	<menu_item_call label="プロフィールを表示..." name="Show Profile"/>
+	<menu_item_call label="プロフィールの表示" name="Show Profile"/>
 	<menu_item_call label="IMを送信..." name="Send IM"/>
 	<menu_item_call label="フレンドを追加..." name="Add Friend"/>
 	<menu_item_call label="フレンドを削除..." name="Remove Friend"/>
diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_other.xml b/indra/newview/skins/default/xui/ja/menu_avatar_other.xml
new file mode 100644
index 00000000000..74d877cddad
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_avatar_other.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- *NOTE: See also menu_attachment_other.xml -->
+<context_menu name="Avatar Pie">
+	<menu_item_call label="プロフィールの表示" name="Profile..."/>
+	<menu_item_call label="フレンド登録" name="Add Friend"/>
+	<menu_item_call label="IM" name="Send IM..."/>
+	<menu_item_call label="コール" name="Call"/>
+	<menu_item_call label="グループに招待" name="Invite..."/>
+	<menu_item_call label="ブロック" name="Avatar Mute"/>
+	<menu_item_call label="報告" name="abuse"/>
+	<menu_item_call label="フリーズ" name="Freeze..."/>
+	<menu_item_call label="追放" name="Eject..."/>
+	<menu_item_call label="デバッグ" name="Debug..."/>
+	<menu_item_call label="ズームイン" name="Zoom In"/>
+	<menu_item_call label="支払う" name="Pay..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_self.xml b/indra/newview/skins/default/xui/ja/menu_avatar_self.xml
new file mode 100644
index 00000000000..1bfadf8d45b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_avatar_self.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Self Pie">
+	<menu_item_call label="立ち上がる" name="Stand Up"/>
+	<context_menu label="脱ぐ>" name="Take Off &gt;">
+		<context_menu label="衣類 &gt;" name="Clothes &gt;">
+			<menu_item_call label="シャツ" name="Shirt"/>
+			<menu_item_call label="パンツ" name="Pants"/>
+			<menu_item_call label="スカート" name="Skirt"/>
+			<menu_item_call label="靴" name="Shoes"/>
+			<menu_item_call label="靴下" name="Socks"/>
+			<menu_item_call label="ジャケット" name="Jacket"/>
+			<menu_item_call label="手袋" name="Gloves"/>
+			<menu_item_call label="下着シャツ" name="Self Undershirt"/>
+			<menu_item_call label="下着パンツ" name="Self Underpants"/>
+			<menu_item_call label="タトゥ" name="Self Tattoo"/>
+			<menu_item_call label="アルファ" name="Self Alpha"/>
+			<menu_item_call label="すべての衣類" name="All Clothes"/>
+		</context_menu>
+		<context_menu label="HUD &gt;" name="Object Detach HUD"/>
+		<context_menu label="取り外す &gt;" name="Object Detach"/>
+		<menu_item_call label="すべて取り外す" name="Detach All"/>
+	</context_menu>
+	<menu_item_call label="容姿" name="Appearance..."/>
+	<menu_item_call label="フレンド" name="Friends..."/>
+	<menu_item_call label="グループ" name="Groups..."/>
+	<menu_item_call label="マイ プロフィール" name="Profile..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_bottomtray.xml b/indra/newview/skins/default/xui/ja/menu_bottomtray.xml
index 3ca2de247e7..ea7ba1b7412 100644
--- a/indra/newview/skins/default/xui/ja/menu_bottomtray.xml
+++ b/indra/newview/skins/default/xui/ja/menu_bottomtray.xml
@@ -4,4 +4,9 @@
 	<menu_item_check label="移動ボタン" name="ShowMoveButton"/>
 	<menu_item_check label="視界ボタン" name="ShowCameraButton"/>
 	<menu_item_check label="スナップショットボタン" name="ShowSnapshotButton"/>
+	<menu_item_call label="切り取り" name="NearbyChatBar_Cut"/>
+	<menu_item_call label="コピー" name="NearbyChatBar_Copy"/>
+	<menu_item_call label="貼り付け" name="NearbyChatBar_Paste"/>
+	<menu_item_call label="削除" name="NearbyChatBar_Delete"/>
+	<menu_item_call label="すべて選択" name="NearbyChatBar_Select_All"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_im_well_button.xml b/indra/newview/skins/default/xui/ja/menu_im_well_button.xml
new file mode 100644
index 00000000000..3397004bd70
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_im_well_button.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="IM Well Button Context Menu">
+	<menu_item_call label="すべて閉じる" name="Close All"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml
new file mode 100644
index 00000000000..8cd6fa4a27d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="IMChiclet AdHoc Menu">
+	<menu_item_call label="セッション終了" name="End Session"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml
index 0887001992b..5453f998fa0 100644
--- a/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml
+++ b/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="IMChiclet P2P Menu">
-	<menu_item_call label="プロフィールを表示" name="Show Profile"/>
+	<menu_item_call label="プロフィールの表示" name="Show Profile"/>
 	<menu_item_call label="フレンド登録" name="Add Friend"/>
 	<menu_item_call label="セッションを表示" name="Send IM"/>
 	<menu_item_call label="セッション終了" name="End Session"/>
diff --git a/indra/newview/skins/default/xui/ja/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/ja/menu_inspect_avatar_gear.xml
index 64e1505440e..3d5086c52a0 100644
--- a/indra/newview/skins/default/xui/ja/menu_inspect_avatar_gear.xml
+++ b/indra/newview/skins/default/xui/ja/menu_inspect_avatar_gear.xml
@@ -7,6 +7,7 @@
 	<menu_item_call label="テレポート" name="teleport"/>
 	<menu_item_call label="グループに招待" name="invite_to_group"/>
 	<menu_item_call label="ブロック" name="block"/>
+	<menu_item_call label="ブロック解除" name="unblock"/>
 	<menu_item_call label="報告" name="report"/>
 	<menu_item_call label="フリーズ" name="freeze"/>
 	<menu_item_call label="追放" name="eject"/>
diff --git a/indra/newview/skins/default/xui/ja/menu_inventory.xml b/indra/newview/skins/default/xui/ja/menu_inventory.xml
index 623a0cdb066..78c0dd0a78c 100644
--- a/indra/newview/skins/default/xui/ja/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/ja/menu_inventory.xml
@@ -10,7 +10,7 @@
 	<menu_item_call label="遺失物フォルダを空にする" name="Empty Lost And Found"/>
 	<menu_item_call label="新しいフォルダ" name="New Folder"/>
 	<menu_item_call label="新しいスクリプト" name="New Script"/>
-	<menu_item_call label="新しいノート" name="New Note"/>
+	<menu_item_call label="新しいノートカード" name="New Note"/>
 	<menu_item_call label="新しいジェスチャー" name="New Gesture"/>
 	<menu label="新しい衣類" name="New Clothes">
 		<menu_item_call label="新しいシャツ" name="New Shirt"/>
@@ -46,6 +46,9 @@
 	<menu_item_call label="テレポート" name="Landmark Open"/>
 	<menu_item_call label="開く" name="Animation Open"/>
 	<menu_item_call label="開く" name="Sound Open"/>
+	<menu_item_call label="着用中のアウトフィットを入れ替える" name="Replace Outfit"/>
+	<menu_item_call label="着用中のアウトフィットに追加する" name="Add To Outfit"/>
+	<menu_item_call label="着用中のアウトフィットから取り除く" name="Remove From Outfit"/>
 	<menu_item_call label="アイテムを除外" name="Purge Item"/>
 	<menu_item_call label="アイテムを復元" name="Restore Item"/>
 	<menu_item_call label="オリジナルを探す" name="Find Original"/>
@@ -56,10 +59,9 @@
 	<menu_item_call label="コピー" name="Copy"/>
 	<menu_item_call label="貼り付け" name="Paste"/>
 	<menu_item_call label="リンクの貼り付け" name="Paste As Link"/>
+	<menu_item_call label="リンクを外す" name="Remove Link"/>
 	<menu_item_call label="削除" name="Delete"/>
-	<menu_item_call label="アウトフィットから取り除く" name="Remove From Outfit"/>
-	<menu_item_call label="服装に追加" name="Add To Outfit"/>
-	<menu_item_call label="服装を置換" name="Replace Outfit"/>
+	<menu_item_call label="システムフォルダを削除する" name="Delete System Folder"/>
 	<menu_item_call label="会議チャット開始" name="Conference Chat Folder"/>
 	<menu_item_call label="再生" name="Sound Play"/>
 	<menu_item_call label="ランドマークの情報" name="About Landmark"/>
diff --git a/indra/newview/skins/default/xui/ja/menu_inventory_add.xml b/indra/newview/skins/default/xui/ja/menu_inventory_add.xml
index 8b18f6bfe80..14ad7900e1a 100644
--- a/indra/newview/skins/default/xui/ja/menu_inventory_add.xml
+++ b/indra/newview/skins/default/xui/ja/menu_inventory_add.xml
@@ -8,7 +8,7 @@
 	</menu>
 	<menu_item_call label="新規フォルダ" name="New Folder"/>
 	<menu_item_call label="新規スクリプト" name="New Script"/>
-	<menu_item_call label="新規ノート" name="New Note"/>
+	<menu_item_call label="新しいノートカード" name="New Note"/>
 	<menu_item_call label="新規ジェスチャー" name="New Gesture"/>
 	<menu label="新しい衣類" name="New Clothes">
 		<menu_item_call label="新しいシャツ" name="New Shirt"/>
diff --git a/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml
index 2bac5ebaa69..e3114327a0a 100644
--- a/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml
+++ b/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml
@@ -9,4 +9,6 @@
 	<menu_item_call label="ごみ箱を空にする" name="empty_trash"/>
 	<menu_item_call label="紛失物を空にする" name="empty_lostnfound"/>
 	<menu_item_call label="別名でテクスチャを保存" name="Save Texture As"/>
+	<menu_item_call label="オリジナルを表示" name="Find Original"/>
+	<menu_item_call label="すべてのリンクを表示" name="Find All Links"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_land.xml b/indra/newview/skins/default/xui/ja/menu_land.xml
new file mode 100644
index 00000000000..89c122f14fd
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_land.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Land Pie">
+	<menu_item_call label="土地情報" name="Place Information..."/>
+	<menu_item_call label="ここに座る" name="Sit Here"/>
+	<menu_item_call label="この土地を購入" name="Land Buy"/>
+	<menu_item_call label="入場許可を購入" name="Land Buy Pass"/>
+	<menu_item_call label="制作" name="Create"/>
+	<menu_item_call label="地形を編集" name="Edit Terrain"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_login.xml b/indra/newview/skins/default/xui/ja/menu_login.xml
index 5db56ae76bb..42a95ac3d3f 100644
--- a/indra/newview/skins/default/xui/ja/menu_login.xml
+++ b/indra/newview/skins/default/xui/ja/menu_login.xml
@@ -23,10 +23,8 @@
 		<menu_item_call label="デバッグ設定を表示" name="Debug Settings"/>
 		<menu_item_call label="UI/色の設定" name="UI/Color Settings"/>
 		<menu_item_call label="XUI プレビューツール" name="UI Preview Tool"/>
-		<menu_item_call label="サイドトレイを表示" name="Show Side Tray"/>
-		<menu_item_call label="ウィジェットテスト" name="Widget Test"/>
-		<menu_item_call label="インスペクターテスト" name="Inspectors Test"/>
-		<menu_item_check label="Reg In Client Test (restart)" name="Reg In Client Test (restart)"/>
+		<menu label="UI テスト" name="UI Tests"/>
+		<menu_item_call label="ウィンドウのサイズの設定..." name="Set Window Size..."/>
 		<menu_item_call label="利用規約を表示" name="TOS"/>
 		<menu_item_call label="クリティカルメッセージを表示" name="Critical"/>
 		<menu_item_call label="Web ブラウザのテスト" name="Web Browser Test"/>
diff --git a/indra/newview/skins/default/xui/ja/menu_notification_well_button.xml b/indra/newview/skins/default/xui/ja/menu_notification_well_button.xml
new file mode 100644
index 00000000000..913bae89586
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_notification_well_button.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Notification Well Button Context Menu">
+	<menu_item_call label="すべて閉じる" name="Close All"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_object.xml b/indra/newview/skins/default/xui/ja/menu_object.xml
new file mode 100644
index 00000000000..a161c015145
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_object.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Object Pie">
+	<menu_item_call label="触る" name="Object Touch"/>
+	<menu_item_call label="編集" name="Edit..."/>
+	<menu_item_call label="制作" name="Build"/>
+	<menu_item_call label="開く" name="Open"/>
+	<menu_item_call label="ここに座る" name="Object Sit"/>
+	<menu_item_call label="オブジェクトのプロフィール" name="Object Inspect"/>
+	<menu_item_call label="ズームイン" name="Zoom In"/>
+	<context_menu label="装着 &gt;" name="Put On">
+		<menu_item_call label="装着" name="Wear"/>
+		<context_menu label="取り付け &gt;" name="Object Attach"/>
+		<context_menu label="HUD を取り付け &gt;" name="Object Attach HUD"/>
+	</context_menu>
+	<context_menu label="削除 &gt;" name="Remove">
+		<menu_item_call label="取る" name="Pie Object Take"/>
+		<menu_item_call label="嫌がらせの報告" name="Report Abuse..."/>
+		<menu_item_call label="ブロック" name="Object Mute"/>
+		<menu_item_call label="返却" name="Return..."/>
+		<menu_item_call label="削除" name="Delete"/>
+	</context_menu>
+	<menu_item_call label="コピーを取る" name="Take Copy"/>
+	<menu_item_call label="支払う" name="Pay..."/>
+	<menu_item_call label="買う" name="Buy..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_participant_list.xml b/indra/newview/skins/default/xui/ja/menu_participant_list.xml
index 0bc51ecde1f..398a78bb614 100644
--- a/indra/newview/skins/default/xui/ja/menu_participant_list.xml
+++ b/indra/newview/skins/default/xui/ja/menu_participant_list.xml
@@ -1,5 +1,20 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Participant List Context Menu">
-	<menu_item_check label="文字をミュート" name="MuteText"/>
-	<menu_item_check label="文字チャットを許可" name="AllowTextChat"/>
+	<menu_item_check label="名前で並べ替え" name="SortByName"/>
+	<menu_item_check label="最近の発言者で並べ替え" name="SortByRecentSpeakers"/>
+	<menu_item_call label="プロフィールの表示" name="View Profile"/>
+	<menu_item_call label="フレンド登録" name="Add Friend"/>
+	<menu_item_call label="IM" name="IM"/>
+	<menu_item_call label="コール" name="Call"/>
+	<menu_item_call label="共有" name="Share"/>
+	<menu_item_call label="支払う" name="Pay"/>
+	<menu_item_check label="ボイスをブロック" name="Block/Unblock"/>
+	<menu_item_check label="文字をブロックする" name="MuteText"/>
+	<context_menu label="モデレーターのオプション &gt;" name="Moderator Options">
+		<menu_item_check label="文字チャットを許可" name="AllowTextChat"/>
+		<menu_item_call label="この参加者をミュートする" name="ModerateVoiceMuteSelected"/>
+		<menu_item_call label="他の人全員をミュートする" name="ModerateVoiceMuteOthers"/>
+		<menu_item_call label="この参加者のミュートを解除する" name="ModerateVoiceUnMuteSelected"/>
+		<menu_item_call label="他の人全員のミュートを解除する" name="ModerateVoiceUnMuteOthers"/>
+	</context_menu>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_groups.xml b/indra/newview/skins/default/xui/ja/menu_people_groups.xml
new file mode 100644
index 00000000000..4e5dc60a3dc
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_people_groups.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_group_plus">
+	<menu_item_call label="情報を表示" name="View Info"/>
+	<menu_item_call label="チャット" name="Chat"/>
+	<menu_item_call label="コール" name="Call"/>
+	<menu_item_call label="有効化" name="Activate"/>
+	<menu_item_call label="脱退" name="Leave"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby.xml
index a577523754b..2c8a346d1a1 100644
--- a/indra/newview/skins/default/xui/ja/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/ja/menu_people_nearby.xml
@@ -7,4 +7,5 @@
 	<menu_item_call label="共有" name="Share"/>
 	<menu_item_call label="支払う" name="Pay"/>
 	<menu_item_check label="ブロック・ブロック解除" name="Block/Unblock"/>
+	<menu_item_call label="テレポートを送る" name="teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml b/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml
index a34086bdbf1..bb93990efe9 100644
--- a/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml
+++ b/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml
@@ -2,4 +2,8 @@
 <toggleable_menu name="profile_overflow_menu">
 	<menu_item_call label="支払う" name="pay"/>
 	<menu_item_call label="共有" name="share"/>
+	<menu_item_call label="追放" name="kick"/>
+	<menu_item_call label="フリーズ" name="freeze"/>
+	<menu_item_call label="フリーズ解除" name="unfreeze"/>
+	<menu_item_call label="CSR" name="csr"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml
index fc0a5592ddc..db8583ca15d 100644
--- a/indra/newview/skins/default/xui/ja/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml
@@ -9,7 +9,7 @@
 		<menu_item_call label="マイ プロフィール" name="Profile"/>
 		<menu_item_call label="マイ 容姿" name="Appearance"/>
 		<menu_item_check label="マイ 持ち物" name="Inventory"/>
-		<menu_item_call label="サイドトレイで持ち物を表示" name="ShowSidetrayInventory"/>
+		<menu_item_call label="持ち物をサイドトレイに表示" name="ShowSidetrayInventory"/>
 		<menu_item_call label="マイ ジェスチャー" name="Gestures"/>
 		<menu label="マイ ログイン状態" name="Status">
 			<menu_item_call label="一時退席中" name="Set Away"/>
@@ -25,36 +25,30 @@
 		<menu_item_check label="近くのチャット" name="Nearby Chat"/>
 		<menu_item_call label="近くにいる人" name="Active Speakers"/>
 		<menu_item_check label="近くのメディア" name="Nearby Media"/>
-		<menu_item_check label="(レガシー) コミュニケーション" name="Instant Message"/>
-		<menu_item_call label="(一時)メディアリモコン" name="Preferences"/>
 	</menu>
 	<menu label="世界" name="World">
-		<menu_item_check label="移動" name="Movement Controls"/>
-		<menu_item_check label="視界" name="Camera Controls"/>
-		<menu_item_call label="土地について" name="About Land"/>
-		<menu_item_call label="地域 / 不動産" name="Region/Estate"/>
-		<menu_item_call label="土地の購入" name="Buy Land"/>
-		<menu_item_call label="自分の土地" name="My Land"/>
-		<menu label="表示" name="Land">
-			<menu_item_check label="立入禁止ライン" name="Ban Lines"/>
-			<menu_item_check label="ビーコン(標識)" name="beacons"/>
-			<menu_item_check label="敷地境界線" name="Property Lines"/>
-			<menu_item_check label="土地所有者" name="Land Owners"/>
-		</menu>
-		<menu label="ランドマーク" name="Landmarks">
-			<menu_item_call label="ここのランドマークを作成" name="Create Landmark Here"/>
-			<menu_item_call label="現在地をホームに設定" name="Set Home to Here"/>
-		</menu>
-		<menu_item_call label="ホーム" name="Teleport Home"/>
 		<menu_item_check label="ミニマップ" name="Mini-Map"/>
 		<menu_item_check label="世界地図" name="World Map"/>
 		<menu_item_call label="スナップショット" name="Take Snapshot"/>
+		<menu_item_call label="現在地をランドマーク" name="Create Landmark Here"/>
+		<menu label="場所のプロフィール" name="Land">
+			<menu_item_call label="土地情報" name="About Land"/>
+			<menu_item_call label="地域 / 不動産" name="Region/Estate"/>
+		</menu>
+		<menu_item_call label="この土地を購入" name="Buy Land"/>
+		<menu_item_call label="自分の土地" name="My Land"/>
+		<menu label="表示" name="LandShow">
+			<menu_item_check label="移動コントロール" name="Movement Controls"/>
+			<menu_item_check label="コントロールを表示" name="Camera Controls"/>
+		</menu>
+		<menu_item_call label="ホームにテレポート" name="Teleport Home"/>
+		<menu_item_call label="現在地をホームに設定" name="Set Home to Here"/>
 		<menu label="太陽" name="Environment Settings">
 			<menu_item_call label="日の出" name="Sunrise"/>
 			<menu_item_call label="正午" name="Noon"/>
 			<menu_item_call label="日没" name="Sunset"/>
 			<menu_item_call label="深夜" name="Midnight"/>
-			<menu_item_call label="エステートタイムを使用" name="Revert to Region Default"/>
+			<menu_item_call label="エステートタイム" name="Revert to Region Default"/>
 			<menu_item_call label="環境編集" name="Environment Editor"/>
 		</menu>
 	</menu>
@@ -125,21 +119,20 @@
 	</menu>
 	<menu label="ヘルプ" name="Help">
 		<menu_item_call label="[SECOND_LIFE] ヘルプ" name="Second Life Help"/>
-		<menu_item_call label="チュートリアル" name="Tutorial"/>
 		<menu_item_call label="嫌がらせを報告" name="Report Abuse"/>
+		<menu_item_call label="バグ報告" name="Report Bug"/>
 		<menu_item_call label="[APP_NAME] について" name="About Second Life"/>
 	</menu>
 	<menu label="アドバンス" name="Advanced">
-		<menu_item_check label="30分経過で AFK に設定" name="Go Away/AFK When Idle"/>
 		<menu_item_call label="私のアニメーションを停止する" name="Stop Animating My Avatar"/>
 		<menu_item_call label="テクスチャのリベーク" name="Rebake Texture"/>
 		<menu_item_call label="UI のサイズをデフォルトに設定する" name="Set UI Size to Default"/>
+		<menu_item_call label="ウィンドウのサイズの設定:" name="Set Window Size..."/>
 		<menu_item_check label="遠くのオブジェクトを選択しない" name="Limit Select Distance"/>
 		<menu_item_check label="カメラの距離移動を制限しない" name="Disable Camera Distance"/>
 		<menu_item_check label="高解像度スナップショット" name="HighResSnapshot"/>
 		<menu_item_check label="シャッター音とアニメーションなしでスナップショットをディスクに保存" name="QuietSnapshotsToDisk"/>
 		<menu_item_check label="圧縮してスナップショットをディスクに保存する" name="CompressSnapshotsToDisk"/>
-		<menu_item_call label="別名でテクスチャを保存" name="Save Texture As"/>
 		<menu label="パフォーマンスツール" name="Performance Tools">
 			<menu_item_call label="ラグ計測器" name="Lag Meter"/>
 			<menu_item_check label="統計バー" name="Statistics Bar"/>
@@ -333,7 +326,6 @@
 			<menu_item_call label="XML で保存" name="Save to XML"/>
 			<menu_item_check label="XUI ネームを表示" name="Show XUI Names"/>
 			<menu_item_call label="テスト用 IM を送信" name="Send Test IMs"/>
-			<menu_item_call label="インスペクターテスト" name="Test Inspectors"/>
 		</menu>
 		<menu label="アバター" name="Character">
 			<menu label="ベークドテクスチャを取得" name="Grab Baked Texture">
@@ -366,6 +358,7 @@
 			<menu_item_call label="アバターテクスチャをデバッグ" name="Debug Avatar Textures"/>
 			<menu_item_call label="ローカルテクスチャをダンプ" name="Dump Local Textures"/>
 		</menu>
+		<menu_item_check label="HTTP Texture" name="HTTP Textures"/>
 		<menu_item_call label="圧縮画像" name="Compress Images"/>
 		<menu_item_check label="Output Debug Minidump" name="Output Debug Minidump"/>
 		<menu_item_check label="次回の起動時にコンソールウィンドウを表示" name="Console Window"/>
@@ -410,7 +403,6 @@
 			<menu_item_call label="タトゥ" name="Tattoo"/>
 			<menu_item_call label="すべての衣類" name="All Clothes"/>
 		</menu>
-		<menu_item_check label="ツールバーを表示" name="Show Toolbar"/>
 		<menu label="ヘルプ" name="Help">
 			<menu_item_call label="リンデン公式ブログ" name="Official Linden Blog"/>
 			<menu_item_call label="スクリプトポータル" name="Scripting Portal"/>
diff --git a/indra/newview/skins/default/xui/ja/mime_types_linux.xml b/indra/newview/skins/default/xui/ja/mime_types_linux.xml
new file mode 100644
index 00000000000..0ec1030113a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/mime_types_linux.xml
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<mimetypes name="default">
+	<widgetset name="web">
+		<label name="web_label">
+			Web コンテンツ
+		</label>
+		<tooltip name="web_tooltip">
+			このロケーションには Web コンテンツが含まれています
+		</tooltip>
+		<playtip name="web_playtip">
+			Web コンテンツを表示する
+		</playtip>
+	</widgetset>
+	<widgetset name="movie">
+		<label name="movie_label">
+			ムービー
+		</label>
+		<tooltip name="movie_tooltip">
+			ここにはムービーがあります
+		</tooltip>
+		<playtip name="movie_playtip">
+			ムービーを再生する
+		</playtip>
+	</widgetset>
+	<widgetset name="image">
+		<label name="image_label">
+			画像
+		</label>
+		<tooltip name="image_tooltip">
+			このロケーションには画像があります
+		</tooltip>
+		<playtip name="image_playtip">
+			このロケーションの画像を表示する
+		</playtip>
+	</widgetset>
+	<widgetset name="audio">
+		<label name="audio_label">
+			オーディオ
+		</label>
+		<tooltip name="audio_tooltip">
+			このロケーションにはオーディオがあります
+		</tooltip>
+		<playtip name="audio_playtip">
+			このロケーションのオーディオを再生する
+		</playtip>
+	</widgetset>
+	<scheme name="rtsp">
+		<label name="rtsp_label">
+			リアルタイム・ストリーミング
+		</label>
+	</scheme>
+	<mimetype name="blank">
+		<label name="blank_label">
+			- なし -
+		</label>
+	</mimetype>
+	<mimetype name="none/none">
+		<label name="none/none_label">
+			- なし -
+		</label>
+	</mimetype>
+	<mimetype name="audio/*">
+		<label name="audio2_label">
+			オーディオ
+		</label>
+	</mimetype>
+	<mimetype name="video/*">
+		<label name="video2_label">
+			ビデオ
+		</label>
+	</mimetype>
+	<mimetype name="image/*">
+		<label name="image2_label">
+			画像
+		</label>
+	</mimetype>
+	<mimetype name="video/vnd.secondlife.qt.legacy">
+		<label name="vnd.secondlife.qt.legacy_label">
+			ムービー(QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="application/javascript">
+		<label name="application/javascript_label">
+			Javascript
+		</label>
+	</mimetype>
+	<mimetype name="application/ogg">
+		<label name="application/ogg_label">
+			Ogg オーディオ・ビデオ
+		</label>
+	</mimetype>
+	<mimetype name="application/pdf">
+		<label name="application/pdf_label">
+			PDF ドキュメント
+		</label>
+	</mimetype>
+	<mimetype name="application/postscript">
+		<label name="application/postscript_label">
+			Postscript ドキュメント
+		</label>
+	</mimetype>
+	<mimetype name="application/rtf">
+		<label name="application/rtf_label">
+			リッチテキスト(RTF)
+		</label>
+	</mimetype>
+	<mimetype name="application/smil">
+		<label name="application/smil_label">
+			Synchronized Multimedia Integration Language (SMIL)
+		</label>
+	</mimetype>
+	<mimetype name="application/xhtml+xml">
+		<label name="application/xhtml+xml_label">
+			Web ページ(XHTML)
+		</label>
+	</mimetype>
+	<mimetype name="application/x-director">
+		<label name="application/x-director_label">
+			マクロメディアディレクター
+		</label>
+	</mimetype>
+	<mimetype name="audio/mid">
+		<label name="audio/mid_label">
+			オーディオ(MIDI)
+		</label>
+	</mimetype>
+	<mimetype name="audio/mpeg">
+		<label name="audio/mpeg_label">
+			オーディオ(MP3)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-aiff">
+		<label name="audio/x-aiff_label">
+			オーディオ(AIFF)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-wav">
+		<label name="audio/x-wav_label">
+			オーディオ(WAV)
+		</label>
+	</mimetype>
+	<mimetype name="image/bmp">
+		<label name="image/bmp_label">
+			画像(BMP)
+		</label>
+	</mimetype>
+	<mimetype name="image/gif">
+		<label name="image/gif_label">
+			画像(GIF)
+		</label>
+	</mimetype>
+	<mimetype name="image/jpeg">
+		<label name="image/jpeg_label">
+			画像(JPEG)
+		</label>
+	</mimetype>
+	<mimetype name="image/png">
+		<label name="image/png_label">
+			画像(PNG)
+		</label>
+	</mimetype>
+	<mimetype name="image/svg+xml">
+		<label name="image/svg+xml_label">
+			画像(SVG)
+		</label>
+	</mimetype>
+	<mimetype name="image/tiff">
+		<label name="image/tiff_label">
+			画像(TIFF)
+		</label>
+	</mimetype>
+	<mimetype name="text/html">
+		<label name="text/html_label">
+			Web ページ
+		</label>
+	</mimetype>
+	<mimetype name="text/plain">
+		<label name="text/plain_label">
+			テキスト
+		</label>
+	</mimetype>
+	<mimetype name="text/xml">
+		<label name="text/xml_label">
+			XML
+		</label>
+	</mimetype>
+	<mimetype name="video/mpeg">
+		<label name="video/mpeg_label">
+			ムービー(MPEG)
+		</label>
+	</mimetype>
+	<mimetype name="video/mp4">
+		<label name="video/mp4_label">
+			ムービー(MP4)
+		</label>
+	</mimetype>
+	<mimetype name="video/quicktime">
+		<label name="video/quicktime_label">
+			ムービー(QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-asf">
+		<label name="video/x-ms-asf_label">
+			ムービー(Windows Media ASF)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-wmv">
+		<label name="video/x-ms-wmv_label">
+			ムービー(Windows Media WMV)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-msvideo">
+		<label name="video/x-msvideo_label">
+			ムービー(AVI)
+		</label>
+	</mimetype>
+</mimetypes>
diff --git a/indra/newview/skins/default/xui/ja/mime_types_mac.xml b/indra/newview/skins/default/xui/ja/mime_types_mac.xml
new file mode 100644
index 00000000000..0ec1030113a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/mime_types_mac.xml
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<mimetypes name="default">
+	<widgetset name="web">
+		<label name="web_label">
+			Web コンテンツ
+		</label>
+		<tooltip name="web_tooltip">
+			このロケーションには Web コンテンツが含まれています
+		</tooltip>
+		<playtip name="web_playtip">
+			Web コンテンツを表示する
+		</playtip>
+	</widgetset>
+	<widgetset name="movie">
+		<label name="movie_label">
+			ムービー
+		</label>
+		<tooltip name="movie_tooltip">
+			ここにはムービーがあります
+		</tooltip>
+		<playtip name="movie_playtip">
+			ムービーを再生する
+		</playtip>
+	</widgetset>
+	<widgetset name="image">
+		<label name="image_label">
+			画像
+		</label>
+		<tooltip name="image_tooltip">
+			このロケーションには画像があります
+		</tooltip>
+		<playtip name="image_playtip">
+			このロケーションの画像を表示する
+		</playtip>
+	</widgetset>
+	<widgetset name="audio">
+		<label name="audio_label">
+			オーディオ
+		</label>
+		<tooltip name="audio_tooltip">
+			このロケーションにはオーディオがあります
+		</tooltip>
+		<playtip name="audio_playtip">
+			このロケーションのオーディオを再生する
+		</playtip>
+	</widgetset>
+	<scheme name="rtsp">
+		<label name="rtsp_label">
+			リアルタイム・ストリーミング
+		</label>
+	</scheme>
+	<mimetype name="blank">
+		<label name="blank_label">
+			- なし -
+		</label>
+	</mimetype>
+	<mimetype name="none/none">
+		<label name="none/none_label">
+			- なし -
+		</label>
+	</mimetype>
+	<mimetype name="audio/*">
+		<label name="audio2_label">
+			オーディオ
+		</label>
+	</mimetype>
+	<mimetype name="video/*">
+		<label name="video2_label">
+			ビデオ
+		</label>
+	</mimetype>
+	<mimetype name="image/*">
+		<label name="image2_label">
+			画像
+		</label>
+	</mimetype>
+	<mimetype name="video/vnd.secondlife.qt.legacy">
+		<label name="vnd.secondlife.qt.legacy_label">
+			ムービー(QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="application/javascript">
+		<label name="application/javascript_label">
+			Javascript
+		</label>
+	</mimetype>
+	<mimetype name="application/ogg">
+		<label name="application/ogg_label">
+			Ogg オーディオ・ビデオ
+		</label>
+	</mimetype>
+	<mimetype name="application/pdf">
+		<label name="application/pdf_label">
+			PDF ドキュメント
+		</label>
+	</mimetype>
+	<mimetype name="application/postscript">
+		<label name="application/postscript_label">
+			Postscript ドキュメント
+		</label>
+	</mimetype>
+	<mimetype name="application/rtf">
+		<label name="application/rtf_label">
+			リッチテキスト(RTF)
+		</label>
+	</mimetype>
+	<mimetype name="application/smil">
+		<label name="application/smil_label">
+			Synchronized Multimedia Integration Language (SMIL)
+		</label>
+	</mimetype>
+	<mimetype name="application/xhtml+xml">
+		<label name="application/xhtml+xml_label">
+			Web ページ(XHTML)
+		</label>
+	</mimetype>
+	<mimetype name="application/x-director">
+		<label name="application/x-director_label">
+			マクロメディアディレクター
+		</label>
+	</mimetype>
+	<mimetype name="audio/mid">
+		<label name="audio/mid_label">
+			オーディオ(MIDI)
+		</label>
+	</mimetype>
+	<mimetype name="audio/mpeg">
+		<label name="audio/mpeg_label">
+			オーディオ(MP3)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-aiff">
+		<label name="audio/x-aiff_label">
+			オーディオ(AIFF)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-wav">
+		<label name="audio/x-wav_label">
+			オーディオ(WAV)
+		</label>
+	</mimetype>
+	<mimetype name="image/bmp">
+		<label name="image/bmp_label">
+			画像(BMP)
+		</label>
+	</mimetype>
+	<mimetype name="image/gif">
+		<label name="image/gif_label">
+			画像(GIF)
+		</label>
+	</mimetype>
+	<mimetype name="image/jpeg">
+		<label name="image/jpeg_label">
+			画像(JPEG)
+		</label>
+	</mimetype>
+	<mimetype name="image/png">
+		<label name="image/png_label">
+			画像(PNG)
+		</label>
+	</mimetype>
+	<mimetype name="image/svg+xml">
+		<label name="image/svg+xml_label">
+			画像(SVG)
+		</label>
+	</mimetype>
+	<mimetype name="image/tiff">
+		<label name="image/tiff_label">
+			画像(TIFF)
+		</label>
+	</mimetype>
+	<mimetype name="text/html">
+		<label name="text/html_label">
+			Web ページ
+		</label>
+	</mimetype>
+	<mimetype name="text/plain">
+		<label name="text/plain_label">
+			テキスト
+		</label>
+	</mimetype>
+	<mimetype name="text/xml">
+		<label name="text/xml_label">
+			XML
+		</label>
+	</mimetype>
+	<mimetype name="video/mpeg">
+		<label name="video/mpeg_label">
+			ムービー(MPEG)
+		</label>
+	</mimetype>
+	<mimetype name="video/mp4">
+		<label name="video/mp4_label">
+			ムービー(MP4)
+		</label>
+	</mimetype>
+	<mimetype name="video/quicktime">
+		<label name="video/quicktime_label">
+			ムービー(QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-asf">
+		<label name="video/x-ms-asf_label">
+			ムービー(Windows Media ASF)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-wmv">
+		<label name="video/x-ms-wmv_label">
+			ムービー(Windows Media WMV)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-msvideo">
+		<label name="video/x-msvideo_label">
+			ムービー(AVI)
+		</label>
+	</mimetype>
+</mimetypes>
diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml
index 33ccc579a72..b502fb2e6e2 100644
--- a/indra/newview/skins/default/xui/ja/notifications.xml
+++ b/indra/newview/skins/default/xui/ja/notifications.xml
@@ -32,10 +32,10 @@
 			<button name="No" text="$notext"/>
 		</form>
 	</template>
-	<notification functor="GenericAcknowledge" label="不明な警告メッセージ" name="MissingAlert">
-		あなたの [APP_NAME] のバージョンでは今受け取った警告メッセージを表示することができません。  最新ビューワがインストールされているかご確認ください。
+	<notification functor="GenericAcknowledge" label="不明の通知メッセージ" name="MissingAlert">
+		あなたの [APP_NAME] のバージョンでは今受け取った通知メッセージを表示することができません。  最新ビューワがインストールされているかご確認ください。
 
-エラー詳細: 「[_NAME]」という警告は notifications.xml にありませんでした。
+エラー詳細: 「[_NAME]」という通知は notifications.xml にありませんでした。
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="FloaterNotFound">
@@ -93,15 +93,13 @@
 		<usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="保存しない" yestext="すべて保存"/>
 	</notification>
 	<notification name="GrantModifyRights">
-		他の住人に変更権限を与えると、その人はあなたが所有している
-すべてのオブジェクトを変更、削除、または取得することができるようになります。この許可を与えるときは細心の注意を払ってください。
-[FIRST_NAME] [LAST_NAME]に対して変更権限を与えますか?
+		他人に修正権限を与えると、権限を与えられた人はあなたが所有するインワールドのオブジェクトを変更、削除、持ち帰ることができます。 この権限を与える際には十分に注意してください。
+[FIRST_NAME] [LAST_NAME] に修正権限を与えますか?
 		<usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
 	</notification>
 	<notification name="GrantModifyRightsMultiple">
-		変更権限を与えると、その人はあなたが作成した全てのオブジェクトを変更することができます。
-この許可を与えるときには細心の注意を払ってください。
-選択した住人に変更権限を与えますか?
+		他人に修正権限を与えると、権限を与えられた人はあなたが所有するインワールドのオブジェクトを変更することができます。 この権限を与える際には十分に注意してください。
+選択した住人に修正権限を与えますか?
 		<usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
 	</notification>
 	<notification name="RevokeModifyRights">
@@ -159,6 +157,11 @@
 この能力を[ROLE_NAME]に割り当てますか?
 		<usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
 	</notification>
+	<notification name="AttachmentDrop">
+		アタッチメントを下に置こうとしています。
+続けますか?
+		<usetemplate ignoretext="アタッチメントを下に落とす前に確認する" name="okcancelignore" notext="いいえ" yestext="はい"/>
+	</notification>
 	<notification name="ClickUnimplemented">
 		申し訳ありませんが、まだ未実装です。
 	</notification>
@@ -267,16 +270,10 @@ L$が不足しているのでこのグループに参加することができま
 	</notification>
 	<notification name="MultipleFacesSelected">
 		現在複数の面が選択されています。
-このまま続けた場合、メディアの別々の段階がオブジェクトの複数の面に設定されます。
-メディアを 1 つの面だけに取り付けるには、「テクスチャを選択」を選び、オブジェクトの希望する面をクリック、それから「追加」をクリックしてください。
+このまま続けた場合、メディアの別々のインスタンスがオブジェクトの複数の面に設定されます。
+メディアを 1 つの面だけに取り付けるには、「面を選択」を選んでオブジェクトの希望する面をクリック、それから「追加」をクリックしてください。
 		<usetemplate ignoretext="メディアは選択した複数の面にセットされます。" name="okcancelignore" notext="キャンセル" yestext="OK"/>
 	</notification>
-	<notification name="WhiteListInvalidatesHomeUrl">
-		この入力をホワイトリストに追加すると、このメディア向けに特定した
-ホーム URL を無効とします。 あなたにはこれを実行する許可がないので、
-入力はホワイトリストには追加されません。
-		<usetemplate name="okbutton" yestext="Ok"/>
-	</notification>
 	<notification name="MustBeInParcel">
 		着地点を設定するには、この区画の内側に
 立ってください。
@@ -368,14 +365,6 @@ L$が不足しているのでこのグループに参加することができま
 	<notification name="SelectHistoryItemToView">
 		表示する履歴アイテムを選択してください。
 	</notification>
-	<notification name="ResetShowNextTimeDialogs">
-		これらのポップアップ全てを再度有効化しますか?(以前「今後は表示しない」と指定しています)
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="SkipShowNextTimeDialogs">
-		スキップ可能なポップアップ全てを無効化しますか?
-		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
-	</notification>
 	<notification name="CacheWillClear">
 		[APP_NAME] を再起動後にキャッシュがクリアされます。
 	</notification>
@@ -648,6 +637,10 @@ L$が不足しているのでこのグループに参加することができま
 	<notification name="LandmarkCreated">
 		「 [LANDMARK_NAME] 」を「 [FOLDER_NAME] 」フォルダに追加しました。
 	</notification>
+	<notification name="LandmarkAlreadyExists">
+		この位置のランドマークを既に持っています。
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
 	<notification name="CannotCreateLandmarkNotOwner">
 		土地の所有者が許可していないため、
 ランドマークを作成することはできません。
@@ -753,10 +746,8 @@ L$が不足しているのでこのグループに参加することができま
 選択する面積を小さくして、もう一度試してください。
 	</notification>
 	<notification name="ForceOwnerAuctionWarning">
-		この区画はオークションに出品されています。
-区画の所有権を取得するとオークションが無効になり、
-入札が開始していたら不満に思う住人が出てくるかもしれません。
-所有権を取得しますか?
+		この区画はオークションに出されています。 所有権を変更するとオークションはキャンセルとなり、既にオークションに参加している住人がいればその人に迷惑をかけてしまいます。
+所有権を変更しますか?
 		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
 	</notification>
 	<notification name="CannotContentifyNothingSelected">
@@ -805,11 +796,11 @@ L$が不足しているのでこのグループに参加することができま
 これより1つの区画を選択してください。
 	</notification>
 	<notification name="ParcelCanPlayMedia">
-		ここではストリーミング・メディア再生が可能です。
-メディアのストリーミングには、高速なインターネット接続環境が必要です。
+		この場所では、ストリーミングメディアの再生が可能です。
+ストリーミングメディアには、高速インターネット接続を要します。
 
-利用可能になったら再生しますか?
-(このオプションは、「環境設定」>「音声とビデオ」で後からでも変更できます)
+利用可能なときにストリーミングメディアを再生しますか?
+(このオプションは、「環境設定」 &gt; 「プライバシー」であとからでも変更できます。)
 		<usetemplate name="okcancelbuttons" notext="無効化" yestext="メディアを再生"/>
 	</notification>
 	<notification name="CannotDeedLandWaitingForServer">
@@ -1394,6 +1385,10 @@ F1キーを押してください。
 [INVITE]
 		<usetemplate name="okcancelbuttons" notext="辞退" yestext="参加"/>
 	</notification>
+	<notification name="JoinedTooManyGroups">
+		加入できるグループの最大限に達しました。 新しくグループに参加、または作成する前に、どれかグループから抜けてください。
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
 	<notification name="KickUser">
 		どんなメッセージを表示して、このユーザーを追い出しますか?
 		<form name="form">
@@ -1641,11 +1636,11 @@ L$[AMOUNT]で、このクラシファイド広告を今すぐ公開しますか
 		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
 	</notification>
 	<notification name="SetClassifiedMature">
-		この広告にMatureコンテンツは含まれていますか?
+		この広告に「控えめ」コンテンツは含まれていますか?
 		<usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="いいえ" yestext="はい"/>
 	</notification>
 	<notification name="SetGroupMature">
-		この広告にMatureコンテンツは含まれていますか?
+		このグループに「控えめ」コンテンツが含まれていますか?
 		<usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="いいえ" yestext="はい"/>
 	</notification>
 	<notification label="再起動を確認" name="ConfirmRestart">
@@ -1663,8 +1658,10 @@ L$[AMOUNT]で、このクラシファイド広告を今すぐ公開しますか
 		</form>
 	</notification>
 	<notification label="地域のレーティング区分指定変更済み" name="RegionMaturityChange">
-		この地域のレーティング区分指定がアップデートされました。
-この変更が地図に反映されるまでにはしばらく時間がかかります。
+		このリージョンのレーティング区分がアップデートされました。
+地図に変更が反映されるまで数分かかることがあります。
+
+アダルト専用リージョンに入るには、住人のアカウントが年齢確認か支払方法のいずれかで「確認済み」でなければなりません。
 	</notification>
 	<notification label="ボイスバージョンの不一致" name="VoiceVersionMismatch">
 		[APP_NAME] のこのバージョンは、このリージョンにおけるボイスチャットの互換性がありません。 ボイスチャットを正常に行うためには、[APP_NAME] のアップデートが必要です。
@@ -1784,16 +1781,6 @@ L$[AMOUNT]で、このクラシファイド広告を今すぐ公開しますか
 		このツールを利用して [http://secondlife.com/corporate/tos.php 利用規約] や [http://jp.secondlife.com/corporate/cs.php コミュニティスタンダード] の違反を報告してください。
 
 報告された嫌がらせはすべて調査・解決されます。 解決されたものは [http://secondlife.com/support/incidentreport.php Incident Report] で見ることができます。
-	</notification>
-	<notification name="HelpReportAbuseEmailEO">
-		重要: この報告は Linden Lab には送信されず、現在あなたがいるリージョンの所有者に送信されます。
-
-住人や訪問者へのサービスの一環として、現在いるリージョンの所有者は、このリージョン内のすべての報告を自ら受け取り、解決するよう設定しています。 Linden Lab はここから送信された報告の調査を行いません。
-
-リージョンの所有者は、このリージョンの不動産約款に記載されたローカルルールに則って報告に対応します。
-(「世界」メニューの「土地情報」で約款を確認できます。)
-
-この報告への解決策は、このリージョンでのみ適用されます。 [SECOND_LIFE] のその他のエリアにアクセスする住人には、この報告の結果には影響がありません。 [SECOND_LIFE] へのアクセスを制限できるのは、Linden Lab だけです。
 	</notification>
 	<notification name="HelpReportAbuseSelectCategory">
 		嫌がらせ報告のカテゴリを選択してください。
@@ -2034,8 +2021,7 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
 		ジェスチャーの [NAME] がデータベースに見つかりません。
 	</notification>
 	<notification name="UnableToLoadGesture">
-		ジェスチャー[NAME] を読み込むことができません。
-再度、試みてください。
+		[NAME] というジェスチャーを読み込むことができませんでした。
 	</notification>
 	<notification name="LandmarkMissing">
 		データベースにランドマークがありません。
@@ -2139,7 +2125,7 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
 		コミュニティスタンダードに明記されているコンテンツ制限により、あなたの検索語の一部が除外されました。
 	</notification>
 	<notification name="NoContentToSearch">
-		少なくともどれか一つコンテンツの種類を選択して検索を行ってください。(PG, Mature, Adult)
+		少なくともどれか一つコンテンツの種類を選択して検索を行ってください。(一般、控えめ、アダルト)
 	</notification>
 	<notification name="GroupVote">
 		[NAME] は投票の申請をしています:
@@ -2152,6 +2138,9 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
 	<notification name="SystemMessage">
 		[MESSAGE]
 	</notification>
+	<notification name="PaymentRecived">
+		[MESSAGE]
+	</notification>
 	<notification name="EventNotification">
 		イベント通知:
 
@@ -2201,8 +2190,7 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
  が所有するオブジェクトは、オーナーの持ち物に返却されました。
 	</notification>
 	<notification name="OtherObjectsReturned2">
-		選択された土地の区画上にあり、
-住人の[NAME]の所有だったオブジェクトはオーナーに返却されました。
+		「[NAME]」という名前の住人が所有する、選択した区画にあるオブジェクトは、所有者に返却されました。
 	</notification>
 	<notification name="GroupObjectsReturned">
 		選択されている区画上にあり、[GROUPNAME] というグループと共有だったオブジェクトは、オーナーの持ち物に返却されました。
@@ -2215,7 +2203,6 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
 	<notification name="ServerObjectMessage">
 		[NAME] からのメッセージ:
 [MSG]
-		<usetemplate name="okcancelbuttons" notext="OK" yestext="調べる"/>
 	</notification>
 	<notification name="NotSafe">
 		この土地ではダメージが有効です。
@@ -2327,8 +2314,8 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
 		有効な区画が見つかりませんでした。
 	</notification>
 	<notification name="ObjectGiveItem">
-		[NAME_SLURL] が所有する [OBJECTFROMNAME] が、あなたに [OBJECTTYPE] :
-[ITEM_SLURL] を渡しました
+		[NAME_SLURL] が所有する [OBJECTFROMNAME] という名前のオブジェクトが、あなたにこの [OBJECTTYPE] を渡しました:
+[ITEM_SLURL]
 		<form name="form">
 			<button name="Keep" text="受け取る"/>
 			<button name="Discard" text="破棄"/>
@@ -2336,8 +2323,8 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
 		</form>
 	</notification>
 	<notification name="ObjectGiveItemUnknownUser">
-		(不明の住人)が所有する [OBJECTFROMNAME] が、あなたに [OBJECTTYPE] :
-[ITEM_SLURL] を渡しました
+		(不明の住人)が所有する [OBJECTFROMNAME] という名前のオブジェクトが、あなたにこの [OBJECTTYPE] を渡しました:
+[ITEM_SLURL]
 		<form name="form">
 			<button name="Keep" text="受け取る"/>
 			<button name="Discard" text="破棄"/>
@@ -2345,12 +2332,12 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
 		</form>
 	</notification>
 	<notification name="UserGiveItem">
-		[NAME_SLURL] があなたに [OBJECTTYPE]:
-[ITEM_SLURL] を渡しました
+		[NAME_SLURL] があなたにこの [OBJECTTYPE] を渡しました:
+[ITEM_SLURL]
 		<form name="form">
-			<button name="Keep" text="受け取る"/>
 			<button name="Show" text="表示"/>
 			<button name="Discard" text="破棄"/>
+			<button name="Mute" text="ブロック"/>
 		</form>
 	</notification>
 	<notification name="GodMessage">
@@ -2375,6 +2362,9 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
 			<button name="Cancel" text="取り消し"/>
 		</form>
 	</notification>
+	<notification name="TeleportOfferSent">
+		[TO_NAME] にテレポートを送りました。
+	</notification>
 	<notification name="GotoURL">
 		[MESSAGE]
 [URL]
@@ -2393,8 +2383,12 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
 		<form name="form">
 			<button name="Accept" text="受け入れる"/>
 			<button name="Decline" text="辞退"/>
+			<button name="Send IM" text="IMを送信"/>
 		</form>
 	</notification>
+	<notification name="FriendshipOffered">
+		[TO_NAME] にフレンド登録を申し出ました。
+	</notification>
 	<notification name="OfferFriendshipNoMessage">
 		[NAME]は、
 フレンド登録を申し込んでいます。
@@ -2412,9 +2406,8 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
 		[NAME]は、フレンド 登録を断りました。
 	</notification>
 	<notification name="OfferCallingCard">
-		[FIRST] [LAST]が
-あなたにコーリングカードを送ってきました。
-これにより、あなたの持ち物にブックマークが追加され、この住人にすばやくIMすることができます。
+		[FIRST] [LAST] がコーリングカードを渡そうとしています。
+あなたの持ち物にブックマークが追加され、この住人に素早く IM を送ることができます。
 		<form name="form">
 			<button name="Accept" text="受け入れる"/>
 			<button name="Decline" text="辞退"/>
@@ -2494,14 +2487,6 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
 			<button name="Block" text="ブロック"/>
 		</form>
 	</notification>
-	<notification name="FirstBalanceIncrease">
-		L$ [AMOUNT] を受け取りました。
-あなたの L$ 残高は画面右上に表示されています。
-	</notification>
-	<notification name="FirstBalanceDecrease">
-		L$ [AMOUNT] を支払いました。
-あなたの L$ 残高は画面右上に表示されています。
-	</notification>
 	<notification name="BuyLindenDollarSuccess">
 		お支払ありがとうございます。
 
@@ -2509,58 +2494,17 @@ Webページにこれをリンクすると、他人がこの場所に簡単に
 
 [http://secondlife.com/account/ マイアカウント] の取引履歴ページで、支払状況を確認できます。
 	</notification>
-	<notification name="FirstSit">
-		着席中です。
-周囲を見るには矢印キーか AWSD キーを使ってください。
-立つときには「立ち上がる」ボタンをクリックしてください。
-	</notification>
-	<notification name="FirstMap">
-		地図をクリック・ドラッグして周囲を見てください。
-ダブルクリックするとテレポートします。
-右側のコントロールで場所を探したり背景を変更してください。
-	</notification>
-	<notification name="FirstBuild">
-		制作ツールを開きました。 見るものすべてがこのツールで作成されたものです。
-	</notification>
-	<notification name="FirstTeleport">
-		このリージョンでは特定のエリアにのみテレポートできます。 矢印が目的地を指しています。 矢印をクリックすると消えます。
-	</notification>
 	<notification name="FirstOverrideKeys">
 		あなたの移動キーをオブジェクトが操作しています。
 矢印かAWSDのキーで動作を確認してください。
 銃などのオブジェクトだと、一人称視点(マウスルック)に変更する必要があります。
 Mキーを押して変更します。
-	</notification>
-	<notification name="FirstAppearance">
-		容姿を編集中です。
-周囲を見るには矢印キーを使ってください。
-終わったら「すべて保存」を押してください。
-	</notification>
-	<notification name="FirstInventory">
-		これはあなたの持ち物です。所有しているアイテムが入っています。
-
-* アイテムを自分にドラッグして装着してください。
-* アイテムを地面にドラッグして Rez してください。
-* ノートカードをダブルクリックして開いてください。
 	</notification>
 	<notification name="FirstSandbox">
 		ここはサンドボックスエリアです。住人が制作を学ぶことができます。
 
 ここで制作されたものは時間が経つと削除されます。制作したアイテムを右クリックして「取る」を選び、持ち物に入れてお持ち帰りするのをお忘れなく。
 	</notification>
-	<notification name="FirstFlexible">
-		このオブジェクトはフレキシブルです。 フレキシスは、「物理」ではなく「ファントム」でなければなりません。
-	</notification>
-	<notification name="FirstDebugMenus">
-		アドバンスメニューを開きました。
-
-このメニューの有効・無効設定
-  Windows: Ctrl+Alt+D
-  Mac: &#8997;&#8984;D
-	</notification>
-	<notification name="FirstSculptedPrim">
-		スカルプトプリムを編集中です。 スカルプトには形状の輪郭を指定するための特別なテクスチャが必要です。
-	</notification>
 	<notification name="MaxListSelectMessage">
 		このリストから[MAX_SELECT]個までのアイテムを選択できます。
 	</notification>
@@ -2654,12 +2598,23 @@ Mキーを押して変更します。
 	<notification name="UnsupportedCommandSLURL">
 		クリックした SLurl はサポートされていません。
 	</notification>
+	<notification name="BlockedSLURL">
+		信用できないブラウザから SLurl が送られてきたので、セキュリティのためブロックされました。
+	</notification>
+	<notification name="ThrottledSLURL">
+		短期間のあいだに、信用できないブラウザから複数の SLurls が送られてきました。
+安全のために数秒間ブロックされます。
+	</notification>
 	<notification name="IMToast">
 		[MESSAGE]
 		<form name="form">
 			<button name="respondbutton" text="返答"/>
 		</form>
 	</notification>
+	<notification name="ConfirmCloseAll">
+		すべての IM を閉じますか?
+		<usetemplate name="okcancelignore" notext="キャンセル" yestext="OK"/>
+	</notification>
 	<notification name="AttachmentSaved">
 		アタッチメントが保存されました。
 	</notification>
@@ -2671,6 +2626,14 @@ Mキーを押して変更します。
 「[ERROR]」
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
+	<notification name="TextChatIsMutedByModerator">
+		モデレーターがあなたの文字チャットをミュートしました。
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="VoiceIsMutedByModerator">
+		モデレーターがあなたのボイスをミュートしました。
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
 	<notification name="ConfirmClearTeleportHistory">
 		テレポート履歴を削除しますか?
 		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_active_object_row.xml b/indra/newview/skins/default/xui/ja/panel_active_object_row.xml
new file mode 100644
index 00000000000..90491e84c5d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/panel_active_object_row.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_activeim_row">
+	<string name="unknown_obj">
+		不明のオブジェクト
+	</string>
+	<text name="object_name">
+		名前のないオブジェクト
+	</text>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/ja/panel_adhoc_control_panel.xml
index 364ba76763f..17e1283d240 100644
--- a/indra/newview/skins/default/xui/ja/panel_adhoc_control_panel.xml
+++ b/indra/newview/skins/default/xui/ja/panel_adhoc_control_panel.xml
@@ -1,8 +1,14 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="panel_im_control_panel">
-	<panel name="panel_call_buttons">
-		<button label="コール" name="call_btn"/>
-		<button label="コール終了" name="end_call_btn"/>
-		<button label="ボイスコントロール" name="voice_ctrls_btn"/>
-	</panel>
+	<layout_stack name="vertical_stack">
+		<layout_panel name="call_btn_panel">
+			<button label="コール" name="call_btn"/>
+		</layout_panel>
+		<layout_panel name="end_call_btn_panel">
+			<button label="コール終了" name="end_call_btn"/>
+		</layout_panel>
+		<layout_panel name="voice_ctrls_btn_panel">
+			<button label="ボイスコントロール" name="voice_ctrls_btn"/>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml
index 2efcb9f723e..03eaf33d922 100644
--- a/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml
@@ -23,4 +23,5 @@
 	</string>
 	<text name="avatar_name" value="不明"/>
 	<text name="last_interaction" value="0 ç§’"/>
+	<button name="profile_btn" tool_tip="プロフィールの表示"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml
index 58ef8c31071..5d6a6065aeb 100644
--- a/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml
@@ -4,7 +4,7 @@
 		ブロックリスト
 	</text>
 	<scroll_list name="blocked" tool_tip="現在ブロックされている住人一覧"/>
-	<button label="住人をブロック..." label_selected="住人をブロック..." name="Block resident..." tool_tip="ブロックしたい住人を選んでください"/>
+	<button label="アバターをブロック" label_selected="住人をブロック..." name="Block resident..." tool_tip="ブロックしたい住人を選んでください"/>
 	<button label="名前でオブジェクトをブロック..." label_selected="名前でオブジェクトをブロック..." name="Block object by name..." tool_tip="名前でブロックしたいオブジェクトを選んでください"/>
 	<button label="ブロック解除" label_selected="ブロック解除" name="Unblock" tool_tip="ブロックリストから住人・オブジェクトを削除"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_bottomtray.xml b/indra/newview/skins/default/xui/ja/panel_bottomtray.xml
index 5edc1b651d7..414413a9805 100644
--- a/indra/newview/skins/default/xui/ja/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/ja/panel_bottomtray.xml
@@ -8,7 +8,7 @@
 	</string>
 	<layout_stack name="toolbar_stack">
 		<layout_panel name="gesture_panel">
-			<gesture_combo_box label="ジェスチャー" name="Gesture" tool_tip="ジェスチャーの表示・非表示"/>
+			<gesture_combo_list label="ジェスチャー" name="Gesture" tool_tip="ジェスチャーの表示・非表示"/>
 		</layout_panel>
 		<layout_panel name="movement_panel">
 			<button label="移動" name="movement_btn" tool_tip="移動コントロールの表示・非表示"/>
@@ -19,5 +19,15 @@
 		<layout_panel name="snapshot_panel">
 			<button label="" name="snapshots" tool_tip="スナップショットを撮る"/>
 		</layout_panel>
+		<layout_panel name="im_well_panel">
+			<chiclet_im_well name="im_well">
+				<button name="Unread IM messages" tool_tip="Conversations"/>
+			</chiclet_im_well>
+		</layout_panel>
+		<layout_panel name="notification_well_panel">
+			<chiclet_notification name="notification_well">
+				<button name="Unread" tool_tip="通知"/>
+			</chiclet_notification>
+		</layout_panel>
 	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_classified_info.xml b/indra/newview/skins/default/xui/ja/panel_classified_info.xml
index 1a5933a4e90..7fc4e6f6741 100644
--- a/indra/newview/skins/default/xui/ja/panel_classified_info.xml
+++ b/indra/newview/skins/default/xui/ja/panel_classified_info.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="panel_classified_info">
 	<panel.string name="type_mature">
-		Mature
+		控えめ
 	</panel.string>
 	<panel.string name="type_pg">
-		PG コンテンツ
+		一般コンテンツ
 	</panel.string>
 	<text name="title" value="クラシファイド広告情報"/>
 	<scroll_container name="profile_scroll">
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_classified.xml b/indra/newview/skins/default/xui/ja/panel_edit_classified.xml
index ca065113d30..4cb5884f285 100644
--- a/indra/newview/skins/default/xui/ja/panel_edit_classified.xml
+++ b/indra/newview/skins/default/xui/ja/panel_edit_classified.xml
@@ -24,10 +24,10 @@
 			<button label="現在地に設定" name="set_to_curr_location_btn"/>
 			<combo_box name="content_type">
 				<combo_item name="mature_ci">
-					Matureコンテンツ
+					控えめコンテンツ
 				</combo_item>
 				<combo_item name="pg_ci">
-					PGコンテンツ
+					一般コンテンツ
 				</combo_item>
 			</combo_box>
 			<spinner label="L$" name="price_for_listing" tool_tip="掲載価格" value="50"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_profile.xml b/indra/newview/skins/default/xui/ja/panel_edit_profile.xml
index b232a8db61e..2a850ab29ca 100644
--- a/indra/newview/skins/default/xui/ja/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/ja/panel_edit_profile.xml
@@ -19,6 +19,9 @@
 	<string name="partner_edit_link_url">
 		http://www.secondlife.com/account/partners.php?lang=ja
 	</string>
+	<string name="my_account_link_url">
+		http://jp.secondlife.com/my
+	</string>
 	<string name="no_partner_text" value="なし"/>
 	<scroll_container name="profile_scroll">
 		<panel name="scroll_content_panel">
@@ -44,7 +47,7 @@
 				<text name="title_partner_text" value="マイパートナー:"/>
 				<text name="partner_edit_link" value="[[URL] 編集]"/>
 				<panel name="partner_data_panel">
-					<text name="partner_text" value="[FIRST] [LAST]"/>
+					<name_box name="partner_text" value="[FIRST] [LAST]"/>
 				</panel>
 			</panel>
 		</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_friends.xml b/indra/newview/skins/default/xui/ja/panel_friends.xml
index d4cf678d70a..80a68f8258b 100644
--- a/indra/newview/skins/default/xui/ja/panel_friends.xml
+++ b/indra/newview/skins/default/xui/ja/panel_friends.xml
@@ -1,53 +1,32 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="friends">
 	<string name="Multiple">
-		複数のフレンド...
+		複数のフレンド
 	</string>
-	<scroll_list name="friend_list"
-	     tool_tip="複数のフレンドを選択するには、ShiftキーまたはCtrlキーを押しながら名前をクリックします。">
-		<column name="icon_online_status" tool_tip="オンライン・ステータス" />
-		<column label="名前" name="friend_name" tool_tip="名前" />
-		<column name="icon_visible_online"
-		     tool_tip="フレンドは、あなたがオンラインかどうか確認することができます。" />
-		<column name="icon_visible_map"
-		     tool_tip="フレンドは、地図であなたの居場所を見つけることができます。" />
-		<column name="icon_edit_mine"
-		     tool_tip="フレンドは、オブジェクトを編集、削除、または取得することができます。" />
-		<column name="icon_edit_theirs"
-		     tool_tip="あなたは、このフレンドのオブジェクトを編集することができます。" />
+	<scroll_list name="friend_list" tool_tip="複数のフレンドを選択するには、ShiftキーまたはCtrlキーを押しながら名前をクリックします。">
+		<column name="icon_online_status" tool_tip="オンライン・ステータス"/>
+		<column label="名前" name="friend_name" tool_tip="名前"/>
+		<column name="icon_visible_online" tool_tip="フレンドは、あなたがオンラインかどうか確認することができます。"/>
+		<column name="icon_visible_map" tool_tip="フレンドは、地図であなたの居場所を見つけることができます。"/>
+		<column name="icon_edit_mine" tool_tip="フレンドは、オブジェクトを編集、削除、または取得することができます。"/>
+		<column name="icon_edit_theirs" tool_tip="あなたは、このフレンドのオブジェクトを編集することができます。"/>
 	</scroll_list>
 	<panel name="rights_container">
 		<text name="friend_name_label" right="-10">
 			フレンドを選択して権利を変更...
 		</text>
-		<check_box label="オンライン・ステータスの確認を許可する"
-		     name="online_status_cb"
-		     tool_tip="コーリングカードあるいはフレンドリストでこのフレンドがオンライン状態を確認できるよう設定" />
-		<check_box label="世界地図上であなたの居場所を検索可能にする"
-		     name="map_status_cb"
-		     tool_tip="このフレンドが地図で私の位置を発見できるように設定" />
-		<check_box label="オブジェクトの修正を許可する" name="modify_status_cb"
-		     tool_tip="このフレンドがオブジェクトを改造できる許可を与える" />
+		<check_box label="オンライン・ステータスの確認を許可する" name="online_status_cb" tool_tip="コーリングカードあるいはフレンドリストでこのフレンドがオンライン状態を確認できるよう設定"/>
+		<check_box label="世界地図上であなたの居場所を検索可能にする" name="map_status_cb" tool_tip="このフレンドが地図で私の位置を発見できるように設定"/>
+		<check_box label="オブジェクトの修正を許可する" name="modify_status_cb" tool_tip="このフレンドがオブジェクトを改造できる許可を与える"/>
 		<text name="process_rights_label">
 			権利変更をプロセス中...
 		</text>
 	</panel>
-	<pad left="-95" />
-	<button label="IM/コール" name="im_btn"
-	     tool_tip="インスタントメッセージ・セッションを開く"
-	     width="90" />
-	<button label="プロフィール" name="profile_btn"
-	     tool_tip="写真、グループ、およびその他の情報を表示します。"
-	     width="90" />
-	<button label="テレポート..." name="offer_teleport_btn"
-	     tool_tip="このフレンドに、あなたの現在のロケーションまでのテレポートを申し出ます。"
-	     width="90" />
-	<button label="支払う..." name="pay_btn"
-	     tool_tip="リンデンドル (L$) をこのフレンドにあげる"
-	     width="90" />
-	<button label="削除..." name="remove_btn"
-	     tool_tip="この人物をフレンドリストから外します。"
-	     width="90" />
-	<button label="追加..." name="add_btn"
-	     tool_tip="住人にフレンドシップを申請します。" width="90" />
+	<pad left="-95"/>
+	<button label="IM/コール" name="im_btn" tool_tip="インスタントメッセージ・セッションを開く" width="90"/>
+	<button label="プロフィール" name="profile_btn" tool_tip="写真、グループ、およびその他の情報を表示します。" width="90"/>
+	<button label="テレポート" name="offer_teleport_btn" tool_tip="このフレンドに、あなたの現在のロケーションまでのテレポートを申し出ます。" width="90"/>
+	<button label="支払う" name="pay_btn" tool_tip="リンデンドル (L$) をこのフレンドにあげる" width="90"/>
+	<button label="削除" name="remove_btn" tool_tip="この人物をフレンドリストから外します。" width="90"/>
+	<button label="追加" name="add_btn" tool_tip="フレンド登録を申し出る" width="90"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml b/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml
index 5369daed03a..1c89675c1ed 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml
@@ -1,9 +1,17 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="panel_im_control_panel">
-	<button label="グループ情報" name="group_info_btn"/>
-	<panel name="panel_call_buttons">
-		<button label="グループにコール" name="call_btn"/>
-		<button label="コール終了" name="end_call_btn"/>
-		<button label="ボイスコントロールを開く" name="voice_ctrls_btn"/>
-	</panel>
+	<layout_stack name="vertical_stack">
+		<layout_panel name="group_info_btn_panel">
+			<button label="グループ情報" name="group_info_btn"/>
+		</layout_panel>
+		<layout_panel name="call_btn_panel">
+			<button label="グループにコール" name="call_btn"/>
+		</layout_panel>
+		<layout_panel name="end_call_btn_panel">
+			<button label="コール終了" name="end_call_btn"/>
+		</layout_panel>
+		<layout_panel name="voice_ctrls_btn_panel">
+			<button label="ボイスコントロールを開く" name="voice_ctrls_btn"/>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_group_general.xml b/indra/newview/skins/default/xui/ja/panel_group_general.xml
index 98b118f58f7..538f3800bd6 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_general.xml
@@ -22,16 +22,16 @@
 		私のタイトル
 	</text>
 	<combo_box name="active_title" tool_tip="このグループをアクティブにしたときに、アバター名の上に表示されるタイトルを設定します。"/>
-	<check_box label="通知を受信" name="receive_notices" tool_tip="このグループからの通知を受信するかどうかの設定を行います。  グループからスパムが送られてくる場合はこのボックスのチェックを外してください。"/>
+	<check_box label="グループ通知を受信" name="receive_notices" tool_tip="このグループからの通知を受信するかどうかの設定を行います。  グループからスパムが送られてくる場合はこのボックスのチェックを外してください。"/>
 	<check_box label="プロフィールに表示" name="list_groups_in_profile" tool_tip="あなたのプロフィールにこのグループを表示するかどうかの設定を行います。"/>
 	<panel name="preferences_container">
 		<check_box label="会員募集" name="open_enrollement" tool_tip="招待されなくても新規メンバーが加入できるかどうかを設定します。"/>
 		<check_box label="入会費" name="check_enrollment_fee" tool_tip="入会費が必要かどうかを設定します。"/>
 		<spinner label="L$" name="spin_enrollment_fee" tool_tip="「入会費」にチェックが入っている場合、新規メンバーは指定された入会費を支払わなければグループに入れません。"/>
 		<check_box initial_value="true" label="検索に表示" name="show_in_group_list" tool_tip="このグループを検索結果に表示させます"/>
-		<combo_box name="group_mature_check" tool_tip="グループ情報が Mature 向けかどうかの設定をします。">
-			<combo_box.item label="PGコンテンツ" name="pg"/>
-			<combo_box.item label="Matureコンテンツ" name="mature"/>
+		<combo_box name="group_mature_check" tool_tip="あなたのグループに「控えめ」にレート設定された情報があるかどうかを設定します">
+			<combo_box.item label="一般コンテンツ" name="pg"/>
+			<combo_box.item label="控えめコンテンツ" name="mature"/>
 		</combo_box>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml
index 7c8cb859907..0af1ce2ef23 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml
@@ -31,6 +31,8 @@
 	</accordion>
 	<panel name="button_row">
 		<button label="作成" label_selected="新しいグループ" name="btn_create"/>
+		<button label="グループチャット" name="btn_chat"/>
+		<button label="グループコール" name="btn_call"/>
 		<button label="保存" label_selected="保存" name="btn_apply"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_group_invite.xml b/indra/newview/skins/default/xui/ja/panel_group_invite.xml
index eddb0c36121..dc583591330 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_invite.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_invite.xml
@@ -7,13 +7,10 @@
 		(ローディング...)
 	</panel.string>
 	<panel.string name="already_in_group">
-		何人かのアバターは既にグループ加入済みのため、招待されませんでした。
+		選択した住人のなかに、既にグループに所属している人がいるため、招待を送ることができませんでした。
 	</panel.string>
 	<text bottom_delta="-96" font="SansSerifSmall" height="72" name="help_text">
-		あなたのグループに一度に複数の
-住人を招待することができます。
-「リストから住人を選択」
-をクリックしてください。
+		グループには一度に複数の住人を招待することができます。 「リストから住人を選択」をクリックしてください。
 	</text>
 	<button bottom_delta="-10" label="リストから住人を選択" name="add_button" tool_tip=""/>
 	<name_list bottom_delta="-160" height="156" name="invitee_list" tool_tip="Ctrl キーを押しながら複数の住人をクリックできます"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_group_list_item.xml b/indra/newview/skins/default/xui/ja/panel_group_list_item.xml
index a652e3bf11d..4b548049c8b 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_list_item.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="不明"/>
+	<button name="profile_btn" tool_tip="プロフィールの表示"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_group_notices.xml b/indra/newview/skins/default/xui/ja/panel_group_notices.xml
index 684e22a4da2..c5168c4d7cc 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_notices.xml
@@ -1,11 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="通知" name="notices_tab">
 	<panel.string name="help_text">
-		通知でメッセージと
-アイテムを添付して送ることができます。 通知を受け取る権限のある役割の
-グループメンバーが
-受け取ることができます。 通知を受け取りたくない場合は
-一般タブから設定してください。
+		通知でメッセージを送ることができ、通知にアイテムを添付することができます。
+通知を受け取ることができる「役割」にあるメンバーだけに送信されます。
+「一般」タブで通知の受信をオフにすることができます。
 	</panel.string>
 	<panel.string name="no_notices_text">
 		過去の通知はありません
@@ -24,7 +22,7 @@
 		見つかりませんでした
 	</text>
 	<button label="新しい通知を作成" label_selected="新しい通知を作成" name="create_new_notice" tool_tip="新しい通知を作成"/>
-	<button label="更新" label_selected="リスト更新" name="refresh_notices"/>
+	<button label="更新" label_selected="リスト更新" name="refresh_notices" tool_tip="通知リストを更新"/>
 	<panel label="新しい通知を作成" name="panel_create_new_notice">
 		<text name="lbl">
 			通知を作成
@@ -39,11 +37,11 @@
 			添付:
 		</text>
 		<text name="string">
-			添付するアイテムをここにドラッグ -- &gt;
+			ここにアイテムをドラッグ&ドロップして添付してください:
 		</text>
 		<button label="取り外す" label_selected="添付物を削除" name="remove_attachment"/>
 		<button label="送信" label_selected="送信" name="send_notice"/>
-		<group_drop_target name="drop_target" tool_tip="持ち物からアイテムをメッセージ欄にドラッグしてください。通知と一緒に送信されます。送信するにはコピー、譲渡が可能なオブジェクトである必要があります。"/>
+		<group_drop_target name="drop_target" tool_tip="持ち物のアイテムをこのボックスにドラッグして、通知と一緒に送ります。 添付するには、そのアイテムのコピーと再販・プレゼントの権限があなたにある必要があります。"/>
 	</panel>
 	<panel label="過去の通知を表示" name="panel_view_past_notice">
 		<text name="lbl">
diff --git a/indra/newview/skins/default/xui/ja/panel_group_notify.xml b/indra/newview/skins/default/xui/ja/panel_group_notify.xml
index 2edd0541804..7135ae780d5 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_notify.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_notify.xml
@@ -8,5 +8,5 @@
 	</panel>
 	<text_editor name="message" value="message"/>
 	<text name="attachment" value="添付アイテム"/>
-	<button label="Ok" name="btn_ok"/>
+	<button label="OK" name="btn_ok"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_im_control_panel.xml b/indra/newview/skins/default/xui/ja/panel_im_control_panel.xml
index 138a9c63603..bfadcb13d30 100644
--- a/indra/newview/skins/default/xui/ja/panel_im_control_panel.xml
+++ b/indra/newview/skins/default/xui/ja/panel_im_control_panel.xml
@@ -1,13 +1,27 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="panel_im_control_panel">
 	<text name="avatar_name" value="不明"/>
-	<button label="プロフィール" name="view_profile_btn"/>
-	<button label="フレンド登録" name="add_friend_btn"/>
-	<button label="テレポート" name="teleport_btn"/>
-	<button label="共有" name="share_btn"/>
-	<panel name="panel_call_buttons">
-		<button label="コール" name="call_btn"/>
-		<button label="コール終了" name="end_call_btn"/>
-		<button label="ボイスコントロール" name="voice_ctrls_btn"/>
-	</panel>
+	<layout_stack name="button_stack">
+		<layout_panel name="view_profile_btn_panel">
+			<button label="プロフィール" name="view_profile_btn"/>
+		</layout_panel>
+		<layout_panel name="add_friend_btn_panel">
+			<button label="フレンド登録" name="add_friend_btn"/>
+		</layout_panel>
+		<layout_panel name="teleport_btn_panel">
+			<button label="テレポート" name="teleport_btn"/>
+		</layout_panel>
+		<layout_panel name="share_btn_panel">
+			<button label="共有" name="share_btn"/>
+		</layout_panel>
+		<layout_panel name="call_btn_panel">
+			<button label="コール" name="call_btn"/>
+		</layout_panel>
+		<layout_panel name="end_call_btn_panel">
+			<button label="コール終了" name="end_call_btn"/>
+		</layout_panel>
+		<layout_panel name="voice_ctrls_btn_panel">
+			<button label="ボイスコントロール" name="voice_ctrls_btn"/>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_landmark_info.xml b/indra/newview/skins/default/xui/ja/panel_landmark_info.xml
index 0f1e9b49621..9129c66a45b 100644
--- a/indra/newview/skins/default/xui/ja/panel_landmark_info.xml
+++ b/indra/newview/skins/default/xui/ja/panel_landmark_info.xml
@@ -21,6 +21,7 @@
 	<string name="icon_PG" value="parcel_drk_PG"/>
 	<string name="icon_M" value="parcel_drk_M"/>
 	<string name="icon_R" value="parcel_drk_R"/>
+	<button name="back_btn" tool_tip="戻る"/>
 	<text name="title" value="場所のプロフィール"/>
 	<scroll_container name="place_scroll">
 		<panel name="scrolling_panel">
diff --git a/indra/newview/skins/default/xui/ja/panel_login.xml b/indra/newview/skins/default/xui/ja/panel_login.xml
index 0c1505255e5..82c52abf385 100644
--- a/indra/newview/skins/default/xui/ja/panel_login.xml
+++ b/indra/newview/skins/default/xui/ja/panel_login.xml
@@ -6,36 +6,40 @@
 	<panel.string name="forgot_password_url">
 		http://secondlife.com/account/request.php?lang=ja
 	</panel.string>
-	<panel name="login_widgets">
-		<text name="first_name_text">
-			ファーストネーム:
-		</text>
-		<line_editor name="first_name_edit" tool_tip="[SECOND_LIFE] ファーストネーム"/>
-		<text name="last_name_text">
-			ラストネーム:
-		</text>
-		<line_editor name="last_name_edit" tool_tip="[SECOND_LIFE] ラストネーム"/>
-		<text name="password_text">
-			パスワード:
-		</text>
-		<button label="ログイン" label_selected="ログイン" name="connect_btn"/>
-		<text name="start_location_text">
-			ログイン位置:
-		</text>
-		<combo_box name="start_location_combo">
-			<combo_box.item label="最後にログアウトした場所" name="MyLastLocation"/>
-			<combo_box.item label="自宅(ホーム)" name="MyHome"/>
-			<combo_box.item label="<地域名を入力>" name="Typeregionname"/>
-		</combo_box>
-		<check_box label="パスワードを記憶" name="remember_check"/>
-		<text name="create_new_account_text">
-			新規アカウントを作成
-		</text>
-		<text name="forgot_password_text">
-			名前またはパスワードをお忘れですか?
-		</text>
-		<text name="channel_text">
-			[VERSION]
-		</text>
-	</panel>
+	<layout_stack name="login_widgets">
+		<layout_panel name="login">
+			<text name="first_name_text">
+				ファーストネーム:
+			</text>
+			<line_editor label="最初" name="first_name_edit" tool_tip="[SECOND_LIFE] ファーストネーム"/>
+			<text name="last_name_text">
+				ラストネーム:
+			</text>
+			<line_editor label="最後" name="last_name_edit" tool_tip="[SECOND_LIFE] ラストネーム"/>
+			<text name="password_text">
+				パスワード:
+			</text>
+			<check_box label="記憶する" name="remember_check"/>
+			<text name="start_location_text">
+				開始地点:
+			</text>
+			<combo_box name="start_location_combo">
+				<combo_box.item label="最後にログアウトした場所" name="MyLastLocation"/>
+				<combo_box.item label="ホーム" name="MyHome"/>
+				<combo_box.item label="<地域名を入力>" name="Typeregionname"/>
+			</combo_box>
+			<button label="ログイン" name="connect_btn"/>
+		</layout_panel>
+		<layout_panel name="links">
+			<text name="create_new_account_text">
+				お申し込み
+			</text>
+			<text name="forgot_password_text">
+				名前またはパスワードをお忘れですか?
+			</text>
+			<text name="login_help">
+				ログインの方法
+			</text>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_main_inventory.xml b/indra/newview/skins/default/xui/ja/panel_main_inventory.xml
index 8f8e113e645..d533ce5e0df 100644
--- a/indra/newview/skins/default/xui/ja/panel_main_inventory.xml
+++ b/indra/newview/skins/default/xui/ja/panel_main_inventory.xml
@@ -3,10 +3,10 @@
 	<panel.string name="Title">
 		もの
 	</panel.string>
-	<filter_editor label="フィルター" name="inventory search editor"/>
+	<filter_editor label="持ち物をフィルター" name="inventory search editor"/>
 	<tab_container name="inventory filter tabs">
-		<inventory_panel label="すべて" name="All Items"/>
-		<inventory_panel label="最近の入手アイテム" name="Recent Items"/>
+		<inventory_panel label="持ち物" name="All Items"/>
+		<inventory_panel label="最新" name="Recent Items"/>
 	</tab_container>
 	<panel name="bottom_panel">
 		<button name="options_gear_btn" tool_tip="その他のオプションを表示"/>
@@ -32,7 +32,7 @@
 		<menu label="新規作成" name="Create">
 			<menu_item_call label="フォルダ" name="New Folder"/>
 			<menu_item_call label="スクリプト" name="New Script"/>
-			<menu_item_call label="ノート" name="New Note"/>
+			<menu_item_call label="新しいノートカード" name="New Note"/>
 			<menu_item_call label="ジェスチャー" name="New Gesture"/>
 			<menu label="衣類" name="New Clothes">
 				<menu_item_call label="シャツ" name="New Shirt"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_media_settings_general.xml b/indra/newview/skins/default/xui/ja/panel_media_settings_general.xml
index 18c270e43da..74e414c3816 100644
--- a/indra/newview/skins/default/xui/ja/panel_media_settings_general.xml
+++ b/indra/newview/skins/default/xui/ja/panel_media_settings_general.xml
@@ -1,28 +1,20 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="一般" name="Media Settings General">
 	<text name="home_label">
-		ホーム URL:
+		ホームページ:
 	</text>
-	<line_editor name="home_url" tool_tip="このメディアソースの URL"/>
+	<text name="home_fails_whitelist_label">
+		(このページは指定したホワイトリストをパスしません)
+	</text>
+	<line_editor name="home_url" tool_tip="このメディアソースのホームページ"/>
 	<text name="preview_label">
 		プレビュー
 	</text>
 	<text name="current_url_label">
-		現在の URL:
+		現在のページ:
 	</text>
-	<line_editor name="current_url" tool_tip="現在のメディアソースの URL" value=""/>
+	<text name="current_url" tool_tip="メディアソースの現在のページ" value=""/>
 	<button label="リセット" name="current_url_reset_btn"/>
-	<text name="controls_label">
-		コントロール:
-	</text>
-	<combo_box name="controls">
-		<combo_item name="Standard">
-			標準
-		</combo_item>
-		<combo_item name="Mini">
-			ミニ
-		</combo_item>
-	</combo_box>
 	<check_box initial_value="false" label="自動ループ" name="auto_loop"/>
 	<check_box initial_value="false" label="最初のクリック" name="first_click_interact"/>
 	<check_box initial_value="false" label="自動ズーム" name="auto_zoom"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/ja/panel_media_settings_permissions.xml
index 357cbe372ab..223bd3e28cc 100644
--- a/indra/newview/skins/default/xui/ja/panel_media_settings_permissions.xml
+++ b/indra/newview/skins/default/xui/ja/panel_media_settings_permissions.xml
@@ -1,9 +1,20 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="コントロール" name="Media settings for controls">
-	<check_box initial_value="false" label="ナビゲーションと相互作用力を無効にする" name="perms_owner_interact"/>
-	<check_box initial_value="false" label="コントロールバーを非表示にする" name="perms_owner_control"/>
-	<check_box initial_value="false" label="ナビゲーションと相互作用力を無効にする" name="perms_group_interact"/>
-	<check_box initial_value="false" label="コントロールバーを非表示にする" name="perms_group_control"/>
-	<check_box initial_value="false" label="ナビゲーションと相互作用力を無効にする" name="perms_anyone_interact"/>
-	<check_box initial_value="false" label="コントロールバーを非表示にする" name="perms_anyone_control"/>
+<panel label="カスタマイズ" name="Media settings for controls">
+	<text name="controls_label">
+		コントロール:
+	</text>
+	<combo_box name="controls">
+		<combo_item name="Standard">
+			標準
+		</combo_item>
+		<combo_item name="Mini">
+			ミニ
+		</combo_item>
+	</combo_box>
+	<check_box initial_value="false" label="ナビゲーションと相互作用力を有効にする" name="perms_owner_interact"/>
+	<check_box initial_value="false" label="コントロールバーを表示する" name="perms_owner_control"/>
+	<check_box initial_value="false" label="ナビゲーションと相互作用力を有効にする" name="perms_group_interact"/>
+	<check_box initial_value="false" label="コントロールバーを表示する" name="perms_group_control"/>
+	<check_box initial_value="false" label="ナビゲーションと相互作用力を有効にする" name="perms_anyone_interact"/>
+	<check_box initial_value="false" label="コントロールバーを表示する" name="perms_anyone_control"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_media_settings_security.xml b/indra/newview/skins/default/xui/ja/panel_media_settings_security.xml
index ed0ac0d417a..7822123a30e 100644
--- a/indra/newview/skins/default/xui/ja/panel_media_settings_security.xml
+++ b/indra/newview/skins/default/xui/ja/panel_media_settings_security.xml
@@ -1,6 +1,12 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="セキュリティ" name="Media Settings Security">
-	<check_box initial_value="false" label="指定した URL にのみアクセスを許可(接頭辞)" name="whitelist_enable"/>
+	<check_box initial_value="false" label="指定したURLパターンにのみアクセスを許可する" name="whitelist_enable"/>
+	<text name="home_url_fails_some_items_in_whitelist">
+		ホームページに失敗したエントリーがマークされました:
+	</text>
 	<button label="追加" name="whitelist_add"/>
 	<button label="削除" name="whitelist_del"/>
+	<text name="home_url_fails_whitelist">
+		警告: 「一般」タブで指定されたホームページは、このホワイトリストをパスできませんでした。 有効なエントリーが追加されるまでは、無効になります。
+	</text>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_my_profile.xml b/indra/newview/skins/default/xui/ja/panel_my_profile.xml
index 5f773a13782..4cce3798cff 100644
--- a/indra/newview/skins/default/xui/ja/panel_my_profile.xml
+++ b/indra/newview/skins/default/xui/ja/panel_my_profile.xml
@@ -4,52 +4,44 @@
 		[ACCTTYPE]
 [PAYMENTINFO] [AGEVERIFICATION]
 	</string>
+	<string name="payment_update_link_url">
+		http://www.secondlife.com/account/billing.php?lang=ja
+	</string>
+	<string name="partner_edit_link_url">
+		http://www.secondlife.com/account/billing.php?lang=ja
+	</string>
+	<string name="my_account_link_url" value="http://secondlife.com/account"/>
 	<string name="no_partner_text" value="なし"/>
+	<string name="no_group_text" value="なし"/>
 	<string name="RegisterDateFormat">
 		[REG_DATE] ([AGE])
 	</string>
-	<scroll_container name="profile_scroll">
-		<panel name="scroll_content_panel">
-			<panel name="second_life_image_panel">
-				<icon label="" name="2nd_life_edit_icon" tool_tip="下の「プロフィールの編集」ボタンを押して画像を変更します"/>
-				<text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
-				<expandable_text name="sl_description_edit">
-					Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
-				</expandable_text>
-			</panel>
-			<panel name="first_life_image_panel">
-				<icon label="" name="real_world_edit_icon" tool_tip="下の「プロフィールの編集」ボタンを押して画像を変更します"/>
-				<text name="title_rw_descr_text" value="現実世界:"/>
-				<expandable_text name="fl_description_edit">
-					Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
-				</expandable_text>
-			</panel>
-			<text name="me_homepage_text">
-				Web サイト:
-			</text>
-			<text name="title_member_text" value="メンバー登録:"/>
-			<text name="register_date" value="05/31/1976"/>
-			<text name="title_acc_status_text" value="アカウントの状態:"/>
-			<text name="acc_status_text" value="住人。 支払情報未登録。"/>
-			<text name="title_partner_text" value="パートナー:"/>
-			<panel name="partner_data_panel">
-				<text name="partner_text" value="[FIRST] [LAST]"/>
-			</panel>
-			<text name="title_groups_text" value="グループ:"/>
-			<expandable_text name="sl_groups">
-				Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
-			</expandable_text>
-		</panel>
-	</scroll_container>
-	<panel name="profile_buttons_panel">
-		<button label="フレンド登録" name="add_friend"/>
-		<button label="IM" name="im"/>
-		<button label="コール" name="call"/>
-		<button label="地図" name="show_on_map_btn"/>
-		<button label="テレポート" name="teleport"/>
-	</panel>
-	<panel name="profile_me_buttons_panel">
-		<button label="プロフィールの編集" name="edit_profile_btn"/>
-		<button label="容姿の編集" name="edit_appearance_btn"/>
-	</panel>
+	<layout_stack name="layout">
+		<layout_panel name="profile_stack">
+			<scroll_container name="profile_scroll">
+				<panel name="scroll_content_panel">
+					<panel name="second_life_image_panel">
+						<icon label="" name="2nd_life_edit_icon" tool_tip="下の「プロフィールの編集」ボタンを押して画像を変更します"/>
+						<text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
+					</panel>
+					<panel name="first_life_image_panel">
+						<icon label="" name="real_world_edit_icon" tool_tip="下の「プロフィールの編集」ボタンを押して画像を変更します"/>
+						<text name="title_rw_descr_text" value="現実世界:"/>
+					</panel>
+					<text name="title_member_text" value="住人となった日:"/>
+					<text name="title_acc_status_text" value="アカウントの状態:"/>
+					<text name="acc_status_text">
+						住人。 支払情報未登録。
+              リンデン。
+					</text>
+					<text name="title_partner_text" value="パートナー:"/>
+					<text name="title_groups_text" value="グループ:"/>
+				</panel>
+			</scroll_container>
+		</layout_panel>
+		<layout_panel name="profile_me_buttons_panel">
+			<button label="プロフィールの編集" name="edit_profile_btn" tool_tip="個人的な情報を編集します"/>
+			<button label="容姿の編集" name="edit_appearance_btn" tool_tip="見た目を作成・編集します: (身体的データ、衣類など)"/>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml b/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml
index ecfde1bfc69..a154442095a 100644
--- a/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml
@@ -9,4 +9,7 @@
 			<combo_editor label="[SECOND_LIFE] を検索:" name="search_combo_editor"/>
 		</search_combo_box>
 	</panel>
+	<favorites_bar name="favorite">
+		<chevron_button name="&gt;&gt;" tool_tip="お気に入りをもっと表示"/>
+	</favorites_bar>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_notes.xml b/indra/newview/skins/default/xui/ja/panel_notes.xml
index 5feee6e2804..1948c54359b 100644
--- a/indra/newview/skins/default/xui/ja/panel_notes.xml
+++ b/indra/newview/skins/default/xui/ja/panel_notes.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="メモとプライバシー" name="panel_notes">
 	<layout_stack name="layout">
-		<panel name="notes_stack">
+		<layout_panel name="notes_stack">
 			<scroll_container name="profile_scroll">
 				<panel name="profile_scroll_panel">
 					<text name="status_message" value="個人的メモ:"/>
@@ -11,13 +11,13 @@
 					<check_box label="私のオブジェクトの編集・削除・取得" name="objects_check"/>
 				</panel>
 			</scroll_container>
-		</panel>
-		<panel name="notes_buttons_panel">
-			<button label="追加" name="add_friend"/>
-			<button label="IM" name="im"/>
-			<button label="コール" name="call"/>
-			<button label="地図" name="show_on_map_btn"/>
-			<button label="テレポート" name="teleport"/>
-		</panel>
+		</layout_panel>
+		<layout_panel name="notes_buttons_panel">
+			<button label="フレンド登録" name="add_friend" tool_tip="フレンド登録を申し出ます"/>
+			<button label="IM" name="im" tool_tip="インスタントメッセージを開きます"/>
+			<button label="コール" name="call" tool_tip="この住人にコールする"/>
+			<button label="地図" name="show_on_map_btn" tool_tip="住人を地図上で表示する"/>
+			<button label="テレポート" name="teleport" tool_tip="テレポートを送る"/>
+		</layout_panel>
 	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml
index 9ce0156bd49..a109b1ab514 100644
--- a/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml
+++ b/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml
@@ -1,13 +1,14 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="Outfits">
-	<accordion name="outfits_accordion">
-		<accordion_tab name="tab_outfits" title="アウトフィットバー"/>
-		<accordion_tab name="tab_cof" title="現在のアウトフィットバー"/>
-	</accordion>
-	<button label="&gt;" name="selector" tool_tip="アウトフィットのプロパティを表示"/>
+<panel label="もの" name="Outfits">
+	<tab_container name="appearance_tabs">
+		<inventory_panel label="マイ アウトフィット" name="outfitslist_tab"/>
+		<inventory_panel label="着用中" name="cof_accordionpanel"/>
+	</tab_container>
 	<panel name="bottom_panel">
 		<button name="options_gear_btn" tool_tip="その他のオプションを表示"/>
-		<button name="add_btn" tool_tip="新しいアイテムの追加"/>
 		<dnd_button name="trash_btn" tool_tip="選択したアイテムを削除"/>
+		<button label="アウトフィットを保存する" name="make_outfit_btn" tool_tip="容姿をアウトフィットに保存する"/>
+		<button label="装着" name="wear_btn" tool_tip="選択したアウトフィットを着用する"/>
+		<button label="M" name="look_edit_btn"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/ja/panel_outfits_inventory_gear_default.xml
index dfcd9d09326..e8caab0696d 100644
--- a/indra/newview/skins/default/xui/ja/panel_outfits_inventory_gear_default.xml
+++ b/indra/newview/skins/default/xui/ja/panel_outfits_inventory_gear_default.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="menu_gear_default">
-	<menu_item_call label="新しいアウトフィット" name="new"/>
-	<menu_item_call label="アウトフィットを着る" name="wear"/>
+	<menu_item_call label="着用中のアウトフィットを入れ替える" name="wear"/>
+	<menu_item_call label="着用中のアウトフィットから取り除く" name="remove"/>
+	<menu_item_call label="名前の変更" name="rename"/>
+	<menu_item_call label="リンクを外す" name="remove_link"/>
 	<menu_item_call label="アウトフィットを削除する" name="delete"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/ja/panel_people.xml b/indra/newview/skins/default/xui/ja/panel_people.xml
index 5dffbb33ea4..c955cf6e483 100644
--- a/indra/newview/skins/default/xui/ja/panel_people.xml
+++ b/indra/newview/skins/default/xui/ja/panel_people.xml
@@ -49,5 +49,6 @@
 		<button label="テレポート" name="teleport_btn" tool_tip="テレポートを送る"/>
 		<button label="グループ情報" name="group_info_btn" tool_tip="グループ情報を表示"/>
 		<button label="グループチャット" name="chat_btn" tool_tip="チャットを開始"/>
+		<button label="グループにコールする" name="group_call_btn" tool_tip="このグループにコールする"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_picks.xml b/indra/newview/skins/default/xui/ja/panel_picks.xml
index 3d3b8bb3dc6..f74bf7a073c 100644
--- a/indra/newview/skins/default/xui/ja/panel_picks.xml
+++ b/indra/newview/skins/default/xui/ja/panel_picks.xml
@@ -2,20 +2,16 @@
 <panel label="ピック" name="panel_picks">
 	<string name="no_picks" value="ピックなし"/>
 	<string name="no_classifieds" value="クラシファイド広告なし"/>
-	<text name="empty_picks_panel_text">
-		ここにはピック・クラシファイド広告はありません。
-	</text>
 	<accordion name="accordion">
 		<accordion_tab name="tab_picks" title="ピック"/>
 		<accordion_tab name="tab_classifieds" title="クラシファイド広告"/>
 	</accordion>
 	<panel label="bottom_panel" name="edit_panel">
-		<button name="new_btn" tool_tip="現在地のピックを新規作成"/>
+		<button name="new_btn" tool_tip="現在地の新しいピック、またはクラシファイド広告を作成します"/>
 	</panel>
 	<panel name="buttons_cucks">
-		<button label="情報" name="info_btn"/>
-		<button label="テレポート" name="teleport_btn"/>
-		<button label="地図" name="show_on_map_btn"/>
-		<button label="â–¼" name="overflow_btn"/>
+		<button label="情報" name="info_btn" tool_tip="ピックの情報を表示"/>
+		<button label="テレポート" name="teleport_btn" tool_tip="該当するエリアにテレポート"/>
+		<button label="地図" name="show_on_map_btn" tool_tip="世界地図に該当するエリアを表示"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_place_profile.xml b/indra/newview/skins/default/xui/ja/panel_place_profile.xml
index 3ec5a3a2941..ef4b71c4aa5 100644
--- a/indra/newview/skins/default/xui/ja/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/ja/panel_place_profile.xml
@@ -56,6 +56,7 @@
 	<string name="icon_ScriptsNo" value="parcel_drk_ScriptsNo"/>
 	<string name="icon_Damage" value="parcel_drk_Damage"/>
 	<string name="icon_DamageNo" value="parcel_drk_DamageNo"/>
+	<button name="back_btn" tool_tip="戻る"/>
 	<text name="title" value="場所のプロフィール"/>
 	<scroll_container name="place_scroll">
 		<panel name="scrolling_panel">
@@ -92,7 +93,7 @@
 						<text name="region_type_label" value="種類:"/>
 						<text name="region_type" value="Moose"/>
 						<text name="region_rating_label" value="レーティング区分:"/>
-						<text name="region_rating" value="Explicit"/>
+						<text name="region_rating" value="アダルト"/>
 						<text name="region_owner_label" value="所有者:"/>
 						<text name="region_owner" value="moose Van Moose"/>
 						<text name="region_group_label" value="グループ:"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_places.xml b/indra/newview/skins/default/xui/ja/panel_places.xml
index f74b1e52e8b..b1c7a3308f9 100644
--- a/indra/newview/skins/default/xui/ja/panel_places.xml
+++ b/indra/newview/skins/default/xui/ja/panel_places.xml
@@ -2,11 +2,12 @@
 <panel label="場所" name="places panel">
 	<string name="landmarks_tab_title" value="マイ ランドマーク"/>
 	<string name="teleport_history_tab_title" value="テレポートの履歴"/>
-	<filter_editor label="フィルター" name="Filter"/>
+	<filter_editor label="場所をフィルター" name="Filter"/>
 	<panel name="button_panel">
-		<button label="テレポート" name="teleport_btn"/>
+		<button label="テレポート" name="teleport_btn" tool_tip="該当するエリアにテレポートします"/>
 		<button label="地図" name="map_btn"/>
-		<button label="編集" name="edit_btn"/>
+		<button label="編集" name="edit_btn" tool_tip="ランドマークの情報を編集します"/>
+		<button name="overflow_btn" tool_tip="その他のオプションを表示"/>
 		<button label="閉じる" name="close_btn"/>
 		<button label="キャンセル" name="cancel_btn"/>
 		<button label="保存" name="save_btn"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml
index 3cd13948d2d..16af659326e 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml
@@ -6,9 +6,9 @@
 	<check_box label="リンデンドルを使用・受け取るとき" name="notify_money_change_checkbox"/>
 	<check_box label="フレンドがログアウト・ログインするとき" name="friends_online_notify_checkbox"/>
 	<text name="show_label" width="300">
-		常に表示する警告メッセージ:
+		常に表示する通知:
 	</text>
 	<text name="dont_show_label">
-		表示しない警告メッセージ:
+		表示しない通知:
 	</text>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
index 7abeb361681..ece18a75ca1 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="チャット" name="chat">
 	<radio_group name="chat_font_size">
-		<radio_item label="小" name="radio"/>
-		<radio_item label="中" name="radio2"/>
-		<radio_item label="大" name="radio3"/>
+		<radio_item label="小" name="radio" value="0"/>
+		<radio_item label="中" name="radio2" value="1"/>
+		<radio_item label="大" name="radio3" value="2"/>
 	</radio_group>
 	<color_swatch label="自分" name="user"/>
 	<text name="text_box1">
@@ -40,4 +40,8 @@
 	<check_box initial_value="true" label="チャット中はタイピング動作のアニメーションを再生" name="play_typing_animation"/>
 	<check_box label="オフライン時に受け取った IM をメールで送信" name="send_im_to_email"/>
 	<check_box label="文字チャットの履歴を有効にする" name="plain_text_chat_history"/>
+	<radio_group name="chat_window" tool_tip="インスタントメッセージを別ウィンドウ、または1つのウィンドウに複数タブで表示(要再起動)">
+		<radio_item label="複数ウィンドウ" name="radio" value="0"/>
+		<radio_item label="1つのウィンドウ" name="radio2" value="1"/>
+	</radio_group>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_general.xml b/indra/newview/skins/default/xui/ja/panel_preferences_general.xml
index 387558af73d..765662b96a3 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_general.xml
@@ -15,7 +15,6 @@
 		<combo_box.item label="Polski (ポーランド語) - ベータ" name="Polish"/>
 		<combo_box.item label="Português (ポルトガル語) – ベータ" name="Portugese"/>
 		<combo_box.item label="日本語 – ベータ" name="(Japanese)"/>
-		<combo_box.item label="テスト言語" name="TestLanguage"/>
 	</combo_box>
 	<text name="language_textbox2">
 		(再起動後に反映)
@@ -25,9 +24,9 @@
 	</text>
 	<text name="maturity_desired_textbox"/>
 	<combo_box name="maturity_desired_combobox">
-		<combo_box.item label="PG、Mature、Adult" name="Desired_Adult"/>
-		<combo_box.item label="PGとMature" name="Desired_Mature"/>
-		<combo_box.item label="PG" name="Desired_PG"/>
+		<combo_box.item label="一般、控えめ、アダルト" name="Desired_Adult"/>
+		<combo_box.item label="一般と控えめ" name="Desired_Mature"/>
+		<combo_box.item label="一般" name="Desired_PG"/>
 	</combo_box>
 	<text name="start_location_textbox">
 		ログイン位置:
@@ -41,9 +40,9 @@
 		名前の表示:
 	</text>
 	<radio_group name="Name_Tag_Preference">
-		<radio_item label="オフ" name="radio"/>
-		<radio_item label="オン" name="radio2"/>
-		<radio_item label="一時的に表示" name="radio3"/>
+		<radio_item label="オフ" name="radio" value="0"/>
+		<radio_item label="オン" name="radio2" value="1"/>
+		<radio_item label="一時的に表示" name="radio3" value="2"/>
 	</radio_group>
 	<check_box label="私の名前を表示" name="show_my_name_checkbox1"/>
 	<check_box initial_value="true" label="小さいアバター名" name="small_avatar_names_checkbox"/>
@@ -51,14 +50,17 @@
 	<text name="effects_color_textbox">
 		私のビームの色:
 	</text>
-	<color_swatch label="" name="effect_color_swatch" tool_tip="カラー・ピッカーをクリックして開く"/>
 	<text name="title_afk_text">
 		一時退席までの時間:
 	</text>
-	<spinner label="" name="afk_timeout_spinner"/>
-	<text name="seconds_textbox">
-		ç§’
-	</text>
+	<color_swatch label="" name="effect_color_swatch" tool_tip="カラー・ピッカーをクリックして開く"/>
+	<combo_box label="一時退席までの時間:" name="afk">
+		<combo_box.item label="2分" name="item0"/>
+		<combo_box.item label="5分" name="item1"/>
+		<combo_box.item label="10分" name="item2"/>
+		<combo_box.item label="30分" name="item3"/>
+		<combo_box.item label="一時退席設定なし" name="item4"/>
+	</combo_box>
 	<text name="text_box3">
 		取り込み中モード時の返事:
 	</text>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml
index 80c0c854205..7a7cb8b96b6 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml
@@ -11,8 +11,8 @@
 	<check_box label="フレンドとグループ以外からはコールとIMを受信しない" name="voice_call_friends_only_check"/>
 	<check_box label="コールが終了したらマイクのスイッチを切る" name="auto_disengage_mic_check"/>
 	<check_box label="Cookieを受け入れる" name="cookies_enabled"/>
-	<check_box label="メディアの自動再生を許可する" name="autoplay_enabled"/>
-	<check_box label="自動的に区画メディアを再生する" name="parcel_autoplay_enabled"/>
+	<check_box label="メディアが有効です" name="media_enabled"/>
+	<check_box label="メディアを自動再生する" name="autoplay_enabled"/>
 	<text name="Logs:">
 		ログ:
 	</text>
@@ -20,7 +20,7 @@
 	<check_box label="コンピューターに IM ログを保存する" name="log_instant_messages"/>
 	<check_box label="タイムスタンプを追加する" name="show_timestamps_check_im"/>
 	<text name="log_path_desc">
-		ログの保存場所
+		ログの保存場所:
 	</text>
 	<button label="参照" label_selected="参照" name="log_path_button"/>
 	<button label="ブロックリスト" name="block_list"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml b/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml
index 5911727c67a..12e21709ae9 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="操作とカメラ" name="Input panel">
+<panel label="セットアップ" name="Input panel">
 	<button label="その他のディバイス" name="joystick_setup_button"/>
 	<text name="Mouselook:">
 		一人称視点:
@@ -26,9 +26,9 @@
 		MB
 	</text>
 	<button label="参照" label_selected="参照" name="set_cache"/>
-	<button label="リセット" label_selected="設定" name="reset_cache"/>
+	<button label="リセット" label_selected="リセット" name="reset_cache"/>
 	<text name="Cache location">
-		キャッシュの保存場所
+		キャッシュの保存場所:
 	</text>
 	<text name="Web:">
 		Web:
@@ -41,6 +41,6 @@
 	<line_editor name="web_proxy_editor" tool_tip="使用するプロキシ名またはIPアドレス"/>
 	<button label="参照" label_selected="参照" name="set_proxy"/>
 	<text name="Proxy location">
-		プロキシ
+		プロキシ:
 	</text>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml b/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml
index 9c8bda4c769..9fb0dd0b467 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml
@@ -7,7 +7,7 @@
 	<slider label="メディア" name="Media Volume"/>
 	<slider label="効果音" name="SFX Volume"/>
 	<slider label="ストリーミング音楽" name="Music Volume"/>
-	<check_box label="ボイス" name="enable_voice_check"/>
+	<check_box label="ボイスを有効にする" name="enable_voice_check"/>
 	<slider label="ボイス" name="Voice Volume"/>
 	<text name="Listen from">
 		方向:
diff --git a/indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml
index 629070a18a3..0e1e2851e39 100644
--- a/indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml
+++ b/indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml
@@ -6,7 +6,36 @@
 	<string name="skip_step">
 		0.2
 	</string>
+	<layout_stack name="progress_indicator_area">
+		<panel name="media_progress_indicator">
+			<progress_bar name="media_progress_bar" tool_tip="ローディング"/>
+		</panel>
+	</layout_stack>
 	<layout_stack name="media_controls">
+		<layout_panel name="back">
+			<button name="back_btn" tool_tip="Navigate back"/>
+		</layout_panel>
+		<layout_panel name="fwd">
+			<button name="fwd_btn" tool_tip="Navigate forward"/>
+		</layout_panel>
+		<layout_panel name="home">
+			<button name="home_btn" tool_tip="ホームページ"/>
+		</layout_panel>
+		<layout_panel name="media_stop">
+			<button name="media_stop_btn" tool_tip="メディアを停止"/>
+		</layout_panel>
+		<layout_panel name="reload">
+			<button name="reload_btn" tool_tip="æ›´æ–°"/>
+		</layout_panel>
+		<layout_panel name="stop">
+			<button name="stop_btn" tool_tip="読み込み停止"/>
+		</layout_panel>
+		<layout_panel name="play">
+			<button name="play_btn" tool_tip="メディアを再生"/>
+		</layout_panel>
+		<layout_panel name="pause">
+			<button name="pause_btn" tool_tip="メディアを一時停止"/>
+		</layout_panel>
 		<layout_panel name="media_address">
 			<line_editor name="media_address_url" tool_tip="メディア URL"/>
 			<layout_stack name="media_address_url_icons">
@@ -21,13 +50,24 @@
 		<layout_panel name="media_play_position">
 			<slider_bar initial_value="0.5" name="media_play_slider" tool_tip="ムービー再生進行"/>
 		</layout_panel>
+		<layout_panel name="skip_back">
+			<button name="skip_back_btn" tool_tip="Step back"/>
+		</layout_panel>
+		<layout_panel name="skip_forward">
+			<button name="skip_forward_btn" tool_tip="Step forward"/>
+		</layout_panel>
 		<layout_panel name="media_volume">
-			<button name="media_volume_button" tool_tip="ミュート"/>
+			<button name="media_mute_button" tool_tip="ミュート"/>
+			<slider name="volume_slider" tool_tip="メディアの音量"/>
+		</layout_panel>
+		<layout_panel name="zoom_frame">
+			<button name="zoom_frame_btn" tool_tip="メディアにズームイン"/>
+		</layout_panel>
+		<layout_panel name="close">
+			<button name="close_btn" tool_tip="Zoom Back"/>
+		</layout_panel>
+		<layout_panel name="new_window">
+			<button name="new_window_btn" tool_tip="URLをブラウザで開く"/>
 		</layout_panel>
-	</layout_stack>
-	<layout_stack>
-		<panel name="media_progress_indicator">
-			<progress_bar name="media_progress_bar" tool_tip="ローディング"/>
-		</panel>
 	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_profile.xml b/indra/newview/skins/default/xui/ja/panel_profile.xml
index 767e26af4c4..98969f5ab34 100644
--- a/indra/newview/skins/default/xui/ja/panel_profile.xml
+++ b/indra/newview/skins/default/xui/ja/panel_profile.xml
@@ -12,50 +12,41 @@
 	</string>
 	<string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=ja-JP"/>
 	<string name="no_partner_text" value="なし"/>
+	<string name="no_group_text" value="なし"/>
 	<string name="RegisterDateFormat">
 		[REG_DATE] ([AGE])
 	</string>
-	<scroll_container name="profile_scroll">
-		<panel name="scroll_content_panel">
-			<panel name="second_life_image_panel">
-				<text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
-				<expandable_text name="sl_description_edit">
-					Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
-				</expandable_text>
-			</panel>
-			<panel name="first_life_image_panel">
-				<text name="title_rw_descr_text" value="現実世界:"/>
-				<expandable_text name="fl_description_edit">
-					Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
-				</expandable_text>
-			</panel>
-			<text name="me_homepage_text">
-				Web サイト:
-			</text>
-			<text name="title_member_text" value="メンバー登録:"/>
-			<text name="register_date" value="05/31/1976"/>
-			<text name="title_acc_status_text" value="アカウントの状態:"/>
-			<text name="acc_status_text" value="住人。 支払情報未登録"/>
-			<text name="title_partner_text" value="パートナー:"/>
-			<panel name="partner_data_panel">
-				<text name="partner_text" value="[FIRST] [LAST]"/>
-			</panel>
-			<text name="title_groups_text" value="グループ:"/>
-			<expandable_text name="sl_groups">
-				Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
-			</expandable_text>
-		</panel>
-	</scroll_container>
-	<panel name="profile_buttons_panel">
-		<button label="フレンド登録" name="add_friend"/>
-		<button label="IM" name="im"/>
-		<button label="コール" name="call"/>
-		<button label="地図" name="show_on_map_btn"/>
-		<button label="テレポート" name="teleport"/>
-		<button label="â–¼" name="overflow_btn"/>
-	</panel>
-	<panel name="profile_me_buttons_panel">
-		<button label="プロフィールの編集" name="edit_profile_btn"/>
-		<button label="容姿の編集" name="edit_appearance_btn"/>
-	</panel>
+	<layout_stack name="layout">
+		<layout_panel name="profile_stack">
+			<scroll_container name="profile_scroll">
+				<panel name="profile_scroll_panel">
+					<panel name="second_life_image_panel">
+						<text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
+					</panel>
+					<panel name="first_life_image_panel">
+						<text name="title_rw_descr_text" value="現実世界:"/>
+					</panel>
+					<text name="title_member_text" value="住人となった日:"/>
+					<text name="title_acc_status_text" value="アカウントの状態:"/>
+					<text name="acc_status_text">
+						住人。 支払情報未登録。
+              リンデン。
+					</text>
+					<text name="title_partner_text" value="パートナー:"/>
+					<text name="title_groups_text" value="グループ:"/>
+				</panel>
+			</scroll_container>
+		</layout_panel>
+		<layout_panel name="profile_buttons_panel">
+			<button label="フレンド登録" name="add_friend" tool_tip="フレンド登録を申し出ます"/>
+			<button label="IM" name="im" tool_tip="インスタントメッセージを開きます"/>
+			<button label="コール" name="call" tool_tip="この住人にコールする"/>
+			<button label="地図" name="show_on_map_btn" tool_tip="住人を地図上で表示する"/>
+			<button label="テレポート" name="teleport" tool_tip="テレポートを送る"/>
+		</layout_panel>
+		<layout_panel name="profile_me_buttons_panel">
+			<button label="プロフィールの編集" name="edit_profile_btn" tool_tip="個人的な情報を編集します"/>
+			<button label="容姿の編集" name="edit_appearance_btn" tool_tip="見た目を作成・編集します: (身体的データ、衣類など)"/>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_region_estate.xml b/indra/newview/skins/default/xui/ja/panel_region_estate.xml
index 348878a35e4..976cfacb3f2 100644
--- a/indra/newview/skins/default/xui/ja/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/ja/panel_region_estate.xml
@@ -1,8 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="不動産" name="Estate">
 	<text name="estate_help_text">
-		このタブの設定を変更するとこの不動産内
-の全ての地域に影響を与えます。
+		このタブの設定への変更は、エステート内のすべてのリージョンに影響されます。
 	</text>
 	<text name="estate_text">
 		不動産:
@@ -17,10 +16,10 @@
 		(不明)
 	</text>
 	<text name="Only Allow">
-		次へのアクセスを制限:
+		次のアカウントのアクセス禁止:
 	</text>
-	<check_box label="支払い情報登録済みの住人" name="limit_payment" tool_tip="未確認の住人の立入を禁止します"/>
-	<check_box label="年齢確認済みの成人" name="limit_age_verified" tool_tip="年齢確認を済ませていない住人を立入禁止にします。 詳しい情報は [SUPPORT_SITE] をご覧下さい。"/>
+	<check_box label="支払情報登録済" name="limit_payment" tool_tip="未確認の住人の立入を禁止します"/>
+	<check_box label="年齢確認" name="limit_age_verified" tool_tip="年齢確認を済ませていない住人の立入を禁止します。 詳しい情報は [SUPPORT_SITE] をご覧下さい。"/>
 	<check_box label="ボイスチャットを許可" name="voice_chat_check"/>
 	<button label="?" name="voice_chat_help"/>
 	<text name="abuse_email_text">
diff --git a/indra/newview/skins/default/xui/ja/panel_region_general.xml b/indra/newview/skins/default/xui/ja/panel_region_general.xml
index 690cf3f33df..00be5b6b032 100644
--- a/indra/newview/skins/default/xui/ja/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/ja/panel_region_general.xml
@@ -39,10 +39,10 @@
 	<text label="成人指定" name="access_text">
 		区分:
 	</text>
-	<combo_box label="Mature" name="access_combo">
+	<combo_box label="控えめ" name="access_combo">
 		<combo_box.item label="Adult" name="Adult"/>
-		<combo_box.item label="Mature" name="Mature"/>
-		<combo_box.item label="PG" name="PG"/>
+		<combo_box.item label="控えめ" name="Mature"/>
+		<combo_box.item label="一般" name="PG"/>
 	</combo_box>
 	<button label="?" name="access_help"/>
 	<button label="適用" name="apply_btn"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml b/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml
new file mode 100644
index 00000000000..9673953d065
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="リージョン(地域)" name="General">
+	<text name="region_text_lbl">
+		リージョン:
+	</text>
+	<text name="region_text">
+		不明
+	</text>
+	<text name="version_channel_text_lbl">
+		バージョン:
+	</text>
+	<text name="version_channel_text">
+		不明
+	</text>
+	<text name="region_type_lbl">
+		種類:
+	</text>
+	<text name="region_type">
+		不明
+	</text>
+	<check_box label="地形編集をブロック" name="block_terraform_check"/>
+	<check_box label="飛行をブロック" name="block_fly_check"/>
+	<check_box label="ダメージを許可" name="allow_damage_check"/>
+	<check_box label="プッシュを制限" name="restrict_pushobject"/>
+	<check_box label="土地の再販を許可" name="allow_land_resell_check"/>
+	<check_box label="土地の統合・分割を許可" name="allow_parcel_changes_check"/>
+	<check_box label="土地の検索教示をブロック" name="block_parcel_search_check" tool_tip="このリージョンとリージョン内の区画を検索結果に表示する"/>
+	<spinner label="アバター数上限" name="agent_limit_spin"/>
+	<spinner label="オブジェクトボーナス" name="object_bonus_spin"/>
+	<text label="レーティング区分" name="access_text">
+		レーティング区分:
+	</text>
+	<combo_box label="控えめ" name="access_combo">
+		<combo_box.item label="アダルト" name="Adult"/>
+		<combo_box.item label="控えめ" name="Mature"/>
+		<combo_box.item label="一般" name="PG"/>
+	</combo_box>
+	<button label="適用" name="apply_btn"/>
+	<button label="ユーザー1名をホームにテレポート..." name="kick_btn"/>
+	<button label="ユーザー全員をホームにテレポート..." name="kick_all_btn"/>
+	<button label="リージョンにメッセージを送信..." name="im_btn"/>
+	<button label="テレハブの管理..." name="manage_telehub_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_region_texture.xml b/indra/newview/skins/default/xui/ja/panel_region_texture.xml
index d32d8f9e5de..ea784df127b 100644
--- a/indra/newview/skins/default/xui/ja/panel_region_texture.xml
+++ b/indra/newview/skins/default/xui/ja/panel_region_texture.xml
@@ -45,11 +45,10 @@
 	<spinner label="高" name="height_range_spin_2"/>
 	<spinner label="高" name="height_range_spin_3"/>
 	<text name="height_text_lbl10">
-		数値は上のテクスチャのブレンド範囲を示します
+		数値は上のテクスチャのブレンド範囲を示します。
 	</text>
 	<text name="height_text_lbl11">
-		計測単位はメートルで、「低」の値は 1 番のテクスチャの高さの最大値です。
-「高」の値は、4 番のテクスチャの高さの最低値です。
+		計測単位はメートルで、「低」の値は、1番のテクスチャの高さの「最大値」です。「高」の値は、4番のテクスチャの高さの「最低値」です。
 	</text>
 	<text name="height_text_lbl12">
 		そして「高」の値はテクスチャー#4の高さの下限となります。
diff --git a/indra/newview/skins/default/xui/ja/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/ja/panel_script_limits_my_avatar.xml
new file mode 100644
index 00000000000..e8b5be63aee
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/panel_script_limits_my_avatar.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="マイ アバター" name="script_limits_my_avatar_panel">
+	<text name="loading_text">
+		ローディング...
+	</text>
+	<scroll_list name="scripts_list">
+		<scroll_list.columns label="サイズ (kb)" name="size"/>
+		<scroll_list.columns label="URL" name="urls"/>
+		<scroll_list.columns label="オブジェクト名" name="name"/>
+		<scroll_list.columns label="場所" name="location"/>
+	</scroll_list>
+	<button label="リスト更新" name="refresh_list_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/ja/panel_script_limits_region_memory.xml
new file mode 100644
index 00000000000..fe0b44d8f4c
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/panel_script_limits_region_memory.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="リージョンメモリ" name="script_limits_region_memory_panel">
+	<text name="script_memory">
+		区画スクリプトメモリ
+	</text>
+	<text name="parcels_listed">
+		区画所有者:
+	</text>
+	<text name="memory_used">
+		使用されたメモリ:
+	</text>
+	<text name="loading_text">
+		ローディング...
+	</text>
+	<scroll_list name="scripts_list">
+		<scroll_list.columns label="サイズ (kb)" name="size"/>
+		<scroll_list.columns label="オブジェクト名" name="name"/>
+		<scroll_list.columns label="オブジェクトの所有者" name="owner"/>
+		<scroll_list.columns label="区画・位置" name="location"/>
+	</scroll_list>
+	<button label="リスト更新" name="refresh_list_btn"/>
+	<button label="ハイライト" name="highlight_btn"/>
+	<button label="返却" name="return_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_side_tray.xml b/indra/newview/skins/default/xui/ja/panel_side_tray.xml
index 6ec6b3422e4..ce5f0b940c2 100644
--- a/indra/newview/skins/default/xui/ja/panel_side_tray.xml
+++ b/indra/newview/skins/default/xui/ja/panel_side_tray.xml
@@ -2,9 +2,13 @@
 <!-- Side tray cannot show background because it is always
 	partially on screen to hold tab buttons. -->
 <side_tray name="sidebar">
+	<sidetray_tab description="サイドバーを表示・非表示" name="sidebar_openclose"/>
 	<sidetray_tab description="ホーム。" name="sidebar_home">
 		<panel label="ホーム" name="panel_home"/>
 	</sidetray_tab>
+	<sidetray_tab description="あなたの公開プロフィールとピックを編集してください。" name="sidebar_me">
+		<panel label="ミー" name="panel_me"/>
+	</sidetray_tab>
 	<sidetray_tab description="フレンド、連絡先、近くの人を探してください。" name="sidebar_people">
 		<panel_container name="panel_container">
 			<panel label="グループ情報" name="panel_group_info_sidetray"/>
@@ -14,13 +18,10 @@
 	<sidetray_tab description="行きたい場所、行ったことのある場所を探してください。" label="場所" name="sidebar_places">
 		<panel label="場所" name="panel_places"/>
 	</sidetray_tab>
-	<sidetray_tab description="あなたの公開プロフィールとピックを編集してください。" name="sidebar_me">
-		<panel label="ミー" name="panel_me"/>
+	<sidetray_tab description="あなたの持ち物を眺めてください。" name="sidebar_inventory">
+		<panel label="持ち物を編集" name="sidepanel_inventory"/>
 	</sidetray_tab>
 	<sidetray_tab description="あなたの容姿や現在の見た目を変更してください。" name="sidebar_appearance">
 		<panel label="容姿の編集" name="sidepanel_appearance"/>
 	</sidetray_tab>
-	<sidetray_tab description="あなたの持ち物を眺めてください。" name="sidebar_inventory">
-		<panel label="持ち物を編集" name="sidepanel_inventory"/>
-	</sidetray_tab>
 </side_tray>
diff --git a/indra/newview/skins/default/xui/ja/panel_status_bar.xml b/indra/newview/skins/default/xui/ja/panel_status_bar.xml
index 5d122cb8cd3..063e5847626 100644
--- a/indra/newview/skins/default/xui/ja/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/ja/panel_status_bar.xml
@@ -21,7 +21,8 @@
 	<panel.string name="buycurrencylabel">
 		L$ [AMT]
 	</panel.string>
-	<button label="" label_selected="" name="buycurrency" tool_tip="私の残高: クリックして L$ を購入します"/>
+	<button label="" label_selected="" name="buycurrency" tool_tip="私の残高"/>
+	<button label="L$ の購入" name="buyL" tool_tip="クリックして L$ を購入します"/>
 	<text name="TimeText" tool_tip="現在時刻(太平洋)">
 		12:00 AM
 	</text>
diff --git a/indra/newview/skins/default/xui/ja/panel_teleport_history.xml b/indra/newview/skins/default/xui/ja/panel_teleport_history.xml
index 70969f7ac07..2264ae965b0 100644
--- a/indra/newview/skins/default/xui/ja/panel_teleport_history.xml
+++ b/indra/newview/skins/default/xui/ja/panel_teleport_history.xml
@@ -11,5 +11,7 @@
 		<accordion_tab name="1_month_and_older" title="1ヶ月以上前"/>
 		<accordion_tab name="6_months_and_older" title="半年以上前"/>
 	</accordion>
-	<panel label="bottom_panel" name="bottom_panel"/>
+	<panel label="bottom_panel" name="bottom_panel">
+		<button name="gear_btn" tool_tip="その他のオプションを表示"/>
+	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/ja/panel_teleport_history_item.xml
index 9d18c52442d..c570cd56962 100644
--- a/indra/newview/skins/default/xui/ja/panel_teleport_history_item.xml
+++ b/indra/newview/skins/default/xui/ja/panel_teleport_history_item.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="teleport_history_item">
 	<text name="region" value="..."/>
+	<button name="profile_btn" tool_tip="アイテム情報を表示"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/role_actions.xml b/indra/newview/skins/default/xui/ja/role_actions.xml
index 9a58f753e5d..59fceca2dbb 100644
--- a/indra/newview/skins/default/xui/ja/role_actions.xml
+++ b/indra/newview/skins/default/xui/ja/role_actions.xml
@@ -1,205 +1,76 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <role_actions>
-	<action_set
-	     description="これらの能力には、グループ・メンバーを追加、排除し、招待状なしに新メンバーの参加を認める権限が含まれます。"
-	     name="Membership">
-		<action description="このグループに人を招待"
-		     longdescription="グループに人を招待するには、「メンバーと役割」タブ>「メンバー」サブタブの「新しい人を招待...」ボタンを使います。"
-		     name="member invite" value="1" />
-		<action description="メンバーをこのグループから追放"
-		     longdescription="メンバーをこのグループから追放するには、「メンバーと役割」タブ > 「役割」サブタブの「グループから追放」を使います。 オーナーは、他のオーナー以外の任意のメンバーを追放できます。 オーナーでないユーザーがグループからメンバーを追放できるのは、そのメンバーが「全員」の役割にのみ所属しており、他の役割に所属していない場合だけです。 役割からメンバーを除外するには、「役割からメンバーを除外」能力を有している必要があります。"
-		     name="member eject" value="2" />
-		<action description="「会員募集」に切り替え、「入会費」を変更。"
-		     longdescription="招待状なしに新メンバーが加入できるように「会員募集」に切り替え、「一般」タブの「グループ環境設定」セクションから「入会費」を変更します。"
-		     name="member options" value="3" />
+	<action_set description="これらの能力には、グループ・メンバーを追加、排除し、招待状なしに新メンバーの参加を認める権限が含まれます。" name="Membership">
+		<action description="このグループに人を招待" longdescription="「役割」セクションの「メンバー」タブ内にある「招待」ボタンを押して、このグループにメンバーを招待します。" name="member invite" value="1"/>
+		<action description="メンバーをこのグループから追放" longdescription="「役割」セクションの「メンバー」タブ内にある「追放」ボタンを押して、このグループからメンバーを追放します。 「オーナー」は、他の「オーナー」以外は誰でも追放できます。 「オーナー」ではない人が「全員(Everyone)」にしか役割がない場合、メンバーはグループから追放されることがあります。 「役割」からメンバーを削除するには、「役割からメンバーを削除」の能力が与えられている必要があります。" name="member eject" value="2"/>
+		<action description="「自由参加」と「入会費」の切り替え" longdescription="「自由参加」に切り替えると、招待されなくても新しいメンバーが入会できます。「入会費」は「一般」セクションで変更します。" name="member options" value="3"/>
 	</action_set>
-	<action_set
-	     description="これらの能力には、グループ内の役割を追加、削除、変更し、役割にメンバーを追加、削除し、さらに役割へ能力を割り当てる権限が含まれます。"
-	     name="Roles">
-		<action description="新しい役割を作成"
-		     longdescription="「メンバーと役割」タブ > 「役割」サブタブで新しい役割を作成"
-		     name="role create" value="4" />
-		<action description="役割を削除"
-		     longdescription="役割を削除するには、「メンバーと役割」タブ > 「役割」サブタブを使います。"
-		     name="role delete" value="5" />
-		<action description="役割名、タイトル、説明を変更"
-		     longdescription="役割名、タイトル、説明を変更するには、役割を選択した後、「メンバーと役割」タブ > 「役割」サブタブの下部分を使います。"
-		     name="role properties" value="6" />
-		<action description="メンバーを割り当て人の役割に割り当てる"
-		     longdescription="メンバーを割り当て人の役割に割り当てるには、「メンバーと役割」タブ>「役割」サブタブの割り当てられた役割セクションを使います。 この能力を持つメンバーは、割り当て人が現在所属している役割に対してのみメンバーを追加できます。"
-		     name="role assign member limited" value="7" />
-		<action description="メンバーを任意の役割に割り当てる"
-		     longdescription="メンバーを任意の役割に割り当てるには、「メンバーと役割」タブ>「役割」サブタブの割り当てられた役割セクションを使います。 *警告* この能力を持つ役割のメンバーは、自分自身や他のメンバーを現在の役割よりも強力な役割に割り当てることができます。このため、オーナー以外のメンバーに対して、オーナーに近いパワーを与えることも可能です。 この能力の割り当ては、そのことを理解した上で行ってください。"
-		     name="role assign member" value="8" />
-		<action description="役割からメンバーを解除"
-		     longdescription="メンバーを役割から解除するには、「メンバーと役割」タブ>「メンバー」サブタブの「割り当てられた役割」セクションを使います。 オーナーは解除できません。"
-		     name="role remove member" value="9" />
-		<action description="役割の能力の割り当てと解除"
-		     longdescription="役割の能力の割り当てと解除は、「メンバーと役割」タブ>「役割」サブタブの許可された能力セクションで行います。 *警告* この能力を持つ役割のメンバーは、すべての能力を自分自身や他のメンバーに割り当てることができます。このため、オーナー以外のメンバーに対して、オーナーに近いパワーを持たせることも可能です。 この能力の割り当ては、そのことを理解した上で行ってください。"
-		     name="role change actions" value="10" />
+	<action_set description="これらの能力には、グループ内の役割を追加、削除、変更し、役割にメンバーを追加、削除し、さらに役割へ能力を割り当てる権限が含まれます。" name="Roles">
+		<action description="新しい役割を作成" longdescription="新しい「役割」は、「役割」セクション &gt; 「役割」タブで作成します。" name="role create" value="4"/>
+		<action description="役割を削除" longdescription="「役割」は、「役割」セクション &gt; 「役割」タブで削除できます。" name="role delete" value="5"/>
+		<action description="「役割」の名前、肩書き、説明、メンバー公開の有無を変更" longdescription="「役割」の名前、肩書き、説明、メンバー公開の有無を変更します。 「役割」を選択後に、「役割」セクション &gt; 「役割」タブ の下で設定できます。" name="role properties" value="6"/>
+		<action description="メンバーを割り当て人の役割に割り当てる" longdescription="「割り当てられた役割」(「役割」セクション &gt; 「メンバー」タブ)のリストで、メンバーを「役割」に割り当てます。 この能力があるメンバーは、割り当てる人が既に所属する「役割」にのみメンバーを追加できます。" name="role assign member limited" value="7"/>
+		<action description="メンバーを任意の役割に割り当てる" longdescription="「割り当てられた役割」(「役割」セクション &gt; 「メンバー」タブ)のリストで、メンバーをどの「役割」にも割り当てることができます。 *警告* この「能力」がある「役割」を持つメンバーなら誰でも自分自身と、他の「オーナー」以外のメンバーを現在以上の権限のある「役割」に割り当てることができます。つまり、「オーナー」以外の人が「オーナー」に近い力を持つよう設定できることになります。 この「能力」を割り当てる前に、自分がしようとしていることをよく把握してください。" name="role assign member" value="8"/>
+		<action description="役割からメンバーを解除" longdescription="「割り当てられた役割」(「役割」セクション &gt; 「メンバー」タブ)のリストで、メンバーを「役割」から削除します。 「オーナー」は削除できません。" name="role remove member" value="9"/>
+		<action description="役割の能力の割り当てと解除" longdescription="「許可された能力」(「役割」セクション &gt; 「役割」タブ)のリストにある、各「役割」の「能力」を割り当てたり、削除します。 *警告* この「能力」がある「役割」を持つメンバーなら誰でも自分自身と、他の「オーナー」以外のメンバーをすべての「能力」」に割り当てることができます。つまり、「オーナー」以外の人が「オーナー」に近い権限を持つよう設定できることになります。 この「能力」を割り当てる前に、自分がしようとしていることをよく把握してください。" name="role change actions" value="10"/>
 	</action_set>
-	<action_set
-	     description="これらの能力には、グループの公開性や理念、記章の変更といった、グループのアイデンティティを修正する権限が含まれます。"
-	     name="Group Identity">
-		<action
-		     description="理念、記章、「Web上で公開」、およびグループ情報内で公開のメンバーを変更。"
-		     longdescription="理念、記章、「Web上で公開」、およびグループ情報内で公開のメンバーを変更します。 この操作には、一般タブを使用します。"
-		     name="group change identity" value="11" />
+	<action_set description="これらの能力には、グループの公開性や理念、記章の変更といった、グループのアイデンティティを修正する権限が含まれます。" name="Group Identity">
+		<action description="理念、記章、「Web上で公開」、およびグループ情報内で公開のメンバーを変更。" longdescription="理念、記章、「検索に表示」の変更をします。 「一般」セクションで行えます。" name="group change identity" value="11"/>
 	</action_set>
-	<action_set
-	     description="これらの能力には、グループ所有の土地を譲渡、修正、販売する権限が含まれます。 「土地情報」のウィンドウを開くには、地面を右クリックして「土地情報」を選択するか、メニューバーの「区画情報」をクリックします。"
-	     name="Parcel Management">
-		<action description="グループ用の土地の譲渡と購入"
-		     longdescription="グループ用の土地の譲渡と購入を行います。 この操作には、土地情報画面 > 一般タブを使います。"
-		     name="land deed" value="12" />
-		<action description="Linden総督に土地を明け渡す"
-		     longdescription="Linden総督に土地を明け渡します。 *警告* この能力を持つ役割のメンバーは、「土地情報」>「一般」でグループ所有の土地を放棄して、売り上げなしでLinden総督に明け渡すことができます。 この能力の割り当ては、そのことを理解した上で行ってください。"
-		     name="land release" value="13" />
-		<action description="売り地情報の設定"
-		     longdescription="売り地情報を設定します。 *警告* この能力を持つ役割のメンバーは、「土地情報」>「一般」タブでグループ所有の土地を自分の思いどおりに販売することができます。 この能力の割り当ては、そのことを理解した上で行ってください。"
-		     name="land set sale info" value="14" />
-		<action description="区画の再分割と統合"
-		     longdescription="区画を再分割および統合します。 この操作を実行するには、地面を右クリックして「地形を編集」を選択し、土地の上でマウスをドラッグして範囲を選択します。 再分割するには、分割対象を選択した後、「再分割...」をクリックします。 統合するには、複数の隣接する区画を選択した後、「統合...」をクリックします。"
-		     name="land divide join" value="15" />
+	<action_set description="これらの「能力」には、このグループの所有地の譲渡、修正、販売をする権限があります。 「土地情報」ウィンドウを見るには、地面を右クリックして「土地情報」を選ぶか、ナビゲーションバーの「i」アイコンをクリックします。" name="Parcel Management">
+		<action description="グループ用の土地の譲渡と購入" longdescription="グループ用の土地の譲渡と購入を行います。 この操作には、土地情報画面 > 一般タブを使います。" name="land deed" value="12"/>
+		<action description="Linden総督に土地を明け渡す" longdescription="Linden総督に土地を明け渡します。 *警告* この能力を持つ役割のメンバーは、「土地情報」>「一般」でグループ所有の土地を放棄して、売り上げなしでLinden総督に明け渡すことができます。 この能力の割り当ては、そのことを理解した上で行ってください。" name="land release" value="13"/>
+		<action description="売り地情報の設定" longdescription="売り地情報を設定します。 *警告* この能力を持つ役割のメンバーは、「土地情報」>「一般」タブでグループ所有の土地を自分の思いどおりに販売することができます。 この能力の割り当ては、そのことを理解した上で行ってください。" name="land set sale info" value="14"/>
+		<action description="区画の再分割と統合" longdescription="区画を再分割、統合します。 地面を右クリックして「地形を編集」を選び、マウスを土地の上でドラッグして範囲を選択します。 再分割するには、分割対象を選んで「再分割」をクリックします。 統合するには、2つ以上の隣接する区画を選んで「統合」をクリックします。" name="land divide join" value="15"/>
 	</action_set>
-	<action_set
-	     description="これらの能力には、区画名、公開設定、検索ディレクトリへの登録、着地点ならびにTPルートのオプションを変更する権限が含まれます。"
-	     name="Parcel Identity">
-		<action description="「場所検索に表示」に切り替え、カテゴリーを設定"
-		     longdescription="「場所検索に表示」に切り替え、「土地情報」>「オプション」タブでカテゴリーを設定"
-		     name="land find places" value="17" />
-		<action description="区画名、説明、「Web上で公開」の設定を変更"
-		     longdescription="区画名、説明、「Web上で公開」の設定を変更。 この操作には、「土地情報」 > 「オプション」タブを使います。"
-		     name="land change identity" value="18" />
-		<action description="着地点およびテレポート・ルートを設定"
-		     longdescription="この能力を持つ役割のメンバーは、グループ所有の区画上で着地点を設定することにより外部からのテレポートの到着位置を指定できると共に、テレポート・ルートを設定して細かく制御することができます。 この操作は、「土地情報」>「オプション」タブで行います。"
-		     name="land set landing point" value="19" />
+	<action_set description="これらの能力には、区画名、公開設定、検索ディレクトリへの登録、着地点ならびにTPルートのオプションを変更する権限が含まれます。" name="Parcel Identity">
+		<action description="「場所検索に表示」を切り替えカテゴリを設定" longdescription="「場所検索に表示」に切り替え、「土地情報」 &gt; 「オプション」タブで区画のカテゴリを設定します。" name="land find places" value="17"/>
+		<action description="区画名、説明、「場所検索に表示」の設定を変更" longdescription="区画名、説明、「場所検索に表示」の設定を変更します。 「土地情報」 &gt; 「オプション」タブで行います。" name="land change identity" value="18"/>
+		<action description="着地点およびテレポート・ルートを設定" longdescription="この能力を持つ役割のメンバーは、グループ所有の区画上で着地点を設定することにより外部からのテレポートの到着位置を指定できると共に、テレポート・ルートを設定して細かく制御することができます。 この操作は、「土地情報」>「オプション」タブで行います。" name="land set landing point" value="19"/>
 	</action_set>
-	<action_set
-	     description="これらの能力には、「オブジェクトを作成」、「地形を編集」、音楽とメディアの設定など、区画のオプションに関連する権限が含まれます。"
-	     name="Parcel Settings">
-		<action description="音楽とメディアの設定を変更"
-		     longdescription="ストリーミング・ミュージックと動画の設定を変更するには、「土地情報」 > 「メディア」タブを使います。"
-		     name="land change media" value="20" />
-		<action description="「地形を編集」に切り替え"
-		     longdescription="「地形を編集」に切り替えます。 *警告* 「土地情報」>「オプション」>「地形を編集」の順で進むと、誰でもあなたの土地の形の整備や、リンデンプラントの設置、移動ができます。  この能力を割り振る前に、このことをよく理解しておいてください。 「土地情報」>「オプション」タブから「地形を編集」に切り替えられます。"
-		     name="land edit" value="21" />
-		<action
-		     description="「土地情報」>「オプション」タブ内のさまざまな設定を切り替え"
-		     longdescription="「安全(ダメージなし)」、「飛ぶ」に切り替え、「土地情報」>「オプション」タブから、 他の住人がグループ所有の土地で「オブジェクトを作成」、「地形を編集」、「ランドマークを作成」、「スクリプトを実行」できるようにします。"
-		     name="land options" value="22" />
+	<action_set description="これらの能力には、「オブジェクトを作成」、「地形を編集」、音楽とメディアの設定など、区画のオプションに関連する権限が含まれます。" name="Parcel Settings">
+		<action description="音楽とメディアの設定を変更" longdescription="ストリーミング・ミュージックと動画の設定を変更するには、「土地情報」 > 「メディア」タブを使います。" name="land change media" value="20"/>
+		<action description="「地形を編集」に切り替え" longdescription="「地形を編集」に切り替えます。 *警告* 「土地情報」>「オプション」>「地形を編集」の順で進むと、誰でもあなたの土地の形の整備や、リンデンプラントの設置、移動ができます。  この能力を割り振る前に、このことをよく理解しておいてください。 「土地情報」>「オプション」タブから「地形を編集」に切り替えられます。" name="land edit" value="21"/>
+		<action description="「土地情報」>「オプション」タブ内のさまざまな設定を切り替え" longdescription="「安全(ダメージなし)」、「飛行」を切り替え、住人に以下を許可します: グループ所有地の「土地情報」 &gt; 「オプション」タブ内の、「地形を編集」、「制作」、「ランドマークの作成」、「スクリプトの実行」。" name="land options" value="22"/>
 	</action_set>
-	<action_set
-	     description="これらの能力には、グループ所有の区画に関する規制を迂回することを、メンバーに許可する権限が含まれます。"
-	     name="Parcel Powers">
-		<action description="常に「地形を編集」を許可"
-		     longdescription="この能力を持つ役割のメンバーは、グループ所有の区画上で地形を編集することができます。その区画が「土地情報」>「オプション」タブでオフになっていても、地形の編集が可能です。"
-		     name="land allow edit land" value="23" />
-		<action description="常に「飛行」を許可"
-		     longdescription="この能力を持つ役割のメンバーは、グループ所有の区画上を飛行することができます。その区画が「土地情報」>「オプション」タブでオフになっていても、飛行が可能です。"
-		     name="land allow fly" value="24" />
-		<action description="常に「オブジェクト作成」を許可"
-		     longdescription="この能力を持つ役割のメンバーは、グループ所有の区画上にオブジェクトを作成することができます。その区画が「土地情報」>「オプション」タブでオフになっていても、オブジェクトの作成が可能です。"
-		     name="land allow create" value="25" />
-		<action description="常に「ランドマークを作成」を許可"
-		     longdescription="この能力を持つ役割のメンバーは、グループ所有の区画上にランドマークを作成することができます。その区画が「土地情報」>「オプション」タブでオフになっていても、ランドマークの作成が可能です。"
-		     name="land allow landmark" value="26" />
-		<action description="グループの土地への「ホーム設定」を許可"
-		     longdescription="この能力を持つ役割のメンバーは、「世界」メニュー>「ホームをここに設定」を使用して、このグループに譲渡された区画をホームに設定することができます。"
-		     name="land allow set home" value="28" />
+	<action_set description="これらの能力には、グループ所有の区画に関する規制を迂回することを、メンバーに許可する権限が含まれます。" name="Parcel Powers">
+		<action description="常に「地形を編集」を許可" longdescription="この能力を持つ役割のメンバーは、グループ所有の区画上で地形を編集することができます。その区画が「土地情報」>「オプション」タブでオフになっていても、地形の編集が可能です。" name="land allow edit land" value="23"/>
+		<action description="常に「飛行」を許可" longdescription="この能力を持つ役割のメンバーは、グループ所有の区画上を飛行することができます。その区画が「土地情報」>「オプション」タブでオフになっていても、飛行が可能です。" name="land allow fly" value="24"/>
+		<action description="常に「オブジェクト作成」を許可" longdescription="この能力を持つ役割のメンバーは、グループ所有の区画上にオブジェクトを作成することができます。その区画が「土地情報」>「オプション」タブでオフになっていても、オブジェクトの作成が可能です。" name="land allow create" value="25"/>
+		<action description="常に「ランドマークを作成」を許可" longdescription="この能力を持つ役割のメンバーは、グループ所有の区画上にランドマークを作成することができます。その区画が「土地情報」>「オプション」タブでオフになっていても、ランドマークの作成が可能です。" name="land allow landmark" value="26"/>
+		<action description="グループの土地への「ホーム設定」を許可" longdescription="この「役割」を持つメンバーは、このグループに譲渡された区画上で「世界」メニュー &gt; ランドマーク &gt; 現在地をホームに設定 を使用して、ホームの設定を行うことができます。" name="land allow set home" value="28"/>
 	</action_set>
-	<action_set
-	     description="これらの能力には、住人の凍結や追放を含む、グループ所有の区画へのアクセスを許可、制限する権限が含まれます。"
-	     name="Parcel Access">
-		<action description="区画アクセス・リストの管理"
-		     longdescription="区画アクセス・リストの管理は、「土地情報」>「アクセス」タブで行います。"
-		     name="land manage allowed" value="29" />
-		<action description="区画禁止リストの管理"
-		     longdescription="区画禁止リストの管理は、「土地情報」>「禁止」タブで行います。"
-		     name="land manage banned" value="30" />
-		<action description="区画の「入場許可を販売」の設定を変更"
-		     longdescription="区画の「入場許可を販売」の設定を変更するには、「土地情報」 > 「アクセス」タブを使います。"
-		     name="land manage passes" value="31" />
-		<action description="区画上の住人の追放と凍結"
-		     longdescription="この能力を持つ役割のメンバーは、グループ所有の区画に問題のある住人がいる場合に、右クリック・メニューから「詳細」を選択し、「追放...」または「フリーズ...」を選択することにより、その住人を処理することができます。"
-		     name="land admin" value="32" />
+	<action_set description="これらの能力には、住人の凍結や追放を含む、グループ所有の区画へのアクセスを許可、制限する権限が含まれます。" name="Parcel Access">
+		<action description="区画アクセス・リストの管理" longdescription="区画アクセス・リストの管理は、「土地情報」>「アクセス」タブで行います。" name="land manage allowed" value="29"/>
+		<action description="区画禁止リストの管理" longdescription="「土地情報」 &gt; 「アクセス」タブの、区画の禁止リストの管理ができます。" name="land manage banned" value="30"/>
+		<action description="「入場許可を販売」の設定を変更" longdescription="「土地情報」 &gt; 「アクセス」タブで、区画の「入場許可を販売」の設定を変更します。" name="land manage passes" value="31"/>
+		<action description="区画上の住人の追放と凍結" longdescription="この「能力」を持つ「役割」のメンバーは、グループ所有地にいて欲しくない住人を右クリックし、「追放」や「フリーズ」を選んで対応できます。" name="land admin" value="32"/>
 	</action_set>
-	<action_set
-	     description="これらの能力には、オブジェクトの返却、リンデンプラントの設置や移動を、メンバーに許可する権限が含まれます。 これはメンバーがゴミ処理や景観作成をする際に便利ですが、返却したオブジェクトは元に戻せないので、注意して行いましょう。"
-	     name="Parcel Content">
-		<action description="グループ所有オブジェクトの返却"
-		     longdescription="グループ所有の区画上のオブジェクトのうち、グループ所有のオブジェクトを返却するには、「土地情報」>「オブジェクト」タブを使います。"
-		     name="land return group owned" value="48" />
-		<action description="グループに設定されているオブジェクトを返却"
-		     longdescription="グループ所有の区画上のオブジェクトのうち、グループに設定されているオブジェクトを返却するには、「土地情報」>「オブジェクト」タブを使います。"
-		     name="land return group set" value="33" />
-		<action description="非グループ・オブジェクトの返却"
-		     longdescription="グループ所有の区画上のオブジェクトのうち、グループ以外のオブジェクトを返却するには、「土地情報」>「オブジェクト」タブを使います。"
-		     name="land return non group" value="34" />
-		<action description="Linden製の植物を使用して景観作成"
-		     longdescription="景観作成能力により、リンデン製の樹木、植物、草を配置および移動することができます。 これらのアイテムは、自分の持ち物のライブラリ>オブジェクト・フォルダから検索できるほか、「作成」ボタンで作成することもできます。"
-		     name="land gardening" value="35" />
+	<action_set description="これらの能力には、オブジェクトの返却、リンデンプラントの設置や移動を、メンバーに許可する権限が含まれます。 これはメンバーがゴミ処理や景観作成をする際に便利ですが、返却したオブジェクトは元に戻せないので、注意して行いましょう。" name="Parcel Content">
+		<action description="グループ所有オブジェクトの返却" longdescription="グループ所有の区画上のオブジェクトのうち、グループ所有のオブジェクトを返却するには、「土地情報」>「オブジェクト」タブを使います。" name="land return group owned" value="48"/>
+		<action description="グループに設定されているオブジェクトを返却" longdescription="グループ所有の区画上のオブジェクトのうち、グループに設定されているオブジェクトを返却するには、「土地情報」>「オブジェクト」タブを使います。" name="land return group set" value="33"/>
+		<action description="非グループ・オブジェクトの返却" longdescription="グループ所有の区画上のオブジェクトのうち、グループ以外のオブジェクトを返却するには、「土地情報」>「オブジェクト」タブを使います。" name="land return non group" value="34"/>
+		<action description="Linden製の植物を使用して景観作成" longdescription="リンデン製の樹木、植物、草を植える、景観づくりの能力です。 これらの植物はあなたの持ち物内の「ライブラリ」 &gt; 「オブジェクト」フォルダにあります。「制作」メニューで作成することもできます。" name="land gardening" value="35"/>
 	</action_set>
-	<action_set
-	     description="これらの能力には、グループ所有のオブジェクトを譲渡、修正、販売する権限が含まれます。 こうした変更は、「編集ツール」>「一般」タブで行われます。 オブジェクトを右クリックして「編集」を開くと、設定内容を表示できます。"
-	     name="Object Management">
-		<action description="グループにオブジェクトを譲渡"
-		     longdescription="グループにオブジェクトを譲渡するには、「編集ツール」>「一般」タブを使います。"
-		     name="object deed" value="36" />
-		<action
-		     description="グループ所有オブジェクトの操作(移動、コピー、修正)"
-		     longdescription="グループ所有オブジェクトの操作(移動、コピー、修正)は、「編集ツール」>「一般」タブで行います。"
-		     name="object manipulate" value="38" />
-		<action description="グループ所有オブジェクトを販売可能に設定"
-		     longdescription="グループ所有オブジェクトを販売可能に設定にするには、「編集ツール」>「一般」タブを使います。"
-		     name="object set sale" value="39" />
+	<action_set description="これらの「能力」には、グループ所有のオブジェクトを譲渡、修正、販売する権限が含まれます。 変更は「制作ツール」 &gt; 「一般」タブで行います。 オブジェクトを右クリックして「編集」を開くと設定内容を確認できます。" name="Object Management">
+		<action description="グループにオブジェクトを譲渡" longdescription="「制作ツール」 &gt; 「一般」タブで、オブジェクトをグループに譲渡します。" name="object deed" value="36"/>
+		<action description="グループ所有オブジェクトの操作(移動、コピー、修正)" longdescription="「制作ツール」 &gt; 「一般」タブで、グループ所有のオブジェクトを操作(移動、コピー、修正)します。" name="object manipulate" value="38"/>
+		<action description="グループ所有オブジェクトを販売可能に設定" longdescription="「制作ツール」 &gt; 「一般」タブで、グループ所有のオブジェクトを販売対象に設定します。" name="object set sale" value="39"/>
 	</action_set>
-	<action_set
-	     description="これらの能力には、メンバーに、グループの負債の支払いと利子受け取りを要求する権限、グループ口座履歴へのアクセスを制限する権限が含まれます。"
-	     name="Accounting">
-		<action description="グループ負債の返済とグループ配当の受領"
-		     longdescription="この能力を持つ役割のメンバーについては、グループ負債の支払いとグループ配当の受け取りが自動的に行われます。 つまり、これらのメンバーは、毎日配当されるグループ所有の土地の売り上げ金の一部を受け取ると共に、区画の広告費などを負担することになります。"
-		     name="accounting accountable" value="40" />
+	<action_set description="これらの能力には、メンバーに、グループの負債の支払いと利子受け取りを要求する権限、グループ口座履歴へのアクセスを制限する権限が含まれます。" name="Accounting">
+		<action description="グループ負債の返済とグループ配当の受領" longdescription="この能力を持つ役割のメンバーについては、グループ負債の支払いとグループ配当の受け取りが自動的に行われます。 つまり、これらのメンバーは、毎日配当されるグループ所有の土地の売り上げ金の一部を受け取ると共に、区画の広告費などを負担することになります。" name="accounting accountable" value="40"/>
 	</action_set>
-	<action_set
-	     description="これらの能力には、グループ通知の送信、受信、表示をメンバーに許可する権限が含まれます。"
-	     name="Notices">
-		<action description="通知を送信"
-		     longdescription="この能力を持つ役割のメンバーは、「グループ情報」>「通知」タブで通知を送信することができます。"
-		     name="notices send" value="42" />
-		<action description="通知の受信と過去の通知の閲覧"
-		     longdescription="この能力を持つ役割のメンバーは、通知を受け取ることができ、「グループ情報」>「通知」タブで過去の通知を閲覧することができます。"
-		     name="notices receive" value="43" />
+	<action_set description="これらの能力には、グループ通知の送信、受信、表示をメンバーに許可する権限が含まれます。" name="Notices">
+		<action description="通知を送信" longdescription="この「能力」を持つ「役割」のメンバーは、「グループ」 &gt; 「通知」セクションから通知を送信できます。" name="notices send" value="42"/>
+		<action description="通知の受信と過去の通知の閲覧" longdescription="この「能力」を持つ「役割」のメンバーは、「グループ」 &gt; 「通知」セクションで通知を受信したり過去の通知を見ることができます。" name="notices receive" value="43"/>
 	</action_set>
-	<action_set
-	     description="これらの能力には、提案の作成と投票、投票履歴の表示をメンバーに許可する権限が含まれます。"
-	     name="Proposals">
-		<action description="提案を作成"
-		     longdescription="この能力を持つ役割のメンバーは、投票の対象となる問題提起を「グループ情報」>「問題提起」タブ上で作成することができます。"
-		     name="proposal start" value="44" />
-		<action description="問題提起に投票する"
-		     longdescription="この能力を持つ役割のメンバーは、グループ情報>提案タブで提案に投票することができます。"
-		     name="proposal vote" value="45" />
+	<action_set description="これらの能力には、提案の作成と投票、投票履歴の表示をメンバーに許可する権限が含まれます。" name="Proposals">
+		<action description="提案を作成" longdescription="この能力を持つ役割のメンバーは、投票の対象となる問題提起を「グループ情報」>「問題提起」タブ上で作成することができます。" name="proposal start" value="44"/>
+		<action description="問題提起に投票する" longdescription="この能力を持つ役割のメンバーは、グループ情報>提案タブで提案に投票することができます。" name="proposal vote" value="45"/>
 	</action_set>
-	<action_set
-	     description="
-これらのアビリティには、グループ・チャット・セッションやグループ・ボイス・チャットへのアクセスの許可や制限の権限が含まれます。
-"
-	     name="Chat">
-		<action description="グループ・チャットに参加する"
-		     longdescription="
-このアビリティを持つ役割のメンバーは、グループ・チャット・セッションにテキストおよびボイスで参加できます。
-"
-		     name="join group chat" />
-		<action description="グループ・ボイス・チャットに参加する"
-		     longdescription="
-このアビリティを持つ役割のメンバーは、グループ・ボイス・チャット・セッションに参加できます。  注: ボイス・チャット・セッションにアクセスするには、グループ・チャットに参加するアビリティが必要です。
-"
-		     name="join voice chat" />
-		<action description="グループ・チャットを管理する"
-		     longdescription="
-このアビリティを持つ役割のメンバーは、グループ・ボイス・チャット・セッションおよびグループ・テキスト・チャット・セッションへのアクセスや参加をコントロールすることができます。
-"
-		     name="moderate group chat" />
+	<action_set description=" これらのアビリティには、グループ・チャット・セッションやグループ・ボイス・チャットへのアクセスの許可や制限の権限が含まれます。 " name="Chat">
+		<action description="グループ・チャットに参加する" longdescription=" このアビリティを持つ役割のメンバーは、グループ・チャット・セッションにテキストおよびボイスで参加できます。 " name="join group chat"/>
+		<action description="グループ・ボイス・チャットに参加する" longdescription=" このアビリティを持つ役割のメンバーは、グループ・ボイス・チャット・セッションに参加できます。  注: ボイス・チャット・セッションにアクセスするには、グループ・チャットに参加するアビリティが必要です。 " name="join voice chat"/>
+		<action description="グループ・チャットを管理する" longdescription=" このアビリティを持つ役割のメンバーは、グループ・ボイス・チャット・セッションおよびグループ・テキスト・チャット・セッションへのアクセスや参加をコントロールすることができます。 " name="moderate group chat"/>
 	</action_set>
 </role_actions>
diff --git a/indra/newview/skins/default/xui/ja/sidepanel_appearance.xml b/indra/newview/skins/default/xui/ja/sidepanel_appearance.xml
index ac41d7ce2b0..4fba4b15673 100644
--- a/indra/newview/skins/default/xui/ja/sidepanel_appearance.xml
+++ b/indra/newview/skins/default/xui/ja/sidepanel_appearance.xml
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="容姿" name="appearance panel">
+<panel label="アウトフィット" name="appearance panel">
 	<string name="No Outfit" value="アウトフィットなし"/>
 	<panel name="panel_currentlook">
 		<button label="編集" name="editappearance_btn"/>
 		<text name="currentlook_title">
-			着用中のアウトフィット:
+			(保存されていません)
 		</text>
 		<text name="currentlook_name">
-			マイ アウトフィット
+			MyOutfit With a really Long Name like MOOSE
 		</text>
 	</panel>
-	<filter_editor label="フィルター" name="Filter"/>
+	<filter_editor label="アウトフィットのフィルター" name="Filter"/>
 	<button label="装着" name="wear_btn"/>
 	<button label="新しいアウトフィット" name="newlook_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml b/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml
index c2a61f738ff..0c97fed901f 100644
--- a/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml
@@ -2,7 +2,7 @@
 <panel label="もの" name="objects panel">
 	<panel label="" name="sidepanel__inventory_panel">
 		<panel name="button_panel">
-			<button label="情報" name="info_btn"/>
+			<button label="プロフィール" name="info_btn"/>
 			<button label="装着" name="wear_btn"/>
 			<button label="プレイ" name="play_btn"/>
 			<button label="テレポート" name="teleport_btn"/>
diff --git a/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml b/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml
index 9544e7756c2..c6a13fa2125 100644
--- a/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="item properties" title="持ち物アイテムのプロパティ">
+<panel name="item properties" title="オブジェクトのプロフィール">
 	<panel.string name="unknown">
 		(不明)
 	</panel.string>
@@ -15,6 +15,8 @@
 	<panel.string name="acquiredDate">
 		[year,datetime,local] [mth,datetime,local] [day,datetime,local] [wkday,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local]
 	</panel.string>
+	<text name="title" value="オブジェクトのプロフィール"/>
+	<text name="where" value="(持ち物)"/>
 	<panel label="">
 		<text name="LabelItemNameTitle">
 			名前:
@@ -28,53 +30,50 @@
 		<text name="LabelCreatorName">
 			Nicole Linden
 		</text>
-		<button label="プロフィール..." name="BtnCreator"/>
+		<button label="プロフィール" name="BtnCreator"/>
 		<text name="LabelOwnerTitle">
 			所有者:
 		</text>
 		<text name="LabelOwnerName">
 			Thrax Linden
 		</text>
-		<button label="プロフィール..." name="BtnOwner"/>
+		<button label="プロフィール" name="BtnOwner"/>
 		<text name="LabelAcquiredTitle">
 			取得:
 		</text>
 		<text name="LabelAcquiredDate">
 			Wed May 24 12:50:46 2006
 		</text>
-		<text name="OwnerLabel">
-			あなた:
-		</text>
-		<check_box label="編集" name="CheckOwnerModify"/>
-		<check_box label="コピー" name="CheckOwnerCopy"/>
-		<check_box label="再販・プレゼント" name="CheckOwnerTransfer"/>
-		<text name="AnyoneLabel">
-			全員:
-		</text>
-		<check_box label="コピー" name="CheckEveryoneCopy"/>
-		<text name="GroupLabel">
-			グループ:
-		</text>
-		<check_box label="共有" name="CheckShareWithGroup"/>
-		<text name="NextOwnerLabel">
-			次の所有者:
-		</text>
-		<check_box label="編集" name="CheckNextOwnerModify"/>
-		<check_box label="コピー" name="CheckNextOwnerCopy"/>
-		<check_box label="再販・プレゼント" name="CheckNextOwnerTransfer"/>
+		<panel name="perms_inv">
+			<text name="perm_modify">
+				あなたができること:
+			</text>
+			<check_box label="修正" name="CheckOwnerModify"/>
+			<check_box label="コピー" name="CheckOwnerCopy"/>
+			<check_box label="再販・プレゼント" name="CheckOwnerTransfer"/>
+			<text name="AnyoneLabel">
+				全員:
+			</text>
+			<check_box label="コピー" name="CheckEveryoneCopy"/>
+			<text name="GroupLabel">
+				グループ:
+			</text>
+			<check_box label="共有" name="CheckShareWithGroup" tool_tip="設定したグループのメンバー全員にこのオブジェクトの修正権限を与えます。 譲渡しない限り、役割制限を有効にはできません。"/>
+			<text name="NextOwnerLabel">
+				次の所有者:
+			</text>
+			<check_box label="修正" name="CheckNextOwnerModify"/>
+			<check_box label="コピー" name="CheckNextOwnerCopy"/>
+			<check_box label="再販・プレゼント" name="CheckNextOwnerTransfer" tool_tip="次の所有者はこのオブジェクトを他人にあげたり再販することができます"/>
+		</panel>
 		<check_box label="販売する" name="CheckPurchase"/>
 		<combo_box name="combobox sale copy">
 			<combo_box.item label="コピー" name="Copy"/>
 			<combo_box.item label="オリジナル" name="Original"/>
 		</combo_box>
-		<spinner label="価格:" name="Edit Cost"/>
-		<text name="CurrencySymbol">
-			L$
-		</text>
+		<spinner label="価格: L$" name="Edit Cost"/>
 	</panel>
 	<panel name="button_panel">
-		<button label="編集" name="edit_btn"/>
 		<button label="キャンセル" name="cancel_btn"/>
-		<button label="保存" name="save_btn"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml b/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml
index 5bf37954c50..c2d2af5346c 100644
--- a/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="object properties" title="オブジェクトのプロパティ">
+<panel name="object properties" title="オブジェクトのプロフィール">
 	<panel.string name="text deed continued">
 		譲渡
 	</panel.string>
@@ -36,6 +36,8 @@
 	<panel.string name="Sale Mixed">
 		Mixed Sale
 	</panel.string>
+	<text name="title" value="オブジェクトのプロフィール"/>
+	<text name="where" value="(ワールド内)"/>
 	<panel label="">
 		<text name="Name:">
 			名前:
@@ -43,11 +45,11 @@
 		<text name="Description:">
 			説明:
 		</text>
-		<text name="Creator:">
+		<text name="CreatorNameLabel">
 			制作者:
 		</text>
 		<text name="Creator Name">
-			Esbee Linden
+			Erica Linden
 		</text>
 		<text name="Owner:">
 			所有者:
@@ -55,13 +57,12 @@
 		<text name="Owner Name">
 			Erica Linden
 		</text>
-		<text name="Group:">
+		<text name="Group_label">
 			グループ:
 		</text>
 		<button name="button set group" tool_tip="このオブジェクト権限を共有するグループを選択"/>
 		<name_box initial_value="ローディング..." name="Group Name Proxy"/>
 		<button label="譲渡" label_selected="譲渡" name="button deed" tool_tip="このアイテムを譲渡すると「次の所有者」の権限が適用されます。 グループ共有オブジェクトは、グループのオフィサーが譲渡できます。"/>
-		<check_box label="共有" name="checkbox share with group" tool_tip="設定したグループのメンバー全員にこのオブジェクトの修正権限を与えます。 譲渡しない限り、役割制限を有効にはできません。"/>
 		<text name="label click action">
 			クリックで:
 		</text>
@@ -72,55 +73,56 @@
 			<combo_box.item label="オブジェクトに支払う" name="Payobject"/>
 			<combo_box.item label="開く" name="Open"/>
 		</combo_box>
-		<check_box label="販売対象:" name="checkbox for sale"/>
-		<combo_box name="sale type">
-			<combo_box.item label="コピー" name="Copy"/>
-			<combo_box.item label="中身" name="Contents"/>
-			<combo_box.item label="オリジナル" name="Original"/>
-		</combo_box>
-		<spinner label="価格: L$" name="Edit Cost"/>
-		<check_box label="検索に表示" name="search_check" tool_tip="このオブジェクトを検索結果に表示します"/>
-		<panel name="perms_build">
+		<panel name="perms_inv">
 			<text name="perm_modify">
-				あなたはこのオブジェクトを修正できます
+				このオブジェクトを修正できます
 			</text>
 			<text name="Anyone can:">
 				全員:
 			</text>
-			<check_box label="移動" name="checkbox allow everyone move"/>
 			<check_box label="コピー" name="checkbox allow everyone copy"/>
-			<text name="Next owner can:">
+			<check_box label="移動" name="checkbox allow everyone move"/>
+			<text name="GroupLabel">
+				グループ:
+			</text>
+			<check_box label="共有" name="checkbox share with group" tool_tip="設定したグループのメンバー全員にこのオブジェクトの修正権限を与えます。 譲渡しない限り、役割制限を有効にはできません。"/>
+			<text name="NextOwnerLabel">
 				次の所有者:
 			</text>
 			<check_box label="修正" name="checkbox next owner can modify"/>
 			<check_box label="コピー" name="checkbox next owner can copy"/>
 			<check_box label="再販・プレゼント" name="checkbox next owner can transfer" tool_tip="次の所有者はこのオブジェクトを他人にあげたり再販することができます"/>
-			<text name="B:">
-				B.
-			</text>
-			<text name="O:">
-				O:
-			</text>
-			<text name="G:">
-				G:
-			</text>
-			<text name="E:">
-				E:
-			</text>
-			<text name="N:">
-				N:
-			</text>
-			<text name="F:">
-				F:
-			</text>
 		</panel>
+		<check_box label="販売中" name="checkbox for sale"/>
+		<combo_box name="sale type">
+			<combo_box.item label="コピー" name="Copy"/>
+			<combo_box.item label="中身" name="Contents"/>
+			<combo_box.item label="オリジナル" name="Original"/>
+		</combo_box>
+		<spinner label="価格: L$" name="Edit Cost"/>
+		<check_box label="検索に表示" name="search_check" tool_tip="このオブジェクトを検索結果に表示します"/>
+		<text name="B:">
+			B.
+		</text>
+		<text name="O:">
+			O:
+		</text>
+		<text name="G:">
+			G:
+		</text>
+		<text name="E:">
+			E:
+		</text>
+		<text name="N:">
+			N:
+		</text>
+		<text name="F:">
+			F:
+		</text>
 	</panel>
 	<panel name="button_panel">
-		<button label="編集" name="edit_btn"/>
 		<button label="開く" name="open_btn"/>
 		<button label="支払う" name="pay_btn"/>
 		<button label="買う" name="buy_btn"/>
-		<button label="キャンセル" name="cancel_btn"/>
-		<button label="保存" name="save_btn"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml
index 2006d1cbdc2..d2a1977fc97 100644
--- a/indra/newview/skins/default/xui/ja/strings.xml
+++ b/indra/newview/skins/default/xui/ja/strings.xml
@@ -10,6 +10,9 @@
 	<string name="APP_NAME">
 		Second Life
 	</string>
+	<string name="CAPITALIZED_APP_NAME">
+		SECOND LIFE
+	</string>
 	<string name="SECOND_LIFE_GRID">
 		Second Life Grid
 	</string>
@@ -49,6 +52,9 @@
 	<string name="LoginInitializingMultimedia">
 		マルチメディアを初期化しています...
 	</string>
+	<string name="LoginInitializingFonts">
+		フォントをローディング中...
+	</string>
 	<string name="LoginVerifyingCache">
 		キャッシュ・ファイルを検証しています(所要時間は60~90秒)...
 	</string>
@@ -79,6 +85,9 @@
 	<string name="LoginDownloadingClothing">
 		服をダウンロードしています...
 	</string>
+	<string name="LoginFailedNoNetwork">
+		ネットワークエラー: 接続を確立できませんでした。お使いのネットワーク接続をご確認ください。
+	</string>
 	<string name="Quit">
 		終了
 	</string>
@@ -174,7 +183,7 @@
 		地図に表示
 	</string>
 	<string name="BUTTON_CLOSE_DARWIN">
-		閉じる (&#8984;W)
+		閉じる (⌘W)
 	</string>
 	<string name="BUTTON_CLOSE_WIN">
 		閉じる (Ctrl+W)
@@ -191,9 +200,6 @@
 	<string name="BUTTON_DOCK">
 		ドッキング
 	</string>
-	<string name="BUTTON_UNDOCK">
-		切り離す
-	</string>
 	<string name="BUTTON_HELP">
 		ヘルプを表示
 	</string>
@@ -626,11 +632,14 @@
 	<string name="ControlYourCamera">
 		カメラのコントロール
 	</string>
+	<string name="NotConnected">
+		接続されていません
+	</string>
 	<string name="SIM_ACCESS_PG">
-		PG
+		一般
 	</string>
 	<string name="SIM_ACCESS_MATURE">
-		Mature
+		控えめ
 	</string>
 	<string name="SIM_ACCESS_ADULT">
 		Adult
@@ -818,6 +827,9 @@
 	<string name="InventoryNoMatchingItems">
 		一致するアイテムが持ち物にありませんでした
 	</string>
+	<string name="FavoritesNoMatchingItems">
+		ここにランドマークをドラッグして、お気に入りに追加します。
+	</string>
 	<string name="InventoryNoTexture">
 		持ち物内にこのテクスチャのコピーがありません
 	</string>
@@ -1288,6 +1300,156 @@
 	<string name="RegionInfoAllowedGroups">
 		許可されたグループ: ([ALLOWEDGROUPS]、最大 [MAXACCESS] グループ)
 	</string>
+	<string name="ScriptLimitsParcelScriptMemory">
+		区画スクリプトメモリ
+	</string>
+	<string name="ScriptLimitsParcelsOwned">
+		区画一覧: [PARCELS]
+	</string>
+	<string name="ScriptLimitsMemoryUsed">
+		使用されたメモリ: [MAX] kb 中 [COUNT] kb:[AVAILABLE] kb 利用可
+	</string>
+	<string name="ScriptLimitsMemoryUsedSimple">
+		使用されたメモリ: [COUNT] kb
+	</string>
+	<string name="ScriptLimitsParcelScriptURLs">
+		区画のスクリプトURL
+	</string>
+	<string name="ScriptLimitsURLsUsed">
+		使用されたURL: [MAX] 中 [COUNT] :[AVAILABLE] 利用可
+	</string>
+	<string name="ScriptLimitsURLsUsedSimple">
+		使用されたURL: [COUNT]
+	</string>
+	<string name="ScriptLimitsRequestError">
+		情報のリクエスト中にエラーが発生しました
+	</string>
+	<string name="ScriptLimitsRequestWrongRegion">
+		エラー: スクリプト情報は現在地のみ取得できます
+	</string>
+	<string name="ScriptLimitsRequestWaiting">
+		情報を取得中...
+	</string>
+	<string name="ScriptLimitsRequestDontOwnParcel">
+		この区画を調査する権限がありません。
+	</string>
+	<string name="SITTING_ON">
+		着席中
+	</string>
+	<string name="ATTACH_CHEST">
+		胸部
+	</string>
+	<string name="ATTACH_HEAD">
+		é ­
+	</string>
+	<string name="ATTACH_LSHOULDER">
+		左肩
+	</string>
+	<string name="ATTACH_RSHOULDER">
+		右肩
+	</string>
+	<string name="ATTACH_LHAND">
+		左手
+	</string>
+	<string name="ATTACH_RHAND">
+		右手
+	</string>
+	<string name="ATTACH_LFOOT">
+		左足
+	</string>
+	<string name="ATTACH_RFOOT">
+		右足
+	</string>
+	<string name="ATTACH_BACK">
+		背中
+	</string>
+	<string name="ATTACH_PELVIS">
+		骨盤
+	</string>
+	<string name="ATTACH_MOUTH">
+		口
+	</string>
+	<string name="ATTACH_CHIN">
+		あご
+	</string>
+	<string name="ATTACH_LEAR">
+		左耳
+	</string>
+	<string name="ATTACH_REAR">
+		右耳
+	</string>
+	<string name="ATTACH_LEYE">
+		左目
+	</string>
+	<string name="ATTACH_REYE">
+		右目
+	</string>
+	<string name="ATTACH_NOSE">
+		é¼»
+	</string>
+	<string name="ATTACH_RUARM">
+		右腕(上)
+	</string>
+	<string name="ATTACH_RLARM">
+		右腕(下)
+	</string>
+	<string name="ATTACH_LUARM">
+		左腕(上)
+	</string>
+	<string name="ATTACH_LLARM">
+		左腕(下)
+	</string>
+	<string name="ATTACH_RHIP">
+		右腰
+	</string>
+	<string name="ATTACH_RULEG">
+		右脚(上)
+	</string>
+	<string name="ATTACH_RLLEG">
+		右脚(下)
+	</string>
+	<string name="ATTACH_LHIP">
+		左腰
+	</string>
+	<string name="ATTACH_LULEG">
+		左脚(上)
+	</string>
+	<string name="ATTACH_LLLEG">
+		左脚(下)
+	</string>
+	<string name="ATTACH_BELLY">
+		お腹
+	</string>
+	<string name="ATTACH_RPEC">
+		右胸筋
+	</string>
+	<string name="ATTACH_LPEC">
+		左胸筋
+	</string>
+	<string name="ATTACH_HUD_CENTER_2">
+		HUD(中央 2)
+	</string>
+	<string name="ATTACH_HUD_TOP_RIGHT">
+		HUD右上
+	</string>
+	<string name="ATTACH_HUD_TOP_CENTER">
+		HUD(上・中央)
+	</string>
+	<string name="ATTACH_HUD_TOP_LEFT">
+		HUD 左上
+	</string>
+	<string name="ATTACH_HUD_CENTER_1">
+		HUD(中央 1)
+	</string>
+	<string name="ATTACH_HUD_BOTTOM_LEFT">
+		HUD(左下)
+	</string>
+	<string name="ATTACH_HUD_BOTTOM">
+		HUD(下)
+	</string>
+	<string name="ATTACH_HUD_BOTTOM_RIGHT">
+		HUD(右下)
+	</string>
 	<string name="CursorPos">
 		[LINE] 行目、[COLUMN] 列目
 	</string>
@@ -1338,6 +1500,12 @@
 	<string name="ClassifiedUpdateAfterPublish">
 		(掲載後更新)
 	</string>
+	<string name="NoPicksClassifiedsText">
+		ここにはピック・クラシファイド広告はありません。
+	</string>
+	<string name="PicksClassifiedsLoadingText">
+		ローディング...
+	</string>
 	<string name="MultiPreviewTitle">
 		プレビュー
 	</string>
@@ -1414,23 +1582,35 @@
 		不明の拡張子: %s
 使用可能な拡張子: .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
 	</string>
+	<string name="MuteObject2">
+		ブロック
+	</string>
+	<string name="MuteAvatar">
+		ブロック
+	</string>
+	<string name="UnmuteObject">
+		ブロック解除
+	</string>
+	<string name="UnmuteAvatar">
+		ブロック解除
+	</string>
 	<string name="AddLandmarkNavBarMenu">
-		ランドマークを追加...
+		マイ ランドマークに追加...
 	</string>
 	<string name="EditLandmarkNavBarMenu">
-		ランドマークを編集...
+		マイ ランドマークを編集...
 	</string>
 	<string name="accel-mac-control">
-		&#8963;
+		⌃
 	</string>
 	<string name="accel-mac-command">
-		&#8984;
+		⌘
 	</string>
 	<string name="accel-mac-option">
-		&#8997;
+		⌥
 	</string>
 	<string name="accel-mac-shift">
-		&#8679;
+		⇧
 	</string>
 	<string name="accel-win-control">
 		Ctrl+
@@ -1616,7 +1796,7 @@
 		致命的なエラー
 	</string>
 	<string name="MBRequiresAltiVec">
-		 [APP_NAME] は、AltiVec搭載のプロセッサが必要です。(G4 以降)
+		[APP_NAME] は、AltiVec搭載のプロセッサが必要です。(G4 以降)
 	</string>
 	<string name="MBAlreadyRunning">
 		[APP_NAME] はすでに実行中です。
@@ -1628,7 +1808,7 @@
 クラッシュ報告を送信しますか?
 	</string>
 	<string name="MBAlert">
-		警告
+		通知
 	</string>
 	<string name="MBNoDirectX">
 		[APP_NAME] は DirectX 9.0b 及びそれ以降のバージョンを検出することができませんでした。
@@ -2010,12 +2190,6 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="Eyes Bugged">
 		下まぶたがたるんだ目
 	</string>
-	<string name="Eyes Shear Left Up">
-		左側を上に
-	</string>
-	<string name="Eyes Shear Right Up">
-		右側を上に
-	</string>
 	<string name="Face Shear">
 		顔のゆがみ
 	</string>
@@ -3018,6 +3192,27 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="LocationCtrlComboBtnTooltip">
 		マイロケーション履歴
 	</string>
+	<string name="LocationCtrlForSaleTooltip">
+		この土地を購入
+	</string>
+	<string name="LocationCtrlVoiceTooltip">
+		ここではボイスの利用ができません
+	</string>
+	<string name="LocationCtrlFlyTooltip">
+		飛行は禁止されています
+	</string>
+	<string name="LocationCtrlPushTooltip">
+		プッシュ禁止
+	</string>
+	<string name="LocationCtrlBuildTooltip">
+		オブジェクトの制作・ドロップは禁止されています
+	</string>
+	<string name="LocationCtrlScriptsTooltip">
+		スクリプト不可
+	</string>
+	<string name="LocationCtrlDamageTooltip">
+		体力
+	</string>
 	<string name="UpdaterWindowTitle">
 		[APP_NAME] アップデート
 	</string>
@@ -3075,6 +3270,33 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="IM_moderator_label">
 		(モデレータ)
 	</string>
+	<string name="started_call">
+		ボイスコールを開始します
+	</string>
+	<string name="joined_call">
+		ボイスコールに参加しました
+	</string>
+	<string name="ringing-im">
+		ボイスコールに参加...
+	</string>
+	<string name="connected-im">
+		接続しました。コール終了をクリックして切ります
+	</string>
+	<string name="hang_up-im">
+		ボイスコールから退席しました
+	</string>
+	<string name="answering-im">
+		接続中...
+	</string>
+	<string name="conference-title">
+		アドホックコンファレンス
+	</string>
+	<string name="inventory_item_offered-im">
+		持ち物アイテムが送られてきました
+	</string>
+	<string name="share_alert">
+		持ち物からここにアイテムをドラッグします
+	</string>
 	<string name="only_user_message">
 		このセッションにいるユーザーはあなただけです。
 	</string>
@@ -3084,6 +3306,12 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="invite_message">
 		このボイスチャットに応答/接続する場合は、[BUTTON NAME]をクリックしてください。
 	</string>
+	<string name="muted_message">
+		この住人をブロックしています。 メッセージを送ると、ブロックが自動的に解除されます。
+	</string>
+	<string name="generic">
+		リクエスト中にエラーが発生しました。あとでもう一度お試しください。
+	</string>
 	<string name="generic_request_error">
 		要求中にエラーが発生しました。後でもう一度試してください。
 	</string>
@@ -3102,19 +3330,37 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="not_a_mod_error">
 		あなたはセッション・モデレータではありません。
 	</string>
+	<string name="muted">
+		グループのモデレーターが、あなたのテキストチャットを禁止しました。
+	</string>
 	<string name="muted_error">
 		グループモデレータがあなたのテキストチャットを無効化しました
 	</string>
 	<string name="add_session_event">
 		[RECIPIENT] とのチャット・セッションにユーザーを追加することができません
 	</string>
+	<string name="message">
+		[RECIPIENT] とのチャットセッションに、メッセージを送信することができません。
+	</string>
 	<string name="message_session_event">
 		[RECIPIENT] とのチャット・セッションにメッセージを送ることができません
 	</string>
+	<string name="mute">
+		モデレート中にエラーが発生しました。
+	</string>
+	<string name="removed">
+		グループから脱退しました。
+	</string>
 	<string name="removed_from_group">
 		あなたはグループから削除されました。
 	</string>
 	<string name="close_on_no_ability">
 		このチャット・セッションを継続することはできません
 	</string>
+	<string name="unread_chat_single">
+		[SOURCES] は何か新しいことを言いました。
+	</string>
+	<string name="unread_chat_multiple">
+		[SOURCES] は何か新しいことを言いました。
+	</string>
 </strings>
-- 
GitLab


From dc0b34cf00f0e91de20f6d608013fb0b44bb01ce Mon Sep 17 00:00:00 2001
From: brad kittenbrink <brad@lindenlab.com>
Date: Tue, 26 Jan 2010 15:33:08 -0800
Subject: [PATCH 132/521] Fix for stray tab character breaking the coding
 standard policy hook.

---
 scripts/template_verifier.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/template_verifier.py b/scripts/template_verifier.py
index d5fc1192700..adcfcbcae63 100755
--- a/scripts/template_verifier.py
+++ b/scripts/template_verifier.py
@@ -103,7 +103,7 @@ def die(msg):
 PRODUCTION_ACCEPTABLE = (compatibility.Same, compatibility.Newer)
 DEVELOPMENT_ACCEPTABLE = (
     compatibility.Same, compatibility.Newer,
-    compatibility.Older, compatibility.Mixed)	
+    compatibility.Older, compatibility.Mixed)
 
 MAX_MASTER_AGE = 60 * 60 * 4   # refresh master cache every 4 hours
 
-- 
GitLab


From d4b5ee8a0c893150c68c5e506e62813f0704c9a4 Mon Sep 17 00:00:00 2001
From: Eli Linden <eli@lindenlab.com>
Date: Tue, 26 Jan 2010 16:39:10 -0800
Subject: [PATCH 133/521] DEV-43688 cycle2 changes from Simone for DE

---
 .../default/xui/de/floater_avatar_picker.xml  |  2 +-
 .../default/xui/de/floater_color_picker.xml   |  2 +-
 .../default/xui/de/floater_notification.xml   |  2 +-
 .../skins/default/xui/de/floater_sys_well.xml |  2 +-
 .../default/xui/de/floater_world_map.xml      |  2 +-
 .../xui/de/menu_inventory_gear_default.xml    |  2 +-
 .../xui/de/menu_teleport_history_gear.xml     |  2 +-
 .../skins/default/xui/de/menu_viewer.xml      |  6 ++---
 .../skins/default/xui/de/notifications.xml    |  4 ++--
 .../default/xui/de/panel_main_inventory.xml   |  2 +-
 .../default/xui/de/panel_place_profile.xml    |  2 +-
 .../skins/default/xui/de/panel_places.xml     |  2 +-
 .../xui/de/panel_preferences_setup.xml        |  2 +-
 .../xui/de/panel_preferences_sound.xml        |  2 +-
 .../newview/skins/default/xui/de/strings.xml  | 24 +++++++++----------
 15 files changed, 29 insertions(+), 29 deletions(-)

diff --git a/indra/newview/skins/default/xui/de/floater_avatar_picker.xml b/indra/newview/skins/default/xui/de/floater_avatar_picker.xml
index ed8de62b695..bc78ccd7f8b 100644
--- a/indra/newview/skins/default/xui/de/floater_avatar_picker.xml
+++ b/indra/newview/skins/default/xui/de/floater_avatar_picker.xml
@@ -34,7 +34,7 @@
 		</panel>
 		<panel label="In meiner Nähe" name="NearMePanel">
 			<text name="InstructSelectResident">
-				Wählen Sie eine Person aus, die sich in der Nähe befindet:
+				Wählen Sie eine Person aus:
 			</text>
 			<slider bottom_delta="-36" label="Bereich" name="near_me_range"/>
 			<text name="meters">
diff --git a/indra/newview/skins/default/xui/de/floater_color_picker.xml b/indra/newview/skins/default/xui/de/floater_color_picker.xml
index 552bd2e2bfc..aed4bacb30f 100644
--- a/indra/newview/skins/default/xui/de/floater_color_picker.xml
+++ b/indra/newview/skins/default/xui/de/floater_color_picker.xml
@@ -26,6 +26,6 @@
 		Aktuelle Farbe:
 	</text>
 	<text name="(Drag below to save.)">
-		(Zum Speichern nach unten ziehen.)
+		(Nach unten ziehen)
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/floater_notification.xml b/indra/newview/skins/default/xui/de/floater_notification.xml
index c0806ef50c5..7752d22b521 100644
--- a/indra/newview/skins/default/xui/de/floater_notification.xml
+++ b/indra/newview/skins/default/xui/de/floater_notification.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="notification" title="BENACHRICHTIGUNGEN">
+<floater name="notification" title="MELDUNGEN">
 	<text_editor name="payload">
 		Wird geladen...
 	</text_editor>
diff --git a/indra/newview/skins/default/xui/de/floater_sys_well.xml b/indra/newview/skins/default/xui/de/floater_sys_well.xml
index 0aa0014baaf..982786b66e4 100644
--- a/indra/newview/skins/default/xui/de/floater_sys_well.xml
+++ b/indra/newview/skins/default/xui/de/floater_sys_well.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="notification_chiclet" title="BENACHRICHTIGUNGEN">
+<floater name="notification_chiclet" title="MELDUNGEN">
 	<string name="title_im_well_window">
 		IM-SITZUNGEN
 	</string>
diff --git a/indra/newview/skins/default/xui/de/floater_world_map.xml b/indra/newview/skins/default/xui/de/floater_world_map.xml
index 89af5d4a30c..accc023b8fe 100644
--- a/indra/newview/skins/default/xui/de/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/de/floater_world_map.xml
@@ -28,7 +28,7 @@
 		<text name="auction_label">
 			Land-Auktion
 		</text>
-		<button label="Nach Hause" label_selected="Nach Hause" name="Go Home" tool_tip="An meinen Heimatort teleportieren"/>
+		<button label="Nach Hause" label_selected="Nach Hause" name="Go Home" tool_tip="Nach Hause teleportieren"/>
 		<text name="Home_label">
 			Startseite
 		</text>
diff --git a/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml
index 472d7bc4fda..e2b980c7b60 100644
--- a/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml
+++ b/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="menu_gear_default">
-	<menu_item_call label="Fenster: Neues Inventar" name="new_window"/>
+	<menu_item_call label="Neues Inventar-Fenster" name="new_window"/>
 	<menu_item_call label="Nach Name sortieren" name="sort_by_name"/>
 	<menu_item_call label="Nach aktuellesten Objekten sortieren" name="sort_by_recent"/>
 	<menu_item_call label="Filter anzeigen" name="show_filters"/>
diff --git a/indra/newview/skins/default/xui/de/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/de/menu_teleport_history_gear.xml
index 2bfdadf22a4..68b8e21802a 100644
--- a/indra/newview/skins/default/xui/de/menu_teleport_history_gear.xml
+++ b/indra/newview/skins/default/xui/de/menu_teleport_history_gear.xml
@@ -2,5 +2,5 @@
 <menu name="Teleport History Gear Context Menu">
 	<menu_item_call label="Alle Ordner aufklappen" name="Expand all folders"/>
 	<menu_item_call label="Alle Ordner schließen" name="Collapse all folders"/>
-	<menu_item_call label="Teleport-Verlauf löschen" name="Clear Teleport History"/>
+	<menu_item_call label="Teleport-Liste löschen" name="Clear Teleport History"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml
index e972e5d1f53..c6bbea285fd 100644
--- a/indra/newview/skins/default/xui/de/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/de/menu_viewer.xml
@@ -23,7 +23,7 @@
 		<menu_item_call label="Meine Freunde" name="My Friends"/>
 		<menu_item_call label="Meine Gruppen" name="My Groups"/>
 		<menu_item_check label="Lokaler Chat" name="Nearby Chat"/>
-		<menu_item_call label="Leute in dern Nähe" name="Active Speakers"/>
+		<menu_item_call label="Leute in der Nähe" name="Active Speakers"/>
 		<menu_item_check label="Medien in der Nähe" name="Nearby Media"/>
 	</menu>
 	<menu label="Welt" name="World">
@@ -208,7 +208,7 @@
 		<menu label="Konsolen" name="Consoles">
 			<menu_item_check label="Textur" name="Texture Console"/>
 			<menu_item_check label="Fehler beseitigen" name="Debug Console"/>
-			<menu_item_call label="Konsole: Meldungen" name="Notifications"/>
+			<menu_item_call label="Meldungen" name="Notifications"/>
 			<menu_item_check label="Texturgröße" name="Texture Size"/>
 			<menu_item_check label="Texture-Kategorie" name="Texture Category"/>
 			<menu_item_check label="Schnelle Timer" name="Fast Timers"/>
@@ -281,7 +281,7 @@
 		<menu label="Netzwerk" name="Network">
 			<menu_item_check label="Agent pausieren" name="AgentPause"/>
 			<menu_item_call label="Meldungsprotokoll aktivieren" name="Enable Message Log"/>
-			<menu_item_call label="Meldungs-Protokoll deaktivieren" name="Disable Message Log"/>
+			<menu_item_call label="Meldungsprotokoll deaktivieren" name="Disable Message Log"/>
 			<menu_item_check label="Objektposition laut Geschwindigkeit interpolieren" name="Velocity Interpolate Objects"/>
 			<menu_item_check label="Positionen der interpolierten Objekte anfragen" name="Ping Interpolate Object Positions"/>
 			<menu_item_call label="Ein Paket fallenlassen" name="Drop a Packet"/>
diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml
index 65d3b74bd56..d94bbd8564f 100644
--- a/indra/newview/skins/default/xui/de/notifications.xml
+++ b/indra/newview/skins/default/xui/de/notifications.xml
@@ -417,7 +417,7 @@ Das Objekt ist möglicherweise außer Reichweite oder wurde gelöscht.
 	</notification>
 	<notification name="StartRegionEmpty">
 		Sie haben keine Start-Region festgelegt.
-Bitte geben Sie den Namen der Region im Feld „Startposition“ ein oder wählen Sie „Mein letzter Standort“ oder „Mein Heimatort“ als Startposition aus.
+Bitte geben Sie den Namen der Region im Feld „Startposition“ ein oder wählen Sie „Mein letzter Standort“ oder „Mein Zuhause“ als Startposition aus.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="CouldNotStartStopScript">
@@ -2572,7 +2572,7 @@ Diese werden für ein paar Sekunden sicherheitshalber gesperrt.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="ConfirmClearTeleportHistory">
-		Möchten Sie Ihren Teleport-Verlauf löschen?
+		Möchten Sie Ihre Teleport-Liste löschen?
 		<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
 	</notification>
 	<notification name="BottomTrayButtonCanNotBeShown">
diff --git a/indra/newview/skins/default/xui/de/panel_main_inventory.xml b/indra/newview/skins/default/xui/de/panel_main_inventory.xml
index 026e766ab58..aa0b43b5506 100644
--- a/indra/newview/skins/default/xui/de/panel_main_inventory.xml
+++ b/indra/newview/skins/default/xui/de/panel_main_inventory.xml
@@ -29,7 +29,7 @@
 			<menu_item_call label="Papierkorb ausleeren" name="Empty Trash"/>
 			<menu_item_call label="Fundstücke ausleeren" name="Empty Lost And Found"/>
 		</menu>
-		<menu label="Bauen" name="Create">
+		<menu label="Erstellen" name="Create">
 			<menu_item_call label="Neuer Ordner" name="New Folder"/>
 			<menu_item_call label="Neues Skript" name="New Script"/>
 			<menu_item_call label="Neue Notizkarte" name="New Note"/>
diff --git a/indra/newview/skins/default/xui/de/panel_place_profile.xml b/indra/newview/skins/default/xui/de/panel_place_profile.xml
index b933a0a4990..94a43833bf4 100644
--- a/indra/newview/skins/default/xui/de/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/de/panel_place_profile.xml
@@ -6,7 +6,7 @@
 	<string name="available" value="verfügbar"/>
 	<string name="allocated" value="vergeben"/>
 	<string name="title_place" value="Ortsprofil"/>
-	<string name="title_teleport_history" value="Teleport-Verlauf"/>
+	<string name="title_teleport_history" value="Speicherort der Teleport-Liste"/>
 	<string name="not_available" value="k.A."/>
 	<string name="unknown" value="(unbekannt)"/>
 	<string name="public" value="(öffentlich)"/>
diff --git a/indra/newview/skins/default/xui/de/panel_places.xml b/indra/newview/skins/default/xui/de/panel_places.xml
index d57ba9d0ab1..8ee26f4e5fc 100644
--- a/indra/newview/skins/default/xui/de/panel_places.xml
+++ b/indra/newview/skins/default/xui/de/panel_places.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Orte" name="places panel">
 	<string name="landmarks_tab_title" value="MEINE LANDMARKEN"/>
-	<string name="teleport_history_tab_title" value="TELEPORT-VERLAUF"/>
+	<string name="teleport_history_tab_title" value="TELEPORT-LISTE"/>
 	<filter_editor label="Orte filtern" name="Filter"/>
 	<panel name="button_panel">
 		<button label="Teleportieren" name="teleport_btn" tool_tip="Zu ausgewähltem Standort teleportieren"/>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_setup.xml b/indra/newview/skins/default/xui/de/panel_preferences_setup.xml
index 89433378bb5..00be3920ca0 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_setup.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Hardware &amp; Web" name="Input panel">
+<panel label="Hardware/Internet" name="Input panel">
 	<button label="Andere Geräte" name="joystick_setup_button"/>
 	<text name="Mouselook:">
 		Mouselook:
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml
index 6060b1e6107..2398da71d02 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml
@@ -10,7 +10,7 @@
 	<check_box label="Voice aktivieren" name="enable_voice_check"/>
 	<slider label="Sprache" name="Voice Volume"/>
 	<text name="Listen from">
-		Hören von:
+		Zuhören von:
 	</text>
 	<radio_group name="ear_location">
 		<radio_item label="Kameraposition" name="0"/>
diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
index 29c07f9f660..8fd1c59ca0b 100644
--- a/indra/newview/skins/default/xui/de/strings.xml
+++ b/indra/newview/skins/default/xui/de/strings.xml
@@ -825,7 +825,7 @@
 		ESC drücken, um zur Normalansicht zurückzukehren
 	</string>
 	<string name="InventoryNoMatchingItems">
-		Im Inventar wurden keine passenden Artikel gefunden.
+		Im Inventar wurden keine passenden Objekte gefunden.
 	</string>
 	<string name="FavoritesNoMatchingItems">
 		Hier eine Landmarke hin ziehen, um diese zu Ihrem Favoriten hinzuzufügen.
@@ -1924,7 +1924,7 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 		Volumen: Oben
 	</string>
 	<string name="Big Head">
-		Großer Kopf
+		Groß
 	</string>
 	<string name="Big Pectorals">
 		Große Brustmuskeln
@@ -1960,13 +1960,13 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 		Sommersprossen
 	</string>
 	<string name="Body Thick">
-		Körper - breit
+		breit
 	</string>
 	<string name="Body Thickness">
 		Körperbreite
 	</string>
 	<string name="Body Thin">
-		Körper - schmal
+		schmal
 	</string>
 	<string name="Bow Legged">
 		o-beinig
@@ -2323,7 +2323,7 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 		Absatzform
 	</string>
 	<string name="Height">
-		Höhe
+		Größe
 	</string>
 	<string name="High">
 		Hoch
@@ -2605,16 +2605,16 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 		Mehr
 	</string>
 	<string name="More Sloped">
-		Mehr
+		Flach
 	</string>
 	<string name="More Square">
-		Mehr
+		Eckiger
 	</string>
 	<string name="More Upper Lip">
 		Mehr
 	</string>
 	<string name="More Vertical">
-		Mehr
+		Steil
 	</string>
 	<string name="More Volume">
 		Mehr
@@ -2929,10 +2929,10 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 		Falten
 	</string>
 	<string name="Shoe Height">
-		Höhe
+		Schuhart
 	</string>
 	<string name="Short">
-		Kurz
+		Sandale
 	</string>
 	<string name="Short Arms">
 		Kurze Arme
@@ -3013,7 +3013,7 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 		Kleine Hände
 	</string>
 	<string name="Small Head">
-		Kleiner Kopf
+		Klein
 	</string>
 	<string name="Smooth">
 		Glätten
@@ -3061,7 +3061,7 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 		Nach vorne
 	</string>
 	<string name="Tall">
-		Groß
+		Stiefel
 	</string>
 	<string name="Taper Back">
 		Ansatzbreite hinten
-- 
GitLab


From 03dbeb6f4da302f4c5f118c4d848b744495a7445 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Tue, 26 Jan 2010 17:32:12 -0800
Subject: [PATCH 134/521] CID-400  Checker: UNINIT_CTOR Function:
 LLDirPicker::LLDirPicker() File: /indra/newview/lldirpicker.cpp

---
 indra/newview/lldirpicker.cpp | 14 ++++++++++----
 indra/newview/lldirpicker.h   |  2 +-
 2 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/indra/newview/lldirpicker.cpp b/indra/newview/lldirpicker.cpp
index a720dc46b54..d1abbb0f513 100644
--- a/indra/newview/lldirpicker.cpp
+++ b/indra/newview/lldirpicker.cpp
@@ -61,7 +61,9 @@ LLDirPicker LLDirPicker::sInstance;
 //
 #if LL_WINDOWS
 
-LLDirPicker::LLDirPicker() 
+LLDirPicker::LLDirPicker() :
+	mFileName(NULL),
+	mLocked(false)
 {
 }
 
@@ -125,7 +127,9 @@ std::string LLDirPicker::getDirName()
 /////////////////////////////////////////////DARWIN
 #elif LL_DARWIN
 
-LLDirPicker::LLDirPicker() 
+LLDirPicker::LLDirPicker() :
+	mFileName(NULL),
+	mLocked(false)
 {
 	reset();
 
@@ -262,13 +266,15 @@ std::string LLDirPicker::getDirName()
 
 void LLDirPicker::reset()
 {
-	mLocked = FALSE;
+	mLocked = false;
 	mDir.clear();
 }
 
 #elif LL_LINUX || LL_SOLARIS
 
-LLDirPicker::LLDirPicker() 
+LLDirPicker::LLDirPicker() :
+	mFileName(NULL),
+	mLocked(false)
 {
 	mFilePicker = new LLFilePicker();
 	reset();
diff --git a/indra/newview/lldirpicker.h b/indra/newview/lldirpicker.h
index 26f76915aee..b48d2c66c41 100644
--- a/indra/newview/lldirpicker.h
+++ b/indra/newview/lldirpicker.h
@@ -97,7 +97,7 @@ class LLDirPicker
 
 	std::string* mFileName;
 	std::string  mDir;
-	BOOL mLocked;
+	bool mLocked;
 
 	static LLDirPicker sInstance;
 	
-- 
GitLab


From 7ed71ecf71e275fd8b36f88d0ad9826a56a0ef3d Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Tue, 26 Jan 2010 17:35:25 -0800
Subject: [PATCH 135/521] CID-399  Checker: UNINIT_CTOR Function:
 LLFilePicker::LLFilePicker() File: /indra/newview/llfilepicker.cpp

---
 indra/newview/llfilepicker.cpp | 13 +++++++------
 indra/newview/llfilepicker.h   |  3 +--
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/indra/newview/llfilepicker.cpp b/indra/newview/llfilepicker.cpp
index 028e1cc098c..2873057c19a 100644
--- a/indra/newview/llfilepicker.cpp
+++ b/indra/newview/llfilepicker.cpp
@@ -68,7 +68,7 @@ LLFilePicker LLFilePicker::sInstance;
 //
 LLFilePicker::LLFilePicker()
 	: mCurrentFile(0),
-	  mLocked(FALSE)
+	  mLocked(false)
 
 {
 	reset();
@@ -92,6 +92,7 @@ LLFilePicker::LLFilePicker()
 	mOFN.lCustData = 0L;
 	mOFN.lpfnHook = NULL;
 	mOFN.lpTemplateName = NULL;
+	mFilesW[0] = '\0';
 #endif
 
 #if LL_DARWIN
@@ -120,7 +121,7 @@ const std::string LLFilePicker::getNextFile()
 {
 	if (mCurrentFile >= getFileCount())
 	{
-		mLocked = FALSE;
+		mLocked = false;
 		return std::string();
 	}
 	else
@@ -133,7 +134,7 @@ const std::string LLFilePicker::getCurFile()
 {
 	if (mCurrentFile >= getFileCount())
 	{
-		mLocked = FALSE;
+		mLocked = false;
 		return std::string();
 	}
 	else
@@ -144,7 +145,7 @@ const std::string LLFilePicker::getCurFile()
 
 void LLFilePicker::reset()
 {
-	mLocked = FALSE;
+	mLocked = false;
 	mFiles.clear();
 	mCurrentFile = 0;
 }
@@ -276,7 +277,7 @@ BOOL LLFilePicker::getMultipleOpenFiles(ELoadFilter filter)
 		}
 		else
 		{
-			mLocked = TRUE;
+			mLocked = true;
 			WCHAR* tptrw = mFilesW;
 			std::string dirname;
 			while(1)
@@ -866,7 +867,7 @@ BOOL LLFilePicker::getMultipleOpenFiles(ELoadFilter filter)
 		if (getFileCount())
 			success = true;
 		if (getFileCount() > 1)
-			mLocked = TRUE;
+			mLocked = true;
 	}
 
 	// Account for the fact that the app has been stalled.
diff --git a/indra/newview/llfilepicker.h b/indra/newview/llfilepicker.h
index 7ecbc3db601..4f254ff67eb 100644
--- a/indra/newview/llfilepicker.h
+++ b/indra/newview/llfilepicker.h
@@ -176,8 +176,7 @@ class LLFilePicker
 
 	std::vector<std::string> mFiles;
 	S32 mCurrentFile;
-	BOOL mLocked;
-	BOOL mMultiFile;
+	bool mLocked;
 
 	static LLFilePicker sInstance;
 	
-- 
GitLab


From 40144d47774925b372b7145bfd248448f52fdc45 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Tue, 26 Jan 2010 17:48:52 -0800
Subject: [PATCH 136/521] CID-397  Checker: UNINIT_CTOR Function:
 LLPanelLandObjects::LLPanelLandObjects(LLSafeHandle<LLParcelSelection> &)
 File: /indra/newview/llfloaterland.cpp

---
 indra/newview/llfloaterland.cpp | 25 ++++++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 42c961a956b..0ad283d7c69 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -1029,7 +1029,30 @@ void LLPanelLandGeneral::onClickStopSellLand(void* data)
 //---------------------------------------------------------------------------
 LLPanelLandObjects::LLPanelLandObjects(LLParcelSelectionHandle& parcel)
 	:	LLPanel(),
-		mParcel(parcel)
+
+		mParcel(parcel),
+		mParcelObjectBonus(NULL),
+		mSWTotalObjects(NULL),
+		mObjectContribution(NULL),
+		mTotalObjects(NULL),
+		mOwnerObjects(NULL),
+		mBtnShowOwnerObjects(NULL),
+		mBtnReturnOwnerObjects(NULL),
+		mGroupObjects(NULL),
+		mBtnShowGroupObjects(NULL),
+		mBtnReturnGroupObjects(NULL),
+		mOtherObjects(NULL),
+		mBtnShowOtherObjects(NULL),
+		mBtnReturnOtherObjects(NULL),
+		mSelectedObjects(NULL),
+		mCleanOtherObjectsTime(NULL),
+		mOtherTime(0),
+		mBtnRefresh(NULL),
+		mBtnReturnOwnerList(NULL),
+		mOwnerList(NULL),
+		mFirstReply(TRUE),
+		mSelectedCount(0),
+		mSelectedIsGroup(FALSE)
 {
 }
 
-- 
GitLab


From 5d2da8a4d01c86141c6fa067194969e85dc68765 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Tue, 26 Jan 2010 17:50:15 -0800
Subject: [PATCH 137/521] CID-396  Checker: UNINIT_CTOR Function:
 LLFloaterPay::LLFloaterPay(const LLSD &) File:
 /indra/newview/llfloaterpay.cpp

---
 indra/newview/llfloaterpay.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llfloaterpay.cpp b/indra/newview/llfloaterpay.cpp
index c2389e73a06..00959322e5a 100644
--- a/indra/newview/llfloaterpay.cpp
+++ b/indra/newview/llfloaterpay.cpp
@@ -135,7 +135,8 @@ LLFloaterPay::LLFloaterPay(const LLSD& key)
 	  mCallback(NULL),
 	  mObjectNameText(NULL),
 	  mTargetUUID(key.asUUID()),
-	  mTargetIsGroup(FALSE)
+	  mTargetIsGroup(FALSE),
+	  mHaveName(FALSE)
 {
 }
 
-- 
GitLab


From cbbfe761caffdd292c464db7b015a50a4ed5e731 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Tue, 26 Jan 2010 17:53:03 -0800
Subject: [PATCH 138/521] CID-395  Checker: UNINIT_CTOR Function:
 LLPanelEstateCovenant::LLPanelEstateCovenant() File:
 /indra/newview/llfloaterregioninfo.cpp

---
 indra/newview/llfloaterregioninfo.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp
index 03ff2cc3706..85353ce308f 100644
--- a/indra/newview/llfloaterregioninfo.cpp
+++ b/indra/newview/llfloaterregioninfo.cpp
@@ -2544,7 +2544,9 @@ bool LLPanelEstateInfo::onMessageCommit(const LLSD& notification, const LLSD& re
 }
 
 LLPanelEstateCovenant::LLPanelEstateCovenant()
-: mCovenantID(LLUUID::null)
+	:
+	mCovenantID(LLUUID::null),
+	mAssetStatus(ASSET_ERROR)
 {
 }
 
-- 
GitLab


From 8d88308b36add28edd8a9976dd22b8877be0272e Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Tue, 26 Jan 2010 17:56:36 -0800
Subject: [PATCH 139/521] CID-394  Checker: UNINIT_CTOR Function:
 LLPanelScriptLimitsRegionMemory::LLPanelScriptLimitsRegionMemory() File:
 /indra/newview/llfloaterscriptlimits.h

---
 indra/newview/llfloaterscriptlimits.h | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/indra/newview/llfloaterscriptlimits.h b/indra/newview/llfloaterscriptlimits.h
index 7e2b536eb6b..e0fdf052ebb 100644
--- a/indra/newview/llfloaterscriptlimits.h
+++ b/indra/newview/llfloaterscriptlimits.h
@@ -145,7 +145,14 @@ class LLPanelScriptLimitsRegionMemory : public LLPanelScriptLimitsInfo, LLRemote
 	
 public:
 	LLPanelScriptLimitsRegionMemory()
-		:	LLPanelScriptLimitsInfo(), LLRemoteParcelInfoObserver(), mParcelId(LLUUID()), mGotParcelMemoryUsed(FALSE), mGotParcelMemoryMax(FALSE) {};
+		: LLPanelScriptLimitsInfo(), LLRemoteParcelInfoObserver(),,
+
+		mParcelId(LLUUID()),
+		mGotParcelMemoryUsed(FALSE),
+		mGotParcelMemoryMax(FALSE),
+		mParcelMemoryMax(0),
+		mParcelMemoryUsed(0) {};
+
 	~LLPanelScriptLimitsRegionMemory()
 	{
 		LLRemoteParcelInfoProcessor::getInstance()->removeObserver(mParcelId, this);
@@ -167,9 +174,9 @@ class LLPanelScriptLimitsRegionMemory : public LLPanelScriptLimitsInfo, LLRemote
 
 private:
 
-	void onNameCache(	 const LLUUID& id,
-						 const std::string& first_name,
-						 const std::string& last_name);
+	void onNameCache(const LLUUID& id,
+			 const std::string& first_name,
+			 const std::string& last_name);
 
 	LLUUID mParcelId;
 	BOOL mGotParcelMemoryUsed;
-- 
GitLab


From bc03cbaab906bf8f5d0a624379d30a89018ae9e2 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Tue, 26 Jan 2010 17:58:47 -0800
Subject: [PATCH 140/521] CID-393  Checker: UNINIT_CTOR Function:
 LLPanelScriptLimitsRegionURLs::LLPanelScriptLimitsRegionURLs() File:
 /indra/newview/llfloaterscriptlimits.h

---
 indra/newview/llfloaterscriptlimits.h | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llfloaterscriptlimits.h b/indra/newview/llfloaterscriptlimits.h
index e0fdf052ebb..748ff28bd9a 100644
--- a/indra/newview/llfloaterscriptlimits.h
+++ b/indra/newview/llfloaterscriptlimits.h
@@ -207,7 +207,16 @@ class LLPanelScriptLimitsRegionURLs : public LLPanelScriptLimitsInfo
 	
 public:
 	LLPanelScriptLimitsRegionURLs()
-		:	LLPanelScriptLimitsInfo(), mParcelId(LLUUID()), mGotParcelURLsUsed(FALSE), mGotParcelURLsMax(FALSE) {};
+		: LLPanelScriptLimitsInfo(),
+
+		mParcelId(LLUUID()),
+		mGotParcelURLsUsed(FALSE),
+		mGotParcelURLsMax(FALSE),
+		mParcelURLsMax(0),
+		mParcelURLsUsed(0)
+		{
+		};
+
 	~LLPanelScriptLimitsRegionURLs()
 	{
 	};
-- 
GitLab


From 30a2efb142c9f87fb0bea3bf241147e388587918 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Tue, 26 Jan 2010 18:05:18 -0800
Subject: [PATCH 141/521] supplementary fix

---
 indra/newview/llfloaterscriptlimits.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llfloaterscriptlimits.h b/indra/newview/llfloaterscriptlimits.h
index 748ff28bd9a..e675d145156 100644
--- a/indra/newview/llfloaterscriptlimits.h
+++ b/indra/newview/llfloaterscriptlimits.h
@@ -145,7 +145,7 @@ class LLPanelScriptLimitsRegionMemory : public LLPanelScriptLimitsInfo, LLRemote
 	
 public:
 	LLPanelScriptLimitsRegionMemory()
-		: LLPanelScriptLimitsInfo(), LLRemoteParcelInfoObserver(),,
+		: LLPanelScriptLimitsInfo(), LLRemoteParcelInfoObserver(),
 
 		mParcelId(LLUUID()),
 		mGotParcelMemoryUsed(FALSE),
-- 
GitLab


From fb0ff294e8257bf2054f342413c6f72f6f6f65d7 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Tue, 26 Jan 2010 18:06:28 -0800
Subject: [PATCH 142/521] CID-392  Checker: UNINIT_CTOR Function:
 LLNearbyChatToastPanel::LLNearbyChatToastPanel() File:
 /indra/newview/llchatitemscontainerctrl.h

---
 indra/newview/llchatitemscontainerctrl.h | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/indra/newview/llchatitemscontainerctrl.h b/indra/newview/llchatitemscontainerctrl.h
index f4b86550541..4d730573d96 100644
--- a/indra/newview/llchatitemscontainerctrl.h
+++ b/indra/newview/llchatitemscontainerctrl.h
@@ -1,5 +1,5 @@
 /** 
- * @file llchatitemscontainer.h
+ * @file llchatitemscontainerctrl.h
  * @brief chat history scrolling panel implementation
  *
  * $LicenseInfo:firstyear=2004&license=viewergpl$
@@ -30,12 +30,12 @@
  * $/LicenseInfo$
  */
 
-#ifndef LL_LLCHATITEMSCONTAINER_H_
-#define LL_LLCHATITEMSCONTAINER_H_
+#ifndef LL_LLCHATITEMSCONTAINERCTRL_H_
+#define LL_LLCHATITEMSCONTAINERCTRL_H_
 
+#include "llchat.h"
 #include "llpanel.h"
 #include "llscrollbar.h"
-#include "string"
 #include "llviewerchat.h"
 #include "lltoastpanel.h"
 
@@ -49,10 +49,12 @@ typedef enum e_show_item_header
 class LLNearbyChatToastPanel: public LLToastPanelBase
 {
 protected:
-	LLNearbyChatToastPanel():mIsDirty(false){};
+        LLNearbyChatToastPanel()
+		: 
+	mIsDirty(false),
+	mSourceType(CHAT_SOURCE_OBJECT)
+	{};
 public:
-	
-
 	~LLNearbyChatToastPanel(){}
 	
 	static LLNearbyChatToastPanel* createInstance();
-- 
GitLab


From 25057b311c2aa9a79d33184739f2a73de0bd21e4 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Tue, 26 Jan 2010 18:12:32 -0800
Subject: [PATCH 143/521] CID-390  Checker: UNINIT_CTOR Function:
 LLEventInfo::LLEventInfo() File: /indra/newview/lleventinfo.h

---
 indra/newview/lleventinfo.h | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/indra/newview/lleventinfo.h b/indra/newview/lleventinfo.h
index 493c6599837..4f33a7925a2 100644
--- a/indra/newview/lleventinfo.h
+++ b/indra/newview/lleventinfo.h
@@ -43,7 +43,15 @@ class LLMessageSystem;
 class LLEventInfo
 {
 public:
-	LLEventInfo() {}
+        LLEventInfo() :
+	mID(0),
+	mDuration(0),
+	mUnixTime(0),
+	mHasCover(FALSE),
+	mCover(0),
+	mEventFlags(0),
+	mSelected(FALSE)
+	{}
 
 	void unpack(LLMessageSystem *msg);
 
-- 
GitLab


From a3e7c8c48031bb715277644ef517d1158933d9b2 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Tue, 26 Jan 2010 18:17:24 -0800
Subject: [PATCH 144/521] CID-389  Checker: UNINIT_CTOR Function:
 LLPanelObject::LLPanelObject() File: /indra/newview/llpanelobject.cpp

---
 indra/newview/llpanelobject.cpp | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp
index d17c287cc75..30221da12a8 100644
--- a/indra/newview/llpanelobject.cpp
+++ b/indra/newview/llpanelobject.cpp
@@ -316,11 +316,14 @@ BOOL	LLPanelObject::postBuild()
 
 LLPanelObject::LLPanelObject()
 :	LLPanel(),
+	mComboMaterialItemCount(0),
 	mIsPhysical(FALSE),
 	mIsTemporary(FALSE),
 	mIsPhantom(FALSE),
 	mCastShadows(TRUE),
-	mSelectedType(MI_BOX)
+	mSelectedType(MI_BOX),
+	mSculptTextureRevert(LLUUID::null),
+	mSculptTypeRevert(0)
 {
 }
 
-- 
GitLab


From 86cab299b01081c8c89587fd72d81460318e4ec1 Mon Sep 17 00:00:00 2001
From: Monroe Linden <monroe@lindenlab.com>
Date: Tue, 26 Jan 2010 17:33:23 -0800
Subject: [PATCH 145/521] Fix for EXT-4708 (ressing cursor or modifier keys
 while MoaP has input focus gives an error in the log "WARNING:
 ll_apr_warn_status: APR: File exists")

The attempt to create a directory should no longer be necessary with webkit.  This code has been removed.
---
 indra/newview/llviewermedia.cpp | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index 98d8780b343..9ced0194a27 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -1811,11 +1811,6 @@ void LLViewerMediaImpl::navigateStop()
 bool LLViewerMediaImpl::handleKeyHere(KEY key, MASK mask)
 {
 	bool result = false;
-	// *NOTE:Mani - if this doesn't exist llmozlib goes crashy in the debug build.
-	// LLMozlib::init wants to write some files to <exe_dir>/components
-	std::string debug_init_component_dir( gDirUtilp->getExecutableDir() );
-	debug_init_component_dir += "/components";
-	LLAPRFile::makeDir(debug_init_component_dir.c_str()); 
 	
 	if (mMediaSource)
 	{
-- 
GitLab


From 74a362ba1e49f6a2e7ea2a7cbd88abee96af41a3 Mon Sep 17 00:00:00 2001
From: Dmitry Zaporozhan <dzaporozhan@productengine.com>
Date: Wed, 27 Jan 2010 12:32:03 +0200
Subject: [PATCH 146/521] Fixed low bug EXT-4375 - Gestures floater Gear menu:
 menuitem 'Inspect' duplicates menuitem 'Edit'.

--HG--
branch : product-engine
---
 indra/newview/llfloatergesture.cpp                     |  3 +--
 .../newview/skins/default/xui/en/menu_gesture_gear.xml | 10 ----------
 2 files changed, 1 insertion(+), 12 deletions(-)

diff --git a/indra/newview/llfloatergesture.cpp b/indra/newview/llfloatergesture.cpp
index de65c6f876c..005213fb4ae 100644
--- a/indra/newview/llfloatergesture.cpp
+++ b/indra/newview/llfloatergesture.cpp
@@ -401,8 +401,7 @@ bool LLFloaterGesture::isActionEnabled(const LLSD& command)
 		}
 		return false;
 	}
-	else if("copy_uuid" == command_name || "edit_gesture" == command_name 
-			|| "inspect" == command_name)
+	else if("copy_uuid" == command_name || "edit_gesture" == command_name)
 	{
 		return	mGestureList->getAllSelected().size() == 1;
 	}
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 d96f3c54940..649f0edff77 100644
--- a/indra/newview/skins/default/xui/en/menu_gesture_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_gesture_gear.xml
@@ -62,14 +62,4 @@
          function="Gesture.EnableAction"
          parameter="edit_gesture" />
     </menu_item_call>
-    <menu_item_call
-     label="Inspect"
-     layout="topleft"
-     name="inspect">
-        <on_click
-         function="Gesture.Action.ShowPreview" />
-        <on_enable
-         function="Gesture.EnableAction"
-         parameter="inspect" />
-    </menu_item_call>
 </menu>
-- 
GitLab


From a5180babefa3f81de5321a9d6d5148ef1bd8e03a Mon Sep 17 00:00:00 2001
From: Alexei Arabadji <aarabadji@productengine.com>
Date: Wed, 27 Jan 2010 13:10:31 +0200
Subject: [PATCH 147/521] =?UTF-8?q?EXT-3783=20=E2=80=9CSystem=20messages?=
 =?UTF-8?q?=20displayed=20in=20nearby=20chat=E2=80=9D,=20added=20missing?=
 =?UTF-8?q?=20floater=5Fcall=5Finfo.xml;=20avoided=20recreation=20of=20LLC?=
 =?UTF-8?q?allInfoDialog=20with=20the=20same=20message;?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

--HG--
branch : product-engine
---
 indra/newview/llimview.cpp | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index f90a51c3f37..6ac7378c586 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -3239,7 +3239,13 @@ void LLCallInfoDialog::show(const std::string& status_name, const LLSD& args)
 
 	LLSD payload;
 	payload["msg"] = message;
-	LLFloaterReg::showInstance("call_info", payload);
+	LLFloater* inst = LLFloaterReg::findInstance("call_info");
+
+	// avoid recreate instance with the same message
+	if (inst == NULL || message.getString() != inst->getChild<LLTextBox>("msg")->getValue())
+	{
+		LLFloaterReg::showInstance("call_info", payload);
+	}
 }
 
 LLHTTPRegistration<LLViewerChatterBoxSessionStartReply>
-- 
GitLab


From 8ea2c7a37380162ba2926bd23a01583023884408 Mon Sep 17 00:00:00 2001
From: Paul Guslisty <pguslisty@productengine.com>
Date: Wed, 27 Jan 2010 14:16:37 +0200
Subject: [PATCH 148/521] Implemeted normal Sub-Task EXT - 2753 (Implement
 Avatar icons on IM multifloater tabs)

--HG--
branch : product-engine
---
 indra/llui/llbutton.cpp                       | 22 +++++-
 indra/llui/llbutton.h                         | 20 +++++
 indra/llui/lltabcontainer.cpp                 | 75 +++++++++----------
 indra/llui/lltabcontainer.h                   |  1 +
 indra/newview/app_settings/settings.xml       | 44 +++++++++++
 indra/newview/llgroupmgr.cpp                  | 38 ++++++++++
 indra/newview/llgroupmgr.h                    | 15 ++++
 indra/newview/llimfloatercontainer.cpp        | 46 ++++++------
 indra/newview/llimfloatercontainer.h          |  7 +-
 .../skins/default/xui/en/widgets/button.xml   |  4 +
 10 files changed, 197 insertions(+), 75 deletions(-)

diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp
index 9ce8ce8d55d..4944ed4fe72 100644
--- a/indra/llui/llbutton.cpp
+++ b/indra/llui/llbutton.cpp
@@ -81,6 +81,10 @@ LLButton::Params::Params()
 	image_pressed_selected("image_pressed_selected"),
 	image_overlay("image_overlay"),
 	image_overlay_alignment("image_overlay_alignment", std::string("center")),
+	image_left_pad("image_left_pad"),
+	image_right_pad("image_right_pad"),
+	image_top_pad("image_top_pad"),
+	image_bottom_pad("image_bottom_pad"),
 	label_color("label_color"),
 	label_color_selected("label_color_selected"),	// requires is_toggle true
 	label_color_disabled("label_color_disabled"),
@@ -140,6 +144,10 @@ LLButton::LLButton(const LLButton::Params& p)
 	mImageOverlay(p.image_overlay()),
 	mImageOverlayColor(p.image_overlay_color()),
 	mImageOverlayAlignment(LLFontGL::hAlignFromName(p.image_overlay_alignment)),
+	mImageOverlayLeftPad(p.image_left_pad),
+	mImageOverlayRightPad(p.image_right_pad),
+	mImageOverlayTopPad(p.image_top_pad),
+	mImageOverlayBottomPad(p.image_bottom_pad),
 	mIsToggle(p.is_toggle),
 	mScaleImage(p.scale_image),
 	mDropShadowedText(p.label_shadow),
@@ -763,6 +771,12 @@ void LLButton::draw()
 			center_x++;
 		}
 
+		S32 text_width_delta = overlay_width + 1;
+		// if image paddings set, they should participate in scaling process
+		S32 image_size_delta = mImageOverlayTopPad + mImageOverlayBottomPad;
+		overlay_width = overlay_width - image_size_delta;
+		overlay_height = overlay_height - image_size_delta;
+
 		// fade out overlay images on disabled buttons
 		LLColor4 overlay_color = mImageOverlayColor.get();
 		if (!enabled)
@@ -774,8 +788,8 @@ void LLButton::draw()
 		switch(mImageOverlayAlignment)
 		{
 		case LLFontGL::LEFT:
-			text_left += overlay_width + 1;
-			text_width -= overlay_width + 1;
+			text_left += overlay_width + mImageOverlayRightPad + 1;
+			text_width -= text_width_delta;
 			mImageOverlay->draw(
 				mLeftHPad, 
 				center_y - (overlay_height / 2), 
@@ -792,8 +806,8 @@ void LLButton::draw()
 				overlay_color);
 			break;
 		case LLFontGL::RIGHT:
-			text_right -= overlay_width + 1;				
-			text_width -= overlay_width + 1;
+			text_right -= overlay_width + mImageOverlayLeftPad+ 1;
+			text_width -= text_width_delta;
 			mImageOverlay->draw(
 				getRect().getWidth() - mRightHPad - overlay_width, 
 				center_y - (overlay_height / 2), 
diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h
index cd149e31131..8e5f19602f7 100644
--- a/indra/llui/llbutton.h
+++ b/indra/llui/llbutton.h
@@ -106,6 +106,12 @@ class LLButton
 		Optional<S32>			pad_left;
 		Optional<S32>			pad_bottom; // under text label
 		
+		//image overlay paddings
+		Optional<S32>			image_left_pad;
+		Optional<S32>			image_right_pad;
+		Optional<S32>			image_top_pad;
+		Optional<S32>			image_bottom_pad;
+
 		// callbacks
 		Optional<CommitCallbackParam>	click_callback, // alias -> commit_callback
 										mouse_down_callback,
@@ -186,6 +192,15 @@ class LLButton
 	void			setLeftHPad( S32 pad )					{ mLeftHPad = pad; }
 	void			setRightHPad( S32 pad )					{ mRightHPad = pad; }
 
+	void 			setImageOverlayLeftPad( S32 pad )			{ mImageOverlayLeftPad = pad; }
+	S32 			getImageOverlayLeftPad() const				{ return mImageOverlayLeftPad; }
+	void 			setImageOverlayRightPad( S32 pad )			{ mImageOverlayRightPad = pad; }
+	S32 			getImageOverlayRightPad() const				{ return mImageOverlayRightPad; }
+	void 			setImageOverlayTopPad( S32 pad )			{ mImageOverlayTopPad = pad; }
+	S32 			getImageOverlayTopPad() const				{ return mImageOverlayTopPad; }
+	void 			setImageOverlayBottomPad( S32 pad )			{ mImageOverlayBottomPad = pad; }
+	S32 			getImageOverlayBottomPad() const			{ return mImageOverlayBottomPad; }
+
 	const std::string	getLabelUnselected() const { return wstring_to_utf8str(mUnselectedLabel); }
 	const std::string	getLabelSelected() const { return wstring_to_utf8str(mSelectedLabel); }
 
@@ -313,6 +328,11 @@ class LLButton
 	S32							mRightHPad;
 	S32							mBottomVPad;	// under text label
 
+	S32							mImageOverlayLeftPad;
+	S32							mImageOverlayRightPad;
+	S32							mImageOverlayTopPad;
+	S32							mImageOverlayBottomPad;
+
 	F32							mHoverGlowStrength;
 	F32							mCurGlowStrength;
 
diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp
index 43c44f2253e..dcb3542e186 100644
--- a/indra/llui/lltabcontainer.cpp
+++ b/indra/llui/lltabcontainer.cpp
@@ -1373,6 +1373,8 @@ BOOL LLTabContainer::setTab(S32 which)
 		{
 			LLTabTuple* tuple = *iter;
 			BOOL is_selected = ( tuple == selected_tuple );
+			tuple->mButton->setUseEllipses(TRUE);
+			tuple->mButton->setHAlign(LLFontGL::LEFT);
 			tuple->mTabPanel->setVisible( is_selected );
 // 			tuple->mTabPanel->setFocus(is_selected); // not clear that we want to do this here.
 			tuple->mButton->setToggleState( is_selected );
@@ -1478,63 +1480,54 @@ void LLTabContainer::setTabPanelFlashing(LLPanel* child, BOOL state )
 
 void LLTabContainer::setTabImage(LLPanel* child, std::string image_name, const LLColor4& color)
 {
-	static LLUICachedControl<S32> tab_padding ("UITabPadding", 0);
 	LLTabTuple* tuple = getTabByPanel(child);
 	if( tuple )
 	{
-		tuple->mButton->setImageOverlay(image_name, LLFontGL::RIGHT, color);
-
-		if (!mIsVertical)
-		{
-			// remove current width from total tab strip width
-			mTotalTabWidth -= tuple->mButton->getRect().getWidth();
-
-			S32 image_overlay_width = tuple->mButton->getImageOverlay().notNull() ? 
-				tuple->mButton->getImageOverlay()->getImage()->getWidth(0) :
-				0;
-
-			tuple->mPadding = image_overlay_width;
-
-			tuple->mButton->setRightHPad(6);
-			tuple->mButton->reshape(llclamp(mFont->getWidth(tuple->mButton->getLabelSelected()) + tab_padding + tuple->mPadding, mMinTabWidth, mMaxTabWidth), 
-									tuple->mButton->getRect().getHeight());
-			// add back in button width to total tab strip width
-			mTotalTabWidth += tuple->mButton->getRect().getWidth();
-
-			// tabs have changed size, might need to scroll to see current tab
-			updateMaxScrollPos();
-		}
+		tuple->mButton->setImageOverlay(image_name, LLFontGL::LEFT, color);
+		reshape_tuple(tuple);
 	}
 }
 
 void LLTabContainer::setTabImage(LLPanel* child, const LLUUID& image_id, const LLColor4& color)
 {
-	static LLUICachedControl<S32> tab_padding ("UITabPadding", 0);
 	LLTabTuple* tuple = getTabByPanel(child);
 	if( tuple )
 	{
-		tuple->mButton->setImageOverlay(image_id, LLFontGL::RIGHT, color);
+		tuple->mButton->setImageOverlay(image_id, LLFontGL::LEFT, color);
+		reshape_tuple(tuple);
+	}
+}
 
-		if (!mIsVertical)
-		{
-			// remove current width from total tab strip width
-			mTotalTabWidth -= tuple->mButton->getRect().getWidth();
+void LLTabContainer::reshape_tuple(LLTabTuple* tuple)
+{
+	static LLUICachedControl<S32> tab_padding ("UITabPadding", 0);
+	static LLUICachedControl<S32> image_left_padding ("UIButtonImageLeftPadding", 4);
+	static LLUICachedControl<S32> image_right_padding ("UIButtonImageRightPadding", 4);
+	static LLUICachedControl<S32> image_top_padding ("UIButtonImageTopPadding", 2);
+	static LLUICachedControl<S32> image_bottom_padding ("UIButtonImageBottomPadding", 2);
 
-			S32 image_overlay_width = tuple->mButton->getImageOverlay().notNull() ?
-				tuple->mButton->getImageOverlay()->getImage()->getWidth(0) :
-				0;
+	if (!mIsVertical)
+	{
+		tuple->mButton->setImageOverlayLeftPad(image_left_padding);
+		tuple->mButton->setImageOverlayRightPad(image_right_padding);
+		tuple->mButton->setImageOverlayTopPad(image_top_padding);
+		tuple->mButton->setImageOverlayBottomPad(image_bottom_padding);
 
-			tuple->mPadding = image_overlay_width;
+		// remove current width from total tab strip width
+		mTotalTabWidth -= tuple->mButton->getRect().getWidth();
 
-			tuple->mButton->setRightHPad(6);
-			tuple->mButton->reshape(llclamp(mFont->getWidth(tuple->mButton->getLabelSelected()) + tab_padding + tuple->mPadding, mMinTabWidth, mMaxTabWidth),
-									tuple->mButton->getRect().getHeight());
-			// add back in button width to total tab strip width
-			mTotalTabWidth += tuple->mButton->getRect().getWidth();
+		S32 image_overlay_width = tuple->mButton->getImageOverlay().notNull() ?
+		tuple->mButton->getImageOverlay()->getImage()->getWidth(0) : 0;
 
-			// tabs have changed size, might need to scroll to see current tab
-			updateMaxScrollPos();
-		}
+		tuple->mPadding = image_overlay_width;
+
+		tuple->mButton->reshape(llclamp(mFont->getWidth(tuple->mButton->getLabelSelected()) + tab_padding + tuple->mPadding, mMinTabWidth, mMaxTabWidth),
+								tuple->mButton->getRect().getHeight());
+		// add back in button width to total tab strip width
+		mTotalTabWidth += tuple->mButton->getRect().getWidth();
+
+		// tabs have changed size, might need to scroll to see current tab
+		updateMaxScrollPos();
 	}
 }
 
diff --git a/indra/llui/lltabcontainer.h b/indra/llui/lltabcontainer.h
index 33c49e0d6fa..2a55877d3ca 100644
--- a/indra/llui/lltabcontainer.h
+++ b/indra/llui/lltabcontainer.h
@@ -228,6 +228,7 @@ class LLTabContainer : public LLPanel
 
 	// updates tab button images given the tuple, tab position and the corresponding params
 	void update_images(LLTabTuple* tuple, TabParams params, LLTabContainer::TabPosition pos);
+	void reshape_tuple(LLTabTuple* tuple);
 
 	// Variables
 	
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 093e4f48940..1ef79aeec09 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -9915,6 +9915,50 @@
       <string>S32</string>
       <key>Value</key>
       <integer>15</integer>
+    </map>
+    <key>UIButtonImageLeftPadding</key>
+    <map>
+      <key>Comment</key>
+      <string>Button Overlay Image Left Padding</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>S32</string>
+      <key>Value</key>
+      <integer>4</integer>
+    </map>
+    <key>UIButtonImageRightPadding</key>
+    <map>
+      <key>Comment</key>
+      <string>Button Overlay Image Right Padding</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>S32</string>
+      <key>Value</key>
+      <integer>4</integer>
+    </map>
+    <key>UIButtonImageTopPadding</key>
+    <map>
+      <key>Comment</key>
+      <string>Button Overlay Image Top Padding</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>S32</string>
+      <key>Value</key>
+      <integer>2</integer>
+    </map>
+    <key>UIButtonImageBottomPadding</key>
+    <map>
+      <key>Comment</key>
+      <string>Button Overlay Image Bottom Padding</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>S32</string>
+      <key>Value</key>
+      <integer>2</integer>
     </map>
 	<key>UploadBakedTexOld</key>
     <map>
diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp
index af58e81ca4d..8bd0e520c35 100644
--- a/indra/newview/llgroupmgr.cpp
+++ b/indra/newview/llgroupmgr.cpp
@@ -762,6 +762,14 @@ void LLGroupMgr::addObserver(LLGroupMgrObserver* observer)
 		mObservers.insert(std::pair<LLUUID, LLGroupMgrObserver*>(observer->getID(), observer));
 }
 
+void LLGroupMgr::addObserver(const LLUUID& group_id, LLParticularGroupMgrObserver* observer)
+{
+	if(group_id.notNull() && observer)
+	{
+		mParticularObservers[group_id].insert(observer);
+	}
+}
+
 void LLGroupMgr::removeObserver(LLGroupMgrObserver* observer)
 {
 	if (!observer)
@@ -784,6 +792,23 @@ void LLGroupMgr::removeObserver(LLGroupMgrObserver* observer)
 	}
 }
 
+void LLGroupMgr::removeObserver(const LLUUID& group_id, LLParticularGroupMgrObserver* observer)
+{
+	if(group_id.isNull() || !observer)
+	{
+		return;
+	}
+
+    observer_map_t::iterator obs_it = mParticularObservers.find(group_id);
+    if(obs_it == mParticularObservers.end())
+        return;
+
+    obs_it->second.erase(observer);
+
+    if (obs_it->second.size() == 0)
+    	mParticularObservers.erase(obs_it);
+}
+
 LLGroupMgrGroupData* LLGroupMgr::getGroupData(const LLUUID& id)
 {
 	group_map_t::iterator gi = mGroups.find(id);
@@ -1325,6 +1350,7 @@ void LLGroupMgr::notifyObservers(LLGroupChange gc)
 		LLUUID group_id = gi->first;
 		if (gi->second->mChanged)
 		{
+			// notify LLGroupMgrObserver
 			// Copy the map because observers may remove themselves on update
 			observer_multimap_t observers = mObservers;
 
@@ -1336,6 +1362,18 @@ void LLGroupMgr::notifyObservers(LLGroupChange gc)
 				oi->second->changed(gc);
 			}
 			gi->second->mChanged = FALSE;
+
+
+			// notify LLParticularGroupMgrObserver
+		    observer_map_t::iterator obs_it = mParticularObservers.find(group_id);
+		    if(obs_it == mParticularObservers.end())
+		        return;
+
+		    observer_set_t& obs = obs_it->second;
+		    for (observer_set_t::iterator ob_it = obs.begin(); ob_it != obs.end(); ++ob_it)
+		    {
+		        (*ob_it)->changed(group_id, gc);
+		    }
 		}
 	}
 }
diff --git a/indra/newview/llgroupmgr.h b/indra/newview/llgroupmgr.h
index 487fdd4c5b4..588b4a90344 100644
--- a/indra/newview/llgroupmgr.h
+++ b/indra/newview/llgroupmgr.h
@@ -53,6 +53,13 @@ class LLGroupMgrObserver
 	LLUUID	mID;
 };
 
+class LLParticularGroupMgrObserver
+{
+public:
+	virtual ~LLParticularGroupMgrObserver(){}
+	virtual void changed(const LLUUID& group_id, LLGroupChange gc) = 0;
+};
+
 class LLGroupRoleData;
 
 class LLGroupMemberData
@@ -306,7 +313,9 @@ class LLGroupMgr : public LLSingleton<LLGroupMgr>
 	~LLGroupMgr();
 
 	void addObserver(LLGroupMgrObserver* observer);
+	void addObserver(const LLUUID& group_id, LLParticularGroupMgrObserver* observer);
 	void removeObserver(LLGroupMgrObserver* observer);
+	void removeObserver(const LLUUID& group_id, LLParticularGroupMgrObserver* observer);
 	LLGroupMgrGroupData* getGroupData(const LLUUID& id);
 
 	void sendGroupPropertiesRequest(const LLUUID& group_id);
@@ -355,13 +364,19 @@ class LLGroupMgr : public LLSingleton<LLGroupMgr>
 
 private:
 	void notifyObservers(LLGroupChange gc);
+	void notifyObserver(const LLUUID& group_id, LLGroupChange gc);
 	void addGroup(LLGroupMgrGroupData* group_datap);
 	LLGroupMgrGroupData* createGroupData(const LLUUID &id);
 
 	typedef std::multimap<LLUUID,LLGroupMgrObserver*> observer_multimap_t;
 	observer_multimap_t mObservers;
+
 	typedef std::map<LLUUID, LLGroupMgrGroupData*> group_map_t;
 	group_map_t mGroups;
+
+	typedef std::set<LLParticularGroupMgrObserver*> observer_set_t;
+	typedef std::map<LLUUID,observer_set_t> observer_map_t;
+	observer_map_t mParticularObservers;
 };
 
 
diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp
index 06a7b4a29c2..784c2eaaf96 100644
--- a/indra/newview/llimfloatercontainer.cpp
+++ b/indra/newview/llimfloatercontainer.cpp
@@ -48,10 +48,7 @@ LLIMFloaterContainer::LLIMFloaterContainer(const LLSD& seed)
 	mAutoResize = FALSE;
 }
 
-LLIMFloaterContainer::~LLIMFloaterContainer()
-{
-	LLGroupMgr::getInstance()->removeObserver(this);
-}
+LLIMFloaterContainer::~LLIMFloaterContainer(){}
 
 BOOL LLIMFloaterContainer::postBuild()
 {
@@ -95,11 +92,10 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp,
 	if(gAgent.isInGroup(session_id))
 	{
 		mSessions[session_id] = floaterp;
-		mID = session_id;
-		mGroupID.push_back(session_id);
 		LLGroupMgrGroupData* group_data = LLGroupMgr::getInstance()->getGroupData(session_id);
 		LLGroupMgr* gm = LLGroupMgr::getInstance();
-		gm->addObserver(this);
+		gm->addObserver(session_id, this);
+		floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, session_id));
 
 		if (group_data && group_data->mInsigniaID.notNull())
 		{
@@ -107,6 +103,7 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp,
 		}
 		else
 		{
+			mTabContainer->setTabImage(floaterp, "Generic_Group");
 			gm->sendGroupPropertiesRequest(session_id);
 		}
 	}
@@ -119,13 +116,14 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp,
 		mSessions[avatar_id] = floaterp;
 
 		LLUUID* icon_id_ptr = LLAvatarIconIDCache::getInstance()->get(avatar_id);
-		if(!icon_id_ptr)
+		if(icon_id_ptr && icon_id_ptr->notNull())
 		{
-			app.sendAvatarPropertiesRequest(avatar_id);
+			mTabContainer->setTabImage(floaterp, *icon_id_ptr);
 		}
 		else
 		{
-			mTabContainer->setTabImage(floaterp, *icon_id_ptr);
+			mTabContainer->setTabImage(floaterp, "Generic_Person");
+			app.sendAvatarPropertiesRequest(avatar_id);
 		}
 	}
 }
@@ -134,31 +132,28 @@ void LLIMFloaterContainer::processProperties(void* data, enum EAvatarProcessorTy
 {
 	if (APT_PROPERTIES == type)
 	{
-			LLAvatarData* avatar_data = static_cast<LLAvatarData*>(data);
-			if (avatar_data)
+		LLAvatarData* avatar_data = static_cast<LLAvatarData*>(data);
+		if (avatar_data)
+		{
+			LLUUID avatar_id = avatar_data->avatar_id;
+			LLUUID* cached_avatarId = LLAvatarIconIDCache::getInstance()->get(avatar_id);
+			if(cached_avatarId && cached_avatarId->notNull() && avatar_data->image_id != *cached_avatarId)
 			{
-				LLUUID avatar_id = avatar_data->avatar_id;
-				if(avatar_data->image_id != *LLAvatarIconIDCache::getInstance()->get(avatar_id))
-				{
-					LLAvatarIconIDCache::getInstance()->add(avatar_id,avatar_data->image_id);
-				}
+				LLAvatarIconIDCache::getInstance()->add(avatar_id,avatar_data->image_id);
 				mTabContainer->setTabImage(get_ptr_in_map(mSessions, avatar_id), avatar_data->image_id);
 			}
+		}
 	}
 }
 
-void LLIMFloaterContainer::changed(LLGroupChange gc)
+void LLIMFloaterContainer::changed(const LLUUID& group_id, LLGroupChange gc)
 {
 	if (GC_PROPERTIES == gc)
 	{
-		for(groupIDs_t::iterator it = mGroupID.begin(); it!=mGroupID.end(); it++)
+		LLGroupMgrGroupData* group_data = LLGroupMgr::getInstance()->getGroupData(group_id);
+		if (group_data && group_data->mInsigniaID.notNull())
 		{
-			LLUUID group_id = *it;
-			LLGroupMgrGroupData* group_data = LLGroupMgr::getInstance()->getGroupData(group_id);
-			if (group_data && group_data->mInsigniaID.notNull())
-			{
-				mTabContainer->setTabImage(get_ptr_in_map(mSessions, group_id), group_data->mInsigniaID);
-			}
+			mTabContainer->setTabImage(get_ptr_in_map(mSessions, group_id), group_data->mInsigniaID);
 		}
 	}
 }
@@ -166,6 +161,7 @@ void LLIMFloaterContainer::changed(LLGroupChange gc)
 void LLIMFloaterContainer::onCloseFloater(LLUUID id)
 {
 	LLAvatarPropertiesProcessor::instance().removeObserver(id, this);
+	LLGroupMgr::instance().removeObserver(id, this);
 }
 
 LLIMFloaterContainer* LLIMFloaterContainer::findInstance()
diff --git a/indra/newview/llimfloatercontainer.h b/indra/newview/llimfloatercontainer.h
index 1333b098bc2..e4a32dbe1dc 100644
--- a/indra/newview/llimfloatercontainer.h
+++ b/indra/newview/llimfloatercontainer.h
@@ -43,7 +43,7 @@
 
 class LLTabContainer;
 
-class LLIMFloaterContainer : public LLMultiFloater, public LLAvatarPropertiesObserver, public LLGroupMgrObserver
+class LLIMFloaterContainer : public LLMultiFloater, public LLAvatarPropertiesObserver, public LLParticularGroupMgrObserver
 {
 public:
 	LLIMFloaterContainer(const LLSD& seed);
@@ -57,7 +57,7 @@ class LLIMFloaterContainer : public LLMultiFloater, public LLAvatarPropertiesObs
 								LLTabContainer::eInsertionPoint insertion_point = LLTabContainer::END);
 
 	void processProperties(void* data, EAvatarProcessorType type);
-	void changed(LLGroupChange gc);
+	void changed(const LLUUID& group_id, LLGroupChange gc);
 
 	static LLFloater* getCurrentVoiceFloater();
 
@@ -69,9 +69,6 @@ class LLIMFloaterContainer : public LLMultiFloater, public LLAvatarPropertiesObs
 	typedef std::map<LLUUID,LLPanel*> avatarID_panel_map_t;
 	avatarID_panel_map_t mSessions;
 
-	typedef std::vector<LLUUID> groupIDs_t;
-	groupIDs_t mGroupID;
-
 	void onCloseFloater(LLUUID avatar_id);
 };
 
diff --git a/indra/newview/skins/default/xui/en/widgets/button.xml b/indra/newview/skins/default/xui/en/widgets/button.xml
index 51f85e65e2b..74d84785513 100644
--- a/indra/newview/skins/default/xui/en/widgets/button.xml
+++ b/indra/newview/skins/default/xui/en/widgets/button.xml
@@ -7,6 +7,10 @@
         image_selected="PushButton_Selected"
         image_disabled_selected="PushButton_Selected_Disabled"
         image_disabled="PushButton_Disabled"
+        image_left_pad="0"
+        image_right_pad="0"
+        image_top_pad="0"
+        image_bottom_pad="0"
         label_color="ButtonLabelColor"
         label_color_selected="ButtonLabelSelectedColor"
         label_color_disabled="ButtonLabelDisabledColor"
-- 
GitLab


From 684cfb722e433c7625c7c945aca05e0154915c8f Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Wed, 27 Jan 2010 14:06:44 +0200
Subject: [PATCH 149/521] Work on critical bug EXT-4725 (Viewer crashes if try
 to call from 'Nearby voice' floater) - reverted workaround implemented in the
 d1e9333a6203 changeset. Bug will be fixed in the correct way.

--HG--
branch : product-engine
---
 indra/newview/llparticipantlist.cpp                         | 6 ------
 .../newview/skins/default/xui/en/menu_participant_list.xml  | 3 +++
 2 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp
index d54cbfe2031..f83f3eba968 100644
--- a/indra/newview/llparticipantlist.cpp
+++ b/indra/newview/llparticipantlist.cpp
@@ -433,12 +433,6 @@ LLContextMenu* LLParticipantList::LLParticipantListMenu::createMenu()
 	LLContextMenu* main_menu = LLUICtrlFactory::getInstance()->createFromFile<LLContextMenu>(
 		"menu_participant_list.xml", LLMenuGL::sMenuContainer, LLViewerMenuHolderGL::child_registry_t::instance());
 
-	// AD *TODO: This is workaround for EXT-4725- way to properly enable/disable "Call" menu item in
-	// enableContextMenuItem() should be found.
-	bool not_agent = mUUIDs.front() != gAgentID;
-	bool can_call = not_agent && LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking();
-	main_menu->setItemEnabled("Call", can_call);
-
 	// Don't show sort options for P2P chat
 	bool is_sort_visible = (mParent.mAvatarList && mParent.mAvatarList->size() > 1);
 	main_menu->setItemVisible("SortByName", is_sort_visible);
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 04e02d0f6cc..805ffbae668 100644
--- a/indra/newview/skins/default/xui/en/menu_participant_list.xml
+++ b/indra/newview/skins/default/xui/en/menu_participant_list.xml
@@ -57,6 +57,9 @@
      name="Call">
          <menu_item_call.on_click
          function="Avatar.Call" />
+        <menu_item_call.on_enable
+         function="ParticipantList.EnableItem"
+         parameter="can_call" />
     </menu_item_call>
     <menu_item_call
      enabled="true"
-- 
GitLab


From b68ccadd46d2ff094147ffd72318fd3a728c28eb Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Wed, 27 Jan 2010 14:24:37 +0200
Subject: [PATCH 150/521] Fixed critical bug EXT-4725 (Viewer crashes if try to
 call from 'Nearby voice' floater) - reason: LLContextMenu was not not deleted
 when LLPanelPeopleMenus::ContextMenu was destroyed.     Associated callbacks
 were called by Menu Holder for last selected menu_item_call for destroyed
 LLParticipantList::LLParticipantListMenu - fix: added destruction of
 LLContextMenu when LLPanelPeopleMenus::ContextMenu is destructed.

--HG--
branch : product-engine
---
 indra/newview/llpanelpeoplemenus.cpp | 9 +++++++++
 indra/newview/llpanelpeoplemenus.h   | 2 +-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llpanelpeoplemenus.cpp b/indra/newview/llpanelpeoplemenus.cpp
index d9651a60450..501dac5dff4 100644
--- a/indra/newview/llpanelpeoplemenus.cpp
+++ b/indra/newview/llpanelpeoplemenus.cpp
@@ -55,6 +55,15 @@ ContextMenu::ContextMenu()
 {
 }
 
+ContextMenu::~ContextMenu()
+{
+	// do not forget delete LLContextMenu* mMenu.
+	// It can have registered Enable callbacks which are called from the LLMenuHolderGL::draw()
+	// via selected item (menu_item_call) by calling LLMenuItemCallGL::buildDrawLabel.
+	// we can have a crash via using callbacks of deleted instance of ContextMenu. EXT-4725
+	if (mMenu) 	mMenu->die();
+}
+
 void ContextMenu::show(LLView* spawning_view, const std::vector<LLUUID>& uuids, S32 x, S32 y)
 {
 	if (mMenu)
diff --git a/indra/newview/llpanelpeoplemenus.h b/indra/newview/llpanelpeoplemenus.h
index 14ae2985f02..7251f6dbbdb 100644
--- a/indra/newview/llpanelpeoplemenus.h
+++ b/indra/newview/llpanelpeoplemenus.h
@@ -45,7 +45,7 @@ class ContextMenu : public LLAvatarListItem::ContextMenu
 {
 public:
 	ContextMenu();
-	virtual ~ContextMenu() {}
+	virtual ~ContextMenu();
 
 	/**
 	 * Show the menu at specified coordinates.
-- 
GitLab


From 313e3c92c7f348e0c6856183955e2f34fefa1b0a Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Wed, 27 Jan 2010 14:52:58 +0200
Subject: [PATCH 151/521] fixed EXT-4667 color and texture eyedrop selectors do
 not work in appearance mode

--HG--
branch : product-engine
---
 indra/newview/skins/default/xui/en/floater_color_picker.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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 fbecebc363d..0daef29bc57 100644
--- a/indra/newview/skins/default/xui/en/floater_color_picker.xml
+++ b/indra/newview/skins/default/xui/en/floater_color_picker.xml
@@ -181,7 +181,7 @@
      image_unselected="eye_button_inactive.tga"
      layout="topleft"
      left_pad="50"
-     name="Pipette"
+     name="color_pipette"
      width="28" />
     <button
      follows="right|bottom"
-- 
GitLab


From aea3d79be74210d537cb9f9afc54a4f2e240bc99 Mon Sep 17 00:00:00 2001
From: Dmitry Zaporozhan <dzaporozhan@productengine.com>
Date: Wed, 27 Jan 2010 15:31:22 +0200
Subject: [PATCH 152/521] Fixed low bug EXT-4381 - No visual difference between
 active and inactive gestures.

--HG--
branch : product-engine
---
 indra/newview/llfloatergesture.cpp | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llfloatergesture.cpp b/indra/newview/llfloatergesture.cpp
index 005213fb4ae..b684e1f9855 100644
--- a/indra/newview/llfloatergesture.cpp
+++ b/indra/newview/llfloatergesture.cpp
@@ -367,7 +367,14 @@ void LLFloaterGesture::addGesture(const LLUUID& item_id , LLMultiGesture* gestur
 		element["columns"][3]["font"]["name"] = "SANSSERIF";
 		element["columns"][3]["font"]["style"] = font_style;
 	}
-	list->addElement(element, ADD_BOTTOM);
+
+	LLScrollListItem* sl_item = list->addElement(element, ADD_BOTTOM);
+	if(sl_item)
+	{
+		LLFontGL::StyleFlags style = LLGestureManager::getInstance()->isGestureActive(item_id) ? LLFontGL::BOLD : LLFontGL::NORMAL;
+		// *TODO find out why ["font"]["style"] does not affect font style
+		((LLScrollListText*)sl_item->getColumn(0))->setFontStyle(style);
+	}
 }
 
 void LLFloaterGesture::getSelectedIds(std::vector<LLUUID>& ids)
-- 
GitLab


From 837f6c7cbefa7ac1c64c9506d2fabd640ae652ec Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Wed, 27 Jan 2010 17:29:44 +0200
Subject: [PATCH 153/521] Work on major bug EXT-3985 ([BSI] Landmarks created
 in Viewer 2.0 show up with 1@ in Viewer 1.23.x) -- Implemented storage to
 save favorite landmarks order in local file. -- Previously implemented
 solution to store sort index in Landmark's name replaced with using the
 storage.     For now all landmarks are shown as is (with sort LM prefix if it
 exists). -- Some deprecated methods are marked to be removed later --
 Reverted fixes for: EXT-4306, EXT-1237, EXT-1615 as not necessary, these bugs
 should be verified again.

--HG--
branch : product-engine
---
 indra/newview/llpanelgroupnotices.cpp     |   2 +-
 indra/newview/llpanellandmarkinfo.cpp     |   1 -
 indra/newview/lltoastgroupnotifypanel.cpp |  12 +-
 indra/newview/llviewerinventory.cpp       | 142 +++++++++++++++++-----
 indra/newview/llviewerinventory.h         |   1 -
 indra/newview/llviewermessage.cpp         |  30 -----
 6 files changed, 114 insertions(+), 74 deletions(-)

diff --git a/indra/newview/llpanelgroupnotices.cpp b/indra/newview/llpanelgroupnotices.cpp
index 45fc3d46882..6210973dae2 100644
--- a/indra/newview/llpanelgroupnotices.cpp
+++ b/indra/newview/llpanelgroupnotices.cpp
@@ -614,7 +614,7 @@ void LLPanelGroupNotices::showNotice(const std::string& subject,
 		mViewInventoryIcon->setVisible(TRUE);
 
 		std::stringstream ss;
-		ss << "        " << LLViewerInventoryItem::getDisplayName(inventory_name);
+		ss << "        " << inventory_name;
 
 		mViewInventoryName->setText(ss.str());
 		mBtnOpenAttachment->setEnabled(TRUE);
diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp
index c792fd4fe3a..c75fc390893 100644
--- a/indra/newview/llpanellandmarkinfo.cpp
+++ b/indra/newview/llpanellandmarkinfo.cpp
@@ -367,7 +367,6 @@ void LLPanelLandmarkInfo::createLandmark(const LLUUID& folder_id)
 	}
 
 	LLStringUtil::replaceChar(desc, '\n', ' ');
-	LLViewerInventoryItem::insertDefaultSortField(name);
 
 	// If no folder chosen use the "Landmarks" folder.
 	LLLandmarkActions::createLandmarkHere(name, desc,
diff --git a/indra/newview/lltoastgroupnotifypanel.cpp b/indra/newview/lltoastgroupnotifypanel.cpp
index e49044cdca3..add61c00cfd 100644
--- a/indra/newview/lltoastgroupnotifypanel.cpp
+++ b/indra/newview/lltoastgroupnotifypanel.cpp
@@ -127,17 +127,7 @@ LLToastGroupNotifyPanel::LLToastGroupNotifyPanel(LLNotificationPtr& notification
 	pAttachLink->setVisible(hasInventory);
 	pAttachIcon->setVisible(hasInventory);
 	if (hasInventory) {
-		std::string dis_name;
-		std::string inv_name = payload["inventory_name"];
-
-		if (LLViewerInventoryItem::extractSortFieldAndDisplayName(inv_name, NULL, &dis_name))
-		{
-			pAttachLink->setValue(dis_name);
-		}
-		else
-		{
-			pAttachLink->setValue(inv_name);
-		}
+		pAttachLink->setValue(payload["inventory_name"]);
 
 		mInventoryOffer = new LLOfferInfo(payload["inventory_offer"]);
 		childSetActionTextbox("attachment", boost::bind(
diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index b330c1ba83c..f7529dd553f 100644
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -34,6 +34,7 @@
 #include "llviewerinventory.h"
 
 #include "llnotificationsutil.h"
+#include "llsdserialize.h"
 #include "message.h"
 #include "indra_constants.h"
 
@@ -1174,17 +1175,125 @@ const std::string& LLViewerInventoryItem::getName() const
 	return getDisplayName();
 }
 
+/**
+ * Class to store sorting order of favorites landmarks in a local file. EXT-3985.
+ * It replaced previously implemented solution to store sort index in landmark's name as a "<N>@" prefix.
+ */
+class LLFavoritesOrderStorage : public LLSingleton<LLFavoritesOrderStorage>
+{
+public:
+	/**
+	 * Sets sort index for specified with LLUUID favorite landmark
+	 */
+	void setSortIndex(const LLUUID& inv_item_id, S32 sort_index);
+
+	/**
+	 * Gets sort index for specified with LLUUID favorite landmark
+	 */
+	S32 getSortIndex(const LLUUID& inv_item_id);
+	void removeSortIndex(const LLUUID& inv_item_id);
+
+	const static S32 NO_INDEX;
+private:
+	friend class LLSingleton<LLFavoritesOrderStorage>;
+	LLFavoritesOrderStorage() { load(); }
+	~LLFavoritesOrderStorage() { save(); }
+
+	const static std::string SORTING_DATA_FILE_NAME;
+
+	void load();
+	void save();
+
+	typedef std::map<LLUUID, S32> sort_index_map_t;
+	sort_index_map_t mSortIndexes;
+};
+
+const std::string LLFavoritesOrderStorage::SORTING_DATA_FILE_NAME = "landmarks_sorting.xml";
+const S32 LLFavoritesOrderStorage::NO_INDEX = -1;
+
+void LLFavoritesOrderStorage::setSortIndex(const LLUUID& inv_item_id, S32 sort_index)
+{
+	mSortIndexes[inv_item_id] = sort_index;
+}
+
+S32 LLFavoritesOrderStorage::getSortIndex(const LLUUID& inv_item_id)
+{
+	sort_index_map_t::const_iterator it = mSortIndexes.find(inv_item_id);
+	if (it != mSortIndexes.end())
+	{
+		return it->second;
+	}
+	return NO_INDEX;
+}
+
+void LLFavoritesOrderStorage::removeSortIndex(const LLUUID& inv_item_id)
+{
+	mSortIndexes.erase(inv_item_id);
+}
+
+void LLFavoritesOrderStorage::load()
+{
+	// load per-resident sorting information
+	std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, SORTING_DATA_FILE_NAME);
+
+	LLSD settings_llsd;
+	llifstream file;
+	file.open(filename);
+	if (file.is_open())
+	{
+		LLSDSerialize::fromXML(settings_llsd, file);
+	}
+
+	for (LLSD::map_const_iterator iter = settings_llsd.beginMap();
+		iter != settings_llsd.endMap(); ++iter)
+	{
+		mSortIndexes.insert(std::make_pair(LLUUID(iter->first), (S32)iter->second.asInteger()));
+	}
+}
+
+void LLFavoritesOrderStorage::save()
+{
+	// If we quit from the login screen we will not have an SL account
+	// name.  Don't try to save, otherwise we'll dump a file in
+	// C:\Program Files\SecondLife\ or similar. JC
+	std::string user_dir = gDirUtilp->getLindenUserDir();
+	if (!user_dir.empty())
+	{
+		std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, SORTING_DATA_FILE_NAME);
+		LLSD settings_llsd;
+
+		for(sort_index_map_t::const_iterator iter = mSortIndexes.begin(); iter != mSortIndexes.end(); ++iter)
+		{
+			settings_llsd[iter->first.asString()] = iter->second;
+		}
+
+		llofstream file;
+		file.open(filename);
+		LLSDSerialize::toPrettyXML(settings_llsd, file);
+	}
+}
+
+
+
+// *TODO: mantipov: REMOVE, EXT-3985
 const std::string& LLViewerInventoryItem::getDisplayName() const
 {
+	return LLInventoryItem::getName();
+/*
 	std::string result;
 	BOOL hasSortField = extractSortFieldAndDisplayName(0, &result);
 
+	mDisplayName = LLInventoryItem::getName();
+
 	return mDisplayName = hasSortField ? result : LLInventoryItem::getName();
+*/
 }
 
+// *TODO: mantipov: REMOVE, EXT-3985
 // static
 std::string LLViewerInventoryItem::getDisplayName(const std::string& name)
 {
+	llassert(false);
 	std::string result;
 	BOOL hasSortField = extractSortFieldAndDisplayName(name, 0, &result);
 
@@ -1193,34 +1302,12 @@ std::string LLViewerInventoryItem::getDisplayName(const std::string& name)
 
 S32 LLViewerInventoryItem::getSortField() const
 {
-	S32 result;
-	BOOL hasSortField = extractSortFieldAndDisplayName(&result, 0);
-
-	return hasSortField ? result : -1;
+	return LLFavoritesOrderStorage::instance().getSortIndex(mUUID);
 }
 
 void LLViewerInventoryItem::setSortField(S32 sortField)
 {
-	using std::string;
-
-	std::stringstream ss;
-	ss << sortField;
-
-	string newSortField = ss.str();
-
-	const char separator = getSeparator();
-	const string::size_type separatorPos = mName.find(separator, 0);
-
-	if (separatorPos < string::npos)
-	{
-		// the name of the LLViewerInventoryItem already consists of sort field and display name.
-		mName = newSortField + separator + mName.substr(separatorPos + 1, string::npos);
-	}
-	else
-	{
-		// there is no sort field in the name of LLViewerInventoryItem, we should add it
-		mName = newSortField + separator + mName;
-	}
+	LLFavoritesOrderStorage::instance().setSortIndex(mUUID, sortField);
 }
 
 void LLViewerInventoryItem::rename(const std::string& n)
@@ -1334,6 +1421,7 @@ U32 LLViewerInventoryItem::getCRC32() const
 	return LLInventoryItem::getCRC32();	
 }
 
+// *TODO: mantipov: REMOVE, EXT-3985
 BOOL LLViewerInventoryItem::extractSortFieldAndDisplayName(const std::string& name, S32* sortField, std::string* displayName)
 {
 	using std::string;
@@ -1369,12 +1457,6 @@ BOOL LLViewerInventoryItem::extractSortFieldAndDisplayName(const std::string& na
 	return result;
 }
 
-void LLViewerInventoryItem::insertDefaultSortField(std::string& name)
-{
-	name.insert(0, std::string("1") + getSeparator());
-}
-
-
 // This returns true if the item that this item points to 
 // doesn't exist in memory (i.e. LLInventoryModel).  The baseitem
 // might still be in the database but just not loaded yet.
diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h
index 7f3f019b070..cf104503a86 100644
--- a/indra/newview/llviewerinventory.h
+++ b/indra/newview/llviewerinventory.h
@@ -82,7 +82,6 @@ class LLViewerInventoryItem : public LLInventoryItem, public boost::signals2::tr
 	virtual U32 getCRC32() const; // really more of a checksum.
 
 	static BOOL extractSortFieldAndDisplayName(const std::string& name, S32* sortField, std::string* displayName);
-	static void insertDefaultSortField(std::string& name);
 
 	// construct a complete viewer inventory item
 	LLViewerInventoryItem(const LLUUID& uuid, const LLUUID& parent_uuid,
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index d6ce356c4b0..96dd063a7ce 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -1434,31 +1434,6 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const
 	return false;
 }
 
-std::string get_display_name(const std::string& name)
-{
-	// We receive landmark name as \'<n>@name\' where <n> is a number
-	// LLViewerInventoryItem::getDisplayName will remove \'<n>@ though we need the \'
-	// Lets save all chars preceding @ and insert them back after <n>@ was removed
-
-	std::string saved;
-
-	if(std::string::npos != name.find(LLViewerInventoryItem::getSeparator()))
-	{
-		int n = 0;
-		while(!isdigit(name[n]) && LLViewerInventoryItem::getSeparator() != name[n])
-		{
-			++n;
-		}
-		saved = name.substr(0, n);
-	}
-
-	std::string d_name = LLViewerInventoryItem::getDisplayName(name);
-	d_name.insert(0, saved);
-	LLStringUtil::trim(d_name);
-
-	return d_name;
-}
-
 void inventory_offer_handler(LLOfferInfo* info)
 {
 	//Until throttling is implmented, busy mode should reject inventory instead of silently
@@ -1496,11 +1471,6 @@ void inventory_offer_handler(LLOfferInfo* info)
 		LLStringUtil::truncate(msg, indx);
 	}
 
-	if(LLAssetType::AT_LANDMARK == info->mType)
-	{
-		msg = get_display_name(msg);
-	}
-
 	LLSD args;
 	args["[OBJECTNAME]"] = msg;
 
-- 
GitLab


From 4b9abb162cd7b4cfca3c98a0611cb2272d336476 Mon Sep 17 00:00:00 2001
From: Denis Serdjuk <dserduk@productengine.com>
Date: Wed, 27 Jan 2010 18:05:46 +0200
Subject: [PATCH 154/521] fixed minor bug EXT-3941  Quick clicks on chiclets
 are treated as double clicks Handling of mouseDown event was delegated to
 chiclet's button. Also double callback was connected with onMouseDown handler
 to ride from missed click behavior.

--HG--
branch : product-engine
---
 indra/newview/llchiclet.cpp | 26 ++++++++------------------
 indra/newview/llchiclet.h   | 17 ++++-------------
 2 files changed, 12 insertions(+), 31 deletions(-)

diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index f1de4e29824..f646bcccb58 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -459,6 +459,14 @@ LLIMChiclet::LLIMChiclet(const LLIMChiclet::Params& p)
 	enableCounterControl(p.enable_counter);
 }
 
+/* virtual*/
+BOOL LLIMChiclet::postBuild()
+{
+	mChicletButton = getChild<LLButton>("chiclet_button");
+	mChicletButton->setCommitCallback(boost::bind(&LLIMChiclet::onMouseDown, this));
+	mChicletButton->setDoubleClickCallback(boost::bind(&LLIMChiclet::onMouseDown, this));
+	return TRUE;
+}
 void LLIMChiclet::setShowSpeaker(bool show)
 {
 	bool needs_resize = getShowSpeaker() != show;
@@ -583,12 +591,6 @@ void LLIMChiclet::setToggleState(bool toggle)
 	mChicletButton->setToggleState(toggle);
 }
 
-BOOL LLIMChiclet::handleMouseDown(S32 x, S32 y, MASK mask)
-{
-	onMouseDown();
-	return LLChiclet::handleMouseDown(x, y, mask);
-}
-
 void LLIMChiclet::draw()
 {
 	LLUICtrl::draw();
@@ -1905,12 +1907,6 @@ void LLScriptChiclet::onMouseDown()
 	LLScriptFloaterManager::getInstance()->toggleScriptFloater(getSessionId());
 }
 
-BOOL LLScriptChiclet::handleMouseDown(S32 x, S32 y, MASK mask)
-{
-	onMouseDown();
-	return LLChiclet::handleMouseDown(x, y, mask);
-}
-
 //////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////
@@ -1975,10 +1971,4 @@ void LLInvOfferChiclet::onMouseDown()
 	LLScriptFloaterManager::instance().toggleScriptFloater(getSessionId());
 }
 
-BOOL LLInvOfferChiclet::handleMouseDown(S32 x, S32 y, MASK mask)
-{
-	onMouseDown();
-	return LLChiclet::handleMouseDown(x, y, mask);
-}
-
 // EOF
diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h
index bb4846aa575..b006ae34207 100644
--- a/indra/newview/llchiclet.h
+++ b/indra/newview/llchiclet.h
@@ -327,6 +327,10 @@ class LLIMChiclet : public LLChiclet
 	
 	virtual ~LLIMChiclet() {};
 
+	/**
+	 * It is used for default setting up of chicklet:click handler, etc.  
+	 */
+	BOOL postBuild();
 	/**
 	 * Sets IM session name. This name will be displayed in chiclet tooltip.
 	 */
@@ -428,8 +432,6 @@ class LLIMChiclet : public LLChiclet
 
 	LLIMChiclet(const LLIMChiclet::Params& p);
 
-	/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
-
 protected:
 
 	bool mShowSpeaker;
@@ -640,11 +642,6 @@ class LLScriptChiclet : public LLIMChiclet
 	 */
 	/*virtual*/ void onMouseDown();
 
-	/**
-	 * Override default handler
-	 */
-	/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
-
 protected:
 
 	LLScriptChiclet(const Params&);
@@ -684,12 +681,6 @@ class LLInvOfferChiclet: public LLIMChiclet
 	 */
 	/*virtual*/ void onMouseDown();
 
-	/**
-	 * Override default handler
-	 */
-	/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
-
-
 protected:
 	LLInvOfferChiclet(const Params&);
 	friend class LLUICtrlFactory;
-- 
GitLab


From b23a5dda5a730b1d0196d171dc5005e03b2328d4 Mon Sep 17 00:00:00 2001
From: Andrew Dyukov <adyukov@productengine.com>
Date: Wed, 27 Jan 2010 18:19:52 +0200
Subject: [PATCH 155/521] Fixed low bug EXT-4647 ("Leaving nearby voice ..."
 appears when you're not connected to nearby voice channel).

- Added flag to check whether to show "Leaving ...". It is false only if voice in parcel is disabled and channel we leave is nearby.

--HG--
branch : product-engine
---
 indra/newview/llimview.cpp | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 6ac7378c586..c4b1d7a9f4b 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -66,6 +66,7 @@
 #include "llspeakers.h" //for LLIMSpeakerMgr
 #include "lltextutil.h"
 #include "llviewercontrol.h"
+#include "llviewerparcelmgr.h"
 
 
 const static std::string IM_TIME("time");
@@ -1601,6 +1602,9 @@ void LLOutgoingCallDialog::show(const LLSD& key)
 {
 	mPayload = key;
 
+	//will be false only if voice in parcel is disabled and channel we leave is nearby(checked further)
+	bool show_oldchannel = LLViewerParcelMgr::getInstance()->allowAgentVoice();
+
 	// hide all text at first
 	hideAllText();
 
@@ -1624,10 +1628,11 @@ void LLOutgoingCallDialog::show(const LLSD& key)
 		}
 
 		childSetTextArg("leaving", "[CURRENT_CHAT]", old_caller_name);
+		show_oldchannel = true;
 	}
 	else
 	{
-		childSetTextArg("leaving", "[CURRENT_CHAT]", getString("localchat"));
+		childSetTextArg("leaving", "[CURRENT_CHAT]", getString("localchat"));		
 	}
 
 	if (!mPayload["disconnected_channel_name"].asString().empty())
@@ -1672,10 +1677,16 @@ void LLOutgoingCallDialog::show(const LLSD& key)
 	{
 	case LLVoiceChannel::STATE_CALL_STARTED :
 		getChild<LLTextBox>("calling")->setVisible(true);
-		getChild<LLTextBox>("leaving")->setVisible(true);
+		if(show_oldchannel)
+		{
+			getChild<LLTextBox>("leaving")->setVisible(true);
+		}
 		break;
 	case LLVoiceChannel::STATE_RINGING :
-		getChild<LLTextBox>("leaving")->setVisible(true);
+		if(show_oldchannel)
+		{
+			getChild<LLTextBox>("leaving")->setVisible(true);
+		}
 		getChild<LLTextBox>("connecting")->setVisible(true);
 		break;
 	case LLVoiceChannel::STATE_ERROR :
-- 
GitLab


From b3763f1ec1e20226bf489042346c5827d187ba42 Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Wed, 27 Jan 2010 18:40:19 +0200
Subject: [PATCH 156/521] Cleaned up including of the "llviewerinventory.h"

--HG--
branch : product-engine
---
 indra/newview/llappearancemgr.h                | 2 +-
 indra/newview/llfloaterbulkpermission.cpp      | 1 +
 indra/newview/llfloaterbulkpermission.h        | 2 --
 indra/newview/llfolderviewitem.cpp             | 1 -
 indra/newview/llinventoryfilter.cpp            | 1 -
 indra/newview/llinventoryfunctions.cpp         | 1 -
 indra/newview/llpanelcontents.cpp              | 2 +-
 indra/newview/llpanelteleporthistory.cpp       | 1 -
 indra/newview/llsidepanelinventorysubpanel.cpp | 1 -
 indra/newview/llwearablelist.cpp               | 1 -
 10 files changed, 3 insertions(+), 10 deletions(-)

diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index dd50b482cf3..38d1e01d085 100644
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -35,11 +35,11 @@
 
 #include "llsingleton.h"
 #include "llinventorymodel.h"
-#include "llviewerinventory.h"
 #include "llcallbacklist.h"
 
 class LLWearable;
 class LLWearableHoldingPattern;
+class LLInventoryCallback;
 
 class LLAppearanceManager: public LLSingleton<LLAppearanceManager>
 {
diff --git a/indra/newview/llfloaterbulkpermission.cpp b/indra/newview/llfloaterbulkpermission.cpp
index 5c3a54e34bb..b2f700069f9 100644
--- a/indra/newview/llfloaterbulkpermission.cpp
+++ b/indra/newview/llfloaterbulkpermission.cpp
@@ -43,6 +43,7 @@
 #include "llviewerregion.h"
 #include "lscript_rt_interface.h"
 #include "llviewercontrol.h"
+#include "llviewerinventory.h"
 #include "llviewerobject.h"
 #include "llviewerregion.h"
 #include "llresmgr.h"
diff --git a/indra/newview/llfloaterbulkpermission.h b/indra/newview/llfloaterbulkpermission.h
index 31f4f5c3e16..bffcff7059a 100644
--- a/indra/newview/llfloaterbulkpermission.h
+++ b/indra/newview/llfloaterbulkpermission.h
@@ -44,8 +44,6 @@
 #include "llfloater.h"
 #include "llscrolllistctrl.h"
 
-#include "llviewerinventory.h"
-
 class LLFloaterBulkPermission : public LLFloater, public LLVOInventoryListener
 {
 	friend class LLFloaterReg;
diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp
index 4b48626b22a..b05eb84e521 100644
--- a/indra/newview/llfolderviewitem.cpp
+++ b/indra/newview/llfolderviewitem.cpp
@@ -40,7 +40,6 @@
 #include "llinventoryfilter.h"
 #include "llpanel.h"
 #include "llviewercontrol.h"	// gSavedSettings
-#include "llviewerinventory.h"
 #include "llviewerwindow.h"		// Argh, only for setCursor()
 
 // linden library includes
diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp
index b4dcb566e48..cd20d64ca8e 100644
--- a/indra/newview/llinventoryfilter.cpp
+++ b/indra/newview/llinventoryfilter.cpp
@@ -39,7 +39,6 @@
 #include "llfolderviewitem.h"
 #include "llinventorymodel.h"	// gInventory.backgroundFetchActive()
 #include "llviewercontrol.h"
-#include "llviewerinventory.h"
 #include "llfolderview.h"
 
 // linden library includes
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index 2885ba13fae..33623539e96 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -76,7 +76,6 @@
 #include "lltabcontainer.h"
 #include "lltooldraganddrop.h"
 #include "lluictrlfactory.h"
-#include "llviewerinventory.h"
 #include "llviewermessage.h"
 #include "llviewerobjectlist.h"
 #include "llviewerregion.h"
diff --git a/indra/newview/llpanelcontents.cpp b/indra/newview/llpanelcontents.cpp
index 9d591ef43d1..2a7d097f942 100644
--- a/indra/newview/llpanelcontents.cpp
+++ b/indra/newview/llpanelcontents.cpp
@@ -50,7 +50,6 @@
 
 // project includes
 #include "llagent.h"
-#include "llfloaterbulkpermission.h"
 #include "llpanelobjectinventory.h"
 #include "llpreviewscript.h"
 #include "llresmgr.h"
@@ -60,6 +59,7 @@
 #include "lltoolmgr.h"
 #include "lltrans.h"
 #include "llviewerassettype.h"
+#include "llviewerinventory.h"
 #include "llviewerobject.h"
 #include "llviewerregion.h"
 #include "llviewerwindow.h"
diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index 1b8fb496418..954f3995c1d 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -46,7 +46,6 @@
 #include "llnotificationsutil.h"
 #include "lltextbox.h"
 #include "llviewermenu.h"
-#include "llviewerinventory.h"
 #include "lllandmarkactions.h"
 #include "llclipboard.h"
 
diff --git a/indra/newview/llsidepanelinventorysubpanel.cpp b/indra/newview/llsidepanelinventorysubpanel.cpp
index 56e342c3cea..f51462dcce8 100644
--- a/indra/newview/llsidepanelinventorysubpanel.cpp
+++ b/indra/newview/llsidepanelinventorysubpanel.cpp
@@ -44,7 +44,6 @@
 #include "lllineeditor.h"
 #include "llradiogroup.h"
 #include "llviewercontrol.h"
-#include "llviewerinventory.h"
 #include "llviewerobjectlist.h"
 
 
diff --git a/indra/newview/llwearablelist.cpp b/indra/newview/llwearablelist.cpp
index 56362568569..d6a9837b860 100644
--- a/indra/newview/llwearablelist.cpp
+++ b/indra/newview/llwearablelist.cpp
@@ -38,7 +38,6 @@
 #include "llassetstorage.h"
 #include "llagent.h"
 #include "llvoavatar.h"
-#include "llviewerinventory.h"
 #include "llviewerstats.h"
 #include "llnotificationsutil.h"
 #include "llinventorymodel.h"
-- 
GitLab


From a904e887bdee8656694551697e860a06bbfe9b6c Mon Sep 17 00:00:00 2001
From: Sergei Litovchuk <slitovchuk@productengine.com>
Date: Wed, 27 Jan 2010 19:00:12 +0200
Subject: [PATCH 157/521] Fixed normal bug (EXT-4700) Creating a landmark
 brings up the Landmark sidepanel info twice. - Disabled "Close" and "Back"
 buttons to prevent closing "Create Landmark" panel until created landmark is
 loaded.

--HG--
branch : product-engine
---
 indra/newview/llpanelplaces.cpp   | 26 ++++++++++++++++++--------
 indra/newview/llpanelplaces.h     |  2 ++
 indra/newview/llviewermessage.cpp |  5 +++--
 3 files changed, 23 insertions(+), 10 deletions(-)

diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp
index 7272a8a652c..29cfbbe606d 100644
--- a/indra/newview/llpanelplaces.cpp
+++ b/indra/newview/llpanelplaces.cpp
@@ -272,11 +272,11 @@ BOOL LLPanelPlaces::postBuild()
 	if (!mPlaceProfile || !mLandmarkInfo)
 		return FALSE;
 
-	LLButton* back_btn = mPlaceProfile->getChild<LLButton>("back_btn");
-	back_btn->setClickedCallback(boost::bind(&LLPanelPlaces::onBackButtonClicked, this));
+	mPlaceProfileBackBtn = mPlaceProfile->getChild<LLButton>("back_btn");
+	mPlaceProfileBackBtn->setClickedCallback(boost::bind(&LLPanelPlaces::onBackButtonClicked, this));
 
-	back_btn = mLandmarkInfo->getChild<LLButton>("back_btn");
-	back_btn->setClickedCallback(boost::bind(&LLPanelPlaces::onBackButtonClicked, this));
+	mLandmarkInfoBackBtn = mLandmarkInfo->getChild<LLButton>("back_btn");
+	mLandmarkInfoBackBtn->setClickedCallback(boost::bind(&LLPanelPlaces::onBackButtonClicked, this));
 
 	LLLineEditor* title_editor = mLandmarkInfo->getChild<LLLineEditor>("title_editor");
 	title_editor->setKeystrokeCallback(boost::bind(&LLPanelPlaces::onEditButtonClicked, this), NULL);
@@ -327,9 +327,12 @@ void LLPanelPlaces::onOpen(const LLSD& key)
 
 			mLandmarkInfo->displayParcelInfo(LLUUID(), mPosGlobal);
 
-			// Disable Save button because there is no item to save yet.
-			// The button will be enabled in onLandmarkLoaded callback.
+			// Disabling "Save", "Close" and "Back" buttons to prevent closing "Create Landmark"
+			// panel before created landmark is loaded.
+			// These buttons will be enabled when created landmark is added to inventory.
 			mSaveBtn->setEnabled(FALSE);
+			mCloseBtn->setEnabled(FALSE);
+			mLandmarkInfoBackBtn->setEnabled(FALSE);
 		}
 		else if (mPlaceInfoType == LANDMARK_INFO_TYPE)
 		{
@@ -437,6 +440,8 @@ void LLPanelPlaces::setItem(LLInventoryItem* item)
 
 	mEditBtn->setEnabled(is_landmark_editable);
 	mSaveBtn->setEnabled(is_landmark_editable);
+	mCloseBtn->setEnabled(TRUE);
+	mLandmarkInfoBackBtn->setEnabled(TRUE);
 
 	if (is_landmark_editable)
 	{
@@ -488,8 +493,6 @@ void LLPanelPlaces::onLandmarkLoaded(LLLandmark* landmark)
 	landmark->getGlobalPos(mPosGlobal);
 	mLandmarkInfo->displayParcelInfo(region_id, mPosGlobal);
 
-	mSaveBtn->setEnabled(TRUE);
-
 	updateVerbs();
 }
 
@@ -1030,6 +1033,13 @@ void LLPanelPlaces::updateVerbs()
 		{
 			mTeleportBtn->setEnabled(have_3d_pos);
 		}
+
+		// Do not enable landmark info Back button when we are waiting
+		// for newly created landmark to load.
+		if (!is_create_landmark_visible)
+		{
+			mLandmarkInfoBackBtn->setEnabled(TRUE);
+		}
 	}
 	else
 	{
diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h
index a0989746599..5de78b15951 100644
--- a/indra/newview/llpanelplaces.h
+++ b/indra/newview/llpanelplaces.h
@@ -115,6 +115,8 @@ class LLPanelPlaces : public LLPanel
 	LLToggleableMenu*			mPlaceMenu;
 	LLToggleableMenu*			mLandmarkMenu;
 
+	LLButton*					mPlaceProfileBackBtn;
+	LLButton*					mLandmarkInfoBackBtn;
 	LLButton*					mTeleportBtn;
 	LLButton*					mShowOnMapBtn;
 	LLButton*					mEditBtn;
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index d6ce356c4b0..36710e7532e 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -906,7 +906,7 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f
 					if ("inventory_handler" == from_name)
 					{
 						//we have to filter inventory_handler messages to avoid notification displaying
-						LLSideTray::getInstance()->showPanel("panel_places", 
+						LLSideTray::getInstance()->showPanel("panel_places",
 								LLSD().with("type", "landmark").with("id", item->getUUID()));
 					}
 					else if("group_offer" == from_name)
@@ -925,8 +925,9 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f
 						args["FOLDER_NAME"] = std::string(parent_folder ? parent_folder->getName() : "unknown");
 						LLNotificationsUtil::add("LandmarkCreated", args);
 						// Created landmark is passed to Places panel to allow its editing. In fact panel should be already displayed.
+						// If the panel is closed we don't reopen it until created landmark is loaded.
 						//TODO*:: dserduk(7/12/09) remove LLPanelPlaces dependency from here
-						LLPanelPlaces *places_panel = dynamic_cast<LLPanelPlaces*>(LLSideTray::getInstance()->showPanel("panel_places", LLSD()));
+						LLPanelPlaces *places_panel = dynamic_cast<LLPanelPlaces*>(LLSideTray::getInstance()->getPanel("panel_places"));
 						if (places_panel)
 						{
 							// we are creating a landmark
-- 
GitLab


From f5344270f24702711df67f02160b9225d269669b Mon Sep 17 00:00:00 2001
From: Sergei Litovchuk <slitovchuk@productengine.com>
Date: Wed, 27 Jan 2010 21:18:13 +0200
Subject: [PATCH 158/521] Fixed normal bug (EXT-4592) Negative 'new balance'
 value in Buy L$ floater - Restricted currency purchase amount to a 10 digit
 number.

--HG--
branch : product-engine
---
 indra/newview/skins/default/xui/en/floater_buy_currency.xml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/newview/skins/default/xui/en/floater_buy_currency.xml b/indra/newview/skins/default/xui/en/floater_buy_currency.xml
index 8f67f564a26..703a02d9952 100644
--- a/indra/newview/skins/default/xui/en/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/en/floater_buy_currency.xml
@@ -114,6 +114,7 @@
     </text>
     <line_editor
      type="string"
+     max_length="10"
      halign="right"
      font="SansSerifMedium"
      select_on_focus="true"
-- 
GitLab


From 4cad6333ab447713e96fb14a278e529f5bc4f2a1 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 11:53:17 -0800
Subject: [PATCH 159/521] CID-417  Checker: UNINIT_CTOR Function:
 LLFoundData::LLFoundData() File: /indra/newview/llappearancemgr.cpp

---
 indra/newview/llappearancemgr.cpp | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 1dec8c7bd85..8f4ce4498ef 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -292,11 +292,11 @@ class LLUpdateAppearanceOnDestroy: public LLInventoryCallback
 
 struct LLFoundData
 {
-	LLFoundData() {}
+	LLFoundData() : mAssetType(LLAssetType::AT_NONE), mWearable(NULL) {}
 	LLFoundData(const LLUUID& item_id,
-				const LLUUID& asset_id,
-				const std::string& name,
-				LLAssetType::EType asset_type) :
+		    const LLUUID& asset_id,
+		    const std::string& name,
+		    LLAssetType::EType asset_type) :
 		mItemID(item_id),
 		mAssetID(asset_id),
 		mName(name),
-- 
GitLab


From 3acf25d5fc7d3efcc2e13096ff781897ebf31346 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 11:55:34 -0800
Subject: [PATCH 160/521] CID-416  Checker: NULL_RETURNS Function:
 LLTabContainer::onTabBtn(const LLSD &, LLPanel *) File:
 /indra/llui/lltabcontainer.cpp

---
 indra/llui/lltabcontainer.cpp | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp
index dcb3542e186..6be76605fdf 100644
--- a/indra/llui/lltabcontainer.cpp
+++ b/indra/llui/lltabcontainer.cpp
@@ -1590,7 +1590,10 @@ void LLTabContainer::onTabBtn( const LLSD& data, LLPanel* panel )
 	LLTabTuple* tuple = getTabByPanel(panel);
 	selectTabPanel( panel );
 
-	tuple->mTabPanel->setFocus(TRUE);
+	if (tuple)
+	{
+		tuple->mTabPanel->setFocus(TRUE);
+	}
 }
 
 void LLTabContainer::onNextBtn( const LLSD& data )
-- 
GitLab


From f714e527c57741a6e60fe4bf5fa242b5d8e3d861 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 11:57:55 -0800
Subject: [PATCH 161/521] CID-415  Checker: DEADCODE Function:
 LLToolPie::handleTooltipObject(LLViewerObject *, std::basic_string<char,
 std::char_traits<char>, std::allocator<char>>, std::basic_string<char,
 std::char_traits<char>, std::allocator<char>>) File:
 /indra/newview/lltoolpie.cpp

---
 indra/newview/lltoolpie.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index c79a66892d5..39e71974fdc 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -922,7 +922,7 @@ BOOL LLToolPie::handleTooltipObject( LLViewerObject* hover_object, std::string l
 				const LLMediaEntry* mep = tep->hasMedia() ? tep->getMediaData() : NULL;
 				if (mep)
 				{
-					viewer_media_t media_impl = mep ? LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()) : NULL;
+					viewer_media_t media_impl = LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID());
 					LLPluginClassMedia* media_plugin = NULL;
 					
 					if (media_impl.notNull() && (media_impl->hasMedia()))
-- 
GitLab


From 73665e5ad68ebbe2a6058128f92d251da4cd9d3b Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 11:59:55 -0800
Subject: [PATCH 162/521] CID-1  Checker: BAD_COMPARE Function:
 checkExceptionHandler() File: /indra/llplugin/slplugin/slplugin.cpp

(not a bug, but rearranged a little)
---
 indra/llplugin/slplugin/slplugin.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llplugin/slplugin/slplugin.cpp b/indra/llplugin/slplugin/slplugin.cpp
index 23dc532ba56..77240ce5468 100644
--- a/indra/llplugin/slplugin/slplugin.cpp
+++ b/indra/llplugin/slplugin/slplugin.cpp
@@ -156,7 +156,7 @@ bool checkExceptionHandler()
 	if (prev_filter == NULL)
 	{
 		ok = FALSE;
-		if (myWin32ExceptionHandler == NULL)
+		if (NULL == myWin32ExceptionHandler)
 		{
 			LL_WARNS("AppInit") << "Exception handler uninitialized." << LL_ENDL;
 		}
-- 
GitLab


From a0bc58aac498dff7f06070bf3be025b5e396f84f Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 12:07:05 -0800
Subject: [PATCH 163/521] CID-26  Checker: CTOR_DTOR_LEAK Function:
 LLViewerWindow::LLViewerWindow(const std::basic_string<char,
 std::char_traits<char>, std::allocator<char>>&, const std::basic_string<char,
 std::char_traits<char>, std::allocator<char>>&, int, int, int, int, int, int)
 File: /indra/newview/llviewerwindow.cpp

---
 indra/newview/llviewerwindow.cpp | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index c1817496b14..424b84a756f 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1659,6 +1659,9 @@ LLViewerWindow::~LLViewerWindow()
 {
 	llinfos << "Destroying Window" << llendl;
 	destroyWindow();
+
+	delete mDebugText;
+	mDebugText = NULL;
 }
 
 
-- 
GitLab


From 2f062b9e5c761bce6d4d29e1a40283e37dfdfd53 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 13:02:19 -0800
Subject: [PATCH 164/521] CID-105

Checker: INVALIDATE_ITERATOR
Function: LLLocationHistory::addItem(const LLLocationHistoryItem &)
File: /indra/newview/lllocationhistory.cpp
---
 indra/newview/lllocationhistory.cpp | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/indra/newview/lllocationhistory.cpp b/indra/newview/lllocationhistory.cpp
index ae1b8f85408..f494f7d7c1d 100644
--- a/indra/newview/lllocationhistory.cpp
+++ b/indra/newview/lllocationhistory.cpp
@@ -50,18 +50,19 @@ void LLLocationHistory::addItem(const LLLocationHistoryItem& item) {
 
 	// check if this item doesn't duplicate any existing one
 	location_list_t::iterator item_iter = std::find(mItems.begin(), mItems.end(),item);
-	if(item_iter != mItems.end()){
+	if(item_iter != mItems.end()) // if it already exists, erase the old one
+	{
 		mItems.erase(item_iter);	
 	}
 
 	mItems.push_back(item);
 	
-	// If the vector size exceeds the maximum, purge the oldest items.
-	if ((S32)mItems.size() > max_items) {
-		for(location_list_t::iterator i = mItems.begin(); i != mItems.end()-max_items; ++i) {
-				mItems.erase(i);
-		}
+	// If the vector size exceeds the maximum, purge the oldest items (at the start of the mItems vector).
+	if ((S32)mItems.size() > max_items)
+	{
+		mItems.erase(mItems.begin(), mItems.end()-max_items);
 	}
+	llassert(mItems.size() <= max_items);
 }
 
 /*
-- 
GitLab


From c48f2d7873568c26d835d6ce1d80c3c3533854a6 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 13:04:22 -0800
Subject: [PATCH 165/521] CID-104

Checker: INVALIDATE_ITERATOR
Function: LLViewerWindowListener::saveSnapshot(const LLSD &) const
File: /indra/newview/llviewerwindowlistener.cpp

not a bug.
---
 indra/newview/llviewerwindowlistener.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/newview/llviewerwindowlistener.cpp b/indra/newview/llviewerwindowlistener.cpp
index de577882711..fae98cf49ae 100644
--- a/indra/newview/llviewerwindowlistener.cpp
+++ b/indra/newview/llviewerwindowlistener.cpp
@@ -77,6 +77,7 @@ void LLViewerWindowListener::saveSnapshot(const LLSD& event) const
         {
             LL_ERRS("LLViewerWindowListener") << "LLViewerWindowListener::saveSnapshot(): "
                                               << "unrecognized type " << event["type"] << LL_ENDL;
+	    return;
         }
         type = found->second;
     }
-- 
GitLab


From 706fd4d0735e446ea6c9eab7387990375af53c48 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 13:06:26 -0800
Subject: [PATCH 166/521] CID-103

Checker: INVALIDATE_ITERATOR
Function: LLMenuGL::scrollItemsDown()
File: /indra/llui/llmenugl.cpp
---
 indra/llui/llmenugl.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index c172a2b714f..171269e30d5 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -1883,7 +1883,8 @@ void LLMenuGL::scrollItemsDown()
 		}
 	}
 
-	if ((*next_item_iter)->getVisible())
+	if (next_item_iter != mItems.end() &&
+	    (*next_item_iter)->getVisible())
 	{
 		mFirstVisibleItem = *next_item_iter;
 	}
-- 
GitLab


From 668e72e2901ebf377661572fd30954d41e0e7c15 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 13:08:15 -0800
Subject: [PATCH 167/521] CID-103

Checker: INVALIDATE_ITERATOR
Function: LLMenuGL::scrollItemsDown()
File: /indra/llui/llmenugl.cpp
---
 indra/llui/llmenugl.cpp | 21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index 171269e30d5..ead28426cd4 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -1875,18 +1875,21 @@ void LLMenuGL::scrollItemsDown()
 
 	item_list_t::iterator next_item_iter;
 
-	for (next_item_iter = ++cur_item_iter; next_item_iter != mItems.end(); next_item_iter++)
+	if (cur_item_iterator != mItems.end())
 	{
-		if( (*next_item_iter)->getVisible())
+		for (next_item_iter = ++cur_item_iter; next_item_iter != mItems.end(); next_item_iter++)
 		{
-			break;
+			if( (*next_item_iter)->getVisible())
+			{
+				break;
+			}
+		}
+		
+		if (next_item_iter != mItems.end() &&
+		    (*next_item_iter)->getVisible())
+		{
+			mFirstVisibleItem = *next_item_iter;
 		}
-	}
-
-	if (next_item_iter != mItems.end() &&
-	    (*next_item_iter)->getVisible())
-	{
-		mFirstVisibleItem = *next_item_iter;
 	}
 	
 	mNeedsArrange = TRUE;
-- 
GitLab


From 05260ba76d020072e5b08bd07fa77408aee4442e Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 13:09:25 -0800
Subject: [PATCH 168/521] follow-up fix

---
 indra/llui/llmenugl.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index ead28426cd4..ceb1e9820eb 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -1875,7 +1875,7 @@ void LLMenuGL::scrollItemsDown()
 
 	item_list_t::iterator next_item_iter;
 
-	if (cur_item_iterator != mItems.end())
+	if (cur_item_iter != mItems.end())
 	{
 		for (next_item_iter = ++cur_item_iter; next_item_iter != mItems.end(); next_item_iter++)
 		{
-- 
GitLab


From 599e96f32815733eb2bbd9aef5984d410644a10a Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 13:11:02 -0800
Subject: [PATCH 169/521] CID-102

Checker: INVALIDATE_ITERATOR
Function: LLNotifications::getChannel(const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&)
File: /indra/llui/llnotifications.cpp

not a bug.
---
 indra/llui/llnotifications.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp
index 86989012ee4..a67094b8cea 100644
--- a/indra/llui/llnotifications.cpp
+++ b/indra/llui/llnotifications.cpp
@@ -1058,6 +1058,7 @@ LLNotificationChannelPtr LLNotifications::getChannel(const std::string& channelN
 	if(p == mChannels.end())
 	{
 		llerrs << "Did not find channel named " << channelName << llendl;
+		return LLNotificationChannelPtr();
 	}
 	return p->second;
 }
-- 
GitLab


From 3aed137a33712f9000333aa814f76183158183cb Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 13:15:13 -0800
Subject: [PATCH 170/521] CID-101

Checker: INVALIDATE_ITERATOR
Function: LLTextureCache::writeComplete(unsigned int, bool)
File: /indra/newview/lltexturecache.cpp

not really a bug, but rearranged a little.
---
 indra/newview/lltexturecache.cpp | 23 +++++++++++------------
 1 file changed, 11 insertions(+), 12 deletions(-)

diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp
index 051c189013e..7dfd0c83fac 100644
--- a/indra/newview/lltexturecache.cpp
+++ b/indra/newview/lltexturecache.cpp
@@ -1617,20 +1617,19 @@ bool LLTextureCache::writeComplete(handle_t handle, bool abort)
 {
 	lockWorkers();
 	handle_map_t::iterator iter = mWriters.find(handle);
-	llassert_always(iter != mWriters.end());
-	LLTextureCacheWorker* worker = iter->second;
-	if (worker->complete() || abort)
+	if (llverify(iter != mWriters.end()))
 	{
-		mWriters.erase(handle);
-		unlockWorkers();
-		worker->scheduleDelete();
-		return true;
-	}
-	else
-	{
-		unlockWorkers();
-		return false;
+		LLTextureCacheWorker* worker = iter->second;
+		if (worker->complete() || abort)
+		{
+			mWriters.erase(handle);
+			unlockWorkers();
+			worker->scheduleDelete();
+			return true;
+		}
 	}
+	unlockWorkers();
+	return false;
 }
 
 void LLTextureCache::prioritizeWrite(handle_t handle)
-- 
GitLab


From c69ee5ced1ba3b8e96a08e2f0344eedd971ef3c1 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 13:18:49 -0800
Subject: [PATCH 171/521] CID-100

Checker: INVALIDATE_ITERATOR
Function: buildBlock(unsigned char *, int, const LLMessageBlock *, LLMsgData *)
File: /indra/llmessage/lltemplatemessagebuilder.cpp
---
 indra/llmessage/lltemplatemessagebuilder.cpp | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/indra/llmessage/lltemplatemessagebuilder.cpp b/indra/llmessage/lltemplatemessagebuilder.cpp
index 6400310c465..55379fc6fdc 100644
--- a/indra/llmessage/lltemplatemessagebuilder.cpp
+++ b/indra/llmessage/lltemplatemessagebuilder.cpp
@@ -737,10 +737,14 @@ static S32 buildBlock(U8* buffer, S32 buffer_size, const LLMessageBlock* templat
 		}
 
 		--block_count;
-		++block_iter;
+		
 		if (block_iter != message_data->mMemberBlocks.end())
 		{
-			mbci = block_iter->second;
+			++block_iter;
+			if (block_iter != message_data->mMemberBlocks.end())
+			{
+				mbci = block_iter->second;
+			}
 		}
 	}
 
-- 
GitLab


From eeb30616f601a8e75403d7eb8ffed272a5915a17 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 13:26:05 -0800
Subject: [PATCH 172/521] CID-99

Checker: INVALIDATE_ITERATOR
Function: LLAllocatorHeapProfile::parse(const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&)
File: /indra/llcommon/llallocator_heap_profile.cpp

not a bug, but make it clearer to coverity.
---
 indra/llcommon/llallocator_heap_profile.cpp | 31 +++++++++++----------
 indra/newview/lltexturecache.cpp            |  3 +-
 2 files changed, 19 insertions(+), 15 deletions(-)

diff --git a/indra/llcommon/llallocator_heap_profile.cpp b/indra/llcommon/llallocator_heap_profile.cpp
index 0a807702d0a..d01b33c8c40 100644
--- a/indra/llcommon/llallocator_heap_profile.cpp
+++ b/indra/llcommon/llallocator_heap_profile.cpp
@@ -113,20 +113,23 @@ void LLAllocatorHeapProfile::parse(std::string const & prof_text)
         ++j;
 
         while(j != line_elems.end() && j->empty()) { ++j; } // skip any separator tokens
-        llassert_always(j != line_elems.end());
-        ++j; // skip the '@'
-
-        mLines.push_back(line(live_count, live_size, tot_count, tot_size));
-        line & current_line = mLines.back();
-
-        for(; j != line_elems.end(); ++j)
-        {
-            if(!j->empty()) {
-                U32 marker = boost::lexical_cast<U32>(*j);
-                current_line.mTrace.push_back(marker);
-            }
-        }
-    }
+	llassert(j != line_elems.end());
+        if (j != line_elems.end())
+	{
+		++j; // skip the '@'
+
+		mLines.push_back(line(live_count, live_size, tot_count, tot_size));
+		line & current_line = mLines.back();
+		
+		for(; j != line_elems.end(); ++j)
+		{
+			if(!j->empty())
+			{
+				U32 marker = boost::lexical_cast<U32>(*j);
+				current_line.mTrace.push_back(marker);
+			}
+		}
+	}
 
     // *TODO - parse MAPPED_LIBRARIES section here if we're ever interested in it
 }
diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp
index 7dfd0c83fac..a7f26f1df15 100644
--- a/indra/newview/lltexturecache.cpp
+++ b/indra/newview/lltexturecache.cpp
@@ -1617,7 +1617,8 @@ bool LLTextureCache::writeComplete(handle_t handle, bool abort)
 {
 	lockWorkers();
 	handle_map_t::iterator iter = mWriters.find(handle);
-	if (llverify(iter != mWriters.end()))
+	llassert(iter != mWriters.end());
+	if (iter != mWriters.end())
 	{
 		LLTextureCacheWorker* worker = iter->second;
 		if (worker->complete() || abort)
-- 
GitLab


From 3616ed1e996f276b3ad195e1f2c9b2f87a5b1455 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 13:28:13 -0800
Subject: [PATCH 173/521] sigh, follow-up fix.

---
 indra/llcommon/llallocator_heap_profile.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llcommon/llallocator_heap_profile.cpp b/indra/llcommon/llallocator_heap_profile.cpp
index d01b33c8c40..e50d59fd4b6 100644
--- a/indra/llcommon/llallocator_heap_profile.cpp
+++ b/indra/llcommon/llallocator_heap_profile.cpp
@@ -130,7 +130,7 @@ void LLAllocatorHeapProfile::parse(std::string const & prof_text)
 			}
 		}
 	}
-
+    }
     // *TODO - parse MAPPED_LIBRARIES section here if we're ever interested in it
 }
 
-- 
GitLab


From bada10e2f2fcd15eff4aeec82288c4c64ad258ef Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 13:32:21 -0800
Subject: [PATCH 174/521] CID-114

Checker: MISSING_BREAK
Function: renderBoundingBox(LLDrawable *, int)
File: /indra/newview/llspatialpartition.cpp
---
 indra/newview/llspatialpartition.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp
index 514d8facb44..465221c4942 100644
--- a/indra/newview/llspatialpartition.cpp
+++ b/indra/newview/llspatialpartition.cpp
@@ -2607,6 +2607,7 @@ void renderBoundingBox(LLDrawable* drawable, BOOL set_color = TRUE)
 						break;
 				case LL_PCODE_LEGACY_TREE:
 						gGL.color4f(0,0.5f,0,1);
+						break;
 				default:
 						gGL.color4f(1,0,1,1);
 						break;
-- 
GitLab


From 5aedcb39362b64c22fc5e70135b44d1388cbd5a2 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 13:34:49 -0800
Subject: [PATCH 175/521] CID-112

Checker: MISSING_BREAK
Function: LLViewerObject::processUpdateMessage(LLMessageSystem *, void **, unsigned int, e_object_update_type, LLDataPacker *)
File: /indra/newview/llviewerobject.cpp

not a bug.  commented.
---
 indra/newview/llviewerobject.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index 3c79045cc58..037393a8f9f 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -1172,6 +1172,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,
 					htonmemcpy(collision_plane.mV, &data[count], MVT_LLVector4, sizeof(LLVector4));
 					((LLVOAvatar*)this)->setFootPlane(collision_plane);
 					count += sizeof(LLVector4);
+					// fall through
 				case 60:
 					// this is a terse 32 update
 					// pos
@@ -1211,6 +1212,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,
 					htonmemcpy(collision_plane.mV, &data[count], MVT_LLVector4, sizeof(LLVector4));
 					((LLVOAvatar*)this)->setFootPlane(collision_plane);
 					count += sizeof(LLVector4);
+					// fall through
 				case 32:
 					// this is a terse 16 update
 					this_update_precision = 16;
-- 
GitLab


From c84aa46ac8544704861a1fe12ef217d38e3f6276 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 13:36:27 -0800
Subject: [PATCH 176/521] CID-111

Checker: MISSING_BREAK
Function: LLViewerObject::processUpdateMessage(LLMessageSystem *, void **, unsigned int, e_object_update_type, LLDataPacker *)
File: /indra/newview/llviewerobject.cpp

not a bug.  commented.
---
 indra/newview/llviewerobject.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index 037393a8f9f..886f1d9ef54 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -861,6 +861,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,
 					htonmemcpy(collision_plane.mV, &data[count], MVT_LLVector4, sizeof(LLVector4));
 					((LLVOAvatar*)this)->setFootPlane(collision_plane);
 					count += sizeof(LLVector4);
+					// fall through
 				case 60:
 					this_update_precision = 32;
 					// this is a terse update
@@ -900,6 +901,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,
 					htonmemcpy(collision_plane.mV, &data[count], MVT_LLVector4, sizeof(LLVector4));
 					((LLVOAvatar*)this)->setFootPlane(collision_plane);
 					count += sizeof(LLVector4);
+					// fall through
 				case 32:
 					this_update_precision = 16;
 					test_pos_parent.quantize16(-0.5f*size, 1.5f*size, MIN_HEIGHT, MAX_HEIGHT);
-- 
GitLab


From e67d2bb5556adbccedc9e75443f7ac873c8d8259 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 13:37:45 -0800
Subject: [PATCH 177/521] CID-110

Checker: MISSING_BREAK
Function: LLTransferSourceChannel::updateTransfers()
File: /indra/llmessage/lltransfermanager.cpp

not a bug, commented.
---
 indra/llmessage/lltransfermanager.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/llmessage/lltransfermanager.cpp b/indra/llmessage/lltransfermanager.cpp
index d67911e8e2a..0a71ad95f2b 100644
--- a/indra/llmessage/lltransfermanager.cpp
+++ b/indra/llmessage/lltransfermanager.cpp
@@ -855,6 +855,7 @@ void LLTransferSourceChannel::updateTransfers()
 			break;
 		case LLTS_ERROR:
 			llwarns << "Error in transfer dataCallback!" << llendl;
+			// fall through
 		case LLTS_DONE:
 			// We need to clean up this transfer source.
 			//llinfos << "LLTransferSourceChannel::updateTransfers() " << tsp->getID() << " done" << llendl;
-- 
GitLab


From 4421a51cfeb43b3be6de520acb9f94052fc7e2df Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 13:39:59 -0800
Subject: [PATCH 178/521] CID-109

Checker: MISSING_BREAK
Function: operator <<(std::basic_ostream<char, std::char_traits<char>>&, const LLNameValue &)
File: /indra/llmessage/llnamevalue.cpp
---
 indra/llmessage/llnamevalue.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/llmessage/llnamevalue.cpp b/indra/llmessage/llnamevalue.cpp
index 01e922eba24..43429b0ab37 100644
--- a/indra/llmessage/llnamevalue.cpp
+++ b/indra/llmessage/llnamevalue.cpp
@@ -963,6 +963,7 @@ std::ostream&		operator<<(std::ostream& s, const LLNameValue &a)
 			U64_to_str(*a.mNameValueReference.u64, u64_string, sizeof(u64_string));
 			s << u64_string;
 		}
+		break;
 	case NVT_VEC3:
 		s << *(a.mNameValueReference.vec3);
 		break;
-- 
GitLab


From 481bf863c2194400fec15c3ebaac4a0f4d69ed6d Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 13:49:44 -0800
Subject: [PATCH 179/521] CID-129

Checker: NO_EFFECT
Function: LLTexLayerTemplate::getLayer(unsigned int)
File: /indra/newview/lltexlayer.cpp
---
 indra/newview/lltexlayer.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp
index 84c8b9d5f06..b8419e088ad 100644
--- a/indra/newview/lltexlayer.cpp
+++ b/indra/newview/lltexlayer.cpp
@@ -1860,7 +1860,7 @@ U32 LLTexLayerTemplate::updateWearableCache()
 }
 LLTexLayer* LLTexLayerTemplate::getLayer(U32 i)
 {
-	if (mWearableCache.size() <= i || i < 0)
+	if (mWearableCache.size() <= i)
 	{
 		return NULL;
 	}
-- 
GitLab


From e998513aa5e0aad186a16518e1d693fd2b3cf2b7 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 13:53:40 -0800
Subject: [PATCH 180/521] CID-128

Checker: NO_EFFECT
Function: LLSpatialGroup::~LLSpatialGroup()
File: /indra/newview/llspatialpartition.cpp
---
 indra/newview/llspatialpartition.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp
index 465221c4942..2a57d48f16b 100644
--- a/indra/newview/llspatialpartition.cpp
+++ b/indra/newview/llspatialpartition.cpp
@@ -294,7 +294,7 @@ LLSpatialGroup::~LLSpatialGroup()
 	
 	sNodeCount--;
 
-	if (gGLManager.mHasOcclusionQuery && mOcclusionQuery)
+	if (gGLManager.mHasOcclusionQuery && mOcclusionQuery[LLViewerCamera::sCurCameraID])
 	{
 		sQueryPool.release(mOcclusionQuery[LLViewerCamera::sCurCameraID]);
 	}
-- 
GitLab


From f7f4dae3d82d8ea97f60170c3468fa622639a6ad Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 13:56:53 -0800
Subject: [PATCH 181/521] CID-127

Checker: NO_EFFECT
Function: LLOctreeNode<LLDrawable>::updateMinMax()
File: /indra/llmath/lloctree.h
---
 indra/llmath/lloctree.h | 1 -
 1 file changed, 1 deletion(-)

diff --git a/indra/llmath/lloctree.h b/indra/llmath/lloctree.h
index ba8776690a3..2f34fb1bb04 100644
--- a/indra/llmath/lloctree.h
+++ b/indra/llmath/lloctree.h
@@ -183,7 +183,6 @@ class LLOctreeNode : public LLTreeNode<T>
 		{
 			mMax.mdV[i] = mCenter.mdV[i] + mSize.mdV[i];
 			mMin.mdV[i] = mCenter.mdV[i] - mSize.mdV[i];
-			mCenter.mdV[i] = mCenter.mdV[i];
 		}
 	}
 
-- 
GitLab


From 132cb6dbfe256cbf1a7b7558b091a63f99a364be Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 13:58:04 -0800
Subject: [PATCH 182/521] CID-126

Checker: NO_EFFECT
Function: LLFontBitmapCache::getImageGL(unsigned int) const
File: /indra/llrender/llfontbitmapcache.cpp
---
 indra/llrender/llfontbitmapcache.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llrender/llfontbitmapcache.cpp b/indra/llrender/llfontbitmapcache.cpp
index f01878642a4..cc9a012f98a 100644
--- a/indra/llrender/llfontbitmapcache.cpp
+++ b/indra/llrender/llfontbitmapcache.cpp
@@ -72,7 +72,7 @@ LLImageRaw *LLFontBitmapCache::getImageRaw(U32 bitmap_num) const
 
 LLImageGL *LLFontBitmapCache::getImageGL(U32 bitmap_num) const
 {
-	if ((bitmap_num < 0) || (bitmap_num >= mImageGLVec.size()))
+	if (bitmap_num >= mImageGLVec.size())
 		return NULL;
 
 	return mImageGLVec[bitmap_num];
-- 
GitLab


From ccacd7d7acb1a24b754008cd35e9552fed93a1d1 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 13:58:48 -0800
Subject: [PATCH 183/521] CID-125

Checker: NO_EFFECT
Function: LLFontBitmapCache::getImageRaw(unsigned int) const
File: /indra/llrender/llfontbitmapcache.cpp
---
 indra/llrender/llfontbitmapcache.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llrender/llfontbitmapcache.cpp b/indra/llrender/llfontbitmapcache.cpp
index cc9a012f98a..fa231c9e6ad 100644
--- a/indra/llrender/llfontbitmapcache.cpp
+++ b/indra/llrender/llfontbitmapcache.cpp
@@ -64,7 +64,7 @@ void LLFontBitmapCache::init(S32 num_components,
 
 LLImageRaw *LLFontBitmapCache::getImageRaw(U32 bitmap_num) const
 {
-	if ((bitmap_num < 0) || (bitmap_num >= mImageRawVec.size()))
+	if (bitmap_num >= mImageRawVec.size())
 		return NULL;
 
 	return mImageRawVec[bitmap_num];
-- 
GitLab


From d3f361752e5988800228cff11fcc50289b2f88c7 Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Wed, 27 Jan 2010 14:00:02 -0800
Subject: [PATCH 184/521] Plumb getting and setting the system audio mute
 through appviewer

Next step is to actually implement the OS-specific calls to do so.
Until then, behavior is the same; the status bar will mute/unmute
the "master" audio for the viewer *only*
---
 indra/newview/llappviewer.cpp       | 14 +++++++++++++-
 indra/newview/llappviewer.h         |  4 ++++
 indra/newview/llappviewermacosx.cpp | 14 ++++++++++++++
 indra/newview/llappviewermacosx.h   |  3 +++
 indra/newview/llstatusbar.cpp       |  6 +++---
 5 files changed, 37 insertions(+), 4 deletions(-)

diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 0e248ff88bf..9aa15789edc 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -2685,7 +2685,7 @@ void LLAppViewer::handleViewerCrash()
 		gMessageSystem->stopLogging();
 	}
 
-	LLWorld::getInstance()->getInfo(gDebugInfo);
+	if (LLWorld::instanceExists()) LLWorld::getInstance()->getInfo(gDebugInfo);
 
 	// Close the debug file
 	pApp->writeDebugInfo();
@@ -4405,3 +4405,15 @@ void LLAppViewer::launchUpdater()
 	// LLAppViewer::instance()->forceQuit();
 }
 
+
+//virtual
+void LLAppViewer::setMasterSystemAudioMute(bool mute)
+{
+	gSavedSettings.setBOOL("MuteAudio", mute);
+}
+
+//virtual
+bool LLAppViewer::getMasterSystemAudioMute()
+{
+	return gSavedSettings.getBOOL("MuteAudio");
+}
diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h
index 40e74061b54..a011c5ebfd6 100644
--- a/indra/newview/llappviewer.h
+++ b/indra/newview/llappviewer.h
@@ -168,6 +168,10 @@ class LLAppViewer : public LLApp
 
 	void purgeCache(); // Clear the local cache. 
 	
+	// mute/unmute the system's master audio
+	virtual void setMasterSystemAudioMute(bool mute);
+	virtual bool getMasterSystemAudioMute();
+	
 protected:
 	virtual bool initWindow(); // Initialize the viewer's window.
 	virtual bool initLogging(); // Initialize log files, logging system, return false on failure.
diff --git a/indra/newview/llappviewermacosx.cpp b/indra/newview/llappviewermacosx.cpp
index 1282e437f2f..cc38a0940cb 100644
--- a/indra/newview/llappviewermacosx.cpp
+++ b/indra/newview/llappviewermacosx.cpp
@@ -444,6 +444,20 @@ std::string LLAppViewerMacOSX::generateSerialNumber()
 	return serial_md5;
 }
 
+//virtual
+void LLAppViewerMacOSX::setMasterSystemAudioMute(bool mute)
+{
+	// XXX TODO: make this actually set the OS's audio mute state
+	gSavedSettings.setBOOL("MuteAudio", mute);
+}
+
+//virtual
+bool LLAppViewerMacOSX::getMasterSystemAudioMute()
+{
+	// XXX TODO: make this actually get the OS's audio mute state
+	return gSavedSettings.getBOOL("MuteAudio");
+}
+
 OSErr AEGURLHandler(const AppleEvent *messagein, AppleEvent *reply, long refIn)
 {
 	OSErr result = noErr;
diff --git a/indra/newview/llappviewermacosx.h b/indra/newview/llappviewermacosx.h
index bc841fc3a72..cbf7e6c2095 100644
--- a/indra/newview/llappviewermacosx.h
+++ b/indra/newview/llappviewermacosx.h
@@ -48,6 +48,9 @@ class LLAppViewerMacOSX : public LLAppViewer
 	//
 	virtual bool init();			// Override to do application initialization
 
+	// mute/unmute the system's master audio
+	virtual void setMasterSystemAudioMute(bool mute);
+	virtual bool getMasterSystemAudioMute();
 
 protected:
 	virtual bool restoreErrorTrap();
diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp
index 8a36475510f..bff32af228c 100644
--- a/indra/newview/llstatusbar.cpp
+++ b/indra/newview/llstatusbar.cpp
@@ -354,7 +354,7 @@ void LLStatusBar::refresh()
 	childSetEnabled("stat_btn", net_stats_visible);
 
 	// update the master volume button state
-	BOOL mute_audio = gSavedSettings.getBOOL("MuteAudio");
+	bool mute_audio = LLAppViewer::instance()->getMasterSystemAudioMute();
 	mBtnVolume->setToggleState(mute_audio);
 }
 
@@ -523,8 +523,8 @@ void LLStatusBar::onMouseEnterVolume(LLUICtrl* ctrl)
 static void onClickVolume(void* data)
 {
 	// toggle the master mute setting
-	BOOL mute_audio = gSavedSettings.getBOOL("MuteAudio");
-	gSavedSettings.setBOOL("MuteAudio", !mute_audio);
+	bool mute_audio = LLAppViewer::instance()->getMasterSystemAudioMute();
+	LLAppViewer::instance()->setMasterSystemAudioMute(!mute_audio);	
 }
 
 // sets the static variables necessary for the date
-- 
GitLab


From e70d7fca4b55d15547082a67101d5f8935d3a40a Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 14:04:02 -0800
Subject: [PATCH 185/521] CID-155

Checker: OVERRUN_DYNAMIC
Function: LLImageGL::updatePickMask(int, int, const unsigned char *)
File: /indra/llrender/llimagegl.cpp

not a bug, AFAICT.
---
 indra/llrender/llimagegl.cpp | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp
index 46478ba3c95..8bcc4723ae2 100644
--- a/indra/llrender/llimagegl.cpp
+++ b/indra/llrender/llimagegl.cpp
@@ -1716,10 +1716,7 @@ void LLImageGL::updatePickMask(S32 width, S32 height, const U8* data_in)
 			{
 				U32 pick_idx = pick_bit/8;
 				U32 pick_offset = pick_bit%8;
-				if (pick_idx >= size)
-				{
-					llerrs << "WTF?" << llendl;
-				}
+				llassert(pick_idx < size);
 
 				mPickMask[pick_idx] |= 1 << pick_offset;
 			}
-- 
GitLab


From 78f725cb97cd05e5c716b0014b3cb4d30066d1ca Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 14:08:40 -0800
Subject: [PATCH 186/521] CID-161

Checker: OVERRUN_STATIC
Function: LLViewerLogin::setGridChoice(EGridInfo)
File: /indra/newview/llviewernetwork.cpp

not a bug.  clarified for coverity.
---
 indra/newview/llviewernetwork.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/newview/llviewernetwork.cpp b/indra/newview/llviewernetwork.cpp
index d7b55d7e978..987d23630a9 100644
--- a/indra/newview/llviewernetwork.cpp
+++ b/indra/newview/llviewernetwork.cpp
@@ -169,6 +169,7 @@ void LLViewerLogin::setGridChoice(EGridInfo grid)
 	if(grid < 0 || grid >= GRID_INFO_COUNT)
 	{
 		llerrs << "Invalid grid index specified." << llendl;
+		return;
 	}
 
 	if(mGridChoice != grid || gSavedSettings.getS32("ServerChoice") != grid)
-- 
GitLab


From 68422d9505ecf78e793bb5fb29eb8db58e6b6f89 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 14:15:02 -0800
Subject: [PATCH 187/521] CID 159 CID 158 CID 157

Checker: OVERRUN_STATIC
Function: LLVertexBuffer::drawRange(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const
File: /indra/llrender/llvertexbuffer.cpp
---
 indra/llrender/llvertexbuffer.cpp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp
index 572ae139099..ecfe845b342 100644
--- a/indra/llrender/llvertexbuffer.cpp
+++ b/indra/llrender/llvertexbuffer.cpp
@@ -237,7 +237,7 @@ void LLVertexBuffer::drawRange(U32 mode, U32 start, U32 end, U32 count, U32 indi
 		llerrs << "Wrong vertex buffer bound." << llendl;
 	}
 
-	if (mode > LLRender::NUM_MODES)
+	if (mode >= LLRender::NUM_MODES)
 	{
 		llerrs << "Invalid draw mode: " << mode << llendl;
 		return;
@@ -267,7 +267,7 @@ void LLVertexBuffer::draw(U32 mode, U32 count, U32 indices_offset) const
 		llerrs << "Wrong vertex buffer bound." << llendl;
 	}
 
-	if (mode > LLRender::NUM_MODES)
+	if (mode >= LLRender::NUM_MODES)
 	{
 		llerrs << "Invalid draw mode: " << mode << llendl;
 		return;
@@ -292,7 +292,7 @@ void LLVertexBuffer::drawArrays(U32 mode, U32 first, U32 count) const
 		llerrs << "Wrong vertex buffer bound." << llendl;
 	}
 
-	if (mode > LLRender::NUM_MODES)
+	if (mode >= LLRender::NUM_MODES)
 	{
 		llerrs << "Invalid draw mode: " << mode << llendl;
 		return;
-- 
GitLab


From f257f26746eb68e5d192021120e1818800a626a3 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 14:27:57 -0800
Subject: [PATCH 188/521] CID 201

Checker: RESOURCE_LEAK
Function: LLInitialWearablesFetch::processWearablesMessage()
File: /indra/newview/llagentwearables.cpp
---
 indra/newview/llagentwearables.cpp | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index c21cdf95085..acb9e2ebb15 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -2527,8 +2527,13 @@ void LLInitialWearablesFetch::processWearablesMessage()
 			{
 				llinfos << "Invalid wearable, type " << wearable_data->mType << " itemID "
 				<< wearable_data->mItemID << " assetID " << wearable_data->mAssetID << llendl;
+				delete wearable_data;
 			}
 		}
+		else
+		{
+			delete wearable_data;
+		}
 
 		// Add all current attachments to the requested items as well.
 		LLVOAvatarSelf* avatar = gAgent.getAvatarObject();
-- 
GitLab


From 744def1ae9520a5085057b94f7053bca1b03ddee Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 14:34:07 -0800
Subject: [PATCH 189/521] CID-200

Checker: RESOURCE_LEAK
Function: LLPanelEstateInfo::onKickUserCommit(const std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char>>>> &, std::vector<LLUUID, std::allocator<LLUUID>>&)
File: /indra/newview/llfloaterregioninfo.cpp

we don't use this structure, all the way back to 1.23
---
 indra/newview/llfloaterregioninfo.cpp | 10 ----------
 1 file changed, 10 deletions(-)

diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp
index 85353ce308f..d54736e942b 100644
--- a/indra/newview/llfloaterregioninfo.cpp
+++ b/indra/newview/llfloaterregioninfo.cpp
@@ -1521,11 +1521,6 @@ void LLPanelEstateInfo::onClickRemoveEstateManager(void* user_data)
 //---------------------------------------------------------------------------
 // Kick from estate methods
 //---------------------------------------------------------------------------
-struct LLKickFromEstateInfo
-{
-	LLPanelEstateInfo *mEstatePanelp;
-	LLUUID      mAgentID;
-};
 
 void LLPanelEstateInfo::onClickKickUser()
 {
@@ -1547,11 +1542,6 @@ void LLPanelEstateInfo::onKickUserCommit(const std::vector<std::string>& names,
 		return;
 	}
 
-	//keep track of what user they want to kick and other misc info
-	LLKickFromEstateInfo *kick_info = new LLKickFromEstateInfo();
-	kick_info->mEstatePanelp = this;
-	kick_info->mAgentID     = ids[0];
-
 	//Bring up a confirmation dialog
 	LLSD args;
 	args["EVIL_USER"] = names[0];
-- 
GitLab


From 0345701368d9c125c801b98d8f8c0621429e90b5 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 14:37:59 -0800
Subject: [PATCH 190/521] CID-199

Checker: RESOURCE_LEAK
Function: LLTaskInvFVBridge::removeItem()
File: /indra/newview/llpanelobjectinventory.cpp

we haven't actually used this new()'d structure, all the way back to 1.23 :/
---
 indra/newview/llpanelobjectinventory.cpp | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index d4376550d6c..5c5c35141ea 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -463,10 +463,6 @@ BOOL LLTaskInvFVBridge::removeItem()
 			}
 			else
 			{
-				remove_data_t* data = new remove_data_t;
-				data->first = mPanel;
-				data->second.first = mPanel->getTaskUUID();
-				data->second.second.push_back(mUUID);
 				LLSD payload;
 				payload["task_id"] = mPanel->getTaskUUID();
 				payload["inventory_ids"].append(mUUID);
-- 
GitLab


From da3ee22daad52806bbf788a4acee7e7a653ef7d3 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 14:39:59 -0800
Subject: [PATCH 191/521] CID-198

Checker: RESOURCE_LEAK
Function: LLTextureFetchWorker::doWork(int)
File: /indra/newview/lltexturefetch.cpp
---
 indra/newview/lltexturefetch.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index 5ce68842390..404b79bfaf9 100644
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -661,6 +661,8 @@ bool LLTextureFetchWorker::doWork(S32 param)
 				}
 				setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
 				mState = SEND_HTTP_REQ;
+				delete responder;
+				responder = NULL;
 			}
 		}
 
-- 
GitLab


From 45e15b0b50bca05aba333d9f2a41748bfc1e9496 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 14:42:32 -0800
Subject: [PATCH 192/521] CID-197

Checker: RESOURCE_LEAK
Function: LLToolDragAndDrop::giveInventoryCategory(const LLUUID &, LLInventoryCategory *, const LLUUID &)
File: /indra/newview/lltooldraganddrop.cpp
---
 indra/newview/lltooldraganddrop.cpp | 14 --------------
 1 file changed, 14 deletions(-)

diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp
index 4420b046d8f..125c62474ec 100644
--- a/indra/newview/lltooldraganddrop.cpp
+++ b/indra/newview/lltooldraganddrop.cpp
@@ -1404,18 +1404,6 @@ void LLToolDragAndDrop::dropInventory(LLViewerObject* hit_obj,
 	gFloaterTools->dirty();
 }
 
-struct LLGiveInventoryInfo
-{
-	LLUUID mToAgentID;
-	LLUUID mInventoryObjectID;
-	LLUUID mIMSessionID;
-	LLGiveInventoryInfo(const LLUUID& to_agent, const LLUUID& obj_id, const LLUUID &im_session_id = LLUUID::null) :
-		mToAgentID(to_agent), 
-		mInventoryObjectID(obj_id),
-		mIMSessionID(im_session_id)
-	{}
-};
-
 void LLToolDragAndDrop::giveInventory(const LLUUID& to_agent,
 									  LLInventoryItem* item,
 									  const LLUUID& im_session_id)
@@ -1584,8 +1572,6 @@ void LLToolDragAndDrop::giveInventoryCategory(const LLUUID& to_agent,
 		}
 		else 
 		{
-			LLGiveInventoryInfo* info = NULL;
-			info = new LLGiveInventoryInfo(to_agent, cat->getUUID(), im_session_id);
 			LLSD args;
 			args["COUNT"] = llformat("%d",giveable.countNoCopy());
 			LLSD payload;
-- 
GitLab


From f8f34c14c4913d008182a5853613ffbf154d9a26 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 14:45:44 -0800
Subject: [PATCH 193/521] follow-up fix to leak fix.

---
 indra/newview/llagentwearables.cpp | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index acb9e2ebb15..401d74c4efd 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -2530,10 +2530,6 @@ void LLInitialWearablesFetch::processWearablesMessage()
 				delete wearable_data;
 			}
 		}
-		else
-		{
-			delete wearable_data;
-		}
 
 		// Add all current attachments to the requested items as well.
 		LLVOAvatarSelf* avatar = gAgent.getAvatarObject();
-- 
GitLab


From b6684dce80db985803c7866c6955d1ca896b1b5c Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 14:54:06 -0800
Subject: [PATCH 194/521] CID-196

Checker: RESOURCE_LEAK
Function: process_improved_im(LLMessageSystem *, void **)
File: /indra/newview/llviewermessage.cpp

partial fix.  either coverity doesn't grok that the remaining case gets freed way down the line by the callbacks, or.. it really doesnt.
---
 indra/newview/llpanelgroup.cpp    | 8 ++++----
 indra/newview/llviewermessage.cpp | 4 ++++
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp
index 1d447a22d73..ac58c35b060 100644
--- a/indra/newview/llpanelgroup.cpp
+++ b/indra/newview/llpanelgroup.cpp
@@ -560,10 +560,10 @@ void LLPanelGroup::chatGroup()
 }
 
 void LLPanelGroup::showNotice(const std::string& subject,
-							  const std::string& message,
-							  const bool& has_inventory,
-							  const std::string& inventory_name,
-							  LLOfferInfo* inventory_offer)
+			      const std::string& message,
+			      const bool& has_inventory,
+			      const std::string& inventory_name,
+			      LLOfferInfo* inventory_offer)
 {
 	LLPanelGroupNotices* panel_notices = findChild<LLPanelGroupNotices>("group_notices_tab_panel");
 	if(!panel_notices)
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 36710e7532e..764c54da1ae 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -1987,6 +1987,10 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 				
 				LLPanelGroup::showNotice(subj,mes,group_id,has_inventory,item_name,info);
 			}
+			else
+			{
+				delete info;
+			}
 		}
 		break;
 	case IM_GROUP_INVITATION:
-- 
GitLab


From 576c69dfd9b4418263caa7e14d2d3e52ea8cf5e4 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 14:57:02 -0800
Subject: [PATCH 195/521] CID-196

Checker: RESOURCE_LEAK
Function: process_improved_im(LLMessageSystem *, void **)
File: /indra/newview/llviewermessage.cpp
---
 indra/newview/llviewermessage.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 764c54da1ae..29b7324a0d6 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -2051,6 +2051,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 				if (sizeof(offer_agent_bucket_t) != binary_bucket_size)
 				{
 					LL_WARNS("Messaging") << "Malformed inventory offer from agent" << LL_ENDL;
+					delete info;
 					break;
 				}
 				bucketp = (struct offer_agent_bucket_t*) &binary_bucket[0];
@@ -2062,6 +2063,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 				if (sizeof(S8) != binary_bucket_size)
 				{
 					LL_WARNS("Messaging") << "Malformed inventory offer from object" << LL_ENDL;
+					delete info;
 					break;
 				}
 				info->mType = (LLAssetType::EType) binary_bucket[0];
-- 
GitLab


From 7dc1e2eedbf29396b6614f8e7e39b7938dd5e301 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 15:04:12 -0800
Subject: [PATCH 196/521] CID-195

Checker: RESOURCE_LEAK
Function: LLAgentWearables::addLocalTextureObject(EWearableType, LLVOAvatarDefines::ETextureIndex, unsigned int)
File: /indra/newview/llagentwearables.cpp
---
 indra/newview/llagentwearables.cpp | 3 ++-
 indra/newview/llwearable.cpp       | 4 ++--
 indra/newview/llwearable.h         | 2 +-
 3 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 401d74c4efd..b0ff3a56261 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -1130,8 +1130,9 @@ void LLAgentWearables::addLocalTextureObject(const EWearableType wearable_type,
 	if (!wearable)
 	{
 		llerrs << "Tried to add local texture object to invalid wearable with type " << wearable_type << " and index " << wearable_index << llendl;
+		return;
 	}
-	LLLocalTextureObject* lto = new LLLocalTextureObject();
+	LLLocalTextureObject lto;
 	wearable->setLocalTextureObject(texture_type, lto);
 }
 
diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp
index b789bd3650a..8cfb8b11035 100644
--- a/indra/newview/llwearable.cpp
+++ b/indra/newview/llwearable.cpp
@@ -818,7 +818,7 @@ const LLLocalTextureObject* LLWearable::getConstLocalTextureObject(S32 index) co
 	return NULL;
 }
 
-void LLWearable::setLocalTextureObject(S32 index, LLLocalTextureObject *lto)
+void LLWearable::setLocalTextureObject(S32 index, LLLocalTextureObject &lto)
 {
 	if( mTEMap.find(index) != mTEMap.end() )
 	{
@@ -826,7 +826,7 @@ void LLWearable::setLocalTextureObject(S32 index, LLLocalTextureObject *lto)
 	}
 	if( lto )
 	{
-		mTEMap[index] = new LLLocalTextureObject(*lto);
+		mTEMap[index] = new LLLocalTextureObject(lto);
 	}
 }
 
diff --git a/indra/newview/llwearable.h b/indra/newview/llwearable.h
index 7a579b248e6..dae983bcf33 100644
--- a/indra/newview/llwearable.h
+++ b/indra/newview/llwearable.h
@@ -114,7 +114,7 @@ class LLWearable
 	LLLocalTextureObject* getLocalTextureObject(S32 index);
 	const LLLocalTextureObject* getConstLocalTextureObject(S32 index) const;
 
-	void				setLocalTextureObject(S32 index, LLLocalTextureObject *lto);
+	void				setLocalTextureObject(S32 index, LLLocalTextureObject &lto);
 	void				addVisualParam(LLVisualParam *param);
 	void				setVisualParams();
 	void 				setVisualParamWeight(S32 index, F32 value, BOOL upload_bake);
-- 
GitLab


From c5abe04923c8968c38fbca67182d7e3fbd0723d9 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 15:07:04 -0800
Subject: [PATCH 197/521] CID-188

Checker: RESOURCE_LEAK
Function: LLTemplateParser::LLTemplateParser(LLTemplateTokenizer &)
File: /indra/llmessage/llmessagetemplateparser.cpp
---
 indra/llmessage/llmessagetemplateparser.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/indra/llmessage/llmessagetemplateparser.cpp b/indra/llmessage/llmessagetemplateparser.cpp
index 283547ea009..2ddbf3e0df0 100644
--- a/indra/llmessage/llmessagetemplateparser.cpp
+++ b/indra/llmessage/llmessagetemplateparser.cpp
@@ -403,6 +403,10 @@ LLTemplateParser::LLTemplateParser(LLTemplateTokenizer & tokens):
 		{
 			mMessages.push_back(templatep);
 		}
+		else
+		{
+			delete templatep;
+		}
 	}
 
 	if(!tokens.wantEOF())
-- 
GitLab


From 635290cc8774f0db67d2ee633d287ecf7d767907 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 15:09:25 -0800
Subject: [PATCH 198/521] CID-186

Checker: RESOURCE_LEAK
Function: LLStringUtilBase<unsigned int>::addCRLF(std::basic_string<unsigned int, std::char_traits<unsigned int>, std::allocator<unsigned int>>&)
File: /indra/llcommon/llstring.h
---
 indra/llcommon/llstring.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/llcommon/llstring.h b/indra/llcommon/llstring.h
index 31e70e0fe4d..62cedcde4e4 100644
--- a/indra/llcommon/llstring.h
+++ b/indra/llcommon/llstring.h
@@ -882,6 +882,7 @@ void LLStringUtilBase<T>::addCRLF(std::basic_string<T>& string)
 		}
 
 		string.assign(t, size);
+		delete[] t;
 	}
 }
 
-- 
GitLab


From fa886566b66639d65db4a7d4399cdbf2552a3d50 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 15:10:34 -0800
Subject: [PATCH 199/521] CID-184

Checker: RESOURCE_LEAK
Function: LLPluginProcessChild::receiveMessageRaw(const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&)
File: /indra/llplugin/llpluginprocesschild.cpp
---
 indra/llplugin/llpluginprocesschild.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/llplugin/llpluginprocesschild.cpp b/indra/llplugin/llpluginprocesschild.cpp
index 07fc82c770f..11c924cadfd 100644
--- a/indra/llplugin/llpluginprocesschild.cpp
+++ b/indra/llplugin/llpluginprocesschild.cpp
@@ -359,6 +359,7 @@ void LLPluginProcessChild::receiveMessageRaw(const std::string &message)
 					else
 					{
 						LL_WARNS("Plugin") << "Couldn't create a shared memory segment!" << LL_ENDL;
+						delete region;
 					}
 				}
 				
-- 
GitLab


From 43218577740fa97a99160008568e6e0a36f892e5 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 15:37:28 -0800
Subject: [PATCH 200/521] CID-220

Checker: STREAM_FORMAT_STATE
Function: encode_character(std::basic_ostream<char, std::char_traits<char>>&, char)
File: /indra/llcommon/lluri.cpp
---
 indra/llcommon/lluri.cpp | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/indra/llcommon/lluri.cpp b/indra/llcommon/lluri.cpp
index f6e8f01f0ef..9d4f3a98f04 100644
--- a/indra/llcommon/lluri.cpp
+++ b/indra/llcommon/lluri.cpp
@@ -46,10 +46,21 @@
 
 void encode_character(std::ostream& ostr, std::string::value_type val)
 {
-	ostr << "%" << std::uppercase << std::hex << std::setw(2) << std::setfill('0') 
+	ostr << "%"
+
+	     << std::uppercase
+	     << std::hex
+	     << std::setw(2)
+	     << std::setfill('0') 
+
 	     // VWR-4010 Cannot cast to U32 because sign-extension on 
 	     // chars > 128 will result in FFFFFFC3 instead of F3.
-	     << static_cast<S32>(static_cast<U8>(val));
+	     << static_cast<S32>(static_cast<U8>(val))
+
+		// reset stream state
+	     << std::nouppercase
+	     << std::dec
+	     << std::setfill(' ');
 }
 
 // static
-- 
GitLab


From a7c3fde789b0f15f0ccf650e59dc352451fc4e4a Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 15:45:07 -0800
Subject: [PATCH 201/521] partial fix for CID-219

Checker: STREAM_FORMAT_STATE
Function: LLDate::toStream(std::basic_ostream<char, std::char_traits<char>>&) const
File: /indra/llcommon/lldate.cpp
---
 indra/llcommon/lldate.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/indra/llcommon/lldate.cpp b/indra/llcommon/lldate.cpp
index ca7e471bf25..e3323fcfbf8 100644
--- a/indra/llcommon/lldate.cpp
+++ b/indra/llcommon/lldate.cpp
@@ -152,7 +152,8 @@ void LLDate::toStream(std::ostream& s) const
 		s << '.' << std::setw(2)
 		  << (int)(exp_time.tm_usec / (LL_APR_USEC_PER_SEC / 100));
 	}
-	s << 'Z';
+	s << 'Z'
+	  << setfill(' ');
 }
 
 bool LLDate::split(S32 *year, S32 *month, S32 *day, S32 *hour, S32 *min, S32 *sec) const
-- 
GitLab


From 9e2ba40d13cd03525ce137435fd817a55758bc8c Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 15:45:41 -0800
Subject: [PATCH 202/521] less dumb partial fix for CID-219

---
 indra/llcommon/lldate.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llcommon/lldate.cpp b/indra/llcommon/lldate.cpp
index e3323fcfbf8..de7f2ead74e 100644
--- a/indra/llcommon/lldate.cpp
+++ b/indra/llcommon/lldate.cpp
@@ -153,7 +153,7 @@ void LLDate::toStream(std::ostream& s) const
 		  << (int)(exp_time.tm_usec / (LL_APR_USEC_PER_SEC / 100));
 	}
 	s << 'Z'
-	  << setfill(' ');
+	  << std::setfill(' ');
 }
 
 bool LLDate::split(S32 *year, S32 *month, S32 *day, S32 *hour, S32 *min, S32 *sec) const
-- 
GitLab


From e133a9824695d0286ca7717b1eb6a1c57748b898 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 15:49:22 -0800
Subject: [PATCH 203/521] CID-227

Checker: STRING_OVERFLOW
Function: CProcessor::AnalyzeIntelProcessor()
File: /indra/llcommon/llprocessor.cpp
---
 indra/llcommon/llprocessor.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/indra/llcommon/llprocessor.cpp b/indra/llcommon/llprocessor.cpp
index 469e544b16f..8a4a4a8f9af 100644
--- a/indra/llcommon/llprocessor.cpp
+++ b/indra/llcommon/llprocessor.cpp
@@ -281,7 +281,8 @@ bool CProcessor::AnalyzeIntelProcessor()
 	// already have a string here from GetCPUInfo().  JC
 	if ( CPUInfo.uiBrandID < LL_ARRAY_SIZE(INTEL_BRAND) )
 	{
-		strcpy(CPUInfo.strBrandID, INTEL_BRAND[CPUInfo.uiBrandID]);
+		strncpy(CPUInfo.strBrandID, INTEL_BRAND[CPUInfo.uiBrandID], sizeof(CPUInfo.strBrandID)-1);
+		CPUInfo.strBrandID[sizeof(CPUInfo.strBrandID)-1]='\0';
 
 		if (CPUInfo.uiBrandID == 3 && CPUInfo.uiModel == 6)
 		{
-- 
GitLab


From e7c17cb29b63fb85bf345133ed78a026a224af30 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 15:53:56 -0800
Subject: [PATCH 204/521] a follow-up fix.

---
 indra/newview/llwearable.cpp | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp
index 8cfb8b11035..d093031beae 100644
--- a/indra/newview/llwearable.cpp
+++ b/indra/newview/llwearable.cpp
@@ -824,10 +824,7 @@ void LLWearable::setLocalTextureObject(S32 index, LLLocalTextureObject &lto)
 	{
 		mTEMap.erase(index);
 	}
-	if( lto )
-	{
-		mTEMap[index] = new LLLocalTextureObject(lto);
-	}
+	mTEMap[index] = new LLLocalTextureObject(lto);
 }
 
 
-- 
GitLab


From 94e5625f2c5bfef9d6cd7e5ffdda3a0e64717d93 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 15:58:02 -0800
Subject: [PATCH 205/521] CID-255

Checker: UNINIT
Function: process_improved_im(LLMessageSystem *, void **)
File: /indra/newview/llviewermessage.cpp
---
 indra/newview/llviewermessage.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 29b7324a0d6..aa77c9602fe 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -1933,7 +1933,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 
 			if (has_inventory)
 			{
-				info = new LLOfferInfo;
+				info = new LLOfferInfo();
 				
 				info->mIM = IM_GROUP_NOTICE;
 				info->mFromID = from_id;
-- 
GitLab


From b3c1d0dc07a16b47626968ae55b5e6a725d8d722 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 15:59:56 -0800
Subject: [PATCH 206/521] CID-254

Checker: UNINIT
Function: LLCacheName::Impl::processUUIDRequest(LLMessageSystem *, bool)
File: /indra/llmessage/llcachename.cpp
---
 indra/llmessage/llcachename.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llmessage/llcachename.cpp b/indra/llmessage/llcachename.cpp
index 3078d80552b..dbec2816c84 100644
--- a/indra/llmessage/llcachename.cpp
+++ b/indra/llmessage/llcachename.cpp
@@ -125,7 +125,7 @@ class ReplySender
 };
 
 ReplySender::ReplySender(LLMessageSystem* msg)
-	: mMsg(msg), mPending(false)
+	: mMsg(msg), mPending(false), mCurrIsGroup(false)
 { }
 
 ReplySender::~ReplySender()
-- 
GitLab


From 1afc7ecc142c9ec066e5761497a4011698b50c8e Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 16:11:32 -0800
Subject: [PATCH 207/521] CID-388

Checker: UNINIT_CTOR
Function: LLPanelPlaceInfo::LLPanelPlaceInfo()
File: /indra/newview/llpanelplaceinfo.cpp
---
 indra/newview/llpanellandmarkinfo.cpp | 2 +-
 indra/newview/llpanellandmarkinfo.h   | 2 +-
 indra/newview/llpanelplaceinfo.cpp    | 3 ++-
 indra/newview/llpanelplaceinfo.h      | 8 +++++---
 indra/newview/llpanelplaceprofile.cpp | 2 +-
 indra/newview/llpanelplaceprofile.h   | 2 +-
 6 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp
index c792fd4fe3a..7a17d4a1f02 100644
--- a/indra/newview/llpanellandmarkinfo.cpp
+++ b/indra/newview/llpanellandmarkinfo.cpp
@@ -108,7 +108,7 @@ void LLPanelLandmarkInfo::resetLocation()
 }
 
 // virtual
-void LLPanelLandmarkInfo::setInfoType(INFO_TYPE type)
+void LLPanelLandmarkInfo::setInfoType(EInfoType type)
 {
 	LLPanel* landmark_info_panel = getChild<LLPanel>("landmark_info_panel");
 
diff --git a/indra/newview/llpanellandmarkinfo.h b/indra/newview/llpanellandmarkinfo.h
index 2a9949ae41c..b3dc3f5ad9d 100644
--- a/indra/newview/llpanellandmarkinfo.h
+++ b/indra/newview/llpanellandmarkinfo.h
@@ -49,7 +49,7 @@ class LLPanelLandmarkInfo : public LLPanelPlaceInfo
 
 	/*virtual*/ void resetLocation();
 
-	/*virtual*/ void setInfoType(INFO_TYPE type);
+	/*virtual*/ void setInfoType(EInfoType type);
 
 	/*virtual*/ void processParcelInfo(const LLParcelData& parcel_data);
 
diff --git a/indra/newview/llpanelplaceinfo.cpp b/indra/newview/llpanelplaceinfo.cpp
index 5f75668722e..9ebc8ca2b93 100644
--- a/indra/newview/llpanelplaceinfo.cpp
+++ b/indra/newview/llpanelplaceinfo.cpp
@@ -58,6 +58,7 @@ LLPanelPlaceInfo::LLPanelPlaceInfo()
 	mPosRegion(),
 	mScrollingPanelMinHeight(0),
 	mScrollingPanelWidth(0),
+	mInfoType(UNKNOWN),
 	mScrollingPanel(NULL),
 	mScrollContainer(NULL)
 {}
@@ -120,7 +121,7 @@ void LLPanelPlaceInfo::setParcelID(const LLUUID& parcel_id)
 }
 
 //virtual
-void LLPanelPlaceInfo::setInfoType(INFO_TYPE type)
+void LLPanelPlaceInfo::setInfoType(EInfoType type)
 {
 	mTitle->setText(mCurrentTitle);
 
diff --git a/indra/newview/llpanelplaceinfo.h b/indra/newview/llpanelplaceinfo.h
index 3091f7ed24a..deedbd2b0f6 100644
--- a/indra/newview/llpanelplaceinfo.h
+++ b/indra/newview/llpanelplaceinfo.h
@@ -54,8 +54,10 @@ class LLViewerInventoryCategory;
 class LLPanelPlaceInfo : public LLPanel, LLRemoteParcelInfoObserver
 {
 public:
-	enum INFO_TYPE
+	enum EInfoType
 	{
+		UNKNOWN,
+
 		AGENT,
 		CREATE_LANDMARK,
 		LANDMARK,
@@ -79,7 +81,7 @@ class LLPanelPlaceInfo : public LLPanel, LLRemoteParcelInfoObserver
 	// Depending on how the panel was triggered
 	// (from landmark or current location, or other)
 	// sets a corresponding title and contents.
-	virtual void setInfoType(INFO_TYPE type);
+	virtual void setInfoType(EInfoType type);
 
 	// Requests remote parcel info by parcel ID.
 	void sendParcelInfoRequest();
@@ -114,7 +116,7 @@ class LLPanelPlaceInfo : public LLPanel, LLRemoteParcelInfoObserver
 	std::string				mCurrentTitle;
 	S32						mScrollingPanelMinHeight;
 	S32						mScrollingPanelWidth;
-	INFO_TYPE 				mInfoType;
+	EInfoType 				mInfoType;
 
 	LLScrollContainer*		mScrollContainer;
 	LLPanel*				mScrollingPanel;
diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp
index 3c798639d4e..8d689b2c5e4 100644
--- a/indra/newview/llpanelplaceprofile.cpp
+++ b/indra/newview/llpanelplaceprofile.cpp
@@ -207,7 +207,7 @@ void LLPanelPlaceProfile::resetLocation()
 }
 
 // virtual
-void LLPanelPlaceProfile::setInfoType(INFO_TYPE type)
+void LLPanelPlaceProfile::setInfoType(EInfoType type)
 {
 	bool is_info_type_agent = type == AGENT;
 
diff --git a/indra/newview/llpanelplaceprofile.h b/indra/newview/llpanelplaceprofile.h
index 8ca95268750..e77b4415671 100644
--- a/indra/newview/llpanelplaceprofile.h
+++ b/indra/newview/llpanelplaceprofile.h
@@ -48,7 +48,7 @@ class LLPanelPlaceProfile : public LLPanelPlaceInfo
 
 	/*virtual*/ void resetLocation();
 
-	/*virtual*/ void setInfoType(INFO_TYPE type);
+	/*virtual*/ void setInfoType(EInfoType type);
 
 	/*virtual*/ void processParcelInfo(const LLParcelData& parcel_data);
 
-- 
GitLab


From 23147ee1ee3fd37025fb777507a8e19810d94f3b Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 16:13:11 -0800
Subject: [PATCH 208/521] CID-387

Checker: UNINIT_CTOR
Function: LLTeleportHistoryPanel::ContextMenu::ContextMenu()
File: /indra/newview/llpanelteleporthistory.cpp
---
 indra/newview/llpanelteleporthistory.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index 1b8fb496418..6005881148d 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -308,7 +308,7 @@ void LLTeleportHistoryFlatItemStorage::purge()
 ////////////////////////////////////////////////////////////////////////////////
 
 LLTeleportHistoryPanel::ContextMenu::ContextMenu() :
-	mMenu(NULL)
+	mMenu(NULL), mIndex(0)
 {
 }
 
-- 
GitLab


From 7814eaec0082dfc505076afca33b51eeb6f591fe Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 16:16:28 -0800
Subject: [PATCH 209/521] CID-386

Checker: UNINIT_CTOR
Function: LLFolderBridge::LLFolderBridge(LLInventoryPanel *, const LLUUID &)
File: /indra/newview/llinventorybridge.h
---
 indra/newview/llinventorybridge.h | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h
index 759d0cba18a..eeb8246b112 100644
--- a/indra/newview/llinventorybridge.h
+++ b/indra/newview/llinventorybridge.h
@@ -320,8 +320,12 @@ class LLFolderBridge : public LLInvFVBridge
 	LLViewerInventoryCategory* getCategory() const;
 
 protected:
-	LLFolderBridge(LLInventoryPanel* inventory, const LLUUID& uuid) :
-		LLInvFVBridge(inventory, uuid), mCallingCards(FALSE), mWearables(FALSE) {}
+	LLFolderBridge(LLInventoryPanel* inventory, const LLUUID& uuid)
+		: LLInvFVBridge(inventory, uuid),
+
+		mCallingCards(FALSE),
+		mWearables(FALSE),
+		mMenu(NULL) {}
 
 	// menu callbacks
 	static void pasteClipboard(void* user_data);
-- 
GitLab


From bfda8b2cfee5512f6737ea2802b69bdac66ed3ab Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 16:19:32 -0800
Subject: [PATCH 210/521] CID-385

Checker: UNINIT_CTOR
Function: LLToolBar::LLToolBar()
File: /indra/newview/lltoolbar.cpp
---
 indra/newview/lltoolbar.cpp | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/indra/newview/lltoolbar.cpp b/indra/newview/lltoolbar.cpp
index edbaa0d45a4..6df574a21ae 100644
--- a/indra/newview/lltoolbar.cpp
+++ b/indra/newview/lltoolbar.cpp
@@ -95,9 +95,12 @@ F32	LLToolBar::sInventoryAutoOpenTime = 1.f;
 //
 
 LLToolBar::LLToolBar()
-:	LLPanel()
+	: LLPanel(),
+
+	mInventoryAutoOpen(FALSE),
+	mNumUnreadIMs(0)	
 #if LL_DARWIN
-	, mResizeHandle(NULL)
+	, mResizeHandle(NULL),
 #endif // LL_DARWIN
 {
 	setIsChrome(TRUE);
-- 
GitLab


From bfd21c0886ccb9ebbb1f32785b008134c20e3de5 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 16:20:44 -0800
Subject: [PATCH 211/521] CID-384

Checker: UNINIT_CTOR
Function: LLSelectNode::LLSelectNode(const LLSelectNode&)
File: /indra/newview/llselectmgr.cpp
---
 indra/newview/llselectmgr.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index 60a095506b1..6f76715e732 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -5093,6 +5093,7 @@ LLSelectNode::LLSelectNode(const LLSelectNode& nodep)
 	mName = nodep.mName;
 	mDescription = nodep.mDescription;
 	mCategory = nodep.mCategory;
+	mInventorySerial = 0;
 	mSavedPositionLocal = nodep.mSavedPositionLocal;
 	mSavedPositionGlobal = nodep.mSavedPositionGlobal;
 	mSavedScale = nodep.mSavedScale;
-- 
GitLab


From 344eaeb39bc8fa059960d44b0b0853d92530c411 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 16:27:02 -0800
Subject: [PATCH 212/521] CID-376

Checker: UNINIT_CTOR
Function: LLViewerPart::LLViewerPart()
File: /indra/newview/llviewerpartsim.cpp
---
 indra/newview/llviewerpartsim.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/newview/llviewerpartsim.cpp b/indra/newview/llviewerpartsim.cpp
index 841a7ccc5e8..6b480ccf8e5 100644
--- a/indra/newview/llviewerpartsim.cpp
+++ b/indra/newview/llviewerpartsim.cpp
@@ -81,6 +81,7 @@ F32 calc_desired_size(LLViewerCamera* camera, LLVector3 pos, LLVector2 scale)
 LLViewerPart::LLViewerPart() :
 	mPartID(0),
 	mLastUpdateTime(0.f),
+	mSkipOffset(0.f),
 	mVPCallback(NULL),
 	mImagep(NULL)
 {
-- 
GitLab


From 0ea467ad06acc8e90f46cf9b97d1509e287bbe5d Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 16:31:41 -0800
Subject: [PATCH 213/521] CID-375

Checker: UNINIT_CTOR
Function: LLViewerFetchedTexture::LLViewerFetchedTexture(const LLImageRaw *, int)
File: /indra/newview/llviewertexture.cpp
---
 indra/newview/llviewertexture.cpp | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index b80dc7d9025..0ad269392d1 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -1029,6 +1029,8 @@ void LLViewerFetchedTexture::init(bool firstinit)
 	// does not contain this image.
 	mIsMissingAsset = FALSE;
 
+	mLoadedCallbackDesiredDiscardLevel = 0;
+
 	mNeedsCreateTexture = FALSE;
 	
 	mIsRawImageValid = FALSE;
@@ -1041,6 +1043,7 @@ void LLViewerFetchedTexture::init(bool firstinit)
 	mFetchPriority = 0;
 	mDownloadProgress = 0.f;
 	mFetchDeltaTime = 999999.f;
+	mRequestDeltaTime = 0.f;
 	mForSculpt = FALSE ;
 	mIsFetched = FALSE ;
 
-- 
GitLab


From 73d92f0847936f51fc0e8f12140d0880f73a2b11 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 16:38:02 -0800
Subject: [PATCH 214/521] CID-374

Checker: UNINIT_CTOR
Function: LLPickInfo::LLPickInfo(const LLCoordGL &, unsigned int, int, int, void (*)(const LLPickInfo&))
File: /indra/newview/llviewerwindow.cpp

remove some fat, dead members.
---
 indra/newview/llviewerwindow.cpp | 8 ++++----
 indra/newview/llviewerwindow.h   | 3 ---
 2 files changed, 4 insertions(+), 7 deletions(-)

diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 424b84a756f..b4c73dba262 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -4849,10 +4849,10 @@ LLPickInfo::LLPickInfo()
 }
 
 LLPickInfo::LLPickInfo(const LLCoordGL& mouse_pos, 
-						MASK keyboard_mask, 
-						BOOL pick_transparent,
-						BOOL pick_uv_coords,
-						void (*pick_callback)(const LLPickInfo& pick_info))
+		       MASK keyboard_mask, 
+		       BOOL pick_transparent,
+		       BOOL pick_uv_coords,
+		       void (*pick_callback)(const LLPickInfo& pick_info))
 	: mMousePt(mouse_pos),
 	  mKeyMask(keyboard_mask),
 	  mPickCallback(pick_callback),
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index b488276a18e..c0a9180b530 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -126,9 +126,6 @@ class LLPickInfo
 	void			updateXYCoords();
 
 	BOOL			mWantSurfaceInfo;   // do we populate mUVCoord, mNormal, mBinormal?
-	U8				mPickBuffer[PICK_DIAMETER * PICK_DIAMETER * 4];
-	F32				mPickDepthBuffer[PICK_DIAMETER * PICK_DIAMETER];
-	BOOL			mPickParcelWall;
 
 };
 
-- 
GitLab


From 373f6264082256a5c7877fb8b99336bf9cf1ca6b Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 16:41:11 -0800
Subject: [PATCH 215/521] CID-373

Checker: UNINIT_CTOR
Function: LLTexLayerSet::LLTexLayerSet(LLVOAvatarSelf *)
File: /indra/newview/lltexlayer.cpp
---
 indra/newview/lltexlayer.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp
index b8419e088ad..ddb6405c412 100644
--- a/indra/newview/lltexlayer.cpp
+++ b/indra/newview/lltexlayer.cpp
@@ -567,6 +567,7 @@ LLTexLayerSet::LLTexLayerSet(LLVOAvatarSelf* const avatar) :
 	mAvatar( avatar ),
 	mUpdatesEnabled( FALSE ),
 	mIsVisible( TRUE ),
+	mBakedTexIndex(LLVOAvatarDefines::BAKED_HEAD),
 	mInfo( NULL )
 {
 }
-- 
GitLab


From f2e202e6a4bd033e3d9aad3197f5aa491076245b Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 16:43:48 -0800
Subject: [PATCH 216/521] CID-368

Checker: UNINIT_CTOR
Function: LLVolumeImplFlexible::LLVolumeImplFlexible(LLViewerObject *, LLFlexibleObjectData *)
File: /indra/newview/llflexibleobject.cpp
---
 indra/newview/llflexibleobject.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/newview/llflexibleobject.cpp b/indra/newview/llflexibleobject.cpp
index fc8790c1722..aea2de8e92f 100644
--- a/indra/newview/llflexibleobject.cpp
+++ b/indra/newview/llflexibleobject.cpp
@@ -66,6 +66,7 @@ LLVolumeImplFlexible::LLVolumeImplFlexible(LLViewerObject* vo, LLFlexibleObjectD
 	mInitializedRes = -1;
 	mSimulateRes = 0;
 	mFrameNum = 0;
+	mCollisionSphereRadius = 0.f;
 	mRenderRes = 1;
 
 	if(mVO->mDrawable.notNull())
-- 
GitLab


From 8bf32990fcb2426a9d177da6db631a0eda2d3219 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 16:45:42 -0800
Subject: [PATCH 217/521] CID-367  Checker: UNINIT_CTOR Function:
 LLFace::LLFace(LLDrawable *, LLViewerObject *) File: /indra/newview/llface.h

---
 indra/newview/llface.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index eef774426a0..965ac1cad0b 100644
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -157,6 +157,7 @@ void LLFace::init(LLDrawable* drawablep, LLViewerObject* objp)
 	mGeomIndex		= 0;
 	mIndicesCount	= 0;
 	mIndicesIndex	= 0;
+	mIndexInTex = 0;
 	mTexture		= NULL;
 	mTEOffset		= -1;
 
-- 
GitLab


From 6c92a724a1893eceac644a65ff5660e73ba6d42e Mon Sep 17 00:00:00 2001
From: Monroe Linden <monroe@lindenlab.com>
Date: Wed, 27 Jan 2010 16:48:09 -0800
Subject: [PATCH 218/521] Implemented
 LLAppViewerMacOSX::setMasterSystemAudioMute() and
 LLAppViewerMacOSX::getMasterSystemAudioMute() using CoreAudio APIs.

This required adding a reference to the CoreAudio framework in indra/newview/CMakeLists.txt
---
 indra/newview/CMakeLists.txt        |  2 ++
 indra/newview/llappviewermacosx.cpp | 50 ++++++++++++++++++++++++++---
 2 files changed, 47 insertions(+), 5 deletions(-)

diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 7ddeb90d295..4c0c895a7df 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1064,11 +1064,13 @@ if (DARWIN)
   find_library(APPKIT_LIBRARY AppKit)
   find_library(COCOA_LIBRARY Cocoa)
   find_library(IOKIT_LIBRARY IOKit)
+  find_library(COREAUDIO_LIBRARY CoreAudio)
 
   set(viewer_LIBRARIES
     ${COCOA_LIBRARY}
     ${AGL_LIBRARY}
     ${IOKIT_LIBRARY}
+    ${COREAUDIO_LIBRARY}
     )
 
   # Add resource files to the project.
diff --git a/indra/newview/llappviewermacosx.cpp b/indra/newview/llappviewermacosx.cpp
index cc38a0940cb..f8f8f50cd6c 100644
--- a/indra/newview/llappviewermacosx.cpp
+++ b/indra/newview/llappviewermacosx.cpp
@@ -50,6 +50,7 @@
 #include <Carbon/Carbon.h>
 #include "lldir.h"
 #include <signal.h>
+#include <CoreAudio/CoreAudio.h>	// for systemwide mute
 class LLMediaCtrl;		// for LLURLDispatcher
 
 namespace 
@@ -444,18 +445,57 @@ std::string LLAppViewerMacOSX::generateSerialNumber()
 	return serial_md5;
 }
 
+static AudioDeviceID get_default_audio_output_device(void)
+{
+	AudioDeviceID device = 0;
+	UInt32 size;
+	OSStatus err;
+	
+	size = sizeof(device);
+	err = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice, &size, &device);
+	if(err != noErr)
+	{
+		LL_DEBUGS("SystemMute") << "Couldn't get default audio output device (0x" << std::hex << err << ")" << LL_ENDL;
+	}
+	
+	return device;
+}
+
 //virtual
-void LLAppViewerMacOSX::setMasterSystemAudioMute(bool mute)
+void LLAppViewerMacOSX::setMasterSystemAudioMute(bool new_mute)
 {
-	// XXX TODO: make this actually set the OS's audio mute state
-	gSavedSettings.setBOOL("MuteAudio", mute);
+	AudioDeviceID device = get_default_audio_output_device();
+	
+	if(device != 0)
+	{
+		UInt32 mute = new_mute;
+		OSStatus err = AudioDeviceSetProperty(device, NULL, 0, false, kAudioDevicePropertyMute, sizeof(mute), &mute);
+		if(err != noErr)
+		{
+			LL_INFOS("SystemMute") << "Couldn't set audio mute property (0x" << std::hex << err << ")" << LL_ENDL;
+		}
+	}
 }
 
 //virtual
 bool LLAppViewerMacOSX::getMasterSystemAudioMute()
 {
-	// XXX TODO: make this actually get the OS's audio mute state
-	return gSavedSettings.getBOOL("MuteAudio");
+	// Assume the system isn't muted 
+	UInt32 mute = 0;
+	
+	AudioDeviceID device = get_default_audio_output_device();
+	
+	if(device != 0)
+	{
+		UInt32 size = sizeof(mute);
+		OSStatus err = AudioDeviceGetProperty(device, 0, false, kAudioDevicePropertyMute, &size, &mute);
+		if(err != noErr)
+		{
+			LL_DEBUGS("SystemMute") << "Couldn't get audio mute property (0x" << std::hex << err << ")" << LL_ENDL;
+		}
+	}
+	
+	return (mute != 0);
 }
 
 OSErr AEGURLHandler(const AppleEvent *messagein, AppleEvent *reply, long refIn)
-- 
GitLab


From 63aef899bc6274d2b7fd90de8ed7e01cb6bb7359 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 16:49:51 -0800
Subject: [PATCH 219/521] CID-365

Checker: UNINIT_CTOR
Function: LLSurfacePatch::LLSurfacePatch()
File: /indra/newview/llsurfacepatch.cpp
---
 indra/newview/llsurfacepatch.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/indra/newview/llsurfacepatch.cpp b/indra/newview/llsurfacepatch.cpp
index 0ce794addb6..48e4a6ccc75 100644
--- a/indra/newview/llsurfacepatch.cpp
+++ b/indra/newview/llsurfacepatch.cpp
@@ -60,6 +60,7 @@ LLSurfacePatch::LLSurfacePatch() :
 	mHeightsGenerated(FALSE),
 	mDataOffset(0),
 	mDataZ(NULL),
+	mDataNorm(NULL),
 	mVObjp(NULL),
 	mOriginRegion(0.f, 0.f, 0.f),
 	mCenterRegion(0.f, 0.f, 0.f),
@@ -355,12 +356,14 @@ void LLSurfacePatch::calcNormal(const U32 x, const U32 y, const U32 stride)
 	normal %= c2;
 	normal.normVec();
 
+	llassert(mDataNorm);
 	*(mDataNorm + surface_stride * y + x) = normal;
 }
 
 const LLVector3 &LLSurfacePatch::getNormal(const U32 x, const U32 y) const
 {
 	U32 surface_stride = mSurfacep->getGridsPerEdge();
+	llassert(mDataNorm);
 	return *(mDataNorm + surface_stride * y + x);
 }
 
@@ -402,6 +405,7 @@ void LLSurfacePatch::updateVerticalStats()
 	U32 i, j, k;
 	F32 z, total;
 
+	llassert(mDataZ);
 	z = *(mDataZ);
 
 	mMinZ = z;
-- 
GitLab


From 056ca2ae5c1a145483c75e85fa7b1bee746b2627 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 16:51:46 -0800
Subject: [PATCH 220/521] CID-359

Checker: UNINIT_CTOR
Function: LLLocalTextureObject::LLLocalTextureObject(LLViewerFetchedTexture *, const LLUUID &)
File: /indra/newview/lllocaltextureobject.cpp
---
 indra/newview/lllocaltextureobject.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/indra/newview/lllocaltextureobject.cpp b/indra/newview/lllocaltextureobject.cpp
index 6bcbe6f58ca..69eb5fce2fc 100644
--- a/indra/newview/lllocaltextureobject.cpp
+++ b/indra/newview/lllocaltextureobject.cpp
@@ -47,7 +47,9 @@ LLLocalTextureObject::LLLocalTextureObject() :
 	mImage = NULL;
 }
 
-LLLocalTextureObject::LLLocalTextureObject(LLViewerFetchedTexture* image, const LLUUID& id)
+LLLocalTextureObject::LLLocalTextureObject(LLViewerFetchedTexture* image, const LLUUID& id) :
+	mIsBakedReady(FALSE),
+	mDiscard(MAX_DISCARD_LEVEL+1)
 {
 	mImage = image;
 	gGL.getTexUnit(0)->bind(mImage);
-- 
GitLab


From ce436d20f09269dd3715b29a1ed0addb132b35cb Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 16:53:18 -0800
Subject: [PATCH 221/521] CID-360

Checker: UNINIT_CTOR
Function: LLViewerVisualParamInfo::LLViewerVisualParamInfo()
File: /indra/newview/llviewervisualparam.cpp
---
 indra/newview/llviewervisualparam.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/newview/llviewervisualparam.cpp b/indra/newview/llviewervisualparam.cpp
index b088ef07305..fad398e00b2 100644
--- a/indra/newview/llviewervisualparam.cpp
+++ b/indra/newview/llviewervisualparam.cpp
@@ -46,6 +46,7 @@
 LLViewerVisualParamInfo::LLViewerVisualParamInfo()
 	:
 	mWearableType( WT_INVALID ),
+	mCrossWearable(FALSE),
 	mCamDist( 0.5f ),
 	mCamAngle( 0.f ),
 	mCamElevation( 0.f ),
-- 
GitLab


From d9661c3d2a26dd4379a6f57dc8227ee2e73f8ec6 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 16:57:10 -0800
Subject: [PATCH 222/521] CID-358

Checker: UNINIT_CTOR
Function: LLTextureCache::Entry::Entry()
File: /indra/newview/lltexturecache.h
---
 indra/newview/lltexturecache.h | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/indra/newview/lltexturecache.h b/indra/newview/lltexturecache.h
index 4203cbbc433..64ec881fc31 100644
--- a/indra/newview/lltexturecache.h
+++ b/indra/newview/lltexturecache.h
@@ -59,7 +59,12 @@ class LLTextureCache : public LLWorkerThread
 	};
 	struct Entry
 	{
-		Entry() {}
+        	Entry() :
+		        mBodySize(0),
+			mImageSize(0),
+			mTime(0)
+		{
+		}
 		Entry(const LLUUID& id, S32 imagesize, S32 bodysize, U32 time) :
 			mID(id), mImageSize(imagesize), mBodySize(bodysize), mTime(time) {}
 		void init(const LLUUID& id, U32 time) { mID = id, mImageSize = 0; mBodySize = 0; mTime = time; }
-- 
GitLab


From 6d68de504f7ffd356f465916fe8bac26de47d5ae Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 16:58:58 -0800
Subject: [PATCH 223/521] CID-355

Checker: UNINIT_CTOR
Function: LLVOVolume::LLVOVolume(const LLUUID &, unsigned char, LLViewerRegion *)
File: /indra/newview/llvovolume.cpp
---
 indra/newview/llvovolume.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 295c0c80109..bfe38c14ba9 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -180,8 +180,10 @@ LLVOVolume::LLVOVolume(const LLUUID &id, const LLPCode pcode, LLViewerRegion *re
 	mRelativeXform.setIdentity();
 	mRelativeXformInvTrans.setIdentity();
 
+	mFaceMappingChanged = FALSE;
 	mLOD = MIN_LOD;
 	mTextureAnimp = NULL;
+	mVolumeChanged = FALSE;
 	mVObjRadius = LLVector3(1,1,0.5f).length();
 	mNumFaces = 0;
 	mLODChanged = FALSE;
-- 
GitLab


From 6e55c9549a31550b7dc73972462334c8b1e32f7c Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 17:01:02 -0800
Subject: [PATCH 224/521] CID-354

Checker: UNINIT_CTOR
Function: LLViewerJointMesh::LLViewerJointMesh()
File: /indra/newview/llviewerjointmesh.cpp
---
 indra/newview/llviewerjointmesh.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/newview/llviewerjointmesh.cpp b/indra/newview/llviewerjointmesh.cpp
index 5b8902dec48..1a67fc09664 100644
--- a/indra/newview/llviewerjointmesh.cpp
+++ b/indra/newview/llviewerjointmesh.cpp
@@ -147,6 +147,7 @@ LLViewerJointMesh::LLViewerJointMesh()
 	mTexture( NULL ),
 	mLayerSet( NULL ),
 	mTestImageName( 0 ),
+	mFaceIndexCount(0),
 	mIsTransparent(FALSE)
 {
 
-- 
GitLab


From e48e9db756f55f1834256abfcc37038799cca8c0 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 17:04:43 -0800
Subject: [PATCH 225/521] CID-353

Checker: UNINIT_CTOR
Function: LLViewerJoint::LLViewerJoint()
File: /indra/newview/llviewerjoint.cpp
---
 indra/newview/llviewerjoint.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/newview/llviewerjoint.cpp b/indra/newview/llviewerjoint.cpp
index c2591ac8d7d..c425d95ff80 100644
--- a/indra/newview/llviewerjoint.cpp
+++ b/indra/newview/llviewerjoint.cpp
@@ -66,6 +66,7 @@ LLViewerJoint::LLViewerJoint()
 	mMinPixelArea = DEFAULT_LOD;
 	mPickName = PN_DEFAULT;
 	mVisible = TRUE;
+	mMeshID = 0;
 }
 
 
-- 
GitLab


From 0d2ce43c545b40a3ce5a90bc894b79ae8b11b726 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 27 Jan 2010 17:06:49 -0800
Subject: [PATCH 226/521] CID-348

Checker: UNINIT_CTOR
Function: LLViewerShaderMgr::LLViewerShaderMgr()
File: /indra/newview/llviewershadermgr.cpp
---
 indra/newview/llviewershadermgr.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index 6dc9f5c4652..86b1a8c9100 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -135,7 +135,8 @@ LLGLSLShader			gLuminanceGatherProgram;
 GLint				gAvatarMatrixParam;
 
 LLViewerShaderMgr::LLViewerShaderMgr() :
-	mVertexShaderLevel(SHADER_COUNT, 0)
+	mVertexShaderLevel(SHADER_COUNT, 0),
+	mMaxAvatarShaderLevel(0)
 {	
 	/// Make sure WL Sky is the first program
 	mShaderList.push_back(&gWLSkyProgram);
-- 
GitLab


From 52bd13e1f5cd661ff359e36be8c0496d06c19d1c Mon Sep 17 00:00:00 2001
From: Monroe Linden <monroe@lindenlab.com>
Date: Wed, 27 Jan 2010 17:21:16 -0800
Subject: [PATCH 227/521] Fix for broken mac build (surplus comma in the
 LLToolBar constructor initializers).

---
 indra/newview/lltoolbar.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/lltoolbar.cpp b/indra/newview/lltoolbar.cpp
index 6df574a21ae..e7dc7ae522c 100644
--- a/indra/newview/lltoolbar.cpp
+++ b/indra/newview/lltoolbar.cpp
@@ -100,7 +100,7 @@ LLToolBar::LLToolBar()
 	mInventoryAutoOpen(FALSE),
 	mNumUnreadIMs(0)	
 #if LL_DARWIN
-	, mResizeHandle(NULL),
+	, mResizeHandle(NULL)
 #endif // LL_DARWIN
 {
 	setIsChrome(TRUE);
-- 
GitLab


From ab68d36518dc8a320b465217e89e1207ee4b00fd Mon Sep 17 00:00:00 2001
From: Ychebotarev ProductEngine <ychebotarev@productengine.com>
Date: Thu, 28 Jan 2010 08:22:26 +0200
Subject: [PATCH 228/521] working on normal EXT-4261 Cannot use Keyboard to
 navigate to search result in my landmarks tab

--HG--
branch : product-engine
---
 indra/newview/llfolderview.cpp           | 100 +++++++++++++++++++++++
 indra/newview/llfolderview.h             |   5 ++
 indra/newview/llplacesinventorypanel.cpp |  17 ++++
 indra/newview/llplacesinventorypanel.h   |   2 +
 4 files changed, 124 insertions(+)

diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index b833c611bfb..c6135d3bc3c 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -1508,10 +1508,26 @@ BOOL LLFolderView::handleKeyHere( KEY key, MASK mask )
 				{
 					if (next == last_selected)
 					{
+						//special case for LLAccordionCtrl
+						if(notifyParent(LLSD().with("action","select_next")) > 0 )//message was processed
+						{
+							clearSelection();
+							return TRUE;
+						}
 						return FALSE;
 					}
 					setSelection( next, FALSE, TRUE );
 				}
+				else
+				{
+					//special case for LLAccordionCtrl
+					if(notifyParent(LLSD().with("action","select_next")) > 0 )//message was processed
+					{
+						clearSelection();
+						return TRUE;
+					}
+					return FALSE;
+				}
 			}
 			scrollToShowSelection();
 			mSearchString.clear();
@@ -1556,6 +1572,13 @@ BOOL LLFolderView::handleKeyHere( KEY key, MASK mask )
 				{
 					if (prev == this)
 					{
+						// If case we are in accordion tab notify parent to go to the previous accordion
+						if(notifyParent(LLSD().with("action","select_prev")) > 0 )//message was processed
+						{
+							clearSelection();
+							return TRUE;
+						}
+
 						return FALSE;
 					}
 					setSelection( prev, FALSE, TRUE );
@@ -2241,6 +2264,83 @@ void LLFolderView::updateRenamerPosition()
 	}
 }
 
+bool LLFolderView::selectFirstItem()
+{
+	for (folders_t::iterator iter = mFolders.begin();
+		 iter != mFolders.end();)
+	{
+		LLFolderViewFolder* folder = (*iter );
+		if (folder->getVisible())
+		{
+			LLFolderViewItem* itemp = folder->getNextFromChild(0,true);
+			if(itemp)
+				setSelection(itemp,FALSE,TRUE);
+			return true;	
+		}
+		
+	}
+	for(items_t::iterator iit = mItems.begin();
+		iit != mItems.end(); ++iit)
+	{
+		LLFolderViewItem* itemp = (*iit);
+		if (itemp->getVisible())
+		{
+			setSelection(itemp,FALSE,TRUE);
+			return true;	
+		}
+	}
+	return false;
+}
+bool LLFolderView::selectLastItem()
+{
+	for(items_t::reverse_iterator iit = mItems.rbegin();
+		iit != mItems.rend(); ++iit)
+	{
+		LLFolderViewItem* itemp = (*iit);
+		if (itemp->getVisible())
+		{
+			setSelection(itemp,FALSE,TRUE);
+			return true;	
+		}
+	}
+	for (folders_t::reverse_iterator iter = mFolders.rbegin();
+		 iter != mFolders.rend();)
+	{
+		LLFolderViewFolder* folder = (*iter);
+		if (folder->getVisible())
+		{
+			LLFolderViewItem* itemp = folder->getPreviousFromChild(0,true);
+			if(itemp)
+				setSelection(itemp,FALSE,TRUE);
+			return true;	
+		}
+	}
+	return false;
+}
+
+
+S32	LLFolderView::notify(const LLSD& info) 
+{
+	if(info.has("action"))
+	{
+		std::string str_action = info["action"];
+		if(str_action == "select_first")
+		{
+			setFocus(true);
+			selectFirstItem();
+			return 1;
+
+		}
+		else if(str_action == "select_last")
+		{
+			setFocus(true);
+			selectLastItem();
+			return 1;
+		}
+	}
+	return 0;
+}
+
 
 ///----------------------------------------------------------------------------
 /// Local function definitions
diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h
index 89e1865e353..56ebdfcf79d 100644
--- a/indra/newview/llfolderview.h
+++ b/indra/newview/llfolderview.h
@@ -266,6 +266,8 @@ class LLFolderView : public LLFolderViewFolder, public LLEditMenuHandler
 	LLPanel* getParentPanel() { return mParentPanel; }
 	// DEBUG only
 	void dumpSelectionInformation();
+
+	virtual S32	notify(const LLSD& info) ;
 	
 private:
 	void updateRenamerPosition();
@@ -278,6 +280,9 @@ class LLFolderView : public LLFolderViewFolder, public LLEditMenuHandler
 
 	void finishRenamingItem( void );
 	void closeRenamer( void );
+
+	bool selectFirstItem();
+	bool selectLastItem();
 	
 protected:
 	LLHandle<LLView>					mPopupMenuHandle;
diff --git a/indra/newview/llplacesinventorypanel.cpp b/indra/newview/llplacesinventorypanel.cpp
index 4de953a59d9..8edeebaeebe 100644
--- a/indra/newview/llplacesinventorypanel.cpp
+++ b/indra/newview/llplacesinventorypanel.cpp
@@ -143,6 +143,23 @@ void LLPlacesInventoryPanel::restoreFolderState()
 	getRootFolder()->scrollToShowSelection();
 }
 
+S32	LLPlacesInventoryPanel::notify(const LLSD& info) 
+{
+	if(info.has("action"))
+	{
+		std::string str_action = info["action"];
+		if(str_action == "select_first")
+		{
+			return getRootFolder()->notify(info);
+		}
+		else if(str_action == "select_last")
+		{
+			return getRootFolder()->notify(info);
+		}
+	}
+	return 0;
+}
+
 /************************************************************************/
 /* PROTECTED METHODS                                                    */
 /************************************************************************/
diff --git a/indra/newview/llplacesinventorypanel.h b/indra/newview/llplacesinventorypanel.h
index 7b34045d32b..86937e7c7fc 100644
--- a/indra/newview/llplacesinventorypanel.h
+++ b/indra/newview/llplacesinventorypanel.h
@@ -57,6 +57,8 @@ class LLPlacesInventoryPanel : public LLInventoryPanel
 	void saveFolderState();
 	void restoreFolderState();
 
+	virtual S32	notify(const LLSD& info) ;
+
 private:
 	LLSaveFolderState*			mSavedFolderState;
 };
-- 
GitLab


From 3c616d627bcaa28e0e7d31eb8f6c04e3847adb3d Mon Sep 17 00:00:00 2001
From: Ychebotarev ProductEngine <ychebotarev@productengine.com>
Date: Thu, 28 Jan 2010 09:16:13 +0200
Subject: [PATCH 229/521] fix for EXT-4742 Group Info panel state resets on
 save

--HG--
branch : product-engine
---
 indra/newview/llpanelgroup.cpp | 15 ++++++++++++---
 indra/newview/llpanelgroup.h   |  7 +------
 2 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp
index 1d447a22d73..23db7ad226b 100644
--- a/indra/newview/llpanelgroup.cpp
+++ b/indra/newview/llpanelgroup.cpp
@@ -89,8 +89,8 @@ BOOL LLPanelGroupTab::postBuild()
 LLPanelGroup::LLPanelGroup()
 :	LLPanel(),
 	LLGroupMgrObserver( LLUUID() ),
-	mAllowEdit( TRUE )
-	,mShowingNotifyDialog(false)
+	mSkipRefresh(FALSE),
+	mShowingNotifyDialog(false)
 {
 	// Set up the factory callbacks.
 	// Roles sub tabs
@@ -168,7 +168,6 @@ BOOL LLPanelGroup::postBuild()
 
 	button = getChild<LLButton>("btn_refresh");
 	button->setClickedCallback(onBtnRefresh, this);
-	button->setVisible(mAllowEdit);
 
 	getChild<LLButton>("btn_create")->setVisible(false);
 
@@ -492,7 +491,12 @@ bool LLPanelGroup::apply(LLPanelGroupTab* tab)
 	
 	std::string apply_mesg;
 	if(tab->apply( apply_mesg ) )
+	{
+		//we skip refreshing group after ew manually apply changes since its very annoying
+		//for those who are editing group
+		mSkipRefresh = TRUE;
 		return true;
+	}
 		
 	if ( !apply_mesg.empty() )
 	{
@@ -539,6 +543,11 @@ void LLPanelGroup::draw()
 
 void LLPanelGroup::refreshData()
 {
+	if(mSkipRefresh)
+	{
+		mSkipRefresh = FALSE;
+		return;
+	}
 	LLGroupMgr::getInstance()->clearGroupData(getID());
 
 	setGroupID(getID());
diff --git a/indra/newview/llpanelgroup.h b/indra/newview/llpanelgroup.h
index 8c846956771..6e23eedffbe 100644
--- a/indra/newview/llpanelgroup.h
+++ b/indra/newview/llpanelgroup.h
@@ -85,9 +85,6 @@ class LLPanelGroup : public LLPanel,
 
 	virtual void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
 
-	void setAllowEdit(BOOL v) { mAllowEdit = v; }
-
-	
 	static void refreshCreatedGroup(const LLUUID& group_id);
 
 	static void showNotice(const std::string& subject,
@@ -126,7 +123,7 @@ class LLPanelGroup : public LLPanel,
 
 	LLTimer mRefreshTimer;
 
-	BOOL mAllowEdit;
+	BOOL mSkipRefresh;
 
 	std::string mDefaultNeedsApplyMesg;
 	std::string mWantApplyMesg;
@@ -169,8 +166,6 @@ class LLPanelGroupTab : public LLPanel
 
 	virtual BOOL isVisibleByAgent(LLAgent* agentp);
 
-	void setAllowEdit(BOOL v) { mAllowEdit = v; }
-
 	virtual void setGroupID(const LLUUID& id) {mGroupID = id;};
 
 	void notifyObservers() {};
-- 
GitLab


From b80cd227042f8e461fa0a2f9a5ae3b448842b863 Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Thu, 28 Jan 2010 09:50:06 +0200
Subject: [PATCH 230/521] Work on major bug EXT-3985 ([BSI] Landmarks created
 in Viewer 2.0 show up with 1@ in Viewer 1.23.x) -- removed using of the LM
 Prefix while renaming Inventori item

--HG--
branch : product-engine
---
 indra/newview/llviewerinventory.cpp | 21 ++-------------------
 1 file changed, 2 insertions(+), 19 deletions(-)

diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index f7529dd553f..a3cbd80c84f 100644
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -1310,27 +1310,10 @@ void LLViewerInventoryItem::setSortField(S32 sortField)
 	LLFavoritesOrderStorage::instance().setSortIndex(mUUID, sortField);
 }
 
+// *TODO: mantipov: REMOVE, EXT-3985
 void LLViewerInventoryItem::rename(const std::string& n)
 {
-	using std::string;
-
-	string new_name(n);
-	LLStringUtil::replaceNonstandardASCII(new_name, ' ');
-	LLStringUtil::replaceChar(new_name, '|', ' ');
-	LLStringUtil::trim(new_name);
-	LLStringUtil::truncate(new_name, DB_INV_ITEM_NAME_STR_LEN);
-
-	const char separator = getSeparator();
-	const string::size_type separatorPos = mName.find(separator, 0);
-
-	if (separatorPos < string::npos)
-	{
-		mName.replace(separatorPos + 1, string::npos, new_name);
-	}
-	else
-	{
-		mName = new_name;
-	}
+	LLInventoryItem::rename(n);
 }
 
 const LLPermissions& LLViewerInventoryItem::getPermissions() const
-- 
GitLab


From 1631ca7173d77576ed18fb35b1843c5a28cbb5e4 Mon Sep 17 00:00:00 2001
From: Ychebotarev ProductEngine <ychebotarev@productengine.com>
Date: Thu, 28 Jan 2010 10:34:12 +0200
Subject: [PATCH 231/521] fix for normal EXT-4512 [BSI] Can't minimize Mini-Map
 also this fix EXT-2119 even if its marked as fixed...

--HG--
branch : product-engine
---
 indra/newview/llfloatermap.cpp                     | 1 +
 indra/newview/skins/default/xui/en/floater_map.xml | 5 ++++-
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llfloatermap.cpp b/indra/newview/llfloatermap.cpp
index d18f127f851..568f4b254e1 100644
--- a/indra/newview/llfloatermap.cpp
+++ b/indra/newview/llfloatermap.cpp
@@ -112,6 +112,7 @@ BOOL LLFloaterMap::postBuild()
 	sendChildToBack(getDragHandle());
 
 	setIsChrome(TRUE);
+	getDragHandle()->setTitleVisible(TRUE);
 	
 	// keep onscreen
 	gFloaterView->adjustToFitScreen(this, FALSE);
diff --git a/indra/newview/skins/default/xui/en/floater_map.xml b/indra/newview/skins/default/xui/en/floater_map.xml
index 3a5ceed5fb6..3ddb7bc3494 100644
--- a/indra/newview/skins/default/xui/en/floater_map.xml
+++ b/indra/newview/skins/default/xui/en/floater_map.xml
@@ -1,14 +1,17 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
  legacy_header_height="18"
- can_minimize="false" 
+ can_minimize="true" 
  can_resize="true"
+ center_horiz="true"
+ center_vert="true"
  follows="top|right"
  height="225"
  layout="topleft"
  min_height="60"
  min_width="174"
  name="Map"
+ title="Mini Map"
  help_topic="map"
  save_rect="true"
  save_visibility="true"
-- 
GitLab


From 03861037aff2c22a544fb0055ecb52156fb48bc6 Mon Sep 17 00:00:00 2001
From: Ychebotarev ProductEngine <ychebotarev@productengine.com>
Date: Thu, 28 Jan 2010 11:32:02 +0200
Subject: [PATCH 232/521] fix for normal EXT-3807 ABOUT LAND/OBJECTS: (i) icon
 is badly positioned now I wonder how was this working before...

--HG--
branch : product-engine
---
 indra/llui/llscrolllistctrl.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp
index 78386220d93..478e270c986 100644
--- a/indra/llui/llscrolllistctrl.cpp
+++ b/indra/llui/llscrolllistctrl.cpp
@@ -1534,7 +1534,7 @@ LLRect LLScrollListCtrl::getCellRect(S32 row_index, S32 column_index)
 	S32 rect_bottom = getRowOffsetFromIndex(row_index);
 	LLScrollListColumn* columnp = getColumn(column_index);
 	cell_rect.setOriginAndSize(rect_left, rect_bottom,
-		rect_left + columnp->getWidth(), mLineHeight);
+		/*rect_left + */columnp->getWidth(), mLineHeight);
 	return cell_rect;
 }
 
-- 
GitLab


From b1fa6bb3421f5a281b36156a04fcbe0ab6b4bcfb Mon Sep 17 00:00:00 2001
From: Denis Serdjuk <dserduk@productengine.com>
Date: Thu, 28 Jan 2010 11:42:20 +0200
Subject: [PATCH 233/521] fix for  EXT-4186 List items are displayed as links
 in the FlatList if match URL regexp allow_html attribute was updated for 
 titles of group list items, group info panel, landmark info panel and for a
 title of floaters.

--HG--
branch : product-engine
---
 indra/llui/lldraghandle.cpp                                     | 1 +
 .../newview/skins/default/xui/en/panel_group_info_sidetray.xml  | 1 +
 indra/newview/skins/default/xui/en/panel_group_list_item.xml    | 1 +
 indra/newview/skins/default/xui/en/panel_landmark_info.xml      | 1 +
 indra/newview/skins/default/xui/en/panel_place_profile.xml      | 2 ++
 5 files changed, 6 insertions(+)

diff --git a/indra/llui/lldraghandle.cpp b/indra/llui/lldraghandle.cpp
index a93c6666486..832f1489020 100644
--- a/indra/llui/lldraghandle.cpp
+++ b/indra/llui/lldraghandle.cpp
@@ -113,6 +113,7 @@ void LLDragHandleTop::setTitle(const std::string& title)
 		params.follows.flags(FOLLOWS_TOP | FOLLOWS_LEFT | FOLLOWS_RIGHT);
 		params.font_shadow(LLFontGL::DROP_SHADOW_SOFT);
 		params.use_ellipses = true;
+		params.allow_html = false; //cancel URL replacement in floater title
 		mTitleBox = LLUICtrlFactory::create<LLTextBox> (params);
 		addChild( mTitleBox );
 	}
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 0893c204e76..1968d96205c 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
@@ -37,6 +37,7 @@ background_visible="true"
      top="2"
      width="23" />
     <text
+     allow_html="false"
      follows="top|left|right"
      font="SansSerifHugeBold"
      height="26"
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 c243d08b97e..b674b39d9b1 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
@@ -36,6 +36,7 @@
      top="2"
      width="20" />
    <text
+     allow_html="false"
      follows="left|right"
      font="SansSerifSmall"
      height="15"
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 67a4edbf32b..396699ad6c1 100644
--- a/indra/newview/skins/default/xui/en/panel_landmark_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_landmark_info.xml
@@ -229,6 +229,7 @@
                  value="Title:"
                  width="290" />
                 <text
+                 allow_html="false"
                  follows="left|top"
                  height="22"
                  layout="topleft"
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 8fc2ae39f0a..7ac771de27e 100644
--- a/indra/newview/skins/default/xui/en/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml
@@ -246,6 +246,7 @@
                 </layout_panel>
             </layout_stack>
             <text
+             allow_html="false"
              follows="left|top|right"
              font="SansSerifLarge"
              height="14"
@@ -258,6 +259,7 @@
              value="SampleRegion"
              width="290" />
             <text
+             allow_html="false"
              follows="left|top|right"
              height="14"
              layout="topleft"
-- 
GitLab


From d002c705b7b1772194b78f8c405e3907e76f445c Mon Sep 17 00:00:00 2001
From: Lynx Linden <lynx@lindenlab.com>
Date: Thu, 28 Jan 2010 11:10:10 +0000
Subject: [PATCH 234/521] EXT-4693: First steps at using remote inspector.

Now Object IMs that get sent to your local chat window will have
secondlife:///app/objectim SLapps, which will open the remote object
inspector for that object, not the avatar inspector.

However, we don't have all the information needed for the remote
object inspector, so I'm going to have to investigate extending the
inspector to request the missing information from the server.
---
 indra/newview/llchathistory.cpp   | 46 ++++++++++++++++++++++++++++++-
 indra/newview/llviewermessage.cpp |  2 +-
 2 files changed, 46 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index d6a7edee5b4..fd438001e1a 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -35,6 +35,7 @@
 #include "llinstantmessage.h"
 
 #include "llchathistory.h"
+#include "llcommandhandler.h"
 #include "llpanel.h"
 #include "lluictrlfactory.h"
 #include "llscrollcontainer.h"
@@ -46,6 +47,7 @@
 #include "llfloaterreg.h"
 #include "llmutelist.h"
 #include "llstylemap.h"
+#include "llslurl.h"
 #include "lllayoutstack.h"
 #include "llagent.h"
 
@@ -55,6 +57,38 @@ static LLDefaultChildRegistry::Register<LLChatHistory> r("chat_history");
 
 const static std::string NEW_LINE(rawstr_to_utf8("\n"));
 
+// support for secondlife:///app/objectim/{UUID}/ SLapps
+class LLObjectIMHandler : public LLCommandHandler
+{
+public:
+	// requests will be throttled from a non-trusted browser
+	LLObjectIMHandler() : LLCommandHandler("objectim", UNTRUSTED_THROTTLE) {}
+
+	bool handle(const LLSD& params, const LLSD& query_map, LLMediaCtrl* web)
+	{
+		if (params.size() < 1)
+		{
+			return false;
+		}
+
+		LLUUID object_id;
+		if (!object_id.set(params[0], FALSE))
+		{
+			return false;
+		}
+
+		LLSD payload;
+		payload["object_id"] = object_id;
+		payload["owner_id"] = query_map["owner"];
+		payload["name"] = query_map["name"];
+		payload["slurl"] = query_map["slurl"];
+		payload["group_owned"] = query_map["groupowned"];
+		LLFloaterReg::showInstance("inspect_remote_object", payload);
+		return true;
+	}
+};
+LLObjectIMHandler gObjectIMHandler;
+
 class LLChatHistoryHeader: public LLPanel
 {
 public:
@@ -524,7 +558,17 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_
 		if (utf8str_trim(chat.mFromName).size() != 0)
 		{
 			// Don't hotlink any messages from the system (e.g. "Second Life:"), so just add those in plain text.
-			if ( chat.mFromName != SYSTEM_FROM && chat.mFromID.notNull() )
+			if ( chat.mSourceType == CHAT_SOURCE_OBJECT )
+			{
+				std::string url = LLSLURL::buildCommand("objectim", chat.mFromID, "");
+				url += "?name=" + chat.mFromName;
+
+				LLStyle::Params link_params(style_params);
+				link_params.color.control = "HTMLLinkColor";
+				link_params.link_href = url;
+				mEditor->appendText(chat.mFromName + delimiter, false, link_params);
+			}
+			else if ( chat.mFromName != SYSTEM_FROM && chat.mFromID.notNull() )
 			{
 				LLStyle::Params link_params(style_params);
 				link_params.fillFrom(LLStyleMap::instance().lookupAgent(chat.mFromID));
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index d6ce356c4b0..e190c8c44ab 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -2236,7 +2236,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 			payload["SESSION_NAME"] = session_name;
 			if (from_group)
 			{
-				payload["groupowned"] = "true";
+				payload["group_owned"] = "true";
 			}
 			LLNotificationsUtil::add("ServerObjectMessage", substitutions, payload);
 		}
-- 
GitLab


From b3e25e1fbd9cfccc0363cb436ad4302ead974859 Mon Sep 17 00:00:00 2001
From: Lynx Linden <lynx@lindenlab.com>
Date: Thu, 28 Jan 2010 12:27:17 +0000
Subject: [PATCH 235/521] EXT-4693: More robust remote object inspector.

Disable buttons when we don't have enough information to perform their
function, and don't display a SLurl if we don't know the object's
location.
---
 indra/newview/llinspectremoteobject.cpp | 25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/indra/newview/llinspectremoteobject.cpp b/indra/newview/llinspectremoteobject.cpp
index e4d2eec242b..898f1cd9acd 100644
--- a/indra/newview/llinspectremoteobject.cpp
+++ b/indra/newview/llinspectremoteobject.cpp
@@ -31,17 +31,16 @@
 
 #include "llviewerprecompiledheaders.h"
 
+#include "llfloaterreg.h"
 #include "llinspectremoteobject.h"
 #include "llinspect.h"
-#include "llslurl.h"
 #include "llmutelist.h"
-#include "llurlaction.h"
 #include "llpanelblockedlist.h"
-#include "llfloaterreg.h"
+#include "llslurl.h"
+#include "lltrans.h"
 #include "llui.h"
 #include "lluictrl.h"
-
-class LLViewerObject;
+#include "llurlaction.h"
 
 //////////////////////////////////////////////////////////////////////////////
 // LLInspectRemoteObject
@@ -183,11 +182,25 @@ void LLInspectRemoteObject::update()
 			owner = LLSLURL::buildCommand("agent", mOwnerID, "about");
 		}
 	}
+	else
+	{
+		owner = LLTrans::getString("Unknown");
+	}
 	getChild<LLUICtrl>("object_owner")->setValue(owner);
 
 	// display the object's SLurl - click it to teleport
-	std::string url = "secondlife:///app/teleport/" + mSLurl;
+	std::string url;
+	if (! mSLurl.empty())
+	{
+		std::string url = "secondlife:///app/teleport/" + mSLurl;
+	}
 	getChild<LLUICtrl>("object_slurl")->setValue(url);
+
+	// disable the Map button if we don't have a SLurl
+	getChild<LLUICtrl>("map_btn")->setEnabled(! mSLurl.empty());
+
+	// disable the Block button if we don't have the owner ID
+	getChild<LLUICtrl>("block_btn")->setEnabled(! mOwnerID.isNull());
 }
 
 //////////////////////////////////////////////////////////////////////////////
-- 
GitLab


From f6fceac081a1f2d165679ce3eb233e97806cebe7 Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Thu, 28 Jan 2010 15:51:49 +0200
Subject: [PATCH 236/521] fixed EXT-3841 [BSI] "Send IM..." choosable in IM
 floater context menu

--HG--
branch : product-engine
---
 indra/llcommon/llchat.h         | 4 +++-
 indra/newview/llchathistory.cpp | 8 ++++++++
 indra/newview/llimfloater.cpp   | 1 +
 3 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/indra/llcommon/llchat.h b/indra/llcommon/llchat.h
index 5af79910068..46456882baa 100644
--- a/indra/llcommon/llchat.h
+++ b/indra/llcommon/llchat.h
@@ -87,7 +87,8 @@ class LLChat
 		mTimeStr(),
 		mPosAgent(),
 		mURL(),
-		mChatStyle(CHAT_STYLE_NORMAL)
+		mChatStyle(CHAT_STYLE_NORMAL),
+		mSessionID()
 	{ }
 	
 	std::string		mText;		// UTF-8 line of text
@@ -102,6 +103,7 @@ class LLChat
 	LLVector3		mPosAgent;
 	std::string		mURL;
 	EChatStyle		mChatStyle;
+	LLUUID			mSessionID;
 };
 
 #endif
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index d6a7edee5b4..2cdbd18996c 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -34,6 +34,7 @@
 
 #include "llinstantmessage.h"
 
+#include "llimview.h"
 #include "llchathistory.h"
 #include "llpanel.h"
 #include "lluictrlfactory.h"
@@ -183,6 +184,7 @@ class LLChatHistoryHeader: public LLPanel
 	void setup(const LLChat& chat,const LLStyle::Params& style_params) 
 	{
 		mAvatarID = chat.mFromID;
+		mSessionID = chat.mSessionID;
 		mSourceType = chat.mSourceType;
 		gCacheName->get(mAvatarID, FALSE, boost::bind(&LLChatHistoryHeader::nameUpdatedCallback, this, _1, _2, _3, _4));
 		if(chat.mFromID.isNull())
@@ -305,6 +307,11 @@ class LLChatHistoryHeader: public LLPanel
 				menu->setItemEnabled("Remove Friend", false);
 			}
 
+			if (mSessionID == LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, mAvatarID))
+			{
+				menu->setItemVisible("Send IM", false);
+			}
+
 			menu->buildDrawLabels();
 			menu->updateParent(LLMenuGL::sMenuContainer);
 			LLMenuGL::showPopup(this, menu, x, y);
@@ -344,6 +351,7 @@ class LLChatHistoryHeader: public LLPanel
 	std::string			mFirstName;
 	std::string			mLastName;
 	std::string			mFrom;
+	LLUUID				mSessionID;
 
 	S32					mMinUserNameWidth;
 };
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 73597e7de33..c0f22fcea22 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -599,6 +599,7 @@ void LLIMFloater::updateMessages()
 
 			LLChat chat;
 			chat.mFromID = from_id;
+			chat.mSessionID = mSessionID;
 			chat.mFromName = from;
 			chat.mText = message;
 			chat.mTimeStr = time;
-- 
GitLab


From 8f89681e068365a2c352c76eb408b99784621c04 Mon Sep 17 00:00:00 2001
From: Sergei Litovchuk <slitovchuk@productengine.com>
Date: Thu, 28 Jan 2010 20:06:57 +0200
Subject: [PATCH 237/521] Fixed normal bug (EXT-4610) [BSI] parcel settings
 icons do not match parcel settings - Changed parcel settings behavior to
 match viewer 1.23.

--HG--
branch : product-engine
---
 indra/newview/lllocationinputctrl.cpp                       | 6 ++++--
 indra/newview/llviewerparcelmgr.cpp                         | 4 ++--
 .../newview/skins/default/xui/en/widgets/location_input.xml | 2 +-
 3 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp
index 7f49a7defb5..050cfcc3d92 100644
--- a/indra/newview/lllocationinputctrl.cpp
+++ b/indra/newview/lllocationinputctrl.cpp
@@ -39,6 +39,7 @@
 #include "llbutton.h"
 #include "llfocusmgr.h"
 #include "llmenugl.h"
+#include "llparcel.h"
 #include "llstring.h"
 #include "lltrans.h"
 #include "lluictrlfactory.h"
@@ -672,11 +673,12 @@ void LLLocationInputCtrl::refreshParcelIcons()
 	if (show_properties)
 	{
 		LLViewerParcelMgr* vpm = LLViewerParcelMgr::getInstance();
-		bool allow_buy      = vpm->canAgentBuyParcel( vpm->getAgentParcel(), false);
+		LLParcel* agent_parcel = vpm->getAgentParcel();
+		bool allow_buy      = vpm->canAgentBuyParcel( agent_parcel, false);
 		bool allow_voice	= vpm->allowAgentVoice();
 		bool allow_fly		= vpm->allowAgentFly();
 		bool allow_push		= vpm->allowAgentPush();
-		bool allow_build	= vpm->allowAgentBuild();
+		bool allow_build	= agent_parcel && agent_parcel->getAllowModify(); // true when anyone is allowed to build. See EXT-4610.
 		bool allow_scripts	= vpm->allowAgentScripts();
 		bool allow_damage	= vpm->allowAgentDamage();
 		
diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp
index 10a95443f1f..b3450a8f367 100644
--- a/indra/newview/llviewerparcelmgr.cpp
+++ b/indra/newview/llviewerparcelmgr.cpp
@@ -706,8 +706,8 @@ bool LLViewerParcelMgr::allowAgentScripts() const
 bool LLViewerParcelMgr::allowAgentDamage() const
 {
 	LLViewerRegion* region = gAgent.getRegion();
-	return region && region->getAllowDamage()
-		&& mAgentParcel && mAgentParcel->getAllowDamage();
+	return (region && region->getAllowDamage())
+		|| (mAgentParcel && mAgentParcel->getAllowDamage());
 }
 
 BOOL LLViewerParcelMgr::isOwnedAt(const LLVector3d& pos_global) const
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 1c0a8ba7c5e..70a58b8e030 100644
--- a/indra/newview/skins/default/xui/en/widgets/location_input.xml
+++ b/indra/newview/skins/default/xui/en/widgets/location_input.xml
@@ -96,7 +96,7 @@
     name="damage_icon"
     width="14"
     height="13"
-    top="25"
+    top="21"
     left="2"
     follows="right|top"
     image_name="Parcel_Damage_Dark"
-- 
GitLab


From fbe21db8572c6d0e6a429a3ca209da6e26badf56 Mon Sep 17 00:00:00 2001
From: Sergei Litovchuk <slitovchuk@productengine.com>
Date: Thu, 28 Jan 2010 20:07:25 +0200
Subject: [PATCH 238/521] No ticket. Fixed possible build error.

--HG--
branch : product-engine
---
 indra/newview/llpanelplaces.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h
index 5de78b15951..110d7a10547 100644
--- a/indra/newview/llpanelplaces.h
+++ b/indra/newview/llpanelplaces.h
@@ -32,9 +32,9 @@
 #ifndef LL_LLPANELPLACES_H
 #define LL_LLPANELPLACES_H
 
-#include "llpanel.h"
+#include "lltimer.h"
 
-class LLTimer;
+#include "llpanel.h"
 
 class LLInventoryItem;
 class LLFilterEditor;
-- 
GitLab


From 1b46e8894a40d46df948a034dd0413e97147748d Mon Sep 17 00:00:00 2001
From: Dmitry Zaporozhan <dzaporozhan@productengine.com>
Date: Thu, 28 Jan 2010 17:17:55 +0200
Subject: [PATCH 239/521] Fixed normal bug EXT-4734 - In profile side-panels,
 area for homepage URL appears clickable without URL.

--HG--
branch : product-engine
---
 indra/newview/llpanelavatar.cpp | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp
index fe5b20813ac..48dd5513bdc 100644
--- a/indra/newview/llpanelavatar.cpp
+++ b/indra/newview/llpanelavatar.cpp
@@ -635,6 +635,9 @@ void LLPanelAvatarProfile::fillCommonData(const LLAvatarData* avatar_data)
 	childSetValue("2nd_life_pic", avatar_data->image_id);
 	childSetValue("real_world_pic", avatar_data->fl_image_id);
 	childSetValue("homepage_edit", avatar_data->profile_url);
+
+	// Hide home page textbox if no page was set to fix "homepage URL appears clickable without URL - EXT-4734"
+	childSetVisible("homepage_edit", !avatar_data->profile_url.empty());
 }
 
 void LLPanelAvatarProfile::fillPartnerData(const LLAvatarData* avatar_data)
-- 
GitLab


From fee014bd82cd78f07bcc88c45109a1ea2b2eee24 Mon Sep 17 00:00:00 2001
From: Lynx Linden <lynx@lindenlab.com>
Date: Thu, 28 Jan 2010 15:38:55 +0000
Subject: [PATCH 240/521] EXT-4693: Pass through owner ID to remote object
 inspector.

Plumbing to pass the owner ID for a chatting object down into the
LLChatHistory::appendMessage() method where we create the objectim
SLapp that will bring up the remote object inspector. Pheww.

For object notifications that are displayed as text chat, we
---
 indra/newview/llchathistory.cpp         | 16 +++++++++++++++-
 indra/newview/llchathistory.h           |  7 +++++--
 indra/newview/llnearbychat.cpp          |  6 ++++--
 indra/newview/llnearbychat.h            |  2 +-
 indra/newview/llnearbychathandler.cpp   |  4 ++--
 indra/newview/llnearbychathandler.h     |  2 +-
 indra/newview/llnotificationhandler.h   |  2 +-
 indra/newview/llnotificationmanager.cpp |  7 ++++---
 indra/newview/llnotificationmanager.h   |  2 +-
 indra/newview/llviewermessage.cpp       | 13 +++++++++----
 10 files changed, 43 insertions(+), 18 deletions(-)

diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index fd438001e1a..dd9f0c2ebed 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -50,6 +50,8 @@
 #include "llslurl.h"
 #include "lllayoutstack.h"
 #include "llagent.h"
+#include "llviewerregion.h"
+#include "llworld.h"
 
 #include "llsidetray.h"//for blocked objects panel
 
@@ -491,8 +493,9 @@ void LLChatHistory::clear()
 	mLastFromID = LLUUID::null;
 }
 
-void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_chat_history, const LLStyle::Params& input_append_params)
+void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LLStyle::Params& input_append_params)
 {
+	bool use_plain_text_chat_history = args["use_plain_text_chat_history"].asBoolean();
 	if (!mEditor->scrolledToEnd() && chat.mFromID != gAgent.getID() && !chat.mFromName.empty())
 	{
 		mUnreadChatSources.insert(chat.mFromName);
@@ -560,9 +563,20 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_
 			// Don't hotlink any messages from the system (e.g. "Second Life:"), so just add those in plain text.
 			if ( chat.mSourceType == CHAT_SOURCE_OBJECT )
 			{
+				// for object IMs, create a secondlife:///app/objectim SLapp
 				std::string url = LLSLURL::buildCommand("objectim", chat.mFromID, "");
 				url += "?name=" + chat.mFromName;
+				url += "&owner=" + args["owner_id"].asString();
 
+				LLViewerRegion *region = LLWorld::getInstance()->getRegionFromPosAgent(chat.mPosAgent);
+				if (region)
+				{
+					S32 x, y, z;
+					LLSLURL::globalPosToXYZ(LLVector3d(chat.mPosAgent), x, y, z);
+					url += "&slurl=" + region->getName() + llformat("/%d/%d/%d", x, y, z);
+				}
+
+				// set the link for the object name to be the objectim SLapp
 				LLStyle::Params link_params(style_params);
 				link_params.color.control = "HTMLLinkColor";
 				link_params.link_href = url;
diff --git a/indra/newview/llchathistory.h b/indra/newview/llchathistory.h
index c2c60e60cf9..32600bb71d0 100644
--- a/indra/newview/llchathistory.h
+++ b/indra/newview/llchathistory.h
@@ -113,11 +113,14 @@ class LLChatHistory : public LLUICtrl
 		 * Appends a widget message.
 		 * If last user appended message, concurs with current user,
 		 * separator is added before the message, otherwise header is added.
+		 * The args LLSD contains:
+		 * - use_plain_text_chat_history (bool) - whether to add message as plain text.
+		 * - owner_id (LLUUID) - the owner ID for object chat
 		 * @param chat - base chat message.
-		 * @param use_plain_text_chat_history  - whether to add message as plain text.
+		 * @param args - additional arguments
 		 * @param input_append_params - font style.
 		 */
-		void appendMessage(const LLChat& chat, const bool use_plain_text_chat_history = false, const LLStyle::Params& input_append_params = LLStyle::Params());
+		void appendMessage(const LLChat& chat, const LLSD &args = LLSD(), const LLStyle::Params& input_append_params = LLStyle::Params());
 		/*virtual*/ void clear();
 		/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
 
diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index 0a8d020b4ff..90482eb74d4 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -153,7 +153,7 @@ std::string appendTime()
 }
 
 
-void	LLNearbyChat::addMessage(const LLChat& chat,bool archive)
+void	LLNearbyChat::addMessage(const LLChat& chat,bool archive,const LLSD &args)
 {
 	if (chat.mChatType == CHAT_TYPE_DEBUG_MSG)
 	{
@@ -184,7 +184,9 @@ void	LLNearbyChat::addMessage(const LLChat& chat,bool archive)
 	if (!chat.mMuted)
 	{
 		tmp_chat.mFromName = chat.mFromName;
-		mChatHistory->appendMessage(chat, use_plain_text_chat_history);
+		LLSD chat_args = args;
+		chat_args["use_plain_text_chat_history"] = use_plain_text_chat_history;
+		mChatHistory->appendMessage(chat, chat_args);
 	}
 
 	if(archive)
diff --git a/indra/newview/llnearbychat.h b/indra/newview/llnearbychat.h
index 938b77df7ac..5fb8ade19e7 100644
--- a/indra/newview/llnearbychat.h
+++ b/indra/newview/llnearbychat.h
@@ -47,7 +47,7 @@ class LLNearbyChat: public LLDockableFloater
 	~LLNearbyChat();
 
 	BOOL	postBuild			();
-	void	addMessage			(const LLChat& message,bool archive = true);	
+	void	addMessage			(const LLChat& message,bool archive = true, const LLSD &args = LLSD());	
 	void	onNearbyChatContextMenuItemClicked(const LLSD& userdata);
 	bool	onNearbyChatCheckContextMenuItem(const LLSD& userdata);
 
diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp
index a1a9d84c14b..c08ca30babe 100644
--- a/indra/newview/llnearbychathandler.cpp
+++ b/indra/newview/llnearbychathandler.cpp
@@ -319,7 +319,7 @@ void LLNearbyChatHandler::initChannel()
 
 
 
-void LLNearbyChatHandler::processChat(const LLChat& chat_msg)
+void LLNearbyChatHandler::processChat(const LLChat& chat_msg, const LLSD &args)
 {
 	if(chat_msg.mMuted == TRUE)
 		return;
@@ -337,7 +337,7 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg)
 		//if(tmp_chat.mFromName.empty() && tmp_chat.mFromID!= LLUUID::null)
 		//	tmp_chat.mFromName = tmp_chat.mFromID.asString();
 	}
-	nearby_chat->addMessage(chat_msg);
+	nearby_chat->addMessage(chat_msg, true, args);
 	if(nearby_chat->getVisible())
 		return;//no need in toast if chat is visible
 
diff --git a/indra/newview/llnearbychathandler.h b/indra/newview/llnearbychathandler.h
index fb2abac6a47..01a6de56103 100644
--- a/indra/newview/llnearbychathandler.h
+++ b/indra/newview/llnearbychathandler.h
@@ -45,7 +45,7 @@ class LLNearbyChatHandler : public LLChatHandler
 	virtual ~LLNearbyChatHandler();
 
 
-	virtual void processChat(const LLChat& chat_msg);
+	virtual void processChat(const LLChat& chat_msg, const LLSD &args);
 
 protected:
 	virtual void onDeleteToast(LLToast* toast);
diff --git a/indra/newview/llnotificationhandler.h b/indra/newview/llnotificationhandler.h
index 0fb438bfe98..e57674d31c7 100644
--- a/indra/newview/llnotificationhandler.h
+++ b/indra/newview/llnotificationhandler.h
@@ -135,7 +135,7 @@ class LLChatHandler : public LLEventHandler
 public:
 	virtual ~LLChatHandler() {};
 
-	virtual void processChat(const LLChat& chat_msg)=0;
+	virtual void processChat(const LLChat& chat_msg, const LLSD &args)=0;
 };
 
 /**
diff --git a/indra/newview/llnotificationmanager.cpp b/indra/newview/llnotificationmanager.cpp
index 66bc217d158..4401bb953f9 100644
--- a/indra/newview/llnotificationmanager.cpp
+++ b/indra/newview/llnotificationmanager.cpp
@@ -107,16 +107,17 @@ bool LLNotificationManager::onNotification(const LLSD& notify)
 }
 
 //--------------------------------------------------------------------------
-void LLNotificationManager::onChat(const LLChat& msg,ENotificationType type)
+void LLNotificationManager::onChat(const LLChat& msg, const LLSD &args)
 {
-	switch(type)
+	// check ENotificationType argument
+	switch(args["type"].asInteger())
 	{
 	case NT_NEARBYCHAT:
 		{
 			LLNearbyChatHandler* handle = dynamic_cast<LLNearbyChatHandler*>(mNotifyHandlers["nearbychat"].get());
 
 			if(handle)
-				handle->processChat(msg);
+				handle->processChat(msg, args);
 		}
 		break;
 	default: 	//no need to handle all enum types
diff --git a/indra/newview/llnotificationmanager.h b/indra/newview/llnotificationmanager.h
index 072fc6f24c3..575aa69c4d3 100644
--- a/indra/newview/llnotificationmanager.h
+++ b/indra/newview/llnotificationmanager.h
@@ -66,7 +66,7 @@ class LLNotificationManager : public LLSingleton<LLNotificationManager>
 	bool onNotification(const LLSD& notification);
 
 	// this method reacts on chat notifications and calls an appropriate handler
-	void onChat(const LLChat& msg,ENotificationType type);
+	void onChat(const LLChat& msg, const LLSD &args);
 
 	// get a handler for a certain type of notification
 	LLEventHandler* getHandlerForNotification(std::string notification_type);
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 43c30b4c524..f24fe07065e 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -2545,7 +2545,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
 	
 	// Object owner for objects
 	msg->getUUID("ChatData", "OwnerID", owner_id);
-	
+
 	msg->getU8Fast(_PREHASH_ChatData, _PREHASH_SourceType, source_temp);
 	chat.mSourceType = (EChatSourceType)source_temp;
 
@@ -2574,7 +2574,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
 	if (chatter)
 	{
 		chat.mPosAgent = chatter->getPositionAgent();
-		
+
 		// Make swirly things only for talking objects. (not script debug messages, though)
 		if (chat.mSourceType == CHAT_SOURCE_OBJECT 
 			&& chat.mChatType != CHAT_TYPE_DEBUG_MSG)
@@ -2719,8 +2719,13 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
 
 		chat.mMuted = is_muted && !is_linden;
 
-		LLNotificationsUI::LLNotificationManager::instance().onChat(
-					chat, LLNotificationsUI::NT_NEARBYCHAT);
+		// pass owner_id to chat so that we can display the remote
+		// object inspect for an object that is chatting with you
+		LLSD args;
+		args["type"] = LLNotificationsUI::NT_NEARBYCHAT;
+		args["owner_id"] = owner_id;
+
+		LLNotificationsUI::LLNotificationManager::instance().onChat(chat, args);
 	}
 }
 
-- 
GitLab


From da08cc05af85ac334cabd943a5d9fcbcaa1500b6 Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Thu, 28 Jan 2010 18:28:08 +0200
Subject: [PATCH 241/521] fixed win build

--HG--
branch : product-engine
---
 indra/newview/lllocationhistory.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/lllocationhistory.cpp b/indra/newview/lllocationhistory.cpp
index f494f7d7c1d..47139758e59 100644
--- a/indra/newview/lllocationhistory.cpp
+++ b/indra/newview/lllocationhistory.cpp
@@ -62,7 +62,7 @@ void LLLocationHistory::addItem(const LLLocationHistoryItem& item) {
 	{
 		mItems.erase(mItems.begin(), mItems.end()-max_items);
 	}
-	llassert(mItems.size() <= max_items);
+	llassert((S32) mItems.size() <= max_items);
 }
 
 /*
-- 
GitLab


From 70b6d603ed5b8915c6dace4ba6d017bbc1484955 Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Thu, 28 Jan 2010 18:30:58 +0200
Subject: [PATCH 242/521] got rid of LLFloaterIMPanel usage for  EXT-1196
 Stalls on startup in LLPanelFriends::refreshNames

--HG--
branch : product-engine
---
 indra/newview/llfloaterchatterbox.cpp |   4 +-
 indra/newview/llimview.cpp            | 237 +-------------------------
 indra/newview/llimview.h              |  28 +--
 indra/newview/llmutelist.cpp          |   6 -
 indra/newview/lltoolbar.cpp           |  12 +-
 5 files changed, 19 insertions(+), 268 deletions(-)

diff --git a/indra/newview/llfloaterchatterbox.cpp b/indra/newview/llfloaterchatterbox.cpp
index 84b423399e2..774caaec904 100644
--- a/indra/newview/llfloaterchatterbox.cpp
+++ b/indra/newview/llfloaterchatterbox.cpp
@@ -216,11 +216,11 @@ void LLFloaterChatterBox::onOpen(const LLSD& key)
 	}
 	else if (key.isDefined())
 	{
-		LLFloaterIMPanel* impanel = gIMMgr->findFloaterBySession(key.asUUID());
+		/*LLFloaterIMPanel* impanel = gIMMgr->findFloaterBySession(key.asUUID());
 		if (impanel)
 		{
 			impanel->openFloater();
-		}
+		}*/
 	}
 }
 
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index c4b1d7a9f4b..213862df4ba 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -538,13 +538,6 @@ void LLIMModel::processSessionInitializedReply(const LLUUID& old_session_id, con
 			gIMMgr->startCall(new_session_id);
 		}
 	}
-
-	//*TODO remove this "floater" stuff when Communicate Floater is gone
-	LLFloaterIMPanel* floater = gIMMgr->findFloaterBySession(old_session_id);
-	if (floater)
-	{
-		floater->sessionInitReplyReceived(new_session_id);
-	}
 }
 
 void LLIMModel::testMessages()
@@ -679,15 +672,6 @@ bool LLIMModel::proccessOnlineOfflineNotification(
 	const LLUUID& session_id, 
 	const std::string& utf8_text)
 {
-	// Add message to old one floater
-	LLFloaterIMPanel *floater = gIMMgr->findFloaterBySession(session_id);
-	if ( floater )
-	{
-		if ( !utf8_text.empty() )
-		{
-			floater->addHistoryLine(utf8_text, LLUIColorTable::instance().getColor("SystemChatColor"));
-		}
-	}
 	// Add system message to history
 	return addMessage(session_id, SYSTEM_FROM, LLUUID::null, utf8_text);
 }
@@ -955,9 +939,6 @@ void LLIMModel::sendMessage(const std::string& utf8_text,
 
 		history_echo += ": " + utf8_text;
 
-		LLFloaterIMPanel* floater = gIMMgr->findFloaterBySession(im_session_id);
-		if (floater) floater->addHistoryLine(history_echo, LLUIColorTable::instance().getColor("IMChatColor"), true, gAgent.getID());
-
 		LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(im_session_id);
 		if (speaker_mgr)
 		{
@@ -1275,33 +1256,16 @@ LLUUID LLIMMgr::computeSessionID(
 	return session_id;
 }
 
-inline LLFloater* getFloaterBySessionID(const LLUUID session_id)
-{
-	LLFloater* floater = NULL;
-	if ( gIMMgr )
-	{
-		floater = dynamic_cast < LLFloater* >
-			( gIMMgr->findFloaterBySession(session_id) );
-	}
-	if ( !floater )
-	{
-		floater = dynamic_cast < LLFloater* >
-			( LLIMFloater::findInstance(session_id) );
-	}
-	return floater;
-}
-
 void
 LLIMMgr::showSessionStartError(
 	const std::string& error_string,
 	const LLUUID session_id)
 {
-	const LLFloater* floater = getFloaterBySessionID (session_id);
-	if (!floater) return;
+	if (!hasSession(session_id)) return;
 
 	LLSD args;
 	args["REASON"] = LLTrans::getString(error_string);
-	args["RECIPIENT"] = floater->getTitle();
+	args["RECIPIENT"] = LLIMModel::getInstance()->getName(session_id);
 
 	LLSD payload;
 	payload["session_id"] = session_id;
@@ -1339,12 +1303,11 @@ LLIMMgr::showSessionForceClose(
 	const std::string& reason_string,
 	const LLUUID session_id)
 {
-	const LLFloater* floater = getFloaterBySessionID (session_id);
-	if (!floater) return;
+	if (!hasSession(session_id)) return;
 
 	LLSD args;
 
-	args["NAME"] = floater->getTitle();
+	args["NAME"] = LLIMModel::getInstance()->getName(session_id);
 	args["REASON"] = LLTrans::getString(reason_string);
 
 	LLSD payload;
@@ -1366,7 +1329,7 @@ LLIMMgr::onConfirmForceCloseError(
 	//only 1 option really
 	LLUUID session_id = notification["payload"]["session_id"];
 
-	LLFloater* floater = getFloaterBySessionID (session_id);
+	LLFloater* floater = LLIMFloater::findInstance(session_id);
 	if ( floater )
 	{
 		floater->closeFloater(FALSE);
@@ -2144,7 +2107,6 @@ void LLIMMgr::addMessage(
 		return;
 	}
 
-	LLFloaterIMPanel* floater;
 	LLUUID new_session_id = session_id;
 	if (new_session_id.isNull())
 	{
@@ -2163,32 +2125,7 @@ void LLIMMgr::addMessage(
 	if (new_session)
 	{
 		LLIMModel::getInstance()->newSession(new_session_id, fixed_session_name, dialog, other_participant_id);
-	}
-
-	floater = findFloaterBySession(new_session_id);
-	if (!floater)
-	{
-		floater = findFloaterBySession(other_participant_id);
-		if (floater)
-		{
-			llinfos << "found the IM session " << session_id 
-				<< " by participant " << other_participant_id << llendl;
-		}
-	}
-
-	// create IM window as necessary
-	if(!floater)
-	{
-		floater = createFloater(
-			new_session_id,
-			other_participant_id,
-			fixed_session_name,
-			dialog,
-			FALSE);
-	}
 
-	if (new_session)
-	{
 		// When we get a new IM, and if you are a god, display a bit
 		// of information about the source. This is to help liaisons
 		// when answering questions.
@@ -2207,50 +2144,13 @@ void LLIMMgr::addMessage(
 			//<< "*** region_id: " << region_id << std::endl
 			//<< "*** position: " << position << std::endl;
 
-			floater->addHistoryLine(bonus_info.str(), LLUIColorTable::instance().getColor("SystemChatColor"));
 			LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, bonus_info.str());
 		}
 
 		make_ui_sound("UISndNewIncomingIMSession");
 	}
 
-	// now add message to floater
-	bool is_from_system = target_id.isNull() || (from == SYSTEM_FROM);
-	const LLColor4& color = ( is_from_system ? 
-							  LLUIColorTable::instance().getColor("SystemChatColor") : 
-							  LLUIColorTable::instance().getColor("IMChatColor"));
-	if ( !link_name )
-	{
-		floater->addHistoryLine(msg,color); // No name to prepend, so just add the message normally
-	}
-	else
-	{
-		floater->addHistoryLine(msg, color, true, other_participant_id, from); // Insert linked name to front of message
-	}
-
 	LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, msg);
-
-	if( !LLFloaterReg::instanceVisible("communicate") && !floater->getVisible())
-	{
-		LLFloaterChatterBox* chat_floater = LLFloaterChatterBox::getInstance();
-		
-		//if the IM window is not open and the floater is not visible (i.e. not torn off)
-		LLFloater* previouslyActiveFloater = chat_floater->getActiveFloater();
-
-		// select the newly added floater (or the floater with the new line added to it).
-		// it should be there.
-		chat_floater->selectFloater(floater);
-
-		//there was a previously unseen IM, make that old tab flashing
-		//it is assumed that the most recently unseen IM tab is the one current selected/active
-		if ( previouslyActiveFloater && getIMReceived() )
-		{
-			chat_floater->setFloaterFlashing(previouslyActiveFloater, TRUE);
-		}
-
-		//notify of a new IM
-		notifyNewIM();
-	}
 }
 
 void LLIMMgr::addSystemMessage(const LLUUID& session_id, const std::string& message_name, const LLSD& args)
@@ -2414,21 +2314,6 @@ LLUUID LLIMMgr::addSession(
 		LLIMModel::getInstance()->newSession(session_id, name, dialog, other_participant_id, ids, voice);
 	}
 
-	//*TODO remove this "floater" thing when Communicate Floater's gone
-	LLFloaterIMPanel* floater = findFloaterBySession(session_id);
-	if(!floater)
-	{
-		// On creation, use the first element of ids as the
-		// "other_participant_id"
-		floater = createFloater(
-			session_id,
-			other_participant_id,
-			name,
-			dialog,
-			TRUE,
-			ids);
-	}
-
 	//we don't need to show notes about online/offline, mute/unmute users' statuses for existing sessions
 	if (!new_session) return session_id;
 	
@@ -2439,7 +2324,7 @@ LLUUID LLIMMgr::addSession(
 	// Only warn for regular IMs - not group IMs
 	if( dialog == IM_NOTHING_SPECIAL )
 	{
-		noteMutedUsers(session_id, floater, ids);
+		noteMutedUsers(session_id, ids);
 	}
 
 	return session_id;
@@ -2460,14 +2345,6 @@ void LLIMMgr::removeSession(const LLUUID& session_id)
 {
 	llassert_always(hasSession(session_id));
 	
-	//*TODO remove this floater thing when Communicate Floater is being deleted (IB)
-	LLFloaterIMPanel* floater = findFloaterBySession(session_id);
-	if(floater)
-	{
-		mFloaters.erase(floater->getHandle());
-		LLFloaterChatterBox::getInstance()->removeFloater(floater);
-	}
-
 	clearPendingInvitation(session_id);
 	clearPendingAgentListUpdates(session_id);
 
@@ -2577,50 +2454,12 @@ void LLIMMgr::onInviteNameLookup(LLSD payload, const LLUUID& id, const std::stri
 	LLFloaterReg::showInstance("incoming_call", payload, TRUE);
 }
 
+//*TODO disconnects all sessions
 void LLIMMgr::disconnectAllSessions()
 {
-	LLFloaterIMPanel* floater = NULL;
-	std::set<LLHandle<LLFloater> >::iterator handle_it;
-	for(handle_it = mFloaters.begin();
-		handle_it != mFloaters.end();
-		)
-	{
-		floater = (LLFloaterIMPanel*)handle_it->get();
-
-		// MUST do this BEFORE calling floater->onClose() because that may remove the item from the set, causing the subsequent increment to crash.
-		++handle_it;
-
-		if (floater)
-		{
-			floater->setEnabled(FALSE);
-			floater->closeFloater(TRUE);
-		}
-	}
+	//*TODO disconnects all IM sessions
 }
 
-
-// This method returns the im panel corresponding to the uuid
-// provided. The uuid can either be a session id or an agent
-// id. Returns NULL if there is no matching panel.
-LLFloaterIMPanel* LLIMMgr::findFloaterBySession(const LLUUID& session_id)
-{
-	LLFloaterIMPanel* rv = NULL;
-	std::set<LLHandle<LLFloater> >::iterator handle_it;
-	for(handle_it = mFloaters.begin();
-		handle_it != mFloaters.end();
-		++handle_it)
-	{
-		rv = (LLFloaterIMPanel*)handle_it->get();
-		if(rv && session_id == rv->getSessionID())
-		{
-			break;
-		}
-		rv = NULL;
-	}
-	return rv;
-}
-
-
 BOOL LLIMMgr::hasSession(const LLUUID& session_id)
 {
 	return LLIMModel::getInstance()->findIMSession(session_id) != NULL;
@@ -2804,49 +2643,14 @@ bool LLIMMgr::isVoiceCall(const LLUUID& session_id)
 	return im_session->mStartedAsIMCall;
 }
 
-// create a floater and update internal representation for
-// consistency. Returns the pointer, caller (the class instance since
-// it is a private method) is not responsible for deleting the
-// pointer.  Add the floater to this but do not select it.
-LLFloaterIMPanel* LLIMMgr::createFloater(
-	const LLUUID& session_id,
-	const LLUUID& other_participant_id,
-	const std::string& session_label,
-	EInstantMessage dialog,
-	BOOL user_initiated,
-	const LLDynamicArray<LLUUID>& ids)
-{
-	if (session_id.isNull())
-	{
-		llwarns << "Creating LLFloaterIMPanel with null session ID" << llendl;
-	}
-
-	llinfos << "LLIMMgr::createFloater: from " << other_participant_id 
-			<< " in session " << session_id << llendl;
-	LLFloaterIMPanel* floater = new LLFloaterIMPanel(session_label,
-													 session_id,
-													 other_participant_id,
-													 ids,
-													 dialog);
-	LLTabContainer::eInsertionPoint i_pt = user_initiated ? LLTabContainer::RIGHT_OF_CURRENT : LLTabContainer::END;
-	LLFloaterChatterBox::getInstance()->addFloater(floater, FALSE, i_pt);
-	mFloaters.insert(floater->getHandle());
-	return floater;
-}
-
 void LLIMMgr::noteOfflineUsers(
 	const LLUUID& session_id,
-	LLFloaterIMPanel* floater,
 	const LLDynamicArray<LLUUID>& ids)
 {
 	S32 count = ids.count();
 	if(count == 0)
 	{
 		const std::string& only_user = LLTrans::getString("only_user_message");
-		if (floater)
-		{
-			floater->addHistoryLine(only_user, LLUIColorTable::instance().getColor("SystemChatColor"));
-		}
 		LLIMModel::getInstance()->addMessage(session_id, SYSTEM_FROM, LLUUID::null, only_user);
 	}
 	else
@@ -2870,7 +2674,7 @@ void LLIMMgr::noteOfflineUsers(
 	}
 }
 
-void LLIMMgr::noteMutedUsers(const LLUUID& session_id, LLFloaterIMPanel* floater,
+void LLIMMgr::noteMutedUsers(const LLUUID& session_id,
 								  const LLDynamicArray<LLUUID>& ids)
 {
 	// Don't do this if we don't have a mute list.
@@ -2891,9 +2695,6 @@ void LLIMMgr::noteMutedUsers(const LLUUID& session_id, LLFloaterIMPanel* floater
 			{
 				LLUIString muted = LLTrans::getString("muted_message");
 
-				//*TODO remove this "floater" thing when Communicate Floater's gone
-				floater->addHistoryLine(muted);
-
 				im_model->addMessage(session_id, SYSTEM_FROM, LLUUID::null, muted);
 				break;
 			}
@@ -2914,12 +2715,6 @@ void LLIMMgr::processIMTypingStop(const LLIMInfo* im_info)
 void LLIMMgr::processIMTypingCore(const LLIMInfo* im_info, BOOL typing)
 {
 	LLUUID session_id = computeSessionID(im_info->mIMType, im_info->mFromID);
-	LLFloaterIMPanel* floater = findFloaterBySession(session_id);
-	if (floater)
-	{
-		floater->processIMTyping(im_info, typing);
-	}
-
 	LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
 	if ( im_floater )
 	{
@@ -2965,15 +2760,6 @@ class LLViewerChatterBoxSessionStartReply : public LLHTTPNode
 				speaker_mgr->updateSpeakers(gIMMgr->getPendingAgentListUpdates(session_id));
 			}
 
-			LLFloaterIMPanel* floaterp = gIMMgr->findFloaterBySession(session_id);
-			if (floaterp)
-			{
-				if ( body.has("session_info") )
-				{
-					floaterp->processSessionUpdate(body["session_info"]);
-				}
-			}
-
 			LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
 			if ( im_floater )
 			{
@@ -3068,11 +2854,6 @@ class LLViewerChatterBoxSessionUpdate : public LLHTTPNode
 		const LLSD& input) const
 	{
 		LLUUID session_id = input["body"]["session_id"].asUUID();
-		LLFloaterIMPanel* floaterp = gIMMgr->findFloaterBySession(session_id);
-		if (floaterp)
-		{
-			floaterp->processSessionUpdate(input["body"]["info"]);
-		}
 		LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
 		if ( im_floater )
 		{
diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h
index 0386ff234dd..17406025f21 100644
--- a/indra/newview/llimview.h
+++ b/indra/newview/llimview.h
@@ -41,7 +41,6 @@
 
 class LLFloaterChatterBox;
 class LLUUID;
-class LLFloaterIMPanel;
 class LLFriendObserver;
 class LLCallDialogManager;	
 class LLIMSpeakerMgr;
@@ -386,11 +385,6 @@ class LLIMMgr : public LLSingleton<LLIMMgr>
 
 	BOOL hasSession(const LLUUID& session_id);
 
-	// This method returns the im panel corresponding to the uuid
-	// provided. The uuid must be a session id. Returns NULL if there
-	// is no matching panel.
-	LLFloaterIMPanel* findFloaterBySession(const LLUUID& session_id);
-
 	static LLUUID computeSessionID(EInstantMessage dialog, const LLUUID& other_participant_id);
 
 	void clearPendingInvitation(const LLUUID& session_id);
@@ -402,10 +396,6 @@ class LLIMMgr : public LLSingleton<LLIMMgr>
 		const LLSD& updates);
 	void clearPendingAgentListUpdates(const LLUUID& session_id);
 
-	//HACK: need a better way of enumerating existing session, or listening to session create/destroy events
-	//@deprecated, is used only by LLToolBox, which is not used anywhere, right? (IB)
-	const std::set<LLHandle<LLFloater> >& getIMFloaterHandles() { return mFloaters; }
-
 	void addSessionObserver(LLIMSessionObserver *);
 	void removeSessionObserver(LLIMSessionObserver *);
 
@@ -436,23 +426,12 @@ class LLIMMgr : public LLSingleton<LLIMMgr>
 	 */
 	void removeSession(const LLUUID& session_id);
 
-	// create a panel and update internal representation for
-	// consistency. Returns the pointer, caller (the class instance
-	// since it is a private method) is not responsible for deleting
-	// the pointer.
-	LLFloaterIMPanel* createFloater(const LLUUID& session_id,
-									const LLUUID& target_id,
-									const std::string& name,
-									EInstantMessage dialog,
-									BOOL user_initiated = FALSE, 
-									const LLDynamicArray<LLUUID>& ids = LLDynamicArray<LLUUID>());
-
 	// This simple method just iterates through all of the ids, and
 	// prints a simple message if they are not online. Used to help
 	// reduce 'hello' messages to the linden employees unlucky enough
 	// to have their calling card in the default inventory.
-	void noteOfflineUsers(const LLUUID& session_id, LLFloaterIMPanel* panel, const LLDynamicArray<LLUUID>& ids);
-	void noteMutedUsers(const LLUUID& session_id, LLFloaterIMPanel* panel, const LLDynamicArray<LLUUID>& ids);
+	void noteOfflineUsers(const LLUUID& session_id, const LLDynamicArray<LLUUID>& ids);
+	void noteMutedUsers(const LLUUID& session_id, const LLDynamicArray<LLUUID>& ids);
 
 	void processIMTypingCore(const LLIMInfo* im_info, BOOL typing);
 
@@ -464,9 +443,6 @@ class LLIMMgr : public LLSingleton<LLIMMgr>
 
 private:
 	
-	//*TODO should be deleted when Communicate Floater is being deleted
-	std::set<LLHandle<LLFloater> > mFloaters;
-
 	typedef std::list <LLIMSessionObserver *> session_observers_list_t;
 	session_observers_list_t mSessionObservers;
 
diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp
index c1666f56667..45e5408b1e7 100644
--- a/indra/newview/llmutelist.cpp
+++ b/indra/newview/llmutelist.cpp
@@ -472,12 +472,6 @@ void notify_automute_callback(const LLUUID& agent_id, const std::string& first_n
 
 		if (reason == LLMuteList::AR_IM)
 		{
-			LLFloaterIMPanel *timp = gIMMgr->findFloaterBySession(agent_id);
-			if (timp)
-			{
-				timp->addHistoryLine(message);
-			}
-
 			LLIMModel::getInstance()->addMessage(agent_id, SYSTEM_FROM, LLUUID::null, message);
 		}
 	}
diff --git a/indra/newview/lltoolbar.cpp b/indra/newview/lltoolbar.cpp
index e7dc7ae522c..4a66d88fa28 100644
--- a/indra/newview/lltoolbar.cpp
+++ b/indra/newview/lltoolbar.cpp
@@ -290,7 +290,7 @@ void LLToolBar::updateCommunicateList()
 
 	std::set<LLHandle<LLFloater> >::const_iterator floater_handle_it;
 
-	if (gIMMgr->getIMFloaterHandles().size() > 0)
+	/*if (gIMMgr->getIMFloaterHandles().size() > 0)
 	{
 		communicate_button->addSeparator(ADD_TOP);
 	}
@@ -316,7 +316,7 @@ void LLToolBar::updateCommunicateList()
 			}
 			itemp = communicate_button->addElement(im_sd, ADD_TOP);
 		}
-	}
+	}*/
 
 	communicate_button->setValue(selected);
 }
@@ -340,7 +340,7 @@ void LLToolBar::onClickCommunicate(LLUICtrl* ctrl, const LLSD& user_data)
 	}
 	else if (selected_option.asString() == "redock")
 	{
-		LLFloaterChatterBox* chatterbox_instance = LLFloaterChatterBox::getInstance();
+		/*LLFloaterChatterBox* chatterbox_instance = LLFloaterChatterBox::getInstance();
 		if(chatterbox_instance)
 		{
 			chatterbox_instance->addFloater(LLFloaterMyFriends::getInstance(), FALSE);
@@ -361,7 +361,7 @@ void LLToolBar::onClickCommunicate(LLUICtrl* ctrl, const LLSD& user_data)
 				}
 			}
 			LLFloaterReg::showInstance("communicate", session_to_show);
-		}
+		}*/
 	}
 	else if (selected_option.asString() == "mute list")
 	{
@@ -369,11 +369,11 @@ void LLToolBar::onClickCommunicate(LLUICtrl* ctrl, const LLSD& user_data)
 	}
 	else if (selected_option.isUndefined()) // user just clicked the communicate button, treat as toggle
 	{
-		LLFloaterReg::toggleInstance("communicate");
+		/*LLFloaterReg::toggleInstance("communicate");*/
 		}
 	else // otherwise selection_option is undifined or a specific IM session id
 	{
-		LLFloaterReg::showInstance("communicate", selected_option);
+		/*LLFloaterReg::showInstance("communicate", selected_option);*/
 	}
 }
 
-- 
GitLab


From 69c676c6eb90be2cf251db1cdc57e94e0357e706 Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Thu, 28 Jan 2010 18:34:42 +0200
Subject: [PATCH 243/521] got rid of llimpanel.h includes for  EXT-1196 Stalls
 on startup in LLPanelFriends::refreshNames

--HG--
branch : product-engine
---
 indra/newview/llmutelist.cpp         | 1 -
 indra/newview/lltoolbar.cpp          | 1 -
 indra/newview/llviewerfloaterreg.cpp | 1 -
 3 files changed, 3 deletions(-)

diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp
index 45e5408b1e7..2d3c4b187e8 100644
--- a/indra/newview/llmutelist.cpp
+++ b/indra/newview/llmutelist.cpp
@@ -58,7 +58,6 @@
 #include "llagent.h"
 #include "llviewergenericmessage.h"	// for gGenericDispatcher
 #include "llworld.h" //for particle system banning
-#include "llimpanel.h"
 #include "llimview.h"
 #include "llnotifications.h"
 #include "llviewerobjectlist.h"
diff --git a/indra/newview/lltoolbar.cpp b/indra/newview/lltoolbar.cpp
index 4a66d88fa28..1177aba84e7 100644
--- a/indra/newview/lltoolbar.cpp
+++ b/indra/newview/lltoolbar.cpp
@@ -70,7 +70,6 @@
 #include "llviewerwindow.h"
 #include "lltoolgrab.h"
 #include "llcombobox.h"
-#include "llimpanel.h"
 #include "lllayoutstack.h"
 
 #if LL_DARWIN
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index e87d380e4df..89afc7822be 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -69,7 +69,6 @@
 #include "llfloaterhud.h"
 #include "llfloaterimagepreview.h"
 #include "llimfloater.h"
-#include "llimpanel.h"
 #include "llfloaterinspect.h"
 #include "llfloaterinventory.h"
 #include "llfloaterjoystick.h"
-- 
GitLab


From cbde80b8795cddf21125652ef8987e023b650e32 Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Thu, 28 Jan 2010 18:40:51 +0200
Subject: [PATCH 244/521] got rid of llfloaterfriends.h includes for  EXT-1196
 Stalls on startup in LLPanelFriends::refreshNames

--HG--
branch : product-engine
---
 indra/newview/lltoolbar.cpp          | 7 +++----
 indra/newview/llviewerfloaterreg.cpp | 1 -
 indra/newview/llvoiceclient.cpp      | 2 --
 3 files changed, 3 insertions(+), 7 deletions(-)

diff --git a/indra/newview/lltoolbar.cpp b/indra/newview/lltoolbar.cpp
index 1177aba84e7..404eab9249b 100644
--- a/indra/newview/lltoolbar.cpp
+++ b/indra/newview/lltoolbar.cpp
@@ -54,7 +54,6 @@
 #include "lltooldraganddrop.h"
 #include "llfloaterinventory.h"
 #include "llfloaterchatterbox.h"
-#include "llfloaterfriends.h"
 #include "llfloatersnapshot.h"
 #include "llinventorypanel.h"
 #include "lltoolmgr.h"
@@ -264,12 +263,12 @@ void LLToolBar::updateCommunicateList()
 
 	communicate_button->removeall();
 
-	LLFloater* frontmost_floater = LLFloaterChatterBox::getInstance()->getActiveFloater();
+	//LLFloater* frontmost_floater = LLFloaterChatterBox::getInstance()->getActiveFloater();
 	LLScrollListItem* itemp = NULL;
 
 	LLSD contact_sd;
 	contact_sd["value"] = "contacts";
-	contact_sd["columns"][0]["value"] = LLFloaterMyFriends::getInstance()->getShortTitle(); 
+	/*contact_sd["columns"][0]["value"] = LLFloaterMyFriends::getInstance()->getShortTitle(); 
 	if (LLFloaterMyFriends::getInstance() == frontmost_floater)
 	{
 		contact_sd["columns"][0]["font"]["name"] = "SANSSERIF_SMALL"; 
@@ -279,7 +278,7 @@ void LLToolBar::updateCommunicateList()
 		{
 			selected = "contacts";
 		}
-	}
+	}*/
 	itemp = communicate_button->addElement(contact_sd, ADD_TOP);
 
 	communicate_button->addSeparator(ADD_TOP);
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index 89afc7822be..3aca11963a2 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -156,7 +156,6 @@ void LLViewerFloaterReg::registerFloaters()
 	LLFloaterReg::add("nearby_chat", "floater_nearby_chat.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLNearbyChat>);
 	LLFloaterReg::add("communicate", "floater_chatterbox.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterChatterBox>);
 	LLFloaterReg::add("compile_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCompileQueue>);
-	LLFloaterReg::add("contacts", "floater_my_friends.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMyFriends>);	
 
 	LLFloaterReg::add("env_day_cycle", "floater_day_cycle_options.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterDayCycle>);
 	LLFloaterReg::add("env_post_process", "floater_post_process.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPostProcess>);
diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index 8ca0fd6ef6c..02a2d8c8cfe 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -72,8 +72,6 @@
 #include "llvoavatarself.h"
 #include "llvoicechannel.h"
 
-#include "llfloaterfriends.h"  //VIVOX, inorder to refresh communicate panel
-
 // for base64 decoding
 #include "apr_base64.h"
 
-- 
GitLab


From 9a4d075f3b8ab1ccf760187beeb81f9bf17e69b1 Mon Sep 17 00:00:00 2001
From: Lynx Linden <lynx@lindenlab.com>
Date: Thu, 28 Jan 2010 16:57:37 +0000
Subject: [PATCH 245/521] Fix signed/unsigned comparison build failure on
 Windows for lllocationhistory.cpp

---
 indra/newview/lllocationhistory.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/lllocationhistory.cpp b/indra/newview/lllocationhistory.cpp
index f494f7d7c1d..df93930d33a 100644
--- a/indra/newview/lllocationhistory.cpp
+++ b/indra/newview/lllocationhistory.cpp
@@ -62,7 +62,7 @@ void LLLocationHistory::addItem(const LLLocationHistoryItem& item) {
 	{
 		mItems.erase(mItems.begin(), mItems.end()-max_items);
 	}
-	llassert(mItems.size() <= max_items);
+	llassert((S32)mItems.size() <= max_items);
 }
 
 /*
-- 
GitLab


From 12c61ac4d514610da388ae445f526f4a1d645a00 Mon Sep 17 00:00:00 2001
From: Dmitry Zaporozhan <dzaporozhan@productengine.com>
Date: Thu, 28 Jan 2010 19:32:18 +0200
Subject: [PATCH 246/521] Fixed normal bug EXT-4616 - Combobox labels no longer
 appear.

--HG--
branch : product-engine
---
 indra/llui/llcombobox.cpp | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp
index f29e8785eb0..9d23daf56d9 100644
--- a/indra/llui/llcombobox.cpp
+++ b/indra/llui/llcombobox.cpp
@@ -103,7 +103,8 @@ LLComboBox::LLComboBox(const LLComboBox::Params& p)
 	mPrearrangeCallback(p.prearrange_callback()),
 	mTextEntryCallback(p.text_entry_callback()),
 	mListPosition(p.list_position),
-	mLastSelectedIndex(-1)
+	mLastSelectedIndex(-1),
+	mLabel(p.label)
 {
 	// Text label button
 
@@ -490,6 +491,7 @@ void LLComboBox::createLineEditor(const LLComboBox::Params& p)
 		params.handle_edit_keys_directly(true);
 		params.commit_on_focus_lost(false);
 		params.follows.flags(FOLLOWS_ALL);
+		params.label(mLabel);
 		mTextEntry = LLUICtrlFactory::create<LLLineEditor> (params);
 		mTextEntry->setText(cur_label);
 		mTextEntry->setIgnoreTab(TRUE);
@@ -505,7 +507,8 @@ void LLComboBox::createLineEditor(const LLComboBox::Params& p)
 		mButton->setRect(rect);
 		mButton->setTabStop(TRUE);
 		mButton->setHAlign(LLFontGL::LEFT);
-
+		mButton->setLabel(mLabel.getString());
+		
 		if (mTextEntry)
 		{
 			mTextEntry->setVisible(FALSE);
@@ -633,7 +636,7 @@ void LLComboBox::hideList()
 			if(mLastSelectedIndex >= 0)
 				mList->selectNthItem(mLastSelectedIndex);
 		}
-		else
+		else if(mLastSelectedIndex >= 0)
 			mList->selectNthItem(mLastSelectedIndex);
 
 		mButton->setToggleState(FALSE);
-- 
GitLab


From 3b0e95bf3c36896b21cd6e82bda2d6ceaf356320 Mon Sep 17 00:00:00 2001
From: Vadim Savchuk <vsavchuk@productengine.com>
Date: Thu, 28 Jan 2010 20:10:40 +0200
Subject: [PATCH 247/521] Renamed some members of LLToastIMPanel to make them
 self-explanatory.

--HG--
branch : product-engine
---
 indra/newview/lltoastimpanel.cpp | 14 +++++++-------
 indra/newview/lltoastimpanel.h   |  4 ++--
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/indra/newview/lltoastimpanel.cpp b/indra/newview/lltoastimpanel.cpp
index d62017cc2f0..7717ae9e011 100644
--- a/indra/newview/lltoastimpanel.cpp
+++ b/indra/newview/lltoastimpanel.cpp
@@ -41,14 +41,14 @@ const S32 LLToastIMPanel::DEFAULT_MESSAGE_MAX_LINE_COUNT	= 6;
 
 //--------------------------------------------------------------------------
 LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) :	LLToastPanel(p.notification),
-								mAvatar(NULL), mUserName(NULL),
+								mAvatarIcon(NULL), mAvatarName(NULL),
 								mTime(NULL), mMessage(NULL)
 {
 	LLUICtrlFactory::getInstance()->buildPanel(this, "panel_instant_message.xml");
 
 	LLIconCtrl* sys_msg_icon = getChild<LLIconCtrl>("sys_msg_icon");
-	mAvatar = getChild<LLAvatarIconCtrl>("avatar_icon");
-	mUserName = getChild<LLTextBox>("user_name");
+	mAvatarIcon = getChild<LLAvatarIconCtrl>("avatar_icon");
+	mAvatarName = getChild<LLTextBox>("user_name");
 	mTime = getChild<LLTextBox>("time_box");
 	mMessage = getChild<LLTextBox>("message");
 
@@ -77,22 +77,22 @@ LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) :	LLToastPanel(p.notif
 		mMessage->setValue(p.message);
 	}
 
-	mUserName->setValue(p.from);
+	mAvatarName->setValue(p.from);
 	mTime->setValue(p.time);
 	mSessionID = p.session_id;
 	mNotification = p.notification;
 
 	if(p.from == SYSTEM_FROM)
 	{
-		mAvatar->setVisible(FALSE);
+		mAvatarIcon->setVisible(FALSE);
 		sys_msg_icon->setVisible(TRUE);
 	}
 	else
 	{
-		mAvatar->setVisible(TRUE);
+		mAvatarIcon->setVisible(TRUE);
 		sys_msg_icon->setVisible(FALSE);
 
-		mAvatar->setValue(p.avatar_id);
+		mAvatarIcon->setValue(p.avatar_id);
 	}
 
 	S32 maxLinesCount;
diff --git a/indra/newview/lltoastimpanel.h b/indra/newview/lltoastimpanel.h
index 53661f2cf69..42d9a97c3f8 100644
--- a/indra/newview/lltoastimpanel.h
+++ b/indra/newview/lltoastimpanel.h
@@ -63,8 +63,8 @@ class LLToastIMPanel: public LLToastPanel
 
 	LLNotificationPtr	mNotification;
 	LLUUID				mSessionID;
-	LLAvatarIconCtrl*	mAvatar;
-	LLTextBox*			mUserName;
+	LLAvatarIconCtrl*	mAvatarIcon;
+	LLTextBox*			mAvatarName;
 	LLTextBox*			mTime;
 	LLTextBox*			mMessage;
 };
-- 
GitLab


From 9cfc1f33b230f52f194d725a8accc44423f0ad19 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Thu, 28 Jan 2010 10:20:27 -0800
Subject: [PATCH 248/521] CID-323

Checker: UNINIT_CTOR
Function: LLUIString::LLUIString()
File: /indra/llui/lluistring.h
---
 indra/llui/lluistring.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llui/lluistring.h b/indra/llui/lluistring.h
index 7ec0fd603a1..32cfc0d9cd7 100644
--- a/indra/llui/lluistring.h
+++ b/indra/llui/lluistring.h
@@ -64,7 +64,7 @@ class LLUIString
 public:
 	// These methods all perform appropriate argument substitution
 	// and modify mOrig where appropriate
-	LLUIString() {}
+        LLUIString() : mNeedsResult(false), mNeedsWResult(false) {}
 	LLUIString(const std::string& instring, const LLStringUtil::format_map_t& args);
 	LLUIString(const std::string& instring) { assign(instring); }
 
-- 
GitLab


From 7ba57dfe101ecd220d9a26a0a2b759305ead0d0f Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Thu, 28 Jan 2010 10:23:09 -0800
Subject: [PATCH 249/521] CID-324

Checker: UNINIT_CTOR
Function: LLStyle::LLStyle(const LLStyle::Params &)
File: /indra/llui/llstyle.cpp
---
 indra/llui/llstyle.cpp | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/indra/llui/llstyle.cpp b/indra/llui/llstyle.cpp
index 71511f69a41..b8f93b6a0ea 100644
--- a/indra/llui/llstyle.cpp
+++ b/indra/llui/llstyle.cpp
@@ -49,7 +49,10 @@ LLStyle::Params::Params()
 
 
 LLStyle::LLStyle(const LLStyle::Params& p)
-:	mVisible(p.visible),
+:	mItalic(FALSE),
+	mBold(FALSE),
+	mUnderline(FALSE),
+	mVisible(p.visible),
 	mColor(p.color()),
 	mReadOnlyColor(p.readonly_color()),
 	mFont(p.font()),
-- 
GitLab


From 0d5a6ea3c008664935e297c4856d3c7f5387412b Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Thu, 28 Jan 2010 10:25:09 -0800
Subject: [PATCH 250/521] CID-331

Checker: UNINIT_CTOR
Function: LLPrimitive::LLPrimitive()
File: /indra/llprimitive/llprimitive.cpp
---
 indra/llprimitive/llprimitive.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/llprimitive/llprimitive.cpp b/indra/llprimitive/llprimitive.cpp
index 5ad758072c9..b75d1b0f678 100644
--- a/indra/llprimitive/llprimitive.cpp
+++ b/indra/llprimitive/llprimitive.cpp
@@ -154,6 +154,7 @@ bool LLPrimitive::cleanupVolumeManager()
 //===============================================================
 LLPrimitive::LLPrimitive()
 :	mTextureList(),
+	mNumTEs(0),
 	mMiscFlags(0)
 {
 	mPrimitiveCode = 0;
-- 
GitLab


From 6bce7146e64f6dbb189a3bcad392ddf91a676696 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Thu, 28 Jan 2010 10:26:38 -0800
Subject: [PATCH 251/521] CID-338

Checker: UNINIT_CTOR
Function: LLToolTipMgr::LLToolTipMgr()
File: /indra/llui/lltooltip.cpp
---
 indra/llui/lltooltip.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/indra/llui/lltooltip.cpp b/indra/llui/lltooltip.cpp
index 01c7a81309c..173fde8e766 100644
--- a/indra/llui/lltooltip.cpp
+++ b/indra/llui/lltooltip.cpp
@@ -400,7 +400,8 @@ bool LLToolTip::hasClickCallback()
 //
 
 LLToolTipMgr::LLToolTipMgr()
-:	mToolTip(NULL),
+:       mToolTipsBlocked(false),
+	mToolTip(NULL),
 	mNeedsToolTip(false)
 {}
 
-- 
GitLab


From 139e8be4e169d6cc28157668b6eb6682dd2a88e3 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Thu, 28 Jan 2010 10:28:41 -0800
Subject: [PATCH 252/521] CID-339

Checker: UNINIT_CTOR
Function: LLMenuGL::LLMenuGL(const LLMenuGL::Params &)
File: /indra/llui/llmenugl.cpp
---
 indra/llui/llmenugl.cpp | 5 +++--
 indra/llui/llmenugl.h   | 2 +-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index ceb1e9820eb..7fa9a880591 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -1651,6 +1651,7 @@ LLMenuGL::LLMenuGL(const LLMenuGL::Params& p)
 	mBackgroundColor( p.bg_color() ),
 	mBgVisible( p.bg_visible ),
 	mDropShadowed( p.drop_shadow ),
+	mHasSelection(false),
 	mHorizontalLayout( p.horizontal_layout ),
 	mScrollable(mHorizontalLayout ? FALSE : p.scrollable), // Scrolling is supported only for vertical layout
 	mMaxScrollableItems(p.max_scrollable_items),
@@ -2813,7 +2814,7 @@ BOOL LLMenuGL::handleHover( S32 x, S32 y, MASK mask )
 					((LLMenuItemGL*)viewp)->setHighlight(TRUE);
 					LLMenuGL::setKeyboardMode(FALSE);
 				}
-				mHasSelection = TRUE;
+				mHasSelection = true;
 			}
 		}
 	}
@@ -2892,7 +2893,7 @@ void LLMenuGL::setVisible(BOOL visible)
 		}
 		else
 		{
-			mHasSelection = FALSE;
+			mHasSelection = true;
 			mFadeTimer.stop();
 		}
 
diff --git a/indra/llui/llmenugl.h b/indra/llui/llmenugl.h
index 61e06f9e5f9..8441aaadd49 100644
--- a/indra/llui/llmenugl.h
+++ b/indra/llui/llmenugl.h
@@ -546,7 +546,7 @@ class LLMenuGL
 	LLHandle<LLView> mParentMenuItem;
 	LLUIString		mLabel;
 	BOOL mDropShadowed; 	//  Whether to drop shadow 
-	BOOL			mHasSelection;
+	bool			mHasSelection;
 	LLFrameTimer	mFadeTimer;
 	LLTimer			mScrollItemsTimer;
 	BOOL			mTornOff;
-- 
GitLab


From 50bf40a6313e1e8fd076ad3465dc9777e6a8e83b Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Thu, 28 Jan 2010 10:30:57 -0800
Subject: [PATCH 253/521] CID-343

Checker: UNINIT_CTOR
Function: LLFloaterView::LLFloaterView(const LLUICtrl::Params &)
File: /indra/llui/llfloater.cpp
---
 indra/llui/llfloater.cpp | 5 +++--
 indra/llui/llfloater.h   | 3 ---
 2 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index 79d8f90fec6..de46d89d6f7 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -1916,9 +1916,10 @@ static LLDefaultChildRegistry::Register<LLFloaterView> r("floater_view");
 
 LLFloaterView::LLFloaterView (const Params& p)
 :	LLUICtrl (p),
+
 	mFocusCycleMode(FALSE),
-	mSnapOffsetBottom(0)
-	,mSnapOffsetRight(0)
+	mSnapOffsetBottom(0),
+	mSnapOffsetRight(0)
 {
 }
 
diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
index f70495c0f03..8c9dacbd207 100644
--- a/indra/llui/llfloater.h
+++ b/indra/llui/llfloater.h
@@ -468,9 +468,6 @@ class LLFloaterView : public LLUICtrl
 	void setSnapOffsetRight(S32 offset) { mSnapOffsetRight = offset; }
 
 private:
-	S32				mColumn;
-	S32				mNextLeft;
-	S32				mNextTop;
 	BOOL			mFocusCycleMode;
 	S32				mSnapOffsetBottom;
 	S32				mSnapOffsetRight;
-- 
GitLab


From 8da9a472b212d8d8d376a32a442fbf61baa1fae4 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Thu, 28 Jan 2010 10:36:21 -0800
Subject: [PATCH 254/521] CID-383

Checker: UNINIT_CTOR
Function: LLFloaterHardwareSettings::LLFloaterHardwareSettings(const LLSD &)
File: /indra/newview/llfloaterhardwaresettings.cpp
---
 indra/newview/llfloaterhardwaresettings.cpp | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llfloaterhardwaresettings.cpp b/indra/newview/llfloaterhardwaresettings.cpp
index 31b494b590d..b2564eb2b65 100644
--- a/indra/newview/llfloaterhardwaresettings.cpp
+++ b/indra/newview/llfloaterhardwaresettings.cpp
@@ -50,7 +50,17 @@
 #include "llsliderctrl.h"
 
 LLFloaterHardwareSettings::LLFloaterHardwareSettings(const LLSD& key)
-  : LLFloater(key)
+	: LLFloater(key),
+
+	  // these should be set on imminent refresh() call,
+	  // but init them anyway
+	  mUseVBO(0),
+	  mUseAniso(0),
+	  mFSAASamples(0),
+	  mGamma(0.0),
+	  mVideoCardMem(0),
+	  mFogRatio(0.0),
+	  mProbeHardwareOnStartup(FALSE)
 {
 	//LLUICtrlFactory::getInstance()->buildFloater(this, "floater_hardware_settings.xml");
 }
-- 
GitLab


From d91225b6addbb0febd43e58550626dfa33c56ca8 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Thu, 28 Jan 2010 10:38:19 -0800
Subject: [PATCH 255/521] CID-382

Checker: UNINIT_CTOR
Function: LLCallDialog::LLCallDialog(const LLSD &)
File: /indra/newview/llimview.cpp
---
 indra/newview/llimview.cpp | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index c4b1d7a9f4b..12546643301 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -1498,9 +1498,11 @@ void LLCallDialogManager::onVoiceChannelStateChanged(const LLVoiceChannel::EStat
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // Class LLCallDialog
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-LLCallDialog::LLCallDialog(const LLSD& payload) :
-LLDockableFloater(NULL, false, payload),
-mPayload(payload)
+LLCallDialog::LLCallDialog(const LLSD& payload)
+	: LLDockableFloater(NULL, false, payload),
+
+	  mPayload(payload),
+	  mLifetime(DEFAULT_LIFETIME)
 {
 }
 
-- 
GitLab


From a5f88abb95ff2afe5a8f9e34e39806eb579828fe Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Thu, 28 Jan 2010 10:40:10 -0800
Subject: [PATCH 256/521] CID-381

Checker: UNINIT_CTOR
Function: LLFloaterAnimPreview::LLFloaterAnimPreview(const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&)
File: /indra/newview/llfloateranimpreview.cpp
---
 indra/newview/llfloateranimpreview.h | 1 -
 1 file changed, 1 deletion(-)

diff --git a/indra/newview/llfloateranimpreview.h b/indra/newview/llfloateranimpreview.h
index dd2c0b809ae..3ee1f419ab2 100644
--- a/indra/newview/llfloateranimpreview.h
+++ b/indra/newview/llfloateranimpreview.h
@@ -127,7 +127,6 @@ class LLFloaterAnimPreview : public LLFloaterNameDesc
 	LLRectf				mPreviewImageRect;
 	LLAssetID			mMotionID;
 	LLTransactionID		mTransactionID;
-	BOOL				mEnabled;
 	LLAnimPauseRequest	mPauseRequest;
 
 	std::map<std::string, LLUUID>	mIDList;
-- 
GitLab


From 7bd7f0d0ff5f929ea2d34a78b902ea136501865c Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Thu, 28 Jan 2010 10:44:34 -0800
Subject: [PATCH 257/521] CID-380

Checker: UNINIT_CTOR
Function: LLFloaterSnapshot::Impl::Impl()
File: /indra/newview/llfloatersnapshot.cpp
---
 indra/newview/llfloatersnapshot.cpp | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp
index afb58c94074..94c7ff6f947 100644
--- a/indra/newview/llfloatersnapshot.cpp
+++ b/indra/newview/llfloatersnapshot.cpp
@@ -1028,7 +1028,8 @@ class LLFloaterSnapshot::Impl
 public:
 	Impl()
 	:	mAvatarPauseHandles(),
-		mLastToolset(NULL)
+		mLastToolset(NULL),
+		mAspectRatioCheckOff(false)
 	{
 	}
 	~Impl()
@@ -1079,7 +1080,7 @@ class LLFloaterSnapshot::Impl
 
 	LLToolset*	mLastToolset;
 	LLHandle<LLView> mPreviewHandle;
-	BOOL mAspectRatioCheckOff ;
+	bool mAspectRatioCheckOff ;
 };
 
 // static
@@ -1606,7 +1607,7 @@ void LLFloaterSnapshot::Impl::checkAspectRatio(LLFloaterSnapshot *view, S32 inde
 	
 	if(0 == index) //current window size
 	{
-		view->impl.mAspectRatioCheckOff = TRUE ;
+		view->impl.mAspectRatioCheckOff = true ;
 		view->childSetEnabled("keep_aspect_check", FALSE) ;
 
 		if(previewp)
@@ -1616,7 +1617,7 @@ void LLFloaterSnapshot::Impl::checkAspectRatio(LLFloaterSnapshot *view, S32 inde
 	}
 	else if(-1 == index) //custom
 	{
-		view->impl.mAspectRatioCheckOff = FALSE ;
+		view->impl.mAspectRatioCheckOff = false ;
 		//if(LLSnapshotLivePreview::SNAPSHOT_TEXTURE != gSavedSettings.getS32("LastSnapshotType"))
 		{
 			view->childSetEnabled("keep_aspect_check", TRUE) ;
@@ -1629,7 +1630,7 @@ void LLFloaterSnapshot::Impl::checkAspectRatio(LLFloaterSnapshot *view, S32 inde
 	}
 	else
 	{
-		view->impl.mAspectRatioCheckOff = TRUE ;
+		view->impl.mAspectRatioCheckOff = true ;
 		view->childSetEnabled("keep_aspect_check", FALSE) ;
 
 		if(previewp)
-- 
GitLab


From cad4ca01dc804d14c022b63e6a8541e46b1a8309 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Thu, 28 Jan 2010 10:46:37 -0800
Subject: [PATCH 258/521] CID-379

Checker: UNINIT_CTOR
Function: LLFloaterScriptQueue::LLFloaterScriptQueue(const LLSD &)
File: /indra/newview/llcompilequeue.cpp
---
 indra/newview/llcompilequeue.cpp | 5 +++--
 indra/newview/llcompilequeue.h   | 4 ++--
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp
index 5c05a541204..a96981a1083 100644
--- a/indra/newview/llcompilequeue.cpp
+++ b/indra/newview/llcompilequeue.cpp
@@ -92,7 +92,8 @@ struct LLScriptQueueData
 // Default constructor
 LLFloaterScriptQueue::LLFloaterScriptQueue(const LLSD& key) :
 	LLFloater(key),
-	mDone(FALSE)
+	mDone(false),
+	mMono(false)
 {
 	//Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this,"floater_script_queue.xml", FALSE);
 }
@@ -216,7 +217,7 @@ BOOL LLFloaterScriptQueue::nextObject()
 	} while((mObjectIDs.count() > 0) && !successful_start);
 	if(isDone() && !mDone)
 	{
-		mDone = TRUE;
+		mDone = true;
 		getChild<LLScrollListCtrl>("queue output")->setCommentText(getString("Done"));
 		childSetEnabled("close",TRUE);
 	}
diff --git a/indra/newview/llcompilequeue.h b/indra/newview/llcompilequeue.h
index 063d5732393..2d061f5d8a2 100644
--- a/indra/newview/llcompilequeue.h
+++ b/indra/newview/llcompilequeue.h
@@ -104,10 +104,10 @@ class LLFloaterScriptQueue : public LLFloater, public LLVOInventoryListener
 	// Object Queue
 	LLDynamicArray<LLUUID> mObjectIDs;
 	LLUUID mCurrentObjectID;
-	BOOL mDone;
+	bool mDone;
 
 	std::string mStartString;
-	BOOL mMono;
+	bool mMono;
 };
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- 
GitLab


From a9d86c8133960635bc8a116f68348bf447a39690 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Thu, 28 Jan 2010 10:52:15 -0800
Subject: [PATCH 259/521] CID-378

Checker: UNINIT_CTOR
Function: LLFloaterJoystick::LLFloaterJoystick(const LLSD &)
File: /indra/newview/llfloaterjoystick.cpp
---
 indra/newview/llfloaterjoystick.cpp | 11 ++++++++---
 indra/newview/llfloaterjoystick.h   |  2 ++
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llfloaterjoystick.cpp b/indra/newview/llfloaterjoystick.cpp
index 06fe2a84c89..78bc63ac8c4 100644
--- a/indra/newview/llfloaterjoystick.cpp
+++ b/indra/newview/llfloaterjoystick.cpp
@@ -52,6 +52,7 @@ LLFloaterJoystick::LLFloaterJoystick(const LLSD& data)
 {
 	//Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this, "floater_joystick.xml");
 
+	initFromSettings();
 }
 
 void LLFloaterJoystick::draw()
@@ -123,10 +124,8 @@ void LLFloaterJoystick::apply()
 {
 }
 
-void LLFloaterJoystick::refresh()
+void LLFloaterJoystick::initFromSettings()
 {
-	LLFloater::refresh();
-
 	mJoystickEnabled = gSavedSettings.getBOOL("JoystickEnabled");
 
 	mJoystickAxis[0] = gSavedSettings.getS32("JoystickAxis0");
@@ -194,6 +193,12 @@ void LLFloaterJoystick::refresh()
 	mFlycamFeathering = gSavedSettings.getF32("FlycamFeathering");
 }
 
+void LLFloaterJoystick::refresh()
+{
+	LLFloater::refresh();
+	initFromSettings();
+}
+
 void LLFloaterJoystick::cancel()
 {
 	gSavedSettings.setBOOL("JoystickEnabled", mJoystickEnabled);
diff --git a/indra/newview/llfloaterjoystick.h b/indra/newview/llfloaterjoystick.h
index f3559c28e9e..7a2f497c69f 100644
--- a/indra/newview/llfloaterjoystick.h
+++ b/indra/newview/llfloaterjoystick.h
@@ -55,6 +55,8 @@ class LLFloaterJoystick : public LLFloater
 
 	LLFloaterJoystick(const LLSD& data);
 	virtual ~LLFloaterJoystick();
+
+	void initFromSettings();
 	
 	static void onCommitJoystickEnabled(LLUICtrl*, void*);
 	static void onClickRestoreSNDefaults(void*);
-- 
GitLab


From ee86a65f0450003689dcd0d52c726c876456dd28 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Thu, 28 Jan 2010 11:07:02 -0800
Subject: [PATCH 260/521] CID-372

Checker: UNINIT_CTOR
Function: LLViewerJoint::LLViewerJoint(const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&, LLJoint *)
File: /indra/newview/llviewerjoint.cpp

CID-377

Checker: UNINIT_CTOR
Function: LLOfferInfo::LLOfferInfo()
File: /indra/newview/llviewermessage.h
---
 indra/newview/llviewerjoint.cpp | 21 ++++++++++++---------
 indra/newview/llviewermessage.h |  4 +++-
 2 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/indra/newview/llviewerjoint.cpp b/indra/newview/llviewerjoint.cpp
index c425d95ff80..f5192914f41 100644
--- a/indra/newview/llviewerjoint.cpp
+++ b/indra/newview/llviewerjoint.cpp
@@ -59,14 +59,9 @@ BOOL					LLViewerJoint::sDisableLOD = FALSE;
 // Class Constructor
 //-----------------------------------------------------------------------------
 LLViewerJoint::LLViewerJoint()
+	:       LLJoint()
 {
-	mUpdateXform = TRUE;
-	mValid = FALSE;
-	mComponents = SC_JOINT | SC_BONE | SC_AXES;
-	mMinPixelArea = DEFAULT_LOD;
-	mPickName = PN_DEFAULT;
-	mVisible = TRUE;
-	mMeshID = 0;
+	init();
 }
 
 
@@ -74,13 +69,21 @@ LLViewerJoint::LLViewerJoint()
 // LLViewerJoint()
 // Class Constructor
 //-----------------------------------------------------------------------------
-LLViewerJoint::LLViewerJoint(const std::string &name, LLJoint *parent) :
-	LLJoint(name, parent)
+LLViewerJoint::LLViewerJoint(const std::string &name, LLJoint *parent)
+	:	LLJoint(name, parent)
+{
+	init();
+}
+
+
+LLViewerJoint::init()
 {
 	mValid = FALSE;
 	mComponents = SC_JOINT | SC_BONE | SC_AXES;
 	mMinPixelArea = DEFAULT_LOD;
 	mPickName = PN_DEFAULT;
+	mVisible = TRUE;
+	mMeshID = 0;
 }
 
 
diff --git a/indra/newview/llviewermessage.h b/indra/newview/llviewermessage.h
index 8404d6fde02..1415c16090e 100644
--- a/indra/newview/llviewermessage.h
+++ b/indra/newview/llviewermessage.h
@@ -205,7 +205,9 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f
 
 struct LLOfferInfo
 {
-	LLOfferInfo() {};
+        LLOfferInfo()
+	:	mFromGroup(FALSE), mFromObject(FALSE),
+		mIM(IM_NOTHING_SPECIAL), mType(LLAssetType::AT_NONE) {};
 	LLOfferInfo(const LLSD& sd);
 
 	void forceResponse(InventoryOfferResponse response);
-- 
GitLab


From 5bb7bfce1470b260b7e7b0935ca8401ff6ca9feb Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Thu, 28 Jan 2010 11:09:16 -0800
Subject: [PATCH 261/521] follow-up for CID-372

---
 indra/newview/llviewerjoint.h | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llviewerjoint.h b/indra/newview/llviewerjoint.h
index 08c4ec36fde..5ff766696cc 100644
--- a/indra/newview/llviewerjoint.h
+++ b/indra/newview/llviewerjoint.h
@@ -141,7 +141,9 @@ class LLViewerJoint :
 	std::vector<LLViewerJointMesh*> mMeshParts;
 	void setMeshID( S32 id ) {mMeshID = id;}
 
-protected:
+private:
+	void init();
+
 	BOOL		mValid;
 	U32			mComponents;
 	F32			mMinPixelArea;
-- 
GitLab


From 3091c30af0b862ac3bac3ba72d33df27c0f15d97 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Thu, 28 Jan 2010 11:12:16 -0800
Subject: [PATCH 262/521] CID-370

Checker: UNINIT_CTOR
Function: LLVivoxProtocolParser::LLVivoxProtocolParser()
File: /indra/newview/llvoiceclient.cpp
---
 indra/newview/llvoiceclient.cpp | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index 8ca0fd6ef6c..981fde2ffbb 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -296,8 +296,14 @@ void LLVivoxProtocolParser::reset()
 	ignoringTags = false;
 	accumulateText = false;
 	energy = 0.f;
+	hasText = false;
+	hasAudio = false;
+	hasVideo = false;
+	terminated = false;
 	ignoreDepth = 0;
 	isChannel = false;
+	incoming = false;
+	enabled = false;
 	isEvent = false;
 	isLocallyMuted = false;
 	isModeratorMuted = false;
-- 
GitLab


From 245c044e3b2b58e893c20137551fc1abda033fe5 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Thu, 28 Jan 2010 11:14:01 -0800
Subject: [PATCH 263/521] CID-369

Checker: UNINIT_CTOR
Function: LLVoiceClient::sessionState::sessionState()
File: /indra/newview/llvoiceclient.cpp
---
 indra/newview/llvoiceclient.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index 981fde2ffbb..a0d42d9b5f5 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -6414,6 +6414,7 @@ void LLVoiceClient::filePlaybackSetMode(bool vox, float speed)
 }
 
 LLVoiceClient::sessionState::sessionState() :
+	mErrorStatusCode(0),
 	mMediaStreamState(streamStateUnknown),
 	mTextStreamState(streamStateUnknown),
 	mCreateInProgress(false),
-- 
GitLab


From 1acf7a4a29a0f6c4ab1b88f275ae6e815d0f738e Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Thu, 28 Jan 2010 11:15:56 -0800
Subject: [PATCH 264/521] CID-364

Checker: UNINIT_CTOR
Function: LLEventNotification::LLEventNotification()
File: /indra/newview/lleventnotifier.cpp
---
 indra/newview/lleventnotifier.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/newview/lleventnotifier.cpp b/indra/newview/lleventnotifier.cpp
index edfb9dc864f..f096ba604fc 100644
--- a/indra/newview/lleventnotifier.cpp
+++ b/indra/newview/lleventnotifier.cpp
@@ -174,6 +174,7 @@ void LLEventNotifier::remove(const U32 event_id)
 
 LLEventNotification::LLEventNotification() :
 	mEventID(0),
+	mEventDate(0),
 	mEventName("")
 {
 }
-- 
GitLab


From a93d2cb2193afdc305f8b8ad2e11c2e40781c27c Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Thu, 28 Jan 2010 11:21:28 -0800
Subject: [PATCH 265/521] CID-363

Checker: UNINIT_CTOR
Function: LLManipTranslate::LLManipTranslate(LLToolComposite *)
File: /indra/newview/llmaniptranslate.cpp
---
 indra/newview/llmaniptranslate.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/indra/newview/llmaniptranslate.cpp b/indra/newview/llmaniptranslate.cpp
index 5f30ab4e015..52fe31fbbac 100644
--- a/indra/newview/llmaniptranslate.cpp
+++ b/indra/newview/llmaniptranslate.cpp
@@ -123,9 +123,13 @@ LLManipTranslate::LLManipTranslate( LLToolComposite* composite )
 	mAxisArrowLength(50),
 	mConeSize(0),
 	mArrowLengthMeters(0.f),
+	mGridSizeMeters(1.f),
 	mPlaneManipOffsetMeters(0.f),
 	mUpdateTimer(),
 	mSnapOffsetMeters(0.f),
+	mSubdivisions(10.f),
+	mInSnapRegime(FALSE),
+	mSnapped(FALSE),
 	mArrowScales(1.f, 1.f, 1.f),
 	mPlaneScales(1.f, 1.f, 1.f),
 	mPlaneManipPositions(1.f, 1.f, 1.f, 1.f)
-- 
GitLab


From df2f9e7823388f03455d889bc04779a3ee93867d Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Thu, 28 Jan 2010 11:26:50 -0800
Subject: [PATCH 266/521] CID-361

Checker: UNINIT_CTOR
Function: LLToolGrab::LLToolGrab(LLToolComposite *)
File: /indra/newview/lltoolgrab.cpp

plus followup to previous fix...
---
 indra/newview/llmanipscale.cpp  | 1 +
 indra/newview/lltoolgrab.cpp    | 6 ++++++
 indra/newview/llviewerjoint.cpp | 2 +-
 3 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llmanipscale.cpp b/indra/newview/llmanipscale.cpp
index 84a5eb7352b..ee3ffa2450a 100644
--- a/indra/newview/llmanipscale.cpp
+++ b/indra/newview/llmanipscale.cpp
@@ -180,6 +180,7 @@ LLManipScale::LLManipScale( LLToolComposite* composite )
 	mScaleSnapUnit2(1.f),
 	mSnapRegimeOffset(0.f),
 	mSnapGuideLength(0.f),
+	mInSnapRegime(FALSE),
 	mScaleSnapValue(0.f)
 { 
 	mManipulatorScales = new F32[NUM_MANIPULATORS];
diff --git a/indra/newview/lltoolgrab.cpp b/indra/newview/lltoolgrab.cpp
index 26dbe6a4890..d837a334f17 100644
--- a/indra/newview/lltoolgrab.cpp
+++ b/indra/newview/lltoolgrab.cpp
@@ -78,9 +78,15 @@ LLToolGrab::LLToolGrab( LLToolComposite* composite )
 :	LLTool( std::string("Grab"), composite ),
 	mMode( GRAB_INACTIVE ),
 	mVerticalDragging( FALSE ),
+	mHitLand(FALSE),
+	mLastMouseX(0),
+	mLastMouseY(0),
+	mAccumDeltaX(0),
+	mAccumDeltaY(0),	
 	mHasMoved( FALSE ),
 	mOutsideSlop(FALSE),
 	mDeselectedThisClick(FALSE),
+	mLastFace(0),
 	mSpinGrabbing( FALSE ),
 	mSpinRotation(),
 	mHideBuildHighlight(FALSE)
diff --git a/indra/newview/llviewerjoint.cpp b/indra/newview/llviewerjoint.cpp
index f5192914f41..95f05b5f5f9 100644
--- a/indra/newview/llviewerjoint.cpp
+++ b/indra/newview/llviewerjoint.cpp
@@ -76,7 +76,7 @@ LLViewerJoint::LLViewerJoint(const std::string &name, LLJoint *parent)
 }
 
 
-LLViewerJoint::init()
+void LLViewerJoint::init()
 {
 	mValid = FALSE;
 	mComponents = SC_JOINT | SC_BONE | SC_AXES;
-- 
GitLab


From 607636508d4affab833ca24b64a5bbf002ec1c9f Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Thu, 28 Jan 2010 11:29:29 -0800
Subject: [PATCH 267/521] privacy...

---
 indra/newview/llviewerjoint.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llviewerjoint.h b/indra/newview/llviewerjoint.h
index 5ff766696cc..0d3092a0447 100644
--- a/indra/newview/llviewerjoint.h
+++ b/indra/newview/llviewerjoint.h
@@ -141,7 +141,7 @@ class LLViewerJoint :
 	std::vector<LLViewerJointMesh*> mMeshParts;
 	void setMeshID( S32 id ) {mMeshID = id;}
 
-private:
+protected:
 	void init();
 
 	BOOL		mValid;
-- 
GitLab


From 44dc3c0713dc3efa90a94a6005f0b491cd509456 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Thu, 28 Jan 2010 11:37:33 -0800
Subject: [PATCH 268/521] CID-356

Checker: UNINIT_CTOR
Function: LLVOSky::LLVOSky(const LLUUID &, unsigned char, LLViewerRegion *)
File: /indra/newview/llvosky.cpp
---
 indra/newview/llvosky.cpp | 11 +++++++----
 indra/newview/llvosky.h   |  6 +++---
 2 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp
index 5ff8f0d267d..0550ed770bf 100644
--- a/indra/newview/llvosky.cpp
+++ b/indra/newview/llvosky.cpp
@@ -343,7 +343,6 @@ LLVOSky::LLVOSky(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp)
 	cloud_pos_density1 = LLColor3();
 	cloud_pos_density2 = LLColor3();
 
-
 	mInitialized = FALSE;
 	mbCanSelect = FALSE;
 	mUpdateTimer.reset();
@@ -385,6 +384,10 @@ LLVOSky::LLVOSky(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp)
 	mBloomTexturep->setAddressMode(LLTexUnit::TAM_CLAMP);
 
 	mHeavenlyBodyUpdated = FALSE ;
+
+	mDrawRefl = 0;
+	mHazeConcentration = 0.f;
+	mInterpVal = 0.f;
 }
 
 
@@ -1072,10 +1075,10 @@ BOOL LLVOSky::updateSky()
 		++next_frame;
 		next_frame = next_frame % cycle_frame_no;
 
-		sInterpVal = (!mInitialized) ? 1 : (F32)next_frame / cycle_frame_no;
+		mInterpVal = (!mInitialized) ? 1 : (F32)next_frame / cycle_frame_no;
 		// sInterpVal = (F32)next_frame / cycle_frame_no;
-		LLSkyTex::setInterpVal( sInterpVal );
-		LLHeavenBody::setInterpVal( sInterpVal );
+		LLSkyTex::setInterpVal( mInterpVal );
+		LLHeavenBody::setInterpVal( mInterpVal );
 		calcAtmospherics();
 
 		if (mForceUpdate || total_no_tiles == frame)
diff --git a/indra/newview/llvosky.h b/indra/newview/llvosky.h
index ef74324e58d..83669097554 100644
--- a/indra/newview/llvosky.h
+++ b/indra/newview/llvosky.h
@@ -613,7 +613,7 @@ class LLVOSky : public LLStaticViewerObject
 	LLColor3			mLastTotalAmbient;
 	F32					mAmbientScale;
 	LLColor3			mNightColorShift;
-	F32					sInterpVal;
+	F32					mInterpVal;
 
 	LLColor4			mFogColor;
 	LLColor4			mGLFogCol;
@@ -636,8 +636,8 @@ class LLVOSky : public LLStaticViewerObject
 public:
 	//by bao
 	//fake vertex buffer updating
-	//to guaranttee at least updating one VBO buffer every frame
-	//to walk around the bug caused by ATI card --> DEV-3855
+	//to guarantee at least updating one VBO buffer every frame
+	//to work around the bug caused by ATI card --> DEV-3855
 	//
 	void createDummyVertexBuffer() ;
 	void updateDummyVertexBuffer() ;
-- 
GitLab


From a9c4ed26e71af48adf3d364a5005150449cc7dac Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Thu, 28 Jan 2010 11:50:35 -0800
Subject: [PATCH 269/521] Try for a slightly cunning fix to CID-352

Checker: UNINIT_CTOR
Function: LLInterp<float>::LLInterp()
File: /indra/llmath/llinterp.h
---
 indra/llmath/llinterp.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/indra/llmath/llinterp.h b/indra/llmath/llinterp.h
index 36ca2e98655..88af004170a 100644
--- a/indra/llmath/llinterp.h
+++ b/indra/llmath/llinterp.h
@@ -54,7 +54,7 @@ template <typename Type>
 class LLInterp
 {
 public:
-	LLInterp();
+        LLInterp();
 	virtual ~LLInterp() {}
 
 	virtual void start();
@@ -151,6 +151,7 @@ class LLInterpFunc : public LLInterp<Type>
 
 template <typename Type>
 LLInterp<Type>::LLInterp()
+: mStartVal(Type()), mEndVal(Type()), mCurVal(Type())
 {
 	mStartTime = 0.f;
 	mEndTime = 1.f;
-- 
GitLab


From 3d8bd2b166b86e9fa1416d20dedc111a42c2a348 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Thu, 28 Jan 2010 11:52:38 -0800
Subject: [PATCH 270/521] CID-351

Checker: UNINIT_CTOR
Function: LLSelectMgr::LLSelectMgr()
File: /indra/newview/llselectmgr.cpp
---
 indra/newview/llselectmgr.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index 6f76715e732..bf087560510 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -218,7 +218,8 @@ LLSelectMgr::LLSelectMgr()
 	mHoverObjects = new LLObjectSelection();
 	mHighlightedObjects = new LLObjectSelection();
 
-
+	mForceSelection = FALSE;
+	mShowSelection = FALSE;
 }
 
 
-- 
GitLab


From d383adfc92e099676313ed930b2c1c8b1a315ae3 Mon Sep 17 00:00:00 2001
From: Vadim Savchuk <vsavchuk@productengine.com>
Date: Thu, 28 Jan 2010 22:02:31 +0200
Subject: [PATCH 271/521] Fixed bug EXT-3773 (Group chat toasts should have
 inspectors for names). Added on-hover icons to invoke avatar inspector to IM
 toasts.

--HG--
branch : product-engine
---
 indra/newview/lltoastimpanel.cpp | 37 ++++++++++++++++++++++++++++++++
 indra/newview/lltoastimpanel.h   |  3 +++
 2 files changed, 40 insertions(+)

diff --git a/indra/newview/lltoastimpanel.cpp b/indra/newview/lltoastimpanel.cpp
index 7717ae9e011..89a58cd736a 100644
--- a/indra/newview/lltoastimpanel.cpp
+++ b/indra/newview/lltoastimpanel.cpp
@@ -33,8 +33,11 @@
 #include "llviewerprecompiledheaders.h"
 #include "lltoastimpanel.h"
 
+#include "llfloaterreg.h"
 #include "llnotifications.h"
 #include "llinstantmessage.h"
+#include "lltooltip.h"
+
 #include "llviewerchat.h"
 
 const S32 LLToastIMPanel::DEFAULT_MESSAGE_MAX_LINE_COUNT	= 6;
@@ -80,6 +83,7 @@ LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) :	LLToastPanel(p.notif
 	mAvatarName->setValue(p.from);
 	mTime->setValue(p.time);
 	mSessionID = p.session_id;
+	mAvatarID = p.avatar_id;
 	mNotification = p.notification;
 
 	if(p.from == SYSTEM_FROM)
@@ -119,3 +123,36 @@ BOOL LLToastIMPanel::handleMouseDown(S32 x, S32 y, MASK mask)
 
 	return TRUE;
 }
+
+//virtual
+BOOL LLToastIMPanel::handleToolTip(S32 x, S32 y, MASK mask)
+{
+	// It's not our direct child, so parentPointInView() doesn't work.
+	LLRect name_rect;
+	mAvatarName->localRectToOtherView(mAvatarName->getLocalRect(), &name_rect, this);
+	if (!name_rect.pointInRect(x, y))
+		return LLToastPanel::handleToolTip(x, y, mask);
+
+	// Spawn at right side of the name textbox.
+	LLRect sticky_rect = mAvatarName->calcScreenRect();
+	S32 icon_x = llmin(sticky_rect.mLeft + mAvatarName->getTextPixelWidth() + 3, sticky_rect.mRight - 16);
+	LLCoordGL pos(icon_x, sticky_rect.mTop);
+
+	LLToolTip::Params params;
+	params.background_visible(false);
+	params.click_callback(boost::bind(&LLToastIMPanel::showInspector, this));
+	params.delay_time(0.0f);		// spawn instantly on hover
+	params.image(LLUI::getUIImage("Info_Small"));
+	params.message("");
+	params.padding(0);
+	params.pos(pos);
+	params.sticky_rect(sticky_rect);
+
+	LLToolTipMgr::getInstance()->show(params);
+	return TRUE;
+}
+
+void LLToastIMPanel::showInspector()
+{
+	LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", mAvatarID));
+}
diff --git a/indra/newview/lltoastimpanel.h b/indra/newview/lltoastimpanel.h
index 42d9a97c3f8..154e6dae16b 100644
--- a/indra/newview/lltoastimpanel.h
+++ b/indra/newview/lltoastimpanel.h
@@ -58,11 +58,14 @@ class LLToastIMPanel: public LLToastPanel
 	LLToastIMPanel(LLToastIMPanel::Params &p);
 	virtual ~LLToastIMPanel();
 	/*virtual*/ BOOL 	handleMouseDown(S32 x, S32 y, MASK mask);
+	/*virtual*/ BOOL	handleToolTip(S32 x, S32 y, MASK mask);
 private:
+	void showInspector();
 	static const S32 DEFAULT_MESSAGE_MAX_LINE_COUNT;
 
 	LLNotificationPtr	mNotification;
 	LLUUID				mSessionID;
+	LLUUID				mAvatarID;
 	LLAvatarIconCtrl*	mAvatarIcon;
 	LLTextBox*			mAvatarName;
 	LLTextBox*			mTime;
-- 
GitLab


From 683e7dc9c387297aed6b670fff1915af880562ae Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Thu, 28 Jan 2010 12:47:45 -0800
Subject: [PATCH 272/521] FIX EXT-4630 EXT-4670: Show inspector tooltip over
 media, don't show it if media is playing Review #91

This is a different take from my prior implementation. This has two changes to the "rules" for showing the inspector tooltip:
1. Do not show the inspector tooltip if hovering over a face that has media displaying
2. If you hover over a face with media *data* on it, show the inspector tooltip, subject to rule #1 (i.e. only if media is not displaying)
---
 indra/newview/lltoolpie.cpp | 40 ++++++++++++++++++++++---------------
 1 file changed, 24 insertions(+), 16 deletions(-)

diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index 39e71974fdc..bf1e307d717 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -910,16 +910,19 @@ BOOL LLToolPie::handleTooltipObject( LLViewerObject* hover_object, std::string l
 				tooltip_msg.append( nodep->mName );
 			}
 			
+			bool has_media = false;
 			bool is_time_based_media = false;
 			bool is_web_based_media = false;
 			bool is_media_playing = false;
+			bool is_media_displaying = false;
 			
 			// Does this face have media?
 			const LLTextureEntry* tep = hover_object->getTE(mHoverPick.mObjectFace);
 			
 			if(tep)
 			{
-				const LLMediaEntry* mep = tep->hasMedia() ? tep->getMediaData() : NULL;
+				has_media = tep->hasMedia();
+				const LLMediaEntry* mep = has_media ? tep->getMediaData() : NULL;
 				if (mep)
 				{
 					viewer_media_t media_impl = LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID());
@@ -927,33 +930,38 @@ BOOL LLToolPie::handleTooltipObject( LLViewerObject* hover_object, std::string l
 					
 					if (media_impl.notNull() && (media_impl->hasMedia()))
 					{
+						is_media_displaying = true;
 						LLStringUtil::format_map_t args;
 						
 						media_plugin = media_impl->getMediaPlugin();
 						if(media_plugin)
-						{	if(media_plugin->pluginSupportsMediaTime())
-						{
-							is_time_based_media = true;
-							is_web_based_media = false;
-							//args["[CurrentURL]"] =  media_impl->getMediaURL();
-							is_media_playing = media_impl->isMediaPlaying();
-						}
-						else
-						{
-							is_time_based_media = false;
-							is_web_based_media = true;
-							//args["[CurrentURL]"] =  media_plugin->getLocation();
-						}
+						{	
+							if(media_plugin->pluginSupportsMediaTime())
+							{
+								is_time_based_media = true;
+								is_web_based_media = false;
+								//args["[CurrentURL]"] =  media_impl->getMediaURL();
+								is_media_playing = media_impl->isMediaPlaying();
+							}
+							else
+							{
+								is_time_based_media = false;
+								is_web_based_media = true;
+								//args["[CurrentURL]"] =  media_plugin->getLocation();
+							}
 							//tooltip_msg.append(LLTrans::getString("CurrentURL", args));
 						}
 					}
 				}
 			}
 			
+			// Avoid showing tip over media that's displaying
 			// also check the primary node since sometimes it can have an action even though
 			// the root node doesn't
-			bool needs_tip = needs_tooltip(nodep) || 
-			needs_tooltip(LLSelectMgr::getInstance()->getPrimaryHoverNode());
+			bool needs_tip = !is_media_displaying &&
+				(has_media || 
+				 needs_tooltip(nodep) || 
+				 needs_tooltip(LLSelectMgr::getInstance()->getPrimaryHoverNode()));
 			
 			if (show_all_object_tips || needs_tip)
 			{
-- 
GitLab


From a08f098847cda964bfba5476fd213e05bdf67dd0 Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Fri, 29 Jan 2010 10:11:53 +0200
Subject: [PATCH 273/521] Work on major bug EXT-3985 ([BSI] Landmarks created
 in Viewer 2.0 show up with 1@ in Viewer 1.23.x) -- implemented patch to
 remove LM prefixes from landmarks' names *NOTE: It will be unnecessary after
 the first successful session in viewer 2.0. Can be removed before public
 release.

Implementation details:
At the first run with this patch it patches all cached landmarks: removes LM sort prefixes and
updates them on the viewer and server sides.
Also it calls fetching agent's inventory to process not yet loaded landmarks too.
If fetching is successfully done it will store special per-agent empty file-marker
in the user temporary folder (where cached inventory is loaded) while caching agent's inventory.
After that in will not affect the viewer until cached marker is removed.

--HG--
branch : product-engine
---
 indra/newview/llinventorymodel.cpp | 134 +++++++++++++++++++++++++++++
 1 file changed, 134 insertions(+)

diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index 961f7adc0a5..9e96bbc55f4 100644
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -142,6 +142,105 @@ bool LLCanCache::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
 	return rv;
 }
 
+/*
+This namespace contains a functionality to remove LM prefixes were used to store sort order of
+Favorite Landmarks in landmarks' names.
+Once being in Favorites folder LM inventory Item has such prefix.
+Due to another solution is implemented in EXT-3985 these prefixes should be removed.
+
+*NOTE: It will be unnecessary after the first successful session in viewer 2.0.
+Can be removed before public release.
+
+Implementation details:
+At the first run with this patch it patches all cached landmarks: removes LM sort prefixes and
+updates them on the viewer and server sides.
+Also it calls fetching agent's inventory to process not yet loaded landmarks too.
+If fetching is successfully done it will store special per-agent empty file-marker
+in the user temporary folder (where cached inventory is loaded) while caching agent's inventory.
+After that in will not affect the viewer until cached marker is removed.
+*/
+namespace LMSortPrefix
+{
+	bool cleanup_done = false;
+	const std::string getMarkerPath()
+	{
+		std::string path(gDirUtilp->getExpandedFilename(LL_PATH_CACHE, gAgentID.asString()));
+		std::string marker_filename = llformat("%s-lm_prefix_marker", path.c_str());
+
+		return marker_filename;
+	}
+	bool wasClean()
+	{
+		static bool was_clean = false;
+		static bool already_init = false;
+		if (already_init) return was_clean;
+
+		already_init = true;
+		std::string path_to_marker = getMarkerPath();
+		was_clean = LLFile::isfile(path_to_marker);
+
+		return was_clean;
+	}
+
+	void setLandmarksWereCleaned()
+	{
+		if (cleanup_done)
+		{
+			std::string path_to_marker = getMarkerPath();
+			LLFILE* file = LLFile::fopen(path_to_marker, "w");
+			if(!file)
+			{
+				llwarns << "unable to save marker that LM prefixes were removed: " << path_to_marker << llendl;
+				return;
+			}
+
+			fclose(file);
+		}
+	}
+
+	void removePrefix(LLPointer<LLViewerInventoryItem> inv_item)
+	{
+		if (wasClean())
+		{
+			LL_INFOS_ONCE("") << "Inventory was cleaned for this avatar. Patch can be removed." << LL_ENDL;
+			return;
+		}
+
+		if (LLInventoryType::IT_LANDMARK != inv_item->getInventoryType()) return;
+
+		std::string old_name = inv_item->getName();
+
+		S32 sort_field = -1;
+		std::string display_name;
+		BOOL exists = LLViewerInventoryItem::extractSortFieldAndDisplayName(old_name, &sort_field, &display_name);
+		if (exists && sort_field != -1)
+		{
+			llinfos << "Removing Landmark sort field and separator for: " << old_name << " | " << inv_item->getUUID() << llendl;
+			LLUUID parent_uuid = inv_item->getParentUUID();
+			if (gInventory.getCategory(parent_uuid))
+			{
+				llinfos << "parent folder is: " << gInventory.getCategory(parent_uuid)->getName() << llendl;
+			}
+
+
+			// mark item completed to avoid error while copying and updating server
+			inv_item->setComplete(TRUE);
+			LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(inv_item);
+			new_item->rename(display_name);
+			gInventory.updateItem(new_item);
+			new_item->updateServer(FALSE);
+
+			gInventory.notifyObservers();
+		}
+	}
+
+	void completeCleanup()
+	{
+		// background fetch is completed. can save marker
+		cleanup_done = true;
+	}
+}
+
 ///----------------------------------------------------------------------------
 /// Class LLInventoryModel
 ///----------------------------------------------------------------------------
@@ -1736,6 +1835,8 @@ void LLInventoryModel::stopBackgroundFetch()
 		gIdleCallbacks.deleteFunction(&LLInventoryModel::backgroundFetch, NULL);
 		sBulkFetchCount=0;
 		sMinTimeBetweenFetches=0.0f;
+
+		LMSortPrefix::completeCleanup();
 	}
 }
 
@@ -1882,6 +1983,13 @@ void LLInventoryModel::cache(
 	const LLUUID& parent_folder_id,
 	const LLUUID& agent_id)
 {
+	if (getRootFolderID() == parent_folder_id)
+	{
+		// *TODO: mantipov: can be removed before public release, EXT-3985
+		//save marker to avoid fetching inventory on future sessions
+		LMSortPrefix::setLandmarksWereCleaned();
+	}
+
 	lldebugs << "Caching " << parent_folder_id << " for " << agent_id
 			 << llendl;
 	LLViewerInventoryCategory* root_cat = getCategory(parent_folder_id);
@@ -2692,6 +2800,28 @@ void LLInventoryModel::buildParentChildMap()
 			// The inv tree is built.
 			mIsAgentInvUsable = true;
 
+			{// *TODO: mantipov: can be removed before public release, EXT-3985
+				/*
+				*HACK: mantipov: to cleanup landmarks were marked with sort index prefix in name.
+				Is necessary to be called once per account after EXT-3985 is implemented.
+				So, let fetch agent's inventory, processing will be done in processInventoryDescendents()
+				Should be removed before public release.
+				*/
+				if (!LMSortPrefix::wasClean())
+				{
+					cat_array_t cats;
+					item_array_t items;
+					collectDescendents(agent_inv_root_id, cats, items, INCLUDE_TRASH);
+
+					for (item_array_t::const_iterator it= items.begin(); it != items.end(); ++it)
+					{
+						LMSortPrefix::removePrefix(*it);
+					}
+
+					gInventory.startBackgroundFetch(agent_inv_root_id);
+				}
+			}
+
 			llinfos << "Inventory initialized, notifying observers" << llendl;
 			addChangedMask(LLInventoryObserver::ALL, LLUUID::null);
 			notifyObservers();
@@ -3457,6 +3587,10 @@ void LLInventoryModel::processInventoryDescendents(LLMessageSystem* msg,void**)
 			continue;
 		}
 		gInventory.updateItem(titem);
+
+		{// *TODO: mantipov: can be removed before public release, EXT-3985
+			LMSortPrefix::removePrefix(titem);
+		}
 	}
 
 	// set version and descendentcount according to message.
-- 
GitLab


From ff0fa520be6cfb753d19bd51f7bdf5b833010135 Mon Sep 17 00:00:00 2001
From: Ychebotarev ProductEngine <ychebotarev@productengine.com>
Date: Fri, 29 Jan 2010 10:50:39 +0200
Subject: [PATCH 274/521] fix for normal EXT-2450 [BSI] Extra column in Group
 panel memberlist

--HG--
branch : product-engine
---
 indra/newview/llpanelgroupgeneral.cpp                     | 8 ++++++--
 .../newview/skins/default/xui/en/panel_group_general.xml  | 7 +++++--
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/indra/newview/llpanelgroupgeneral.cpp b/indra/newview/llpanelgroupgeneral.cpp
index 21b253223f0..51fc670d877 100644
--- a/indra/newview/llpanelgroupgeneral.cpp
+++ b/indra/newview/llpanelgroupgeneral.cpp
@@ -679,6 +679,7 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
 
 			LLSD row;
 			row["columns"][0]["value"] = pending.str();
+			row["columns"][0]["column"] = "name";
 
 			mListVisibleMembers->setEnabled(FALSE);
 			mListVisibleMembers->addElement(row);
@@ -731,9 +732,11 @@ void LLPanelGroupGeneral::updateMembers()
 		row["columns"][1]["value"] = member->getTitle();
 		row["columns"][1]["font"]["name"] = "SANSSERIF_SMALL";
 		row["columns"][1]["font"]["style"] = style;
+
+		std::string status = member->getOnlineStatus();
 		
-		row["columns"][2]["column"] = "online";
-		row["columns"][2]["value"] = member->getOnlineStatus();
+		row["columns"][2]["column"] = "status";
+		row["columns"][2]["value"] = status;
 		row["columns"][2]["font"]["name"] = "SANSSERIF_SMALL";
 		row["columns"][2]["font"]["style"] = style;
 
@@ -846,6 +849,7 @@ void LLPanelGroupGeneral::reset()
 	{
 		LLSD row;
 		row["columns"][0]["value"] = "no members yet";
+		row["columns"][0]["column"] = "name";
 
 		mListVisibleMembers->deleteAllItems();
 		mListVisibleMembers->setEnabled(FALSE);
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 af73faf9a1d..b903032ed54 100644
--- a/indra/newview/skins/default/xui/en/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_general.xml
@@ -42,17 +42,20 @@ Hover your mouse over the options for more help.
      height="156"
      layout="topleft"
      left="0"
-     right="-1"
      name="visible_members"
      top_pad="2">
         <name_list.columns
          label="Member"
          name="name"
-         relative_width="0.6" />
+         relative_width="0.4" />
         <name_list.columns
          label="Title"
          name="title"
          relative_width="0.4" />
+        <name_list.columns
+         label="Status"
+         name="status"
+         relative_width="0.2" />
       </name_list>
          <text
          follows="left|top|right"
-- 
GitLab


From f06a2e310f71f5514f2aa62e3ca31d36f43ed213 Mon Sep 17 00:00:00 2001
From: Ychebotarev ProductEngine <ychebotarev@productengine.com>
Date: Fri, 29 Jan 2010 11:11:50 +0200
Subject: [PATCH 275/521] fix for normal EXT-1888 Apply button remains active
 after Applying changes there is no 'Allpy' button in other panels.

--HG--
branch : product-engine
---
 .../skins/default/xui/en/panel_preferences_graphics1.xml    | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

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 a0fcf59fc8d..9e502557683 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
@@ -707,7 +707,8 @@
             top_delta="16"
             width="315" />
         </radio_group>
-	</panel>	
+	</panel>
+	
         <button
      follows="left|bottom"
      height="23"
@@ -717,7 +718,8 @@
      left="10"
      name="Apply"
      top="383"
-     width="115">
+     width="115"
+     visible="false">
         <button.commit_callback
          function="Pref.Apply" />
     </button>
-- 
GitLab


From 72b2cf291d67ae7a271b5745e50290d174a088b6 Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Fri, 29 Jan 2010 12:25:38 +0200
Subject: [PATCH 276/521] Work on major bug EXT-3985 ([BSI] Landmarks created
 in Viewer 2.0 show up with 1@ in Viewer 1.23.x) -- implemented cleanning of
 stored sort indexes to remove ones for landmarks not in Favorites while
 disconnecting viewer

--HG--
branch : product-engine
---
 indra/newview/llviewerinventory.cpp | 67 +++++++++++++++++++++++++++++
 1 file changed, 67 insertions(+)

diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index a3cbd80c84f..1b141532ef5 100644
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -1178,8 +1178,10 @@ const std::string& LLViewerInventoryItem::getName() const
 /**
  * Class to store sorting order of favorites landmarks in a local file. EXT-3985.
  * It replaced previously implemented solution to store sort index in landmark's name as a "<N>@" prefix.
+ * Data are stored in user home directory.
  */
 class LLFavoritesOrderStorage : public LLSingleton<LLFavoritesOrderStorage>
+	, public LLDestroyClass<LLFavoritesOrderStorage>
 {
 public:
 	/**
@@ -1193,12 +1195,27 @@ class LLFavoritesOrderStorage : public LLSingleton<LLFavoritesOrderStorage>
 	S32 getSortIndex(const LLUUID& inv_item_id);
 	void removeSortIndex(const LLUUID& inv_item_id);
 
+	/**
+	 * Implementation of LLDestroyClass. Calls cleanup() instance method.
+	 *
+	 * It is important this callback is called before gInventory is cleaned.
+	 * For now it is called from LLAppViewer::cleanup() -> LLAppViewer::disconnectViewer(),
+	 * Inventory is cleaned later from LLAppViewer::cleanup() after LLAppViewer::disconnectViewer() is called.
+	 * @see cleanup()
+	 */
+	static void destroyClass();
+
 	const static S32 NO_INDEX;
 private:
 	friend class LLSingleton<LLFavoritesOrderStorage>;
 	LLFavoritesOrderStorage() { load(); }
 	~LLFavoritesOrderStorage() { save(); }
 
+	/**
+	 * Removes sort indexes for items which are not in Favorites bar for now.
+	 */
+	void cleanup();
+
 	const static std::string SORTING_DATA_FILE_NAME;
 
 	void load();
@@ -1206,6 +1223,32 @@ class LLFavoritesOrderStorage : public LLSingleton<LLFavoritesOrderStorage>
 
 	typedef std::map<LLUUID, S32> sort_index_map_t;
 	sort_index_map_t mSortIndexes;
+
+	struct IsNotInFavorites
+	{
+		IsNotInFavorites(const LLInventoryModel::item_array_t& items)
+			: mFavoriteItems(items)
+		{
+
+		}
+
+		/**
+		 * Returns true if specified item is not found among inventory items
+		 */
+		bool operator()(const sort_index_map_t::value_type& id_index_pair) const
+		{
+			LLPointer<LLViewerInventoryItem> item = gInventory.getItem(id_index_pair.first);
+			if (item.isNull()) return true;
+
+			LLInventoryModel::item_array_t::const_iterator found_it =
+				std::find(mFavoriteItems.begin(), mFavoriteItems.end(), item);
+
+			return found_it == mFavoriteItems.end();
+		}
+	private:
+		LLInventoryModel::item_array_t mFavoriteItems;
+	};
+
 };
 
 const std::string LLFavoritesOrderStorage::SORTING_DATA_FILE_NAME = "landmarks_sorting.xml";
@@ -1231,6 +1274,12 @@ void LLFavoritesOrderStorage::removeSortIndex(const LLUUID& inv_item_id)
 	mSortIndexes.erase(inv_item_id);
 }
 
+// static
+void LLFavoritesOrderStorage::destroyClass()
+{
+	LLFavoritesOrderStorage::instance().cleanup();
+}
+
 void LLFavoritesOrderStorage::load()
 {
 	// load per-resident sorting information
@@ -1273,6 +1322,24 @@ void LLFavoritesOrderStorage::save()
 	}
 }
 
+void LLFavoritesOrderStorage::cleanup()
+{
+	const LLUUID fav_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE);
+	LLInventoryModel::cat_array_t cats;
+	LLInventoryModel::item_array_t items;
+	gInventory.collectDescendents(fav_id, cats, items, LLInventoryModel::EXCLUDE_TRASH);
+
+	IsNotInFavorites is_not_in_fav(items);
+
+	sort_index_map_t  aTempMap;
+	//copy unremoved values from mSortIndexes to aTempMap
+	std::remove_copy_if(mSortIndexes.begin(), mSortIndexes.end(), 
+		inserter(aTempMap, aTempMap.begin()),
+		is_not_in_fav);
+
+	//Swap the contents of mSortIndexes and aTempMap
+	mSortIndexes.swap(aTempMap);
+}
 
 
 // *TODO: mantipov: REMOVE, EXT-3985
-- 
GitLab


From 540752ff2dcaaf565e8a9dff93079816ef572312 Mon Sep 17 00:00:00 2001
From: Lynx Linden <lynx@lindenlab.com>
Date: Fri, 29 Jan 2010 10:27:15 +0000
Subject: [PATCH 277/521] DEV-41686: Added a DisableMouseWarp debug option.

Turning this option on makes alt-zooming and mouselook actually work
when using Synergy. I believe this will also make it work for certain
input devices, and Parallels, that control your cursor by setting its
position in absolute coordinates.
---
 indra/newview/app_settings/settings.xml | 11 +++++++++++
 indra/newview/llviewerwindow.cpp        | 17 ++++++++++-------
 2 files changed, 21 insertions(+), 7 deletions(-)

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 1ef79aeec09..f3bda19ed1f 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -2377,6 +2377,17 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
+    <key>DisableMouseWarp</key>
+    <map>
+      <key>Comment</key>
+      <string>Disable warping of the mouse to the center of the screen during alt-zoom and mouse look. Useful with certain input devices, mouse sharing programs like Synergy, or running under Parallels.</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>0</integer>
+    </map>
     <key>DisableRendering</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index b4c73dba262..8692cdcc573 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -2269,15 +2269,18 @@ void LLViewerWindow::handleScrollWheel(S32 clicks)
 
 void LLViewerWindow::moveCursorToCenter()
 {
-	S32 x = getWorldViewWidthScaled() / 2;
-	S32 y = getWorldViewHeightScaled() / 2;
+	if (! gSavedSettings.getBOOL("DisableMouseWarp"))
+	{
+		S32 x = getWorldViewWidthScaled() / 2;
+		S32 y = getWorldViewHeightScaled() / 2;
 	
-	//on a forced move, all deltas get zeroed out to prevent jumping
-	mCurrentMousePoint.set(x,y);
-	mLastMousePoint.set(x,y);
-	mCurrentMouseDelta.set(0,0);	
+		//on a forced move, all deltas get zeroed out to prevent jumping
+		mCurrentMousePoint.set(x,y);
+		mLastMousePoint.set(x,y);
+		mCurrentMouseDelta.set(0,0);	
 
-	LLUI::setMousePositionScreen(x, y);	
+		LLUI::setMousePositionScreen(x, y);	
+	}
 }
 
 
-- 
GitLab


From 4666636cdc67beb3cbb1c81107ce1f1f368385e1 Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Fri, 29 Jan 2010 12:34:23 +0200
Subject: [PATCH 278/521] Work on major bug EXT-3985 ([BSI] Landmarks created
 in Viewer 2.0 show up with 1@ in Viewer 1.23.x) -- improvements: for now sort
 indexes are cleaned & saved only if something was changed amont them.

--HG--
branch : product-engine
---
 indra/newview/llviewerinventory.cpp | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index 1b141532ef5..bcfb8ecbbde 100644
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -1208,7 +1208,7 @@ class LLFavoritesOrderStorage : public LLSingleton<LLFavoritesOrderStorage>
 	const static S32 NO_INDEX;
 private:
 	friend class LLSingleton<LLFavoritesOrderStorage>;
-	LLFavoritesOrderStorage() { load(); }
+	LLFavoritesOrderStorage() : mIsDirty(false) { load(); }
 	~LLFavoritesOrderStorage() { save(); }
 
 	/**
@@ -1224,6 +1224,8 @@ class LLFavoritesOrderStorage : public LLSingleton<LLFavoritesOrderStorage>
 	typedef std::map<LLUUID, S32> sort_index_map_t;
 	sort_index_map_t mSortIndexes;
 
+	bool mIsDirty;
+
 	struct IsNotInFavorites
 	{
 		IsNotInFavorites(const LLInventoryModel::item_array_t& items)
@@ -1257,6 +1259,7 @@ const S32 LLFavoritesOrderStorage::NO_INDEX = -1;
 void LLFavoritesOrderStorage::setSortIndex(const LLUUID& inv_item_id, S32 sort_index)
 {
 	mSortIndexes[inv_item_id] = sort_index;
+	mIsDirty = true;
 }
 
 S32 LLFavoritesOrderStorage::getSortIndex(const LLUUID& inv_item_id)
@@ -1272,6 +1275,7 @@ S32 LLFavoritesOrderStorage::getSortIndex(const LLUUID& inv_item_id)
 void LLFavoritesOrderStorage::removeSortIndex(const LLUUID& inv_item_id)
 {
 	mSortIndexes.erase(inv_item_id);
+	mIsDirty = true;
 }
 
 // static
@@ -1302,6 +1306,9 @@ void LLFavoritesOrderStorage::load()
 
 void LLFavoritesOrderStorage::save()
 {
+	// nothing to save if clean
+	if (!mIsDirty) return;
+
 	// If we quit from the login screen we will not have an SL account
 	// name.  Don't try to save, otherwise we'll dump a file in
 	// C:\Program Files\SecondLife\ or similar. JC
@@ -1324,6 +1331,9 @@ void LLFavoritesOrderStorage::save()
 
 void LLFavoritesOrderStorage::cleanup()
 {
+	// nothing to clean
+	if (!mIsDirty) return;
+
 	const LLUUID fav_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE);
 	LLInventoryModel::cat_array_t cats;
 	LLInventoryModel::item_array_t items;
-- 
GitLab


From 8a7ca61479813f55481f1040f75cd6fc63e713d2 Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Fri, 29 Jan 2010 13:05:11 +0200
Subject: [PATCH 279/521] Work on major bug EXT-3985 ([BSI] Landmarks created
 in Viewer 2.0 show up with 1@ in Viewer 1.23.x) -- cleanup: removed
 deprecated code added for previous sollution to support custom sorting of
 favorite landmarks.

For now previous implementation is removed, bug is FIXED.

--HG--
branch : product-engine
---
 indra/newview/llfavoritesbar.cpp    |  4 +--
 indra/newview/llinventorybridge.cpp |  2 +-
 indra/newview/llviewerinventory.cpp | 50 ++++++-----------------------
 indra/newview/llviewerinventory.h   |  4 ---
 4 files changed, 13 insertions(+), 47 deletions(-)

diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
index 0e42ff09d8c..57e66194703 100644
--- a/indra/newview/llfavoritesbar.cpp
+++ b/indra/newview/llfavoritesbar.cpp
@@ -685,7 +685,7 @@ void LLFavoritesBarCtrl::updateButtons()
 			{
 				// an child's order  and mItems  should be same   
 				if (button->getLandmarkId() != item->getUUID() // sort order has been changed
-					|| button->getLabelSelected() != item->getDisplayName() // favorite's name has been changed
+					|| button->getLabelSelected() != item->getName() // favorite's name has been changed
 					|| button->getRect().mRight < rightest_point) // favbar's width has been changed
 				{
 					break;
@@ -780,7 +780,7 @@ LLButton* LLFavoritesBarCtrl::createButton(const LLPointer<LLViewerInventoryItem
 	 * Empty space (or ...) is displaying instead of last symbols, even though the width of the button is enough.
 	 * Problem will gone, if we  stretch out the button. For that reason I have to put additional  20 pixels.
 	 */
-	int requred_width = mFont->getWidth(item->getDisplayName()) + 20;
+	int requred_width = mFont->getWidth(item->getName()) + 20;
 	int width = requred_width > def_button_width? def_button_width : requred_width;
 	LLFavoriteLandmarkButton* fav_btn = NULL;
 
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 6c9c7d15be8..e04d3ec5a01 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -5079,7 +5079,7 @@ void	LLLandmarkBridgeAction::doIt()
 		payload["asset_id"] = item->getAssetUUID();		
 		
 		LLSD args; 
-		args["LOCATION"] = item->getDisplayName(); 
+		args["LOCATION"] = item->getName(); 
 		
 		LLNotificationsUtil::add("TeleportFromLandmark", args, payload);
 	}
diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index bcfb8ecbbde..30019926304 100644
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -1172,7 +1172,7 @@ const std::string& LLViewerInventoryItem::getName() const
 		return linked_category->getName();
 	}
 
-	return getDisplayName();
+	return  LLInventoryItem::getName();
 }
 
 /**
@@ -1340,42 +1340,17 @@ void LLFavoritesOrderStorage::cleanup()
 	gInventory.collectDescendents(fav_id, cats, items, LLInventoryModel::EXCLUDE_TRASH);
 
 	IsNotInFavorites is_not_in_fav(items);
-
-	sort_index_map_t  aTempMap;
-	//copy unremoved values from mSortIndexes to aTempMap
-	std::remove_copy_if(mSortIndexes.begin(), mSortIndexes.end(), 
-		inserter(aTempMap, aTempMap.begin()),
-		is_not_in_fav);
-
-	//Swap the contents of mSortIndexes and aTempMap
-	mSortIndexes.swap(aTempMap);
-}
 
+	sort_index_map_t  aTempMap;
+	//copy unremoved values from mSortIndexes to aTempMap
+	std::remove_copy_if(mSortIndexes.begin(), mSortIndexes.end(), 
+		inserter(aTempMap, aTempMap.begin()),
+		is_not_in_fav);
 
-// *TODO: mantipov: REMOVE, EXT-3985
-const std::string& LLViewerInventoryItem::getDisplayName() const
-{
-	return LLInventoryItem::getName();
-/*
-	std::string result;
-	BOOL hasSortField = extractSortFieldAndDisplayName(0, &result);
-
-	mDisplayName = LLInventoryItem::getName();
-
-	return mDisplayName = hasSortField ? result : LLInventoryItem::getName();
-*/
+	//Swap the contents of mSortIndexes and aTempMap
+	mSortIndexes.swap(aTempMap);
 }
 
-// *TODO: mantipov: REMOVE, EXT-3985
-// static
-std::string LLViewerInventoryItem::getDisplayName(const std::string& name)
-{
-	llassert(false);
-	std::string result;
-	BOOL hasSortField = extractSortFieldAndDisplayName(name, 0, &result);
-
-	return hasSortField ? result : name;
-}
 
 S32 LLViewerInventoryItem::getSortField() const
 {
@@ -1387,12 +1362,6 @@ void LLViewerInventoryItem::setSortField(S32 sortField)
 	LLFavoritesOrderStorage::instance().setSortIndex(mUUID, sortField);
 }
 
-// *TODO: mantipov: REMOVE, EXT-3985
-void LLViewerInventoryItem::rename(const std::string& n)
-{
-	LLInventoryItem::rename(n);
-}
-
 const LLPermissions& LLViewerInventoryItem::getPermissions() const
 {
 	// Use the actual permissions of the symlink, not its parent.
@@ -1481,7 +1450,8 @@ U32 LLViewerInventoryItem::getCRC32() const
 	return LLInventoryItem::getCRC32();	
 }
 
-// *TODO: mantipov: REMOVE, EXT-3985
+// *TODO: mantipov: should be removed with LMSortPrefix patch in llinventorymodel.cpp, EXT-3985
+static char getSeparator() { return '@'; }
 BOOL LLViewerInventoryItem::extractSortFieldAndDisplayName(const std::string& name, S32* sortField, std::string* displayName)
 {
 	using std::string;
diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h
index cf104503a86..c24f76c87a1 100644
--- a/indra/newview/llviewerinventory.h
+++ b/indra/newview/llviewerinventory.h
@@ -64,12 +64,8 @@ class LLViewerInventoryItem : public LLInventoryItem, public boost::signals2::tr
 	virtual LLAssetType::EType getType() const;
 	virtual const LLUUID& getAssetUUID() const;
 	virtual const std::string& getName() const;
-	virtual const std::string& getDisplayName() const;
-	static std::string getDisplayName(const std::string& name);
-	static char getSeparator() { return '@'; }
 	virtual S32 getSortField() const;
 	virtual void setSortField(S32 sortField);
-	virtual void rename(const std::string& new_name);
 	virtual const LLPermissions& getPermissions() const;
 	virtual const LLUUID& getCreatorUUID() const;
 	virtual const std::string& getDescription() const;
-- 
GitLab


From d9b924edd2f5d511c5e506fafe2f01f983214711 Mon Sep 17 00:00:00 2001
From: Lynx Linden <lynx@lindenlab.com>
Date: Fri, 29 Jan 2010 11:26:08 +0000
Subject: [PATCH 280/521] EXT-4763: Turn off URL highlighting for toast alerts.

---
 indra/newview/lltoastalertpanel.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/newview/lltoastalertpanel.cpp b/indra/newview/lltoastalertpanel.cpp
index c3ccb9380b0..da31bb3e73c 100644
--- a/indra/newview/lltoastalertpanel.cpp
+++ b/indra/newview/lltoastalertpanel.cpp
@@ -170,6 +170,7 @@ LLToastAlertPanel::LLToastAlertPanel( LLNotificationPtr notification, bool modal
 	params.tab_stop(false);
 	params.wrap(true);
 	params.follows.flags(FOLLOWS_LEFT | FOLLOWS_TOP);
+	params.allow_html(false);
 
 	LLTextBox * msg_box = LLUICtrlFactory::create<LLTextBox> (params);
 	// Compute max allowable height for the dialog text, so we can allocate
-- 
GitLab


From 3da01ec592edd2aaab1fe6dcaaaed6d13cc492b6 Mon Sep 17 00:00:00 2001
From: Lynx Linden <lynx@lindenlab.com>
Date: Fri, 29 Jan 2010 11:50:59 +0000
Subject: [PATCH 281/521] EXT-4747: Turn on URL hyperlinking for Pick Info
 descriptions.

---
 indra/newview/skins/default/xui/en/panel_pick_info.xml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/newview/skins/default/xui/en/panel_pick_info.xml b/indra/newview/skins/default/xui/en/panel_pick_info.xml
index 65ccd10cf02..74899887220 100644
--- a/indra/newview/skins/default/xui/en/panel_pick_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_pick_info.xml
@@ -88,6 +88,7 @@
          follows="all"
          height="100"
          width="280"
+         allow_html="true"	
          hide_scrollbar="false"
          layout="topleft"
          left="10"
-- 
GitLab


From 57e1216f798dbbe479493c19658da36b96622290 Mon Sep 17 00:00:00 2001
From: Dmitry Zaporozhan <dzaporozhan@productengine.com>
Date: Fri, 29 Jan 2010 14:07:12 +0200
Subject: [PATCH 282/521] Fixed normal bug EXT-4374 - Gestures floater:
 'Activate' btn applies unsaved changes to gesture.

--HG--
branch : product-engine
---
 indra/newview/llpreviewgesture.cpp | 10 ++++++++--
 indra/newview/llpreviewgesture.h   |  1 +
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp
index 84bdaafacf3..53e351e66e1 100644
--- a/indra/newview/llpreviewgesture.cpp
+++ b/indra/newview/llpreviewgesture.cpp
@@ -155,6 +155,12 @@ LLPreviewGesture* LLPreviewGesture::show(const LLUUID& item_id, const LLUUID& ob
 	return preview;
 }
 
+void LLPreviewGesture::draw()
+{
+	// Skip LLPreview::draw() to avoid description update
+	LLFloater::draw();
+}
+
 // virtual
 BOOL LLPreviewGesture::handleKeyHere(KEY key, MASK mask)
 {
@@ -497,11 +503,9 @@ BOOL LLPreviewGesture::postBuild()
 
 	if (item) 
 	{
-		childSetCommitCallback("desc", LLPreview::onText, this);
 		childSetText("desc", item->getDescription());
 		childSetPrevalidate("desc", &LLLineEditor::prevalidateASCIIPrintableNoPipe);
 		
-		childSetCommitCallback("name", LLPreview::onText, this);
 		childSetText("name", item->getName());
 		childSetPrevalidate("name", &LLLineEditor::prevalidateASCIIPrintableNoPipe);
 	}
@@ -1077,6 +1081,8 @@ void LLPreviewGesture::saveIfNeeded()
 	}
 	else
 	{
+		LLPreview::onCommit();
+
 		// Every save gets a new UUID.  Yup.
 		LLTransactionID tid;
 		LLAssetID asset_id;
diff --git a/indra/newview/llpreviewgesture.h b/indra/newview/llpreviewgesture.h
index 19fa1dcc37b..5968e936ef8 100644
--- a/indra/newview/llpreviewgesture.h
+++ b/indra/newview/llpreviewgesture.h
@@ -60,6 +60,7 @@ class LLPreviewGesture : public LLPreview
 	virtual ~LLPreviewGesture();
 
 	// LLView
+	/*virtual*/ void draw();
 	/*virtual*/ BOOL handleKeyHere(KEY key, MASK mask);
 	/*virtual*/ BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
 									 EDragAndDropType cargo_type,
-- 
GitLab


From a67598f762fd64506c9a867160007456d2327cb8 Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Fri, 29 Jan 2010 14:18:31 +0200
Subject: [PATCH 283/521] cleaned cmake list a bit from llimpanel, lltoolbar
 and lloverlaybar

--HG--
branch : product-engine
---
 indra/newview/CMakeLists.txt | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 4c0c895a7df..41b08942eb5 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -241,7 +241,6 @@ set(viewer_SOURCE_FILES
     llimfloater.cpp
     llimfloatercontainer.cpp
     llimhandler.cpp
-    llimpanel.cpp
     llimview.cpp
     llinspect.cpp
     llinspectavatar.cpp
@@ -297,7 +296,6 @@ set(viewer_SOURCE_FILES
     llnotificationscripthandler.cpp
     llnotificationtiphandler.cpp
     lloutputmonitorctrl.cpp
-    lloverlaybar.cpp
     llpanelavatar.cpp
     llpanelavatartag.cpp
     llpanelblockedlist.cpp
@@ -418,7 +416,6 @@ set(viewer_SOURCE_FILES
     lltoastnotifypanel.cpp
     lltoastpanel.cpp
     lltool.cpp
-    lltoolbar.cpp
     lltoolbrush.cpp
     lltoolcomp.cpp
     lltooldraganddrop.cpp
@@ -747,7 +744,6 @@ set(viewer_HEADER_FILES
     llhudview.h
     llimfloater.h
     llimfloatercontainer.h
-    llimpanel.h
     llimview.h
     llinspect.h
     llinspectavatar.h
@@ -799,7 +795,6 @@ set(viewer_HEADER_FILES
     llnotificationhandler.h
     llnotificationmanager.h
     lloutputmonitorctrl.h
-    lloverlaybar.h
     llpanelavatar.h
     llpanelavatartag.h
     llpanelblockedlist.h
@@ -923,7 +918,6 @@ set(viewer_HEADER_FILES
     lltoastnotifypanel.h
     lltoastpanel.h
     lltool.h
-    lltoolbar.h
     lltoolbrush.h
     lltoolcomp.h
     lltooldraganddrop.h
-- 
GitLab


From 56d06544376dea0704d139b28d17d44e3c6fadf9 Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Fri, 29 Jan 2010 14:18:56 +0200
Subject: [PATCH 284/521] got rid from lltoolbar.h includes

--HG--
branch : product-engine
---
 indra/newview/llappviewer.cpp    | 2 --
 indra/newview/llviewermenu.cpp   | 1 -
 indra/newview/llviewerwindow.cpp | 1 -
 3 files changed, 4 deletions(-)

diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 9aa15789edc..9bb0977c1a6 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -163,7 +163,6 @@
 #include "llvotree.h"
 #include "llvoavatar.h"
 #include "llfolderview.h"
-#include "lltoolbar.h"
 #include "llagentpilot.h"
 #include "llvovolume.h"
 #include "llflexibleobject.h" 
@@ -414,7 +413,6 @@ static void settings_to_globals()
 	LLVOAvatar::sVisibleInFirstPerson	= gSavedSettings.getBOOL("FirstPersonAvatarVisible");
 	// clamp auto-open time to some minimum usable value
 	LLFolderView::sAutoOpenTime			= llmax(0.25f, gSavedSettings.getF32("FolderAutoOpenDelay"));
-	LLToolBar::sInventoryAutoOpenTime	= gSavedSettings.getF32("InventoryAutoOpenDelay");
 	LLSelectMgr::sRectSelectInclusive	= gSavedSettings.getBOOL("RectangleSelectInclusive");
 	LLSelectMgr::sRenderHiddenSelections = gSavedSettings.getBOOL("RenderHiddenSelections");
 	LLSelectMgr::sRenderLightRadius = gSavedSettings.getBOOL("RenderLightRadius");
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 96251f75714..12e2fa51569 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -82,7 +82,6 @@
 #include "llsidetray.h"
 #include "llstatusbar.h"
 #include "lltextureview.h"
-#include "lltoolbar.h"
 #include "lltoolcomp.h"
 #include "lltoolmgr.h"
 #include "lltoolpie.h"
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index b4c73dba262..c43f58c8a29 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -147,7 +147,6 @@
 #include "lltexturefetch.h"
 #include "lltextureview.h"
 #include "lltool.h"
-#include "lltoolbar.h"
 #include "lltoolcomp.h"
 #include "lltooldraganddrop.h"
 #include "lltoolface.h"
-- 
GitLab


From 943f8afa09480629ad659de9601b36b3dc565246 Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Fri, 29 Jan 2010 14:25:50 +0200
Subject: [PATCH 285/521] Fixed normal bug EXT-4743 ('Stop flying' button
 disappears if minimize undocked movement controls) - synchronized visibility
 of "stand_stop_flying_container" with a panel visibility when it is
 reparented from the Move Floater to container.

--HG--
branch : product-engine
---
 indra/newview/llmoveview.cpp | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp
index 5981baab60e..4bf2bac6497 100644
--- a/indra/newview/llmoveview.cpp
+++ b/indra/newview/llmoveview.cpp
@@ -651,6 +651,9 @@ void LLPanelStandStopFlying::reparent(LLFloaterMove* move_view)
 		// Detach from movement controls. 
 		parent->removeChild(this);
 		mOriginalParent.get()->addChild(this);
+		// update parent with self visibility (it is changed in setVisible()). EXT-4743
+		mOriginalParent.get()->setVisible(getVisible());
+
 		mAttached = false;
 		updatePosition(); // don't defer until next draw() to avoid flicker
 	}
-- 
GitLab


From ac0fb461f6ad9e81349bd8814201a641a24f40a3 Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Fri, 29 Jan 2010 14:42:57 +0200
Subject: [PATCH 286/521] got rid of lloverlaybar, llmediaremotectrl,
 llvoiceremotectrl dependencies, updated cmake list

--HG--
branch : product-engine
---
 indra/newview/CMakeLists.txt         |  4 ----
 indra/newview/llviewercontrol.cpp    | 31 ----------------------------
 indra/newview/llviewerfloaterreg.cpp |  4 ----
 indra/newview/llviewerparcelmgr.cpp  |  1 -
 indra/newview/llviewerwindow.cpp     |  1 -
 5 files changed, 41 deletions(-)

diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 41b08942eb5..3389ecbf4d0 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -272,7 +272,6 @@ set(viewer_SOURCE_FILES
     llmaniptranslate.cpp
     llmediactrl.cpp
     llmediadataclient.cpp
-    llmediaremotectrl.cpp
     llmemoryview.cpp
     llmenucommands.cpp
     llmetricperformancetester.cpp
@@ -510,7 +509,6 @@ set(viewer_SOURCE_FILES
     llvoground.cpp
     llvoicechannel.cpp
     llvoiceclient.cpp
-    llvoiceremotectrl.cpp
     llvoicevisualizer.cpp
     llvoinventorylistener.cpp
     llvopartgroup.cpp
@@ -776,7 +774,6 @@ set(viewer_HEADER_FILES
     llmaniptranslate.h
     llmediactrl.h
     llmediadataclient.h
-    llmediaremotectrl.h
     llmemoryview.h
     llmenucommands.h
     llmetricperformancetester.h
@@ -1010,7 +1007,6 @@ set(viewer_HEADER_FILES
     llvoground.h
     llvoicechannel.h
     llvoiceclient.h
-    llvoiceremotectrl.h
     llvoicevisualizer.h
     llvoinventorylistener.h
     llvopartgroup.h
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index 57434bd1e4c..64eabe65cfe 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -63,7 +63,6 @@
 #include "llviewerjoystick.h"
 #include "llviewerparcelmgr.h"
 #include "llparcel.h"
-#include "lloverlaybar.h"
 #include "llkeyboard.h"
 #include "llerrorcontrol.h"
 #include "llappviewer.h"
@@ -257,35 +256,6 @@ static bool handleJoystickChanged(const LLSD& newvalue)
 	return true;
 }
 
-static bool handleAudioStreamMusicChanged(const LLSD& newvalue)
-{
-	if (gAudiop)
-	{
-		if ( newvalue.asBoolean() )
-		{
-			if (LLViewerParcelMgr::getInstance()->getAgentParcel()
-				&& !LLViewerParcelMgr::getInstance()->getAgentParcel()->getMusicURL().empty())
-			{
-				// if music isn't playing, start it
-				if (gOverlayBar && !gOverlayBar->musicPlaying())
-				{
-					LLOverlayBar::toggleMusicPlay(NULL);
-				}
-			}
-		}
-		else
-		{
-			// if music is playing, stop it.
-			if (gOverlayBar && gOverlayBar->musicPlaying())
-				{
-					LLOverlayBar::toggleMusicPlay(NULL);
-				}
-
-		}
-	}
-	return true;
-}
-
 static bool handleUseOcclusionChanged(const LLSD& newvalue)
 {
 	LLPipeline::sUseOcclusion = (newvalue.asBoolean() && gGLManager.mHasOcclusionQuery 
@@ -592,7 +562,6 @@ void settings_setup_listeners()
 	gSavedSettings.getControl("AudioLevelVoice")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2));
 	gSavedSettings.getControl("AudioLevelDoppler")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2));
 	gSavedSettings.getControl("AudioLevelRolloff")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2));
-	gSavedSettings.getControl("AudioStreamingMusic")->getSignal()->connect(boost::bind(&handleAudioStreamMusicChanged, _2));
 	gSavedSettings.getControl("MuteAudio")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2));
 	gSavedSettings.getControl("MuteMusic")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2));
 	gSavedSettings.getControl("MuteMedia")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2));
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index 3aca11963a2..f93d78bf338 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -115,7 +115,6 @@
 #include "llinspectobject.h"
 #include "llinspectremoteobject.h"
 #include "llinspecttoast.h"
-#include "llmediaremotectrl.h"
 #include "llmoveview.h"
 #include "llnearbychat.h"
 #include "llpanelblockedlist.h"
@@ -263,8 +262,5 @@ void LLViewerFloaterReg::registerFloaters()
 
 	// *NOTE: Please keep these alphabetized for easier merges
 	
-	// debug use only
-	LLFloaterReg::add("media_remote_ctrl", "floater_media_remote.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMediaRemoteCtrl>);
-
 	LLFloaterReg::registerControlVariables(); // Make sure visibility and rect controls get preserved when saving
 }
diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp
index 10a95443f1f..e2333566320 100644
--- a/indra/newview/llviewerparcelmgr.cpp
+++ b/indra/newview/llviewerparcelmgr.cpp
@@ -69,7 +69,6 @@
 #include "llviewerparceloverlay.h"
 #include "llviewerregion.h"
 #include "llworld.h"
-#include "lloverlaybar.h"
 #include "roles_constants.h"
 #include "llweb.h"
 
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index c43f58c8a29..03cc6e1262e 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -128,7 +128,6 @@
 #include "llmorphview.h"
 #include "llmoveview.h"
 #include "llnavigationbar.h"
-#include "lloverlaybar.h"
 #include "llpreviewtexture.h"
 #include "llprogressview.h"
 #include "llresmgr.h"
-- 
GitLab


From 53173419000ba1d14aa99c59353e91f700915e07 Mon Sep 17 00:00:00 2001
From: Lynx Linden <lynx@lindenlab.com>
Date: Fri, 29 Jan 2010 13:14:14 +0000
Subject: [PATCH 287/521] EXT-4679: Removed reference to no-longer-supported
 abuse URL.

---
 indra/newview/skins/default/xui/en/notifications.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 41f4621d665..fc535205f1f 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -3851,7 +3851,7 @@ Are you sure you want to quit?
    type="alertmodal">
 Use this tool to report violations of the [http://secondlife.com/corporate/tos.php Terms of Service] and [http://secondlife.com/corporate/cs.php Community Standards].
 
-All reported abuses are investigated and resolved. You can view the resolution by reading the [http://secondlife.com/support/incidentreport.php Incident Report].
+All reported abuses are investigated and resolved.
    <unique/>
   </notification>
 
-- 
GitLab


From 10cbb9ea27e8e47a235efece1b30365b7f00e038 Mon Sep 17 00:00:00 2001
From: Andrew Dyukov <adyukov@productengine.com>
Date: Fri, 29 Jan 2010 15:16:11 +0200
Subject: [PATCH 288/521] Fixed low bug EXT-4749 (There is misleading
 notification after voice has been turned off from preferences)

- Added skipping "Voice not available at your current location" when agent voice is disabled

--HG--
branch : product-engine
---
 indra/newview/llvoicechannel.cpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp
index 589999c0264..9d49fb69d61 100644
--- a/indra/newview/llvoicechannel.cpp
+++ b/indra/newview/llvoicechannel.cpp
@@ -698,7 +698,11 @@ void LLVoiceChannelProximal::handleStatusChange(EStatusType status)
 		// do not notify user when leaving proximal channel
 		return;
 	case STATUS_VOICE_DISABLED:
-		LLCallInfoDialog::show("unavailable", mNotifyArgs);
+		//skip showing "Voice not available at your current location" when agent voice is disabled (EXT-4749)
+		if(LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking())
+		{
+			LLCallInfoDialog::show("unavailable", mNotifyArgs);
+		}
 		return;
 	default:
 		break;
-- 
GitLab


From ec5dbb60e71302a77f68cc604e7dfd52bcaa926a Mon Sep 17 00:00:00 2001
From: Lynx Linden <lynx@lindenlab.com>
Date: Fri, 29 Jan 2010 13:36:39 +0000
Subject: [PATCH 289/521] EXT-4763: Revert my previous fix.

We don't want to universally disabled URL highlighting for all toast
alerts, e.g., the report abuse notification has URLs that we want
users to be able to click on. I have a better plan...
---
 indra/newview/lltoastalertpanel.cpp | 1 -
 1 file changed, 1 deletion(-)

diff --git a/indra/newview/lltoastalertpanel.cpp b/indra/newview/lltoastalertpanel.cpp
index da31bb3e73c..c3ccb9380b0 100644
--- a/indra/newview/lltoastalertpanel.cpp
+++ b/indra/newview/lltoastalertpanel.cpp
@@ -170,7 +170,6 @@ LLToastAlertPanel::LLToastAlertPanel( LLNotificationPtr notification, bool modal
 	params.tab_stop(false);
 	params.wrap(true);
 	params.follows.flags(FOLLOWS_LEFT | FOLLOWS_TOP);
-	params.allow_html(false);
 
 	LLTextBox * msg_box = LLUICtrlFactory::create<LLTextBox> (params);
 	// Compute max allowable height for the dialog text, so we can allocate
-- 
GitLab


From f8bde94b9f9c83202f32268b57539fbe5c7cf271 Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Fri, 29 Jan 2010 15:41:41 +0200
Subject: [PATCH 290/521] completely got rid of Communicate floater and stuff

--HG--
branch : product-engine
---
 indra/newview/CMakeLists.txt         |  4 ----
 indra/newview/llgroupactions.cpp     |  3 ++-
 indra/newview/llimview.cpp           | 23 ++---------------------
 indra/newview/llimview.h             | 13 ++-----------
 indra/newview/llinventorypanel.cpp   |  4 +++-
 indra/newview/llviewerfloaterreg.cpp |  3 +--
 indra/newview/llviewermenu.cpp       |  1 -
 indra/newview/llviewerwindow.cpp     |  5 -----
 8 files changed, 10 insertions(+), 46 deletions(-)

diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 3389ecbf4d0..1c32c690a83 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -156,13 +156,11 @@ set(viewer_SOURCE_FILES
     llfloaterbuycurrency.cpp
     llfloaterbuyland.cpp
     llfloatercamera.cpp
-    llfloaterchatterbox.cpp
     llfloatercolorpicker.cpp
     llfloatercustomize.cpp
     llfloaterdaycycle.cpp
     llfloaterenvsettings.cpp
     llfloaterfonttest.cpp
-    llfloaterfriends.cpp
     llfloatergesture.cpp
     llfloatergodtools.cpp
     llfloatergroupinvite.cpp
@@ -658,13 +656,11 @@ set(viewer_HEADER_FILES
     llfloaterbuycurrency.h
     llfloaterbuyland.h
     llfloatercamera.h
-    llfloaterchatterbox.h
     llfloatercolorpicker.h
     llfloatercustomize.h
     llfloaterdaycycle.h
     llfloaterenvsettings.h
     llfloaterfonttest.h
-    llfloaterfriends.h
     llfloatergesture.h
     llfloatergodtools.h
     llfloatergroupinvite.h
diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp
index d6e2bb0445f..3653371d766 100644
--- a/indra/newview/llgroupactions.cpp
+++ b/indra/newview/llgroupactions.cpp
@@ -75,11 +75,12 @@ class LLGroupHandler : public LLCommandHandler
 			return false;
 		}
 
+		//*TODO by what to replace showing groups floater?
 		if (tokens[0].asString() == "list")
 		{
 			if (tokens[1].asString() == "show")
 			{
-				LLFloaterReg::showInstance("contacts", "groups");
+				//LLFloaterReg::showInstance("contacts", "groups");
 				return true;
 			}
             return false;
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 213862df4ba..675f73d43e5 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -52,7 +52,6 @@
 #include "llbottomtray.h"
 #include "llcallingcard.h"
 #include "llchat.h"
-#include "llfloaterchatterbox.h"
 #include "llimfloater.h"
 #include "llgroupiconctrl.h"
 #include "llmd5.h"
@@ -64,6 +63,7 @@
 #include "llnotificationsutil.h"
 #include "llnearbychat.h"
 #include "llspeakers.h" //for LLIMSpeakerMgr
+#include "lltextbox.h"
 #include "lltextutil.h"
 #include "llviewercontrol.h"
 #include "llviewerparcelmgr.h"
@@ -2075,8 +2075,7 @@ bool inviteUserResponse(const LLSD& notification, const LLSD& response)
 // Member Functions
 //
 
-LLIMMgr::LLIMMgr() :
-	mIMReceived(FALSE)
+LLIMMgr::LLIMMgr()
 {
 	mPendingInvitations = LLSD::emptyMap();
 	mPendingAgentListUpdates = LLSD::emptyMap();
@@ -2183,14 +2182,6 @@ void LLIMMgr::addSystemMessage(const LLUUID& session_id, const std::string& mess
 	}
 }
 
-void LLIMMgr::notifyNewIM()
-{
-	if(!LLFloaterReg::instanceVisible("communicate"))
-	{
-		mIMReceived = TRUE;
-	}
-}
-
 S32 LLIMMgr::getNumberOfUnreadIM()
 {
 	std::map<LLUUID, LLIMModel::LLIMSession*>::iterator it;
@@ -2217,16 +2208,6 @@ S32 LLIMMgr::getNumberOfUnreadParticipantMessages()
 	return num;
 }
 
-void LLIMMgr::clearNewIMNotification()
-{
-	mIMReceived = FALSE;
-}
-
-BOOL LLIMMgr::getIMReceived() const
-{
-	return mIMReceived;
-}
-
 void LLIMMgr::autoStartCallOnStartup(const LLUUID& session_id)
 {
 	LLIMModel::LLIMSession *session = LLIMModel::getInstance()->findIMSession(session_id);
diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h
index 17406025f21..b573490fa3c 100644
--- a/indra/newview/llimview.h
+++ b/indra/newview/llimview.h
@@ -39,8 +39,8 @@
 #include "lllogchat.h"
 #include "llvoicechannel.h"
 
-class LLFloaterChatterBox;
-class LLUUID;
+
+
 class LLFriendObserver;
 class LLCallDialogManager;	
 class LLIMSpeakerMgr;
@@ -360,15 +360,9 @@ class LLIMMgr : public LLSingleton<LLIMMgr>
 	void processIMTypingStart(const LLIMInfo* im_info);
 	void processIMTypingStop(const LLIMInfo* im_info);
 
-	void notifyNewIM();
-	void clearNewIMNotification();
-
 	// automatically start a call once the session has initialized
 	void autoStartCallOnStartup(const LLUUID& session_id);
 
-	// IM received that you haven't seen yet
-	BOOL getIMReceived() const;
-
 	// Calc number of all unread IMs
 	S32 getNumberOfUnreadIM();
 
@@ -446,9 +440,6 @@ class LLIMMgr : public LLSingleton<LLIMMgr>
 	typedef std::list <LLIMSessionObserver *> session_observers_list_t;
 	session_observers_list_t mSessionObservers;
 
-	// An IM has been received that you haven't seen yet.
-	BOOL mIMReceived;
-
 	LLSD mPendingInvitations;
 	LLSD mPendingAgentListUpdates;
 };
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 7e71ac90b45..12a2c370d2f 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -759,7 +759,9 @@ bool LLInventoryPanel::beginIMSession()
 				S32 count = item_array.count();
 				if(count > 0)
 				{
-					LLFloaterReg::showInstance("communicate");
+					//*TODO by what to replace that?
+					//LLFloaterReg::showInstance("communicate");
+
 					// create the session
 					LLAvatarTracker& at = LLAvatarTracker::instance();
 					LLUUID id;
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index f93d78bf338..658d1c9ddd4 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -54,7 +54,6 @@
 #include "llfloaterbulkpermission.h"
 #include "llfloaterbump.h"
 #include "llfloatercamera.h"
-#include "llfloaterchatterbox.h"
 #include "llfloaterdaycycle.h"
 #include "llfloatersearch.h"
 #include "llfloaterenvsettings.h"
@@ -153,7 +152,7 @@ void LLViewerFloaterReg::registerFloaters()
 	LLFloaterReg::add("camera", "floater_camera.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCamera>);
 	//LLFloaterReg::add("chat", "floater_chat_history.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterChat>);
 	LLFloaterReg::add("nearby_chat", "floater_nearby_chat.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLNearbyChat>);
-	LLFloaterReg::add("communicate", "floater_chatterbox.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterChatterBox>);
+
 	LLFloaterReg::add("compile_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCompileQueue>);
 
 	LLFloaterReg::add("env_day_cycle", "floater_day_cycle_options.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterDayCycle>);
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 12e2fa51569..f7f30a51365 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -53,7 +53,6 @@
 #include "llfloaterbuycontents.h"
 #include "llfloaterbuycurrency.h"
 #include "llfloatercustomize.h"
-#include "llfloaterchatterbox.h"
 #include "llfloatergodtools.h"
 #include "llfloaterinventory.h"
 #include "llfloaterland.h"
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 03cc6e1262e..c70b8307822 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -101,7 +101,6 @@
 #include "llfloaterbuildoptions.h"
 #include "llfloaterbuyland.h"
 #include "llfloatercamera.h"
-#include "llfloaterchatterbox.h"
 #include "llfloatercustomize.h"
 #include "llfloaterland.h"
 #include "llfloaterinspect.h"
@@ -1461,10 +1460,6 @@ void LLViewerWindow::initWorldUI()
 	bottom_tray_container->addChild(bottom_tray);
 	bottom_tray_container->setVisible(TRUE);
 
-	// Pre initialize instance communicate instance;
-	//  currently needs to happen before initializing chat or IM
-	LLFloaterReg::getInstance("communicate");
-
 	LLRect morph_view_rect = full_window;
 	morph_view_rect.stretch( -STATUS_BAR_HEIGHT );
 	morph_view_rect.mTop = full_window.mTop - 32;
-- 
GitLab


From efeaba0acd9b40d50a32e4c728489231fbaac7e8 Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Fri, 29 Jan 2010 15:48:50 +0200
Subject: [PATCH 291/521] Fixed normal bug EXT-4762 ( Crash on exit from viewer
 in LLPanelPeopleMenus::ContextMenu) - reason: attempt to delete instance of
 the LLContextMenu from the LLPanelPeopleMenus::ContextMenu after it was
 deleted by menu holder on viewer exit. - fix: check if menu is not dead via
 stored LLHandle of the menu before deleting.

--HG--
branch : product-engine
---
 indra/newview/llpanelpeoplemenus.cpp | 10 +++++++++-
 indra/newview/llpanelpeoplemenus.h   |  1 +
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llpanelpeoplemenus.cpp b/indra/newview/llpanelpeoplemenus.cpp
index 501dac5dff4..470cfca8fec 100644
--- a/indra/newview/llpanelpeoplemenus.cpp
+++ b/indra/newview/llpanelpeoplemenus.cpp
@@ -61,7 +61,14 @@ ContextMenu::~ContextMenu()
 	// It can have registered Enable callbacks which are called from the LLMenuHolderGL::draw()
 	// via selected item (menu_item_call) by calling LLMenuItemCallGL::buildDrawLabel.
 	// we can have a crash via using callbacks of deleted instance of ContextMenu. EXT-4725
-	if (mMenu) 	mMenu->die();
+
+	// menu holder deletes its menus on viewer exit, so we have no way to determine if instance 
+	// of mMenu has already been deleted except of using LLHandle. EXT-4762.
+	if (!mMenuHandle.isDead())
+	{
+		mMenu->die();
+		mMenu = NULL;
+	}
 }
 
 void ContextMenu::show(LLView* spawning_view, const std::vector<LLUUID>& uuids, S32 x, S32 y)
@@ -86,6 +93,7 @@ void ContextMenu::show(LLView* spawning_view, const std::vector<LLUUID>& uuids,
 	std::copy(uuids.begin(), uuids.end(), mUUIDs.begin());
 
 	mMenu = createMenu();
+	mMenuHandle = mMenu->getHandle();
 	mMenu->show(x, y);
 	LLMenuGL::showPopup(spawning_view, mMenu, x, y);
 }
diff --git a/indra/newview/llpanelpeoplemenus.h b/indra/newview/llpanelpeoplemenus.h
index 7251f6dbbdb..913638d8c86 100644
--- a/indra/newview/llpanelpeoplemenus.h
+++ b/indra/newview/llpanelpeoplemenus.h
@@ -62,6 +62,7 @@ class ContextMenu : public LLAvatarListItem::ContextMenu
 
 	std::vector<LLUUID>	mUUIDs;
 	LLContextMenu*		mMenu;
+	LLHandle<LLView>	mMenuHandle;
 };
 
 /**
-- 
GitLab


From d66d9afae1c7cd4484b72532c0103ce7a4db9e77 Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Fri, 29 Jan 2010 16:09:30 +0200
Subject: [PATCH 292/521] Fixed normal bug EXT-3882 ([BSI] block list contains
 the word block instead of (object)) - original issue has been fixed by Ramzi
 Linden in changeset eeabc4a70a6f at 2010-01-19  (Renaming multiple xml
 "MuteObject" nodes with unique names for block list and context menu). -
 changed panel title from "Blocked List" to "Block List"

--HG--
branch : product-engine
---
 .../newview/skins/default/xui/en/panel_block_list_sidetray.xml  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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 39170b90ca3..072ea882e61 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
@@ -29,7 +29,7 @@
      text_color="white"
      top="5"
      width="250">
-        Blocked List
+        Block List
      </text>
     <scroll_list
      follows="all"
-- 
GitLab


From 4d6c9e3e1754d21ea5291207085113e99456f571 Mon Sep 17 00:00:00 2001
From: Lynx Linden <lynx@lindenlab.com>
Date: Fri, 29 Jan 2010 14:30:26 +0000
Subject: [PATCH 293/521] EXT-4678: Support <nolink>...</nolink> to turn off
 URL hyperlinking.

We are running into a bunch of places where we don't want to allow
hyperlinking of URLs like secondlife.com in text boxes. I've therefore
added a new type of URL regex that disables URL hyperlinking. Simply
enclose the URL in a <nolink> tag, e.g.:

  <nolink>secondlife.com</nolink>
---
 indra/llui/lltextbase.cpp            |  7 +++----
 indra/llui/llurlentry.cpp            | 24 +++++++++++++++++++---
 indra/llui/llurlentry.h              | 14 +++++++++++++
 indra/llui/llurlmatch.cpp            |  8 ++++++--
 indra/llui/llurlmatch.h              |  6 +++++-
 indra/llui/llurlregistry.cpp         | 14 +++++++++----
 indra/llui/tests/llurlentry_test.cpp |  8 ++++++++
 indra/llui/tests/llurlmatch_test.cpp | 30 ++++++++++++++--------------
 8 files changed, 82 insertions(+), 29 deletions(-)

diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 8abbc833e5d..2ee20238758 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -1606,11 +1606,10 @@ void LLTextBase::appendText(const std::string &new_text, bool prepend_newline, c
 				}
 			}
 
-			// output the styled Url (unless we've been asked to suppress it)
-			if (isBlackListUrl(match.getUrl()))
+			// output the styled Url (unless we've been asked to suppress hyperlinking)
+			if (match.isLinkDisabled())
 			{
-				std::string orig_url = text.substr(start, end-start);
-				appendAndHighlightText(orig_url, prepend_newline, part, style_params);
+				appendAndHighlightText(match.getLabel(), prepend_newline, part, style_params);
 			}
 			else
 			{
diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp
index 4927e57a52e..58148ad2aa0 100644
--- a/indra/llui/llurlentry.cpp
+++ b/indra/llui/llurlentry.cpp
@@ -39,8 +39,9 @@
 #include "lltrans.h"
 #include "lluicolortable.h"
 
-LLUrlEntryBase::LLUrlEntryBase()
-: mColor(LLUIColorTable::instance().getColor("HTMLLinkColor"))
+LLUrlEntryBase::LLUrlEntryBase() :
+	mColor(LLUIColorTable::instance().getColor("HTMLLinkColor")),
+	mDisabledLink(false)
 {
 }
 
@@ -204,7 +205,7 @@ LLUrlEntryHTTPNoProtocol::LLUrlEntryHTTPNoProtocol()
 	mPattern = boost::regex("("
 				"\\bwww\\.\\S+\\.\\S+" // i.e. www.FOO.BAR
 				"|" // or
-				"(?<!@)\\b[^[:space:]:@/]+\\.(?:com|net|edu|org)([/:]\\S*)?\\b" // i.e. FOO.net
+				"(?<!@)\\b[^[:space:]:@/>]+\\.(?:com|net|edu|org)([/:][^[:space:]<]*)?\\b" // i.e. FOO.net
 				")",
 				boost::regex::perl|boost::regex::icase);
 	mMenuName = "menu_url_http.xml";
@@ -641,3 +642,20 @@ std::string LLUrlEntryWorldMap::getLocation(const std::string &url) const
 	// return the part of the Url after secondlife:///app/worldmap/ part
 	return ::getStringAfterToken(url, "app/worldmap/");
 }
+
+//
+// LLUrlEntryNoLink lets us turn of URL detection with <nolink>...</nolink> tags
+//
+LLUrlEntryNoLink::LLUrlEntryNoLink()
+{
+	mPattern = boost::regex("<nolink>[^[:space:]<]+</nolink>",
+							boost::regex::perl|boost::regex::icase);
+	mDisabledLink = true;
+}
+
+std::string LLUrlEntryNoLink::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
+{
+	// return the text between the <nolink> and </nolink> tags
+	return url.substr(8, url.size()-8-9);
+}
+
diff --git a/indra/llui/llurlentry.h b/indra/llui/llurlentry.h
index 4adffde99c3..94455ac247d 100644
--- a/indra/llui/llurlentry.h
+++ b/indra/llui/llurlentry.h
@@ -91,6 +91,9 @@ class LLUrlEntryBase
 	/// Return the name of a SL location described by this Url, if any
 	virtual std::string getLocation(const std::string &url) const { return ""; }
 
+	/// is this a match for a URL that should not be hyperlinked?
+	bool isLinkDisabled() const { return mDisabledLink; }
+
 protected:
 	std::string getIDStringFromUrl(const std::string &url) const;
 	std::string escapeUrl(const std::string &url) const;
@@ -111,6 +114,7 @@ class LLUrlEntryBase
 	std::string                                    	mTooltip;
 	LLUIColor										mColor;
 	std::multimap<std::string, LLUrlEntryObserver>	mObservers;
+	bool                                            mDisabledLink;
 };
 
 ///
@@ -267,4 +271,14 @@ class LLUrlEntryWorldMap : public LLUrlEntryBase
 	/*virtual*/ std::string getLocation(const std::string &url) const;
 };
 
+///
+/// LLUrlEntryNoLink lets us turn of URL detection with <nolink>...</nolink> tags
+///
+class LLUrlEntryNoLink : public LLUrlEntryBase
+{
+public:
+	LLUrlEntryNoLink();
+	/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb);
+};
+
 #endif
diff --git a/indra/llui/llurlmatch.cpp b/indra/llui/llurlmatch.cpp
index 3b47145a225..72a199c220e 100644
--- a/indra/llui/llurlmatch.cpp
+++ b/indra/llui/llurlmatch.cpp
@@ -41,14 +41,17 @@ LLUrlMatch::LLUrlMatch() :
 	mLabel(""),
 	mTooltip(""),
 	mIcon(""),
-	mMenuName("")
+	mMenuName(""),
+	mLocation(""),
+	mDisabledLink(false)
 {
 }
 
 void LLUrlMatch::setValues(U32 start, U32 end, const std::string &url,
 						   const std::string &label, const std::string &tooltip,
 						   const std::string &icon, const LLUIColor& color,
-						   const std::string &menu, const std::string &location)
+						   const std::string &menu, const std::string &location,
+						   bool disabled_link)
 {
 	mStart = start;
 	mEnd = end;
@@ -59,4 +62,5 @@ void LLUrlMatch::setValues(U32 start, U32 end, const std::string &url,
 	mColor = color;
 	mMenuName = menu;
 	mLocation = location;
+	mDisabledLink = disabled_link;
 }
diff --git a/indra/llui/llurlmatch.h b/indra/llui/llurlmatch.h
index 7f5767923af..e86762548b8 100644
--- a/indra/llui/llurlmatch.h
+++ b/indra/llui/llurlmatch.h
@@ -83,11 +83,14 @@ class LLUrlMatch
 	/// return the SL location that this Url describes, or "" if none.
 	std::string getLocation() const { return mLocation; }
 
+	/// is this a match for a URL that should not be hyperlinked?
+	bool isLinkDisabled() const { return mDisabledLink; }
+
 	/// Change the contents of this match object (used by LLUrlRegistry)
 	void setValues(U32 start, U32 end, const std::string &url, const std::string &label,
 	               const std::string &tooltip, const std::string &icon,
 				   const LLUIColor& color, const std::string &menu, 
-				   const std::string &location);
+				   const std::string &location, bool disabled_link);
 
 private:
 	U32         mStart;
@@ -99,6 +102,7 @@ class LLUrlMatch
 	std::string mMenuName;
 	std::string mLocation;
 	LLUIColor	mColor;
+	bool        mDisabledLink;
 };
 
 #endif
diff --git a/indra/llui/llurlregistry.cpp b/indra/llui/llurlregistry.cpp
index ad5c0911f8c..55eb8950e9c 100644
--- a/indra/llui/llurlregistry.cpp
+++ b/indra/llui/llurlregistry.cpp
@@ -44,6 +44,7 @@ void LLUrlRegistryNullCallback(const std::string &url, const std::string &label)
 LLUrlRegistry::LLUrlRegistry()
 {
 	// Urls are matched in the order that they were registered
+	registerUrl(new LLUrlEntryNoLink());
 	registerUrl(new LLUrlEntrySLURL());
 	registerUrl(new LLUrlEntryHTTP());
 	registerUrl(new LLUrlEntryHTTPLabel());
@@ -176,7 +177,8 @@ bool LLUrlRegistry::findUrl(const std::string &text, LLUrlMatch &match, const LL
 						match_entry->getIcon(),
 						match_entry->getColor(),
 						match_entry->getMenuName(),
-						match_entry->getLocation(url));
+						match_entry->getLocation(url),
+						match_entry->isLinkDisabled());
 		return true;
 	}
 
@@ -204,9 +206,13 @@ bool LLUrlRegistry::findUrl(const LLWString &text, LLUrlMatch &match, const LLUr
 		S32 end = start + wurl.size() - 1;
 
 		match.setValues(start, end, match.getUrl(), 
-			match.getLabel(), match.getTooltip(),
-			match.getIcon(), match.getColor(),
-			match.getMenuName(), match.getLocation());
+						match.getLabel(),
+						match.getTooltip(),
+						match.getIcon(),
+						match.getColor(),
+						match.getMenuName(),
+						match.getLocation(),
+						match.isLinkDisabled());
 		return true;
 	}
 	return false;
diff --git a/indra/llui/tests/llurlentry_test.cpp b/indra/llui/tests/llurlentry_test.cpp
index 80be8fcbf72..6fec1d3e10d 100644
--- a/indra/llui/tests/llurlentry_test.cpp
+++ b/indra/llui/tests/llurlentry_test.cpp
@@ -610,5 +610,13 @@ namespace tut
 		testRegex("invalid .net URL", r,
 				  "foo.netty",
 				  "");
+
+		testRegex("XML tags around URL [1]", r,
+				  "<foo>secondlife.com</foo>",
+				  "secondlife.com");
+
+		testRegex("XML tags around URL [2]", r,
+				  "<foo>secondlife.com/status?bar=1</foo>",
+				  "secondlife.com/status?bar=1");
 	}
 }
diff --git a/indra/llui/tests/llurlmatch_test.cpp b/indra/llui/tests/llurlmatch_test.cpp
index e8cf1353464..f9dfee931ba 100644
--- a/indra/llui/tests/llurlmatch_test.cpp
+++ b/indra/llui/tests/llurlmatch_test.cpp
@@ -53,7 +53,7 @@ namespace tut
 		LLUrlMatch match;
 		ensure("empty()", match.empty());
 
-		match.setValues(0, 1, "http://secondlife.com", "Second Life", "", "", LLUIColor(), "", "");
+		match.setValues(0, 1, "http://secondlife.com", "Second Life", "", "", LLUIColor(), "", "", false);
 		ensure("! empty()", ! match.empty());
 	}
 
@@ -66,7 +66,7 @@ namespace tut
 		LLUrlMatch match;
 		ensure_equals("getStart() == 0", match.getStart(), 0);
 
-		match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "");
+		match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "", false);
 		ensure_equals("getStart() == 10", match.getStart(), 10);
 	}
 
@@ -79,7 +79,7 @@ namespace tut
 		LLUrlMatch match;
 		ensure_equals("getEnd() == 0", match.getEnd(), 0);
 
-		match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "");
+		match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "", false);
 		ensure_equals("getEnd() == 20", match.getEnd(), 20);
 	}
 
@@ -92,10 +92,10 @@ namespace tut
 		LLUrlMatch match;
 		ensure_equals("getUrl() == ''", match.getUrl(), "");
 
-		match.setValues(10, 20, "http://slurl.com/", "", "", "", LLUIColor(), "", "");
+		match.setValues(10, 20, "http://slurl.com/", "", "", "", LLUIColor(), "", "", false);
 		ensure_equals("getUrl() == 'http://slurl.com/'", match.getUrl(), "http://slurl.com/");
 
-		match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "");
+		match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "", false);
 		ensure_equals("getUrl() == '' (2)", match.getUrl(), "");
 	}
 
@@ -108,10 +108,10 @@ namespace tut
 		LLUrlMatch match;
 		ensure_equals("getLabel() == ''", match.getLabel(), "");
 
-		match.setValues(10, 20, "", "Label", "", "", LLUIColor(), "", "");
+		match.setValues(10, 20, "", "Label", "", "", LLUIColor(), "", "", false);
 		ensure_equals("getLabel() == 'Label'", match.getLabel(), "Label");
 
-		match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "");
+		match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "", false);
 		ensure_equals("getLabel() == '' (2)", match.getLabel(), "");
 	}
 
@@ -124,10 +124,10 @@ namespace tut
 		LLUrlMatch match;
 		ensure_equals("getTooltip() == ''", match.getTooltip(), "");
 
-		match.setValues(10, 20, "", "", "Info", "", LLUIColor(), "", "");
+		match.setValues(10, 20, "", "", "Info", "", LLUIColor(), "", "", false);
 		ensure_equals("getTooltip() == 'Info'", match.getTooltip(), "Info");
 
-		match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "");
+		match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "", false);
 		ensure_equals("getTooltip() == '' (2)", match.getTooltip(), "");
 	}
 
@@ -140,10 +140,10 @@ namespace tut
 		LLUrlMatch match;
 		ensure_equals("getIcon() == ''", match.getIcon(), "");
 
-		match.setValues(10, 20, "", "", "", "Icon", LLUIColor(), "", "");
+		match.setValues(10, 20, "", "", "", "Icon", LLUIColor(), "", "", false);
 		ensure_equals("getIcon() == 'Icon'", match.getIcon(), "Icon");
 
-		match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "");
+		match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "", false);
 		ensure_equals("getIcon() == '' (2)", match.getIcon(), "");
 	}
 
@@ -156,10 +156,10 @@ namespace tut
 		LLUrlMatch match;
 		ensure("getMenuName() empty", match.getMenuName().empty());
 
-		match.setValues(10, 20, "", "", "", "Icon", LLUIColor(), "xui_file.xml", "");
+		match.setValues(10, 20, "", "", "", "Icon", LLUIColor(), "xui_file.xml", "", false);
 		ensure_equals("getMenuName() == \"xui_file.xml\"", match.getMenuName(), "xui_file.xml");
 
-		match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "");
+		match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "", false);
 		ensure("getMenuName() empty (2)", match.getMenuName().empty());
 	}
 
@@ -172,10 +172,10 @@ namespace tut
 		LLUrlMatch match;
 		ensure("getLocation() empty", match.getLocation().empty());
 
-		match.setValues(10, 20, "", "", "", "Icon", LLUIColor(), "xui_file.xml", "Paris");
+		match.setValues(10, 20, "", "", "", "Icon", LLUIColor(), "xui_file.xml", "Paris", false);
 		ensure_equals("getLocation() == \"Paris\"", match.getLocation(), "Paris");
 
-		match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "");
+		match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "", false);
 		ensure("getLocation() empty (2)", match.getLocation().empty());
 	}
 }
-- 
GitLab


From 2ec69d6d71e18c60a81d55f79e291e366d05eacd Mon Sep 17 00:00:00 2001
From: Lynx Linden <lynx@lindenlab.com>
Date: Fri, 29 Jan 2010 14:56:39 +0000
Subject: [PATCH 294/521] EXT-4678: Revert URL black list support from
 LLTextBase.

The new <nolink>URL</nolink> provides a more flexible solution that
can be specified in XUI (as we now do to disabled hyperlinking for the
sim hostname in the About floater).
---
 indra/llui/lltextbase.cpp                     | 19 -------------------
 indra/llui/lltextbase.h                       |  7 -------
 indra/newview/llfloaterabout.cpp              |  6 ------
 .../skins/default/xui/en/floater_about.xml    |  2 +-
 4 files changed, 1 insertion(+), 33 deletions(-)

diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 2ee20238758..978bd317e20 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -1512,25 +1512,6 @@ void LLTextBase::setText(const LLStringExplicit &utf8str, const LLStyle::Params&
 	onValueChange(0, getLength());
 }
 
-void LLTextBase::addBlackListUrl(const std::string &url)
-{
-	mBlackListUrls.push_back(url);
-}
-
-bool LLTextBase::isBlackListUrl(const std::string &url) const
-{
-	std::vector<std::string>::const_iterator it;
-	for (it = mBlackListUrls.begin(); it != mBlackListUrls.end(); ++it)
-	{
-		const std::string &blacklist_url = *it;
-		if (url.find(blacklist_url) != std::string::npos)
-		{
-			return true;
-		}
-	}
-	return false;
-}
-
 //virtual
 std::string LLTextBase::getText() const
 {
diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h
index e1c6cc36ab6..dc3671eab12 100644
--- a/indra/llui/lltextbase.h
+++ b/indra/llui/lltextbase.h
@@ -187,9 +187,6 @@ class LLTextBase
 	const LLFontGL*			getDefaultFont() const					{ return mDefaultFont; }
 	LLStyle::Params			getDefaultStyle();
 
-	// tell the text object to suppress auto highlighting of a specific URL
-	void                    addBlackListUrl(const std::string &url);
-
 public:
 	// Fired when a URL link is clicked
 	commit_signal_t mURLClickSignal;
@@ -312,7 +309,6 @@ class LLTextBase
 	void							updateRects();
 	void							needsScroll() { mScrollNeeded = TRUE; }
 	void							replaceUrlLabel(const std::string &url, const std::string &label);
-	bool                            isBlackListUrl(const std::string &url) const;
 
 protected:
 	// text segmentation and flow
@@ -364,9 +360,6 @@ class LLTextBase
 	LLView*						mDocumentView;
 	class LLScrollContainer*	mScroller;
 
-	// list of URLs to suppress from automatic hyperlinking
-	std::vector<std::string>    mBlackListUrls;
-
 	// transient state
 	bool						mReflowNeeded;		// need to reflow text because of change to text contents or display region
 	bool						mScrollNeeded;		// need to change scroll region because of change to cursor position
diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp
index 04f4ddf9960..ef69f39ad2d 100644
--- a/indra/newview/llfloaterabout.cpp
+++ b/indra/newview/llfloaterabout.cpp
@@ -187,12 +187,6 @@ BOOL LLFloaterAbout::postBuild()
 		support << '\n' << getString("AboutTraffic", args);
 	}
 
-	// don't make the sim hostname be a hyperlink
-	if (info.has("HOSTNAME"))
-	{
-		support_widget->addBlackListUrl(info["HOSTNAME"].asString());
-	}
-	
 	support_widget->appendText(support.str(), 
 								FALSE, 
 								LLStyle::Params()
diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml
index b6443c4c21c..bfdd48e2f42 100644
--- a/indra/newview/skins/default/xui/en/floater_about.xml
+++ b/indra/newview/skins/default/xui/en/floater_about.xml
@@ -21,7 +21,7 @@ Built with [COMPILER] version [COMPILER_VERSION]
 </floater.string>
   <floater.string
      name="AboutPosition">
-You are at [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] in [REGION] located at [HOSTNAME] ([HOSTIP])
+You are at [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] in [REGION] located at &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
 [SERVER_VERSION]
 [[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
 
-- 
GitLab


From 303c379a18630fbbc2c4a86714ebd9627c03ec9e Mon Sep 17 00:00:00 2001
From: Lynx Linden <lynx@lindenlab.com>
Date: Fri, 29 Jan 2010 14:57:41 +0000
Subject: [PATCH 295/521] EXT-4763: Use <nolink> syntax to disable linking of
 landmark names.

---
 indra/newview/skins/default/xui/en/notifications.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index fc535205f1f..d3e08cad3ae 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -3088,7 +3088,7 @@ Join me in [REGION]
    icon="alertmodal.tga"
    name="TeleportFromLandmark"
    type="alertmodal">
-Are you sure you want to teleport to [LOCATION]?
+Are you sure you want to teleport to &lt;nolink&gt;[LOCATION]&lt;/nolink&gt;?
     <usetemplate
      ignoretext="Confirm that I want to teleport to a landmark"
      name="okcancelignore"
-- 
GitLab


From d643a16c384332de535e6b6ec93f3437604a66e3 Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Fri, 29 Jan 2010 17:01:01 +0200
Subject: [PATCH 296/521] Fixed normal bug EXT-4355 (Preferences: Location of
 logs does not show full path) - changed "control_name" for view with log path
 to the "InstantMessageLogPath" - also changed a line editor state from
 "disabled" to "readonly" to have a chance to scroll text to see full path in
 this field.

--HG--
branch : product-engine
---
 indra/newview/llfloaterpreference.cpp                          | 2 +-
 .../newview/skins/default/xui/en/panel_preferences_privacy.xml | 3 +--
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index e77c93b5f8e..ef444c8ba44 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -1207,7 +1207,7 @@ void LLFloaterPreference::setPersonalInfo(const std::string& visibility, bool im
 	childEnable("log_nearby_chat");
 	childEnable("log_instant_messages");
 	childEnable("show_timestamps_check_im");
-	childEnable("log_path_string");
+	childDisable("log_path_string");// LineEditor becomes readonly in this case.
 	childEnable("log_path_button");
 	
 	std::string display_email(email);
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 0aaeb6114ee..f7e3ede93c2 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
@@ -174,8 +174,7 @@
     </text>    
     <line_editor
      bottom="366"
-     control_name="InstantMessageLogFolder"
-     enabled="false"
+     control_name="InstantMessageLogPath"
      follows="top|left|right"
      halign="right"
      height="23"
-- 
GitLab


From 015453dbc7ad1494d984a46973a7d41eb5c6ac2a Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Fri, 29 Jan 2010 17:04:17 +0200
Subject: [PATCH 297/521] fixed EXT-4736 There's an ability to block system
 notifications from nearby chat

--HG--
branch : product-engine
---
 indra/newview/llchathistory.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index f1e7e622b37..8cfcca31ced 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -310,7 +310,7 @@ class LLChatHistoryHeader: public LLPanel
 			showSystemContextMenu(x,y);
 		if(mSourceType == CHAT_SOURCE_AGENT)
 			showAvatarContextMenu(x,y);
-		if(mSourceType == CHAT_SOURCE_OBJECT)
+		if(mSourceType == CHAT_SOURCE_OBJECT && SYSTEM_FROM != mFrom)
 			showObjectContextMenu(x,y);
 	}
 
-- 
GitLab


From 0524e91aae36d87d8e0944fd294e02f145d5d547 Mon Sep 17 00:00:00 2001
From: Denis Serdjuk <dserduk@productengine.com>
Date: Fri, 29 Jan 2010 17:22:36 +0200
Subject: [PATCH 298/521] fixed bug EXT-4122  [BSI] Notification about
 \"maximum number of groups\" returns redundant information The hardcoded and
 unlocalized dataserver response has been removed from the message of
 notification.

--HG--
branch : product-engine
---
 indra/newview/llviewermessage.cpp                    | 1 -
 indra/newview/skins/default/xui/en/notifications.xml | 1 -
 2 files changed, 2 deletions(-)

diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 55b0d6fa8bd..92408336328 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -630,7 +630,6 @@ bool join_group_response(const LLSD& notification, const LLSD& response)
 			delete_context_data = FALSE;
 			LLSD args;
 			args["NAME"] = name;
-			args["INVITE"] = message;
 			LLNotificationsUtil::add("JoinedTooManyGroupsMember", args, notification["payload"]);
 		}
 	}
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index fc535205f1f..787346f7cd0 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -2941,7 +2941,6 @@ Chat and instant messages will be hidden. Instant messages will get your Busy mo
    type="alert">
 You have reached your maximum number of groups. Please leave another group before joining this one, or decline the offer.
 [NAME] has invited you to join a group as a member.
-[INVITE]
     <usetemplate
      name="okcancelbuttons"
      notext="Decline"
-- 
GitLab


From 86609394caf1ebb20dd90de37b9af1471ae8aa20 Mon Sep 17 00:00:00 2001
From: Alexei Arabadji <aarabadji@productengine.com>
Date: Fri, 29 Jan 2010 17:48:10 +0200
Subject: [PATCH 299/521] =?UTF-8?q?fixed=20major=20EXT-3643=20=E2=80=9CEmb?=
 =?UTF-8?q?ed=20friendship=20offer=20into=20IM=20window=E2=80=9D;?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

--HG--
branch : product-engine
---
 indra/llcommon/llchat.h                       |  2 +
 indra/llui/llnotificationsutil.cpp            |  5 ++
 indra/llui/llnotificationsutil.h              |  2 +
 indra/newview/llchathistory.cpp               | 35 ++++++++-
 indra/newview/llimfloater.cpp                 | 19 ++++-
 indra/newview/llimfloater.h                   |  1 +
 indra/newview/llnotificationhandler.h         | 22 +++++-
 indra/newview/llnotificationhandlerutil.cpp   | 78 ++++++++++++++++++-
 indra/newview/llnotificationofferhandler.cpp  | 19 ++++-
 indra/newview/lltoastnotifypanel.cpp          |  5 ++
 .../default/xui/en/floater_im_session.xml     | 10 +--
 .../skins/default/xui/en/notifications.xml    |  6 +-
 12 files changed, 183 insertions(+), 21 deletions(-)

diff --git a/indra/llcommon/llchat.h b/indra/llcommon/llchat.h
index 46456882baa..a77bd211f34 100644
--- a/indra/llcommon/llchat.h
+++ b/indra/llcommon/llchat.h
@@ -79,6 +79,7 @@ class LLChat
 	:	mText(text),
 		mFromName(),
 		mFromID(),
+		mNotifId(),
 		mSourceType(CHAT_SOURCE_AGENT),
 		mChatType(CHAT_TYPE_NORMAL),
 		mAudible(CHAT_AUDIBLE_FULLY),
@@ -94,6 +95,7 @@ class LLChat
 	std::string		mText;		// UTF-8 line of text
 	std::string		mFromName;	// agent or object name
 	LLUUID			mFromID;	// agent id or object id
+	LLUUID			mNotifId;
 	EChatSourceType	mSourceType;
 	EChatType		mChatType;
 	EChatAudible	mAudible;
diff --git a/indra/llui/llnotificationsutil.cpp b/indra/llui/llnotificationsutil.cpp
index f343d27cb4e..54bdb4bd66f 100644
--- a/indra/llui/llnotificationsutil.cpp
+++ b/indra/llui/llnotificationsutil.cpp
@@ -94,3 +94,8 @@ void LLNotificationsUtil::cancel(LLNotificationPtr pNotif)
 {
 	LLNotifications::instance().cancel(pNotif);
 }
+
+LLNotificationPtr LLNotificationsUtil::find(LLUUID uuid)
+{
+	return LLNotifications::instance().find(uuid);
+}
diff --git a/indra/llui/llnotificationsutil.h b/indra/llui/llnotificationsutil.h
index d552fa915b4..338204924ad 100644
--- a/indra/llui/llnotificationsutil.h
+++ b/indra/llui/llnotificationsutil.h
@@ -65,6 +65,8 @@ namespace LLNotificationsUtil
 	S32 getSelectedOption(const LLSD& notification, const LLSD& response);
 
 	void cancel(LLNotificationPtr pNotif);
+
+	LLNotificationPtr find(LLUUID uuid);
 }
 
 #endif
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index f1e7e622b37..acbd0db8681 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -51,9 +51,12 @@
 #include "llslurl.h"
 #include "lllayoutstack.h"
 #include "llagent.h"
+#include "llnotificationsutil.h"
+#include "lltoastnotifypanel.h"
 #include "llviewerregion.h"
 #include "llworld.h"
 
+
 #include "llsidetray.h"//for blocked objects panel
 
 static LLDefaultChildRegistry::Register<LLChatHistory> r("chat_history");
@@ -654,8 +657,36 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
 		mLastMessageTimeStr = chat.mTimeStr;
 	}
 
-	std::string message = irc_me ? chat.mText.substr(3) : chat.mText;
-	mEditor->appendText(message, FALSE, style_params);
+   if (chat.mNotifId.notNull())
+	{
+		LLNotificationPtr notification = LLNotificationsUtil::find(chat.mNotifId);
+		if (notification != NULL)
+		{
+			LLToastNotifyPanel* notify_box = new LLToastNotifyPanel(
+					notification);
+			notify_box->setFollowsLeft();
+			notify_box->setFollowsRight();
+			//Prepare the rect for the view
+			LLRect target_rect = mEditor->getDocumentView()->getRect();
+			// squeeze down the widget by subtracting padding off left and right
+			target_rect.mLeft += mLeftWidgetPad + mEditor->getHPad();
+			target_rect.mRight -= mRightWidgetPad;
+			notify_box->reshape(target_rect.getWidth(),
+					notify_box->getRect().getHeight());
+			notify_box->setOrigin(target_rect.mLeft, notify_box->getRect().mBottom);
+
+			LLInlineViewSegment::Params params;
+			params.view = notify_box;
+			params.left_pad = mLeftWidgetPad;
+			params.right_pad = mRightWidgetPad;
+			mEditor->appendWidget(params, "\n", false);
+		}
+	}
+	else
+	{
+		std::string message = irc_me ? chat.mText.substr(3) : chat.mText;
+		mEditor->appendText(message, FALSE, style_params);
+	}
 	mEditor->blockUndo();
 
 	// automatically scroll to end when receiving chat from myself
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index c0f22fcea22..c2bcb1cdf9d 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -601,8 +601,18 @@ void LLIMFloater::updateMessages()
 			chat.mFromID = from_id;
 			chat.mSessionID = mSessionID;
 			chat.mFromName = from;
-			chat.mText = message;
 			chat.mTimeStr = time;
+
+			// process offer notification
+			if (msg.has("notifiaction_id"))
+			{
+				chat.mNotifId = msg["notifiaction_id"].asUUID();
+			}
+			//process text message
+			else
+			{
+				chat.mText = message;
+			}
 			
 			mChatHistory->appendMessage(chat, use_plain_text_chat_history);
 			mLastMessageIndex = msg["index"].asInteger();
@@ -610,6 +620,13 @@ void LLIMFloater::updateMessages()
 	}
 }
 
+void LLIMFloater::reloadMessages()
+{
+	mChatHistory->clear();
+	mLastMessageIndex = -1;
+	updateMessages();
+}
+
 // static
 void LLIMFloater::onInputEditorFocusReceived( LLFocusableElement* caller, void* userdata )
 {
diff --git a/indra/newview/llimfloater.h b/indra/newview/llimfloater.h
index 0ca0325451b..9552b307379 100644
--- a/indra/newview/llimfloater.h
+++ b/indra/newview/llimfloater.h
@@ -80,6 +80,7 @@ class LLIMFloater : public LLTransientDockableFloater
 
 	// get new messages from LLIMModel
 	void updateMessages();
+	void reloadMessages();
 	static void onSendMsg( LLUICtrl*, void*);
 	void sendMsg();
 
diff --git a/indra/newview/llnotificationhandler.h b/indra/newview/llnotificationhandler.h
index e57674d31c7..5f4768e321c 100644
--- a/indra/newview/llnotificationhandler.h
+++ b/indra/newview/llnotificationhandler.h
@@ -276,6 +276,11 @@ class LLHandlerUtil
 	 */
 	static bool canSpawnIMSession(const LLNotificationPtr& notification);
 
+	/**
+	 * Checks sufficient conditions to add notification toast panel IM floater.
+	 */
+	static bool canAddNotifPanelToIM(const LLNotificationPtr& notification);
+
 	/**
 	 * Checks if passed notification can create IM session and be written into it.
 	 *
@@ -296,6 +301,11 @@ class LLHandlerUtil
 	 */
 	static void logToIMP2P(const LLNotificationPtr& notification);
 
+	/**
+	 * Writes notification message to IM  p2p session.
+	 */
+	static void logToIMP2P(const LLNotificationPtr& notification, bool to_file_only);
+
 	/**
 	 * Writes group notice notification message to IM  group session.
 	 */
@@ -309,7 +319,7 @@ class LLHandlerUtil
 	/**
 	 * Spawns IM session.
 	 */
-	static void spawnIMSession(const std::string& name, const LLUUID& from_id);
+	static LLUUID spawnIMSession(const std::string& name, const LLUUID& from_id);
 
 	/**
 	 * Returns name from the notification's substitution.
@@ -319,6 +329,16 @@ class LLHandlerUtil
 	 * @param notification - Notification which substitution's name will be returned.
 	 */
 	static std::string getSubstitutionName(const LLNotificationPtr& notification);
+
+	/**
+	 * Adds notification panel to the IM floater.
+	 */
+	static void addNotifPanelToIM(const LLNotificationPtr& notification);
+
+	/**
+	 * Reloads IM floater messages.
+	 */
+	static void reloadIMFloaterMessages(const LLNotificationPtr& notification);
 };
 
 }
diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp
index 02f948eca9d..f9b3b7187ad 100644
--- a/indra/newview/llnotificationhandlerutil.cpp
+++ b/indra/newview/llnotificationhandlerutil.cpp
@@ -39,6 +39,7 @@
 #include "llagent.h"
 #include "llfloaterreg.h"
 #include "llnearbychat.h"
+#include "llimfloater.h"
 
 using namespace LLNotificationsUI;
 
@@ -90,6 +91,13 @@ bool LLHandlerUtil::canSpawnIMSession(const LLNotificationPtr& notification)
 			|| INVENTORY_DECLINED == notification->getName();
 }
 
+// static
+bool LLHandlerUtil::canAddNotifPanelToIM(const LLNotificationPtr& notification)
+{
+	return OFFER_FRIENDSHIP == notification->getName();
+}
+
+
 // static
 bool LLHandlerUtil::canSpawnSessionAndLogToIM(const LLNotificationPtr& notification)
 {
@@ -136,6 +144,12 @@ void LLHandlerUtil::logToIM(const EInstantMessage& session_type,
 
 // static
 void LLHandlerUtil::logToIMP2P(const LLNotificationPtr& notification)
+{
+	logToIMP2P(notification, false);
+}
+
+// static
+void LLHandlerUtil::logToIMP2P(const LLNotificationPtr& notification, bool to_file_only)
 {
 	const std::string name = LLHandlerUtil::getSubstitutionName(notification);
 
@@ -148,8 +162,16 @@ void LLHandlerUtil::logToIMP2P(const LLNotificationPtr& notification)
 	{
 		LLUUID from_id = notification->getPayload()["from_id"];
 
-		logToIM(IM_NOTHING_SPECIAL, session_name, name, notification->getMessage(),
-				from_id, from_id);
+		if(to_file_only)
+		{
+			logToIM(IM_NOTHING_SPECIAL, session_name, name, notification->getMessage(),
+					LLUUID(), LLUUID());
+		}
+		else
+		{
+			logToIM(IM_NOTHING_SPECIAL, session_name, name, notification->getMessage(),
+					from_id, from_id);
+		}
 	}
 }
 
@@ -191,7 +213,7 @@ void LLHandlerUtil::logToNearbyChat(const LLNotificationPtr& notification, EChat
 }
 
 // static
-void LLHandlerUtil::spawnIMSession(const std::string& name, const LLUUID& from_id)
+LLUUID LLHandlerUtil::spawnIMSession(const std::string& name, const LLUUID& from_id)
 {
 	LLUUID session_id = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, from_id);
 
@@ -199,8 +221,10 @@ void LLHandlerUtil::spawnIMSession(const std::string& name, const LLUUID& from_i
 			session_id);
 	if (session == NULL)
 	{
-		LLIMMgr::instance().addSession(name, IM_NOTHING_SPECIAL, from_id);
+		session_id = LLIMMgr::instance().addSession(name, IM_NOTHING_SPECIAL, from_id);
 	}
+
+	return session_id;
 }
 
 // static
@@ -210,3 +234,49 @@ std::string LLHandlerUtil::getSubstitutionName(const LLNotificationPtr& notifica
 		? notification->getSubstitutions()["NAME"]
 		: notification->getSubstitutions()["[NAME]"];
 }
+
+// static
+void LLHandlerUtil::addNotifPanelToIM(const LLNotificationPtr& notification)
+{
+	const std::string name = LLHandlerUtil::getSubstitutionName(notification);
+	LLUUID from_id = notification->getPayload()["from_id"];
+
+	LLUUID session_id = spawnIMSession(name, from_id);
+	// add offer to session
+	LLIMModel::LLIMSession * session = LLIMModel::getInstance()->findIMSession(
+			session_id);
+	llassert_always(session != NULL);
+
+	LLSD offer;
+	offer["notifiaction_id"] = notification->getID();
+	offer["from_id"] = notification->getPayload()["from_id"];
+	offer["from"] = name;
+	offer["time"] = LLLogChat::timestamp(true);
+	session->mMsgs.push_front(offer);
+
+	LLIMFloater::show(session_id);
+}
+
+// static
+void LLHandlerUtil::reloadIMFloaterMessages(
+		const LLNotificationPtr& notification)
+{
+	LLUUID from_id = notification->getPayload()["from_id"];
+	LLUUID session_id = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, from_id);
+	LLIMFloater* im_floater = LLFloaterReg::findTypedInstance<LLIMFloater>(
+			"impanel", session_id);
+	if (im_floater != NULL)
+	{
+		LLIMModel::LLIMSession * session = LLIMModel::getInstance()->findIMSession(
+				session_id);
+		if(session != NULL)
+		{
+			session->mMsgs.clear();
+			std::list<LLSD> chat_history;
+			LLLogChat::loadAllHistory(session->mHistoryFileName, chat_history);
+			session->addMessagesFromHistory(chat_history);
+		}
+
+		im_floater->reloadMessages();
+	}
+}
diff --git a/indra/newview/llnotificationofferhandler.cpp b/indra/newview/llnotificationofferhandler.cpp
index fad0c6a91e6..8c13b0fafa3 100644
--- a/indra/newview/llnotificationofferhandler.cpp
+++ b/indra/newview/llnotificationofferhandler.cpp
@@ -93,7 +93,7 @@ bool LLOfferHandler::processNotification(const LLSD& notify)
 
 	if(notify["sigtype"].asString() == "add" || notify["sigtype"].asString() == "change")
 	{
-		LLHandlerUtil::logToIMP2P(notification);
+
 
 		if( notification->getPayload().has("give_inventory_notification")
 			&& !notification->getPayload()["give_inventory_notification"] )
@@ -103,18 +103,25 @@ bool LLOfferHandler::processNotification(const LLSD& notify)
 		}
 		else
 		{
+			LLUUID session_id;
 			if (LLHandlerUtil::canSpawnIMSession(notification))
 			{
 				const std::string name = LLHandlerUtil::getSubstitutionName(notification);
 
 				LLUUID from_id = notification->getPayload()["from_id"];
 
-				LLHandlerUtil::spawnIMSession(name, from_id);
+				session_id = LLHandlerUtil::spawnIMSession(name, from_id);
 			}
 
-			if (notification->getPayload().has("SUPPRESS_TOAST")
+			if (LLHandlerUtil::canAddNotifPanelToIM(notification))
+			{
+				LLHandlerUtil::addNotifPanelToIM(notification);
+				LLHandlerUtil::logToIMP2P(notification, true);
+			}
+			else if (notification->getPayload().has("SUPPRESS_TOAST")
 						&& notification->getPayload()["SUPPRESS_TOAST"])
 			{
+				LLHandlerUtil::logToIMP2P(notification);
 				LLNotificationsUtil::cancel(notification);
 			}
 			else
@@ -131,6 +138,8 @@ bool LLOfferHandler::processNotification(const LLSD& notify)
 				if(channel)
 					channel->addToast(p);
 
+				LLHandlerUtil::logToIMP2P(notification);
+
 				// send a signal to the counter manager
 				mNewNotificationSignal();
 			}
@@ -146,6 +155,10 @@ bool LLOfferHandler::processNotification(const LLSD& notify)
 		}
 		else
 		{
+			if (LLHandlerUtil::canAddNotifPanelToIM(notification))
+			{
+				LLHandlerUtil::reloadIMFloaterMessages(notification);
+			}
 			mChannel->killToastByNotificationID(notification->getID());
 		}
 	}
diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp
index 94acb2ae8ce..4d741456c42 100644
--- a/indra/newview/lltoastnotifypanel.cpp
+++ b/indra/newview/lltoastnotifypanel.cpp
@@ -43,6 +43,7 @@
 #include "lluiconstants.h"
 #include "llrect.h"
 #include "lltrans.h"
+#include "llnotificationsutil.h"
 
 const S32 BOTTOM_PAD = VPAD * 3;
 S32 BUTTON_WIDTH = 90;
@@ -235,6 +236,10 @@ LLButton* LLToastNotifyPanel::createButton(const LLSD& form_element, BOOL is_opt
 LLToastNotifyPanel::~LLToastNotifyPanel() 
 {
 	std::for_each(mBtnCallbackData.begin(), mBtnCallbackData.end(), DeletePointer());
+	if (LLNotificationsUtil::find(mNotification->getID()) != NULL)
+	{
+		LLNotifications::getInstance()->cancel(mNotification);
+	}
 }
 void LLToastNotifyPanel::updateButtonsLayout(const std::vector<index_button_pair_t>& buttons, S32 left_pad, S32 top)
 {
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 d2e54731573..9aaa660574c 100644
--- a/indra/newview/skins/default/xui/en/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_session.xml
@@ -12,7 +12,7 @@
  can_minimize="true"
  can_close="true"
  visible="false"
- width="360"
+ width="440"
  can_resize="true"
  min_width="250"
  min_height="190">
@@ -20,7 +20,7 @@
    animate="false" 
   follows="all"
   height="320"
-  width="360"
+  width="440"
   layout="topleft"
   orientation="horizontal"
   name="im_panels"
@@ -38,7 +38,7 @@
        left="0"
        top="0"
        height="200"
-	     width="245"
+	     width="325"
        user_resize="true">
         <button
           height="20"
@@ -65,7 +65,7 @@
          parse_highlights="true"
          allow_html="true"
         left="1"
-         width="240">
+         width="320">
         </chat_history>
         <line_editor
          bottom="0"
@@ -75,7 +75,7 @@
          label="To"
          layout="bottomleft"
          name="chat_editor"
-         width="240">
+         width="320">
         </line_editor>
     </layout_panel>
   </layout_stack>
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 787346f7cd0..2adee19ef65 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -5156,7 +5156,7 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you th
   <notification
    icon="notify.tga"
    name="OfferFriendship"
-   type="alertmodal">
+   type="offer">
 [NAME] is offering friendship.
 
 [MESSAGE]
@@ -5171,10 +5171,6 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you th
        index="1"
        name="Decline"
        text="Decline"/>
-      <button
-       index="2"
-       name="Send IM"
-       text="Send IM"/>
     </form>
   </notification>
   
-- 
GitLab


From 67d006e404d830931db17814e8da38cc55332152 Mon Sep 17 00:00:00 2001
From: Ychebotarev ProductEngine <ychebotarev@productengine.com>
Date: Fri, 29 Jan 2010 18:00:16 +0200
Subject: [PATCH 300/521] revert previous changes...think its not good idea

--HG--
branch : product-engine
---
 .../skins/default/xui/en/panel_preferences_graphics1.xml        | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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 9e502557683..82821a1dfe6 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
@@ -719,7 +719,7 @@
      name="Apply"
      top="383"
      width="115"
-     visible="false">
+      >
         <button.commit_callback
          function="Pref.Apply" />
     </button>
-- 
GitLab


From 81451696f1de85e235818517c01b8d255d1bb661 Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Fri, 29 Jan 2010 18:03:11 +0200
Subject: [PATCH 301/521] fixed EXT-4187 "X" does not close client after idle
 timeout / log off when "Confirm before I quit" is enabled

--HG--
branch : product-engine
---
 indra/newview/llappviewer.cpp | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 9bb0977c1a6..2d694eefd35 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -2891,7 +2891,14 @@ static LLNotificationFunctorRegistration finish_quit_reg("ConfirmQuit", finish_q
 
 void LLAppViewer::userQuit()
 {
-	LLNotificationsUtil::add("ConfirmQuit");
+	if (gDisconnected)
+	{
+		requestQuit();
+	}
+	else
+	{
+		LLNotificationsUtil::add("ConfirmQuit");
+	}
 }
 
 static bool finish_early_exit(const LLSD& notification, const LLSD& response)
-- 
GitLab


From 09c2f013623797a165a1cccd539a3a86f8a0027f Mon Sep 17 00:00:00 2001
From: Vadim Savchuk <vsavchuk@productengine.com>
Date: Fri, 29 Jan 2010 19:20:33 +0200
Subject: [PATCH 302/521] Fixed bug EXT-4170 ([BSI] Object picker in "Report
 Abuse" floater fails to identify owner when object is an attachment). Reason:
 The floater attempted to render avatar name from the attached object ID. Of
 course, the attempt failed. Fix: Changed to use the avatar ID.

--HG--
branch : product-engine
---
 indra/newview/llfloaterreporter.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp
index 4a1eb51dbe9..0f3c176cead 100644
--- a/indra/newview/llfloaterreporter.cpp
+++ b/indra/newview/llfloaterreporter.cpp
@@ -248,6 +248,7 @@ void LLFloaterReporter::getObjectInfo(const LLUUID& object_id)
 			if ( objectp->isAttachment() )
 			{
 				objectp = (LLViewerObject*)objectp->getRoot();
+				mObjectID = objectp->getID();
 			}
 
 			// correct the region and position information
@@ -278,7 +279,7 @@ void LLFloaterReporter::getObjectInfo(const LLUUID& object_id)
 					object_owner.append("Unknown");
 				}
 
-				setFromAvatar(object_id, object_owner);
+				setFromAvatar(mObjectID, object_owner);
 			}
 			else
 			{
-- 
GitLab


From fe90c259daab3a222a80e84db7b8a328d505a5a2 Mon Sep 17 00:00:00 2001
From: Andrew Dyukov <adyukov@productengine.com>
Date: Fri, 29 Jan 2010 19:32:42 +0200
Subject: [PATCH 303/521] Fixed major bug EXT-4767 (Any docked/undocked window
 overlaps Gesture menu).

- Changed adding of gestures scrolllist from NonSideTrayView to FloaterViewHolder.

--HG--
branch : product-engine
---
 indra/newview/llnearbychatbar.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp
index 6cf8bcb4178..ad98a29fb2e 100644
--- a/indra/newview/llnearbychatbar.cpp
+++ b/indra/newview/llnearbychatbar.cpp
@@ -97,9 +97,9 @@ LLGestureComboList::LLGestureComboList(const LLGestureComboList::Params& p)
 
 	mList = LLUICtrlFactory::create<LLScrollListCtrl>(params);
 	
-	// *HACK: adding list as a child to NonSideTrayView to make it fully visible without
+	// *HACK: adding list as a child to FloaterViewHolder to make it fully visible without
 	// making it top control (because it would cause problems).
-	gViewerWindow->getNonSideTrayView()->addChild(mList);
+	gViewerWindow->getFloaterViewHolder()->addChild(mList);
 	mList->setVisible(FALSE);
 
 	//****************************Gesture Part********************************/
-- 
GitLab


From ea7915c2aee486dfb3b7e29016c67a0c4a49cb0f Mon Sep 17 00:00:00 2001
From: Vadim Savchuk <vsavchuk@productengine.com>
Date: Fri, 29 Jan 2010 19:52:52 +0200
Subject: [PATCH 304/521] Fixed bug EXT-4437 ([BSI] console warning flood when
 viewing profile) by suppressing duplicated warnings.

--HG--
branch : product-engine
---
 indra/newview/llviewerparcelmgr.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp
index c5378659374..9d7ccd99c66 100644
--- a/indra/newview/llviewerparcelmgr.cpp
+++ b/indra/newview/llviewerparcelmgr.cpp
@@ -1814,7 +1814,7 @@ void LLViewerParcelMgr::processParcelAccessListReply(LLMessageSystem *msg, void
 
 	if (parcel_id != parcel->getLocalID())
 	{
-		llwarns << "processParcelAccessListReply for parcel " << parcel_id
+		LL_WARNS_ONCE("") << "processParcelAccessListReply for parcel " << parcel_id
 			<< " which isn't the selected parcel " << parcel->getLocalID()<< llendl;
 		return;
 	}
-- 
GitLab


From 3b34147ceafa02849fa3275e11ac2ae6a55c33a3 Mon Sep 17 00:00:00 2001
From: Eugene Mutavchi <emutavchi@productengine.com>
Date: Fri, 29 Jan 2010 19:55:41 +0200
Subject: [PATCH 305/521] Fixed low bug EXT-4721(Green border around
 multi-selected people)

--HG--
branch : product-engine
---
 indra/llui/llflatlistview.cpp | 35 +++++++++--------------------------
 indra/llui/llflatlistview.h   |  2 --
 2 files changed, 9 insertions(+), 28 deletions(-)

diff --git a/indra/llui/llflatlistview.cpp b/indra/llui/llflatlistview.cpp
index 3694ecd4f49..92993650a79 100644
--- a/indra/llui/llflatlistview.cpp
+++ b/indra/llui/llflatlistview.cpp
@@ -289,8 +289,8 @@ void LLFlatListView::resetSelection(bool no_commit_on_deselection /*= false*/)
 		onCommit();
 	}
 
-	// Stretch selected items rect to ensure it won't be clipped
-	mSelectedItemsBorder->setRect(getSelectedItemsRect().stretch(-1));
+	// Stretch selected item rect to ensure it won't be clipped
+	mSelectedItemsBorder->setRect(getLastSelectedItemRect().stretch(-1));
 }
 
 void LLFlatListView::setNoItemsCommentText(const std::string& comment_text)
@@ -393,7 +393,7 @@ LLFlatListView::LLFlatListView(const LLFlatListView::Params& p)
 
 	LLViewBorder::Params params;
 	params.name("scroll border");
-	params.rect(getSelectedItemsRect());
+	params.rect(getLastSelectedItemRect());
 	params.visible(false);
 	params.bevel_style(LLViewBorder::BEVEL_IN);
 	mSelectedItemsBorder = LLUICtrlFactory::create<LLViewBorder> (params);
@@ -480,8 +480,8 @@ void LLFlatListView::rearrangeItems()
 		item_new_top -= (rc.getHeight() + mItemPad);
 	}
 
-	// Stretch selected items rect to ensure it won't be clipped
-	mSelectedItemsBorder->setRect(getSelectedItemsRect().stretch(-1));
+	// Stretch selected item rect to ensure it won't be clipped
+	mSelectedItemsBorder->setRect(getLastSelectedItemRect().stretch(-1));
 }
 
 void LLFlatListView::onItemMouseClick(item_pair_t* item_pair, MASK mask)
@@ -664,8 +664,8 @@ bool LLFlatListView::selectItemPair(item_pair_t* item_pair, bool select)
 		onCommit();
 	}
 
-	// Stretch selected items rect to ensure it won't be clipped
-	mSelectedItemsBorder->setRect(getSelectedItemsRect().stretch(-1));
+	// Stretch selected item rect to ensure it won't be clipped
+	mSelectedItemsBorder->setRect(getLastSelectedItemRect().stretch(-1));
 
 	return true;
 }
@@ -680,23 +680,6 @@ LLRect LLFlatListView::getLastSelectedItemRect()
 	return mSelectedItemPairs.back()->first->getRect();
 }
 
-LLRect LLFlatListView::getSelectedItemsRect()
-{
-	if (!mSelectedItemPairs.size())
-	{
-		return LLRect::null;
-	}
-	LLRect rc = getLastSelectedItemRect();
-	for ( pairs_const_iterator_t
-			  it = mSelectedItemPairs.begin(),
-			  it_end = mSelectedItemPairs.end();
-		  it != it_end; ++it )
-	{
-		rc.unionWith((*it)->first->getRect());
-	}
-	return rc;
-}
-
 void LLFlatListView::selectFirstItem	()
 {
 	selectItemPair(mItemPairs.front(), true);
@@ -819,8 +802,8 @@ bool LLFlatListView::selectAll()
 		onCommit();
 	}
 
-	// Stretch selected items rect to ensure it won't be clipped
-	mSelectedItemsBorder->setRect(getSelectedItemsRect().stretch(-1));
+	// Stretch selected item rect to ensure it won't be clipped
+	mSelectedItemsBorder->setRect(getLastSelectedItemRect().stretch(-1));
 
 	return true;
 }
diff --git a/indra/llui/llflatlistview.h b/indra/llui/llflatlistview.h
index 5999e79f61b..949a731507f 100644
--- a/indra/llui/llflatlistview.h
+++ b/indra/llui/llflatlistview.h
@@ -368,8 +368,6 @@ class LLFlatListView : public LLScrollContainer
 
 	LLRect getLastSelectedItemRect();
 
-	LLRect getSelectedItemsRect();
-
 	void   ensureSelectedVisible();
 
 private:
-- 
GitLab


From d3eb0e9765460801829419b15693b1b00ee5d369 Mon Sep 17 00:00:00 2001
From: Eugene Mutavchi <emutavchi@productengine.com>
Date: Fri, 29 Jan 2010 19:55:41 +0200
Subject: [PATCH 306/521] Fixed normal bug EXT-4697 (Buttons in bottom bar are
 compressed after quitting mouselook mode) and low bug EXT-4723 (Not all
 buttons are displayed on the bottom bar after leaving mouse look): -
 implemented the LLBottomTrayLite, which  appears only in mouselook mode.

--HG--
branch : product-engine
---
 indra/newview/llagent.cpp                     |   2 -
 indra/newview/llbottomtray.cpp                | 173 ++++++++++--------
 indra/newview/llbottomtray.h                  |  18 +-
 .../skins/default/xui/en/panel_bottomtray.xml |   9 +-
 .../default/xui/en/panel_bottomtray_lite.xml  |  95 ++++++++++
 5 files changed, 199 insertions(+), 98 deletions(-)
 create mode 100644 indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml

diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index da0e9238d63..2354323a66d 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -2805,7 +2805,6 @@ void LLAgent::endAnimationUpdateUI()
 		LLNavigationBar::getInstance()->setVisible(TRUE);
 		gStatusBar->setVisibleForMouselook(true);
 
-		LLBottomTray::getInstance()->setVisible(TRUE);
 		LLBottomTray::getInstance()->onMouselookModeOut();
 
 		LLSideTray::getInstance()->getButtonsPanel()->setVisible(TRUE);
@@ -2906,7 +2905,6 @@ void LLAgent::endAnimationUpdateUI()
 		gStatusBar->setVisibleForMouselook(false);
 
 		LLBottomTray::getInstance()->onMouselookModeIn();
-		LLBottomTray::getInstance()->setVisible(FALSE);
 
 		LLSideTray::getInstance()->getButtonsPanel()->setVisible(FALSE);
 		LLSideTray::getInstance()->updateSidetrayVisibility();
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index bd68d528680..a2d594cfa21 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -62,6 +62,39 @@ namespace
 	const std::string& PANEL_GESTURE_NAME	= "gesture_panel";
 }
 
+class LLBottomTrayLite
+	: public LLPanel
+{
+public:
+	LLBottomTrayLite()
+		: mNearbyChatBar(NULL),
+		  mGesturePanel(NULL)
+	{
+		mFactoryMap["chat_bar"] = LLCallbackMap(LLBottomTray::createNearbyChatBar, NULL);
+		LLUICtrlFactory::getInstance()->buildPanel(this, "panel_bottomtray_lite.xml");
+		// Necessary for focus movement among child controls
+		setFocusRoot(TRUE);
+	}
+
+	BOOL postBuild()
+	{
+		mNearbyChatBar = getChild<LLNearbyChatBar>("chat_bar");
+		mGesturePanel = getChild<LLPanel>("gesture_panel");
+		return TRUE;
+	}
+
+	void onFocusLost()
+	{
+		if (gAgent.cameraMouselook())
+		{
+			LLBottomTray::getInstance()->setVisible(FALSE);
+		}
+	}
+
+	LLNearbyChatBar*	mNearbyChatBar;
+	LLPanel*			mGesturePanel;
+};
+
 LLBottomTray::LLBottomTray(const LLSD&)
 :	mChicletPanel(NULL),
 	mSpeakPanel(NULL),
@@ -76,6 +109,8 @@ LLBottomTray::LLBottomTray(const LLSD&)
 ,	mSnapshotPanel(NULL)
 ,	mGesturePanel(NULL)
 ,	mCamButton(NULL)
+,	mBottomTrayLite(NULL)
+,	mIsInLiteMode(false)
 {
 	// Firstly add ourself to IMSession observers, so we catch session events
 	// before chiclets do that.
@@ -100,6 +135,12 @@ LLBottomTray::LLBottomTray(const LLSD&)
 
 	// Necessary for focus movement among child controls
 	setFocusRoot(TRUE);
+
+	{
+		mBottomTrayLite = new LLBottomTrayLite();
+		mBottomTrayLite->setFollowsAll();
+		mBottomTrayLite->setVisible(FALSE);
+	}
 }
 
 LLBottomTray::~LLBottomTray()
@@ -134,6 +175,11 @@ void* LLBottomTray::createNearbyChatBar(void* userdata)
 	return new LLNearbyChatBar();
 }
 
+LLNearbyChatBar* LLBottomTray::getNearbyChatBar()
+{
+	return mIsInLiteMode ? mBottomTrayLite->mNearbyChatBar : mNearbyChatBar;
+}
+
 LLIMChiclet* LLBottomTray::createIMChiclet(const LLUUID& session_id)
 {
 	LLIMChiclet::EType im_chiclet_type = LLIMChiclet::getIMSessionType(session_id);
@@ -237,68 +283,27 @@ void LLBottomTray::onChange(EStatusType status, const std::string &channelURI, b
 	mSpeakBtn->setEnabled(enable);
 }
 
-//virtual
-void LLBottomTray::onFocusLost()
+void LLBottomTray::onMouselookModeOut()
 {
-	if (gAgent.cameraMouselook())
-	{
-		setVisible(FALSE);
-	}
+	mIsInLiteMode = false;
+	mBottomTrayLite->setVisible(FALSE);
+	mNearbyChatBar->getChatBox()->setText(mBottomTrayLite->mNearbyChatBar->getChatBox()->getText());
+	setVisible(TRUE);
 }
 
-void LLBottomTray::savePanelsShape()
+void LLBottomTray::onMouselookModeIn()
 {
-	mSavedShapeList.clear();
-	for (child_list_const_iter_t
-			 child_it = mToolbarStack->beginChild(),
-			 child_it_end = mToolbarStack->endChild();
-		 child_it != child_it_end; ++child_it)
-	{
-		mSavedShapeList.push_back( (*child_it)->getRect() );
-	}
-}
+	setVisible(FALSE);
 
-void LLBottomTray::restorePanelsShape()
-{
-	if (mSavedShapeList.size() != mToolbarStack->getChildCount())
-		return;
-	int i = 0;
-	for (child_list_const_iter_t
-			 child_it = mToolbarStack->beginChild(),
-			 child_it_end = mToolbarStack->endChild();
-		 child_it != child_it_end; ++child_it)
-	{
-		(*child_it)->setShape(mSavedShapeList[i++]);
-	}
-}
+	// Attach the lite bottom tray
+	if (getParent() && mBottomTrayLite->getParent() != getParent())
+		getParent()->addChild(mBottomTrayLite);
 
-void LLBottomTray::onMouselookModeOut()
-{
-	// Apply the saved settings when we are not in mouselook mode, see EXT-3988.
-	{
-		setTrayButtonVisibleIfPossible (RS_BUTTON_GESTURES, gSavedSettings.getBOOL("ShowGestureButton"), false);
-		setTrayButtonVisibleIfPossible (RS_BUTTON_MOVEMENT, gSavedSettings.getBOOL("ShowMoveButton"),    false);
-		setTrayButtonVisibleIfPossible (RS_BUTTON_CAMERA,   gSavedSettings.getBOOL("ShowCameraButton"),  false);
-		setTrayButtonVisibleIfPossible (RS_BUTTON_SNAPSHOT, gSavedSettings.getBOOL("ShowSnapshotButton"),false);
-	}
-	// HACK: To avoid usage the LLLayoutStack logic of resizing, we force the updateLayout
-	// and then restore children saved shapes. See EXT-4309.
-	BOOL saved_anim = mToolbarStack->getAnimate();
-	mToolbarStack->updatePanelAutoResize(PANEL_CHATBAR_NAME, FALSE);
-	// Disable animation to prevent layout updating in several frames.
-	mToolbarStack->setAnimate(FALSE);
-	// Force the updating of layout to reset panels collapse factor.
-	mToolbarStack->updateLayout();
-	// Restore animate state.
-	mToolbarStack->setAnimate(saved_anim);
-	// Restore saved shapes.
-	restorePanelsShape();
-}
+	mBottomTrayLite->setShape(getLocalRect());
+	mBottomTrayLite->mNearbyChatBar->getChatBox()->setText(mNearbyChatBar->getChatBox()->getText());
+	mBottomTrayLite->mGesturePanel->setVisible(gSavedSettings.getBOOL("ShowGestureButton"));
 
-void LLBottomTray::onMouselookModeIn()
-{
-	savePanelsShape();
-	mToolbarStack->updatePanelAutoResize(PANEL_CHATBAR_NAME, TRUE);
+	mIsInLiteMode = true;
 }
 
 //virtual
@@ -306,31 +311,14 @@ void LLBottomTray::onMouselookModeIn()
 // If bottom tray is already visible in mouselook mode, then onVisibilityChange will not be called from setVisible(true),
 void LLBottomTray::setVisible(BOOL visible)
 {
-	LLPanel::setVisible(visible);
-
-	// *NOTE: we must check mToolbarStack against NULL because setVisible is called from the 
-	// LLPanel::initFromParams BEFORE postBuild is called and child controls are not exist yet
-	if (NULL != mToolbarStack)
+	if (mIsInLiteMode)
 	{
-		BOOL visibility = gAgent.cameraMouselook() ? false : true;
-
-		for ( child_list_const_iter_t child_it = mToolbarStack->getChildList()->begin(); 
-			child_it != mToolbarStack->getChildList()->end(); child_it++)
-		{
-			LLView* viewp = *child_it;
-			std::string name = viewp->getName();
-
-			// Chat bar and gesture button are shown even in mouselook mode.
-			// But the move, camera and snapshot buttons shouldn't be displayed. See EXT-3988.
-			if ("chat_bar" == name || "gesture_panel" == name || (visibility && ("movement_panel" == name || "cam_panel" == name || "snapshot_panel" == name)))
-				continue;
-			else 
-			{
-				viewp->setVisible(visibility);
-			}
-		}
+		mBottomTrayLite->setVisible(visible);
+	}
+	else
+	{
+		LLPanel::setVisible(visible);
 	}
-
 	if(visible)
 		gFloaterView->setSnapOffsetBottom(getRect().getHeight());
 	else
@@ -535,7 +523,18 @@ void LLBottomTray::reshape(S32 width, S32 height, BOOL called_from_parent)
 
 	if (mChicletPanel && mToolbarStack && mNearbyChatBar)
 	{
-		mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, TRUE);
+		// Firstly, update layout stack to ensure we deal with correct panel sizes.
+		{
+			BOOL saved_anim = mToolbarStack->getAnimate();
+			// Set chiclet panel to be autoresized by default.
+			mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, TRUE);
+			// Disable animation to prevent layout updating in several frames.
+			mToolbarStack->setAnimate(FALSE);
+			// Force the updating of layout to reset panels collapse factor.
+			mToolbarStack->updateLayout();
+			// Restore animate state.
+			mToolbarStack->setAnimate(saved_anim);
+		}
 
 		// bottom tray is narrowed
 		if (delta_width < 0)
@@ -637,7 +636,7 @@ S32 LLBottomTray::processWidthDecreased(S32 delta_width)
 
 		mNearbyChatBar->reshape(mNearbyChatBar->getRect().getWidth() - delta_panel, mNearbyChatBar->getRect().getHeight());
 
-		log(mChicletPanel, "after processing panel decreasing via nearby chatbar panel");
+		log(mNearbyChatBar, "after processing panel decreasing via nearby chatbar panel");
 
 		lldebugs << "RS_CHATBAR_INPUT"
 			<< ", delta_panel: " << delta_panel
@@ -1057,6 +1056,11 @@ void LLBottomTray::initStateProcessedObjectMap()
 	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_MOVEMENT, mMovementPanel));
 	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_CAMERA, mCamPanel));
 	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SNAPSHOT, mSnapshotPanel));
+
+	mDummiesMap.insert(std::make_pair(RS_BUTTON_GESTURES, getChild<LLUICtrl>("after_gesture_panel")));
+	mDummiesMap.insert(std::make_pair(RS_BUTTON_MOVEMENT, getChild<LLUICtrl>("after_movement_panel")));
+	mDummiesMap.insert(std::make_pair(RS_BUTTON_CAMERA,   getChild<LLUICtrl>("after_cam_panel")));
+	mDummiesMap.insert(std::make_pair(RS_BUTTON_SPEAK,    getChild<LLUICtrl>("after_speak_panel")));
 }
 
 void LLBottomTray::setTrayButtonVisible(EResizeState shown_object_type, bool visible)
@@ -1069,6 +1073,11 @@ void LLBottomTray::setTrayButtonVisible(EResizeState shown_object_type, bool vis
 	}
 
 	panel->setVisible(visible);
+
+	if (mDummiesMap.count(shown_object_type))
+	{
+		mDummiesMap[shown_object_type]->setVisible(visible);
+	}
 }
 
 void LLBottomTray::setTrayButtonVisibleIfPossible(EResizeState shown_object_type, bool visible, bool raise_notification)
@@ -1084,6 +1093,8 @@ void LLBottomTray::setTrayButtonVisibleIfPossible(EResizeState shown_object_type
 			return;
 		}
 
+		const S32 dummy_width = mDummiesMap.count(shown_object_type) ? mDummiesMap[shown_object_type]->getRect().getWidth() : 0;
+
 		const S32 chatbar_panel_width = mNearbyChatBar->getRect().getWidth();
 		const S32 chatbar_panel_min_width = mNearbyChatBar->getMinWidth();
 
@@ -1093,7 +1104,7 @@ void LLBottomTray::setTrayButtonVisibleIfPossible(EResizeState shown_object_type
 		const S32 available_width = (chatbar_panel_width - chatbar_panel_min_width)
 			+ (chiclet_panel_width - chiclet_panel_min_width);
 
-		const S32 required_width = panel->getRect().getWidth();
+		const S32 required_width = panel->getRect().getWidth() + dummy_width;
 		can_be_set = available_width >= required_width;
 	}
 
diff --git a/indra/newview/llbottomtray.h b/indra/newview/llbottomtray.h
index 562ee569125..ee0eb13218c 100644
--- a/indra/newview/llbottomtray.h
+++ b/indra/newview/llbottomtray.h
@@ -46,6 +46,7 @@ class LLNotificationChiclet;
 class LLSpeakButton;
 class LLNearbyChatBar;
 class LLIMChiclet;
+class LLBottomTrayLite;
 
 // Build time optimization, generate once in .cpp file
 #ifndef LLBOTTOMTRAY_CPP
@@ -60,13 +61,14 @@ class LLBottomTray
 {
 	LOG_CLASS(LLBottomTray);
 	friend class LLSingleton<LLBottomTray>;
+	friend class LLBottomTrayLite;
 public:
 	~LLBottomTray();
 
 	BOOL postBuild();
 
 	LLChicletPanel*		getChicletPanel()	{return mChicletPanel;}
-	LLNearbyChatBar*		getNearbyChatBar()	{return mNearbyChatBar;}
+	LLNearbyChatBar*		getNearbyChatBar();
 
 	void onCommitGesture(LLUICtrl* ctrl);
 
@@ -79,7 +81,6 @@ class LLBottomTray
 
 	virtual void reshape(S32 width, S32 height, BOOL called_from_parent);
 
-	virtual void onFocusLost();
 	virtual void setVisible(BOOL visible);
 
 	// Implements LLVoiceClientStatusObserver::onChange() to enable the speak
@@ -172,13 +173,6 @@ class LLBottomTray
 	 */
 	void setTrayButtonVisibleIfPossible(EResizeState shown_object_type, bool visible, bool raise_notification = true);
 
-	/**
-	 * Save and restore children shapes.
-	 * Used to avoid the LLLayoutStack resizing logic between mouse look mode switching.
-	 */
-	void savePanelsShape();
-	void restorePanelsShape();
-
 	MASK mResizeState;
 
 	typedef std::map<EResizeState, LLPanel*> state_object_map_t;
@@ -187,8 +181,8 @@ class LLBottomTray
 	typedef std::map<EResizeState, S32> state_object_width_map_t;
 	state_object_width_map_t mObjectDefaultWidthMap;
 
-	typedef std::vector<LLRect> shape_list_t;
-	shape_list_t mSavedShapeList;
+	typedef std::map<EResizeState, LLUICtrl*> dummies_map_t;
+	dummies_map_t mDummiesMap;
 
 protected:
 
@@ -214,6 +208,8 @@ class LLBottomTray
 	LLPanel*			mGesturePanel;
 	LLButton*			mCamButton;
 	LLButton*			mMovementButton;
+	LLBottomTrayLite*   mBottomTrayLite;
+	bool                mIsInLiteMode;
 };
 
 #endif // LL_LLBOTTOMPANEL_H
diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
index 09ec2137b7c..aad55685d22 100644
--- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
@@ -87,7 +87,7 @@
             image_name="spacer24.tga"
             layout="topleft"
             left="0"
-            name="DUMMY"
+            name="after_speak_panel"
             min_width="3"
             top="0"
             width="3"/>
@@ -127,7 +127,7 @@
          layout="topleft"
          left="0"
          min_width="3"
-         name="DUMMY"
+         name="after_gesture_panel"
          top="0"
          width="3"/>
         <layout_panel
@@ -169,7 +169,7 @@
          layout="topleft"
          left="0"
          min_width="3"
-         name="DUMMY"
+         name="after_movement_panel"
          top="0"
          width="3"/>
         <layout_panel
@@ -212,7 +212,7 @@
          layout="topleft"
          left="0"
          min_width="3"
-         name="DUMMY"
+         name="after_cam_panel"
          top="0"
          width="3"/>
         <layout_panel
@@ -317,6 +317,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
          layout="topleft"
          left="0"
          min_width="4"
+         name="DUMMY"
          top="0"
          width="5"/>
         <layout_panel
diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml
new file mode 100644
index 00000000000..6e9476f8146
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ default_tab_group="2"
+ mouse_opaque="true"
+ background_visible="true"
+ bg_alpha_color="DkGray"
+ bg_opaque_color="DkGray"
+ follows="left|bottom|right"
+ height="33"
+ layout="topleft"
+ left="0"
+ name="bottom_tray_lite"
+ tab_stop="true"
+ top="28"
+ chrome="true"
+ border_visible="false"
+ visible="false"
+ width="1000">
+    <layout_stack
+     mouse_opaque="false"
+     border_size="0"
+     clip="false"
+     follows="all"
+     height="28"
+     layout="topleft"
+     left="0"
+     name="toolbar_stack_lite"
+     orientation="horizontal"
+     top="0"
+     width="1000">
+        <icon
+         auto_resize="false"
+         follows="left|right"
+         height="10"
+         image_name="spacer24.tga"
+         layout="topleft"
+         min_width="2"
+         left="0"
+         top="0"
+         width="2" />
+        <layout_panel
+         mouse_opaque="false"
+         auto_resize="true"
+         follows="left|right"
+         height="28"
+         layout="topleft"
+         left="0"
+         min_height="23"
+         width="310"
+         top="4"
+         min_width="188"
+         name="chat_bar"
+         user_resize="false"
+         filename="panel_nearby_chat_bar.xml" />
+        <layout_panel
+         mouse_opaque="false"
+         auto_resize="false"
+         follows="right"
+         height="28"
+         layout="topleft"
+         min_height="28"
+         width="82"
+         top_delta="0"
+         min_width="52"
+         name="gesture_panel"
+         user_resize="false">
+            <gesture_combo_list
+             follows="left|right"
+             height="23"
+             label="Gesture"
+             layout="topleft"
+             name="Gesture"
+             left="0"
+             top="5"
+             width="82"
+             tool_tip="Shows/hides gestures">
+                <gesture_combo_list.combo_button
+                 pad_right="10"
+                 use_ellipses="true" />
+            </gesture_combo_list>
+        </layout_panel>
+        <icon
+         auto_resize="false"
+         color="0 0 0 0"
+         follows="left|right"
+         height="10"
+         image_name="spacer24.tga"
+         layout="topleft"
+         left="0"
+         min_width="3"
+         name="after_gesture_panel"
+         top="0"
+         width="3"/>
+    </layout_stack>
+</panel>
-- 
GitLab


From 4fa3577b04e7a02b549ef8375c658632aecf630f Mon Sep 17 00:00:00 2001
From: Dmitry Zaporozhan <dzaporozhan@productengine.com>
Date: Fri, 29 Jan 2010 18:51:51 +0200
Subject: [PATCH 307/521] Fixed LLGroupIcon to receive LLGroupManager
 callbacks.

--HG--
branch : product-engine
---
 indra/newview/llgroupiconctrl.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/newview/llgroupiconctrl.cpp b/indra/newview/llgroupiconctrl.cpp
index 0b03d49cbc0..5760242bc80 100644
--- a/indra/newview/llgroupiconctrl.cpp
+++ b/indra/newview/llgroupiconctrl.cpp
@@ -94,6 +94,7 @@ void LLGroupIconCtrl::setValue(const LLSD& value)
 		if (mGroupId != value.asUUID())
 		{
 			mGroupId = value.asUUID();
+			mID = mGroupId; // set LLGroupMgrObserver::mID to make callbacks work
 
 			// Check if cache already contains image_id for that group
 			if (!updateFromCache())
-- 
GitLab


From a328cdc83015a46a87377ad3c822c730c03026a3 Mon Sep 17 00:00:00 2001
From: Lynx Linden <lynx@lindenlab.com>
Date: Fri, 29 Jan 2010 17:34:44 +0000
Subject: [PATCH 308/521] EXT-4493: Mark snapshot as dirty when changing
 quality slider.

---
 indra/newview/llfloatersnapshot.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp
index 94c7ff6f947..a0031f01932 100644
--- a/indra/newview/llfloatersnapshot.cpp
+++ b/indra/newview/llfloatersnapshot.cpp
@@ -378,6 +378,7 @@ void LLSnapshotLivePreview::setSnapshotQuality(S32 quality)
 	{
 		mSnapshotQuality = quality;
 		gSavedSettings.setS32("SnapshotQuality", quality);
+		mSnapshotUpToDate = FALSE;
 	}
 }
 
-- 
GitLab


From 092f93b0c1084edf68fc0536aa03a3c7b816505b Mon Sep 17 00:00:00 2001
From: Dmitry Zaporozhan <dzaporozhan@productengine.com>
Date: Fri, 29 Jan 2010 19:40:46 +0200
Subject: [PATCH 309/521] Fixed normal bug EXT-2124 - [BSI] New notifications
 of group chat messages do not identify the destination group chat of message.

--HG--
branch : product-engine
---
 indra/newview/lltoastimpanel.cpp              | 88 ++++++++++++++++---
 indra/newview/lltoastimpanel.h                |  6 ++
 .../default/xui/en/panel_instant_message.xml  | 10 +++
 3 files changed, 91 insertions(+), 13 deletions(-)

diff --git a/indra/newview/lltoastimpanel.cpp b/indra/newview/lltoastimpanel.cpp
index 89a58cd736a..a436dc05460 100644
--- a/indra/newview/lltoastimpanel.cpp
+++ b/indra/newview/lltoastimpanel.cpp
@@ -33,7 +33,10 @@
 #include "llviewerprecompiledheaders.h"
 #include "lltoastimpanel.h"
 
+#include "llagent.h"
 #include "llfloaterreg.h"
+#include "llgroupactions.h"
+#include "llgroupiconctrl.h"
 #include "llnotifications.h"
 #include "llinstantmessage.h"
 #include "lltooltip.h"
@@ -45,11 +48,12 @@ const S32 LLToastIMPanel::DEFAULT_MESSAGE_MAX_LINE_COUNT	= 6;
 //--------------------------------------------------------------------------
 LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) :	LLToastPanel(p.notification),
 								mAvatarIcon(NULL), mAvatarName(NULL),
-								mTime(NULL), mMessage(NULL)
+								mTime(NULL), mMessage(NULL), mGroupIcon(NULL)
 {
 	LLUICtrlFactory::getInstance()->buildPanel(this, "panel_instant_message.xml");
 
 	LLIconCtrl* sys_msg_icon = getChild<LLIconCtrl>("sys_msg_icon");
+	mGroupIcon = getChild<LLGroupIconCtrl>("group_icon");
 	mAvatarIcon = getChild<LLAvatarIconCtrl>("avatar_icon");
 	mAvatarName = getChild<LLTextBox>("user_name");
 	mTime = getChild<LLTextBox>("time_box");
@@ -86,17 +90,26 @@ LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) :	LLToastPanel(p.notif
 	mAvatarID = p.avatar_id;
 	mNotification = p.notification;
 
+	mAvatarIcon->setVisible(FALSE);
+	mGroupIcon->setVisible(FALSE);
+	sys_msg_icon->setVisible(FALSE);
+
 	if(p.from == SYSTEM_FROM)
 	{
-		mAvatarIcon->setVisible(FALSE);
 		sys_msg_icon->setVisible(TRUE);
 	}
 	else
 	{
-		mAvatarIcon->setVisible(TRUE);
-		sys_msg_icon->setVisible(FALSE);
-
-		mAvatarIcon->setValue(p.avatar_id);
+		if(LLGroupActions::isInGroup(mSessionID))
+		{
+			mGroupIcon->setVisible(TRUE);
+			mGroupIcon->setValue(p.session_id);
+		}
+		else
+		{
+			mAvatarIcon->setVisible(TRUE);
+			mAvatarIcon->setValue(p.avatar_id);
+		}
 	}
 
 	S32 maxLinesCount;
@@ -128,11 +141,39 @@ BOOL LLToastIMPanel::handleMouseDown(S32 x, S32 y, MASK mask)
 BOOL LLToastIMPanel::handleToolTip(S32 x, S32 y, MASK mask)
 {
 	// It's not our direct child, so parentPointInView() doesn't work.
-	LLRect name_rect;
-	mAvatarName->localRectToOtherView(mAvatarName->getLocalRect(), &name_rect, this);
-	if (!name_rect.pointInRect(x, y))
-		return LLToastPanel::handleToolTip(x, y, mask);
+	LLRect ctrl_rect;
+
+	mAvatarName->localRectToOtherView(mAvatarName->getLocalRect(), &ctrl_rect, this);
+	if (ctrl_rect.pointInRect(x, y))
+	{
+		spawnNameToolTip();
+		return TRUE;
+	}
+
+	mGroupIcon->localRectToOtherView(mGroupIcon->getLocalRect(), &ctrl_rect, this);
+	if(mGroupIcon->getVisible() && ctrl_rect.pointInRect(x, y))
+	{
+		spawnGroupIconToolTip();
+		return TRUE;
+	}
+
+	return LLToastPanel::handleToolTip(x, y, mask);
+}
+
+void LLToastIMPanel::showInspector()
+{
+	if(LLGroupActions::isInGroup(mSessionID))
+	{
+		LLFloaterReg::showInstance("inspect_group", LLSD().with("group_id", mSessionID));
+	}
+	else
+	{
+		LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", mAvatarID));
+	}
+}
 
+void LLToastIMPanel::spawnNameToolTip()
+{
 	// Spawn at right side of the name textbox.
 	LLRect sticky_rect = mAvatarName->calcScreenRect();
 	S32 icon_x = llmin(sticky_rect.mLeft + mAvatarName->getTextPixelWidth() + 3, sticky_rect.mRight - 16);
@@ -149,10 +190,31 @@ BOOL LLToastIMPanel::handleToolTip(S32 x, S32 y, MASK mask)
 	params.sticky_rect(sticky_rect);
 
 	LLToolTipMgr::getInstance()->show(params);
-	return TRUE;
 }
 
-void LLToastIMPanel::showInspector()
+void LLToastIMPanel::spawnGroupIconToolTip()
 {
-	LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", mAvatarID));
+	// Spawn at right bottom side of group icon.
+	LLRect sticky_rect = mGroupIcon->calcScreenRect();
+	LLCoordGL pos(sticky_rect.mRight, sticky_rect.mBottom);
+
+	LLGroupData g_data;
+	if(!gAgent.getGroupData(mSessionID, g_data))
+	{
+		llwarns << "Error getting group data" << llendl;
+	}
+
+	LLInspector::Params params;
+	params.fillFrom(LLUICtrlFactory::instance().getDefaultParams<LLInspector>());
+	params.click_callback(boost::bind(&LLToastIMPanel::showInspector, this));
+	params.delay_time(0.100f);
+	params.image(LLUI::getUIImage("Info_Small"));
+	params.message(g_data.mName);
+	params.padding(3);
+	params.pos(pos);
+	params.max_width(300);
+
+	LLToolTipMgr::getInstance()->show(params);
 }
+
+// EOF
diff --git a/indra/newview/lltoastimpanel.h b/indra/newview/lltoastimpanel.h
index 154e6dae16b..444c0af1447 100644
--- a/indra/newview/lltoastimpanel.h
+++ b/indra/newview/lltoastimpanel.h
@@ -39,6 +39,7 @@
 #include "llbutton.h"
 #include "llavatariconctrl.h"
 
+class LLGroupIconCtrl;
 
 class LLToastIMPanel: public LLToastPanel 
 {
@@ -61,12 +62,17 @@ class LLToastIMPanel: public LLToastPanel
 	/*virtual*/ BOOL	handleToolTip(S32 x, S32 y, MASK mask);
 private:
 	void showInspector();
+
+	void spawnNameToolTip();
+	void spawnGroupIconToolTip();
+
 	static const S32 DEFAULT_MESSAGE_MAX_LINE_COUNT;
 
 	LLNotificationPtr	mNotification;
 	LLUUID				mSessionID;
 	LLUUID				mAvatarID;
 	LLAvatarIconCtrl*	mAvatarIcon;
+	LLGroupIconCtrl*	mGroupIcon;
 	LLTextBox*			mAvatarName;
 	LLTextBox*			mTime;
 	LLTextBox*			mMessage;
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 7204e574792..5a1bc32db0e 100644
--- a/indra/newview/skins/default/xui/en/panel_instant_message.xml
+++ b/indra/newview/skins/default/xui/en/panel_instant_message.xml
@@ -35,6 +35,16 @@
          name="avatar_icon"
          top="3"
          width="18" />
+        <group_icon
+         follows="right"
+         height="18"
+         default_icon_name="Generic_Group"
+         layout="topleft"
+         left="3"
+         mouse_opaque="false"
+         name="group_icon"
+         top="3"
+         width="18" />
         <!--<icon
          follows="right"
          height="20"
-- 
GitLab


From 3e76862aaa0852d5fd34e2321c69c67df41b5f67 Mon Sep 17 00:00:00 2001
From: Sergei Litovchuk <slitovchuk@productengine.com>
Date: Fri, 29 Jan 2010 20:43:55 +0200
Subject: [PATCH 310/521] Partial fix for normal (EXT-4722) Ability to fly in a
 parcel when flying is disabled in the About Land - Added forced flying off
 when entering a parcel with no rights to fly in it.

--HG--
branch : product-engine
---
 indra/newview/llviewerparcelmgr.cpp | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp
index 9d7ccd99c66..b85b42c7100 100644
--- a/indra/newview/llviewerparcelmgr.cpp
+++ b/indra/newview/llviewerparcelmgr.cpp
@@ -1591,6 +1591,14 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
 				instance->mTeleportInProgress = FALSE;
 				instance->mTeleportFinishedSignal(gAgent.getPositionGlobal());
 			}
+
+			// HACK: This makes agents drop from the sky if they enter a parcel
+			// which is set to no fly.
+			BOOL was_flying = gAgent.getFlying();
+			if (was_flying && !parcel->getAllowFly())
+			{
+				gAgent.setFlying(gAgent.canFly());
+			}
 		}
 	}
 
-- 
GitLab


From 1b5880a18ef82d79d8c60bcf2745baf80f3fa571 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 10:46:48 -0800
Subject: [PATCH 311/521] notifiaction_id -> notification_id ouch.

---
 indra/newview/llimfloater.cpp               | 4 ++--
 indra/newview/llnotificationhandlerutil.cpp | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index c2bcb1cdf9d..9e52d4c6c24 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -604,9 +604,9 @@ void LLIMFloater::updateMessages()
 			chat.mTimeStr = time;
 
 			// process offer notification
-			if (msg.has("notifiaction_id"))
+			if (msg.has("notification_id"))
 			{
-				chat.mNotifId = msg["notifiaction_id"].asUUID();
+				chat.mNotifId = msg["notification_id"].asUUID();
 			}
 			//process text message
 			else
diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp
index f9b3b7187ad..16218f6d535 100644
--- a/indra/newview/llnotificationhandlerutil.cpp
+++ b/indra/newview/llnotificationhandlerutil.cpp
@@ -248,7 +248,7 @@ void LLHandlerUtil::addNotifPanelToIM(const LLNotificationPtr& notification)
 	llassert_always(session != NULL);
 
 	LLSD offer;
-	offer["notifiaction_id"] = notification->getID();
+	offer["notification_id"] = notification->getID();
 	offer["from_id"] = notification->getPayload()["from_id"];
 	offer["from"] = name;
 	offer["time"] = LLLogChat::timestamp(true);
-- 
GitLab


From 6453d6d1ddc48f9e69ad45d6bba33fa9b2be76de Mon Sep 17 00:00:00 2001
From: Sergei Litovchuk <slitovchuk@productengine.com>
Date: Fri, 29 Jan 2010 20:49:54 +0200
Subject: [PATCH 312/521] Fixed low bug (EXT-2987) Parcel Characteristics icons
 aren't refreshed after changing restrictions - Added updating Parcel
 Characteristics icons in Location Input Control upon processing parcel
 properties.

--HG--
branch : product-engine
---
 indra/newview/lllocationinputctrl.cpp | 67 +++++++++++++++++++++++----
 indra/newview/lllocationinputctrl.h   |  3 ++
 2 files changed, 61 insertions(+), 9 deletions(-)

diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp
index 050cfcc3d92..0e93e28f2da 100644
--- a/indra/newview/lllocationinputctrl.cpp
+++ b/indra/newview/lllocationinputctrl.cpp
@@ -153,6 +153,23 @@ class LLRemoveLandmarkObserver : public LLInventoryObserver
 	LLLocationInputCtrl* mInput;
 };
 
+class LLParcelChangeObserver : public LLParcelObserver
+{
+public:
+	LLParcelChangeObserver(LLLocationInputCtrl* input) : mInput(input) {}
+
+private:
+	/*virtual*/ void changed()
+	{
+		if (mInput)
+		{
+			mInput->refreshParcelIcons();
+		}
+	}
+
+	LLLocationInputCtrl* mInput;
+};
+
 //============================================================================
 
 
@@ -335,7 +352,10 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p)
 	mAddLandmarkObserver	= new LLAddLandmarkObserver(this);
 	gInventory.addObserver(mRemoveLandmarkObserver);
 	gInventory.addObserver(mAddLandmarkObserver);
-	
+
+	mParcelChangeObserver = new LLParcelChangeObserver(this);
+	LLViewerParcelMgr::getInstance()->addObserver(mParcelChangeObserver);
+
 	mAddLandmarkTooltip = LLTrans::getString("LocationCtrlAddLandmarkTooltip");
 	mEditLandmarkTooltip = LLTrans::getString("LocationCtrlEditLandmarkTooltip");
 	getChild<LLView>("Location History")->setToolTip(LLTrans::getString("LocationCtrlComboBtnTooltip"));
@@ -349,6 +369,9 @@ LLLocationInputCtrl::~LLLocationInputCtrl()
 	delete mRemoveLandmarkObserver;
 	delete mAddLandmarkObserver;
 
+	LLViewerParcelMgr::getInstance()->removeObserver(mParcelChangeObserver);
+	delete mParcelChangeObserver;
+
 	mParcelMgrConnection.disconnect();
 	mLocationHistoryConnection.disconnect();
 }
@@ -673,15 +696,41 @@ void LLLocationInputCtrl::refreshParcelIcons()
 	if (show_properties)
 	{
 		LLViewerParcelMgr* vpm = LLViewerParcelMgr::getInstance();
+
+		LLViewerRegion* agent_region = gAgent.getRegion();
 		LLParcel* agent_parcel = vpm->getAgentParcel();
-		bool allow_buy      = vpm->canAgentBuyParcel( agent_parcel, false);
-		bool allow_voice	= vpm->allowAgentVoice();
-		bool allow_fly		= vpm->allowAgentFly();
-		bool allow_push		= vpm->allowAgentPush();
-		bool allow_build	= agent_parcel && agent_parcel->getAllowModify(); // true when anyone is allowed to build. See EXT-4610.
-		bool allow_scripts	= vpm->allowAgentScripts();
-		bool allow_damage	= vpm->allowAgentDamage();
-		
+		if (!agent_region || !agent_parcel)
+			return;
+
+		LLParcel* current_parcel;
+		LLViewerRegion* selection_region = vpm->getSelectionRegion();
+		LLParcel* selected_parcel = vpm->getParcelSelection()->getParcel();
+
+		// If agent is in selected parcel we use its properties because
+		// they are updated more often by LLViewerParcelMgr than agent parcel properties.
+		// See LLViewerParcelMgr::processParcelProperties().
+		// This is needed to reflect parcel restrictions changes without having to leave
+		// the parcel and then enter it again. See EXT-2987
+		if (selected_parcel && selected_parcel->getLocalID() == agent_parcel->getLocalID()
+				&& selection_region == agent_region)
+		{
+			current_parcel = selected_parcel;
+		}
+		else
+		{
+			current_parcel = agent_parcel;
+		}
+
+		bool allow_buy      = vpm->canAgentBuyParcel(current_parcel, false);
+		bool allow_voice	= agent_region->isVoiceEnabled() && current_parcel->getParcelFlagAllowVoice();
+		bool allow_fly		= !agent_region->getBlockFly() && current_parcel->getAllowFly();
+		bool allow_push		= !agent_region->getRestrictPushObject() && !current_parcel->getRestrictPushObject();
+		bool allow_build	= current_parcel->getAllowModify(); // true when anyone is allowed to build. See EXT-4610.
+		bool allow_scripts	= !(agent_region->getRegionFlags() & REGION_FLAGS_SKIP_SCRIPTS) &&
+							  !(agent_region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS) &&
+							  current_parcel->getAllowOtherScripts();
+		bool allow_damage	= agent_region->getAllowDamage() || current_parcel->getAllowDamage();
+
 		// Most icons are "block this ability"
 		mForSaleBtn->setVisible(allow_buy);
 		mParcelIcon[VOICE_ICON]->setVisible(   !allow_voice );
diff --git a/indra/newview/lllocationinputctrl.h b/indra/newview/lllocationinputctrl.h
index 607ccd4da62..a830b33f6f9 100644
--- a/indra/newview/lllocationinputctrl.h
+++ b/indra/newview/lllocationinputctrl.h
@@ -42,6 +42,7 @@ class LLLandmark;
 // internals
 class LLAddLandmarkObserver;
 class LLRemoveLandmarkObserver;
+class LLParcelChangeObserver;
 class LLMenuGL;
 class LLTeleportHistoryItem;
 
@@ -56,6 +57,7 @@ class LLLocationInputCtrl
 	LOG_CLASS(LLLocationInputCtrl);
 	friend class LLAddLandmarkObserver;
 	friend class LLRemoveLandmarkObserver;
+	friend class LLParcelChangeObserver;
 
 public:
 	struct Params 
@@ -164,6 +166,7 @@ class LLLocationInputCtrl
 
 	LLAddLandmarkObserver*		mAddLandmarkObserver;
 	LLRemoveLandmarkObserver*	mRemoveLandmarkObserver;
+	LLParcelChangeObserver*		mParcelChangeObserver;
 
 	boost::signals2::connection	mParcelMgrConnection;
 	boost::signals2::connection	mLocationHistoryConnection;
-- 
GitLab


From bc5cd7337f3b87d1805309cbd9e27f9d86fad100 Mon Sep 17 00:00:00 2001
From: Sergei Litovchuk <slitovchuk@productengine.com>
Date: Fri, 29 Jan 2010 20:51:17 +0200
Subject: [PATCH 313/521] No ticket, Fixed displaying parcel voice permission
 in Place Profile.

--HG--
branch : product-engine
---
 indra/newview/llpanelplaceprofile.cpp | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp
index 8d689b2c5e4..9b31ef23a26 100644
--- a/indra/newview/llpanelplaceprofile.cpp
+++ b/indra/newview/llpanelplaceprofile.cpp
@@ -341,7 +341,7 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
 	std::string off = getString("off");
 
 	// Processing parcel characteristics
-	if (parcel->getParcelFlagAllowVoice())
+	if (region->isVoiceEnabled() && parcel->getParcelFlagAllowVoice())
 	{
 		mVoiceIcon->setValue(icon_voice);
 		mVoiceText->setText(on);
@@ -385,9 +385,9 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
 		mBuildText->setText(off);
 	}
 
-	if((region->getRegionFlags() & REGION_FLAGS_SKIP_SCRIPTS) ||
-	   (region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS) ||
-	   !parcel->getAllowOtherScripts())
+	if ((region->getRegionFlags() & REGION_FLAGS_SKIP_SCRIPTS) ||
+	    (region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS) ||
+	    !parcel->getAllowOtherScripts())
 	{
 		mScriptsIcon->setValue(icon_scripts_no);
 		mScriptsText->setText(off);
-- 
GitLab


From fab60b8c05a89498bd8efeafdea8acfa5f94f06c Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 11:08:04 -0800
Subject: [PATCH 314/521] requred -> required

---
 indra/newview/llfavoritesbar.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
index 57e66194703..f5bb7774191 100644
--- a/indra/newview/llfavoritesbar.cpp
+++ b/indra/newview/llfavoritesbar.cpp
@@ -780,8 +780,8 @@ LLButton* LLFavoritesBarCtrl::createButton(const LLPointer<LLViewerInventoryItem
 	 * Empty space (or ...) is displaying instead of last symbols, even though the width of the button is enough.
 	 * Problem will gone, if we  stretch out the button. For that reason I have to put additional  20 pixels.
 	 */
-	int requred_width = mFont->getWidth(item->getName()) + 20;
-	int width = requred_width > def_button_width? def_button_width : requred_width;
+	int required_width = mFont->getWidth(item->getName()) + 20;
+	int width = required_width > def_button_width? def_button_width : required_width;
 	LLFavoriteLandmarkButton* fav_btn = NULL;
 
 	// do we have a place for next button + double buttonHGap + mChevronButton ? 
-- 
GitLab


From 0db7f3a783f3514f31a09025bff9ca86589a1ca0 Mon Sep 17 00:00:00 2001
From: Andrew Dyukov <adyukov@productengine.com>
Date: Fri, 29 Jan 2010 21:09:28 +0200
Subject: [PATCH 315/521] Fixed major bug  Bug EXT-4759 (Second incoming call
 notification doesn't appear if first call was canceled by caller).

- Bug was caused by simply closing invite floater when call becomes invalid, so pending invite wasn't removed from IM manager and later this caused failure of check on which floater is shown. Added clearPendingAgentListUpdates() and clearPendingInvitation() before closure.

--HG--
branch : product-engine
---
 indra/newview/llimview.cpp | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 80d27789347..b7d4db853eb 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -1733,6 +1733,9 @@ void LLIncomingCallDialog::onLifetimeExpired()
 	{
 		// close invitation if call is already not valid
 		mLifetimeTimer.stop();
+		LLUUID session_id = mPayload["session_id"].asUUID();
+		gIMMgr->clearPendingAgentListUpdates(session_id);
+		gIMMgr->clearPendingInvitation(session_id);
 		closeFloater();
 	}
 }
-- 
GitLab


From 2e2d65cd10a9b2664d3ce020ef7e7e4de3d6705a Mon Sep 17 00:00:00 2001
From: Vadim Savchuk <vsavchuk@productengine.com>
Date: Fri, 29 Jan 2010 22:11:01 +0200
Subject: [PATCH 316/521] Partial fix for EXT-4756 (Black text in sell land
 confirmation dialog). Changed the color to more readable yellow for now.

--HG--
branch : product-engine
---
 indra/newview/skins/default/colors.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml
index e2480479308..219b3dbeb62 100644
--- a/indra/newview/skins/default/colors.xml
+++ b/indra/newview/skins/default/colors.xml
@@ -97,7 +97,7 @@
      value="1 0.82 0.46 1" />
     <color
      name="AlertCautionTextColor"
-     reference="Black" />
+     reference="Yellow" />
     <color
      name="AgentLinkColor"
      reference="White" />
-- 
GitLab


From b3a0419493c9d3fcea4ca5ba89fdd311feccfec6 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 13:07:36 -0800
Subject: [PATCH 317/521] CID-350

Checker: UNINIT_CTOR
Function: LLDrawPoolAvatar::LLDrawPoolAvatar()
File: /indra/newview/lldrawpoolavatar.cpp

not a bug, just a dead member...
---
 indra/newview/lldrawpoolavatar.h | 2 --
 1 file changed, 2 deletions(-)

diff --git a/indra/newview/lldrawpoolavatar.h b/indra/newview/lldrawpoolavatar.h
index 6a2b7fc2187..b9479436199 100644
--- a/indra/newview/lldrawpoolavatar.h
+++ b/indra/newview/lldrawpoolavatar.h
@@ -39,8 +39,6 @@ class LLVOAvatar;
 
 class LLDrawPoolAvatar : public LLFacePool
 {
-protected:
-	S32					mNumFaces;
 public:
 	enum
 	{
-- 
GitLab


From 9c55d91f786eff48a27bf960e1f48f5369532e66 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 13:11:09 -0800
Subject: [PATCH 318/521] CID-349

Checker: UNINIT_CTOR
Function: LLDrawPoolWater::LLDrawPoolWater()
File: /indra/newview/lldrawpoolwater.cpp

just another dead member.
---
 indra/newview/lldrawpoolwater.h | 1 -
 1 file changed, 1 deletion(-)

diff --git a/indra/newview/lldrawpoolwater.h b/indra/newview/lldrawpoolwater.h
index 68a8172dd04..614f6452431 100644
--- a/indra/newview/lldrawpoolwater.h
+++ b/indra/newview/lldrawpoolwater.h
@@ -47,7 +47,6 @@ class LLDrawPoolWater: public LLFacePool
 	LLPointer<LLViewerTexture> mWaterImagep;
 	LLPointer<LLViewerTexture> mWaterNormp;
 
-	const LLWaterSurface *mWaterSurface;
 public:
 	static BOOL sSkipScreenCopy;
 	static BOOL sNeedsReflectionUpdate;
-- 
GitLab


From d74aff7869d45f3061026766bfbd2db942645ac9 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 13:13:37 -0800
Subject: [PATCH 319/521] CID-347

Checker: UNINIT_CTOR
Function: LLDrawPoolSky::LLDrawPoolSky()
File: /indra/newview/lldrawpoolsky.cpp
---
 indra/newview/lldrawpoolsky.cpp | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/indra/newview/lldrawpoolsky.cpp b/indra/newview/lldrawpoolsky.cpp
index 8428be194f5..0f761650533 100644
--- a/indra/newview/lldrawpoolsky.cpp
+++ b/indra/newview/lldrawpoolsky.cpp
@@ -48,8 +48,11 @@
 #include "pipeline.h"
 #include "llviewershadermgr.h"
 
-LLDrawPoolSky::LLDrawPoolSky() :
-	LLFacePool(POOL_SKY), mShader(NULL)
+LLDrawPoolSky::LLDrawPoolSky()
+:	LLFacePool(POOL_SKY),
+	
+	mSkyTex(NULL),
+	mShader(NULL)
 {
 }
 
@@ -132,6 +135,7 @@ void LLDrawPoolSky::renderSkyCubeFace(U8 side)
 		return;
 	}
 
+	llassert(mSkyTex);
 	mSkyTex[side].bindTexture(TRUE);
 	
 	face.renderIndexed();
-- 
GitLab


From b05ca33c4aa350d342dee6b03d1481fce0924a53 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 13:16:02 -0800
Subject: [PATCH 320/521] CID-346

Checker: UNINIT_CTOR
Function: LLFeatureManager::LLFeatureManager()
File: /indra/newview/llfeaturemanager.h
---
 indra/newview/llfeaturemanager.h | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llfeaturemanager.h b/indra/newview/llfeaturemanager.h
index 383963a41d8..dd218d428fa 100644
--- a/indra/newview/llfeaturemanager.h
+++ b/indra/newview/llfeaturemanager.h
@@ -99,8 +99,14 @@ class LLFeatureList
 class LLFeatureManager : public LLFeatureList, public LLSingleton<LLFeatureManager>
 {
 public:
-	LLFeatureManager() :
-		LLFeatureList("default"), mInited(FALSE), mTableVersion(0), mSafe(FALSE), mGPUClass(GPU_CLASS_UNKNOWN)
+	LLFeatureManager()
+	:	LLFeatureList("default"),
+
+		mInited(FALSE),
+		mTableVersion(0),
+		mSafe(FALSE),
+		mGPUClass(GPU_CLASS_UNKNOWN),
+		mGPUSupported(FALSE)
 	{
 	}
 	~LLFeatureManager() {cleanupFeatureTables();}
-- 
GitLab


From 5c01eca7dd9e14753829ed251735cfc89be25cb7 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 13:18:29 -0800
Subject: [PATCH 321/521] CID-345

Checker: UNINIT_CTOR
Function: LLConsole::LLConsole(const LLConsole::Params &)
File: /indra/llui/llconsole.cpp
---
 indra/llui/llconsole.cpp | 4 +++-
 indra/llui/llconsole.h   | 2 --
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/indra/llui/llconsole.cpp b/indra/llui/llconsole.cpp
index 59499f987b7..0237c80efa7 100644
--- a/indra/llui/llconsole.cpp
+++ b/indra/llui/llconsole.cpp
@@ -66,7 +66,9 @@ LLConsole::LLConsole(const LLConsole::Params& p)
 :	LLUICtrl(p),
 	LLFixedBuffer(p.max_lines),
 	mLinePersistTime(p.persist_time), // seconds
-	mFont(p.font)
+	mFont(p.font),
+	mConsoleWidth(0),
+	mConsoleHeight(0)
 {
 	if (p.font_size_index.isProvided())
 	{
diff --git a/indra/llui/llconsole.h b/indra/llui/llconsole.h
index 5800a82922a..4719950f280 100644
--- a/indra/llui/llconsole.h
+++ b/indra/llui/llconsole.h
@@ -150,8 +150,6 @@ class LLConsole : public LLFixedBuffer, public LLUICtrl
 	F32			mLinePersistTime; // Age at which to stop drawing.
 	F32			mFadeTime; // Age at which to start fading
 	const LLFontGL*	mFont;
-	S32			mLastBoxHeight;
-	S32			mLastBoxWidth;
 	S32			mConsoleWidth;
 	S32			mConsoleHeight;
 
-- 
GitLab


From df657d7488014b9fa008da6a5f4307a19fee855e Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 13:21:08 -0800
Subject: [PATCH 322/521] CID-344

Checker: UNINIT_CTOR
Function: LLDockControl::LLDockControl(LLView *, LLFloater *, const LLPointer<LLUIImage> &, LLDockControl::DocAt, boost::function<void (LLRectBase<int> &)>)
File: /indra/llui/lldockcontrol.cpp
---
 indra/llui/lldockcontrol.cpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/indra/llui/lldockcontrol.cpp b/indra/llui/lldockcontrol.cpp
index 0d8e54aa486..d836a5f4cd8 100644
--- a/indra/llui/lldockcontrol.cpp
+++ b/indra/llui/lldockcontrol.cpp
@@ -37,7 +37,11 @@
 
 LLDockControl::LLDockControl(LLView* dockWidget, LLFloater* dockableFloater,
 		const LLUIImagePtr& dockTongue, DocAt dockAt, get_allowed_rect_callback_t get_allowed_rect_callback) :
-		mDockWidget(dockWidget), mDockableFloater(dockableFloater), mDockTongue(dockTongue)
+		mDockWidget(dockWidget),
+		mDockableFloater(dockableFloater),
+		mDockTongue(dockTongue),
+		mDockTongueX(0),
+		mDockTongueY(0)
 {
 	mDockAt = dockAt;
 
-- 
GitLab


From 32d66e60fddb26d0736149e16b1b57f7aa186146 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 13:36:58 -0800
Subject: [PATCH 323/521] CID-342

Checker: UNINIT_CTOR
Function: LLNotification::LLNotification(LLUUID)
File: /indra/llui/llnotifications.h

'don't use this for anything real' code shouldn't exist. :)
---
 indra/llui/llnotifications.h | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h
index aeb4cebf1b4..44ff7894ac6 100644
--- a/indra/llui/llnotifications.h
+++ b/indra/llui/llnotifications.h
@@ -369,10 +369,6 @@ friend class LLNotifications;
 
 	LLNotification(const Params& p);
 
-	// this is just for making it easy to look things up in a set organized by UUID -- DON'T USE IT
-	// for anything real!
-	LLNotification(LLUUID uuid) : mId(uuid) {}
-
 	void cancel();
 
 	bool payloadContainsAll(const std::vector<std::string>& required_fields) const;
-- 
GitLab


From a07e40e70db8c9a4b90ff114c2bdca5a4ee6da83 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 13:53:20 -0800
Subject: [PATCH 324/521] CID-341

Checker: UNINIT_CTOR
Function: LLNotificationComparators::orderBy<const LLUUID &>::orderBy(boost::function<const LLUUID &(boost::shared_ptr<LLNotification>)>, LLNotificationComparators::e_direction)
File: /indra/llui/llnotifications.h
---
 indra/llui/llnotifications.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h
index 44ff7894ac6..7269e433254 100644
--- a/indra/llui/llnotifications.h
+++ b/indra/llui/llnotifications.h
@@ -617,7 +617,7 @@ namespace LLNotificationComparators
 	struct orderBy
 	{
 		typedef boost::function<T (LLNotificationPtr)> field_t;
-		orderBy(field_t field, EDirection = ORDER_INCREASING) : mField(field) {}
+        	orderBy(field_t field, EDirection direction = ORDER_INCREASING) : mField(field), mDirection(direction) {}
 		bool operator()(LLNotificationPtr lhs, LLNotificationPtr rhs)
 		{
 			if (mDirection == ORDER_DECREASING)
-- 
GitLab


From 5bf17543c2f920509ff2ffe713f4fff6ae10bdae Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 13:59:54 -0800
Subject: [PATCH 325/521] Backed out changeset 298497c8090c

Gosh, I don't know why this unused ctor actually matters, but it does. o.O
---
 indra/llui/llnotifications.h | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h
index 44ff7894ac6..aeb4cebf1b4 100644
--- a/indra/llui/llnotifications.h
+++ b/indra/llui/llnotifications.h
@@ -369,6 +369,10 @@ friend class LLNotifications;
 
 	LLNotification(const Params& p);
 
+	// this is just for making it easy to look things up in a set organized by UUID -- DON'T USE IT
+	// for anything real!
+	LLNotification(LLUUID uuid) : mId(uuid) {}
+
 	void cancel();
 
 	bool payloadContainsAll(const std::vector<std::string>& required_fields) const;
-- 
GitLab


From 93b35ad444bea4257b2bd80029e3d01acec1f497 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 14:02:59 -0800
Subject: [PATCH 326/521] CID-342 alternative fix

Checker: UNINIT_CTOR
Function: LLNotification::LLNotification(LLUUID)
File: /indra/llui/llnotifications.h
---
 indra/llui/llnotifications.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h
index cf76d00dcfb..d55e0f40432 100644
--- a/indra/llui/llnotifications.h
+++ b/indra/llui/llnotifications.h
@@ -371,7 +371,7 @@ friend class LLNotifications;
 
 	// this is just for making it easy to look things up in a set organized by UUID -- DON'T USE IT
 	// for anything real!
-	LLNotification(LLUUID uuid) : mId(uuid) {}
+ LLNotification(LLUUID uuid) : mId(uuid), mCancelled(false), mRespondedTo(false), mIgnored(false), mTemporaryResponder(false) {}
 
 	void cancel();
 
-- 
GitLab


From 97e59b20f0a7bed7119496c0848ccefa79cac5e1 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 14:10:29 -0800
Subject: [PATCH 327/521] CID-340

Checker: UNINIT_CTOR
Function: LLNotificationTemplate::LLNotificationTemplate()
File: /indra/llui/llnotifications.cpp
---
 indra/llui/llnotifications.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp
index a67094b8cea..035ca3f26b6 100644
--- a/indra/llui/llnotifications.cpp
+++ b/indra/llui/llnotifications.cpp
@@ -384,7 +384,8 @@ LLNotificationTemplate::LLNotificationTemplate() :
 	mExpireSeconds(0),
 	mExpireOption(-1),
 	mURLOption(-1),
-    mURLOpenExternally(-1),
+	mURLOpenExternally(-1),
+	mPersist(false),
 	mUnique(false),
 	mPriority(NOTIFICATION_PRIORITY_NORMAL)
 {
-- 
GitLab


From abd24efbf1182596db19e27ee4e9cacb28a4a9d7 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 14:19:19 -0800
Subject: [PATCH 328/521] CID-337

Checker: UNINIT_CTOR
Function: Translation::Translation()
File: /indra/llcharacter/llbvhloader.h
---
 indra/llcharacter/llbvhloader.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/llcharacter/llbvhloader.h b/indra/llcharacter/llbvhloader.h
index 85ab035e61c..38617bd6d4c 100644
--- a/indra/llcharacter/llbvhloader.h
+++ b/indra/llcharacter/llbvhloader.h
@@ -166,6 +166,7 @@ class Translation
 	Translation()
 	{
 		mIgnore = FALSE;
+		mIgnorePositions = FALSE;
 		mRelativePositionKey = FALSE;
 		mRelativeRotationKey = FALSE;
 		mPriorityModifier = 0;
-- 
GitLab


From 47a7262713b9576304546f5ab139d2ca67c6c8e7 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 14:29:28 -0800
Subject: [PATCH 329/521] CID-335

Checker: UNINIT_CTOR
Function: LLKeyframeWalkMotion::LLKeyframeWalkMotion(const LLUUID &)
File: /indra/llcharacter/llkeyframewalkmotion.cpp
---
 indra/llcharacter/llkeyframewalkmotion.cpp | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/indra/llcharacter/llkeyframewalkmotion.cpp b/indra/llcharacter/llkeyframewalkmotion.cpp
index b5817e5bde0..d18f924b558 100644
--- a/indra/llcharacter/llkeyframewalkmotion.cpp
+++ b/indra/llcharacter/llkeyframewalkmotion.cpp
@@ -58,11 +58,15 @@ const F32 MAX_ROLL = 0.6f;
 // LLKeyframeWalkMotion()
 // Class Constructor
 //-----------------------------------------------------------------------------
-LLKeyframeWalkMotion::LLKeyframeWalkMotion(const LLUUID &id) : LLKeyframeMotion(id)
+LLKeyframeWalkMotion::LLKeyframeWalkMotion(const LLUUID &id)
+  : LLKeyframeMotion(id),
+    
+    mCharacter(NULL),
+    mCyclePhase(0.0f),
+    mRealTimeLast(0.0f),
+    mAdjTimeLast(0.0f),
+    mDownFoot(0.0f)
 {
-	mRealTimeLast = 0.0f;
-	mAdjTimeLast = 0.0f;
-	mCharacter = NULL;
 }
 
 
-- 
GitLab


From 6f364cf7c5a0dc01e8bab4818b4762d258b62a90 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 14:30:22 -0800
Subject: [PATCH 330/521] CID-335 follow-up

---
 indra/llcharacter/llkeyframewalkmotion.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llcharacter/llkeyframewalkmotion.cpp b/indra/llcharacter/llkeyframewalkmotion.cpp
index d18f924b558..461309bee99 100644
--- a/indra/llcharacter/llkeyframewalkmotion.cpp
+++ b/indra/llcharacter/llkeyframewalkmotion.cpp
@@ -65,7 +65,7 @@ LLKeyframeWalkMotion::LLKeyframeWalkMotion(const LLUUID &id)
     mCyclePhase(0.0f),
     mRealTimeLast(0.0f),
     mAdjTimeLast(0.0f),
-    mDownFoot(0.0f)
+    mDownFoot(0)
 {
 }
 
-- 
GitLab


From 8e45dfe2c6ffff26417d7c43120e1f4a23ba3cac Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 14:31:39 -0800
Subject: [PATCH 331/521] CID-334

Checker: UNINIT_CTOR
Function: LLStateMachine::LLStateMachine()
File: /indra/llcharacter/llstatemachine.cpp
---
 indra/llcharacter/llstatemachine.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/llcharacter/llstatemachine.cpp b/indra/llcharacter/llstatemachine.cpp
index 73c69512112..f4eb59b0f2a 100644
--- a/indra/llcharacter/llstatemachine.cpp
+++ b/indra/llcharacter/llstatemachine.cpp
@@ -305,6 +305,7 @@ LLStateMachine::LLStateMachine()
 	// we haven't received a starting state yet
 	mCurrentState = NULL;
 	mLastState = NULL;
+	mLastTransition = NULL;
 	mStateDiagram = NULL;
 }
 
-- 
GitLab


From 0faac6bd1492575dc1f82c916cd9a8a8d6bdb797 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 14:32:35 -0800
Subject: [PATCH 332/521] CID-333

Checker: UNINIT_CTOR
Function: LLStateDiagram::LLStateDiagram()
File: /indra/llcharacter/llstatemachine.cpp
---
 indra/llcharacter/llstatemachine.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/llcharacter/llstatemachine.cpp b/indra/llcharacter/llstatemachine.cpp
index f4eb59b0f2a..e6fa4d79858 100644
--- a/indra/llcharacter/llstatemachine.cpp
+++ b/indra/llcharacter/llstatemachine.cpp
@@ -54,6 +54,7 @@ bool	operator!=(const LLUniqueID &a, const LLUniqueID &b)
 //-----------------------------------------------------------------------------
 LLStateDiagram::LLStateDiagram()
 {
+	mDefaultState = NULL;
 	mUseDefaultState = FALSE;
 }
 
-- 
GitLab


From 73e62c0cb59f1234545b9aa96914426849c376f0 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 14:34:21 -0800
Subject: [PATCH 333/521] CID-332

Checker: UNINIT_CTOR
Function: LLNotecard::LLNotecard(int)
File: /indra/llinventory/llnotecard.cpp
---
 indra/llinventory/llnotecard.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/indra/llinventory/llnotecard.cpp b/indra/llinventory/llnotecard.cpp
index 9e7e0437610..f6e41eecb47 100644
--- a/indra/llinventory/llnotecard.cpp
+++ b/indra/llinventory/llnotecard.cpp
@@ -35,7 +35,9 @@
 #include "llstreamtools.h"
 
 LLNotecard::LLNotecard(S32 max_text)
-: mMaxText(max_text)
+	: mMaxText(max_text),
+	  mVersion(0),
+	  mEmbeddedVersion(0)
 {
 }
 
-- 
GitLab


From 138c1fa86dea9ab3e96feae2bae1c757c39d50ea Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 14:37:18 -0800
Subject: [PATCH 334/521] CID-330

Checker: UNINIT_CTOR
Function: LLMaterialTable::LLMaterialTable()
File: /indra/llprimitive/llmaterialtable.cpp
---
 indra/llprimitive/llmaterialtable.cpp | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/indra/llprimitive/llmaterialtable.cpp b/indra/llprimitive/llmaterialtable.cpp
index 18787c47c57..774a58c8ac9 100644
--- a/indra/llprimitive/llmaterialtable.cpp
+++ b/indra/llprimitive/llmaterialtable.cpp
@@ -92,6 +92,9 @@ F32 const LLMaterialTable::DEFAULT_FRICTION = 0.5f;
 F32 const LLMaterialTable::DEFAULT_RESTITUTION = 0.4f;
 
 LLMaterialTable::LLMaterialTable()
+	: mCollisionSoundMatrix(NULL),
+	  mSlidingSoundMatrix(NULL),
+	  mRollingSoundMatrix(NULL)
 {
 }
 
-- 
GitLab


From f83ca2abd654ac632a869a7c010fbcb18120ee9f Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 14:41:39 -0800
Subject: [PATCH 335/521] CID-329

Checker: UNINIT_CTOR
Function: LLMaterialInfo::LLMaterialInfo(unsigned char, const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&, const LLUUID &)
File: /indra/llprimitive/llmaterialtable.h
---
 indra/llprimitive/llmaterialtable.h | 83 +++++++++++++++--------------
 1 file changed, 44 insertions(+), 39 deletions(-)

diff --git a/indra/llprimitive/llmaterialtable.h b/indra/llprimitive/llmaterialtable.h
index 2c0b046fa71..77f29a8e06c 100644
--- a/indra/llprimitive/llmaterialtable.h
+++ b/indra/llprimitive/llmaterialtable.h
@@ -38,6 +38,8 @@
 
 #include <list>
 
+class LLMaterialInfo;
+
 const U32 LLMATERIAL_INFO_NAME_LENGTH = 256;
 
 // We've moved toward more reasonable mass values for the Havok4 engine.
@@ -64,45 +66,6 @@ const F32 LEGACY_DEFAULT_OBJECT_DENSITY = 10.0f;
 const F32 DEFAULT_AVATAR_DENSITY = 445.3f;		// was 444.24f;
 
 
-class LLMaterialInfo
-{
-public:
-	U8		    mMCode;
-	std::string	mName;
-	LLUUID		mDefaultTextureID;
-	LLUUID		mShatterSoundID;
-	F32         mDensity;           // kg/m^3
-	F32         mFriction;
-	F32         mRestitution;
-
-	// damage and energy constants
-	F32			mHPModifier;		// modifier on mass based HP total
-	F32			mDamageModifier;	// modifier on KE based damage
-	F32			mEPModifier;		// modifier on mass based EP total
-
-	LLMaterialInfo(U8 mcode, const std::string& name, const LLUUID &uuid)
-	{
-		init(mcode,name,uuid);
-	};
-
-	void init(U8 mcode, const std::string& name, const LLUUID &uuid)
-	{
-		mDensity = 1000.f;             // default to 1000.0 (water)
-		mHPModifier = 1.f;
-		mDamageModifier = 1.f;
-		mEPModifier = 1.f;
-
-		mMCode = mcode;
-		mName = name;
-		mDefaultTextureID = uuid;		
-	};
-
-	~LLMaterialInfo()
-	{
-	};
-
-};
-
 class LLMaterialTable
 {
 public:
@@ -185,5 +148,47 @@ class LLMaterialTable
 	static LLMaterialTable basic;
 };
 
+
+class LLMaterialInfo
+{
+public:
+	U8		    mMCode;
+	std::string	mName;
+	LLUUID		mDefaultTextureID;
+	LLUUID		mShatterSoundID;
+	F32         mDensity;           // kg/m^3
+	F32         mFriction;
+	F32         mRestitution;
+
+	// damage and energy constants
+	F32			mHPModifier;		// modifier on mass based HP total
+	F32			mDamageModifier;	// modifier on KE based damage
+	F32			mEPModifier;		// modifier on mass based EP total
+
+	LLMaterialInfo(U8 mcode, const std::string& name, const LLUUID &uuid)
+	{
+		init(mcode,name,uuid);
+	};
+
+	void init(U8 mcode, const std::string& name, const LLUUID &uuid)
+	{
+		mDensity = 1000.f;             // default to 1000.0 (water)
+		mFriction = LLMaterialTable::DEFAULT_FRICTION;
+		mRestitution = LLMaterialTable::DEFAULT_RESTITUTION;
+		mHPModifier = 1.f;
+		mDamageModifier = 1.f;
+		mEPModifier = 1.f;
+
+		mMCode = mcode;
+		mName = name;
+		mDefaultTextureID = uuid;		
+	};
+
+	~LLMaterialInfo()
+	{
+	};
+
+};
+
 #endif
 
-- 
GitLab


From d477b83325822989e0c4ad70fbee3797937215b7 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 14:43:46 -0800
Subject: [PATCH 336/521] CID-328

Checker: UNINIT_CTOR
Function: LLAgent::LLAgent()
File: /indra/newview/tests/llviewerhelputil_test.cpp
---
 indra/newview/tests/llviewerhelputil_test.cpp | 2 --
 1 file changed, 2 deletions(-)

diff --git a/indra/newview/tests/llviewerhelputil_test.cpp b/indra/newview/tests/llviewerhelputil_test.cpp
index 297d98ad8d2..dd61ac6ae57 100644
--- a/indra/newview/tests/llviewerhelputil_test.cpp
+++ b/indra/newview/tests/llviewerhelputil_test.cpp
@@ -87,8 +87,6 @@ class LLAgent
 	__attribute__ ((noinline))
 #endif
 	BOOL isGodlike() const { return FALSE; }
-private:
-	int dummy;
 };
 LLAgent gAgent;
 
-- 
GitLab


From 68401771cd3ee60727e561a9576bda63a4e66637 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 14:53:16 -0800
Subject: [PATCH 337/521] CID-325

Checker: UNINIT_CTOR
Function: LLNotificationForm::LLNotificationForm(const LLSD &)
File: /indra/llui/llnotifications.cpp
---
 indra/llui/llnotifications.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp
index 035ca3f26b6..5816cef6aff 100644
--- a/indra/llui/llnotifications.cpp
+++ b/indra/llui/llnotifications.cpp
@@ -283,6 +283,7 @@ LLNotificationForm::LLNotificationForm(const std::string& name, const LLXMLNodeP
 }
 
 LLNotificationForm::LLNotificationForm(const LLSD& sd)
+	: mIgnore(IGNORE_NO)
 {
 	if (sd.isArray())
 	{
-- 
GitLab


From efe4ed283be8ac0861c38ebffc2637cd9293f267 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 14:54:57 -0800
Subject: [PATCH 338/521] CID-322

Checker: UNINIT_CTOR
Function: LLInitParam::BaseBlock::BaseBlock()
File: /indra/llxuixml/llinitparam.cpp
---
 indra/llxuixml/llinitparam.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/indra/llxuixml/llinitparam.cpp b/indra/llxuixml/llinitparam.cpp
index 4c050844f86..d908c85da64 100644
--- a/indra/llxuixml/llinitparam.cpp
+++ b/indra/llxuixml/llinitparam.cpp
@@ -85,7 +85,8 @@ namespace LLInitParam
 	//
 	BaseBlock::BaseBlock()
 	:	mLastChangedParam(0),
-		mChangeVersion(0)
+		mChangeVersion(0),
+		mBlockDescriptor(NULL)
 	{}
 
 	BaseBlock::~BaseBlock()
-- 
GitLab


From 8f39cd1bc929c517e49055e69fc14a99e9158bc8 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 14:56:29 -0800
Subject: [PATCH 339/521] CID-321

Checker: UNINIT_CTOR
Function: LLInitParam::ParamDescriptor::ParamDescriptor(...)
---
 indra/llxuixml/llinitparam.h | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/indra/llxuixml/llinitparam.h b/indra/llxuixml/llinitparam.h
index 7e1e4a3d218..bdc6d146e61 100644
--- a/indra/llxuixml/llinitparam.h
+++ b/indra/llxuixml/llinitparam.h
@@ -321,13 +321,13 @@ namespace LLInitParam
 		typedef bool(*validation_func_t)(const Param*);
 
 		ParamDescriptor(param_handle_t p, 
-						merge_func_t merge_func, 
-						deserialize_func_t deserialize_func, 
-						serialize_func_t serialize_func,
-						validation_func_t validation_func,
-						inspect_func_t inspect_func,
-						S32 min_count,
-						S32 max_count)
+				merge_func_t merge_func, 
+				deserialize_func_t deserialize_func, 
+				serialize_func_t serialize_func,
+				validation_func_t validation_func,
+				inspect_func_t inspect_func,
+				S32 min_count,
+				S32 max_count)
 		:	mParamHandle(p),
 			mMergeFunc(merge_func),
 			mDeserializeFunc(deserialize_func),
@@ -336,6 +336,7 @@ namespace LLInitParam
 			mInspectFunc(inspect_func),
 			mMinCount(min_count),
 			mMaxCount(max_count),
+			mGeneration(0),
 			mNumRefs(0)
 		{}
 
-- 
GitLab


From a8dd137a8de5915477ddc65cf1d5a508c85b745d Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 14:58:13 -0800
Subject: [PATCH 340/521] CID-320

Checker: UNINIT_CTOR
Function: LLInitParam::BlockDescriptor::BlockDescriptor()
File: /indra/llxuixml/llinitparam.h
---
 indra/llxuixml/llinitparam.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/indra/llxuixml/llinitparam.h b/indra/llxuixml/llinitparam.h
index bdc6d146e61..a84e47f9981 100644
--- a/indra/llxuixml/llinitparam.h
+++ b/indra/llxuixml/llinitparam.h
@@ -372,7 +372,8 @@ namespace LLInitParam
 	public:
 		BlockDescriptor()
 		:	mMaxParamOffset(0),
-			mInitializationState(UNINITIALIZED)
+			mInitializationState(UNINITIALIZED),
+			mCurrentBlockPtr(NULL)
 		{}
 
 		typedef enum e_initialization_state
-- 
GitLab


From fd5af776d91cb102c49dcdfef24935bf8280349c Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 15:00:29 -0800
Subject: [PATCH 341/521] CID-319

Checker: UNINIT_CTOR
Function: LLViewerLogin::LLViewerLogin()
File: /indra/newview/tests/lllogininstance_test.cpp
---
 indra/newview/tests/lllogininstance_test.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/indra/newview/tests/lllogininstance_test.cpp b/indra/newview/tests/lllogininstance_test.cpp
index 7b28a3b72c3..f7ac5361c59 100644
--- a/indra/newview/tests/lllogininstance_test.cpp
+++ b/indra/newview/tests/lllogininstance_test.cpp
@@ -56,9 +56,9 @@ void LLLogin::disconnect()
 
 //-----------------------------------------------------------------------------
 #include "../llviewernetwork.h"
-unsigned char gMACAddress[MAC_ADDRESS_BYTES] = {'1','2','3','4','5','6'};		/* Flawfinder: ignore */
+unsigned char gMACAddress[MAC_ADDRESS_BYTES] = {'1','2','3','4','5','6'};
 
-LLViewerLogin::LLViewerLogin() {}
+LLViewerLogin::LLViewerLogin() : mGridChoice(GRID_INFO_NONE) {}
 LLViewerLogin::~LLViewerLogin() {}
 void LLViewerLogin::getLoginURIs(std::vector<std::string>& uris) const 
 {
-- 
GitLab


From ee82ed694c85330d88712e92ee5d28685144f680 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 15:02:32 -0800
Subject: [PATCH 342/521] CID-317

Checker: UNINIT_CTOR
Function: LLCacheNameEntry::LLCacheNameEntry()
File: /indra/llmessage/llcachename.cpp
---
 indra/llmessage/llcachename.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/indra/llmessage/llcachename.cpp b/indra/llmessage/llcachename.cpp
index dbec2816c84..9363b3a8d55 100644
--- a/indra/llmessage/llcachename.cpp
+++ b/indra/llmessage/llcachename.cpp
@@ -81,6 +81,8 @@ class LLCacheNameEntry
 };
 
 LLCacheNameEntry::LLCacheNameEntry()
+	: mIsGroup(false),
+	  mCreateTime(0)
 {
 }
 
-- 
GitLab


From 86d07360f6eb58dda55c3673c863b8c9701b3d32 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 15:09:19 -0800
Subject: [PATCH 343/521] CID-316

Checker: UNINIT_CTOR
Function: LLHTTPAssetRequest::LLHTTPAssetRequest(LLHTTPAssetStorage *, const LLUUID &, LLAssetType::EType, LLAssetStorage::ERequestType, const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&, void *)
File: /indra/llmessage/llhttpassetstorage.cpp
---
 indra/llmessage/llhttpassetstorage.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/indra/llmessage/llhttpassetstorage.cpp b/indra/llmessage/llhttpassetstorage.cpp
index 49dbdbd56d4..1980735bbb7 100644
--- a/indra/llmessage/llhttpassetstorage.cpp
+++ b/indra/llmessage/llhttpassetstorage.cpp
@@ -126,8 +126,9 @@ LLHTTPAssetRequest::LLHTTPAssetRequest(LLHTTPAssetStorage *asp,
 						const std::string& url, 
 						CURLM *curl_multi)
 	: LLAssetRequest(uuid, type),
-	mZInitialized(false)
+	  mZInitialized(false)
 {
+	memset(&mZStream, 0, sizeof(mZStream)); // we'll initialize this later, but for now zero the whole C-style struct to avoid debug/coverity noise
 	mAssetStoragep = asp;
 	mCurlHandle = NULL;
 	mCurlMultiHandle = curl_multi;
-- 
GitLab


From 3064b556ef56ffceda2c11217ac635ee18559751 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 15:11:32 -0800
Subject: [PATCH 344/521] CID-315

Checker: UNINIT_CTOR
Function: LLIMInfo::LLIMInfo()
File: /indra/llmessage/llinstantmessage.cpp
---
 indra/llmessage/llinstantmessage.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/indra/llmessage/llinstantmessage.cpp b/indra/llmessage/llinstantmessage.cpp
index 3da41939fae..a9e1ee77efe 100644
--- a/indra/llmessage/llinstantmessage.cpp
+++ b/indra/llmessage/llinstantmessage.cpp
@@ -68,9 +68,11 @@ const S32 IM_TTL = 1;
  * LLIMInfo
  */
 LLIMInfo::LLIMInfo() :
+	mFromGroup(FALSE),
 	mParentEstateID(0),
 	mOffline(0),
 	mViewerThinksToIsOnline(false),
+	mIMType(IM_NOTHING_SPECIAL),
 	mTimeStamp(0),
 	mSource(IM_FROM_SIM),
 	mTTL(IM_TTL)
-- 
GitLab


From c99025f68f5a1433488b67915070056055f325fe Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 15:13:06 -0800
Subject: [PATCH 345/521] CID-314

Checker: UNINIT_CTOR
Function: LLHTTPResponseHeader::LLHTTPResponseHeader()
File: /indra/llmessage/lliohttpserver.cpp
---
 indra/llmessage/lliohttpserver.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llmessage/lliohttpserver.cpp b/indra/llmessage/lliohttpserver.cpp
index 97134bd336c..3b1ff414bce 100644
--- a/indra/llmessage/lliohttpserver.cpp
+++ b/indra/llmessage/lliohttpserver.cpp
@@ -403,7 +403,7 @@ void LLHTTPPipe::unlockChain()
 class LLHTTPResponseHeader : public LLIOPipe
 {
 public:
-	LLHTTPResponseHeader() {}
+	LLHTTPResponseHeader() : mCode(0) {}
 	virtual ~LLHTTPResponseHeader() {}
 
 protected:
-- 
GitLab


From 54cc8274b07a66f412115aae92b18428670889eb Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 15:14:33 -0800
Subject: [PATCH 346/521] CID-313

Checker: UNINIT_CTOR
Function: LLHTTPPipe::LLHTTPPipe(const LLHTTPNode &)
File: /indra/llmessage/lliohttpserver.cpp
---
 indra/llmessage/lliohttpserver.cpp | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/indra/llmessage/lliohttpserver.cpp b/indra/llmessage/lliohttpserver.cpp
index 3b1ff414bce..d6b672ef5cb 100644
--- a/indra/llmessage/lliohttpserver.cpp
+++ b/indra/llmessage/lliohttpserver.cpp
@@ -74,7 +74,12 @@ class LLHTTPPipe : public LLIOPipe
 {
 public:
 	LLHTTPPipe(const LLHTTPNode& node)
-		: mNode(node), mResponse(NULL), mState(STATE_INVOKE), mChainLock(0), mStatusCode(0)
+		: mNode(node),
+		  mResponse(NULL),
+		  mState(STATE_INVOKE),
+		  mChainLock(0),
+		  mLockedPump(NULL),
+		  mStatusCode(0)
 		{ }
 	virtual ~LLHTTPPipe()
 	{
-- 
GitLab


From 68304cbd02442589c28458e0e2574d3a31aa1282 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 15:15:52 -0800
Subject: [PATCH 347/521] CID-312

Checker: UNINIT_CTOR
Function: LLHTTPPipe::Response::Response()
File: /indra/llmessage/lliohttpserver.cpp
---
 indra/llmessage/lliohttpserver.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llmessage/lliohttpserver.cpp b/indra/llmessage/lliohttpserver.cpp
index d6b672ef5cb..27530fbfe10 100644
--- a/indra/llmessage/lliohttpserver.cpp
+++ b/indra/llmessage/lliohttpserver.cpp
@@ -116,7 +116,7 @@ class LLHTTPPipe : public LLIOPipe
 		void nullPipe();
 
 	private:
-		Response() {;} // Must be accessed through LLPointer.
+		Response() : mPipe(NULL) {} // Must be accessed through LLPointer.
 		LLHTTPPipe* mPipe;
 	};
 	friend class Response;
-- 
GitLab


From bdbb42c0f6c1f2a8afafca58435446e4e3cc37a2 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 15:16:59 -0800
Subject: [PATCH 348/521] CID-311

Checker: UNINIT_CTOR
Function: LLXfer::LLXfer(int)
File: /indra/llmessage/llxfer.cpp
---
 indra/llmessage/llxfer.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/llmessage/llxfer.cpp b/indra/llmessage/llxfer.cpp
index 8404f6519d1..7aa833ee327 100644
--- a/indra/llmessage/llxfer.cpp
+++ b/indra/llmessage/llxfer.cpp
@@ -74,6 +74,7 @@ void LLXfer::init (S32 chunk_size)
 	
 	mCallback = NULL;
 	mCallbackDataHandle = NULL;
+	mCallbackResult = 0;
 
 	mBufferContainsEOF = FALSE;
 	mBuffer = NULL;
-- 
GitLab


From ce8e2fc322737e4afa56451ed13611c1c4b9dd45 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 15:19:56 -0800
Subject: [PATCH 349/521] CID-310

Checker: UNINIT_CTOR
Function: LLSimpleResponse::LLSimpleResponse()
File: /indra/llmessage/llhttpnode.h
---
 indra/llmessage/llhttpnode.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llmessage/llhttpnode.h b/indra/llmessage/llhttpnode.h
index 915aacb7ccb..8212f58653f 100644
--- a/indra/llmessage/llhttpnode.h
+++ b/indra/llmessage/llhttpnode.h
@@ -305,7 +305,7 @@ class LLSimpleResponse : public LLHTTPNode::Response
 	~LLSimpleResponse();
 
 private:
-	LLSimpleResponse() {;} // Must be accessed through LLPointer.
+        LLSimpleResponse() : mCode(0) {} // Must be accessed through LLPointer.
 };
 
 std::ostream& operator<<(std::ostream& out, const LLSimpleResponse& resp);
-- 
GitLab


From f4c0a5b042087214acc868783d4c98753070de5b Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 15:30:41 -0800
Subject: [PATCH 350/521] partial appeasement for CID-309

only this piece really matters.  a bit.


Checker: UNINIT_CTOR
Function: LLMessageSystem::LLMessageSystem(const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&, unsigned int, int, int, int, bool, float, float)
File: /indra/llmessage/message.cpp
---
 indra/llmessage/message.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/indra/llmessage/message.cpp b/indra/llmessage/message.cpp
index e56d818d652..916006bc2d5 100644
--- a/indra/llmessage/message.cpp
+++ b/indra/llmessage/message.cpp
@@ -253,6 +253,8 @@ LLMessageSystem::LLMessageSystem(const std::string& filename, U32 port,
 {
 	init();
 
+	mSendSize = 0;
+
 	mSystemVersionMajor = version_major;
 	mSystemVersionMinor = version_minor;
 	mSystemVersionPatch = version_patch;
@@ -323,6 +325,8 @@ LLMessageSystem::LLMessageSystem(const std::string& filename, U32 port,
 	mMaxMessageTime   = 1.f;
 
 	mTrueReceiveSize = 0;
+
+	mReceiveTime = 0.f;
 }
 
 
-- 
GitLab


From 641f292a5ada637da3729c77ebfccd6b7edab538 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 15:31:56 -0800
Subject: [PATCH 351/521] CID-308

Checker: UNINIT_CTOR
Function: LLPartSysCompressedPacket::LLPartSysCompressedPacket()
File: /indra/llmessage/partsyspacket.cpp
---
 indra/llmessage/partsyspacket.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/indra/llmessage/partsyspacket.cpp b/indra/llmessage/partsyspacket.cpp
index cfb3572d84b..2f9e59accbe 100644
--- a/indra/llmessage/partsyspacket.cpp
+++ b/indra/llmessage/partsyspacket.cpp
@@ -144,6 +144,8 @@ LLPartSysCompressedPacket::LLPartSysCompressedPacket()
 		mData[i] = '\0';
 	}
 
+	mNumBytes = 0;
+
 	gSetInitDataDefaults(&mDefaults);
 }
 
-- 
GitLab


From 749eade1cb714728b7a98afdd94482603e121ea3 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 15:34:06 -0800
Subject: [PATCH 352/521] CID-307

Checker: UNINIT_CTOR
Function: LLQueryResponder::LLQueryResponder()
File: /indra/llmessage/llares.cpp
---
 indra/llmessage/llares.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/indra/llmessage/llares.cpp b/indra/llmessage/llares.cpp
index 104629c157d..52edfc86b9c 100644
--- a/indra/llmessage/llares.cpp
+++ b/indra/llmessage/llares.cpp
@@ -175,7 +175,8 @@ void LLAres::rewriteURI(const std::string &uri, UriRewriteResponder *resp)
 
 LLQueryResponder::LLQueryResponder()
 	: LLAres::QueryResponder(),
-	  mResult(ARES_ENODATA)
+	  mResult(ARES_ENODATA),
+	  mType(RES_INVALID)
 {
 }
 
-- 
GitLab


From 1ce9515685408241495d7c6929bb37cb694d9006 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 15:35:36 -0800
Subject: [PATCH 353/521] CID-306

Checker: UNINIT_CTOR
Function: LLAddrRecord::LLAddrRecord(LLResType, const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&, unsigned int)
File: /indra/llmessage/llares.cpp
---
 indra/llmessage/llares.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/indra/llmessage/llares.cpp b/indra/llmessage/llares.cpp
index 52edfc86b9c..b29eb300fc8 100644
--- a/indra/llmessage/llares.cpp
+++ b/indra/llmessage/llares.cpp
@@ -642,8 +642,10 @@ LLPtrRecord::LLPtrRecord(const std::string &name, unsigned ttl)
 }
 
 LLAddrRecord::LLAddrRecord(LLResType type, const std::string &name,
-						   unsigned ttl)
-	: LLDnsRecord(type, name, ttl)
+			   unsigned ttl)
+	: LLDnsRecord(type, name, ttl),
+
+	  mSize(0)
 {
 }
 
-- 
GitLab


From a09b94eff726f2390fc9300883cba7cd429af5d3 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 15:37:28 -0800
Subject: [PATCH 354/521] CID-305

Checker: UNINIT_CTOR
Function: LLSrvRecord::LLSrvRecord(const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&, unsigned int)
File: /indra/llmessage/llares.cpp
---
 indra/llmessage/llares.cpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/indra/llmessage/llares.cpp b/indra/llmessage/llares.cpp
index b29eb300fc8..00e77d20e9d 100644
--- a/indra/llmessage/llares.cpp
+++ b/indra/llmessage/llares.cpp
@@ -704,7 +704,11 @@ int LLAaaaRecord::parse(const char *buf, size_t len, const char *pos,
 }
 
 LLSrvRecord::LLSrvRecord(const std::string &name, unsigned ttl)
-	: LLHostRecord(RES_SRV, name, ttl)
+	: LLHostRecord(RES_SRV, name, ttl),
+
+	  mPriority(0),
+	  mWeight(0),
+	  mPort(0)
 {
 }
 
-- 
GitLab


From a65a0c4cfb41fd3e4132761c3633ce58050523cc Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 15:51:24 -0800
Subject: [PATCH 355/521] CID-300

Checker: UNINIT_CTOR
Function: LLJoint::LLJoint(const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&, LLJoint*)
File: /indra/llcharacter/lljoint.cpp
---
 indra/llcharacter/lljoint.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/llcharacter/lljoint.cpp b/indra/llcharacter/lljoint.cpp
index 37afcb7cda9..5c492140512 100644
--- a/indra/llcharacter/lljoint.cpp
+++ b/indra/llcharacter/lljoint.cpp
@@ -70,6 +70,7 @@ LLJoint::LLJoint(const std::string &name, LLJoint *parent)
 	mXform.setScaleChildOffset(TRUE);
 	mXform.setScale(LLVector3(1.0f, 1.0f, 1.0f));
 	mDirtyFlags = MATRIX_DIRTY | ROTATION_DIRTY | POSITION_DIRTY;
+	mUpdateXform = FALSE;
 	mJointNum = 0;
 
 	setName(name);
-- 
GitLab


From 4cdb84d6c4302357a52ae5399a2ff9d998dc5779 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 15:53:14 -0800
Subject: [PATCH 356/521] CID-299

Checker: UNINIT_CTOR
Function: LLUIColor::LLUIColor()
File: /indra/llui/tests/llurlmatch_test.cpp
---
 indra/llui/tests/llurlmatch_test.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/llui/tests/llurlmatch_test.cpp b/indra/llui/tests/llurlmatch_test.cpp
index f9dfee931ba..24a32de2681 100644
--- a/indra/llui/tests/llurlmatch_test.cpp
+++ b/indra/llui/tests/llurlmatch_test.cpp
@@ -25,6 +25,7 @@
 
 // link seam
 LLUIColor::LLUIColor()
+	: mColorPtr(NULL)
 {}
 
 namespace tut
-- 
GitLab


From ccbf6088b7e383d7da8df40429b05fdb2c7523f6 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 15:54:24 -0800
Subject: [PATCH 357/521] CID-299

Checker: UNINIT_CTOR
Function: LLUIColor::LLUIColor()
File: /indra/llui/tests/llurlentry_test.cpp
---
 indra/llui/tests/llurlentry_test.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llui/tests/llurlentry_test.cpp b/indra/llui/tests/llurlentry_test.cpp
index 6fec1d3e10d..bc97cf3df2a 100644
--- a/indra/llui/tests/llurlentry_test.cpp
+++ b/indra/llui/tests/llurlentry_test.cpp
@@ -33,7 +33,7 @@ LLUIColor LLUIColorTable::getColor(const std::string& name, const LLColor4& defa
 	return LLUIColor();
 }
 
-LLUIColor::LLUIColor() {}
+LLUIColor::LLUIColor() : mColorPtr(NULL) {}
 
 namespace tut
 {
-- 
GitLab


From e5e654ac5a58512c1c14b06d28a81882926e4e46 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 15:57:33 -0800
Subject: [PATCH 358/521] CID-298

Checker: UNINIT_CTOR
Function: LLMsgData::LLMsgData(const char *)
File: /indra/llmessage/llmessagetemplate.h
---
 indra/llmessage/llmessagetemplate.h | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/indra/llmessage/llmessagetemplate.h b/indra/llmessage/llmessagetemplate.h
index d7f02ebd856..8abc0aaab24 100644
--- a/indra/llmessage/llmessagetemplate.h
+++ b/indra/llmessage/llmessagetemplate.h
@@ -82,7 +82,7 @@ class LLMsgVarData
 class LLMsgBlkData
 {
 public:
-	LLMsgBlkData(const char *name, S32 blocknum) : mOffset(-1), mBlockNumber(blocknum), mTotalSize(-1) 
+        LLMsgBlkData(const char *name, S32 blocknum) : mBlockNumber(blocknum), mTotalSize(-1) 
 	{ 
 		mName = (char *)name; 
 	}
@@ -108,7 +108,6 @@ class LLMsgBlkData
 		temp->addData(data, size, type, data_size);
 	}
 
-	S32									mOffset;
 	S32									mBlockNumber;
 	typedef LLDynamicArrayIndexed<LLMsgVarData, const char *, 8> msg_var_data_map_t;
 	msg_var_data_map_t					mMemberVarData;
@@ -136,7 +135,6 @@ class LLMsgData
 	void addDataFast(char *blockname, char *varname, const void *data, S32 size, EMsgVariableType type, S32 data_size = -1);
 
 public:
-	S32									mOffset;
 	typedef std::map<char*, LLMsgBlkData*> msg_blk_data_map_t;
 	msg_blk_data_map_t					mMemberBlocks;
 	char								*mName;
-- 
GitLab


From 525569825f38a5d601c7151d46a638f31bf0658f Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 15:58:45 -0800
Subject: [PATCH 359/521] CID-297

Checker: UNINIT_CTOR
Function: LLFontFreetype::LLFontFreetype()
File: /indra/llrender/llfontfreetype.cpp
---
 indra/llrender/llfontfreetype.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/llrender/llfontfreetype.cpp b/indra/llrender/llfontfreetype.cpp
index 786dc64452a..9f7f3b2c671 100644
--- a/indra/llrender/llfontfreetype.cpp
+++ b/indra/llrender/llfontfreetype.cpp
@@ -112,6 +112,7 @@ LLFontFreetype::LLFontFreetype()
 	mFTFace(NULL),
 	mRenderGlyphCount(0),
 	mAddGlyphCount(0),
+	mStyle(0),
 	mPointSize(0)
 {
 }
-- 
GitLab


From 682f8afcc073b62fed64a3fd2adc5f65793e1f3e Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 29 Jan 2010 16:01:01 -0800
Subject: [PATCH 360/521] CID-296

Checker: UNINIT_CTOR
Function: LLFontGlyphInfo::LLFontGlyphInfo(unsigned int)
File: /indra/llrender/llfontfreetype.cpp
---
 indra/llrender/llfontfreetype.cpp | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/indra/llrender/llfontfreetype.cpp b/indra/llrender/llfontfreetype.cpp
index 9f7f3b2c671..59e7d890f43 100644
--- a/indra/llrender/llfontfreetype.cpp
+++ b/indra/llrender/llfontfreetype.cpp
@@ -91,14 +91,15 @@ LLFontManager::~LLFontManager()
 
 LLFontGlyphInfo::LLFontGlyphInfo(U32 index)
 :	mGlyphIndex(index),
+	mWidth(0),			// In pixels
+	mHeight(0),			// In pixels
+	mXAdvance(0.f),		// In pixels
+	mYAdvance(0.f),		// In pixels
 	mXBitmapOffset(0), 	// Offset to the origin in the bitmap
 	mYBitmapOffset(0), 	// Offset to the origin in the bitmap
 	mXBearing(0),		// Distance from baseline to left in pixels
 	mYBearing(0),		// Distance from baseline to top in pixels
-	mWidth(0),			// In pixels
-	mHeight(0),			// In pixels
-	mXAdvance(0.f),		// In pixels
-	mYAdvance(0.f)		// In pixels
+	mBitmapNum(0) // Which bitmap in the bitmap cache contains this glyph
 {
 }
 
-- 
GitLab


From 1de15af932742f198595b914b33a0af1dcc49894 Mon Sep 17 00:00:00 2001
From: Eli Linden <eli@lindenlab.com>
Date: Fri, 29 Jan 2010 16:34:05 -0800
Subject: [PATCH 361/521] Fix button size so it works for most/all target
 languages

---
 indra/newview/skins/default/xui/en/floater_about.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml
index bfdd48e2f42..bc67621dfd6 100644
--- a/indra/newview/skins/default/xui/en/floater_about.xml
+++ b/indra/newview/skins/default/xui/en/floater_about.xml
@@ -91,7 +91,7 @@ Packets Lost: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number
         left="10"
         top_pad="5"
         height="25"
-        width="160" />
+        width="180" />
     </panel>
     <panel
       border="true" 
-- 
GitLab


From 6d9d43948147b10336d15066d1fbd3dc3dff58ec Mon Sep 17 00:00:00 2001
From: Eli Linden <eli@lindenlab.com>
Date: Fri, 29 Jan 2010 17:08:28 -0800
Subject: [PATCH 362/521] DEV-43688 Cycle3 for FR

---
 .../default/xui/fr/floater_about_land.xml     | 147 +++++----
 .../xui/fr/floater_animation_preview.xml      |   5 +-
 .../xui/fr/floater_avatar_textures.xml        |  62 ++--
 .../default/xui/fr/floater_bulk_perms.xml     |   2 +-
 .../default/xui/fr/floater_buy_currency.xml   |   2 +-
 .../default/xui/fr/floater_color_picker.xml   |   2 +-
 .../default/xui/fr/floater_customize.xml      |  62 ++--
 .../default/xui/fr/floater_god_tools.xml      |  12 +-
 .../default/xui/fr/floater_im_container.xml   |   2 +-
 .../default/xui/fr/floater_incoming_call.xml  |   6 +
 .../default/xui/fr/floater_lsl_guide.xml      |   2 +-
 .../default/xui/fr/floater_media_browser.xml  |   2 +-
 .../default/xui/fr/floater_outfit_save_as.xml |  11 +
 .../default/xui/fr/floater_outgoing_call.xml  |   9 +
 .../default/xui/fr/floater_preferences.xml    |   2 +-
 .../xui/fr/floater_preview_gesture.xml        |   3 +
 .../xui/fr/floater_preview_notecard.xml       |   2 +-
 .../xui/fr/floater_preview_texture.xml        |   5 +-
 .../default/xui/fr/floater_report_abuse.xml   |   4 +-
 .../default/xui/fr/floater_script_limits.xml  |   2 +
 .../skins/default/xui/fr/floater_search.xml   |   7 +
 .../default/xui/fr/floater_select_key.xml     |   6 +-
 .../default/xui/fr/floater_sell_land.xml      |   2 +-
 .../skins/default/xui/fr/floater_snapshot.xml |  20 +-
 .../skins/default/xui/fr/floater_sys_well.xml |   9 +-
 .../skins/default/xui/fr/floater_telehub.xml  |   8 +-
 .../default/xui/fr/floater_texture_ctrl.xml   |   2 +-
 .../skins/default/xui/fr/floater_tools.xml    |  13 +-
 .../default/xui/fr/floater_top_objects.xml    |  69 ++---
 .../default/xui/fr/floater_voice_controls.xml |  30 +-
 .../xui/fr/floater_whitelist_entry.xml        |   2 +-
 .../default/xui/fr/floater_window_size.xml    |  17 ++
 .../default/xui/fr/floater_world_map.xml      | 150 +++++----
 .../skins/default/xui/fr/inspect_avatar.xml   |  10 +-
 .../skins/default/xui/fr/inspect_group.xml    |   1 +
 .../default/xui/fr/menu_attachment_other.xml  |  17 ++
 .../default/xui/fr/menu_attachment_self.xml   |  12 +
 .../skins/default/xui/fr/menu_avatar_icon.xml |   2 +-
 .../default/xui/fr/menu_avatar_other.xml      |  16 +
 .../skins/default/xui/fr/menu_avatar_self.xml |  27 ++
 .../skins/default/xui/fr/menu_bottomtray.xml  |   5 +
 .../default/xui/fr/menu_im_well_button.xml    |   4 +
 .../default/xui/fr/menu_imchiclet_adhoc.xml   |   4 +
 .../default/xui/fr/menu_imchiclet_p2p.xml     |   2 +-
 .../xui/fr/menu_inspect_avatar_gear.xml       |   1 +
 .../skins/default/xui/fr/menu_inventory.xml   |   8 +-
 .../xui/fr/menu_inventory_gear_default.xml    |   2 +
 .../skins/default/xui/fr/menu_land.xml        |   9 +
 .../skins/default/xui/fr/menu_login.xml       |   6 +-
 .../xui/fr/menu_notification_well_button.xml  |   4 +
 .../skins/default/xui/fr/menu_object.xml      |  25 ++
 .../default/xui/fr/menu_participant_list.xml  |  17 +-
 .../default/xui/fr/menu_people_groups.xml     |   8 +
 .../default/xui/fr/menu_people_nearby.xml     |   1 +
 .../default/xui/fr/menu_profile_overflow.xml  |   4 +
 .../skins/default/xui/fr/menu_viewer.xml      |  46 ++-
 .../skins/default/xui/fr/mime_types_linux.xml | 217 +++++++++++++
 .../skins/default/xui/fr/mime_types_mac.xml   | 217 +++++++++++++
 .../skins/default/xui/fr/notifications.xml    | 154 ++++------
 .../xui/fr/panel_active_object_row.xml        |   9 +
 .../xui/fr/panel_adhoc_control_panel.xml      |  16 +-
 .../default/xui/fr/panel_avatar_list_item.xml |   1 +
 .../xui/fr/panel_block_list_sidetray.xml      |   4 +-
 .../skins/default/xui/fr/panel_bottomtray.xml |  12 +-
 .../default/xui/fr/panel_classified_info.xml  |   4 +-
 .../default/xui/fr/panel_edit_classified.xml  |   4 +-
 .../default/xui/fr/panel_edit_profile.xml     |   5 +-
 .../skins/default/xui/fr/panel_friends.xml    |  10 +-
 .../xui/fr/panel_group_control_panel.xml      |  20 +-
 .../default/xui/fr/panel_group_general.xml    |   8 +-
 .../xui/fr/panel_group_info_sidetray.xml      |   2 +
 .../default/xui/fr/panel_group_invite.xml     |   6 +-
 .../default/xui/fr/panel_group_list_item.xml  |   1 +
 .../default/xui/fr/panel_group_notices.xml    |  14 +-
 .../default/xui/fr/panel_group_notify.xml     |   2 +-
 .../default/xui/fr/panel_im_control_panel.xml |  32 +-
 .../default/xui/fr/panel_landmark_info.xml    |   1 +
 .../skins/default/xui/fr/panel_login.xml      |  68 +++--
 .../default/xui/fr/panel_main_inventory.xml   |   6 +-
 .../xui/fr/panel_media_settings_general.xml   |  22 +-
 .../fr/panel_media_settings_permissions.xml   |  19 +-
 .../xui/fr/panel_media_settings_security.xml  |   8 +-
 .../skins/default/xui/fr/panel_my_profile.xml |  80 +++--
 .../default/xui/fr/panel_navigation_bar.xml   |   3 +
 .../skins/default/xui/fr/panel_notes.xml      |  18 +-
 .../xui/fr/panel_outfits_inventory.xml        |  15 +-
 .../panel_outfits_inventory_gear_default.xml  |   6 +-
 .../skins/default/xui/fr/panel_people.xml     |   1 +
 .../skins/default/xui/fr/panel_picks.xml      |  12 +-
 .../default/xui/fr/panel_place_profile.xml    |   3 +-
 .../skins/default/xui/fr/panel_places.xml     |   7 +-
 .../xui/fr/panel_preferences_alerts.xml       |   4 +-
 .../default/xui/fr/panel_preferences_chat.xml |  10 +-
 .../xui/fr/panel_preferences_general.xml      |  26 +-
 .../xui/fr/panel_preferences_privacy.xml      |   8 +-
 .../xui/fr/panel_preferences_setup.xml        |   8 +-
 .../xui/fr/panel_preferences_sound.xml        |   4 +-
 .../xui/fr/panel_prim_media_controls.xml      |  52 +++-
 .../skins/default/xui/fr/panel_profile.xml    |  77 +++--
 .../default/xui/fr/panel_region_estate.xml    |  10 +-
 .../default/xui/fr/panel_region_general.xml   |   6 +-
 .../xui/fr/panel_region_general_layout.xml    |  43 +++
 .../default/xui/fr/panel_region_texture.xml   |   3 +-
 .../xui/fr/panel_script_limits_my_avatar.xml  |  13 +
 .../fr/panel_script_limits_region_memory.xml  |  24 ++
 .../skins/default/xui/fr/panel_side_tray.xml  |  11 +-
 .../skins/default/xui/fr/panel_status_bar.xml |   3 +-
 .../default/xui/fr/panel_teleport_history.xml |   4 +-
 .../xui/fr/panel_teleport_history_item.xml    |   1 +
 .../skins/default/xui/fr/role_actions.xml     | 245 ++++-----------
 .../default/xui/fr/sidepanel_appearance.xml   |   8 +-
 .../default/xui/fr/sidepanel_inventory.xml    |   2 +-
 .../default/xui/fr/sidepanel_item_info.xml    |  57 ++--
 .../default/xui/fr/sidepanel_task_info.xml    |  76 ++---
 .../newview/skins/default/xui/fr/strings.xml  | 288 ++++++++++++++++--
 115 files changed, 1912 insertions(+), 988 deletions(-)
 create mode 100644 indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml
 create mode 100644 indra/newview/skins/default/xui/fr/floater_script_limits.xml
 create mode 100644 indra/newview/skins/default/xui/fr/floater_window_size.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_attachment_other.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_attachment_self.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_avatar_other.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_avatar_self.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_im_well_button.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_imchiclet_adhoc.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_land.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_notification_well_button.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_object.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_people_groups.xml
 create mode 100644 indra/newview/skins/default/xui/fr/mime_types_linux.xml
 create mode 100644 indra/newview/skins/default/xui/fr/mime_types_mac.xml
 create mode 100644 indra/newview/skins/default/xui/fr/panel_active_object_row.xml
 create mode 100644 indra/newview/skins/default/xui/fr/panel_region_general_layout.xml
 create mode 100644 indra/newview/skins/default/xui/fr/panel_script_limits_my_avatar.xml
 create mode 100644 indra/newview/skins/default/xui/fr/panel_script_limits_region_memory.xml

diff --git a/indra/newview/skins/default/xui/fr/floater_about_land.xml b/indra/newview/skins/default/xui/fr/floater_about_land.xml
index cf595edab9c..4c97551e556 100644
--- a/indra/newview/skins/default/xui/fr/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/fr/floater_about_land.xml
@@ -13,7 +13,7 @@
 		restantes
 	</floater.string>
 	<tab_container name="landtab">
-		<panel label="Général" name="land_general_panel">
+		<panel label="GÉNÉRAL" name="land_general_panel">
 			<panel.string name="new users only">
 				Nouveaux utilisateurs uniquement
 			</panel.string>
@@ -36,10 +36,10 @@
 				(propriété du groupe)
 			</panel.string>
 			<panel.string name="profile_text">
-				Profil...
+				Profil
 			</panel.string>
 			<panel.string name="info_text">
-				Infos...
+				Infos
 			</panel.string>
 			<panel.string name="public_text">
 				(public)
@@ -52,7 +52,6 @@
 			</panel.string>
 			<panel.string name="no_selection_text">
 				Aucune parcelle sélectionnée.
-Allez dans le menu Monde &gt; À propos du terrain ou sélectionnez une autre parcelle pour en afficher les détails.
 			</panel.string>
 			<text name="Name:">
 				Nom :
@@ -80,14 +79,15 @@ Allez dans le menu Monde &gt; À propos du terrain ou sélectionnez une autre pa
 			<text name="OwnerText">
 				Leyla Linden
 			</text>
-			<button label="Profil..." label_selected="Profil..." name="Profile..."/>
 			<text name="Group:">
 				Groupe :
 			</text>
-			<text name="GroupText"/>
-			<button label="Définir..." label_selected="Définir..." name="Set..."/>
+			<text name="GroupText">
+				Leyla Linden
+			</text>
+			<button label="Choisir" label_selected="Définir..." name="Set..."/>
 			<check_box label="Autoriser la cession au groupe" name="check deed" tool_tip="Un officier du groupe peut céder ce terrain à ce groupe, afin qu&apos;il soit pris en charge par l&apos;allocation de terrains du groupe."/>
-			<button label="Céder..." label_selected="Céder..." name="Deed..." tool_tip="Vous ne pouvez céder le terrain que si vous avez un rôle d&apos;officier dans le groupe sélectionné."/>
+			<button label="Céder" label_selected="Céder..." name="Deed..." tool_tip="Vous ne pouvez céder le terrain que si vous avez un rôle d&apos;officier dans le groupe sélectionné."/>
 			<check_box label="Le propriétaire contribue en cédant du terrain" name="check contrib" tool_tip="Lorsqu&apos;un terrain est cédé au groupe, l&apos;ancien propriétaire fait également un don de terrain suffisant."/>
 			<text name="For Sale:">
 				À vendre :
@@ -96,18 +96,18 @@ Allez dans le menu Monde &gt; À propos du terrain ou sélectionnez une autre pa
 				Pas à vendre
 			</text>
 			<text name="For Sale: Price L$[PRICE].">
-				Prix : [PRICE] L$ ([PRICE_PER_SQM] L$/m²).
+				Prix : [PRICE] L$ ([PRICE_PER_SQM] L$/m²)
 			</text>
 			<text name="SalePending"/>
-			<button label="Vendre le terrain..." label_selected="Vendre le terrain..." name="Sell Land..."/>
+			<button label="Vendez du terrain" label_selected="Vendre le terrain..." name="Sell Land..."/>
 			<text name="For sale to">
 				À vendre à : [BUYER]
 			</text>
 			<text name="Sell with landowners objects in parcel.">
-				Objets inclus dans la vente.
+				Objets inclus dans la vente
 			</text>
 			<text name="Selling with no objects in parcel.">
-				Objets non inclus dans la vente.
+				Objets non inclus dans la vente
 			</text>
 			<button label="Annuler la vente du terrain" label_selected="Annuler la vente du terrain" left="275" name="Cancel Land Sale" width="165"/>
 			<text name="Claimed:">
@@ -128,14 +128,15 @@ Allez dans le menu Monde &gt; À propos du terrain ou sélectionnez une autre pa
 			<text name="DwellText">
 				0
 			</text>
-			<button label="Acheter le terrain..." label_selected="Acheter le terrain..." left="130" name="Buy Land..." width="125"/>
-			<button label="Acheter pour le groupe..." label_selected="Acheter pour le groupe..." name="Buy For Group..."/>
-			<button label="Acheter un pass..." label_selected="Acheter un pass..." left="130" name="Buy Pass..." tool_tip="Un pass vous donne un accès temporaire à ce terrain." width="125"/>
-			<button label="Abandonner le terrain..." label_selected="Abandonner le terrain..." name="Abandon Land..."/>
-			<button label="Redemander le terrain..." label_selected="Redemander le terrain…" name="Reclaim Land..."/>
-			<button label="Vente Linden..." label_selected="Vente Linden..." name="Linden Sale..." tool_tip="Le terrain doit être la propriété d&apos;un résident, avoir un contenu défini et ne pas être aux enchères."/>
+			<button label="Acheter du terrain" label_selected="Acheter le terrain..." left="130" name="Buy Land..." width="125"/>
+			<button label="Infos sur les scripts" name="Scripts..."/>
+			<button label="Acheter pour le groupe" label_selected="Acheter pour le groupe..." name="Buy For Group..."/>
+			<button label="Acheter un pass" label_selected="Acheter un pass..." left="130" name="Buy Pass..." tool_tip="Un pass vous donne un accès temporaire à ce terrain." width="125"/>
+			<button label="Abandonner le terrain" label_selected="Abandonner le terrain..." name="Abandon Land..."/>
+			<button label="Récupérer le terrain" label_selected="Redemander le terrain…" name="Reclaim Land..."/>
+			<button label="Vente Linden" label_selected="Vente Linden..." name="Linden Sale..." tool_tip="Le terrain doit être la propriété d&apos;un résident, avoir un contenu défini et ne pas être aux enchères."/>
 		</panel>
-		<panel label="Règlement" name="land_covenant_panel">
+		<panel label="RÈGLEMENT" name="land_covenant_panel">
 			<panel.string name="can_resell">
 				Le terrain acheté dans cette région peut être revendu.
 			</panel.string>
@@ -153,9 +154,6 @@ ou divisé.
 			<text name="estate_section_lbl">
 				Domaine :
 			</text>
-			<text name="estate_name_lbl">
-				Nom :
-			</text>
 			<text name="estate_name_text">
 				continent
 			</text>
@@ -174,11 +172,8 @@ ou divisé.
 			<text name="region_section_lbl">
 				Région :
 			</text>
-			<text name="region_name_lbl">
-				Nom :
-			</text>
 			<text name="region_name_text">
-				leyla
+				EricaVille
 			</text>
 			<text name="region_landtype_lbl">
 				Type :
@@ -205,7 +200,7 @@ ou divisé.
 				Le terrain dans cette région ne peut être fusionné/divisé.
 			</text>
 		</panel>
-		<panel label="Objets" name="land_objects_panel">
+		<panel label="OBJETS" name="land_objects_panel">
 			<panel.string name="objects_available_text">
 				[COUNT] sur [MAX] ([AVAILABLE] disponibles)
 			</panel.string>
@@ -216,19 +211,19 @@ ou divisé.
 				Facteur Bonus Objets : [BONUS]
 			</text>
 			<text name="Simulator primitive usage:">
-				Prims utilisées sur la parcelle :
+				Utilisation des prims :
 			</text>
 			<text left="214" name="objects_available" width="230">
 				[COUNT] sur [MAX] ([AVAILABLE] disponibles)
 			</text>
 			<text name="Primitives parcel supports:" width="200">
-				Prims max. sur la parcelle :
+				Prims max. sur la parcelle :
 			</text>
 			<text left="214" name="object_contrib_text" width="152">
 				[COUNT]
 			</text>
 			<text name="Primitives on parcel:">
-				Prims sur la parcelle :
+				Prims sur la parcelle :
 			</text>
 			<text left="214" name="total_objects_text" width="48">
 				[COUNT]
@@ -240,7 +235,7 @@ ou divisé.
 				[COUNT]
 			</text>
 			<button label="Afficher" label_selected="Afficher" name="ShowOwner" right="-135" width="60"/>
-			<button label="Renvoyer..." label_selected="Renvoyer..." name="ReturnOwner..." right="-10" tool_tip="Renvoyer les objets à leurs propriétaires." width="119"/>
+			<button label="Retour" label_selected="Renvoyer..." name="ReturnOwner..." right="-10" tool_tip="Renvoyer les objets à leurs propriétaires." width="119"/>
 			<text left="14" name="Set to group:" width="180">
 				Données au groupe :
 			</text>
@@ -248,7 +243,7 @@ ou divisé.
 				[COUNT]
 			</text>
 			<button label="Afficher" label_selected="Afficher" name="ShowGroup" right="-135" width="60"/>
-			<button label="Renvoyer..." label_selected="Renvoyer..." name="ReturnGroup..." right="-10" tool_tip="Renvoyer les objets à leurs propriétaires." width="119"/>
+			<button label="Retour" label_selected="Renvoyer..." name="ReturnGroup..." right="-10" tool_tip="Renvoyer les objets à leurs propriétaires." width="119"/>
 			<text left="14" name="Owned by others:" width="128">
 				Appartenant à d&apos;autres :
 			</text>
@@ -256,7 +251,7 @@ ou divisé.
 				[COUNT]
 			</text>
 			<button label="Afficher" label_selected="Afficher" name="ShowOther" right="-135" width="60"/>
-			<button label="Renvoyer..." label_selected="Renvoyer..." name="ReturnOther..." right="-10" tool_tip="Renvoyer les objets à leurs propriétaires." width="119"/>
+			<button label="Retour" label_selected="Renvoyer..." name="ReturnOther..." right="-10" tool_tip="Renvoyer les objets à leurs propriétaires." width="119"/>
 			<text left="14" name="Selected / sat upon:" width="193">
 				Sélectionnées/où quelqu&apos;un est assis :
 			</text>
@@ -264,14 +259,14 @@ ou divisé.
 				[COUNT]
 			</text>
 			<text left="4" name="Autoreturn" width="412">
-				Renvoi automatique des objets des autres résidents (min., 0 pour désactiver) :
+				Renvoi automatique des objets d&apos;autres résidents (minutes, 0 pour désactiver) :
 			</text>
 			<line_editor name="clean other time" right="-6" width="36"/>
 			<text name="Object Owners:">
 				Propriétaires :
 			</text>
-			<button label="Rafraîchir" label_selected="Rafraîchir" name="Refresh List"/>
-			<button label="Renvoyer les objets..." label_selected="Renvoyer les objets..." name="Return objects..."/>
+			<button label="Rafraîchir" label_selected="Rafraîchir" name="Refresh List" tool_tip="Actualiser la liste des objets"/>
+			<button label="Renvoi des objets" label_selected="Renvoyer les objets..." name="Return objects..."/>
 			<name_list label="Plus récents" name="owner list">
 				<name_list.columns label="Type" name="type"/>
 				<name_list.columns name="online_status"/>
@@ -280,7 +275,7 @@ ou divisé.
 				<name_list.columns label="Plus récents" name="mostrecent"/>
 			</name_list>
 		</panel>
-		<panel label="Options" name="land_options_panel">
+		<panel label="OPTIONS" name="land_options_panel">
 			<panel.string name="search_enabled_tooltip">
 				Permettre aux autres résidents de voir cette parcelle dans les résultats de recherche
 			</panel.string>
@@ -292,13 +287,13 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche.
 				Cette option est désactivée car vous ne pouvez pas modifier les options de cette parcelle.
 			</panel.string>
 			<panel.string name="mature_check_mature">
-				Contenu Mature
+				Contenu Modéré
 			</panel.string>
 			<panel.string name="mature_check_adult">
 				Contenu Adult
 			</panel.string>
 			<panel.string name="mature_check_mature_tooltip">
-				Les informations ou contenu de votre parcelle sont classés Mature.
+				Les informations ou contenu de votre parcelle sont classés Modéré.
 			</panel.string>
 			<panel.string name="mature_check_adult_tooltip">
 				Les informations ou contenu de votre parcelle sont classés Adult.
@@ -313,31 +308,31 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche.
 				Pas de bousculades (les règles de la région priment)
 			</panel.string>
 			<text name="allow_label">
-				Autoriser les autres résidents à :
+				Autoriser les autres résidents à :
 			</text>
 			<check_box label="Modifier le terrain" name="edit land check" tool_tip="Si cette option est cochée, n&apos;importe qui peut terraformer votre terrain. Il vaut mieux ne pas cocher cette option pour toujours pouvoir modifer votre propre terrain."/>
 			<check_box label="Voler" name="check fly" tool_tip="Si cette option est cochée, les résidents peuvent voler sur votre terrain. Si elle n&apos;est pas cochée, ils ne pourront voler que lorsqu&apos;ils arrivent et passent au dessus de votre terrain."/>
 			<text left="152" name="allow_label2">
-				Créer des objets :
+				Construire :
 			</text>
-			<check_box label="Tous les résidents" left="285" name="edit objects check"/>
+			<check_box label="Tous" left="285" name="edit objects check"/>
 			<check_box label="Groupe" left="395" name="edit group objects check"/>
 			<text left="152" name="allow_label3" width="134">
 				Laisser entrer des objets :
 			</text>
-			<check_box label="Tous les résidents" left="285" name="all object entry check"/>
+			<check_box label="Tous" left="285" name="all object entry check"/>
 			<check_box label="Groupe" left="395" name="group object entry check"/>
 			<text left="152" name="allow_label4">
 				Exécuter des scripts :
 			</text>
-			<check_box label="Tous les résidents" left="285" name="check other scripts"/>
+			<check_box label="Tous" left="285" name="check other scripts"/>
 			<check_box label="Groupe" left="395" name="check group scripts"/>
 			<text name="land_options_label">
 				Options du terrain :
 			</text>
 			<check_box label="Sécurisé (pas de dégâts)" name="check safe" tool_tip="Si cette option est cochée, le terrain est sécurisé et il n&apos;y pas de risques de dommages causés par des combats. Si elle est décochée, des dommages causés par les combats peuvent avoir lieu."/>
 			<check_box bottom="-140" label="Pas de bousculades" left="14" name="PushRestrictCheck" tool_tip="Empêche l&apos;utilisation de scripts causant des bousculades. Cette option est utile pour empêcher les comportements abusifs sur votre terrain."/>
-			<check_box bottom="-160" label="Afficher dans la recherche (30 L$/semaine) sous" name="ShowDirectoryCheck" tool_tip="Afficher la parcelle dans les résultats de recherche"/>
+			<check_box bottom="-160" label="Afficher le lieu dans la recherche (30 L$/semaine)" name="ShowDirectoryCheck" tool_tip="Afficher la parcelle dans les résultats de recherche"/>
 			<combo_box bottom="-160" left="286" name="land category with adult" width="146">
 				<combo_box.item label="Toutes catégories" name="item0"/>
 				<combo_box.item label="Appartenant aux Lindens" name="item1"/>
@@ -367,7 +362,7 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche.
 				<combo_box.item label="Shopping" name="item11"/>
 				<combo_box.item label="Autre" name="item12"/>
 			</combo_box>
-			<check_box bottom="-180" label="Contenu Mature" name="MatureCheck" tool_tip=""/>
+			<check_box bottom="-180" label="Contenu Modéré" name="MatureCheck" tool_tip=""/>
 			<text bottom="-200" name="Snapshot:">
 				Photo :
 			</text>
@@ -386,35 +381,32 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche.
 				<combo_box.item label="Lieu d&apos;arrivée libre" name="Anywhere"/>
 			</combo_box>
 		</panel>
-		<panel label="Médias" name="land_media_panel">
+		<panel label="MÉDIA" name="land_media_panel">
 			<text name="with media:" width="85">
 				Type :
 			</text>
 			<combo_box left="97" name="media type" tool_tip="Indiquez s&apos;il s&apos;agit de l&apos;URL d&apos;un film, d&apos;une page web ou autre"/>
 			<text name="mime_type"/>
 			<text name="at URL:" width="85">
-				URL du domicile :
+				Page d&apos;accueil :
 			</text>
 			<line_editor left="97" name="media_url"/>
-			<button label="Définir..." label_selected="Définir..." name="set_media_url"/>
+			<button label="Choisir" label_selected="Définir..." name="set_media_url"/>
 			<text name="CurrentURL:">
-				URL actuelle :
+				Page actuelle :
 			</text>
-			<button label="Réinitialiser..." label_selected="Réinitialiser..." name="reset_media_url"/>
+			<button label="Réinitialiser..." label_selected="Réinitialiser..." name="reset_media_url" tool_tip="Actualiser l&apos;URL"/>
 			<check_box label="Masquer l&apos;URL" left="97" name="hide_media_url" tool_tip="Si vous cochez cette option, les personnes non autorisées à accéder aux infos de cette parcelle ne verront pas l&apos;URL du média. Cette option n&apos;est pas disponible pour les fichiers HTML."/>
 			<text name="Description:">
 				Description :
 			</text>
 			<line_editor left="97" name="url_description" tool_tip="Texte affiché à côté du bouton Jouer/Charger"/>
 			<text name="Media texture:">
-				Remplacer
-la texture :
+				Remplacer la texture :
 			</text>
 			<texture_picker label="" left="97" name="media texture" tool_tip="Cliquez pour sélectionner une image"/>
 			<text name="replace_texture_help">
-				Les objets avec cette texture affichent le film ou la page web quand vous cliquez sur la flèche Jouer.
-
-Sélectionnez l&apos;image miniature pour choisir une texture différente.
+				Les objets avec cette texture affichent le film ou la page web quand vous cliquez sur la flèche Jouer.  Sélectionnez l&apos;image miniature pour choisir une texture différente.
 			</text>
 			<check_box label="Échelle automatique" left="97" name="media_auto_scale" tool_tip="Si vous sélectionnez cette option, le contenu de cette parcelle sera automatiquement mis à l&apos;échelle. La qualité visuelle sera peut-être amoindrie mais vous n&apos;aurez à faire aucune autre mise à l&apos;échelle ou alignement."/>
 			<text left="102" name="media_size" tool_tip="Taille du média Web, laisser 0 pour la valeur par défaut." width="105">
@@ -430,7 +422,7 @@ Sélectionnez l&apos;image miniature pour choisir une texture différente.
 			</text>
 			<check_box label="En boucle" name="media_loop" tool_tip="Jouer le média en boucle. Lorsque le média aura fini de jouer, il recommencera."/>
 		</panel>
-		<panel label="Audio" name="land_audio_panel">
+		<panel label="SON" name="land_audio_panel">
 			<text name="MusicURL:">
 				URL de la musique :
 			</text>
@@ -445,19 +437,22 @@ Sélectionnez l&apos;image miniature pour choisir une texture différente.
 			<check_box label="Activer la voix (contrôlé par le domaine)" name="parcel_enable_voice_channel_is_estate_disabled"/>
 			<check_box label="Limiter le chat vocal à cette parcelle" name="parcel_enable_voice_channel_parcel"/>
 		</panel>
-		<panel label="Accès" name="land_access_panel">
+		<panel label="ACCÈS" name="land_access_panel">
+			<panel.string name="access_estate_defined">
+				(défini par le domaine
+			</panel.string>
 			<panel.string name="estate_override">
 				Au moins une de ces options est définie au niveau du domaine.
 			</panel.string>
 			<text name="Limit access to this parcel to:">
 				Accès à cette parcelle
 			</text>
-			<check_box label="Autoriser l&apos;accès public" name="public_access"/>
+			<check_box label="Autoriser l&apos;accès public [MATURITY]" name="public_access"/>
 			<text name="Only Allow">
-				Bloquer l&apos;accès aux résidents :
+				Limiter l&apos;accès aux résidents vérifiés par :
 			</text>
-			<check_box label="Qui n&apos;ont pas fourni leurs informations de paiement à Linden Lab" name="limit_payment" tool_tip="Aux résidents non identifés"/>
-			<check_box label="Dont l&apos;âge n&apos;a pas été vérifié" name="limit_age_verified" tool_tip="Interdire les résidents qui n&apos;ont pas vérifié leur âge. Consultez la page [SUPPORT_SITE] pour plus d&apos;informations."/>
+			<check_box label="Informations de paiement enregistrées [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="Bannir les résidents non identifiés."/>
+			<check_box label="Vérification de l&apos;âge [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="Bannir les résidents qui n&apos;ont pas vérifié leur âge. Consultez la page [SUPPORT_SITE] pour plus d&apos;informations."/>
 			<check_box label="Autoriser l&apos;accès au groupe : [GROUP]" name="GroupCheck" tool_tip="Définir le groupe à l&apos;onglet Général."/>
 			<check_box label="Vendre des pass à :" name="PassCheck" tool_tip="Autoriser un accès temporaire à cette parcelle"/>
 			<combo_box name="pass_combo">
@@ -466,18 +461,22 @@ Sélectionnez l&apos;image miniature pour choisir une texture différente.
 			</combo_box>
 			<spinner label="Prix en L$ :" name="PriceSpin"/>
 			<spinner label="Durée en heures :" name="HoursSpin"/>
-			<text label="Toujours autoriser" name="AllowedText">
-				Résidents autorisés
-			</text>
-			<name_list name="AccessList" tool_tip="([LISTED] listés, [MAX] max)"/>
-			<button label="Ajouter..." label_selected="Ajouter..." name="add_allowed"/>
-			<button label="Supprimer" label_selected="Supprimer" name="remove_allowed"/>
-			<text label="Bannir" name="BanCheck">
-				Résidents bannis
-			</text>
-			<name_list name="BannedList" tool_tip="([LISTED] listés, [MAX] max)"/>
-			<button label="Ajouter..." label_selected="Ajouter..." name="add_banned"/>
-			<button label="Supprimer" label_selected="Supprimer" name="remove_banned"/>
+			<panel name="Allowed_layout_panel">
+				<text label="Toujours autoriser" name="AllowedText">
+					Résidents autorisés
+				</text>
+				<name_list name="AccessList" tool_tip="([LISTED] dans la liste, [MAX] max.)"/>
+				<button label="Ajouter" name="add_allowed"/>
+				<button label="Supprimer" label_selected="Supprimer" name="remove_allowed"/>
+			</panel>
+			<panel name="Banned_layout_panel">
+				<text label="Bannir" name="BanCheck">
+					Résidents bannis
+				</text>
+				<name_list name="BannedList" tool_tip="([LISTED] dans la liste, [MAX] max.)"/>
+				<button label="Ajouter" name="add_banned"/>
+				<button label="Supprimer" label_selected="Supprimer" name="remove_banned"/>
+			</panel>
 		</panel>
 	</tab_container>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_animation_preview.xml b/indra/newview/skins/default/xui/fr/floater_animation_preview.xml
index e6302089730..f7a796a5086 100644
--- a/indra/newview/skins/default/xui/fr/floater_animation_preview.xml
+++ b/indra/newview/skins/default/xui/fr/floater_animation_preview.xml
@@ -172,7 +172,8 @@ pendant
 	</combo_box>
 	<spinner label="Transition début (s)" name="ease_in_time" tool_tip="Durée (en secondes) de l&apos;entrée en fondu de l&apos;animation"/>
 	<spinner label="Transition fin (s)" name="ease_out_time" tool_tip="Durée (en secondes) de la sortie en fondu de l&apos;animation"/>
-	<button label="" name="play_btn" tool_tip="Lire/pauser votre animation"/>
+	<button label="" name="play_btn" tool_tip="Lire votre animation"/>
+	<button name="pause_btn" tool_tip="Pauser votre animation"/>
 	<button label="" name="stop_btn" tool_tip="Arrêter le playback"/>
 	<slider label="" name="playback_slider"/>
 	<text name="bad_animation_text">
@@ -180,6 +181,6 @@ pendant
 
 Nous recommandons les fichiers BVH extraits de Poser 4.
 	</text>
-	<button label="Annuler" name="cancel_btn"/>
 	<button label="Charger ([AMOUNT] L$)" name="ok_btn"/>
+	<button label="Annuler" name="cancel_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml b/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml
index 142e13640a8..313c9496a29 100644
--- a/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml
+++ b/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml
@@ -10,33 +10,37 @@
 		Textures composées
 	</text>
 	<button label="Vider ces ID dans la console" label_selected="Vider" left="-185" name="Dump" width="175"/>
-	<texture_picker label="Cheveux" name="hair-baked"/>
-	<texture_picker label="Cheveux" name="hair_grain"/>
-	<texture_picker label="Alpha cheveux" name="hair_alpha"/>
-	<texture_picker label="Tête" name="head-baked"/>
-	<texture_picker label="Maquillage" name="head_bodypaint"/>
-	<texture_picker label="Alpha tête" name="head_alpha"/>
-	<texture_picker label="Tatouage tête" name="head_tattoo"/>
-	<texture_picker label="Yeux" name="eyes-baked"/>
-	<texture_picker label="Å’il" name="eyes_iris"/>
-	<texture_picker label="Alpha yeux" name="eyes_alpha"/>
-	<texture_picker label="Haut du corps" name="upper-baked"/>
-	<texture_picker label="Peinture corporelle haut" name="upper_bodypaint"/>
-	<texture_picker label="Sous-vêtements (homme)" name="upper_undershirt"/>
-	<texture_picker label="Gants" name="upper_gloves"/>
-	<texture_picker label="Chemise" name="upper_shirt"/>
-	<texture_picker label="Veste (haut)" name="upper_jacket"/>
-	<texture_picker label="Alpha haut" name="upper_alpha"/>
-	<texture_picker label="Tatouage haut" name="upper_tattoo"/>
-	<texture_picker label="Bas du corps" name="lower-baked"/>
-	<texture_picker label="Peinture corporelle bas" name="lower_bodypaint"/>
-	<texture_picker label="Sous-vêtements (femme)" name="lower_underpants"/>
-	<texture_picker label="Chaussettes" name="lower_socks"/>
-	<texture_picker label="Chaussures" name="lower_shoes"/>
-	<texture_picker label="Pantalon" name="lower_pants"/>
-	<texture_picker label="Veste" name="lower_jacket"/>
-	<texture_picker label="Alpha bas" name="lower_alpha"/>
-	<texture_picker label="Tatouage bas" name="lower_tattoo"/>
-	<texture_picker label="Jupe" name="skirt-baked"/>
-	<texture_picker label="Jupe" name="skirt"/>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<texture_picker label="Cheveux" name="hair-baked"/>
+			<texture_picker label="Cheveux" name="hair_grain"/>
+			<texture_picker label="Alpha cheveux" name="hair_alpha"/>
+			<texture_picker label="Tête" name="head-baked"/>
+			<texture_picker label="Maquillage" name="head_bodypaint"/>
+			<texture_picker label="Alpha tête" name="head_alpha"/>
+			<texture_picker label="Tatouage tête" name="head_tattoo"/>
+			<texture_picker label="Yeux" name="eyes-baked"/>
+			<texture_picker label="Å’il" name="eyes_iris"/>
+			<texture_picker label="Alpha yeux" name="eyes_alpha"/>
+			<texture_picker label="Haut du corps" name="upper-baked"/>
+			<texture_picker label="Peinture corporelle haut" name="upper_bodypaint"/>
+			<texture_picker label="Sous-vêtements (homme)" name="upper_undershirt"/>
+			<texture_picker label="Gants" name="upper_gloves"/>
+			<texture_picker label="Chemise" name="upper_shirt"/>
+			<texture_picker label="Veste (haut)" name="upper_jacket"/>
+			<texture_picker label="Alpha haut" name="upper_alpha"/>
+			<texture_picker label="Tatouage haut" name="upper_tattoo"/>
+			<texture_picker label="Bas du corps" name="lower-baked"/>
+			<texture_picker label="Peinture corporelle bas" name="lower_bodypaint"/>
+			<texture_picker label="Sous-vêtements (femme)" name="lower_underpants"/>
+			<texture_picker label="Chaussettes" name="lower_socks"/>
+			<texture_picker label="Chaussures" name="lower_shoes"/>
+			<texture_picker label="Pantalon" name="lower_pants"/>
+			<texture_picker label="Veste" name="lower_jacket"/>
+			<texture_picker label="Alpha bas" name="lower_alpha"/>
+			<texture_picker label="Tatouage bas" name="lower_tattoo"/>
+			<texture_picker label="Jupe" name="skirt-baked"/>
+			<texture_picker label="Jupe" name="skirt"/>
+		</panel>
+	</scroll_container>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml b/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml
index 0552cd31080..ecd9dd08638 100644
--- a/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml
+++ b/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml
@@ -49,6 +49,6 @@
 	<check_box label="Modifier" name="next_owner_modify"/>
 	<check_box label="Copier" name="next_owner_copy"/>
 	<check_box initial_value="true" label="Transférer" name="next_owner_transfer" tool_tip="Le prochain propriétaire peut donner ou revendre cet objet"/>
-	<button label="Ok" name="apply"/>
+	<button label="OK" name="apply"/>
 	<button label="Annuler" name="close"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
index 4ca251f3d93..1f29025a249 100644
--- a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
@@ -46,7 +46,7 @@
 		[AMT] L$
 	</text>
 	<text name="currency_links">
-		[http://www.secondlife.com/my/account/payment_method_management.php?lang=fr-FR payment method] | [http://www.secondlife.com/my/account/currency.php?lang=fr-FR currency] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=fr-FR exchange rate]
+		[http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency] | [http://www.secondlife.com/my/account/exchange_rates.php exchange rate]
 	</text>
 	<text name="exchange_rate_note">
 		Saisissez à nouveau le montant pour voir le taux de change actuel.
diff --git a/indra/newview/skins/default/xui/fr/floater_color_picker.xml b/indra/newview/skins/default/xui/fr/floater_color_picker.xml
index 0ad6a69d751..c509a4783e0 100644
--- a/indra/newview/skins/default/xui/fr/floater_color_picker.xml
+++ b/indra/newview/skins/default/xui/fr/floater_color_picker.xml
@@ -21,7 +21,7 @@
 	<check_box label="Appliquer maintenant" left="4" name="apply_immediate" width="108"/>
 	<button label="" label_selected="" left_delta="138" name="color_pipette"/>
 	<button label="Annuler" label_selected="Annuler" name="cancel_btn"/>
-	<button label="Ok" label_selected="Ok" name="select_btn"/>
+	<button label="OK" label_selected="OK" name="select_btn"/>
 	<text left="8" name="Current color:">
 		Couleur actuelle :
 	</text>
diff --git a/indra/newview/skins/default/xui/fr/floater_customize.xml b/indra/newview/skins/default/xui/fr/floater_customize.xml
index ccffb3f84a3..a1cd568571e 100644
--- a/indra/newview/skins/default/xui/fr/floater_customize.xml
+++ b/indra/newview/skins/default/xui/fr/floater_customize.xml
@@ -1,7 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="floater customize" title="APPARENCE" width="548">
 	<tab_container name="customize tab container" tab_min_width="150" width="546">
-		<placeholder label="Parties du corps" name="body_parts_placeholder"/>
+		<text label="Parties du corps" name="body_parts_placeholder">
+			Parties du corps
+		</text>
 		<panel label="Silhouette" left="154" name="Shape" width="389">
 			<button label="Rétablir" label_selected="Rétablir" left="305" name="Revert" width="82"/>
 			<button label="Corps" label_selected="Corps" name="Body"/>
@@ -14,8 +16,8 @@
 			<button label="Torse" label_selected="Torse" name="Torso"/>
 			<button label="Jambes" label_selected="Jambes" name="Legs"/>
 			<radio_group name="sex radio">
-				<radio_item label="Femme" name="radio"/>
-				<radio_item label="Homme" name="radio2"/>
+				<radio_item label="Femme" name="radio" value="0"/>
+				<radio_item label="Homme" name="radio2" value="1"/>
 			</radio_group>
 			<text name="title">
 				[DESC]
@@ -33,9 +35,7 @@
 				Emplacement : [PATH]
 			</text>
 			<text name="not worn instructions">
-				Pour changer de silhouette, faites-en glisser une à partir de votre
-inventaire jusqu&apos;à votre avatar. Vous pouvez aussi en créer une nouvelle 
-et de la porter.
+				Pour changer de silhouette, faites-en glisser une de votre inventaire à votre avatar. Vous pouvez aussi en créer une nouvelle et la porter.
 			</text>
 			<text name="no modify instructions">
 				Vous n&apos;avez pas la permission de modifier cet objet.
@@ -68,8 +68,7 @@ et de la porter.
 				Emplacement : [PATH]
 			</text>
 			<text name="not worn instructions">
-				Pour changer de peau, faites-en glisser une à partir de votre inventaire.
-Vous pouvez aussi en créer une nouvelle et la porter.
+				Pour changer de peau, faites-en glisser une à partir de votre inventaire. Vous pouvez aussi en créer une nouvelle et la porter.
 			</text>
 			<text name="no modify instructions">
 				Vous n&apos;avez pas la permission de modifier cet objet.
@@ -106,9 +105,7 @@ Vous pouvez aussi en créer une nouvelle et la porter.
 				Emplacement : [PATH]
 			</text>
 			<text name="not worn instructions">
-				Pour changer de chevelure, faites-en glisser une de votre inventaire
-jusqu&apos;à votre avatar. Vous pouvez aussi en créer une nouvelle
-et la porter.
+				Pour changer de cheveux, faites-en glisser à partir de votre inventaire. Vous pouvez aussi en créer de nouveaux et les porter.
 			</text>
 			<text name="no modify instructions">
 				Vous n&apos;avez pas la permission de modifier cet objet.
@@ -139,8 +136,7 @@ et la porter.
 				Emplacement : [PATH]
 			</text>
 			<text name="not worn instructions">
-				Pour changer vos yeux, faites-les glisser de votre inventaire jusqu&apos;à
-votre avatar. Vous pouvez aussi en créer de nouveaux et les porter.
+				Pour changer d&apos;yeux, faites-en glisser une paire de votre inventaire à votre avatar. Vous pouvez aussi en créer de nouveaux et les porter.
 			</text>
 			<text name="no modify instructions">
 				Vous n&apos;avez pas la permission de modifier cet objet.
@@ -154,7 +150,9 @@ votre avatar. Vous pouvez aussi en créer de nouveaux et les porter.
 			<button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/>
 			<button label="Rétablir" label_selected="Rétablir" left="305" name="Revert" width="82"/>
 		</panel>
-		<placeholder label="Habits" name="clothes_placeholder"/>
+		<text label="Habits" name="clothes_placeholder">
+			Habits
+		</text>
 		<panel label="Chemise" name="Shirt">
 			<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/>
 			<color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/>
@@ -179,8 +177,7 @@ votre avatar. Vous pouvez aussi en créer de nouveaux et les porter.
 				Emplacement : [PATH]
 			</text>
 			<text name="not worn instructions">
-				Pour porter une nouvelle chemise, faites-en glisser une de votre inventaire
-jusqu&apos;à votre avatar. Vous pouvez aussi en créer une nouvelle et la porter.
+				Pour changer de chemise, faites-en glisser une à partir de votre inventaire. Vous pouvez aussi en créer une nouvelle et la porter.
 			</text>
 			<text name="no modify instructions">
 				Vous n&apos;avez pas la permission de modifier cet objet.
@@ -213,8 +210,7 @@ jusqu&apos;à votre avatar. Vous pouvez aussi en créer une nouvelle et la porte
 				Emplacement : [PATH]
 			</text>
 			<text name="not worn instructions">
-				Pour porter un nouveau pantalon, faites-en glisser un de votre inventaire
-jusqu&apos;à votre avatar. Vous pouvez aussi en créer un nouveau et le porter.
+				Pour changer de pantalon, faites-en glisser un à partir de votre inventaire. Vous pouvez aussi en créer un nouveau et le porter.
 			</text>
 			<text name="no modify instructions">
 				Vous n&apos;avez pas la permission de modifier cet objet.
@@ -240,9 +236,7 @@ jusqu&apos;à votre avatar. Vous pouvez aussi en créer un nouveau et le porter.
 				Emplacement : [PATH]
 			</text>
 			<text name="not worn instructions">
-				Pour porter de nouvelles chaussures, faites-en glisser une paire de votre
-inventaire jusqu&apos;à votre avatar. Vous pouvez aussi en créer une
-nouvelle paire et la porter.
+				Pour changer de chaussures, faites-en glisser une paire de votre inventaire à votre avatar. Vous pouvez aussi en créer des nouvelles et les porter.
 			</text>
 			<text name="no modify instructions">
 				Vous n&apos;avez pas la permission de modifier cet objet.
@@ -275,9 +269,7 @@ nouvelle paire et la porter.
 				Emplacement : [PATH]
 			</text>
 			<text name="not worn instructions">
-				Pour porter de nouvelles chaussettes, faites-en glisser une paire de votre
-inventaire jusqu&apos;à votre avatar. Vous pouvez aussi en créer une
-nouvelle paire et la porter.
+				Pour changer de chaussettes, faites-en glisser une paire à partir de votre inventaire. Vous pouvez aussi en créer des nouvelles et les porter.
 			</text>
 			<text name="no modify instructions">
 				Vous n&apos;avez pas la permission de modifier cet objet.
@@ -310,8 +302,7 @@ nouvelle paire et la porter.
 				Emplacement : [PATH]
 			</text>
 			<text name="not worn instructions">
-				Pour porter une nouvelle veste, faites-en glisser une de votre inventaire 
-jusqu&apos;à votre avatar. Vous pouvez aussi en créer une nouvelle et la porter.
+				Pour changer de veste, faites-en glisser une à partir de votre inventaire. Vous pouvez aussi en créer une nouvelle et la porter.
 			</text>
 			<text name="no modify instructions">
 				Vous n&apos;avez pas la permission de modifier cet objet.
@@ -345,8 +336,7 @@ jusqu&apos;à votre avatar. Vous pouvez aussi en créer une nouvelle et la porte
 				Emplacement : [PATH]
 			</text>
 			<text name="not worn instructions">
-				Pour porter de nouveaux gants, faites-les glisser à partir de votre
-inventaire. Vous pouvez aussi en créer une nouvelle paire et la porter.
+				Pour changer de gants, faites-en glisser une paire à partir de votre inventaire. Vous pouvez aussi en créer de nouveaux et les porter.
 			</text>
 			<text name="no modify instructions">
 				Vous n&apos;avez pas la permission de modifier cet objet.
@@ -379,8 +369,7 @@ inventaire. Vous pouvez aussi en créer une nouvelle paire et la porter.
 				Emplacement : [PATH]
 			</text>
 			<text name="not worn instructions">
-				Pour porter de nouveaux sous-vêtements, faites-les glisser à partir de
-votre inventaire. Vous pouvez aussi en créer des nouveaux et les porter.
+				Pour changer de sous-vêtements (homme), faites-en glisser à partir de votre inventaire. Vous pouvez aussi en créer de nouveaux et les porter.
 			</text>
 			<text name="no modify instructions">
 				Vous n&apos;avez pas la permission de modifier cet objet.
@@ -414,8 +403,7 @@ votre inventaire. Vous pouvez aussi en créer des nouveaux et les porter.
 				Emplacement : [PATH]
 			</text>
 			<text name="not worn instructions">
-				Pour porter de nouveaux sous-vêtements, faites-les glisser à partir de
-votre inventaire. Vous pouvez aussi en créer des nouveaux et les porter.
+				Pour changer de sous-vêtements (femme), faites-en glisser à partir de votre inventaire. Vous pouvez aussi en créer de nouveaux et les porter.
 			</text>
 			<text name="no modify instructions">
 				Vous n&apos;avez pas la permission de modifier cet objet.
@@ -449,8 +437,7 @@ votre inventaire. Vous pouvez aussi en créer des nouveaux et les porter.
 				Emplacement : [PATH]
 			</text>
 			<text name="not worn instructions">
-				Pour porter une nouvelle jupe, faites-en glisser une à partir de votre 
-inventaire. Vous pouvez aussi en créer une nouvelle et la porter.
+				Pour changer de jupe, faites-en glisser une à partir de votre inventaire. Vous pouvez aussi en créer une nouvelle et la porter.
 			</text>
 			<text name="no modify instructions">
 				Vous n&apos;avez pas la permission de modifier cet objet.
@@ -483,8 +470,7 @@ inventaire. Vous pouvez aussi en créer une nouvelle et la porter.
 				Dans [PATH]
 			</text>
 			<text name="not worn instructions">
-				Pour changer de masque alpha, faites-en glisser un de votre inventaire à votre avatar.
-Vous pouvez aussi en créer un nouveau et le porter.
+				Pour changer de masque alpha, faites-en glisser un de votre inventaire à votre avatar. Vous pouvez aussi en créer un nouveau et le porter.
 			</text>
 			<text name="no modify instructions">
 				Vous n&apos;avez pas le droit de modifier cet objet.
@@ -520,8 +506,7 @@ Vous pouvez aussi en créer un nouveau et le porter.
 				Dans [PATH]
 			</text>
 			<text name="not worn instructions">
-				Pour changer de tatouage, faites-en glisser un de votre inventaire à votre avatar.
-Vous pouvez aussi en créer un nouveau et le porter.
+				Pour changer de tatouage, faites-en glisser un de votre inventaire à votre avatar. Vous pouvez aussi en créer un nouveau et le porter.
 			</text>
 			<text name="no modify instructions">
 				Vous n&apos;avez pas le droit de modifier cet objet.
@@ -540,6 +525,7 @@ Vous pouvez aussi en créer un nouveau et le porter.
 		</panel>
 	</tab_container>
 	<scroll_container left="251" name="panel_container"/>
+	<button label="Infos sur les scripts" label_selected="Infos sur les scripts" name="script_info"/>
 	<button label="Créer tenue" label_selected="Créer une tenue..." name="make_outfit_btn"/>
 	<button label="Annuler" label_selected="Annuler" name="Cancel"/>
 	<button label="OK" label_selected="OK" name="Ok"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_god_tools.xml b/indra/newview/skins/default/xui/fr/floater_god_tools.xml
index 2bf0b9e2f39..0dedf499bbf 100644
--- a/indra/newview/skins/default/xui/fr/floater_god_tools.xml
+++ b/indra/newview/skins/default/xui/fr/floater_god_tools.xml
@@ -12,8 +12,7 @@
 			<line_editor left="85" name="region name" width="198"/>
 			<check_box label="Initiation" name="check prelude" tool_tip="Définir cette région comme zone d&apos;initiation."/>
 			<check_box label="Soleil fixe" name="check fixed sun" tool_tip="Définir la position du soleil (comme dans Région et Domaine &gt; Terrain.)"/>
-			<check_box height="32" label="Réinitialiser le domicile 
-à la téléportation" name="check reset home" tool_tip="Lorsqu&apos;un résident se téléporte à l&apos;extérieur, réinitialise son domicile à la position de sa destination."/>
+			<check_box height="32" label="Réinitialiser le domicile  à la téléportation" name="check reset home" tool_tip="Quand les résidents s&apos;en vont par téléportation, réinitialisez leur domicile sur l&apos;emplacement de destination."/>
 			<check_box bottom_delta="-32" label="Visible" name="check visible" tool_tip="Cochez pour rendre la région visible aux non-admins."/>
 			<check_box label="Dégâts" name="check damage" tool_tip="Cochez pour activer les dégâts dans cette région."/>
 			<check_box label="Bloquer le suivi de trafic" name="block dwell" tool_tip="Cochez pour que la région ne comptabilise pas le trafic."/>
@@ -62,12 +61,9 @@
 			<text left_delta="75" name="region name">
 				Welsh
 			</text>
-			<check_box label="Désactiver les 
-scripts" name="disable scripts" tool_tip="Cochez pour désactiver tous les scripts dans cette région"/>
-			<check_box label="Désactiver les 
-collisions" name="disable collisions" tool_tip="Cochez pour désactiver les collisions entre non-avatars dans cette région"/>
-			<check_box label="Désactiver la 
-physique" name="disable physics" tool_tip="Cochez pour désactiver tous les effets liés à la physique dans cette région"/>
+			<check_box label="Désactiver les  scripts" name="disable scripts" tool_tip="Cochez pour désactiver tous les scripts dans cette région"/>
+			<check_box label="Désactiver les  collisions" name="disable collisions" tool_tip="Cochez pour désactiver les collisions entre non-avatars dans cette région"/>
+			<check_box label="Désactiver la  physique" name="disable physics" tool_tip="Cochez pour désactiver tous les effets liés à la physique dans cette région"/>
 			<button bottom="-85" label="Appliquer" label_selected="Appliquer" name="Apply" tool_tip="Cliquez ici pour appliquer les modifications effectuées ci-dessus."/>
 			<button label="Définir la cible" label_selected="Définir la cible" name="Set Target" tool_tip="Définir l&apos;avatar cible pour la suppression de l&apos;objet."/>
 			<text name="target_avatar_name">
diff --git a/indra/newview/skins/default/xui/fr/floater_im_container.xml b/indra/newview/skins/default/xui/fr/floater_im_container.xml
index 2637dfa6700..5ea073365e3 100644
--- a/indra/newview/skins/default/xui/fr/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/fr/floater_im_container.xml
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="Messages instantanés"/>
+<multi_floater name="floater_im_box" title="CONVERSATIONS"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_incoming_call.xml b/indra/newview/skins/default/xui/fr/floater_incoming_call.xml
index d3c461a4276..110c61aedc9 100644
--- a/indra/newview/skins/default/xui/fr/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/fr/floater_incoming_call.xml
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="incoming call" title="APPEL D&apos;UN(E)INCONNU(E)">
+	<floater.string name="lifetime">
+		5
+	</floater.string>
 	<floater.string name="localchat">
 		Chat vocal près de vous
 	</floater.string>
@@ -12,6 +15,9 @@
 	<floater.string name="VoiceInviteAdHoc">
 		a rejoint un chat vocal avec conférence.
 	</floater.string>
+	<floater.string name="VoiceInviteGroup">
+		a rejoint un chat vocal avec le groupe [GROUP].
+	</floater.string>
 	<text name="question">
 		Voulez-vous quitter [CURRENT_CHAT] et rejoindre ce chat vocal ?
 	</text>
diff --git a/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml b/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml
index af6ae20dfe9..b92c0944dec 100644
--- a/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml
+++ b/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="script ed float" title="WIKI LSL">
+<floater name="script ed float" title="RÉFÉRENCE LSL">
 	<check_box label="Suivre le curseur" name="lock_check"/>
 	<combo_box label="Verrouiller" left_delta="120" name="history_combo" width="70"/>
 	<button label="Précédente" left_delta="75" name="back_btn"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_media_browser.xml b/indra/newview/skins/default/xui/fr/floater_media_browser.xml
index 339ca99c920..0677c5d41f8 100644
--- a/indra/newview/skins/default/xui/fr/floater_media_browser.xml
+++ b/indra/newview/skins/default/xui/fr/floater_media_browser.xml
@@ -20,7 +20,7 @@
 			<button label="en avant" name="seek"/>
 		</layout_panel>
 		<layout_panel name="parcel_owner_controls">
-			<button label="Envoyer l&apos;URL sur la parcelle" name="assign"/>
+			<button label="Envoyer la page actuelle à la parcelle" name="assign"/>
 		</layout_panel>
 		<layout_panel name="external_controls">
 			<button label="Ouvrir dans mon navigateur web" name="open_browser" width="196"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml
new file mode 100644
index 00000000000..f5dfc8d6df9
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="modal container">
+	<button label="Enregistrer" label_selected="Enregistrer" name="Save"/>
+	<button label="Annuler" label_selected="Annuler" name="Cancel"/>
+	<text name="Save item as:">
+		Enregistrer la tenue sous :
+	</text>
+	<line_editor name="name ed">
+		[DESC]
+	</line_editor>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_outgoing_call.xml b/indra/newview/skins/default/xui/fr/floater_outgoing_call.xml
index 38a9109c841..a6f0970502c 100644
--- a/indra/newview/skins/default/xui/fr/floater_outgoing_call.xml
+++ b/indra/newview/skins/default/xui/fr/floater_outgoing_call.xml
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="outgoing call" title="APPEL EN COURS">
+	<floater.string name="lifetime">
+		5
+	</floater.string>
 	<floater.string name="localchat">
 		Chat vocal près de vous
 	</floater.string>
@@ -21,6 +24,12 @@
 	<text name="noanswer">
 		Pas de réponse.  Veuillez réessayer ultérieurement.
 	</text>
+	<text name="nearby">
+		Vous avez été déconnecté(e) de [VOICE_CHANNEL_NAME].  Vous allez maintenant être reconnecté(e) au chat vocal près de vous.
+	</text>
+	<text name="nearby_P2P">
+		[VOICE_CHANNEL_NAME] a mis fin à l&apos;appel.  Vous allez maintenant être reconnecté(e) au chat vocal près de vous.
+	</text>
 	<text name="leaving">
 		En train de quitter [CURRENT_CHAT].
 	</text>
diff --git a/indra/newview/skins/default/xui/fr/floater_preferences.xml b/indra/newview/skins/default/xui/fr/floater_preferences.xml
index 3e6d3611cc9..4db7ca304c0 100644
--- a/indra/newview/skins/default/xui/fr/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preferences.xml
@@ -8,7 +8,7 @@
 		<panel label="Confidentialité" name="im"/>
 		<panel label="Son" name="audio"/>
 		<panel label="Chat" name="chat"/>
-		<panel label="Alertes" name="msgs"/>
+		<panel label="Notifications" name="msgs"/>
 		<panel label="Configuration" name="input"/>
 		<panel label="Avancées" name="advanced1"/>
 	</tab_container>
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml b/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml
index 6e8767ea073..7133f8754ca 100644
--- a/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml
@@ -24,6 +24,9 @@
 	<floater.string name="Title">
 		Geste : [NAME]
 	</floater.string>
+	<text name="name_text">
+		Nom :
+	</text>
 	<text name="desc_label">
 		Description :
 	</text>
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml b/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml
index a10c01a24c0..d6ec915fd1f 100644
--- a/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview notecard" title="Remarque :">
+<floater name="preview notecard" title="NOTE :">
 	<floater.string name="no_object">
 		Impossible de trouver l&apos;objet contenant cette note.
 	</floater.string>
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_texture.xml b/indra/newview/skins/default/xui/fr/floater_preview_texture.xml
index 0acfd723230..2ff14b4a68b 100644
--- a/indra/newview/skins/default/xui/fr/floater_preview_texture.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preview_texture.xml
@@ -9,8 +9,6 @@
 	<text name="desc txt">
 		Description :
 	</text>
-	<button label="OK" name="Keep"/>
-	<button label="Annuler" name="Discard"/>
 	<text name="dimensions">
 		[WIDTH] px x [HEIGHT] px
 	</text>
@@ -43,4 +41,7 @@
 			2:1
 		</combo_item>
 	</combo_box>
+	<button label="OK" name="Keep"/>
+	<button label="Annuler" name="Discard"/>
+	<button label="Enregistrer sous" name="save_tex_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_report_abuse.xml b/indra/newview/skins/default/xui/fr/floater_report_abuse.xml
index c6ffd326509..b96e15e4bbb 100644
--- a/indra/newview/skins/default/xui/fr/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/fr/floater_report_abuse.xml
@@ -42,7 +42,7 @@
 		<combo_box.item label="Sélectionnez une catégorie" name="Select_category"/>
 		<combo_box.item label="Âge &gt; « Age play »" name="Age__Age_play"/>
 		<combo_box.item label="Âge &gt; Résident adulte sur Second Life pour adolescents" name="Age__Adult_resident_on_Teen_Second_Life"/>
-		<combo_box.item label="Âge &gt; Resident mineur en dehors de Teen Second Life" name="Age__Underage_resident_outside_of_Teen_Second_Life"/>
+		<combo_box.item label="Âge &gt; Résident mineur en dehors de Second Life pour adolescents" name="Age__Underage_resident_outside_of_Teen_Second_Life"/>
 		<combo_box.item label="Assaut &gt; Bac à sable utilisé pour des combats/zone non sécurisée" name="Assault__Combat_sandbox___unsafe_area"/>
 		<combo_box.item label="Assaut &gt; Zone sécurisée" name="Assault__Safe_area"/>
 		<combo_box.item label="Assaut &gt; Bac à sable pour tests d&apos;armes à feu" name="Assault__Weapons_testing_sandbox"/>
@@ -68,7 +68,7 @@
 		<combo_box.item label="Indécence &gt; Contenu ou comportement offensifs" name="Indecency__Broadly_offensive_content_or_conduct"/>
 		<combo_box.item label="Indécence &gt; Nom d&apos;avatar inapproprié" name="Indecency__Inappropriate_avatar_name"/>
 		<combo_box.item label="Indécence &gt; Contenu ou conduite inappropriés dans une région PG" name="Indecency__Mature_content_in_PG_region"/>
-		<combo_box.item label="Indécence &gt; Contenu ou conduite inappropriés dans une région Mature" name="Indecency__Inappropriate_content_in_Mature_region"/>
+		<combo_box.item label="Indécence &gt; Contenu ou conduite inappropriés dans une région modérée" name="Indecency__Inappropriate_content_in_Mature_region"/>
 		<combo_box.item label="Violation de droits de propriété intellectuelle &gt; Suppression de contenu" name="Intellectual_property_infringement_Content_Removal"/>
 		<combo_box.item label="Violation de droits de propriété intellectuelle &gt; CopyBot ou exploitation abusive des droits" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/>
 		<combo_box.item label="Intolérance" name="Intolerance"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_script_limits.xml b/indra/newview/skins/default/xui/fr/floater_script_limits.xml
new file mode 100644
index 00000000000..cc3aaa66531
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_script_limits.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="scriptlimits" title="INFORMATIONS SUR LES SCRIPTS"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_search.xml b/indra/newview/skins/default/xui/fr/floater_search.xml
index 8f13b64dea4..672024466a3 100644
--- a/indra/newview/skins/default/xui/fr/floater_search.xml
+++ b/indra/newview/skins/default/xui/fr/floater_search.xml
@@ -6,4 +6,11 @@
 	<floater.string name="done_text">
 		Terminé
 	</floater.string>
+	<layout_stack name="stack1">
+		<layout_panel name="browser_layout">
+			<text name="refresh_search">
+				Relancer la recherche pour refléter le niveau divin actuel
+			</text>
+		</layout_panel>
+	</layout_stack>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_select_key.xml b/indra/newview/skins/default/xui/fr/floater_select_key.xml
index 0dc47df72ba..664bc0a7231 100644
--- a/indra/newview/skins/default/xui/fr/floater_select_key.xml
+++ b/indra/newview/skins/default/xui/fr/floater_select_key.xml
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="modal container">
-	<button label="Annuler" label_selected="Annuler" name="Cancel" />
+	<button label="Annuler" label_selected="Annuler" name="Cancel"/>
 	<text name="Save item as:">
-		Appuyer sur une touche pour choisir
+		Appuyez sur une touche pour définir la touche de contrôle de la fonction Parler.
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_sell_land.xml b/indra/newview/skins/default/xui/fr/floater_sell_land.xml
index 3a06f4e189f..e950a64c4c1 100644
--- a/indra/newview/skins/default/xui/fr/floater_sell_land.xml
+++ b/indra/newview/skins/default/xui/fr/floater_sell_land.xml
@@ -39,7 +39,7 @@
 				Vendez votre terrain à n&apos;importe qui ou uniquement à un acheteur spécifique.
 			</text>
 			<combo_box bottom_delta="-32" name="sell_to">
-				<combo_box.item label="-- Sélectionnez --" name="--selectone--"/>
+				<combo_box.item label="- Sélectionnez -" name="--selectone--"/>
 				<combo_box.item label="Tout le monde" name="Anyone"/>
 				<combo_box.item label="Personne spécifique :" name="Specificuser:"/>
 			</combo_box>
diff --git a/indra/newview/skins/default/xui/fr/floater_snapshot.xml b/indra/newview/skins/default/xui/fr/floater_snapshot.xml
index 6c939b9c68f..486eafef013 100644
--- a/indra/newview/skins/default/xui/fr/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/fr/floater_snapshot.xml
@@ -4,12 +4,12 @@
 		Destination de la photo
 	</text>
 	<radio_group label="Type de photo" name="snapshot_type_radio" width="228">
-		<radio_item label="Envoyer par e-mail" name="postcard"/>
-		<radio_item label="Enregistrer dans votre inventaire ([AMOUNT] L$)" name="texture"/>
-		<radio_item label="Enregistrer sur votre disque dur" name="local"/>
+		<radio_item label="E-mail" name="postcard"/>
+		<radio_item label="Mon inventaire ([AMOUNT] L$)" name="texture"/>
+		<radio_item label="Enregistrer sur mon ordinateur" name="local"/>
 	</radio_group>
-	<button label="Plus &gt;&gt;" name="more_btn" tool_tip="Options avancées"/>
-	<button label="&lt;&lt; Moins" name="less_btn" tool_tip="Options avancées"/>
+	<button label="Plus" name="more_btn" tool_tip="Options avancées"/>
+	<button label="Moins" name="less_btn" tool_tip="Options avancées"/>
 	<text name="type_label2">
 		Taille
 	</text>
@@ -57,13 +57,13 @@
 		<combo_box.item label="Matte des objets" name="ObjectMattes"/>
 	</combo_box>
 	<text name="file_size_label">
-		Taille du fichier : [SIZE] Ko
+		[SIZE] Ko
 	</text>
-	<check_box label="Voir l&apos;interface sur la photo" name="ui_check"/>
-	<check_box label="Voir les éléments HUD sur la photo" name="hud_check"/>
+	<check_box label="Interface" name="ui_check"/>
+	<check_box label="HUD" name="hud_check"/>
 	<check_box label="Garder ouvert après enregistrement" name="keep_open_check"/>
-	<check_box label="Imposer les proportions" name="keep_aspect_check"/>
-	<check_box label="Prévisualisation plein écran (geler l&apos;écran)" name="freeze_frame_check"/>
+	<check_box label="Contraindre les proportions" name="keep_aspect_check"/>
+	<check_box label="Arrêt sur image (plein écran)" name="freeze_frame_check"/>
 	<button label="Rafraîchir" name="new_snapshot_btn"/>
 	<check_box label="Rafraîchissement automatique" name="auto_snapshot_check"/>
 	<button label="Enregistrer ([AMOUNT] L$)" name="upload_btn" width="118"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_sys_well.xml b/indra/newview/skins/default/xui/fr/floater_sys_well.xml
index 279320b04e5..9b0253065c8 100644
--- a/indra/newview/skins/default/xui/fr/floater_sys_well.xml
+++ b/indra/newview/skins/default/xui/fr/floater_sys_well.xml
@@ -1,2 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="notification_chiclet" title="NOTIFICATIONS"/>
+<floater name="notification_chiclet" title="NOTIFICATIONS">
+	<string name="title_im_well_window">
+		SESSIONS IM
+	</string>
+	<string name="title_notification_well_window">
+		NOTIFICATIONS
+	</string>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_telehub.xml b/indra/newview/skins/default/xui/fr/floater_telehub.xml
index 1c65a388284..a50cfc25c1d 100644
--- a/indra/newview/skins/default/xui/fr/floater_telehub.xml
+++ b/indra/newview/skins/default/xui/fr/floater_telehub.xml
@@ -21,11 +21,9 @@ le téléhub.
 	<button label="Ajouter point" name="add_spawn_point_btn"/>
 	<button label="Supprimer point" name="remove_spawn_point_btn"/>
 	<text name="spawn_point_help">
-		Sélectionnez l&apos;objet et cliquez sur Ajouter pour
-indiquer la position. Vous pourrez ensuite
-déplacer ou supprimer l&apos;objet.
+		Sélectionnez l&apos;objet et cliquez sur Ajouter pour indiquer la position.
+Vous pourrez ensuite déplacer ou supprimer l&apos;objet.
 Les positions sont relatives au centre du téléhub.
-Sélectionnez l&apos;élément dans la liste pour afficher
-sa position dans le Monde.
+Sélectionnez un objet dans la liste pour le mettre en surbrillance dans le monde virtuel.
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml
index 197651c8fb4..381bcceb005 100644
--- a/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml
@@ -17,7 +17,7 @@
 	<check_box label="Appliquer maintenant" name="apply_immediate_check"/>
 	<button bottom="-240" label="" label_selected="" name="Pipette"/>
 	<button label="Annuler" label_selected="Annuler" name="Cancel"/>
-	<button label="Ok" label_selected="Ok" name="Select"/>
+	<button label="OK" label_selected="OK" name="Select"/>
 	<string name="pick title">
 		Choisir :
 	</string>
diff --git a/indra/newview/skins/default/xui/fr/floater_tools.xml b/indra/newview/skins/default/xui/fr/floater_tools.xml
index e5a5998cfb0..3488ae15d10 100644
--- a/indra/newview/skins/default/xui/fr/floater_tools.xml
+++ b/indra/newview/skins/default/xui/fr/floater_tools.xml
@@ -451,12 +451,12 @@
 			<spinner label="Vertical (V)" name="TexOffsetV"/>
 			<panel name="Add_Media">
 				<text name="media_tex">
-					URL du média
+					Média
 				</text>
 				<button name="add_media" tool_tip="Ajouter un média"/>
 				<button name="delete_media" tool_tip="Supprimer cette texture de média"/>
 				<button name="edit_media" tool_tip="Modifier ce média"/>
-				<button label="Aligner" label_selected="Aligner le média" name="button align"/>
+				<button label="Aligner" label_selected="Aligner le média" name="button align" tool_tip="Ajuster la texture du média (le chargement doit d&apos;abord se terminer)"/>
 			</panel>
 		</panel>
 		<panel label="Contenu" name="Contents">
@@ -475,14 +475,7 @@
 			Surface : [AREA] m²
 		</text>
 		<button label="À propos des terrains" label_selected="À propos des terrains" name="button about land" width="142"/>
-		<check_box label="Afficher les propriétaires" name="checkbox show owners" tool_tip="Colorier les parcelles en fonction du type de leur propriétaire : 
-
-Vert = votre terrain 
-Turquoise = le terrain de votre groupe 
-Rouge = appartenant à d&apos;autres 
-Jaune = en vente 
-Mauve = aux enchères 
-Gris = public"/>
+		<check_box label="Afficher les propriétaires" name="checkbox show owners" tool_tip="Colorier les parcelles en fonction du type de leur propriétaire :   Vert = votre terrain  Turquoise = le terrain de votre groupe  Rouge = appartenant à d&apos;autres  Jaune = en vente  Mauve = aux enchères  Gris = public"/>
 		<text name="label_parcel_modify">
 			Modifier la parcelle
 		</text>
diff --git a/indra/newview/skins/default/xui/fr/floater_top_objects.xml b/indra/newview/skins/default/xui/fr/floater_top_objects.xml
index 479559367f8..42352e7c1e9 100644
--- a/indra/newview/skins/default/xui/fr/floater_top_objects.xml
+++ b/indra/newview/skins/default/xui/fr/floater_top_objects.xml
@@ -1,55 +1,56 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="top_objects" title="EN COURS DE CHARGEMENT...">
+<floater name="top_objects" title="Objets les plus utilisés">
+	<floater.string name="top_scripts_title">
+		Scripts principaux
+	</floater.string>
+	<floater.string name="top_scripts_text">
+		[COUNT] scripts prenant un total de [TIME] ms
+	</floater.string>
+	<floater.string name="scripts_score_label">
+		Heure
+	</floater.string>
+	<floater.string name="scripts_mono_time_label">
+		Heure Mono
+	</floater.string>
+	<floater.string name="top_colliders_title">
+		Collisions les plus consommatrices
+	</floater.string>
+	<floater.string name="top_colliders_text">
+		[COUNT] collisions les plus consommatrices
+	</floater.string>
+	<floater.string name="colliders_score_label">
+		Score
+	</floater.string>
+	<floater.string name="none_descriptor">
+		Aucun résultat.
+	</floater.string>
 	<text name="title_text">
 		Chargement...
 	</text>
 	<scroll_list name="objects_list">
-		<column label="Score" name="score"/>
-		<column label="Nom" name="name"/>
-		<column label="Propriétaire" name="owner"/>
-		<column label="Lieu" name="location"/>
-		<column label="Heure" name="time"/>
-		<column label="Heure Mono" name="mono_time"/>
+		<scroll_list.columns label="Score" name="score"/>
+		<scroll_list.columns label="Nom" name="name"/>
+		<scroll_list.columns label="Propriétaire" name="owner"/>
+		<scroll_list.columns label="Lieu" name="location"/>
+		<scroll_list.columns label="Heure" name="time"/>
+		<scroll_list.columns label="Heure Mono" name="mono_time"/>
+		<scroll_list.columns label="URL" name="URLs"/>
 	</scroll_list>
 	<text name="id_text">
 		ID de l&apos;objet :
 	</text>
 	<button label="Afficher balise" name="show_beacon_btn"/>
 	<text name="obj_name_text">
-		Objet :
+		Nom :
 	</text>
 	<button label="Filtre" name="filter_object_btn"/>
 	<text name="owner_name_text">
-		Propriétaire :
+		Propriétaire :
 	</text>
 	<button label="Filtre" name="filter_owner_btn"/>
+	<button label="Rafraîchir" name="refresh_btn"/>
 	<button label="Renvoyer" name="return_selected_btn"/>
 	<button label="Tout renvoyer" name="return_all_btn"/>
 	<button label="Désactiver" name="disable_selected_btn"/>
 	<button label="Tout désactiver" name="disable_all_btn"/>
-	<button label="Rafraîchir" name="refresh_btn"/>
-	<string name="top_scripts_title">
-		Scripts principaux
-	</string>
-	<string name="top_scripts_text">
-		[COUNT] scripts prenant un total de [TIME] ms
-	</string>
-	<string name="scripts_score_label">
-		Heure
-	</string>
-	<string name="scripts_mono_time_label">
-		Heure Mono
-	</string>
-	<string name="top_colliders_title">
-		Collisions les plus consommatrices
-	</string>
-	<string name="top_colliders_text">
-		[COUNT] collisions les plus consommatrices
-	</string>
-	<string name="colliders_score_label">
-		Score
-	</string>
-	<string name="none_descriptor">
-		Aucun résultat.
-	</string>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_voice_controls.xml b/indra/newview/skins/default/xui/fr/floater_voice_controls.xml
index 02d64306995..54ba2ad3e50 100644
--- a/indra/newview/skins/default/xui/fr/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/fr/floater_voice_controls.xml
@@ -1,13 +1,23 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="floater_voice_controls" title="Contrôles vocaux">
-	<panel name="control_panel">
-		<panel name="my_panel">
-			<text name="user_text" value="Mon avatar :"/>
-		</panel>
-		<layout_stack>
-			<layout_panel>
-				<slider_bar name="volume_slider_bar" tool_tip="Volume principal"/>
-			</layout_panel>
-		</layout_stack>
-	</panel>
+	<string name="title_nearby">
+		CHAT VOCAL PRÈS DE VOUS
+	</string>
+	<string name="title_group">
+		Appel de groupe avec [GROUP]
+	</string>
+	<string name="title_adhoc">
+		Téléconférence
+	</string>
+	<string name="title_peer_2_peer">
+		Appel avec [NAME]
+	</string>
+	<string name="no_one_near">
+		Il n&apos;y a personne près de vous avec le chat vocal activé
+	</string>
+	<layout_stack name="my_call_stack">
+		<layout_panel name="leave_call_btn_panel">
+			<button label="Quitter l&apos;appel" name="leave_call_btn"/>
+		</layout_panel>
+	</layout_stack>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/fr/floater_whitelist_entry.xml
index f1ba403bf9d..99e4954555a 100644
--- a/indra/newview/skins/default/xui/fr/floater_whitelist_entry.xml
+++ b/indra/newview/skins/default/xui/fr/floater_whitelist_entry.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="whitelist_entry">
+<floater name="whitelist_entry" title="ENTRÉE DE LA LISTE BLANCHE">
 	<text name="media_label">
 		Saisissez une URL ou un style d&apos;URL à ajouter à la liste des domaines autorisés
 	</text>
diff --git a/indra/newview/skins/default/xui/fr/floater_window_size.xml b/indra/newview/skins/default/xui/fr/floater_window_size.xml
new file mode 100644
index 00000000000..cbda4390d8f
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_window_size.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="window_size" title="TAILLE DE LA FENÊTRE">
+	<string name="resolution_format">
+		[RES_X] x [RES_Y]
+	</string>
+	<text name="windowsize_text">
+		Définir la taille de la fenêtre :
+	</text>
+	<combo_box name="window_size_combo" tool_tip="largeur x hauteur">
+		<combo_box.item label="1 000 x 700 (défaut)" name="item0"/>
+		<combo_box.item label="1 024 x 768" name="item1"/>
+		<combo_box.item label="1 280 x 720 (720 p)" name="item2"/>
+		<combo_box.item label="1 920 x 1 080 (1 080p)" name="item3"/>
+	</combo_box>
+	<button label="Choisir" name="set_btn"/>
+	<button label="Annuler" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_world_map.xml b/indra/newview/skins/default/xui/fr/floater_world_map.xml
index 03bbd0af084..3ac3580d4b9 100644
--- a/indra/newview/skins/default/xui/fr/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/fr/floater_world_map.xml
@@ -1,68 +1,90 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="worldmap" title="CARTE DU MONDE">
 	<panel name="objects_mapview" width="542"/>
-	<icon left="-270" name="self"/>
-	<text name="you_label">
-		Vous
-	</text>
-	<icon name="home"/>
-	<text name="home_label">
-		Domicile
-	</text>
-	<icon left="-270" name="square2"/>
-	<text name="auction_label">
-		Terrain aux enchères
-	</text>
-	<icon left_delta="130" name="square"/>
-	<text name="land_for_sale_label">
-		Terrain à vendre
-	</text>
-	<button label="Aller chez moi" label_selected="Aller chez moi" left="-120" name="Go Home" tool_tip="Vous téléporte à votre domicile" width="108"/>
-	<icon left="-262" name="person"/>
-	<check_box label="Résident" name="people_chk"/>
-	<icon left="-266" name="infohub"/>
-	<check_box label="Infohub" name="infohub_chk"/>
-	<icon left="-266" name="telehub"/>
-	<check_box label="Téléhub" name="telehub_chk"/>
-	<icon left="-266" name="landforsale"/>
-	<check_box label="Terrain à vendre" name="land_for_sale_chk"/>
-	<text left="-144" name="events_label">
-		Événements :
-	</text>
-	<icon left="-132" name="event"/>
-	<check_box label="PG" name="event_chk"/>
-	<icon left="-132" name="events_mature_icon"/>
-	<check_box initial_value="true" label="Mature" name="event_mature_chk"/>
-	<icon left="-132" name="events_adult_icon"/>
-	<check_box label="Adult" name="event_adult_chk"/>
-	<icon left="-270" name="avatar_icon"/>
-	<combo_box label="Amis connectés" name="friend combo" tool_tip="Ami(e) à afficher sur la carte" width="232">
-		<combo_box.item label="Amis connectés" name="item1"/>
-	</combo_box>
-	<icon left="-270" name="landmark_icon"/>
-	<combo_box label="Repères" name="landmark combo" tool_tip="Repère à afficher sur la carte" width="232">
-		<combo_box.item label="Repères" name="item1"/>
-	</combo_box>
-	<icon left="-270" name="location_icon"/>
-	<line_editor label="Rechercher par nom de région" name="location" tool_tip="Saisissez le nom d&apos;une région" width="155"/>
-	<button label="Rechercher" label_selected="&gt;" left_delta="160" name="DoSearch" tool_tip="Recherchez sur la carte" width="75"/>
-	<text left="-270" name="search_label">
-		Résultats de la recherche :
-	</text>
-	<scroll_list left="-270" name="search_results" width="252">
-		<scroll_list.columns label="" name="icon"/>
-		<scroll_list.columns label="" name="sim_name"/>
-	</scroll_list>
-	<text left="-270" name="location_label">
-		Emplacement :
-	</text>
-	<spinner left_delta="100" name="spin x" tool_tip="Coordonnées des X du lieu à afficher sur la carte"/>
-	<spinner name="spin y" tool_tip="Coordonnées des Y du lieu à afficher sur la carte"/>
-	<spinner name="spin z" tool_tip="Coordonnées des Z du lieu à afficher sur la carte"/>
-	<button label="Téléporter" label_selected="Téléporter" left="-270" name="Teleport" tool_tip="Téléporter à l&apos;endroit sélectionné"/>
-	<button label="Afficher la destination" label_selected="Afficher la destination" name="Show Destination" tool_tip="Centrer la carte sur l&apos;endroit sélectionné" width="165"/>
-	<button label="Effacer" label_selected="Effacer" left="-270" name="Clear" tool_tip="Arrêter de suivre"/>
-	<button label="Afficher mon emplacement" label_selected="Afficher mon emplacement" name="Show My Location" tool_tip="Centrer la carte sur l&apos;emplacement de votre avatar" width="165"/>
-	<button label="Copier la SLurl dans le presse-papiers" left="-270" name="copy_slurl" tool_tip="Copie l&apos;emplacement actuel sous la forme d&apos;une SLurl à utiliser sur le Web."/>
-	<slider label="Zoom" left="-270" name="zoom slider"/>
+	<panel name="layout_panel_1">
+		<text name="events_label">
+			Légende
+		</text>
+	</panel>
+	<panel>
+		<button label="Afficher mon emplacement" label_selected="Afficher mon emplacement" name="Show My Location" tool_tip="Centrer la carte sur l&apos;emplacement de mon avatar" width="165"/>
+		<text name="me_label">
+			Moi
+		</text>
+		<check_box label="Résident" name="people_chk"/>
+		<icon left="-262" name="person"/>
+		<text name="person_label">
+			Résident
+		</text>
+		<check_box label="Infohub" name="infohub_chk"/>
+		<icon left="-266" name="infohub"/>
+		<text name="infohub_label">
+			Infohub
+		</text>
+		<check_box label="Terrain à vendre" name="land_for_sale_chk"/>
+		<icon left="-266" name="landforsale"/>
+		<text name="land_sale_label">
+			Vente de terrains
+		</text>
+		<icon left="-270" name="square2"/>
+		<text name="by_owner_label">
+			par le propriétaire
+		</text>
+		<text name="auction_label">
+			enchères
+		</text>
+		<button label="Aller chez moi" label_selected="Aller chez moi" left="-120" name="Go Home" tool_tip="Me téléporter jusqu&apos;à mon domicile" width="108"/>
+		<text name="Home_label">
+			Domicile
+		</text>
+		<text left="-144" name="events_label">
+			Événements :
+		</text>
+		<check_box label="PG" name="event_chk"/>
+		<icon left="-132" name="event"/>
+		<text name="pg_label">
+			Général
+		</text>
+		<check_box initial_value="true" label="Mature" name="event_mature_chk"/>
+		<icon left="-132" name="events_mature_icon"/>
+		<text name="mature_label">
+			Modéré
+		</text>
+		<check_box label="Adult" name="event_adult_chk"/>
+		<icon left="-132" name="events_adult_icon"/>
+		<text name="adult_label">
+			Adulte
+		</text>
+	</panel>
+	<panel>
+		<text name="find_on_map_label">
+			Situer sur la carte
+		</text>
+	</panel>
+	<panel>
+		<combo_box label="Amis connectés" name="friend combo" tool_tip="Afficher les amis sur la carte" width="232">
+			<combo_box.item label="Mes amis connectés" name="item1"/>
+		</combo_box>
+		<icon left="-270" name="landmark_icon"/>
+		<combo_box label="Mes repères" name="landmark combo" tool_tip="Repère à afficher sur la carte" width="232">
+			<combo_box.item label="Mes repères" name="item1"/>
+		</combo_box>
+		<search_editor label="Régions par nom" name="location" tool_tip="Saisissez le nom d&apos;une région" width="155"/>
+		<button label="Trouver" label_selected="&gt;" left_delta="160" name="DoSearch" tool_tip="Recherchez sur la carte" width="75"/>
+		<scroll_list left="-270" name="search_results" width="252">
+			<scroll_list.columns label="" name="icon"/>
+			<scroll_list.columns label="" name="sim_name"/>
+		</scroll_list>
+		<button label="Téléporter" label_selected="Téléporter" left="-270" name="Teleport" tool_tip="Téléporter à l&apos;endroit sélectionné"/>
+		<button label="Copier la SLurl" left="-270" name="copy_slurl" tool_tip="Copie l&apos;emplacement actuel sous la forme d&apos;une SLurl à utiliser sur le Web."/>
+		<button label="Afficher la sélection" label_selected="Afficher la destination" name="Show Destination" tool_tip="Centrer la carte sur l&apos;endroit sélectionné" width="165"/>
+	</panel>
+	<panel>
+		<text name="zoom_label">
+			Zoomer
+		</text>
+	</panel>
+	<panel>
+		<slider label="Zoom" left="-270" name="zoom slider"/>
+	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/inspect_avatar.xml b/indra/newview/skins/default/xui/fr/inspect_avatar.xml
index bfc4e065308..be23369dc72 100644
--- a/indra/newview/skins/default/xui/fr/inspect_avatar.xml
+++ b/indra/newview/skins/default/xui/fr/inspect_avatar.xml
@@ -10,19 +10,17 @@
 	<string name="Details">
 		[SL_PROFILE]
 	</string>
-	<string name="Partner">
-		Partenaire : [PARTNER]
-	</string>
 	<text name="user_name" value="Grumpity ProductEngine"/>
 	<text name="user_subtitle" value="11 mois, 3 jours"/>
 	<text name="user_details">
 		C&apos;est ma description second life et je la trouve vraiment géniale.
 	</text>
-	<text name="user_partner">
-		Erica Linden
-	</text>
 	<slider name="volume_slider" tool_tip="Volume de la voix" value="0.5"/>
 	<button label="Devenir amis" name="add_friend_btn"/>
 	<button label="IM" name="im_btn"/>
 	<button label="Plus" name="view_profile_btn"/>
+	<panel name="moderator_panel">
+		<button label="Désactiver le chat vocal" name="disable_voice"/>
+		<button label="Activer le chat vocal" name="enable_voice"/>
+	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/inspect_group.xml b/indra/newview/skins/default/xui/fr/inspect_group.xml
index 9d6095632ea..4519c380c5a 100644
--- a/indra/newview/skins/default/xui/fr/inspect_group.xml
+++ b/indra/newview/skins/default/xui/fr/inspect_group.xml
@@ -31,4 +31,5 @@ Méfiez-vous de l&apos;orignal ! Méfiez-vous ! Et de la mangouste aussi !
 	</text>
 	<button label="Vous inscrire" name="join_btn"/>
 	<button label="Quitter" name="leave_btn"/>
+	<button label="Voir le profil" name="view_profile_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/menu_attachment_other.xml b/indra/newview/skins/default/xui/fr/menu_attachment_other.xml
new file mode 100644
index 00000000000..ccb93f129ea
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_attachment_other.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- *NOTE: See also menu_avatar_other.xml -->
+<context_menu name="Avatar Pie">
+	<menu_item_call label="Voir le profil" name="Profile..."/>
+	<menu_item_call label="Devenir amis" name="Add Friend"/>
+	<menu_item_call label="IM" name="Send IM..."/>
+	<menu_item_call label="Appeler" name="Call"/>
+	<menu_item_call label="Inviter dans le groupe" name="Invite..."/>
+	<menu_item_call label="Ignorer" name="Avatar Mute"/>
+	<menu_item_call label="Signaler" name="abuse"/>
+	<menu_item_call label="Geler" name="Freeze..."/>
+	<menu_item_call label="Expulser" name="Eject..."/>
+	<menu_item_call label="Débogage" name="Debug..."/>
+	<menu_item_call label="Zoomer en avant" name="Zoom In"/>
+	<menu_item_call label="Payer" name="Pay..."/>
+	<menu_item_call label="Profil de l&apos;objet" name="Object Inspect"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_attachment_self.xml b/indra/newview/skins/default/xui/fr/menu_attachment_self.xml
new file mode 100644
index 00000000000..999a1c156ca
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_attachment_self.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Attachment Pie">
+	<menu_item_call label="Toucher" name="Attachment Object Touch"/>
+	<menu_item_call label="Éditer" name="Edit..."/>
+	<menu_item_call label="Détacher" name="Detach"/>
+	<menu_item_call label="Lâcher" name="Drop"/>
+	<menu_item_call label="Me lever" name="Stand Up"/>
+	<menu_item_call label="Mon apparence" name="Appearance..."/>
+	<menu_item_call label="Mes amis" name="Friends..."/>
+	<menu_item_call label="Mes groupes" name="Groups..."/>
+	<menu_item_call label="Mon profil" name="Profile..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_avatar_icon.xml b/indra/newview/skins/default/xui/fr/menu_avatar_icon.xml
index 8f3dfae86ec..3bac25c79b8 100644
--- a/indra/newview/skins/default/xui/fr/menu_avatar_icon.xml
+++ b/indra/newview/skins/default/xui/fr/menu_avatar_icon.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="Avatar Icon Menu">
-	<menu_item_call label="Voir le profil..." name="Show Profile"/>
+	<menu_item_call label="Voir le profil" name="Show Profile"/>
 	<menu_item_call label="Envoyer IM..." name="Send IM"/>
 	<menu_item_call label="Devenir amis..." name="Add Friend"/>
 	<menu_item_call label="Supprimer cet ami..." name="Remove Friend"/>
diff --git a/indra/newview/skins/default/xui/fr/menu_avatar_other.xml b/indra/newview/skins/default/xui/fr/menu_avatar_other.xml
new file mode 100644
index 00000000000..289912cd05b
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_avatar_other.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- *NOTE: See also menu_attachment_other.xml -->
+<context_menu name="Avatar Pie">
+	<menu_item_call label="Voir le profil" name="Profile..."/>
+	<menu_item_call label="Devenir amis" name="Add Friend"/>
+	<menu_item_call label="IM" name="Send IM..."/>
+	<menu_item_call label="Appeler" name="Call"/>
+	<menu_item_call label="Inviter dans le groupe" name="Invite..."/>
+	<menu_item_call label="Ignorer" name="Avatar Mute"/>
+	<menu_item_call label="Signaler" name="abuse"/>
+	<menu_item_call label="Geler" name="Freeze..."/>
+	<menu_item_call label="Expulser" name="Eject..."/>
+	<menu_item_call label="Débogage" name="Debug..."/>
+	<menu_item_call label="Zoomer en avant" name="Zoom In"/>
+	<menu_item_call label="Payer" name="Pay..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_avatar_self.xml b/indra/newview/skins/default/xui/fr/menu_avatar_self.xml
new file mode 100644
index 00000000000..82945cf96ec
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_avatar_self.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Self Pie">
+	<menu_item_call label="Me lever" name="Stand Up"/>
+	<context_menu label="Enlever &gt;" name="Take Off &gt;">
+		<context_menu label="Habits &gt;" name="Clothes &gt;">
+			<menu_item_call label="Chemise" name="Shirt"/>
+			<menu_item_call label="Pantalon" name="Pants"/>
+			<menu_item_call label="Jupe" name="Skirt"/>
+			<menu_item_call label="Chaussures" name="Shoes"/>
+			<menu_item_call label="Chaussettes" name="Socks"/>
+			<menu_item_call label="Veste" name="Jacket"/>
+			<menu_item_call label="Gants" name="Gloves"/>
+			<menu_item_call label="Sous-vêtements (homme)" name="Self Undershirt"/>
+			<menu_item_call label="Sous-vêtements (femme)" name="Self Underpants"/>
+			<menu_item_call label="Tatouage" name="Self Tattoo"/>
+			<menu_item_call label="Alpha" name="Self Alpha"/>
+			<menu_item_call label="Tous les habits" name="All Clothes"/>
+		</context_menu>
+		<context_menu label="HUD &gt;" name="Object Detach HUD"/>
+		<context_menu label="Détacher &gt;" name="Object Detach"/>
+		<menu_item_call label="Tout détacher" name="Detach All"/>
+	</context_menu>
+	<menu_item_call label="Mon apparence" name="Appearance..."/>
+	<menu_item_call label="Mes amis" name="Friends..."/>
+	<menu_item_call label="Mes groupes" name="Groups..."/>
+	<menu_item_call label="Mon profil" name="Profile..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_bottomtray.xml b/indra/newview/skins/default/xui/fr/menu_bottomtray.xml
index 46db635afd9..3229940980d 100644
--- a/indra/newview/skins/default/xui/fr/menu_bottomtray.xml
+++ b/indra/newview/skins/default/xui/fr/menu_bottomtray.xml
@@ -4,4 +4,9 @@
 	<menu_item_check label="Bouton Bouger" name="ShowMoveButton"/>
 	<menu_item_check label="Bouton Afficher" name="ShowCameraButton"/>
 	<menu_item_check label="Bouton Photo" name="ShowSnapshotButton"/>
+	<menu_item_call label="Couper" name="NearbyChatBar_Cut"/>
+	<menu_item_call label="Copier" name="NearbyChatBar_Copy"/>
+	<menu_item_call label="Coller" name="NearbyChatBar_Paste"/>
+	<menu_item_call label="Supprimer" name="NearbyChatBar_Delete"/>
+	<menu_item_call label="Tout sélectionner" name="NearbyChatBar_Select_All"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_im_well_button.xml b/indra/newview/skins/default/xui/fr/menu_im_well_button.xml
new file mode 100644
index 00000000000..8ef1529e6b4
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_im_well_button.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="IM Well Button Context Menu">
+	<menu_item_call label="Tout fermer" name="Close All"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/fr/menu_imchiclet_adhoc.xml
new file mode 100644
index 00000000000..4d9a1030581
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_imchiclet_adhoc.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="IMChiclet AdHoc Menu">
+	<menu_item_call label="Mettre fin à la session" name="End Session"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/fr/menu_imchiclet_p2p.xml
index b1683ffcd02..ecc8cee4139 100644
--- a/indra/newview/skins/default/xui/fr/menu_imchiclet_p2p.xml
+++ b/indra/newview/skins/default/xui/fr/menu_imchiclet_p2p.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="IMChiclet P2P Menu">
-	<menu_item_call label="Afficher le profil" name="Show Profile"/>
+	<menu_item_call label="Voir le profil" name="Show Profile"/>
 	<menu_item_call label="Devenir amis" name="Add Friend"/>
 	<menu_item_call label="Afficher la session" name="Send IM"/>
 	<menu_item_call label="Mettre fin à la session" name="End Session"/>
diff --git a/indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml
index 9a4926b6785..39ba4b1074d 100644
--- a/indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml
+++ b/indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml
@@ -7,6 +7,7 @@
 	<menu_item_call label="Téléporter" name="teleport"/>
 	<menu_item_call label="Inviter dans le groupe" name="invite_to_group"/>
 	<menu_item_call label="Ignorer" name="block"/>
+	<menu_item_call label="Ne plus ignorer" name="unblock"/>
 	<menu_item_call label="Signaler" name="report"/>
 	<menu_item_call label="Geler" name="freeze"/>
 	<menu_item_call label="Expulser" name="eject"/>
diff --git a/indra/newview/skins/default/xui/fr/menu_inventory.xml b/indra/newview/skins/default/xui/fr/menu_inventory.xml
index d6da4b5557f..5276aa5b7e1 100644
--- a/indra/newview/skins/default/xui/fr/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/fr/menu_inventory.xml
@@ -46,6 +46,9 @@
 	<menu_item_call label="Téléporter" name="Landmark Open"/>
 	<menu_item_call label="Ouvrir" name="Animation Open"/>
 	<menu_item_call label="Ouvrir" name="Sound Open"/>
+	<menu_item_call label="Remplacer la tenue actuelle" name="Replace Outfit"/>
+	<menu_item_call label="Ajouter à la tenue actuelle" name="Add To Outfit"/>
+	<menu_item_call label="Enlever de la tenue actuelle" name="Remove From Outfit"/>
 	<menu_item_call label="Purger l&apos;objet" name="Purge Item"/>
 	<menu_item_call label="Restaurer l&apos;objet" name="Restore Item"/>
 	<menu_item_call label="Trouver l&apos;original" name="Find Original"/>
@@ -56,10 +59,9 @@
 	<menu_item_call label="Copier" name="Copy"/>
 	<menu_item_call label="Coller" name="Paste"/>
 	<menu_item_call label="Coller comme lien" name="Paste As Link"/>
+	<menu_item_call label="Supprimer le lien" name="Remove Link"/>
 	<menu_item_call label="Supprimer" name="Delete"/>
-	<menu_item_call label="Enlever de la tenue" name="Remove From Outfit"/>
-	<menu_item_call label="Ajouter à l&apos;ensemble" name="Add To Outfit"/>
-	<menu_item_call label="Remplacer l&apos;ensemble" name="Replace Outfit"/>
+	<menu_item_call label="Supprimer le dossier système" name="Delete System Folder"/>
 	<menu_item_call label="Démarrer le chat conférence" name="Conference Chat Folder"/>
 	<menu_item_call label="Jouer" name="Sound Play"/>
 	<menu_item_call label="À propos du repère" name="About Landmark"/>
diff --git a/indra/newview/skins/default/xui/fr/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/fr/menu_inventory_gear_default.xml
index 5fe7a215a42..91bccfd699b 100644
--- a/indra/newview/skins/default/xui/fr/menu_inventory_gear_default.xml
+++ b/indra/newview/skins/default/xui/fr/menu_inventory_gear_default.xml
@@ -9,4 +9,6 @@
 	<menu_item_call label="Vider la corbeille" name="empty_trash"/>
 	<menu_item_call label="Vider les Objets trouvés" name="empty_lostnfound"/>
 	<menu_item_call label="Enregistrer la texture sous" name="Save Texture As"/>
+	<menu_item_call label="Trouver l&apos;original" name="Find Original"/>
+	<menu_item_call label="Trouver tous les liens" name="Find All Links"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_land.xml b/indra/newview/skins/default/xui/fr/menu_land.xml
new file mode 100644
index 00000000000..80cc49aa42f
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_land.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Land Pie">
+	<menu_item_call label="À propos des terrains" name="Place Information..."/>
+	<menu_item_call label="M&apos;asseoir ici" name="Sit Here"/>
+	<menu_item_call label="Acheter ce terrain" name="Land Buy"/>
+	<menu_item_call label="Acheter un pass" name="Land Buy Pass"/>
+	<menu_item_call label="Construire" name="Create"/>
+	<menu_item_call label="Modifier le terrain" name="Edit Terrain"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_login.xml b/indra/newview/skins/default/xui/fr/menu_login.xml
index ac262a75e62..fc42b029083 100644
--- a/indra/newview/skins/default/xui/fr/menu_login.xml
+++ b/indra/newview/skins/default/xui/fr/menu_login.xml
@@ -23,10 +23,8 @@
 		<menu_item_call label="Afficher les paramètres de débogage" name="Debug Settings"/>
 		<menu_item_call label="Paramètres de couleurs/interface" name="UI/Color Settings"/>
 		<menu_item_call label="Outil d&apos;aperçu XUI" name="UI Preview Tool"/>
-		<menu_item_call label="Afficher la barre latérale" name="Show Side Tray"/>
-		<menu_item_call label="Test widget" name="Widget Test"/>
-		<menu_item_call label="Tests inspecteurs" name="Inspectors Test"/>
-		<menu_item_check label="Reg In Client Test (restart)" name="Reg In Client Test (restart)"/>
+		<menu label="Tests de l&apos;interface" name="UI Tests"/>
+		<menu_item_call label="Définir la taille de la fenêtre..." name="Set Window Size..."/>
 		<menu_item_call label="Afficher les conditions d&apos;utilisation" name="TOS"/>
 		<menu_item_call label="Afficher le message critique" name="Critical"/>
 		<menu_item_call label="Test du navigateur Web" name="Web Browser Test"/>
diff --git a/indra/newview/skins/default/xui/fr/menu_notification_well_button.xml b/indra/newview/skins/default/xui/fr/menu_notification_well_button.xml
new file mode 100644
index 00000000000..323bfdbf165
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_notification_well_button.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Notification Well Button Context Menu">
+	<menu_item_call label="Tout fermer" name="Close All"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_object.xml b/indra/newview/skins/default/xui/fr/menu_object.xml
new file mode 100644
index 00000000000..b6775661adb
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_object.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Object Pie">
+	<menu_item_call label="Toucher" name="Object Touch"/>
+	<menu_item_call label="Éditer" name="Edit..."/>
+	<menu_item_call label="Construire" name="Build"/>
+	<menu_item_call label="Ouvrir" name="Open"/>
+	<menu_item_call label="M&apos;asseoir ici" name="Object Sit"/>
+	<menu_item_call label="Profil de l&apos;objet" name="Object Inspect"/>
+	<menu_item_call label="Zoomer en avant" name="Zoom In"/>
+	<context_menu label="Porter &gt;" name="Put On">
+		<menu_item_call label="Porter" name="Wear"/>
+		<context_menu label="Joindre &gt;" name="Object Attach"/>
+		<context_menu label="Joindre les éléments HUD &gt;" name="Object Attach HUD"/>
+	</context_menu>
+	<context_menu label="Supprimer &gt;" name="Remove">
+		<menu_item_call label="Prendre" name="Pie Object Take"/>
+		<menu_item_call label="Signaler une infraction" name="Report Abuse..."/>
+		<menu_item_call label="Ignorer" name="Object Mute"/>
+		<menu_item_call label="Retour" name="Return..."/>
+		<menu_item_call label="Supprimer" name="Delete"/>
+	</context_menu>
+	<menu_item_call label="Prendre une copie" name="Take Copy"/>
+	<menu_item_call label="Payer" name="Pay..."/>
+	<menu_item_call label="Acheter" name="Buy..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_participant_list.xml b/indra/newview/skins/default/xui/fr/menu_participant_list.xml
index 96d9a003cdf..c8f5b5f1add 100644
--- a/indra/newview/skins/default/xui/fr/menu_participant_list.xml
+++ b/indra/newview/skins/default/xui/fr/menu_participant_list.xml
@@ -1,5 +1,20 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Participant List Context Menu">
+	<menu_item_check label="Trier par nom" name="SortByName"/>
+	<menu_item_check label="Trier par intervenants récents" name="SortByRecentSpeakers"/>
+	<menu_item_call label="Voir le profil" name="View Profile"/>
+	<menu_item_call label="Devenir amis" name="Add Friend"/>
+	<menu_item_call label="IM" name="IM"/>
+	<menu_item_call label="Appeler" name="Call"/>
+	<menu_item_call label="Partager" name="Share"/>
+	<menu_item_call label="Payer" name="Pay"/>
+	<menu_item_check label="Bloquer le chat vocal" name="Block/Unblock"/>
 	<menu_item_check label="Ignorer le texte" name="MuteText"/>
-	<menu_item_check label="Autoriser les chats écrits" name="AllowTextChat"/>
+	<context_menu label="Options du modérateur &gt;" name="Moderator Options">
+		<menu_item_check label="Autoriser les chats écrits" name="AllowTextChat"/>
+		<menu_item_call label="Ignorer ce participant" name="ModerateVoiceMuteSelected"/>
+		<menu_item_call label="Ignorer tous les autres" name="ModerateVoiceMuteOthers"/>
+		<menu_item_call label="Ne plus ignorer ce participant" name="ModerateVoiceUnMuteSelected"/>
+		<menu_item_call label="Ne plus ignorer tous les autres" name="ModerateVoiceUnMuteOthers"/>
+	</context_menu>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_groups.xml b/indra/newview/skins/default/xui/fr/menu_people_groups.xml
new file mode 100644
index 00000000000..eb51b4cf7e8
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_people_groups.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_group_plus">
+	<menu_item_call label="Afficher les infos" name="View Info"/>
+	<menu_item_call label="Chat" name="Chat"/>
+	<menu_item_call label="Appeler" name="Call"/>
+	<menu_item_call label="Activer" name="Activate"/>
+	<menu_item_call label="Quitter" name="Leave"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_nearby.xml b/indra/newview/skins/default/xui/fr/menu_people_nearby.xml
index 946063dda2a..d48be969f47 100644
--- a/indra/newview/skins/default/xui/fr/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/fr/menu_people_nearby.xml
@@ -7,4 +7,5 @@
 	<menu_item_call label="Partager" name="Share"/>
 	<menu_item_call label="Payer" name="Pay"/>
 	<menu_item_check label="Ignorer/Ne plus ignorer" name="Block/Unblock"/>
+	<menu_item_call label="Proposer une téléportation" name="teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_profile_overflow.xml b/indra/newview/skins/default/xui/fr/menu_profile_overflow.xml
index 61a346c6af1..4bb9fa19a8e 100644
--- a/indra/newview/skins/default/xui/fr/menu_profile_overflow.xml
+++ b/indra/newview/skins/default/xui/fr/menu_profile_overflow.xml
@@ -2,4 +2,8 @@
 <toggleable_menu name="profile_overflow_menu">
 	<menu_item_call label="Payer" name="pay"/>
 	<menu_item_call label="Partager" name="share"/>
+	<menu_item_call label="Éjecter" name="kick"/>
+	<menu_item_call label="Geler" name="freeze"/>
+	<menu_item_call label="Dégeler" name="unfreeze"/>
+	<menu_item_call label="Représentant du service consommateur" name="csr"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml
index 9639e8415d9..272fcfdae61 100644
--- a/indra/newview/skins/default/xui/fr/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml
@@ -9,7 +9,7 @@
 		<menu_item_call label="Mon profil" name="Profile"/>
 		<menu_item_call label="Mon apparence" name="Appearance"/>
 		<menu_item_check label="Mon inventaire" name="Inventory"/>
-		<menu_item_call label="Afficher l&apos;inventaire de la barre latérale" name="ShowSidetrayInventory"/>
+		<menu_item_call label="Afficher l&apos;inventaire dans le panneau latéral" name="ShowSidetrayInventory"/>
 		<menu_item_call label="Mes gestes" name="Gestures"/>
 		<menu label="Mon statut" name="Status">
 			<menu_item_call label="Absent" name="Set Away"/>
@@ -25,36 +25,30 @@
 		<menu_item_check label="Chat près de vous" name="Nearby Chat"/>
 		<menu_item_call label="Personnes près de vous" name="Active Speakers"/>
 		<menu_item_check label="Média près de vous" name="Nearby Media"/>
-		<menu_item_check label="(Ancienne version) Communiquer" name="Instant Message"/>
-		<menu_item_call label="(Temp) Télécommande média" name="Preferences"/>
 	</menu>
 	<menu label="Monde" name="World">
-		<menu_item_check label="Bouger" name="Movement Controls"/>
-		<menu_item_check label="Affichage" name="Camera Controls"/>
-		<menu_item_call label="À propos des terrains" name="About Land"/>
-		<menu_item_call label="Région/Domaine" name="Region/Estate"/>
-		<menu_item_call label="Acheter du terrain" name="Buy Land"/>
-		<menu_item_call label="Mes terrains" name="My Land"/>
-		<menu label="Afficher" name="Land">
-			<menu_item_check label="Lignes d&apos;interdiction" name="Ban Lines"/>
-			<menu_item_check label="Balises" name="beacons"/>
-			<menu_item_check label="Limites du terrain" name="Property Lines"/>
-			<menu_item_check label="Propriétaires de terrains" name="Land Owners"/>
-		</menu>
-		<menu label="Repères" name="Landmarks">
-			<menu_item_call label="Créer un repère ici" name="Create Landmark Here"/>
-			<menu_item_call label="Définir le domicile ici" name="Set Home to Here"/>
-		</menu>
-		<menu_item_call label="Domicile" name="Teleport Home"/>
 		<menu_item_check label="Mini-carte" name="Mini-Map"/>
 		<menu_item_check label="Carte du monde" name="World Map"/>
 		<menu_item_call label="Photo" name="Take Snapshot"/>
+		<menu_item_call label="Créer un repère pour ce lieu" name="Create Landmark Here"/>
+		<menu label="Profil du lieu" name="Land">
+			<menu_item_call label="À propos des terrains" name="About Land"/>
+			<menu_item_call label="Région/Domaine" name="Region/Estate"/>
+		</menu>
+		<menu_item_call label="Acheter ce terrain" name="Buy Land"/>
+		<menu_item_call label="Mes terrains" name="My Land"/>
+		<menu label="Afficher" name="LandShow">
+			<menu_item_check label="Contrôles de mouvement" name="Movement Controls"/>
+			<menu_item_check label="Contrôles d&apos;affichage" name="Camera Controls"/>
+		</menu>
+		<menu_item_call label="Me téléporter chez moi" name="Teleport Home"/>
+		<menu_item_call label="Définir le domicile ici" name="Set Home to Here"/>
 		<menu label="Luminosité" name="Environment Settings">
 			<menu_item_call label="Aube" name="Sunrise"/>
 			<menu_item_call label="Milieu de journée" name="Noon"/>
 			<menu_item_call label="Coucher de soleil" name="Sunset"/>
 			<menu_item_call label="Minuit" name="Midnight"/>
-			<menu_item_call label="Utiliser l&apos;heure du domaine" name="Revert to Region Default"/>
+			<menu_item_call label="Heure du domaine" name="Revert to Region Default"/>
 			<menu_item_call label="Éditeur d&apos;environnement" name="Environment Editor"/>
 		</menu>
 	</menu>
@@ -125,21 +119,20 @@
 	</menu>
 	<menu label="Aide" name="Help">
 		<menu_item_call label="Aide de [SECOND_LIFE]" name="Second Life Help"/>
-		<menu_item_call label="Didacticiel" name="Tutorial"/>
 		<menu_item_call label="Signaler une infraction" name="Report Abuse"/>
+		<menu_item_call label="Signaler un bug" name="Report Bug"/>
 		<menu_item_call label="À propos de [APP_NAME]" name="About Second Life"/>
 	</menu>
 	<menu label="Avancé" name="Advanced">
-		<menu_item_check label="Me mettre en mode absent après 30 minutes" name="Go Away/AFK When Idle"/>
 		<menu_item_call label="Arrêter mon animation" name="Stop Animating My Avatar"/>
 		<menu_item_call label="Refixer les textures" name="Rebake Texture"/>
 		<menu_item_call label="Taille de l&apos;interface par défaut" name="Set UI Size to Default"/>
+		<menu_item_call label="Définir la taille de la fenêtre..." name="Set Window Size..."/>
 		<menu_item_check label="Limiter la distance de sélection" name="Limit Select Distance"/>
 		<menu_item_check label="Désactiver les contraintes de la caméra" name="Disable Camera Distance"/>
 		<menu_item_check label="Photo haute résolution" name="HighResSnapshot"/>
 		<menu_item_check label="Photos discrètes sur disque" name="QuietSnapshotsToDisk"/>
 		<menu_item_check label="Compresser les photos sur disque" name="CompressSnapshotsToDisk"/>
-		<menu_item_call label="Enregistrer la texture sous" name="Save Texture As"/>
 		<menu label="Outils de performance" name="Performance Tools">
 			<menu_item_call label="Mesure du lag" name="Lag Meter"/>
 			<menu_item_check label="Barre de statistiques" name="Statistics Bar"/>
@@ -333,7 +326,6 @@
 			<menu_item_call label="Enregistrer en XML" name="Save to XML"/>
 			<menu_item_check label="Afficher les noms XUI" name="Show XUI Names"/>
 			<menu_item_call label="Envoyer des IM tests" name="Send Test IMs"/>
-			<menu_item_call label="Tests inspecteurs" name="Test Inspectors"/>
 		</menu>
 		<menu label="Avatar" name="Character">
 			<menu label="Récupérer la texture fixée" name="Grab Baked Texture">
@@ -366,6 +358,7 @@
 			<menu_item_call label="Débogage des textures des avatars" name="Debug Avatar Textures"/>
 			<menu_item_call label="Dump Local Textures" name="Dump Local Textures"/>
 		</menu>
+		<menu_item_check label="Textures HTTP" name="HTTP Textures"/>
 		<menu_item_call label="Compresser les images" name="Compress Images"/>
 		<menu_item_check label="Output Debug Minidump" name="Output Debug Minidump"/>
 		<menu_item_check label="Console Window on next Run" name="Console Window"/>
@@ -383,7 +376,7 @@
 			<menu_item_call label="Obtenir les ID d&apos;actifs" name="Get Assets IDs"/>
 		</menu>
 		<menu label="Parcelle" name="Parcel">
-			<menu_item_call label="Propriétaire à moi" name="Owner To Me"/>
+			<menu_item_call label="Forcer le propriétaire sur moi" name="Owner To Me"/>
 			<menu_item_call label="Définir sur le contenu Linden" name="Set to Linden Content"/>
 			<menu_item_call label="Réclamer un terrain public" name="Claim Public Land"/>
 		</menu>
@@ -410,7 +403,6 @@
 			<menu_item_call label="Tatouage" name="Tattoo"/>
 			<menu_item_call label="Tous les habits" name="All Clothes"/>
 		</menu>
-		<menu_item_check label="Afficher la barre d&apos;outils" name="Show Toolbar"/>
 		<menu label="Aide" name="Help">
 			<menu_item_call label="Blog officiel des Linden" name="Official Linden Blog"/>
 			<menu_item_call label="Portail d&apos;écriture de scripts" name="Scripting Portal"/>
diff --git a/indra/newview/skins/default/xui/fr/mime_types_linux.xml b/indra/newview/skins/default/xui/fr/mime_types_linux.xml
new file mode 100644
index 00000000000..fc5e7ad6592
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/mime_types_linux.xml
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<mimetypes name="default">
+	<widgetset name="web">
+		<label name="web_label">
+			Contenu web
+		</label>
+		<tooltip name="web_tooltip">
+			Cette parcelle propose du contenu web
+		</tooltip>
+		<playtip name="web_playtip">
+			Afficher le contenu web
+		</playtip>
+	</widgetset>
+	<widgetset name="movie">
+		<label name="movie_label">
+			Film
+		</label>
+		<tooltip name="movie_tooltip">
+			Vous pouvez jouer un film ici
+		</tooltip>
+		<playtip name="movie_playtip">
+			Jouer le film
+		</playtip>
+	</widgetset>
+	<widgetset name="image">
+		<label name="image_label">
+			Image
+		</label>
+		<tooltip name="image_tooltip">
+			Cette parcelle contient une image
+		</tooltip>
+		<playtip name="image_playtip">
+			Afficher l&apos;image qui se trouve ici
+		</playtip>
+	</widgetset>
+	<widgetset name="audio">
+		<label name="audio_label">
+			Audio
+		</label>
+		<tooltip name="audio_tooltip">
+			Cette parcelle propose du contenu audio
+		</tooltip>
+		<playtip name="audio_playtip">
+			Jouer le contenu audio qui se trouve ici
+		</playtip>
+	</widgetset>
+	<scheme name="rtsp">
+		<label name="rtsp_label">
+			Flux en temps réel
+		</label>
+	</scheme>
+	<mimetype name="blank">
+		<label name="blank_label">
+			- Aucun -
+		</label>
+	</mimetype>
+	<mimetype name="none/none">
+		<label name="none/none_label">
+			- Aucun -
+		</label>
+	</mimetype>
+	<mimetype name="audio/*">
+		<label name="audio2_label">
+			Audio
+		</label>
+	</mimetype>
+	<mimetype name="video/*">
+		<label name="video2_label">
+			Vidéo
+		</label>
+	</mimetype>
+	<mimetype name="image/*">
+		<label name="image2_label">
+			Image
+		</label>
+	</mimetype>
+	<mimetype name="video/vnd.secondlife.qt.legacy">
+		<label name="vnd.secondlife.qt.legacy_label">
+			Film (QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="application/javascript">
+		<label name="application/javascript_label">
+			Javascript
+		</label>
+	</mimetype>
+	<mimetype name="application/ogg">
+		<label name="application/ogg_label">
+			Audio/Vidéo Ogg
+		</label>
+	</mimetype>
+	<mimetype name="application/pdf">
+		<label name="application/pdf_label">
+			Document PDF
+		</label>
+	</mimetype>
+	<mimetype name="application/postscript">
+		<label name="application/postscript_label">
+			Document Postscript
+		</label>
+	</mimetype>
+	<mimetype name="application/rtf">
+		<label name="application/rtf_label">
+			Format RTF
+		</label>
+	</mimetype>
+	<mimetype name="application/smil">
+		<label name="application/smil_label">
+			SMIL (Synchronized Multimedia Integration Language)
+		</label>
+	</mimetype>
+	<mimetype name="application/xhtml+xml">
+		<label name="application/xhtml+xml_label">
+			Page web (XHTML)
+		</label>
+	</mimetype>
+	<mimetype name="application/x-director">
+		<label name="application/x-director_label">
+			Macromedia Director
+		</label>
+	</mimetype>
+	<mimetype name="audio/mid">
+		<label name="audio/mid_label">
+			Audio (MIDI)
+		</label>
+	</mimetype>
+	<mimetype name="audio/mpeg">
+		<label name="audio/mpeg_label">
+			Audio (MP3)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-aiff">
+		<label name="audio/x-aiff_label">
+			Audio (AIFF)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-wav">
+		<label name="audio/x-wav_label">
+			Audio (WAV)
+		</label>
+	</mimetype>
+	<mimetype name="image/bmp">
+		<label name="image/bmp_label">
+			Image (BMP)
+		</label>
+	</mimetype>
+	<mimetype name="image/gif">
+		<label name="image/gif_label">
+			Image (GIF)
+		</label>
+	</mimetype>
+	<mimetype name="image/jpeg">
+		<label name="image/jpeg_label">
+			Image (JPEG)
+		</label>
+	</mimetype>
+	<mimetype name="image/png">
+		<label name="image/png_label">
+			Image (PNG)
+		</label>
+	</mimetype>
+	<mimetype name="image/svg+xml">
+		<label name="image/svg+xml_label">
+			Image (SVG)
+		</label>
+	</mimetype>
+	<mimetype name="image/tiff">
+		<label name="image/tiff_label">
+			Image (TIFF)
+		</label>
+	</mimetype>
+	<mimetype name="text/html">
+		<label name="text/html_label">
+			Page web
+		</label>
+	</mimetype>
+	<mimetype name="text/plain">
+		<label name="text/plain_label">
+			Texte
+		</label>
+	</mimetype>
+	<mimetype name="text/xml">
+		<label name="text/xml_label">
+			XML
+		</label>
+	</mimetype>
+	<mimetype name="video/mpeg">
+		<label name="video/mpeg_label">
+			Film (MPEG)
+		</label>
+	</mimetype>
+	<mimetype name="video/mp4">
+		<label name="video/mp4_label">
+			Film (MP4)
+		</label>
+	</mimetype>
+	<mimetype name="video/quicktime">
+		<label name="video/quicktime_label">
+			Film (QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-asf">
+		<label name="video/x-ms-asf_label">
+			Film (Windows Media ASF)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-wmv">
+		<label name="video/x-ms-wmv_label">
+			Film (Windows Media WMV)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-msvideo">
+		<label name="video/x-msvideo_label">
+			Film (AVI)
+		</label>
+	</mimetype>
+</mimetypes>
diff --git a/indra/newview/skins/default/xui/fr/mime_types_mac.xml b/indra/newview/skins/default/xui/fr/mime_types_mac.xml
new file mode 100644
index 00000000000..fc5e7ad6592
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/mime_types_mac.xml
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<mimetypes name="default">
+	<widgetset name="web">
+		<label name="web_label">
+			Contenu web
+		</label>
+		<tooltip name="web_tooltip">
+			Cette parcelle propose du contenu web
+		</tooltip>
+		<playtip name="web_playtip">
+			Afficher le contenu web
+		</playtip>
+	</widgetset>
+	<widgetset name="movie">
+		<label name="movie_label">
+			Film
+		</label>
+		<tooltip name="movie_tooltip">
+			Vous pouvez jouer un film ici
+		</tooltip>
+		<playtip name="movie_playtip">
+			Jouer le film
+		</playtip>
+	</widgetset>
+	<widgetset name="image">
+		<label name="image_label">
+			Image
+		</label>
+		<tooltip name="image_tooltip">
+			Cette parcelle contient une image
+		</tooltip>
+		<playtip name="image_playtip">
+			Afficher l&apos;image qui se trouve ici
+		</playtip>
+	</widgetset>
+	<widgetset name="audio">
+		<label name="audio_label">
+			Audio
+		</label>
+		<tooltip name="audio_tooltip">
+			Cette parcelle propose du contenu audio
+		</tooltip>
+		<playtip name="audio_playtip">
+			Jouer le contenu audio qui se trouve ici
+		</playtip>
+	</widgetset>
+	<scheme name="rtsp">
+		<label name="rtsp_label">
+			Flux en temps réel
+		</label>
+	</scheme>
+	<mimetype name="blank">
+		<label name="blank_label">
+			- Aucun -
+		</label>
+	</mimetype>
+	<mimetype name="none/none">
+		<label name="none/none_label">
+			- Aucun -
+		</label>
+	</mimetype>
+	<mimetype name="audio/*">
+		<label name="audio2_label">
+			Audio
+		</label>
+	</mimetype>
+	<mimetype name="video/*">
+		<label name="video2_label">
+			Vidéo
+		</label>
+	</mimetype>
+	<mimetype name="image/*">
+		<label name="image2_label">
+			Image
+		</label>
+	</mimetype>
+	<mimetype name="video/vnd.secondlife.qt.legacy">
+		<label name="vnd.secondlife.qt.legacy_label">
+			Film (QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="application/javascript">
+		<label name="application/javascript_label">
+			Javascript
+		</label>
+	</mimetype>
+	<mimetype name="application/ogg">
+		<label name="application/ogg_label">
+			Audio/Vidéo Ogg
+		</label>
+	</mimetype>
+	<mimetype name="application/pdf">
+		<label name="application/pdf_label">
+			Document PDF
+		</label>
+	</mimetype>
+	<mimetype name="application/postscript">
+		<label name="application/postscript_label">
+			Document Postscript
+		</label>
+	</mimetype>
+	<mimetype name="application/rtf">
+		<label name="application/rtf_label">
+			Format RTF
+		</label>
+	</mimetype>
+	<mimetype name="application/smil">
+		<label name="application/smil_label">
+			SMIL (Synchronized Multimedia Integration Language)
+		</label>
+	</mimetype>
+	<mimetype name="application/xhtml+xml">
+		<label name="application/xhtml+xml_label">
+			Page web (XHTML)
+		</label>
+	</mimetype>
+	<mimetype name="application/x-director">
+		<label name="application/x-director_label">
+			Macromedia Director
+		</label>
+	</mimetype>
+	<mimetype name="audio/mid">
+		<label name="audio/mid_label">
+			Audio (MIDI)
+		</label>
+	</mimetype>
+	<mimetype name="audio/mpeg">
+		<label name="audio/mpeg_label">
+			Audio (MP3)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-aiff">
+		<label name="audio/x-aiff_label">
+			Audio (AIFF)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-wav">
+		<label name="audio/x-wav_label">
+			Audio (WAV)
+		</label>
+	</mimetype>
+	<mimetype name="image/bmp">
+		<label name="image/bmp_label">
+			Image (BMP)
+		</label>
+	</mimetype>
+	<mimetype name="image/gif">
+		<label name="image/gif_label">
+			Image (GIF)
+		</label>
+	</mimetype>
+	<mimetype name="image/jpeg">
+		<label name="image/jpeg_label">
+			Image (JPEG)
+		</label>
+	</mimetype>
+	<mimetype name="image/png">
+		<label name="image/png_label">
+			Image (PNG)
+		</label>
+	</mimetype>
+	<mimetype name="image/svg+xml">
+		<label name="image/svg+xml_label">
+			Image (SVG)
+		</label>
+	</mimetype>
+	<mimetype name="image/tiff">
+		<label name="image/tiff_label">
+			Image (TIFF)
+		</label>
+	</mimetype>
+	<mimetype name="text/html">
+		<label name="text/html_label">
+			Page web
+		</label>
+	</mimetype>
+	<mimetype name="text/plain">
+		<label name="text/plain_label">
+			Texte
+		</label>
+	</mimetype>
+	<mimetype name="text/xml">
+		<label name="text/xml_label">
+			XML
+		</label>
+	</mimetype>
+	<mimetype name="video/mpeg">
+		<label name="video/mpeg_label">
+			Film (MPEG)
+		</label>
+	</mimetype>
+	<mimetype name="video/mp4">
+		<label name="video/mp4_label">
+			Film (MP4)
+		</label>
+	</mimetype>
+	<mimetype name="video/quicktime">
+		<label name="video/quicktime_label">
+			Film (QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-asf">
+		<label name="video/x-ms-asf_label">
+			Film (Windows Media ASF)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-wmv">
+		<label name="video/x-ms-wmv_label">
+			Film (Windows Media WMV)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-msvideo">
+		<label name="video/x-msvideo_label">
+			Film (AVI)
+		</label>
+	</mimetype>
+</mimetypes>
diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml
index dd277c9d37d..6d7aef6389c 100644
--- a/indra/newview/skins/default/xui/fr/notifications.xml
+++ b/indra/newview/skins/default/xui/fr/notifications.xml
@@ -32,10 +32,10 @@
 			<button name="No" text="$notext"/>
 		</form>
 	</template>
-	<notification functor="GenericAcknowledge" label="Message d&apos;alerte inconnu" name="MissingAlert">
-		Votre version de [APP_NAME] ne peut afficher ce message d&apos;erreur.  Veuillez vous assurer que vous avez bien la toute dernière version du client.
+	<notification functor="GenericAcknowledge" label="Message de notification inconnu" name="MissingAlert">
+		Votre version de [APP_NAME] ne peut afficher ce message de notification.  Veuillez vous assurer que vous avez bien la toute dernière version du client.
 
-Détails de l&apos;erreur : L&apos;alerte, appelée &apos;[_NAME]&apos;, est introuvable dans notifications.xml.
+Détails de l&apos;erreur : La notification, appelée &apos;[_NAME]&apos;, est introuvable dans notifications.xml.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="FloaterNotFound">
@@ -95,12 +95,12 @@ Veuillez ne sélectionner qu&apos;un seul objet.
 	</notification>
 	<notification name="GrantModifyRights">
 		Lorsque vous accordez des droits d&apos;édition à un autre résident, vous lui permettez de changer, supprimer ou prendre n&apos;importe lequel de vos objets dans le Monde. Réfléchissez bien avant d&apos;accorder ces droits.
-Souhaitez-vous accorder des droits d&apos;édition à [FIRST_NAME] [LAST_NAME] ?
+Souhaitez-vous accorder des droits d&apos;édition à [FIRST_NAME] [LAST_NAME] ?
 		<usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
 	</notification>
 	<notification name="GrantModifyRightsMultiple">
 		Lorsque vous accordez des droits d&apos;édition à un autre résident, vous lui permettez de changer n&apos;importe lequel de vos objets dans le Monde. Réfléchissez bien avant d&apos;accorder ces droits.
-Souhaitez-vous accorder des droits d&apos;édition aux résidents selectionnés ?
+Souhaitez-vous accorder des droits d&apos;édition aux résidents sélectionnés ?
 		<usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
 	</notification>
 	<notification name="RevokeModifyRights">
@@ -149,6 +149,11 @@ Ajouter ce pouvoir à « [ROLE_NAME] » ?
 Ajouter ce pouvoir à « [ROLE_NAME] » ?
 		<usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
 	</notification>
+	<notification name="AttachmentDrop">
+		Vous êtes sur le point d&apos;abandonner l&apos;élément joint.
+Voulez-vous vraiment continuer ?
+		<usetemplate ignoretext="Confirmez avant d&apos;abandonner les éléments joints." name="okcancelignore" notext="Non" yestext="Oui"/>
+	</notification>
 	<notification name="ClickUnimplemented">
 		Désolés, pas encore mis en œuvre.
 	</notification>
@@ -247,15 +252,9 @@ Pour que les armes fonctionnent, les scripts doivent être autorisés.
 	<notification name="MultipleFacesSelected">
 		Plusieurs faces sont sélectionnées.
 Si vous poursuivez cette action, des instances séparées du média seront définies sur plusieurs faces de l&apos;objet.
-Pour ne placer le média que sur une seule face, choisissez Sélectionner une texture, cliquez sur la face de l&apos;objet de votre choix, puis sur Ajouter.
+Pour ne placer le média que sur une seule face, choisissez Sélectionner une face, cliquez sur la face de l&apos;objet de votre choix, puis sur Ajouter.
 		<usetemplate ignoretext="Le média sera défini sur plusieurs faces sélectionnées" name="okcancelignore" notext="Annuler" yestext="OK"/>
 	</notification>
-	<notification name="WhiteListInvalidatesHomeUrl">
-		Si vous ajoutez cette entrée à la liste blanche, l&apos;URL du domicile que vous avez spécifiée
-pour cette instance du média ne sera plus valide. Vous n&apos;êtes pas autorisé(e) à faire cela,
-l&apos;entrée ne peut donc pas être ajoutée à la liste blanche.
-		<usetemplate name="okbutton" yestext="Ok"/>
-	</notification>
 	<notification name="MustBeInParcel">
 		Pour définir le point d&apos;atterrissage, vous devez vous trouver à l&apos;intérieur de la parcelle.
 	</notification>
@@ -346,14 +345,6 @@ Voulez-vous vraiment continuer ?
 	<notification name="SelectHistoryItemToView">
 		Veuillez sélectionner un historique.
 	</notification>
-	<notification name="ResetShowNextTimeDialogs">
-		Souhaitez-vous réactiver tous les pop-ups que vous aviez désactivés ?
-		<usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
-	</notification>
-	<notification name="SkipShowNextTimeDialogs">
-		Voulez-vous désactiver tous les pop-ups qui peuvent être évités ?
-		<usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
-	</notification>
 	<notification name="CacheWillClear">
 		Le cache sera vidé après le redémarrage de [APP_NAME].
 	</notification>
@@ -615,6 +606,10 @@ Veuillez réessayer ultérieurement.
 	<notification name="LandmarkCreated">
 		Vous avez ajouté [LANDMARK_NAME] à votre dossier [FOLDER_NAME].
 	</notification>
+	<notification name="LandmarkAlreadyExists">
+		Vous avez déjà un repère pour cet emplacement.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
 	<notification name="CannotCreateLandmarkNotOwner">
 		Vous ne pouvez pas créer de repère ici car le propriétaire du terrain ne l&apos;autorise pas.
 	</notification>
@@ -713,7 +708,8 @@ aucune parcelle sélectionnée.
 		Impossible de définir un propriétaire car la sélection couvre plusieurs régions. Veuillez sélectionner une zone plus petite et réessayer.
 	</notification>
 	<notification name="ForceOwnerAuctionWarning">
-		Cette parcelle est mise aux enchères. Définir un propriétaire annulerait les enchères, ce qui pourrait être gênant pour certains résidents si ces dernières ont commencé. Souhaitez-vous définir un propriétaire ?
+		Cette parcelle est mise aux enchères. Définir un propriétaire annulerait les enchères, ce qui pourrait être gênant pour certains résidents si ces dernières ont commencé.
+Définir un propriétaire ?
 		<usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
 	</notification>
 	<notification name="CannotContentifyNothingSelected">
@@ -762,11 +758,11 @@ plusieurs parcelles sélectionnées.
 Essayez de ne sélectionner qu&apos;une seule parcelle.
 	</notification>
 	<notification name="ParcelCanPlayMedia">
-		Cette parcelle propose des flux média.
-Pour jouer des flux média, il faut avoir une connexion internet rapide.
+		Cet emplacement propose des flux de média.
+Pour jouer des flux de média, il faut avoir une connexion Internet rapide.
 
-Jouer les flux média lorsqu&apos;ils sont disponibles ?
-(Vous pourrez modifier cette option ultérieurement sous Préférences &gt; Audio et vidéo.)
+Jouer les flux de média lorsqu&apos;ils sont disponibles ?
+(Vous pourrez modifier cette option ultérieurement sous Préférences &gt; Confidentialité.)
 		<usetemplate name="okcancelbuttons" notext="Désactiver" yestext="Jouer le média"/>
 	</notification>
 	<notification name="CannotDeedLandWaitingForServer">
@@ -1323,6 +1319,10 @@ Les chats et les messages instantanés ne s&apos;afficheront pas. Les messages i
 [INVITE]
 		<usetemplate name="okcancelbuttons" notext="Refuser" yestext="Rejoindre"/>
 	</notification>
+	<notification name="JoinedTooManyGroups">
+		Vous avez atteint le nombre de groupes maximum. Vous devez en quitter un avant d&apos;en rejoindre ou d&apos;en créer un nouveau.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
 	<notification name="KickUser">
 		Éjecter cet utilisateur avec quel message ?
 		<form name="form">
@@ -1567,11 +1567,11 @@ Publier cette petite annonce maintenant pour [AMOUNT] L$ ?
 		<usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
 	</notification>
 	<notification name="SetClassifiedMature">
-		Cette petite annonce contient-elle du contenu Mature ?
+		Cette petite annonce contient-elle du contenu Modéré ?
 		<usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Non" yestext="Oui"/>
 	</notification>
 	<notification name="SetGroupMature">
-		Ce groupe contient-il du contenu Mature ?
+		Ce groupe contient-il du contenu Modéré ?
 		<usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Non" yestext="Oui"/>
 	</notification>
 	<notification label="Confirmer le redémarrage" name="ConfirmRestart">
@@ -1587,8 +1587,10 @@ Publier cette petite annonce maintenant pour [AMOUNT] L$ ?
 		</form>
 	</notification>
 	<notification label="Catégorie de la région modifiée" name="RegionMaturityChange">
-		La catégorie d&apos;accès de cette région a été mise à jour.
+		Le niveau de maturité de cette région a été mis à jour.
 Ce changement n&apos;apparaîtra pas immédiatement sur la carte.
+
+Pour entrer dans les régions Adultes, le résident doit avoir vérifié son compte, que ce soit par vérification de l&apos;âge ou du mode de paiement.
 	</notification>
 	<notification label="Versions de voix non compatibles" name="VoiceVersionMismatch">
 		Cette version de [APP_NAME] n&apos;est pas compatible avec la fonctionnalité de chat vocal dans cette région. Vous devez mettre à jour [APP_NAME] pour que le chat vocal fonctionne correctement.
@@ -1709,16 +1711,6 @@ Déplacer les objets de l&apos;inventaire ?
 		Utilisez cet outil pour signaler des infractions aux [http://secondlife.com/corporate/tos.php Conditions d&apos;utilisation] et aux [http://secondlife.com/corporate/cs.php Règles communautaires].
 
 Lorsqu&apos;elles sont signalées, toutes les infractions font l&apos;objet d&apos;une enquête et sont résolues. Vous pouvez consulter les détails de la résolution d&apos;un incident dans le [http://secondlife.com/support/incidentreport.php Rapport d&apos;incident].
-	</notification>
-	<notification name="HelpReportAbuseEmailEO">
-		IMPORTANT : ce rapport sera envoyé au propriétaire de la région dans laquelle vous vous trouvez actuellement et non à Linden Lab.
-
-Pour rendre service aux résidents et visiteurs, le propriétaire de la région dans laquelle vous vous trouvez a choisi de recevoir et de résoudre tous les rapports concernant cette région. Linden Lab n&apos;enquêtera pas sur les rapports que vous envoyez depuis cet emplacement.
-
-Le propriétaire de la région résoudra les incidents signalés dans les rapports selon les règles locales de cette région, telles qu&apos;elles sont définies dans le règlement du domaine.
-(Pour consulter les règlements, sélectionnez À propos des terrains dans le menu Monde.)
-
-La résolution de ce rapport ne s&apos;applique qu&apos;à cette région. L&apos;accès des résidents aux autres zones de [SECOND_LIFE] ne sera pas affecté par l&apos;issue de ce rapport. Seul Linden Lab peut interdire l&apos;accès à la totalité de [SECOND_LIFE].
 	</notification>
 	<notification name="HelpReportAbuseSelectCategory">
 		Veuillez choisir une catégorie pour ce rapport d&apos;infraction.
@@ -1954,7 +1946,6 @@ Liez-la à partir d&apos;une page web pour permettre aux autres résidents d&apo
 	</notification>
 	<notification name="UnableToLoadGesture">
 		Impossible de charger le geste [NAME].
-Merci de réessayer.
 	</notification>
 	<notification name="LandmarkMissing">
 		Repère absent de la base de données.
@@ -2057,7 +2048,7 @@ Veuillez sélectionner un terrain plus petit.
 		Certains termes de votre recherche ont été exclus car ils ne correspondaient pas aux standards fixés dans les Règles communautaires.
 	</notification>
 	<notification name="NoContentToSearch">
-		Veuillez sélectionner au moins un type de contenu à rechercher (PG, Mature ou Adulte)
+		Veuillez sélectionner au moins un type de contenu à rechercher (Général, Modéré ou Adulte)
 	</notification>
 	<notification name="GroupVote">
 		[NAME] a proposé un vote pour :
@@ -2070,6 +2061,9 @@ Veuillez sélectionner un terrain plus petit.
 	<notification name="SystemMessage">
 		[MESSAGE]
 	</notification>
+	<notification name="PaymentRecived">
+		[MESSAGE]
+	</notification>
 	<notification name="EventNotification">
 		Avis d&apos;événement :
 
@@ -2116,7 +2110,7 @@ Si le problème persiste, veuillez réinstaller le plugin ou contacter le vendeu
 		Les objets que vous possédez sur la parcelle de terrain appartenant à [FIRST] [LAST] ont été renvoyés dans votre inventaire.
 	</notification>
 	<notification name="OtherObjectsReturned2">
-		Les objets sur la parcelle appartenant à « [NAME] » ont étés renvoyés à leur propriétaire.
+		Les objets sur la parcelle de terrain sélectionnée appartenant au résident [NAME] ont été rendus à leur propriétaire.
 	</notification>
 	<notification name="GroupObjectsReturned">
 		Les objets sélectionnés sur la parcelle de terrain partagée avec le groupe [GROUPNAME] ont été renvoyés dans l&apos;inventaire de leur propriétaire.
@@ -2129,7 +2123,6 @@ Les objets non transférables donnés au groupe ont étés supprimés.
 	<notification name="ServerObjectMessage">
 		Message de [NAME] :
 [MSG]
-		<usetemplate name="okcancelbuttons" notext="OK" yestext="Inspecter"/>
 	</notification>
 	<notification name="NotSafe">
 		Les dégâts sont autorisés sur ce terrain.
@@ -2262,9 +2255,9 @@ Veuillez réessayer dans quelques minutes.
 		[NAME_SLURL] vous a donné un [OBJECTTYPE] :
 [ITEM_SLURL]
 		<form name="form">
-			<button name="Keep" text="Garder"/>
 			<button name="Show" text="Afficher"/>
 			<button name="Discard" text="Jeter"/>
+			<button name="Mute" text="Ignorer"/>
 		</form>
 	</notification>
 	<notification name="GodMessage">
@@ -2289,6 +2282,9 @@ Veuillez réessayer dans quelques minutes.
 			<button name="Cancel" text="Annuler"/>
 		</form>
 	</notification>
+	<notification name="TeleportOfferSent">
+		Offre de téléportation envoyée à [TO_NAME]
+	</notification>
 	<notification name="GotoURL">
 		[MESSAGE]
 [URL]
@@ -2306,8 +2302,12 @@ Veuillez réessayer dans quelques minutes.
 		<form name="form">
 			<button name="Accept" text="Accepter"/>
 			<button name="Decline" text="Refuser"/>
+			<button name="Send IM" text="Envoyer IM"/>
 		</form>
 	</notification>
+	<notification name="FriendshipOffered">
+		Vous avez proposé à [TO_NAME] de devenir votre ami(e)
+	</notification>
 	<notification name="OfferFriendshipNoMessage">
 		[NAME] vous demande de devenir son ami.
 
@@ -2405,14 +2405,6 @@ Accepter cette requête ?
 			<button name="Block" text="Ignorer"/>
 		</form>
 	</notification>
-	<notification name="FirstBalanceIncrease">
-		Vous venez de recevoir [AMOUNT] L$.
-Votre solde en L$ est affiché en haut à droite.
-	</notification>
-	<notification name="FirstBalanceDecrease">
-		Vous venez de payer [AMOUNT] L$.
-Votre solde en L$ est affiché en haut à droite.
-	</notification>
 	<notification name="BuyLindenDollarSuccess">
 		Nous vous remercions de votre paiement.
 
@@ -2420,58 +2412,17 @@ Votre solde en L$ sera mis à jour une fois le traitement terminé. Si le traite
 
 Vous pouvez consulter le statut de votre paiement à la page Historique de mes transactions sur votre [http://secondlife.com/account/ Page d&apos;accueil]
 	</notification>
-	<notification name="FirstSit">
-		Vous êtes assis(e).
-Utilisez les touches de direction (ou AWSD) pour regarder autour de vous.
-Pour vous lever, cliquez sur le bouton Me lever.
-	</notification>
-	<notification name="FirstMap">
-		Cliquez et faites glisser pour faire défiler la carte.
-Double-cliquez pour vous téléporter.
-Utilisez les contrôles à droite pour trouver des choses et afficher différents arrière-plans.
-	</notification>
-	<notification name="FirstBuild">
-		Vous avez ouvert les outils de construction. Tous les objets autour de vous ont été créés avec ces outils.
-	</notification>
-	<notification name="FirstTeleport">
-		Vous ne pouvez vous téléporter que dans certaines zones de cette région. La flèche pointe vers votre destination. Cliquez sur la flèche pour la faire disparaître.
-	</notification>
 	<notification name="FirstOverrideKeys">
 		Vos mouvements sont maintenant pris en charge par un objet.
 Essayez les flèches de votre clavier ou AWSD pour voir à quoi elles servent.
 Certains objets (comme les armes) nécessitent l&apos;activation du mode Vue subjective pour être utilisés.
 Pour cela, appuyez sur la touche M.
-	</notification>
-	<notification name="FirstAppearance">
-		Vous êtes en train d&apos;éditer votre apparence.
-Utilisez les touches de direction pour regarder autour de vous.
-Une fois terminé, cliquer sur Tout enregistrer.
-	</notification>
-	<notification name="FirstInventory">
-		Il s&apos;agit de votre inventaire qui contient vos possessions.
-
-* Pour porter quelque chose, faites glisser l&apos;objet sur vous-même.
-* Pour rezzer un objet dans le monde, faites-le glisser sur le sol.
-* Pour lire une note, double-cliquez dessus.
 	</notification>
 	<notification name="FirstSandbox">
 		Cette région est un bac à sable et est utilisée par les résidents pour apprendre à construire.
 
 Les objets que vous construisez ici seront supprimés après votre départ. N&apos;oubliez donc pas de cliquer droit et de choisir Prendre pour sauvegarder votre création dans votre inventaire.
 	</notification>
-	<notification name="FirstFlexible">
-		Cet objet est flexible. Les objets flexibles ne peuvent pas avoir de propriétés physiques et doivent rester fantômes.
-	</notification>
-	<notification name="FirstDebugMenus">
-		Vous avez ouvert le menu Avancé.
-
-Pour activer/désactiver ce menu,
-  Windows : Ctrl+Alt+D
-  Mac : &#8997;&#8984;D
-	</notification>
-	<notification name="FirstSculptedPrim">
-		Vous êtes en train d&apos;éditer un sculptie. Pour spécifier la forme d&apos;un sculptie, vous devez utiliser une texture spécifique.
-	</notification>
 	<notification name="MaxListSelectMessage">
 		Vous ne pouvez sélectionner que [MAX_SELECT] objets maximum dans cette liste.
 	</notification>
@@ -2565,12 +2516,23 @@ Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignore
 	<notification name="UnsupportedCommandSLURL">
 		La SLurl que vous avez saisie n&apos;est pas prise en charge.
 	</notification>
+	<notification name="BlockedSLURL">
+		Une SLurl a été reçue d&apos;un navigateur non sécurisé et a été bloquée pour votre sécurité.
+	</notification>
+	<notification name="ThrottledSLURL">
+		Plusieurs SLurl ont été reçues d&apos;un navigateur non sécurisé pendant un court laps de temps.
+Elles vont être bloquées pendant quelques secondes pour votre sécurité.
+	</notification>
 	<notification name="IMToast">
 		[MESSAGE]
 		<form name="form">
 			<button name="respondbutton" text="Répondre"/>
 		</form>
 	</notification>
+	<notification name="ConfirmCloseAll">
+		Êtes-vous certain de vouloir fermer tous les IM ?
+		<usetemplate name="okcancelignore" notext="Annuler" yestext="OK"/>
+	</notification>
 	<notification name="AttachmentSaved">
 		L&apos;élément joint a été sauvegardé.
 	</notification>
@@ -2582,6 +2544,14 @@ Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignore
 &apos;[ERROR]&apos;
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
+	<notification name="TextChatIsMutedByModerator">
+		Le modérateur ignore votre chat écrit.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="VoiceIsMutedByModerator">
+		Le modérateur ignore vos paroles.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
 	<notification name="ConfirmClearTeleportHistory">
 		Voulez-vous vraiment supprimer votre historique des téléportations ?
 		<usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_active_object_row.xml b/indra/newview/skins/default/xui/fr/panel_active_object_row.xml
new file mode 100644
index 00000000000..0baa8353d92
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_active_object_row.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_activeim_row">
+	<string name="unknown_obj">
+		Objet inconnu
+	</string>
+	<text name="object_name">
+		Objet sans nom
+	</text>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/fr/panel_adhoc_control_panel.xml
index fd5ca4b2a79..4191ba42f98 100644
--- a/indra/newview/skins/default/xui/fr/panel_adhoc_control_panel.xml
+++ b/indra/newview/skins/default/xui/fr/panel_adhoc_control_panel.xml
@@ -1,8 +1,14 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="panel_im_control_panel">
-	<panel name="panel_call_buttons">
-		<button label="Appeler" name="call_btn"/>
-		<button label="Quitter l&apos;appel" name="end_call_btn"/>
-		<button label="Contrôles vocaux" name="voice_ctrls_btn"/>
-	</panel>
+	<layout_stack name="vertical_stack">
+		<layout_panel name="call_btn_panel">
+			<button label="Appeler" name="call_btn"/>
+		</layout_panel>
+		<layout_panel name="end_call_btn_panel">
+			<button label="Quitter l&apos;appel" name="end_call_btn"/>
+		</layout_panel>
+		<layout_panel name="voice_ctrls_btn_panel">
+			<button label="Contrôles vocaux" name="voice_ctrls_btn"/>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/fr/panel_avatar_list_item.xml
index 69e23a2e765..792fd70c7fd 100644
--- a/indra/newview/skins/default/xui/fr/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/fr/panel_avatar_list_item.xml
@@ -23,4 +23,5 @@
 	</string>
 	<text name="avatar_name" value="Inconnu"/>
 	<text name="last_interaction" value="0s"/>
+	<button name="profile_btn" tool_tip="Voir le profil"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml
index 986970b381f..f54bed4faee 100644
--- a/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml
@@ -4,7 +4,7 @@
 		Liste des ignorés
 	</text>
 	<scroll_list name="blocked" tool_tip="Liste des résidents actuellement ignorés"/>
-	<button label="Ignorer le résident..." label_selected="Ignorer le résident..." name="Block resident..." tool_tip="Choisir un résident à ignorer"/>
-	<button label="Ignorer l&apos;objet par nom..." label_selected="Ignorer l&apos;objet par nom..." name="Block object by name..." tool_tip="Choisir un objet à ignorer par nom"/>
+	<button label="Ignorer une personne" label_selected="Ignorer le résident..." name="Block resident..." tool_tip="Choisir un résident à ignorer"/>
+	<button label="Ignorer l&apos;objet par nom" label_selected="Ignorer l&apos;objet par nom..." name="Block object by name..." tool_tip="Choisir un objet à ignorer par nom"/>
 	<button label="Ne plus ignorer" label_selected="Ne plus ignorer" name="Unblock" tool_tip="Enlever le résident ou l&apos;objet de la liste des ignorés"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_bottomtray.xml b/indra/newview/skins/default/xui/fr/panel_bottomtray.xml
index 3107bf60e3d..b3fac96250e 100644
--- a/indra/newview/skins/default/xui/fr/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/fr/panel_bottomtray.xml
@@ -8,7 +8,7 @@
 	</string>
 	<layout_stack name="toolbar_stack">
 		<layout_panel name="gesture_panel">
-			<gesture_combo_box label="Geste" name="Gesture" tool_tip="Affiche/Masque les gestes"/>
+			<gesture_combo_list label="Geste" name="Gesture" tool_tip="Affiche/Masque les gestes"/>
 		</layout_panel>
 		<layout_panel name="movement_panel">
 			<button label="Bouger" name="movement_btn" tool_tip="Affiche/Masque le contrôle des déplacements"/>
@@ -19,5 +19,15 @@
 		<layout_panel name="snapshot_panel">
 			<button label="" name="snapshots" tool_tip="Prendre une photo"/>
 		</layout_panel>
+		<layout_panel name="im_well_panel">
+			<chiclet_im_well name="im_well">
+				<button name="Unread IM messages" tool_tip="Conversations"/>
+			</chiclet_im_well>
+		</layout_panel>
+		<layout_panel name="notification_well_panel">
+			<chiclet_notification name="notification_well">
+				<button name="Unread" tool_tip="Notifications"/>
+			</chiclet_notification>
+		</layout_panel>
 	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_classified_info.xml b/indra/newview/skins/default/xui/fr/panel_classified_info.xml
index ca7b1cd9710..d317e35d2fc 100644
--- a/indra/newview/skins/default/xui/fr/panel_classified_info.xml
+++ b/indra/newview/skins/default/xui/fr/panel_classified_info.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="panel_classified_info">
 	<panel.string name="type_mature">
-		Mature
+		Modéré
 	</panel.string>
 	<panel.string name="type_pg">
-		Contenu PG
+		Contenu Général
 	</panel.string>
 	<text name="title" value="Infos sur la petite annonce"/>
 	<scroll_container name="profile_scroll">
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_classified.xml b/indra/newview/skins/default/xui/fr/panel_edit_classified.xml
index 392586d8d42..1f44f2fe093 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_classified.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_classified.xml
@@ -24,10 +24,10 @@
 			<button label="Définir sur l&apos;emplacement actuel" name="set_to_curr_location_btn"/>
 			<combo_box name="content_type">
 				<combo_item name="mature_ci">
-					Contenu Mature
+					Contenu Modéré
 				</combo_item>
 				<combo_item name="pg_ci">
-					Contenu PG
+					Contenu Général
 				</combo_item>
 			</combo_box>
 			<spinner label="L$" name="price_for_listing" tool_tip="Coût de l&apos;annonce." value="50"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_profile.xml b/indra/newview/skins/default/xui/fr/panel_edit_profile.xml
index a4771db91bd..4a42858861e 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_profile.xml
@@ -19,6 +19,9 @@
 	<string name="partner_edit_link_url">
 		http://www.secondlife.com/account/partners.php?lang=fr
 	</string>
+	<string name="my_account_link_url">
+		http://secondlife.com/my
+	</string>
 	<string name="no_partner_text" value="Aucun"/>
 	<scroll_container name="profile_scroll">
 		<panel name="scroll_content_panel">
@@ -44,7 +47,7 @@
 				<text name="title_partner_text" value="Mon partenaire :"/>
 				<text name="partner_edit_link" value="[[URL] Modifier]"/>
 				<panel name="partner_data_panel">
-					<text name="partner_text" value="[FIRST] [LAST]"/>
+					<name_box name="partner_text" value="[FIRST] [LAST]"/>
 				</panel>
 			</panel>
 		</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_friends.xml b/indra/newview/skins/default/xui/fr/panel_friends.xml
index cbeb10287dd..10ec952aa3e 100644
--- a/indra/newview/skins/default/xui/fr/panel_friends.xml
+++ b/indra/newview/skins/default/xui/fr/panel_friends.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="friends">
 	<string name="Multiple">
-		Amis multiples...
+		Amis multiples
 	</string>
 	<scroll_list name="friend_list" tool_tip="Pour sélectionner plusieurs amis, cliquez en maintenant la touche Maj ou Ctrl appuyée">
 		<column name="icon_online_status" tool_tip="Statut en ligne"/>
@@ -13,8 +13,8 @@
 	</scroll_list>
 	<button label="IM/Appel" name="im_btn" tool_tip="Envoyez un IM à ce résident"/>
 	<button label="Profil" name="profile_btn" tool_tip="Consultez le profil de ce résident (photos, groupes et autres infos)"/>
-	<button label="Téléporter..." name="offer_teleport_btn" tool_tip="Proposez à cet ami d&apos;être téléporté là où vous êtes"/>
-	<button label="Payer..." name="pay_btn" tool_tip="Donnez des L$ à cet ami"/>
-	<button label="Supprimer..." name="remove_btn" tool_tip="Supprimez ce résident de votre liste d&apos;amis"/>
-	<button label="Ajouter..." name="add_btn" tool_tip="Demandez à un résident de devenir votre ami"/>
+	<button label="Téléporter" name="offer_teleport_btn" tool_tip="Proposez à cet ami d&apos;être téléporté là où vous êtes"/>
+	<button label="Payer" name="pay_btn" tool_tip="Donnez des L$ à cet ami"/>
+	<button label="Supprimer" name="remove_btn" tool_tip="Supprimez ce résident de votre liste d&apos;amis"/>
+	<button label="Ajouter" name="add_btn" tool_tip="Proposer à ce résident de devenir votre ami"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_group_control_panel.xml b/indra/newview/skins/default/xui/fr/panel_group_control_panel.xml
index 3e37ba66dab..69403939aa2 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_control_panel.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_control_panel.xml
@@ -1,9 +1,17 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="panel_im_control_panel">
-	<button label="Profil du groupe" name="group_info_btn"/>
-	<panel name="panel_call_buttons">
-		<button label="Appeler le groupe" name="call_btn"/>
-		<button label="Quitter l&apos;appel" name="end_call_btn"/>
-		<button label="Ouvrir les contrôles vocaux" name="voice_ctrls_btn"/>
-	</panel>
+	<layout_stack name="vertical_stack">
+		<layout_panel name="group_info_btn_panel">
+			<button label="Profil du groupe" name="group_info_btn"/>
+		</layout_panel>
+		<layout_panel name="call_btn_panel">
+			<button label="Appeler le groupe" name="call_btn"/>
+		</layout_panel>
+		<layout_panel name="end_call_btn_panel">
+			<button label="Quitter l&apos;appel" name="end_call_btn"/>
+		</layout_panel>
+		<layout_panel name="voice_ctrls_btn_panel">
+			<button label="Ouvrir les contrôles vocaux" name="voice_ctrls_btn"/>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_group_general.xml b/indra/newview/skins/default/xui/fr/panel_group_general.xml
index 093d65cdbaf..f0b242c6a13 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_general.xml
@@ -22,16 +22,16 @@ Faites glisser le pointeur de la souris sur les options pour en savoir plus.
 		Mon titre
 	</text>
 	<combo_box name="active_title" tool_tip="Indique le titre qui apparaît en face du nom de votre avatar lorsque votre groupe est actif."/>
-	<check_box label="Recevoir des notices" name="receive_notices" tool_tip="Indique si vous souhaitez recevoir les notices envoyées au groupe.  Décochez si ce groupe vous envoie des spams."/>
+	<check_box label="Recevoir les notices du groupe" name="receive_notices" tool_tip="Indique si vous souhaitez recevoir les notices envoyées au groupe.  Décochez si ce groupe vous envoie des spams."/>
 	<check_box label="Afficher dans mon profil" name="list_groups_in_profile" tool_tip="Indique si vous voulez afficher ce groupe dans votre profil"/>
 	<panel name="preferences_container">
 		<check_box label="Inscription libre" name="open_enrollement" tool_tip="Indique si ce groupe autorise les nouveaux membres à le rejoindre sans y être invités."/>
 		<check_box label="Frais d&apos;inscription" name="check_enrollment_fee" tool_tip="Indique s&apos;il faut payer des frais d&apos;inscription pour rejoindre ce groupe"/>
 		<spinner label="L$" name="spin_enrollment_fee" tool_tip="Les nouveaux membres doivent payer ces frais pour rejoindre le groupe quand l&apos;option Frais d&apos;inscription est cochée."/>
 		<check_box initial_value="true" label="Afficher dans la recherche" name="show_in_group_list" tool_tip="Permettre aux autres résidents de voir ce groupe dans les résultats de recherche"/>
-		<combo_box name="group_mature_check" tool_tip="Indique si les informations sur votre groupe sont classées Mature" width="195">
-			<combo_box.item label="Contenu PG" name="pg"/>
-			<combo_box.item label="Contenu Mature" name="mature"/>
+		<combo_box name="group_mature_check" tool_tip="Définit si votre groupe contient des informations de type Modéré" width="195">
+			<combo_box.item label="Contenu Général" name="pg"/>
+			<combo_box.item label="Contenu Modéré" name="mature"/>
 		</combo_box>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/fr/panel_group_info_sidetray.xml
index 28d13bf3c5a..b2f61fde71d 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_info_sidetray.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_info_sidetray.xml
@@ -31,6 +31,8 @@
 	</accordion>
 	<panel name="button_row">
 		<button label="Créer" label_selected="Nouveau groupe" name="btn_create"/>
+		<button label="Chat de groupe" name="btn_chat"/>
+		<button label="Appel de groupe" name="btn_call"/>
 		<button label="Enregistrer" label_selected="Enregistrer" name="btn_apply"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_group_invite.xml b/indra/newview/skins/default/xui/fr/panel_group_invite.xml
index 0e59366b84d..53f7ac33c2e 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_invite.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_invite.xml
@@ -7,12 +7,10 @@
 		(en cours de chargement...)
 	</panel.string>
 	<panel.string name="already_in_group">
-		Certains des avatars font déjà partie du groupe et n&apos;ont pas été invités.
+		Certains résidents que vous avez choisis font déjà partie du groupe et l&apos;invitation ne leur a donc pas été envoyée.
 	</panel.string>
 	<text name="help_text">
-		Vous pouvez inviter plusieurs résidents
-à la fois. Cliquez d&apos;abord sur
-Choisir un résident.
+		Vous pouvez inviter plusieurs résidents à la fois. Cliquez d&apos;abord sur Choisir un résident.
 	</text>
 	<button label="Choisir un résident" name="add_button" tool_tip=""/>
 	<name_list name="invitee_list" tool_tip="Pour sélectionner plusieurs résidents, maintenez la touche Ctrl enfoncée et cliquez sur leurs noms"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_group_list_item.xml b/indra/newview/skins/default/xui/fr/panel_group_list_item.xml
index a61cb787a83..5fb69d19893 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_list_item.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="Inconnu"/>
+	<button name="profile_btn" tool_tip="Voir le profil"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_group_notices.xml b/indra/newview/skins/default/xui/fr/panel_group_notices.xml
index 188fe28d8a0..1ec63cf027d 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_notices.xml
@@ -1,11 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Notices" name="notices_tab">
 	<panel.string name="help_text">
-		Les notices vous permettent d&apos;envoyer un message et,
-facultativement, une pièce jointe. Les notices ne peuvent être envoyées
-qu&apos;aux membres du groupe dont le rôle leur permet de
-recevoir des notices. Vous pouvez désactiver la réception des notices dans 
-l&apos;onglet Général.
+		Les notices vous permettent d&apos;envoyer un message et facultativement, une pièce jointe si vous le souhaitez.
+Les notices ne peuvent être envoyées qu&apos;aux membres du groupe dont le rôle leur permet de recevoir des notices.
+Vous pouvez désactiver la réception des notices dans l&apos;onglet Général.
 	</panel.string>
 	<panel.string name="no_notices_text">
 		Pas d&apos;anciennes notices
@@ -24,7 +22,7 @@ l&apos;onglet Général.
 		Aucun résultat
 	</text>
 	<button label="Créer une notice" label_selected="Créer une notice" name="create_new_notice" tool_tip="Créer une notice"/>
-	<button label="Rafraîchir" label_selected="Rafraîchir la liste" name="refresh_notices"/>
+	<button label="Rafraîchir" label_selected="Rafraîchir la liste" name="refresh_notices" tool_tip="Actualiser la liste des notices"/>
 	<panel label="Créer une notice" name="panel_create_new_notice">
 		<text name="lbl">
 			Créer une notice
@@ -42,11 +40,11 @@ l&apos;onglet Général.
 		</text>
 		<line_editor left_delta="74" name="create_inventory_name" width="190"/>
 		<text name="string">
-			Faites glisser ici pour joindre quelque chose -- &gt;
+			Faire glisser l&apos;objet et le déposer ici pour le joindre :
 		</text>
 		<button label="Supprimer" label_selected="Supprimer pièce-jointe" left="274" name="remove_attachment" width="140"/>
 		<button label="Envoyer" label_selected="Envoyer" left="274" name="send_notice" width="140"/>
-		<group_drop_target name="drop_target" tool_tip="Pour joindre un objet de l&apos;inventaire à la notice, faites-le glisser dans la boîte de message. Pour envoyer l&apos;objet avec la notice, vous devez avoir la permission de le copier et de le transférer."/>
+		<group_drop_target name="drop_target" tool_tip="Faites glisser un objet de l&apos;inventaire jusqu&apos;à cette case pour l&apos;envoyer avec la notice. Vous devez avoir l&apos;autorisation de copier et transférer l&apos;objet pour pouvoir le joindre."/>
 	</panel>
 	<panel label="Voir ancienne notice" name="panel_view_past_notice">
 		<text name="lbl">
diff --git a/indra/newview/skins/default/xui/fr/panel_group_notify.xml b/indra/newview/skins/default/xui/fr/panel_group_notify.xml
index d3ecbd71d1f..08a49f908ce 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_notify.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_notify.xml
@@ -8,5 +8,5 @@
 	</panel>
 	<text_editor name="message" value="message"/>
 	<text name="attachment" value="Pièce jointe"/>
-	<button label="Ok" name="btn_ok"/>
+	<button label="OK" name="btn_ok"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_im_control_panel.xml b/indra/newview/skins/default/xui/fr/panel_im_control_panel.xml
index 653f1fff289..0590ed0f1bb 100644
--- a/indra/newview/skins/default/xui/fr/panel_im_control_panel.xml
+++ b/indra/newview/skins/default/xui/fr/panel_im_control_panel.xml
@@ -1,13 +1,27 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="panel_im_control_panel">
 	<text name="avatar_name" value="Inconnu"/>
-	<button label="Profil" name="view_profile_btn"/>
-	<button label="Devenir amis" name="add_friend_btn"/>
-	<button label="Téléporter" name="teleport_btn"/>
-	<button label="Partager" name="share_btn"/>
-	<panel name="panel_call_buttons">
-		<button label="Appeler" name="call_btn"/>
-		<button label="Quitter l&apos;appel" name="end_call_btn"/>
-		<button label="Contrôles vocaux" name="voice_ctrls_btn"/>
-	</panel>
+	<layout_stack name="button_stack">
+		<layout_panel name="view_profile_btn_panel">
+			<button label="Profil" name="view_profile_btn"/>
+		</layout_panel>
+		<layout_panel name="add_friend_btn_panel">
+			<button label="Devenir amis" name="add_friend_btn"/>
+		</layout_panel>
+		<layout_panel name="teleport_btn_panel">
+			<button label="Téléporter" name="teleport_btn"/>
+		</layout_panel>
+		<layout_panel name="share_btn_panel">
+			<button label="Partager" name="share_btn"/>
+		</layout_panel>
+		<layout_panel name="call_btn_panel">
+			<button label="Appeler" name="call_btn"/>
+		</layout_panel>
+		<layout_panel name="end_call_btn_panel">
+			<button label="Quitter l&apos;appel" name="end_call_btn"/>
+		</layout_panel>
+		<layout_panel name="voice_ctrls_btn_panel">
+			<button label="Contrôles vocaux" name="voice_ctrls_btn"/>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_landmark_info.xml b/indra/newview/skins/default/xui/fr/panel_landmark_info.xml
index 1b54f093d93..a2f82c72df7 100644
--- a/indra/newview/skins/default/xui/fr/panel_landmark_info.xml
+++ b/indra/newview/skins/default/xui/fr/panel_landmark_info.xml
@@ -21,6 +21,7 @@
 	<string name="icon_PG" value="parcel_drk_PG"/>
 	<string name="icon_M" value="parcel_drk_M"/>
 	<string name="icon_R" value="parcel_drk_R"/>
+	<button name="back_btn" tool_tip="Précédent"/>
 	<text name="title" value="Profil du lieu"/>
 	<scroll_container name="place_scroll">
 		<panel name="scrolling_panel">
diff --git a/indra/newview/skins/default/xui/fr/panel_login.xml b/indra/newview/skins/default/xui/fr/panel_login.xml
index 55dff07f46b..8f0561d243a 100644
--- a/indra/newview/skins/default/xui/fr/panel_login.xml
+++ b/indra/newview/skins/default/xui/fr/panel_login.xml
@@ -6,36 +6,40 @@
 	<panel.string name="forgot_password_url">
 		http://secondlife.com/account/request.php?lang=fr
 	</panel.string>
-	<panel name="login_widgets">
-		<text name="first_name_text">
-			Prénom :
-		</text>
-		<line_editor name="first_name_edit" tool_tip="Prénom [SECOND_LIFE]"/>
-		<text name="last_name_text">
-			Nom :
-		</text>
-		<line_editor name="last_name_edit" tool_tip="Nom [SECOND_LIFE]"/>
-		<text name="password_text">
-			Mot de passe :
-		</text>
-		<button label="Connexion" label_selected="Connexion" name="connect_btn"/>
-		<text name="start_location_text">
-			Lieu de départ :
-		</text>
-		<combo_box name="start_location_combo">
-			<combo_box.item label="Dernier emplacement" name="MyLastLocation"/>
-			<combo_box.item label="Domicile" name="MyHome"/>
-			<combo_box.item label="&lt;Saisissez le nom de la région&gt;" name="Typeregionname"/>
-		</combo_box>
-		<check_box label="Enregistrer le mot de passe" name="remember_check"/>
-		<text name="create_new_account_text">
-			Créer un compte
-		</text>
-		<text name="forgot_password_text">
-			Nom ou mot de passe oublié ?
-		</text>
-		<text name="channel_text">
-			[VERSION]
-		</text>
-	</panel>
+	<layout_stack name="login_widgets">
+		<layout_panel name="login">
+			<text name="first_name_text">
+				Prénom :
+			</text>
+			<line_editor label="Prénom" name="first_name_edit" tool_tip="Prénom [SECOND_LIFE]"/>
+			<text name="last_name_text">
+				Nom :
+			</text>
+			<line_editor label="Nom :" name="last_name_edit" tool_tip="Nom [SECOND_LIFE]"/>
+			<text name="password_text">
+				Mot de passe :
+			</text>
+			<check_box label="Rappel" name="remember_check"/>
+			<text name="start_location_text">
+				Commencer à :
+			</text>
+			<combo_box name="start_location_combo">
+				<combo_box.item label="Dernier emplacement" name="MyLastLocation"/>
+				<combo_box.item label="Domicile" name="MyHome"/>
+				<combo_box.item label="&lt;Saisissez le nom de la région&gt;" name="Typeregionname"/>
+			</combo_box>
+			<button label="Connexion" name="connect_btn"/>
+		</layout_panel>
+		<layout_panel name="links">
+			<text name="create_new_account_text">
+				S&apos;inscrire
+			</text>
+			<text name="forgot_password_text">
+				Nom ou mot de passe oublié ?
+			</text>
+			<text name="login_help">
+				Besoin d&apos;aide ?
+			</text>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_main_inventory.xml b/indra/newview/skins/default/xui/fr/panel_main_inventory.xml
index 9a98581cb4c..5dc90422053 100644
--- a/indra/newview/skins/default/xui/fr/panel_main_inventory.xml
+++ b/indra/newview/skins/default/xui/fr/panel_main_inventory.xml
@@ -3,10 +3,10 @@
 	<panel.string name="Title">
 		Choses
 	</panel.string>
-	<filter_editor label="Filtre" name="inventory search editor"/>
+	<filter_editor label="Filtrer l&apos;inventaire" name="inventory search editor"/>
 	<tab_container name="inventory filter tabs">
-		<inventory_panel label="Tous les objets" name="All Items"/>
-		<inventory_panel label="Objets récents" name="Recent Items"/>
+		<inventory_panel label="MON INVENTAIRE" name="All Items"/>
+		<inventory_panel label="RÉCENT" name="Recent Items"/>
 	</tab_container>
 	<panel name="bottom_panel">
 		<button name="options_gear_btn" tool_tip="Afficher d&apos;autres options"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_media_settings_general.xml b/indra/newview/skins/default/xui/fr/panel_media_settings_general.xml
index 2e73072e972..afd2d9cd8f7 100644
--- a/indra/newview/skins/default/xui/fr/panel_media_settings_general.xml
+++ b/indra/newview/skins/default/xui/fr/panel_media_settings_general.xml
@@ -1,28 +1,20 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Général" name="Media Settings General">
 	<text name="home_label">
-		URL du domicile :
+		Page d&apos;accueil :
 	</text>
-	<line_editor name="home_url" tool_tip="L&apos;URL du domicile pour cette source média"/>
+	<text name="home_fails_whitelist_label">
+		(Cette page a été rejetée par la liste blanche spécifiée)
+	</text>
+	<line_editor name="home_url" tool_tip="La page d&apos;accueil pour cette source média"/>
 	<text name="preview_label">
 		Prévisualiser
 	</text>
 	<text name="current_url_label">
-		URL actuelle :
+		Page actuelle :
 	</text>
-	<line_editor name="current_url" tool_tip="L&apos;URL actuelle pour cette source média" value=""/>
+	<text name="current_url" tool_tip="La page actuelle pour cette source média" value=""/>
 	<button label="Réinitialiser" name="current_url_reset_btn"/>
-	<text name="controls_label">
-		Contrôles :
-	</text>
-	<combo_box name="controls">
-		<combo_item name="Standard">
-			Standard
-		</combo_item>
-		<combo_item name="Mini">
-			Mini
-		</combo_item>
-	</combo_box>
 	<check_box initial_value="false" label="Boucle auto" name="auto_loop"/>
 	<check_box initial_value="false" label="Premier clic interagit" name="first_click_interact"/>
 	<check_box initial_value="false" label="Zoom auto" name="auto_zoom"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/fr/panel_media_settings_permissions.xml
index 88a1897f818..6f6ae035a18 100644
--- a/indra/newview/skins/default/xui/fr/panel_media_settings_permissions.xml
+++ b/indra/newview/skins/default/xui/fr/panel_media_settings_permissions.xml
@@ -1,9 +1,20 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Contrôles" name="Media settings for controls">
+<panel label="Personnaliser" name="Media settings for controls">
+	<text name="controls_label">
+		Contrôles :
+	</text>
+	<combo_box name="controls">
+		<combo_item name="Standard">
+			Standard
+		</combo_item>
+		<combo_item name="Mini">
+			Mini
+		</combo_item>
+	</combo_box>
 	<check_box initial_value="false" label="Désactiver la navigation et l&apos;interactivité" name="perms_owner_interact"/>
-	<check_box initial_value="false" label="Masquer la barre de contrôles" name="perms_owner_control"/>
+	<check_box initial_value="false" label="Afficher la barre de contrôles" name="perms_owner_control"/>
 	<check_box initial_value="false" label="Désactiver la navigation et l&apos;interactivité" name="perms_group_interact"/>
-	<check_box initial_value="false" label="Masquer la barre de contrôles" name="perms_group_control"/>
+	<check_box initial_value="false" label="Afficher la barre de contrôles" name="perms_group_control"/>
 	<check_box initial_value="false" label="Désactiver la navigation et l&apos;interactivité" name="perms_anyone_interact"/>
-	<check_box initial_value="false" label="Masquer la barre de contrôles" name="perms_anyone_control"/>
+	<check_box initial_value="false" label="Afficher la barre de contrôles" name="perms_anyone_control"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_media_settings_security.xml b/indra/newview/skins/default/xui/fr/panel_media_settings_security.xml
index 42641f48af0..36d5f4e860e 100644
--- a/indra/newview/skins/default/xui/fr/panel_media_settings_security.xml
+++ b/indra/newview/skins/default/xui/fr/panel_media_settings_security.xml
@@ -1,6 +1,12 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Sécurité" name="Media Settings Security">
-	<check_box initial_value="false" label="Autoriser l&apos;accès aux URL spécifiées uniquement (par préfixe)" name="whitelist_enable"/>
+	<check_box initial_value="false" label="Autoriser l&apos;accès aux styles d&apos;URL spécifiés uniquement" name="whitelist_enable"/>
+	<text name="home_url_fails_some_items_in_whitelist">
+		Les entrées par lesquelles la page d&apos;accueil est rejetée sont indiquées :
+	</text>
 	<button label="Ajouter" name="whitelist_add"/>
 	<button label="Supprimer" name="whitelist_del"/>
+	<text name="home_url_fails_whitelist">
+		Avertissement : la page d&apos;accueil spécifiée dans l&apos;onglet Général a été rejetée par la liste blanche. Elle sera désactivée jusqu&apos;à l&apos;ajout d&apos;une entrée valide.
+	</text>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_my_profile.xml b/indra/newview/skins/default/xui/fr/panel_my_profile.xml
index 5ffe0b9d890..bbf760466ab 100644
--- a/indra/newview/skins/default/xui/fr/panel_my_profile.xml
+++ b/indra/newview/skins/default/xui/fr/panel_my_profile.xml
@@ -4,52 +4,44 @@
 		[ACCTTYPE]
 [PAYMENTINFO] [AGEVERIFICATION]
 	</string>
+	<string name="payment_update_link_url">
+		http://www.secondlife.com/account/billing.php?lang=en
+	</string>
+	<string name="partner_edit_link_url">
+		http://www.secondlife.com/account/partners.php?lang=en
+	</string>
+	<string name="my_account_link_url" value="http://secondlife.com/account"/>
 	<string name="no_partner_text" value="Aucun"/>
+	<string name="no_group_text" value="Aucun"/>
 	<string name="RegisterDateFormat">
 		[REG_DATE] ([AGE])
 	</string>
-	<scroll_container name="profile_scroll">
-		<panel name="scroll_content_panel">
-			<panel name="second_life_image_panel">
-				<icon label="" name="2nd_life_edit_icon" tool_tip="Cliquez sur le bouton Modifier le profil ci-dessous pour changer d&apos;image"/>
-				<text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
-				<expandable_text name="sl_description_edit">
-					Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
-				</expandable_text>
-			</panel>
-			<panel name="first_life_image_panel">
-				<icon label="" name="real_world_edit_icon" tool_tip="Cliquez sur le bouton Modifier le profil ci-dessous pour changer d&apos;image"/>
-				<text name="title_rw_descr_text" value="Monde physique :"/>
-				<expandable_text name="fl_description_edit">
-					Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
-				</expandable_text>
-			</panel>
-			<text name="me_homepage_text">
-				Page d&apos;accueil :
-			</text>
-			<text name="title_member_text" value="Membre depuis :"/>
-			<text name="register_date" value="05/31/1976"/>
-			<text name="title_acc_status_text" value="Statut du compte :"/>
-			<text name="acc_status_text" value="Résident. Aucune info de paiement enregistrée."/>
-			<text name="title_partner_text" value="Partenaire :"/>
-			<panel name="partner_data_panel">
-				<text name="partner_text" value="[FIRST] [LAST]"/>
-			</panel>
-			<text name="title_groups_text" value="Groupes :"/>
-			<expandable_text name="sl_groups">
-				Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
-			</expandable_text>
-		</panel>
-	</scroll_container>
-	<panel name="profile_buttons_panel">
-		<button label="Devenir amis" name="add_friend"/>
-		<button label="IM" name="im"/>
-		<button label="Appeler" name="call"/>
-		<button label="Carte" name="show_on_map_btn"/>
-		<button label="Téléporter" name="teleport"/>
-	</panel>
-	<panel name="profile_me_buttons_panel">
-		<button label="Modifier le profil" name="edit_profile_btn"/>
-		<button label="Changer d&apos;apparence" name="edit_appearance_btn"/>
-	</panel>
+	<layout_stack name="layout">
+		<layout_panel name="profile_stack">
+			<scroll_container name="profile_scroll">
+				<panel name="scroll_content_panel">
+					<panel name="second_life_image_panel">
+						<icon label="" name="2nd_life_edit_icon" tool_tip="Cliquez sur le bouton Modifier le profil ci-dessous pour changer d&apos;image"/>
+						<text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
+					</panel>
+					<panel name="first_life_image_panel">
+						<icon label="" name="real_world_edit_icon" tool_tip="Cliquez sur le bouton Modifier le profil ci-dessous pour changer d&apos;image"/>
+						<text name="title_rw_descr_text" value="Monde physique :"/>
+					</panel>
+					<text name="title_member_text" value="Résident depuis :"/>
+					<text name="title_acc_status_text" value="Statut du compte :"/>
+					<text name="acc_status_text">
+						Résident. Aucune info de paiement enregistrée.
+              Linden.
+					</text>
+					<text name="title_partner_text" value="Partenaire :"/>
+					<text name="title_groups_text" value="Groupes :"/>
+				</panel>
+			</scroll_container>
+		</layout_panel>
+		<layout_panel name="profile_me_buttons_panel">
+			<button label="Modifier le profil" name="edit_profile_btn" tool_tip="Modifier vos informations personnelles"/>
+			<button label="Changer d&apos;apparence" name="edit_appearance_btn" tool_tip="Créer/modifier votre apparence : données physiques, habits, etc."/>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml b/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml
index 2cb6d91133f..7b89a2b686c 100644
--- a/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml
@@ -9,4 +9,7 @@
 			<combo_editor label="Rechercher dans [SECOND_LIFE]" name="search_combo_editor"/>
 		</search_combo_box>
 	</panel>
+	<favorites_bar name="favorite">
+		<chevron_button name="&gt;&gt;" tool_tip="Afficher d&apos;avantage de Favoris"/>
+	</favorites_bar>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_notes.xml b/indra/newview/skins/default/xui/fr/panel_notes.xml
index 0195118fd80..b1be2746165 100644
--- a/indra/newview/skins/default/xui/fr/panel_notes.xml
+++ b/indra/newview/skins/default/xui/fr/panel_notes.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Notes/Perso" name="panel_notes">
 	<layout_stack name="layout">
-		<panel name="notes_stack">
+		<layout_panel name="notes_stack">
 			<scroll_container name="profile_scroll">
 				<panel name="profile_scroll_panel">
 					<text name="status_message" value="Mes notes perso :"/>
@@ -11,13 +11,13 @@
 					<check_box label="Modifier, supprimer ou prendre mes objets" name="objects_check"/>
 				</panel>
 			</scroll_container>
-		</panel>
-		<panel name="notes_buttons_panel">
-			<button label="Ajouter" name="add_friend"/>
-			<button label="IM" name="im"/>
-			<button label="Appeler" name="call"/>
-			<button label="Carte" name="show_on_map_btn"/>
-			<button label="Téléporter" name="teleport"/>
-		</panel>
+		</layout_panel>
+		<layout_panel name="notes_buttons_panel">
+			<button label="Devenir amis" name="add_friend" tool_tip="Proposer à ce résident de devenir votre ami"/>
+			<button label="IM" name="im" tool_tip="Ouvrir une session IM"/>
+			<button label="Appeler" name="call" tool_tip="Appeler ce résident"/>
+			<button label="Carte" name="show_on_map_btn" tool_tip="Afficher le résident sur la carte"/>
+			<button label="Téléporter" name="teleport" tool_tip="Proposez une téléportation"/>
+		</layout_panel>
 	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml
index 1ff1227772b..3447d54cf8c 100644
--- a/indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml
+++ b/indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml
@@ -1,13 +1,14 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="Outfits">
-	<accordion name="outfits_accordion">
-		<accordion_tab name="tab_outfits" title="Barre des tenues"/>
-		<accordion_tab name="tab_cof" title="Barre de la tenue actuelle"/>
-	</accordion>
-	<button label="&gt;" name="selector" tool_tip="Afficher les propriétés de la tenue"/>
+<panel label="Choses" name="Outfits">
+	<tab_container name="appearance_tabs">
+		<inventory_panel label="MES TENUES" name="outfitslist_tab"/>
+		<inventory_panel label="TENUE" name="cof_accordionpanel"/>
+	</tab_container>
 	<panel name="bottom_panel">
 		<button name="options_gear_btn" tool_tip="Afficher d&apos;autres options"/>
-		<button name="add_btn" tool_tip="Ajouter un nouvel objet"/>
 		<dnd_button name="trash_btn" tool_tip="Supprimer l&apos;objet sélectionné"/>
+		<button label="Enregistrer la tenue" name="make_outfit_btn" tool_tip="Enregistrer l&apos;apparence comme tenue"/>
+		<button label="Porter" name="wear_btn" tool_tip="Porter la tenue sélectionnée"/>
+		<button label="M" name="look_edit_btn"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/fr/panel_outfits_inventory_gear_default.xml
index d900344dccc..47035591117 100644
--- a/indra/newview/skins/default/xui/fr/panel_outfits_inventory_gear_default.xml
+++ b/indra/newview/skins/default/xui/fr/panel_outfits_inventory_gear_default.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="menu_gear_default">
-	<menu_item_call label="Nouvelle tenue" name="new"/>
-	<menu_item_call label="Porter la tenue" name="wear"/>
+	<menu_item_call label="Remplacer la tenue actuelle" name="wear"/>
+	<menu_item_call label="Enlever de la tenue actuelle" name="remove"/>
+	<menu_item_call label="Renommer" name="rename"/>
+	<menu_item_call label="Supprimer le lien" name="remove_link"/>
 	<menu_item_call label="Supprimer la tenue" name="delete"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/fr/panel_people.xml b/indra/newview/skins/default/xui/fr/panel_people.xml
index ae2b96da3c3..408a7e67d7e 100644
--- a/indra/newview/skins/default/xui/fr/panel_people.xml
+++ b/indra/newview/skins/default/xui/fr/panel_people.xml
@@ -49,5 +49,6 @@
 		<button label="Téléporter" name="teleport_btn" tool_tip="Proposez une téléportation"/>
 		<button label="Profil du groupe" name="group_info_btn" tool_tip="Voir le profil du groupe"/>
 		<button label="Chat de groupe" name="chat_btn" tool_tip="Ouvrir une session de chat"/>
+		<button label="Appel de groupe" name="group_call_btn" tool_tip="Appeler ce groupe"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_picks.xml b/indra/newview/skins/default/xui/fr/panel_picks.xml
index cf110c27b5e..e33281defcf 100644
--- a/indra/newview/skins/default/xui/fr/panel_picks.xml
+++ b/indra/newview/skins/default/xui/fr/panel_picks.xml
@@ -2,20 +2,16 @@
 <panel label="Favoris" name="panel_picks">
 	<string name="no_picks" value="Pas de favoris"/>
 	<string name="no_classifieds" value="Pas de petites annonces"/>
-	<text name="empty_picks_panel_text">
-		Il n&apos;y a pas de favoris/petites annonces ici
-	</text>
 	<accordion name="accordion">
 		<accordion_tab name="tab_picks" title="Favoris"/>
 		<accordion_tab name="tab_classifieds" title="Petites annonces"/>
 	</accordion>
 	<panel label="bottom_panel" name="edit_panel">
-		<button name="new_btn" tool_tip="Ajouter cet endroit à mes Préférences"/>
+		<button name="new_btn" tool_tip="Créer une nouvelle préférence ou petite annonce à l&apos;emplacement actuel"/>
 	</panel>
 	<panel name="buttons_cucks">
-		<button label="Infos" name="info_btn"/>
-		<button label="Téléporter" name="teleport_btn"/>
-		<button label="Carte" name="show_on_map_btn"/>
-		<button label="â–¼" name="overflow_btn"/>
+		<button label="Infos" name="info_btn" tool_tip="Afficher les informations du Favori"/>
+		<button label="Téléporter" name="teleport_btn" tool_tip="Me téléporter jusqu&apos;à la zone correspondante"/>
+		<button label="Carte" name="show_on_map_btn" tool_tip="Afficher la zone correspondante sur la carte du monde"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_place_profile.xml b/indra/newview/skins/default/xui/fr/panel_place_profile.xml
index 3772d8dd4e1..7ff796a61f6 100644
--- a/indra/newview/skins/default/xui/fr/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/fr/panel_place_profile.xml
@@ -56,6 +56,7 @@
 	<string name="icon_ScriptsNo" value="parcel_drk_ScriptsNo"/>
 	<string name="icon_Damage" value="parcel_drk_Damage"/>
 	<string name="icon_DamageNo" value="parcel_drk_DamageNo"/>
+	<button name="back_btn" tool_tip="Précédent"/>
 	<text name="title" value="Profil du lieu"/>
 	<scroll_container name="place_scroll">
 		<panel name="scrolling_panel">
@@ -92,7 +93,7 @@
 						<text name="region_type_label" value="Type :"/>
 						<text name="region_type" value="Orignal"/>
 						<text name="region_rating_label" value="Catégorie :"/>
-						<text name="region_rating" value="Explicite"/>
+						<text name="region_rating" value="Adulte"/>
 						<text name="region_owner_label" value="Propriétaire :"/>
 						<text name="region_owner" value="orignal Van Orignal"/>
 						<text name="region_group_label" value="Groupe :"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_places.xml b/indra/newview/skins/default/xui/fr/panel_places.xml
index 79fe4d63c7e..3cea86a3e48 100644
--- a/indra/newview/skins/default/xui/fr/panel_places.xml
+++ b/indra/newview/skins/default/xui/fr/panel_places.xml
@@ -2,11 +2,12 @@
 <panel label="Lieux" name="places panel">
 	<string name="landmarks_tab_title" value="MES REPÈRES"/>
 	<string name="teleport_history_tab_title" value="HISTORIQUE DES TÉLÉPORTATIONS"/>
-	<filter_editor label="Filtre" name="Filter"/>
+	<filter_editor label="Filtrer les lieux" name="Filter"/>
 	<panel name="button_panel">
-		<button label="Téléporter" name="teleport_btn"/>
+		<button label="Téléporter" name="teleport_btn" tool_tip="Me téléporter jusqu&apos;à la zone sélectionnée"/>
 		<button label="Carte" name="map_btn"/>
-		<button label="Éditer" name="edit_btn"/>
+		<button label="Éditer" name="edit_btn" tool_tip="Modifier les informations du repère"/>
+		<button name="overflow_btn" tool_tip="Afficher d&apos;autres options"/>
 		<button label="Fermer" name="close_btn"/>
 		<button label="Annuler" name="cancel_btn"/>
 		<button label="Enregistrer" name="save_btn"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/fr/panel_preferences_alerts.xml
index 600a8259734..73f4e1e2bd8 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_alerts.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_alerts.xml
@@ -6,9 +6,9 @@
 	<check_box label="Quand je dépense ou que je reçois des L$" name="notify_money_change_checkbox"/>
 	<check_box label="Quand mes amis se connectent ou se déconnectent" name="friends_online_notify_checkbox"/>
 	<text name="show_label">
-		Toujours afficher ces alertes :
+		Toujours afficher ces notifications :
 	</text>
 	<text name="dont_show_label">
-		Ne jamais afficher ces alertes :
+		Ne jamais afficher ces notifications :
 	</text>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
index d292b002f65..25a8e3b6d49 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Chat écrit" name="chat">
 	<radio_group name="chat_font_size">
-		<radio_item label="Moins" name="radio"/>
-		<radio_item label="Moyenne" name="radio2"/>
-		<radio_item label="Plus" name="radio3"/>
+		<radio_item label="Moins" name="radio" value="0"/>
+		<radio_item label="Moyenne" name="radio2" value="1"/>
+		<radio_item label="Plus" name="radio3" value="2"/>
 	</radio_group>
 	<color_swatch label="Vous" name="user"/>
 	<text name="text_box1">
@@ -40,4 +40,8 @@
 	<check_box initial_value="true" label="Jouer l&apos;animation clavier quand vous écrivez" name="play_typing_animation"/>
 	<check_box label="M&apos;envoyer les IM par e-mail une fois déconnecté" name="send_im_to_email"/>
 	<check_box label="Activer l&apos;historique des chats en texte brut" name="plain_text_chat_history"/>
+	<radio_group name="chat_window" tool_tip="Afficher vos messages instantanés dans plusieurs fenêtres ou dans une seule fenêtre avec plusieurs onglets (redémarrage requis)">
+		<radio_item label="Plusieurs fenêtres" name="radio" value="0"/>
+		<radio_item label="Une fenêtre" name="radio2" value="1"/>
+	</radio_group>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
index 6d331704eac..b359cf56d84 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
@@ -15,7 +15,6 @@
 		<combo_box.item label="Polski (Polonais) - Bêta" name="Polish"/>
 		<combo_box.item label="Portugués (Portugais) - Bêta" name="Portugese"/>
 		<combo_box.item label="日本語 (Japonais) - Bêta" name="(Japanese)"/>
-		<combo_box.item label="Tests langue" name="TestLanguage"/>
 	</combo_box>
 	<text name="language_textbox2">
 		(redémarrage requis)
@@ -25,9 +24,9 @@
 	</text>
 	<text name="maturity_desired_textbox"/>
 	<combo_box name="maturity_desired_combobox">
-		<combo_box.item label="PG, Mature et Adult" name="Desired_Adult"/>
-		<combo_box.item label="PG et Mature" name="Desired_Mature"/>
-		<combo_box.item label="PG" name="Desired_PG"/>
+		<combo_box.item label="Général, Modéré, Adulte" name="Desired_Adult"/>
+		<combo_box.item label="Général et Modéré" name="Desired_Mature"/>
+		<combo_box.item label="Général" name="Desired_PG"/>
 	</combo_box>
 	<text name="start_location_textbox">
 		Lieu de départ :
@@ -41,9 +40,9 @@
 		Affichage des noms :
 	</text>
 	<radio_group name="Name_Tag_Preference">
-		<radio_item label="Désactivé" name="radio"/>
-		<radio_item label="Activé" name="radio2"/>
-		<radio_item label="Afficher brièvement" name="radio3"/>
+		<radio_item label="Désactivé" name="radio" value="0"/>
+		<radio_item label="Activé" name="radio2" value="1"/>
+		<radio_item label="Afficher brièvement" name="radio3" value="2"/>
 	</radio_group>
 	<check_box label="Afficher mon nom" name="show_my_name_checkbox1"/>
 	<check_box initial_value="true" label="Affichage en petit" name="small_avatar_names_checkbox"/>
@@ -51,14 +50,17 @@
 	<text name="effects_color_textbox">
 		Mes effets :
 	</text>
-	<color_swatch label="" name="effect_color_swatch" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs"/>
 	<text name="title_afk_text">
 		Délai d&apos;absence :
 	</text>
-	<spinner label="" name="afk_timeout_spinner"/>
-	<text name="seconds_textbox">
-		secondes
-	</text>
+	<color_swatch label="" name="effect_color_swatch" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs"/>
+	<combo_box label="Délai d&apos;absence :" name="afk">
+		<combo_box.item label="2 minutes" name="item0"/>
+		<combo_box.item label="5 minutes" name="item1"/>
+		<combo_box.item label="10 minutes" name="item2"/>
+		<combo_box.item label="30 minutes" name="item3"/>
+		<combo_box.item label="jamais" name="item4"/>
+	</combo_box>
 	<text name="text_box3">
 		Réponse si occupé(e) :
 	</text>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml
index 4bb6c766173..88b68d1a06e 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml
@@ -11,18 +11,18 @@
 	<check_box label="Seuls mes amis et groupes peuvent m&apos;appeler ou m&apos;envoyer un IM" name="voice_call_friends_only_check"/>
 	<check_box label="Fermer le micro à la fin d&apos;un appel" name="auto_disengage_mic_check"/>
 	<check_box label="Accepter les cookies" name="cookies_enabled"/>
-	<check_box label="Autoriser la lecture automatique des médias" name="autoplay_enabled"/>
-	<check_box label="Lire le média de la parcelle automatiquement" name="parcel_autoplay_enabled"/>
+	<check_box label="Média activé" name="media_enabled"/>
+	<check_box label="Autoriser la lecture automatique du média" name="autoplay_enabled"/>
 	<text name="Logs:">
 		Journaux :
 	</text>
 	<check_box label="Sauvegarder les chats près de moi sur mon ordinateur" name="log_nearby_chat"/>
 	<check_box label="Sauvegarder les IM sur mon ordinateur" name="log_instant_messages"/>
 	<check_box label="Inclure les heures" name="show_timestamps_check_im"/>
-	<line_editor left="308" name="log_path_string" right="-20"/>
 	<text name="log_path_desc">
-		Emplacement
+		Emplacement :
 	</text>
+	<line_editor left="308" name="log_path_string" right="-20"/>
 	<button label="Parcourir" label_selected="Parcourir" name="log_path_button" width="150"/>
 	<button label="Liste des ignorés" name="block_list"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml b/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml
index ffc822d76f5..68a735df90a 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Contrôle et caméra" name="Input panel">
+<panel label="Configuration" name="Input panel">
 	<button label="Autres accessoires" name="joystick_setup_button" width="175"/>
 	<text name="Mouselook:">
 		Vue subjective :
@@ -26,9 +26,9 @@
 		Mo
 	</text>
 	<button label="Parcourir" label_selected="Parcourir" name="set_cache"/>
-	<button label="Réinitialiser" label_selected="Choisir" name="reset_cache"/>
+	<button label="Réinitialiser" label_selected="Réinitialiser" name="reset_cache"/>
 	<text name="Cache location">
-		Emplacement du cache
+		Emplacement du cache :
 	</text>
 	<text name="Web:">
 		Web :
@@ -41,6 +41,6 @@
 	<line_editor name="web_proxy_editor" tool_tip="Le nom ou adresse IP du proxy que vous souhaitez utiliser"/>
 	<button label="Parcourir" label_selected="Parcourir" name="set_proxy"/>
 	<text name="Proxy location">
-		Emplacement du proxy
+		Emplacement du proxy :
 	</text>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml
index 27768ac73ba..4f5ef423f5d 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml
@@ -7,8 +7,8 @@
 	<slider label="Média" name="Media Volume"/>
 	<slider label="Effets sonores" name="SFX Volume"/>
 	<slider label="Flux musical" name="Music Volume"/>
-	<check_box label="Voix" name="enable_voice_check"/>
-	<slider label="Voix" name="Voice Volume"/>
+	<check_box label="Activer le chat vocal" name="enable_voice_check"/>
+	<slider label="Chat vocal" name="Voice Volume"/>
 	<text name="Listen from">
 		Écouter à partir de :
 	</text>
diff --git a/indra/newview/skins/default/xui/fr/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/fr/panel_prim_media_controls.xml
index dd70c40c3ed..c7ab31c4b37 100644
--- a/indra/newview/skins/default/xui/fr/panel_prim_media_controls.xml
+++ b/indra/newview/skins/default/xui/fr/panel_prim_media_controls.xml
@@ -6,7 +6,36 @@
 	<string name="skip_step">
 		0.2
 	</string>
+	<layout_stack name="progress_indicator_area">
+		<panel name="media_progress_indicator">
+			<progress_bar name="media_progress_bar" tool_tip="Le média est en cours de chargement"/>
+		</panel>
+	</layout_stack>
 	<layout_stack name="media_controls">
+		<layout_panel name="back">
+			<button name="back_btn" tool_tip="Naviguer en arrière"/>
+		</layout_panel>
+		<layout_panel name="fwd">
+			<button name="fwd_btn" tool_tip="Naviguer vers l&apos;avant"/>
+		</layout_panel>
+		<layout_panel name="home">
+			<button name="home_btn" tool_tip="Page d&apos;accueil"/>
+		</layout_panel>
+		<layout_panel name="media_stop">
+			<button name="media_stop_btn" tool_tip="Arrêter le média"/>
+		</layout_panel>
+		<layout_panel name="reload">
+			<button name="reload_btn" tool_tip="Recharger"/>
+		</layout_panel>
+		<layout_panel name="stop">
+			<button name="stop_btn" tool_tip="Arrêter le chargement"/>
+		</layout_panel>
+		<layout_panel name="play">
+			<button name="play_btn" tool_tip="Jouer le média"/>
+		</layout_panel>
+		<layout_panel name="pause">
+			<button name="pause_btn" tool_tip="Pauser le média"/>
+		</layout_panel>
 		<layout_panel name="media_address">
 			<line_editor name="media_address_url" tool_tip="URL du média"/>
 			<layout_stack name="media_address_url_icons">
@@ -21,13 +50,24 @@
 		<layout_panel name="media_play_position">
 			<slider_bar initial_value="0.5" name="media_play_slider" tool_tip="Progrès de la lecture du film"/>
 		</layout_panel>
+		<layout_panel name="skip_back">
+			<button name="skip_back_btn" tool_tip="Reculer"/>
+		</layout_panel>
+		<layout_panel name="skip_forward">
+			<button name="skip_forward_btn" tool_tip="Avancer"/>
+		</layout_panel>
 		<layout_panel name="media_volume">
-			<button name="media_volume_button" tool_tip="Couper le son de ce média"/>
+			<button name="media_mute_button" tool_tip="Couper le son de ce média"/>
+			<slider name="volume_slider" tool_tip="Volume du média"/>
+		</layout_panel>
+		<layout_panel name="zoom_frame">
+			<button name="zoom_frame_btn" tool_tip="Zoom avant sur le média"/>
+		</layout_panel>
+		<layout_panel name="close">
+			<button name="close_btn" tool_tip="Zoom arrière"/>
+		</layout_panel>
+		<layout_panel name="new_window">
+			<button name="new_window_btn" tool_tip="Ouvrir l&apos;URL dans le navigateur"/>
 		</layout_panel>
-	</layout_stack>
-	<layout_stack>
-		<panel name="media_progress_indicator">
-			<progress_bar name="media_progress_bar" tool_tip="Le média est en cours de chargement"/>
-		</panel>
 	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_profile.xml b/indra/newview/skins/default/xui/fr/panel_profile.xml
index c2e291bd095..0c33a0f1e03 100644
--- a/indra/newview/skins/default/xui/fr/panel_profile.xml
+++ b/indra/newview/skins/default/xui/fr/panel_profile.xml
@@ -12,50 +12,41 @@
 	</string>
 	<string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=fr-FR"/>
 	<string name="no_partner_text" value="Aucun"/>
+	<string name="no_group_text" value="Aucun"/>
 	<string name="RegisterDateFormat">
 		[REG_DATE] ([AGE])
 	</string>
-	<scroll_container name="profile_scroll">
-		<panel name="scroll_content_panel">
-			<panel name="second_life_image_panel">
-				<text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
-				<expandable_text name="sl_description_edit">
-					Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
-				</expandable_text>
-			</panel>
-			<panel name="first_life_image_panel">
-				<text name="title_rw_descr_text" value="Monde physique :"/>
-				<expandable_text name="fl_description_edit">
-					Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
-				</expandable_text>
-			</panel>
-			<text name="me_homepage_text">
-				Page d&apos;accueil :
-			</text>
-			<text name="title_member_text" value="Membre depuis :"/>
-			<text name="register_date" value="05/31/1976"/>
-			<text name="title_acc_status_text" value="Statut du compte :"/>
-			<text name="acc_status_text" value="Résident. Aucune info de paiement enregistrée."/>
-			<text name="title_partner_text" value="Partenaire :"/>
-			<panel name="partner_data_panel">
-				<text name="partner_text" value="[FIRST] [LAST]"/>
-			</panel>
-			<text name="title_groups_text" value="Groupes :"/>
-			<expandable_text name="sl_groups">
-				Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
-			</expandable_text>
-		</panel>
-	</scroll_container>
-	<panel name="profile_buttons_panel">
-		<button label="Devenir amis" name="add_friend"/>
-		<button label="IM" name="im"/>
-		<button label="Appeler" name="call"/>
-		<button label="Carte" name="show_on_map_btn"/>
-		<button label="Téléporter" name="teleport"/>
-		<button label="â–¼" name="overflow_btn"/>
-	</panel>
-	<panel name="profile_me_buttons_panel">
-		<button label="Modifier le profil" name="edit_profile_btn"/>
-		<button label="Changer d&apos;apparence" name="edit_appearance_btn"/>
-	</panel>
+	<layout_stack name="layout">
+		<layout_panel name="profile_stack">
+			<scroll_container name="profile_scroll">
+				<panel name="profile_scroll_panel">
+					<panel name="second_life_image_panel">
+						<text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
+					</panel>
+					<panel name="first_life_image_panel">
+						<text name="title_rw_descr_text" value="Monde physique :"/>
+					</panel>
+					<text name="title_member_text" value="Résident depuis :"/>
+					<text name="title_acc_status_text" value="Statut du compte :"/>
+					<text name="acc_status_text">
+						Résident. Aucune info de paiement enregistrée.
+              Linden.
+					</text>
+					<text name="title_partner_text" value="Partenaire :"/>
+					<text name="title_groups_text" value="Groupes :"/>
+				</panel>
+			</scroll_container>
+		</layout_panel>
+		<layout_panel name="profile_buttons_panel">
+			<button label="Devenir amis" name="add_friend" tool_tip="Proposer à ce résident de devenir votre ami"/>
+			<button label="IM" name="im" tool_tip="Ouvrir une session IM"/>
+			<button label="Appeler" name="call" tool_tip="Appeler ce résident"/>
+			<button label="Carte" name="show_on_map_btn" tool_tip="Afficher le résident sur la carte"/>
+			<button label="Téléporter" name="teleport" tool_tip="Proposez une téléportation"/>
+		</layout_panel>
+		<layout_panel name="profile_me_buttons_panel">
+			<button label="Modifier le profil" name="edit_profile_btn" tool_tip="Modifier vos informations personnelles"/>
+			<button label="Changer d&apos;apparence" name="edit_appearance_btn" tool_tip="Créer/modifier votre apparence : données physiques, habits, etc."/>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_region_estate.xml b/indra/newview/skins/default/xui/fr/panel_region_estate.xml
index bfe33a1c3da..a0282dd940d 100644
--- a/indra/newview/skins/default/xui/fr/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/fr/panel_region_estate.xml
@@ -1,9 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Domaine" name="Estate">
 	<text bottom="-34" name="estate_help_text">
-		Les changements apportés aux paramètres
-de cet onglet auront des répercussions sur
-toutes les régions du domaine.
+		Les modifications des paramètres de cet onglet affecteront toutes les régions du domaine.
 	</text>
 	<text bottom_delta="-34" name="estate_text">
 		Domaine :
@@ -18,10 +16,10 @@ toutes les régions du domaine.
 		(inconnu)
 	</text>
 	<text name="Only Allow">
-		Limiter l&apos;accès aux résidents qui :
+		Limiter l&apos;accès aux comptes vérifiés par :
 	</text>
-	<check_box label="Ont enregistré leurs infos de paiement" name="limit_payment" tool_tip="Interdire les résidents non identifiés"/>
-	<check_box label="Ont fait vérifier leur âge" name="limit_age_verified" tool_tip="Interdire les résidents qui n&apos;ont pas vérifié leur âge. Consultez la page [SUPPORT_SITE] pour plus d&apos;informations."/>
+	<check_box label="Informations de paiement enregistrées" name="limit_payment" tool_tip="Bannir les résidents non identifiés"/>
+	<check_box label="Vérification de mon âge" name="limit_age_verified" tool_tip="Bannir les résidents qui n&apos;ont pas vérifié leur âge. Consultez la page [SUPPORT_SITE] pour plus d&apos;informations."/>
 	<check_box label="Autoriser les chats vocaux" name="voice_chat_check"/>
 	<button label="?" name="voice_chat_help"/>
 	<text name="abuse_email_text">
diff --git a/indra/newview/skins/default/xui/fr/panel_region_general.xml b/indra/newview/skins/default/xui/fr/panel_region_general.xml
index 70782e2aa67..8a59adbd934 100644
--- a/indra/newview/skins/default/xui/fr/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/fr/panel_region_general.xml
@@ -39,10 +39,10 @@
 	<text label="Maturité" name="access_text">
 		Catégorie :
 	</text>
-	<combo_box label="Mature" name="access_combo">
+	<combo_box label="Modéré" name="access_combo">
 		<combo_box.item label="Adult" name="Adult"/>
-		<combo_box.item label="Mature" name="Mature"/>
-		<combo_box.item label="PG" name="PG"/>
+		<combo_box.item label="Modéré" name="Mature"/>
+		<combo_box.item label="Général" name="PG"/>
 	</combo_box>
 	<button label="?" name="access_help"/>
 	<button label="Appliquer" name="apply_btn"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_region_general_layout.xml b/indra/newview/skins/default/xui/fr/panel_region_general_layout.xml
new file mode 100644
index 00000000000..0e72bbc9f58
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_region_general_layout.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Région" name="General">
+	<text name="region_text_lbl">
+		Région :
+	</text>
+	<text name="region_text">
+		inconnu
+	</text>
+	<text name="version_channel_text_lbl">
+		Version :
+	</text>
+	<text name="version_channel_text">
+		inconnu
+	</text>
+	<text name="region_type_lbl">
+		Type :
+	</text>
+	<text name="region_type">
+		inconnu
+	</text>
+	<check_box label="Interdire le terraformage" name="block_terraform_check"/>
+	<check_box label="Interdire le vol" name="block_fly_check"/>
+	<check_box label="Autoriser les dégâts" name="allow_damage_check"/>
+	<check_box label="Interdire les bousculades" name="restrict_pushobject"/>
+	<check_box label="Autoriser la revente de terrains" name="allow_land_resell_check"/>
+	<check_box label="Autoriser la fusion/division de terrains" name="allow_parcel_changes_check"/>
+	<check_box label="Interdire l&apos;affichage du terrain dans les recherches" name="block_parcel_search_check" tool_tip="Permettre aux autres résidents de voir cette région et ses parcelles dans les résultats de recherche"/>
+	<spinner label="Nombre maximum d&apos;avatars" name="agent_limit_spin"/>
+	<spinner label="Bonus objet" name="object_bonus_spin"/>
+	<text label="Accès" name="access_text">
+		Catégorie :
+	</text>
+	<combo_box label="Modéré" name="access_combo">
+		<combo_box.item label="Adulte" name="Adult"/>
+		<combo_box.item label="Modéré" name="Mature"/>
+		<combo_box.item label="Général" name="PG"/>
+	</combo_box>
+	<button label="Appliquer" name="apply_btn"/>
+	<button label="Téléporter un résident chez lui..." name="kick_btn"/>
+	<button label="Téléporter tous les résidents chez eux..." name="kick_all_btn"/>
+	<button label="Envoyer un message à la région..." name="im_btn"/>
+	<button label="Gérer le téléhub..." name="manage_telehub_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_region_texture.xml b/indra/newview/skins/default/xui/fr/panel_region_texture.xml
index 91d315848eb..a7abb49b1a1 100644
--- a/indra/newview/skins/default/xui/fr/panel_region_texture.xml
+++ b/indra/newview/skins/default/xui/fr/panel_region_texture.xml
@@ -43,8 +43,7 @@
 		Ces valeurs représentent les limites de mélange pour les textures ci-dessus.
 	</text>
 	<text name="height_text_lbl11">
-		En mètres, la valeur Bas correspond à la hauteur maximum de la texture n°1
-et la valeur Haut correspond à la hauteur minimum de la texture n°4.
+		En mètres, la valeur Bas correspond à la hauteur maximum de la texture n°1 et la valeur Haut correspond à la hauteur minimum de la texture n°4.
 	</text>
 	<text name="height_text_lbl12">
 		et la valeur Haut correspond à la hauteur minimum de la texture n°4.
diff --git a/indra/newview/skins/default/xui/fr/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/fr/panel_script_limits_my_avatar.xml
new file mode 100644
index 00000000000..24656bf379a
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_script_limits_my_avatar.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="MON AVATAR" name="script_limits_my_avatar_panel">
+	<text name="loading_text">
+		Chargement...
+	</text>
+	<scroll_list name="scripts_list">
+		<scroll_list.columns label="Taille (Ko)" name="size"/>
+		<scroll_list.columns label="URL" name="urls"/>
+		<scroll_list.columns label="Nom de l&apos;objet" name="name"/>
+		<scroll_list.columns label="Endroit" name="location"/>
+	</scroll_list>
+	<button label="Rafraîchir la liste" name="refresh_list_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/fr/panel_script_limits_region_memory.xml
new file mode 100644
index 00000000000..1e5e680c097
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_script_limits_region_memory.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="MÉMOIRE DE LA RÉGION" name="script_limits_region_memory_panel">
+	<text name="script_memory">
+		Mémoire des scripts de parcelles
+	</text>
+	<text name="parcels_listed">
+		Parcelles possédées :
+	</text>
+	<text name="memory_used">
+		Mémoire utilisée :
+	</text>
+	<text name="loading_text">
+		Chargement...
+	</text>
+	<scroll_list name="scripts_list">
+		<scroll_list.columns label="Taille (Ko)" name="size"/>
+		<scroll_list.columns label="Nom de l&apos;objet" name="name"/>
+		<scroll_list.columns label="Propriétaire d&apos;objet" name="owner"/>
+		<scroll_list.columns label="Parcelle/emplacement" name="location"/>
+	</scroll_list>
+	<button label="Rafraîchir la liste" name="refresh_list_btn"/>
+	<button label="Surbrillance" name="highlight_btn"/>
+	<button label="Retour" name="return_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_side_tray.xml b/indra/newview/skins/default/xui/fr/panel_side_tray.xml
index 816834a9855..3ad16719218 100644
--- a/indra/newview/skins/default/xui/fr/panel_side_tray.xml
+++ b/indra/newview/skins/default/xui/fr/panel_side_tray.xml
@@ -2,9 +2,13 @@
 <!-- Side tray cannot show background because it is always
 	partially on screen to hold tab buttons. -->
 <side_tray name="sidebar">
+	<sidetray_tab description="Activer/désactiver le panneau latéral." name="sidebar_openclose"/>
 	<sidetray_tab description="Domicile." name="sidebar_home">
 		<panel label="domicile" name="panel_home"/>
 	</sidetray_tab>
+	<sidetray_tab description="Modifiez votre profil public et vos Favoris." name="sidebar_me">
+		<panel label="Moi" name="panel_me"/>
+	</sidetray_tab>
 	<sidetray_tab description="Trouvez vos amis, vos contacts et les personnes se trouvant près de vous." name="sidebar_people">
 		<panel_container name="panel_container">
 			<panel label="Profil du groupe" name="panel_group_info_sidetray"/>
@@ -14,13 +18,10 @@
 	<sidetray_tab description="Trouvez de nouveaux lieux à découvrir et les lieux que vous connaissez déjà." label="Lieux" name="sidebar_places">
 		<panel label="Lieux" name="panel_places"/>
 	</sidetray_tab>
-	<sidetray_tab description="Modifiez votre profil public et vos Favoris." name="sidebar_me">
-		<panel label="Moi" name="panel_me"/>
+	<sidetray_tab description="Parcourez votre inventaire." name="sidebar_inventory">
+		<panel label="Modifier l&apos;inventaire" name="sidepanel_inventory"/>
 	</sidetray_tab>
 	<sidetray_tab description="Modifiez votre apparence actuelle." name="sidebar_appearance">
 		<panel label="Changer d&apos;apparence" name="sidepanel_appearance"/>
 	</sidetray_tab>
-	<sidetray_tab description="Parcourez votre inventaire." name="sidebar_inventory">
-		<panel label="Modifier l&apos;inventaire" name="sidepanel_inventory"/>
-	</sidetray_tab>
 </side_tray>
diff --git a/indra/newview/skins/default/xui/fr/panel_status_bar.xml b/indra/newview/skins/default/xui/fr/panel_status_bar.xml
index 9432b44f0e1..ae575a9facb 100644
--- a/indra/newview/skins/default/xui/fr/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/fr/panel_status_bar.xml
@@ -21,7 +21,8 @@
 	<panel.string name="buycurrencylabel">
 		[AMT] L$
 	</panel.string>
-	<button label="" label_selected="" name="buycurrency" tool_tip="Mon solde : Cliquez pour acheter plus de L$"/>
+	<button label="" label_selected="" name="buycurrency" tool_tip="Mon solde"/>
+	<button label="Acheter des L$" name="buyL" tool_tip="Cliquez pour acheter plus de L$"/>
 	<text name="TimeText" tool_tip="Heure actuelle (Pacifique)">
 		midi
 	</text>
diff --git a/indra/newview/skins/default/xui/fr/panel_teleport_history.xml b/indra/newview/skins/default/xui/fr/panel_teleport_history.xml
index 623d2deae9e..bfd7a869c52 100644
--- a/indra/newview/skins/default/xui/fr/panel_teleport_history.xml
+++ b/indra/newview/skins/default/xui/fr/panel_teleport_history.xml
@@ -11,5 +11,7 @@
 		<accordion_tab name="1_month_and_older" title="Il y a 1 mois ou plus"/>
 		<accordion_tab name="6_months_and_older" title="Il y a 6 mois ou plus"/>
 	</accordion>
-	<panel label="bottom_panel" name="bottom_panel"/>
+	<panel label="bottom_panel" name="bottom_panel">
+		<button name="gear_btn" tool_tip="Afficher d&apos;autres options"/>
+	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/fr/panel_teleport_history_item.xml
index 9d18c52442d..21eb7ff62c2 100644
--- a/indra/newview/skins/default/xui/fr/panel_teleport_history_item.xml
+++ b/indra/newview/skins/default/xui/fr/panel_teleport_history_item.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="teleport_history_item">
 	<text name="region" value="..."/>
+	<button name="profile_btn" tool_tip="Afficher les infos de l&apos;objet"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/role_actions.xml b/indra/newview/skins/default/xui/fr/role_actions.xml
index a2df596773c..3367353b283 100644
--- a/indra/newview/skins/default/xui/fr/role_actions.xml
+++ b/indra/newview/skins/default/xui/fr/role_actions.xml
@@ -1,201 +1,76 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <role_actions>
-	<action_set
-	     description="Ces pouvoirs permettent d&apos;ajouter et de supprimer des membres du groupe et permettent aux nouveaux membres de rejoindre le groupe sans recevoir d&apos;invitation."
-	     name="Membership">
-		<action description="Inviter des membres dans ce groupe"
-		     longdescription="Invitez des membres à rejoindre ce groupe en utilisant le bouton Inviter un nouveau membre à partir de l&apos;onglet Membres et rôles &gt; Membres."
-		     name="member invite" value="1" />
-		<action description="Expulser des membres du groupe"
-		     longdescription="Expulsez des membres de ce groupe en utilisant le bouton Expulser un membre à partir de l&apos;onglet Membres et rôles &gt; Membres. Un propriétaire ne peut pas être expulsé. Un membre peut être expulsé d&apos;un groupe uniquement s&apos;il a le rôle Tous (Everyone). Si vous n&apos;êtes pas propriétaire, vous devez d&apos;abord retirer les rôles d&apos;un membre avant de pouvoir l&apos;expulser."
-		     name="member eject" value="2" />
-		<action
-		     description="Gérer l&apos;inscription et les frais d&apos;inscription"
-		     longdescription="Choisissez l&apos;inscription libre pour permettre aux nouveaux membres de rejoindre le groupe sans invitation et modifiez les frais d&apos;inscription à l&apos;onglet Général."
-		     name="member options" value="3" />
+	<action_set description="Ces pouvoirs permettent d&apos;ajouter et de supprimer des membres du groupe et permettent aux nouveaux membres de rejoindre le groupe sans recevoir d&apos;invitation." name="Membership">
+		<action description="Inviter des membres dans ce groupe" longdescription="Invitez des personnes à rejoindre ce groupe en utilisant le bouton Inviter dans l&apos;onglet Membres de la section Rôles." name="member invite" value="1"/>
+		<action description="Expulser des membres du groupe" longdescription="Expulsez des personnes de ce groupe en utilisant le bouton Expulser dans l&apos;onglet Membres de la section Rôles. Un propriétaire peut expulser tout le monde à l&apos;exception des autres propriétaires. Si vous n&apos;êtes pas propriétaire, vous pouvez expulser un membre d&apos;un groupe uniquement si il n&apos;a que le rôle Tous et AUCUN autre rôle. Pour supprimer des membres des rôles, vous devez disposer du pouvoir correspondant." name="member eject" value="2"/>
+		<action description="Activez Inscription libre et modifiez les frais d&apos;inscription" longdescription="Activez Inscription libre pour permettre aux nouveaux membres de s&apos;inscrire sans invitation, et changez les frais d&apos;inscription dans la section Général." name="member options" value="3"/>
 	</action_set>
-	<action_set
-	     description="Ces pouvoirs permettent d&apos;ajouter, de supprimer et de modifier les rôles dans le groupe et d&apos;y assigner des membres et des pouvoirs."
-	     name="Roles">
-		<action description="Créer des rôles"
-		     longdescription="Créez de nouveaux rôles à l&apos;onglet Membres et rôles &gt; Rôles."
-		     name="role create" value="4" />
-		<action description="Supprimer des rôles"
-		     longdescription="Supprimez des rôles à l&apos;onglet Membres et rôles &gt; Rôles."
-		     name="role delete" value="5" />
-		<action description="Modifier les noms, les titres et les descriptions des rôles"
-		     longdescription="Modifiez les noms, titres et descriptions des rôles à l&apos;onglet Membres et rôles &gt; Rôles."
-		     name="role properties" value="6" />
-		<action description="Attribuer des rôles limités"
-		     longdescription="Affectez des membres à certains rôles à l&apos;onglet Membres et rôles &gt; Membres. Un membre ne peut attribuer que des rôles auxquels il est lui-même affecté."
-		     name="role assign member limited" value="7" />
-		<action description="Attribuer tous les rôles"
-		     longdescription="Affectez des membres à tous types de rôles à l&apos;onglet Membres et rôles &gt; Membres &gt; Rôles assignés. Attention : ce pouvoir peut conférer des rôles très importants, proches de ceux d&apos;un propriétaire. Assurez-vous de bien comprendre ce pouvoir avant de l&apos;attribuer."
-		     name="role assign member" value="8" />
-		<action description="Destituer des membres de leurs rôles"
-		     longdescription="Destituez des membres de leurs rôles à partir du menu Rôles attribués à l&apos;onglet Membres et rôles &gt; Membres. Les propriétaires ne peuvent pas être destitués."
-		     name="role remove member" value="9" />
-		<action description="Modifier les pouvoirs d&apos;un rôle"
-		     longdescription="Attribuez et retirez les pouvoirs d&apos;un rôle à partir du menu Pouvoirs attribués à l&apos;onglet Membres et rôles &gt; Rôles &gt; Pouvoirs attribués. Attention : ce pouvoir peut donner des rôles très importants, proches de ceux d&apos;un propriétaire. Assurez-vous de bien comprendre ce pouvoir avant de l&apos;attribuer."
-		     name="role change actions" value="10" />
+	<action_set description="Ces pouvoirs permettent d&apos;ajouter, de supprimer et de modifier les rôles dans le groupe et d&apos;y assigner des membres et des pouvoirs." name="Roles">
+		<action description="Créer des rôles" longdescription="Créez de nouveaux rôles dans l&apos;onglet Rôles de la section Rôles." name="role create" value="4"/>
+		<action description="Supprimer des rôles" longdescription="Supprimez des rôles dans l&apos;onglet Rôles de la section Rôles." name="role delete" value="5"/>
+		<action description="Changez les noms, les titres et les descriptions des rôles, et indiquez si les membres des rôles sont rendus publics" longdescription="Changez les noms, les titres et les descriptions des rôles, et indiquez si les membres des rôles sont rendus publics. Vous pouvez le faire au bas de l&apos;onglet Rôles dans la section Rôles, après avoir sélectionné un rôle." name="role properties" value="6"/>
+		<action description="Attribuer des rôles limités" longdescription="Assignez des membres aux rôles dans la liste Rôles assignés (section Rôles &gt; onglet Membres). Un membre avec ce pouvoir peut uniquement ajouter des membres à un rôle dans lequel le responsable de l&apos;assignation est déjà présent." name="role assign member limited" value="7"/>
+		<action description="Attribuer tous les rôles" longdescription="Assignez des membres à n&apos;importe quel rôle dans la liste Rôles assignés (section Rôles &gt; onglet Membres). *AVERTISSEMENT* Tout membre disposant de ce pouvoir peut s&apos;assigner lui-même, ainsi que tout autre membre non-propriétaire, à des rôles disposant de pouvoirs plus importants, et accéder potentiellement à des pouvoirs proches de ceux d&apos;un propriétaire. Assurez-vous de bien comprendre ce que vous faites avant d&apos;attribuer ce pouvoir." name="role assign member" value="8"/>
+		<action description="Destituer des membres de leurs rôles" longdescription="Supprimez des membres des rôles dans la liste Rôles assignés (section Rôles &gt; onglet Membres). Les propriétaires ne peuvent pas être supprimés." name="role remove member" value="9"/>
+		<action description="Modifier les pouvoirs d&apos;un rôle" longdescription="Attribuez et supprimez des pouvoirs pour chaque rôle dans la liste Pouvoirs attribués (section Rôles &gt; onglet Rôles). *AVERTISSEMENT* Tout membre dans un rôle avec ce pouvoir peut s&apos;attribuer à lui-même, ainsi qu&apos;à tout autre membre non-propriétaire, tous les pouvoirs, et accéder potentiellement à des pouvoirs proches de ceux d&apos;un propriétaire. Assurez-vous de bien comprendre ce que vous faites avant d&apos;attribuer ce pouvoir." name="role change actions" value="10"/>
 	</action_set>
-	<action_set
-	     description="Ces pouvoirs permettent de modifier le profil public du groupe, sa charte et son logo."
-	     name="Group Identity">
-		<action
-		     description="Modifier le profil public du groupe"
-		     longdescription="Modifiez la charte, le logo, l&apos;affichage dans la recherche et la liste des membres visibles à l&apos;onglet Général."
-		     name="group change identity" value="11" />
+	<action_set description="Ces pouvoirs permettent de modifier le profil public du groupe, sa charte et son logo." name="Group Identity">
+		<action description="Modifier le profil public du groupe" longdescription="Modifiez la charte, le logo et l&apos;affichage dans les résultats de recherche. Vous pouvez faire cela dans la section Général." name="group change identity" value="11"/>
 	</action_set>
-	<action_set
-	     description="Ces pouvoirs permettent de transférer, modifier et vendre du terrain appartenant au groupe. Pour accéder au menu À propos du terrain, cliquez sur le nom de la parcelle en haut de l&apos;écran ou cliquez-droit sur le sol."
-	     name="Parcel Management">
-		<action description="Transférer et acheter des parcelles pour le groupe"
-		     longdescription="Transférez et achetez des parcelles pour le groupe à partir du menu À propos du terrain &gt; Général."
-		     name="land deed" value="12" />
-		<action description="Abandonner le terrain"
-		     longdescription="Abandonnez des parcelles du groupe à Linden Lab. Attention : ce pouvoir autorise l&apos;abandon d&apos;un terrain appartenant au groupe. Ce terrain sera alors définitivement perdu. Assurez-vous de bien comprendre ce pouvoir avant de l&apos;attribuer."
-		     name="land release" value="13" />
-		<action description="Vendre du terrain"
-		     longdescription="Vendez des parcelles du groupe. Attention : ce pouvoir autorise la vente d&apos;un terrain appartenant au groupe. Ce terrain sera alors définitivement perdu. Assurez-vous de bien comprendre ce pouvoir avant de l&apos;attribuer."
-		     name="land set sale info" value="14" />
-		<action description="Diviser et fusionner des parcelles"
-		     longdescription="Divisez et fusionnez des parcelles. Pour cela, cliquez-droit sur le sol, sélectionnez Modifier le terrain, et faites glisser votre souris sur l&apos;endroit que vous souhaitez modifier. Pour diviser le terrain, sélectionnez un endroit puis cliquez sur Diviser... Pour fusionner des parcelles, sélectionnez au moins deux parcelles adjacentes et cliquez sur Fusionner."
-		     name="land divide join" value="15" />
+	<action_set description="Ces pouvoirs incluent les pouvoirs de céder, modifier et vendre les terrains de ce groupe. Pour accéder à la fenêtre À propos des terrains, cliquez sur le sol avec le bouton droit de la souris et sélectionnez À propos des terrains, ou cliquez sur l&apos;icône i dans la barre de navigation." name="Parcel Management">
+		<action description="Transférer et acheter des parcelles pour le groupe" longdescription="Transférez et achetez des parcelles pour le groupe à partir du menu À propos du terrain &gt; Général." name="land deed" value="12"/>
+		<action description="Abandonner le terrain" longdescription="Abandonnez des parcelles du groupe à Linden Lab. Attention : ce pouvoir autorise l&apos;abandon d&apos;un terrain appartenant au groupe. Ce terrain sera alors définitivement perdu. Assurez-vous de bien comprendre ce pouvoir avant de l&apos;attribuer." name="land release" value="13"/>
+		<action description="Vendre du terrain" longdescription="Vendez des parcelles du groupe. Attention : ce pouvoir autorise la vente d&apos;un terrain appartenant au groupe. Ce terrain sera alors définitivement perdu. Assurez-vous de bien comprendre ce pouvoir avant de l&apos;attribuer." name="land set sale info" value="14"/>
+		<action description="Diviser et fusionner des parcelles" longdescription="Divisez et fusionnez des parcelles. Pour ce faire, cliquez sur le sol avec le bouton droit de la souris, sélectionnez Modifier le terrain et faites glisser la souris sur le terrain pour faire une sélection. Pour diviser une parcelle, sélectionnez ce que vous souhaitez diviser et cliquez sur Sous-diviser. Pour fusionner des parcelles, sélectionnez-en deux ou plus qui sont contiguës et cliquez sur Fusionner." name="land divide join" value="15"/>
 	</action_set>
-	<action_set
-	     description="Ces pouvoirs permettent de modifier le nom de la parcelle, son référencement dans la recherche et le lieu de téléportation."
-	     name="Parcel Identity">
-		<action
-		     description="Afficher dans la recherche et définir une catégorie"
-		     longdescription="Choisissez de faire apparaître la parcelle dans la recherche et définissez sa catégorie à partir du menu À propos du terrain &gt; Options."
-		     name="land find places" value="17" />
-		<action
-		     description="Modifier le nom, la description et le référencement du terrain dans la recherche"
-		     longdescription="Modifiez le nom, la description de la parcelle et son référencement dans la recherche à partir du menu À propos du terrain &gt; Options."
-		     name="land change identity" value="18" />
-		<action
-		     description="Définir le lieu d&apos;arrivée et le routage des téléportations"
-		     longdescription="Définissez le lieu d&apos;arrivée des téléportations et le routage à partir du menu À propos du terrain &gt; Options."
-		     name="land set landing point" value="19" />
+	<action_set description="Ces pouvoirs permettent de modifier le nom de la parcelle, son référencement dans la recherche et le lieu de téléportation." name="Parcel Identity">
+		<action description="Activez Afficher le lieu dans la recherche et définissez la catégorie" longdescription="Activez Afficher le lieu dans la recherche et définissez la catégorie d&apos;une parcelle dans l&apos;onglet À propos des terrains &gt; Options." name="land find places" value="17"/>
+		<action description="Modifiez le nom et la description de la parcelle, ainsi que les paramètres d&apos;affichage du lieu dans la recherche" longdescription="Modifiez le nom et la description de la parcelle, ainsi que les paramètres d&apos;affichage du lieu dans la recherche. Pour ce faire, utilisez l&apos;onglet À propos des terrains &gt; Options." name="land change identity" value="18"/>
+		<action description="Définir le lieu d&apos;arrivée et le routage des téléportations" longdescription="Définissez le lieu d&apos;arrivée des téléportations et le routage à partir du menu À propos du terrain &gt; Options." name="land set landing point" value="19"/>
 	</action_set>
-	<action_set
-	     description="Ces pouvoirs permettent de définir les options de la parcelle concernant la musique, les médias, la création d&apos;objets et le relief."
-	     name="Parcel Settings">
-		<action description="Modifier la musique et les médias"
-		     longdescription="Changez la musique et les médias à partir du menu À propos du terrain &gt; Médias."
-		     name="land change media" value="20" />
-		<action description="Changer l&apos;option Modifier le terrain"
-		     longdescription="Changez l&apos;option Modifier le terrain à partir du menu À propos du terrain &gt; Options. Attention : ce pouvoir permet de terraformer votre terrain et de placer ou déplacer des plantes Linden. Assurez-vous de bien comprendre ce pouvoir avant de l&apos;attribuer. "
-		     name="land edit" value="21" />
-		<action
-		     description="Changer diverses options du terrain"
-		     longdescription="Changez diverses options de la parcelle à partir du menu À propos du terrain &gt; Options. Vous pouvez permettre aux autres résidents de voler, créer des objets, modifier le terrain, lancer des scripts, créer des repères etc."
-		     name="land options" value="22" />
+	<action_set description="Ces pouvoirs permettent de définir les options de la parcelle concernant la musique, les médias, la création d&apos;objets et le relief." name="Parcel Settings">
+		<action description="Modifier la musique et les médias" longdescription="Changez la musique et les médias à partir du menu À propos du terrain &gt; Médias." name="land change media" value="20"/>
+		<action description="Changer l&apos;option Modifier le terrain" longdescription="Changez l&apos;option Modifier le terrain à partir du menu À propos du terrain &gt; Options. Attention : ce pouvoir permet de terraformer votre terrain et de placer ou déplacer des plantes Linden. Assurez-vous de bien comprendre ce pouvoir avant de l&apos;attribuer. " name="land edit" value="21"/>
+		<action description="Changer diverses options du terrain" longdescription="Activez Sécurisé (pas de dégâts), Voler, et autorisez les autres résidents à : modifier le terrain, construire, créer des repères et exécuter des scripts sur les terrains appartenant au groupe dans l&apos;onglet propos des terrains &gt; Options." name="land options" value="22"/>
 	</action_set>
-	<action_set
-	     description="Ces pouvoirs permettent aux membres d&apos;outrepasser les restrictions sur les parcelles du groupe."
-	     name="Parcel Powers">
-		<action description="Toujours autoriser Modifier le terrain"
-		     longdescription="Vous pouvez modifier le relief d&apos;une parcelle du groupe, même si l&apos;option est désactivée à partir du menu À propos du terrain &gt; Options."
-		     name="land allow edit land" value="23" />
-		<action description="Toujours autoriser à voler"
-		     longdescription="Vous pouvez voler sur une parcelle du groupe, même si l&apos;option est désactivée à partir du menu À propos du terrain &gt; Options."
-		     name="land allow fly" value="24" />
-		<action description="Toujours autoriser à créer des objets"
-		     longdescription="Vous pouvez créer des objets sur une parcelle du groupe, même si l&apos;option est désactivée à partir du menu À propos du terrain &gt; Options."
-		     name="land allow create" value="25" />
-		<action description="Toujours autoriser à créer des repères"
-		     longdescription="Vous pouvez créer un repère sur une parcelle du groupe, même si l&apos;option est désactivée à partir du menu À propos du terrain &gt; Options."
-		     name="land allow landmark" value="26" />
-		<action description="Autoriser à définir un domicile sur le terrain du groupe"
-		     longdescription="Vous pouvez définir votre domicile sur une parcelle du groupe à partir du menu Monde &gt; Définir comme domicile."
-		     name="land allow set home" value="28" />
+	<action_set description="Ces pouvoirs permettent aux membres d&apos;outrepasser les restrictions sur les parcelles du groupe." name="Parcel Powers">
+		<action description="Toujours autoriser Modifier le terrain" longdescription="Vous pouvez modifier le relief d&apos;une parcelle du groupe, même si l&apos;option est désactivée à partir du menu À propos du terrain &gt; Options." name="land allow edit land" value="23"/>
+		<action description="Toujours autoriser à voler" longdescription="Vous pouvez voler sur une parcelle du groupe, même si l&apos;option est désactivée à partir du menu À propos du terrain &gt; Options." name="land allow fly" value="24"/>
+		<action description="Toujours autoriser à créer des objets" longdescription="Vous pouvez créer des objets sur une parcelle du groupe, même si l&apos;option est désactivée à partir du menu À propos du terrain &gt; Options." name="land allow create" value="25"/>
+		<action description="Toujours autoriser à créer des repères" longdescription="Vous pouvez créer un repère sur une parcelle du groupe, même si l&apos;option est désactivée à partir du menu À propos du terrain &gt; Options." name="land allow landmark" value="26"/>
+		<action description="Autoriser à définir un domicile sur le terrain du groupe" longdescription="Un membre dans un rôle avec ce pouvoir peut utiliser le menu Monde &gt; Repères &gt; Définir le domicile ici sur une parcelle cédée à ce groupe." name="land allow set home" value="28"/>
 	</action_set>
-	<action_set
-	     description="Ces pouvoirs permettent d&apos;autoriser ou d&apos;interdire l&apos;accès à des parcelles du groupe et de geler ou d&apos;expulser des résidents."
-	     name="Parcel Access">
-		<action description="Gérer la liste d&apos;accès à la parcelle"
-		     longdescription="Gérez la liste des résidents autorisés sur la parcelle à partir du menu À propos du terrain &gt; Accès."
-		     name="land manage allowed" value="29" />
-		<action description="Gérer la liste noire de cette parcelle"
-		     longdescription="Gérez la liste des résidents interdits sur la parcelle à partir du menu À propos du terrain &gt; Interdire."
-		     name="land manage banned" value="30" />
-		<action description="Vendre des pass"
-		     longdescription="Choisissez le prix et la durée des pass pour accéder à la parcelle à partir du menu À propos du terrain &gt; Accès."
-		     name="land manage passes" value="31" />
-		<action description="Expulser et geler des résidents"
-		     longdescription="Vous pouvez expulser ou geler un résident indésirable en cliquant-droit sur lui, menu radial &gt; Plus."
-		     name="land admin" value="32" />
+	<action_set description="Ces pouvoirs permettent d&apos;autoriser ou d&apos;interdire l&apos;accès à des parcelles du groupe et de geler ou d&apos;expulser des résidents." name="Parcel Access">
+		<action description="Gérer la liste d&apos;accès à la parcelle" longdescription="Gérez la liste des résidents autorisés sur la parcelle à partir du menu À propos du terrain &gt; Accès." name="land manage allowed" value="29"/>
+		<action description="Gérer la liste noire de cette parcelle" longdescription="Gérez les listes des résidents bannis des parcelles dans l&apos;onglet À propos des terrains &gt; Accès." name="land manage banned" value="30"/>
+		<action description="Modifiez les paramètres Vendre des pass à" longdescription="Modifiez les paramètres Vendre des pass à dans l&apos;onglet À propos des terrains &gt; Accès." name="land manage passes" value="31"/>
+		<action description="Expulser et geler des résidents" longdescription="Les membres dans un rôle avec ce pouvoir peuvent se charger des résidents indésirables sur une parcelle appartenant au groupe en cliquant dessus, puis en sélectionnant Expulser ou Geler." name="land admin" value="32"/>
 	</action_set>
-	<action_set
-	     description="Ces pouvoirs permettent de renvoyer des objets du groupe et de placer ou déplacer des plantes Linden pour aménager le paysage. Utilisez ce pouvoir avec précaution car les objets renvoyés le sont définitivement."
-	     name="Parcel Content">
-		<action description="Renvoyer les objets transférés au groupe"
-		     longdescription="Vous pouvez renvoyer des objets appartenant au groupe à partir du menu À propos du terrain &gt; Objets."
-		     name="land return group owned" value="48" />
-		<action description="Renvoyer les objets attribués au groupe"
-		     longdescription="Renvoyez les objets attribués au groupe et sur des parcelles du groupe à partir du menu À propos du terrain &gt; Objets."
-		     name="land return group set" value="33" />
-		<action description="Renvoyer des objets n&apos;appartenant pas au groupe"
-		     longdescription="Renvoyez les objets n&apos;appartenant pas au groupe et sur des parcelles du groupe à partir du menu À propos du terrain &gt; Objets."
-		     name="land return non group" value="34" />
-		<action description="Aménager le paysage avec des plantes Linden"
-		     longdescription="Placez et déplacez des arbres, plantes et herbes Linden. Vous les trouverez dans le dossier Objets de la  bibliothèque de votre inventaire mais aussi à partir du menu Construire."
-		     name="land gardening" value="35" />
+	<action_set description="Ces pouvoirs permettent de renvoyer des objets du groupe et de placer ou déplacer des plantes Linden pour aménager le paysage. Utilisez ce pouvoir avec précaution car les objets renvoyés le sont définitivement." name="Parcel Content">
+		<action description="Renvoyer les objets transférés au groupe" longdescription="Vous pouvez renvoyer des objets appartenant au groupe à partir du menu À propos du terrain &gt; Objets." name="land return group owned" value="48"/>
+		<action description="Renvoyer les objets attribués au groupe" longdescription="Renvoyez les objets attribués au groupe et sur des parcelles du groupe à partir du menu À propos du terrain &gt; Objets." name="land return group set" value="33"/>
+		<action description="Renvoyer des objets n&apos;appartenant pas au groupe" longdescription="Renvoyez les objets n&apos;appartenant pas au groupe et sur des parcelles du groupe à partir du menu À propos du terrain &gt; Objets." name="land return non group" value="34"/>
+		<action description="Aménager le paysage avec des plantes Linden" longdescription="Pouvoir de paysagisme permettant de placer et déplacer des arbres, des plantes et des herbes Linden. Vous trouverez ces objets dans le dossier Bibliothèque &gt; Objets de votre inventaire. Vous pouvez aussi les créer à partir du menu Construire." name="land gardening" value="35"/>
 	</action_set>
-	<action_set
-	     description="Ces pouvoirs permettent de transférer, modifier et vendre des objets du groupe. Ces changements se font à partir du menu Construire &gt; Modifier &gt; Général."
-	     name="Object Management">
-		<action description="Transférer des objets au groupe"
-		     longdescription="Transférez des objets au groupe à partir du menu Construire &gt; Modifier &gt; Général."
-		     name="object deed" value="36" />
-		<action
-		     description="Manipuler les objets du groupe"
-		     longdescription="Déplacez, copiez et modifiez les objets du groupe à partir du menu Construire &gt; Modifier &gt; Général."
-		     name="object manipulate" value="38" />
-		<action description="Vendre des objets du groupe"
-		     longdescription="Mettez en vente des objets du groupe à partir du menu Construire &gt; Modifier &gt; Général."
-		     name="object set sale" value="39" />
+	<action_set description="Ces pouvoirs incluent les pouvoirs de céder, modifier et vendre des objets appartenant au groupe. Pour ce faire, utilisez l&apos;onglet Outils de construction &gt; Général. Cliquez sur un objet avec le bouton droit de la souris puis sur Modifier pour accéder à ses paramètres." name="Object Management">
+		<action description="Transférer des objets au groupe" longdescription="Cédez des objets au groupe dans l&apos;onglet Outils de construction &gt; Général." name="object deed" value="36"/>
+		<action description="Manipuler les objets du groupe" longdescription="Manipulez (déplacez, copiez, modifiez) des objets appartenant au groupe dans l&apos;onglet Outils de construction &gt; Général." name="object manipulate" value="38"/>
+		<action description="Vendre des objets du groupe" longdescription="Mettez des objets appartenant au groupe en vente dans l&apos;onglet Outils de construction &gt; Général." name="object set sale" value="39"/>
 	</action_set>
-	<action_set
-	     description="Ce pouvoir définit les contributions aux frais du groupe, la réception des dividendes et l&apos;accès aux finances du groupe."
-	     name="Accounting">
-		<action description="Contribuer aux frais du groupe et recevoir des dividendes"
-		     longdescription="Contribuez aux frais du groupe et recevez des dividendes en cas de bénéfices. Vous recevrez une partie des ventes de terrains et objets appartenant au groupe et contribuerez aux frais divers (mise en vente des terrains etc.)"
-		     name="accounting accountable" value="40" />
+	<action_set description="Ce pouvoir définit les contributions aux frais du groupe, la réception des dividendes et l&apos;accès aux finances du groupe." name="Accounting">
+		<action description="Contribuer aux frais du groupe et recevoir des dividendes" longdescription="Contribuez aux frais du groupe et recevez des dividendes en cas de bénéfices. Vous recevrez une partie des ventes de terrains et objets appartenant au groupe et contribuerez aux frais divers (mise en vente des terrains etc.)" name="accounting accountable" value="40"/>
 	</action_set>
-	<action_set
-	     description="Envoyez, recevez et consultez les notices du groupe."
-	     name="Notices">
-		<action description="Envoyer des notices"
-		     longdescription="Envoyez des notices à l&apos;onglet Notices."
-		     name="notices send" value="42" />
-		<action description="Recevoir et consulter les notices"
-		     longdescription="Recevez des notices et consulter d&apos;anciennes notices à l&apos;onglet Notices."
-		     name="notices receive" value="43" />
+	<action_set description="Envoyez, recevez et consultez les notices du groupe." name="Notices">
+		<action description="Envoyer des notices" longdescription="Les membres dans un rôle avec ce pouvoir peuvent envoyer des notices par le biais de la section Groupe &gt; Notices." name="notices send" value="42"/>
+		<action description="Recevoir et consulter les notices" longdescription="Les membres dans un rôle avec ce pouvoir peuvent recevoir des notices et consulter les anciennes notices par le biais de la section Groupe &gt; Notices." name="notices receive" value="43"/>
 	</action_set>
-	<action_set
-	     description="Ces pouvoirs permettent de créer de nouvelles propositions, de voter et de consulter l&apos;historique des votes."
-	     name="Proposals">
-		<action description="Créer des propositions"
-		     longdescription="Ces pouvoirs permettent de créer des propositions et de les soumettre au vote, à partir du menu Profil du groupe &gt; Propositions."
-		     name="proposal start" value="44" />
-		<action description="Voter les propositions"
-		     longdescription="Votez les propositions à partir du menu Profil du groupe &gt; Propositions."
-		     name="proposal vote" value="45" />
+	<action_set description="Ces pouvoirs permettent de créer de nouvelles propositions, de voter et de consulter l&apos;historique des votes." name="Proposals">
+		<action description="Créer des propositions" longdescription="Ces pouvoirs permettent de créer des propositions et de les soumettre au vote, à partir du menu Profil du groupe &gt; Propositions." name="proposal start" value="44"/>
+		<action description="Voter les propositions" longdescription="Votez les propositions à partir du menu Profil du groupe &gt; Propositions." name="proposal vote" value="45"/>
 	</action_set>
-	<action_set
-	     description="Ces pouvoirs vous permettent de gérer l&apos;accès aux sessions de chat écrit ou vocal du groupe."
-	     name="Chat">
-		<action description="Participer aux chats"
-		     longdescription="Participez aux chats du groupe."
-		     name="join group chat" />
-		<action description="Participer au chat vocal"
-		     longdescription="Participez au chat vocal du groupe. Remarque : vous devez au préalable avoir le pouvoir de participer aux chats."
-		     name="join voice chat" />
-		<action description="Modérer les chats"
-		     longdescription="Contrôlez l&apos;accès et la participation aux chats de groupe écrits et vocaux."
-		     name="moderate group chat" />
+	<action_set description="Ces pouvoirs vous permettent de gérer l&apos;accès aux sessions de chat écrit ou vocal du groupe." name="Chat">
+		<action description="Participer aux chats" longdescription="Participez aux chats du groupe." name="join group chat"/>
+		<action description="Participer au chat vocal" longdescription="Participez au chat vocal du groupe. Remarque : vous devez au préalable avoir le pouvoir de participer aux chats." name="join voice chat"/>
+		<action description="Modérer les chats" longdescription="Contrôlez l&apos;accès et la participation aux chats de groupe écrits et vocaux." name="moderate group chat"/>
 	</action_set>
 </role_actions>
diff --git a/indra/newview/skins/default/xui/fr/sidepanel_appearance.xml b/indra/newview/skins/default/xui/fr/sidepanel_appearance.xml
index 456e1dcb9d8..60fd63bffcf 100644
--- a/indra/newview/skins/default/xui/fr/sidepanel_appearance.xml
+++ b/indra/newview/skins/default/xui/fr/sidepanel_appearance.xml
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Apparence" name="appearance panel">
+<panel label="Tenues" name="appearance panel">
 	<string name="No Outfit" value="Aucune tenue"/>
 	<panel name="panel_currentlook">
 		<button label="Éditer" name="editappearance_btn"/>
 		<text name="currentlook_title">
-			Tenue actuelle :
+			(non enregistré)
 		</text>
 		<text name="currentlook_name">
-			Ma tenue
+			Ma tenue avec un nom très long comme ORIGNAL
 		</text>
 	</panel>
-	<filter_editor label="Filtre" name="Filter"/>
+	<filter_editor label="Filtrer les tenues" name="Filter"/>
 	<button label="Porter" name="wear_btn"/>
 	<button label="Nouvelle tenue" name="newlook_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml b/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml
index b310574c4c0..eba399f6a31 100644
--- a/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml
@@ -2,7 +2,7 @@
 <panel label="Choses" name="objects panel">
 	<panel label="" name="sidepanel__inventory_panel">
 		<panel name="button_panel">
-			<button label="Infos" name="info_btn"/>
+			<button label="Profil" name="info_btn"/>
 			<button label="Porter" name="wear_btn"/>
 			<button label="Jouer" name="play_btn"/>
 			<button label="Téléporter" name="teleport_btn"/>
diff --git a/indra/newview/skins/default/xui/fr/sidepanel_item_info.xml b/indra/newview/skins/default/xui/fr/sidepanel_item_info.xml
index b1df70148b6..31a0534b2dc 100644
--- a/indra/newview/skins/default/xui/fr/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/fr/sidepanel_item_info.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="item properties" title="Propriétés des objets de l&apos;inventaire">
+<panel name="item properties" title="Profil de l&apos;objet">
 	<panel.string name="unknown">
 		(inconnu)
 	</panel.string>
@@ -15,6 +15,8 @@
 	<panel.string name="acquiredDate">
 		[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
 	</panel.string>
+	<text name="title" value="Profil de l&apos;objet"/>
+	<text name="where" value="(inventaire)"/>
 	<panel label="">
 		<text name="LabelItemNameTitle">
 			Nom :
@@ -28,53 +30,50 @@
 		<text name="LabelCreatorName">
 			Nicole Linden
 		</text>
-		<button label="Profil..." name="BtnCreator"/>
+		<button label="Profil" name="BtnCreator"/>
 		<text name="LabelOwnerTitle">
 			Propriétaire :
 		</text>
 		<text name="LabelOwnerName">
 			Thrax Linden
 		</text>
-		<button label="Profil..." name="BtnOwner"/>
+		<button label="Profil" name="BtnOwner"/>
 		<text name="LabelAcquiredTitle">
 			Acquis :
 		</text>
 		<text name="LabelAcquiredDate">
 			Wed May 24 12:50:46 2006
 		</text>
-		<text name="OwnerLabel">
-			Vous :
-		</text>
-		<check_box label="Éditer" name="CheckOwnerModify"/>
-		<check_box label="Copier" name="CheckOwnerCopy"/>
-		<check_box label="Revendre" name="CheckOwnerTransfer"/>
-		<text name="AnyoneLabel">
-			N&apos;importe qui :
-		</text>
-		<check_box label="Copier" name="CheckEveryoneCopy"/>
-		<text name="GroupLabel">
-			Groupe :
-		</text>
-		<check_box label="Partager" name="CheckShareWithGroup"/>
-		<text name="NextOwnerLabel">
-			Le prochain propriétaire :
-		</text>
-		<check_box label="Éditer" name="CheckNextOwnerModify"/>
-		<check_box label="Copier" name="CheckNextOwnerCopy"/>
-		<check_box label="Revendre" name="CheckNextOwnerTransfer"/>
+		<panel name="perms_inv">
+			<text name="perm_modify">
+				Vous pouvez :
+			</text>
+			<check_box label="Modifier" name="CheckOwnerModify"/>
+			<check_box label="Copier" name="CheckOwnerCopy"/>
+			<check_box label="Transférer" name="CheckOwnerTransfer"/>
+			<text name="AnyoneLabel">
+				N&apos;importe qui :
+			</text>
+			<check_box label="Copier" name="CheckEveryoneCopy"/>
+			<text name="GroupLabel">
+				Groupe :
+			</text>
+			<check_box label="Partager" name="CheckShareWithGroup" tool_tip="Autorisez tous les membres du groupe choisi à utiliser et à partager vos droits pour cet objet. Pour activer les restrictions de rôles, vous devez d&apos;abord cliquer sur Transférer."/>
+			<text name="NextOwnerLabel">
+				Le prochain propriétaire :
+			</text>
+			<check_box label="Modifier" name="CheckNextOwnerModify"/>
+			<check_box label="Copier" name="CheckNextOwnerCopy"/>
+			<check_box label="Transférer" name="CheckNextOwnerTransfer" tool_tip="Le prochain propriétaire peut donner ou revendre cet objet"/>
+		</panel>
 		<check_box label="À vendre" name="CheckPurchase"/>
 		<combo_box name="combobox sale copy">
 			<combo_box.item label="Copier" name="Copy"/>
 			<combo_box.item label="Original" name="Original"/>
 		</combo_box>
-		<spinner label="Prix :" name="Edit Cost"/>
-		<text name="CurrencySymbol">
-			L$
-		</text>
+		<spinner label="Prix : L$" name="Edit Cost"/>
 	</panel>
 	<panel name="button_panel">
-		<button label="Éditer" name="edit_btn"/>
 		<button label="Annuler" name="cancel_btn"/>
-		<button label="Enregistrer" name="save_btn"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml b/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml
index de7751c4ffe..688bed8cbf4 100644
--- a/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="object properties" title="Propriétés de l&apos;objet">
+<panel name="object properties" title="Profil de l&apos;objet">
 	<panel.string name="text deed continued">
 		Céder
 	</panel.string>
@@ -36,6 +36,8 @@
 	<panel.string name="Sale Mixed">
 		Vente mixte
 	</panel.string>
+	<text name="title" value="Profil de l&apos;objet"/>
+	<text name="where" value="(dans le monde virtuel)"/>
 	<panel label="">
 		<text name="Name:">
 			Nom :
@@ -43,11 +45,11 @@
 		<text name="Description:">
 			Description :
 		</text>
-		<text name="Creator:">
+		<text name="CreatorNameLabel">
 			Créateur :
 		</text>
 		<text name="Creator Name">
-			Esbee Linden
+			Erica Linden
 		</text>
 		<text name="Owner:">
 			Propriétaire :
@@ -55,13 +57,12 @@
 		<text name="Owner Name">
 			Erica Linden
 		</text>
-		<text name="Group:">
+		<text name="Group_label">
 			Groupe :
 		</text>
 		<button name="button set group" tool_tip="Choisissez un groupe pour partager les permissions de cet objet"/>
 		<name_box initial_value="Chargement..." name="Group Name Proxy"/>
 		<button label="Céder" label_selected="Céder" name="button deed" tool_tip="En cédant un objet, vous donnez aussi les permissions au prochain propriétaire. Seul un officier peut céder les objets d&apos;un groupe."/>
-		<check_box label="Partager" name="checkbox share with group" tool_tip="Autorisez tous les membres du groupe choisi à utiliser et à partager vos droits pour cet objet. Pour activer les restrictions de rôles, vous devez d&apos;abord cliquer sur Transférer."/>
 		<text name="label click action">
 			Cliquer pour :
 		</text>
@@ -72,55 +73,56 @@
 			<combo_box.item label="Payer l&apos;objet" name="Payobject"/>
 			<combo_box.item label="Ouvrir" name="Open"/>
 		</combo_box>
-		<check_box label="À vendre :" name="checkbox for sale"/>
-		<combo_box name="sale type">
-			<combo_box.item label="Copier" name="Copy"/>
-			<combo_box.item label="Contenus" name="Contents"/>
-			<combo_box.item label="Original" name="Original"/>
-		</combo_box>
-		<spinner label="Prix : L$" name="Edit Cost"/>
-		<check_box label="Afficher dans les résultats de recherche" name="search_check" tool_tip="Permettre aux autres résidents de voir cet objet dans les résultats de recherche"/>
-		<panel name="perms_build">
+		<panel name="perms_inv">
 			<text name="perm_modify">
 				Vous pouvez modifier cet objet
 			</text>
 			<text name="Anyone can:">
 				N&apos;importe qui :
 			</text>
-			<check_box label="Bouger" name="checkbox allow everyone move"/>
 			<check_box label="Copier" name="checkbox allow everyone copy"/>
-			<text name="Next owner can:">
+			<check_box label="Bouger" name="checkbox allow everyone move"/>
+			<text name="GroupLabel">
+				Groupe :
+			</text>
+			<check_box label="Partager" name="checkbox share with group" tool_tip="Autorisez tous les membres du groupe choisi à utiliser et à partager vos droits pour cet objet. Pour activer les restrictions de rôles, vous devez d&apos;abord cliquer sur Transférer."/>
+			<text name="NextOwnerLabel">
 				Le prochain propriétaire :
 			</text>
 			<check_box label="Modifier" name="checkbox next owner can modify"/>
 			<check_box label="Copier" name="checkbox next owner can copy"/>
 			<check_box label="Transférer" name="checkbox next owner can transfer" tool_tip="Le prochain propriétaire peut donner ou revendre cet objet"/>
-			<text name="B:">
-				B :
-			</text>
-			<text name="O:">
-				O :
-			</text>
-			<text name="G:">
-				G :
-			</text>
-			<text name="E:">
-				E :
-			</text>
-			<text name="N:">
-				N :
-			</text>
-			<text name="F:">
-				F :
-			</text>
 		</panel>
+		<check_box label="À vendre" name="checkbox for sale"/>
+		<combo_box name="sale type">
+			<combo_box.item label="Copier" name="Copy"/>
+			<combo_box.item label="Contenus" name="Contents"/>
+			<combo_box.item label="Original" name="Original"/>
+		</combo_box>
+		<spinner label="Prix : L$" name="Edit Cost"/>
+		<check_box label="Afficher dans les résultats de recherche" name="search_check" tool_tip="Permettre aux autres résidents de voir cet objet dans les résultats de recherche"/>
+		<text name="B:">
+			B :
+		</text>
+		<text name="O:">
+			O :
+		</text>
+		<text name="G:">
+			G :
+		</text>
+		<text name="E:">
+			E :
+		</text>
+		<text name="N:">
+			N :
+		</text>
+		<text name="F:">
+			F :
+		</text>
 	</panel>
 	<panel name="button_panel">
-		<button label="Éditer" name="edit_btn"/>
 		<button label="Ouvrir" name="open_btn"/>
 		<button label="Payer" name="pay_btn"/>
 		<button label="Acheter" name="buy_btn"/>
-		<button label="Annuler" name="cancel_btn"/>
-		<button label="Enregistrer" name="save_btn"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index b45a016822c..c6f73dde212 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -10,6 +10,9 @@
 	<string name="APP_NAME">
 		Second Life
 	</string>
+	<string name="CAPITALIZED_APP_NAME">
+		SECOND LIFE
+	</string>
 	<string name="SECOND_LIFE_GRID">
 		Grille de Second Life
 	</string>
@@ -49,6 +52,9 @@
 	<string name="LoginInitializingMultimedia">
 		Multimédia en cours d&apos;initialisation…
 	</string>
+	<string name="LoginInitializingFonts">
+		Chargement des polices en cours...
+	</string>
 	<string name="LoginVerifyingCache">
 		Fichiers du cache en cours de vérification (peut prendre 60-90 s)...
 	</string>
@@ -79,6 +85,9 @@
 	<string name="LoginDownloadingClothing">
 		Habits en cours de téléchargement...
 	</string>
+	<string name="LoginFailedNoNetwork">
+		Erreur réseau : impossible d&apos;établir la connexion. Veuillez vérifier votre connexion réseau.
+	</string>
 	<string name="Quit">
 		Quitter
 	</string>
@@ -174,7 +183,7 @@
 		Afficher la carte pour
 	</string>
 	<string name="BUTTON_CLOSE_DARWIN">
-		Fermer (&#8984;W)
+		Fermer (⌘W)
 	</string>
 	<string name="BUTTON_CLOSE_WIN">
 		Fermer (Ctrl+W)
@@ -191,9 +200,6 @@
 	<string name="BUTTON_DOCK">
 		Attacher
 	</string>
-	<string name="BUTTON_UNDOCK">
-		Détacher
-	</string>
 	<string name="BUTTON_HELP">
 		Afficher l&apos;aide
 	</string>
@@ -626,11 +632,14 @@
 	<string name="ControlYourCamera">
 		Contrôler votre caméra
 	</string>
+	<string name="NotConnected">
+		Pas connecté(e)
+	</string>
 	<string name="SIM_ACCESS_PG">
-		PG
+		Général
 	</string>
 	<string name="SIM_ACCESS_MATURE">
-		Mature
+		Modéré
 	</string>
 	<string name="SIM_ACCESS_ADULT">
 		Adult
@@ -818,6 +827,9 @@
 	<string name="InventoryNoMatchingItems">
 		Aucun objet correspondant dans l&apos;inventaire.
 	</string>
+	<string name="FavoritesNoMatchingItems">
+		Faites glisser un repère ici pour l&apos;ajouter à vos Favoris.
+	</string>
 	<string name="InventoryNoTexture">
 		Vous n&apos;avez pas de copie de cette texture dans votre inventaire
 	</string>
@@ -1288,6 +1300,156 @@
 	<string name="RegionInfoAllowedGroups">
 		Groupes autorisés : ([ALLOWEDGROUPS], max. [MAXACCESS])
 	</string>
+	<string name="ScriptLimitsParcelScriptMemory">
+		Mémoire des scripts de parcelles
+	</string>
+	<string name="ScriptLimitsParcelsOwned">
+		Parcelles répertoriées : [PARCELS]
+	</string>
+	<string name="ScriptLimitsMemoryUsed">
+		Mémoire utilisée : [COUNT] Ko sur [MAX] ; [AVAILABLE] Ko disponibles
+	</string>
+	<string name="ScriptLimitsMemoryUsedSimple">
+		Mémoire utilisée : [COUNT] Ko
+	</string>
+	<string name="ScriptLimitsParcelScriptURLs">
+		URL des scripts de parcelles
+	</string>
+	<string name="ScriptLimitsURLsUsed">
+		URL utilisées : [COUNT] sur [MAX] ; [AVAILABLE] disponible(s)
+	</string>
+	<string name="ScriptLimitsURLsUsedSimple">
+		URL utilisées : [COUNT]
+	</string>
+	<string name="ScriptLimitsRequestError">
+		Une erreur est survenue pendant la requête d&apos;informations.
+	</string>
+	<string name="ScriptLimitsRequestWrongRegion">
+		Erreur : les informations de script ne sont disponibles que dans votre région actuelle.
+	</string>
+	<string name="ScriptLimitsRequestWaiting">
+		Extraction des informations en cours...
+	</string>
+	<string name="ScriptLimitsRequestDontOwnParcel">
+		Vous n&apos;avez pas le droit d&apos;examiner cette parcelle.
+	</string>
+	<string name="SITTING_ON">
+		Assis(e) dessus
+	</string>
+	<string name="ATTACH_CHEST">
+		Poitrine
+	</string>
+	<string name="ATTACH_HEAD">
+		Tête
+	</string>
+	<string name="ATTACH_LSHOULDER">
+		Épaule gauche
+	</string>
+	<string name="ATTACH_RSHOULDER">
+		Épaule droite
+	</string>
+	<string name="ATTACH_LHAND">
+		Main gauche
+	</string>
+	<string name="ATTACH_RHAND">
+		Main droite
+	</string>
+	<string name="ATTACH_LFOOT">
+		Pied gauche
+	</string>
+	<string name="ATTACH_RFOOT">
+		Pied droit
+	</string>
+	<string name="ATTACH_BACK">
+		Précédent
+	</string>
+	<string name="ATTACH_PELVIS">
+		Bassin
+	</string>
+	<string name="ATTACH_MOUTH">
+		Bouche
+	</string>
+	<string name="ATTACH_CHIN">
+		Menton
+	</string>
+	<string name="ATTACH_LEAR">
+		Oreille gauche
+	</string>
+	<string name="ATTACH_REAR">
+		Oreille droite
+	</string>
+	<string name="ATTACH_LEYE">
+		Å’il gauche
+	</string>
+	<string name="ATTACH_REYE">
+		Å’il droit
+	</string>
+	<string name="ATTACH_NOSE">
+		Nez
+	</string>
+	<string name="ATTACH_RUARM">
+		Bras droit
+	</string>
+	<string name="ATTACH_RLARM">
+		Avant-bras droit
+	</string>
+	<string name="ATTACH_LUARM">
+		Bras gauche
+	</string>
+	<string name="ATTACH_LLARM">
+		Avant-bras gauche
+	</string>
+	<string name="ATTACH_RHIP">
+		Hanche droite
+	</string>
+	<string name="ATTACH_RULEG">
+		Cuisse droite
+	</string>
+	<string name="ATTACH_RLLEG">
+		Jambe droite
+	</string>
+	<string name="ATTACH_LHIP">
+		Hanche gauche
+	</string>
+	<string name="ATTACH_LULEG">
+		Cuisse gauche
+	</string>
+	<string name="ATTACH_LLLEG">
+		Jambe gauche
+	</string>
+	<string name="ATTACH_BELLY">
+		Ventre
+	</string>
+	<string name="ATTACH_RPEC">
+		Pectoral droit
+	</string>
+	<string name="ATTACH_LPEC">
+		Pectoral gauche
+	</string>
+	<string name="ATTACH_HUD_CENTER_2">
+		HUD centre 2
+	</string>
+	<string name="ATTACH_HUD_TOP_RIGHT">
+		HUD en haut à droite
+	</string>
+	<string name="ATTACH_HUD_TOP_CENTER">
+		HUD en haut au centre
+	</string>
+	<string name="ATTACH_HUD_TOP_LEFT">
+		HUD en haut à gauche
+	</string>
+	<string name="ATTACH_HUD_CENTER_1">
+		HUD centre 1
+	</string>
+	<string name="ATTACH_HUD_BOTTOM_LEFT">
+		HUD en bas à gauche
+	</string>
+	<string name="ATTACH_HUD_BOTTOM">
+		HUD en bas
+	</string>
+	<string name="ATTACH_HUD_BOTTOM_RIGHT">
+		HUD en bas à droite
+	</string>
 	<string name="CursorPos">
 		Ligne [LINE], colonne [COLUMN]
 	</string>
@@ -1338,6 +1500,12 @@
 	<string name="ClassifiedUpdateAfterPublish">
 		(mise à jour après la publication)
 	</string>
+	<string name="NoPicksClassifiedsText">
+		Il n&apos;y a pas de préférences/petites annonces ici
+	</string>
+	<string name="PicksClassifiedsLoadingText">
+		Chargement...
+	</string>
 	<string name="MultiPreviewTitle">
 		Prévisualiser
 	</string>
@@ -1414,23 +1582,35 @@
 		Extension de fichier inconnue .%s
 .wav, .tga, .bmp, .jpg, .jpeg, ou .bvh acceptés
 	</string>
+	<string name="MuteObject2">
+		Ignorer
+	</string>
+	<string name="MuteAvatar">
+		Ignorer
+	</string>
+	<string name="UnmuteObject">
+		Ne plus ignorer
+	</string>
+	<string name="UnmuteAvatar">
+		Ne plus ignorer
+	</string>
 	<string name="AddLandmarkNavBarMenu">
-		Ajouter un repère...
+		Ajouter à mes repères...
 	</string>
 	<string name="EditLandmarkNavBarMenu">
-		Modifier le repère...
+		Modifier mon repère...
 	</string>
 	<string name="accel-mac-control">
-		&#8963;
+		⌃
 	</string>
 	<string name="accel-mac-command">
-		&#8984;
+		⌘
 	</string>
 	<string name="accel-mac-option">
-		&#8997;
+		⌥
 	</string>
 	<string name="accel-mac-shift">
-		&#8679;
+		⇧
 	</string>
 	<string name="accel-win-control">
 		Ctrl+
@@ -1616,7 +1796,7 @@ Si le problème persiste, vous devrez peut-être complètement désinstaller pui
 		Erreur fatale
 	</string>
 	<string name="MBRequiresAltiVec">
-		 [APP_NAME] nécessite un microprocesseur AltiVec (version G4 ou antérieure).
+		[APP_NAME] nécessite un microprocesseur AltiVec (version G4 ou antérieure).
 	</string>
 	<string name="MBAlreadyRunning">
 		[APP_NAME] est déjà en cours d&apos;exécution.
@@ -1628,7 +1808,7 @@ Si ce message persiste, redémarrez votre ordinateur.
 Voulez-vous envoyer un rapport de crash ?
 	</string>
 	<string name="MBAlert">
-		Alerte
+		Notification
 	</string>
 	<string name="MBNoDirectX">
 		[APP_NAME] ne peut détecter DirectX 9.0b ou une version supérieure.
@@ -2010,12 +2190,6 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 	<string name="Eyes Bugged">
 		Yeux globuleux
 	</string>
-	<string name="Eyes Shear Left Up">
-		Å’il gauche vers le haut
-	</string>
-	<string name="Eyes Shear Right Up">
-		Å’il droit vers le haut
-	</string>
 	<string name="Face Shear">
 		Visage
 	</string>
@@ -3010,7 +3184,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 		Ajouter à mes repères
 	</string>
 	<string name="LocationCtrlEditLandmarkTooltip">
-		Modifier mes repères
+		Modifier mon repère
 	</string>
 	<string name="LocationCtrlInfoBtnTooltip">
 		En savoir plus sur l&apos;emplacement actuel
@@ -3018,6 +3192,27 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 	<string name="LocationCtrlComboBtnTooltip">
 		Historique de mes emplacements
 	</string>
+	<string name="LocationCtrlForSaleTooltip">
+		Acheter ce terrain
+	</string>
+	<string name="LocationCtrlVoiceTooltip">
+		Chat vocal indisponible ici
+	</string>
+	<string name="LocationCtrlFlyTooltip">
+		Vol interdit
+	</string>
+	<string name="LocationCtrlPushTooltip">
+		Pas de bousculades
+	</string>
+	<string name="LocationCtrlBuildTooltip">
+		Construction/placement d&apos;objets interdit
+	</string>
+	<string name="LocationCtrlScriptsTooltip">
+		Scripts interdits
+	</string>
+	<string name="LocationCtrlDamageTooltip">
+		Santé
+	</string>
 	<string name="UpdaterWindowTitle">
 		[APP_NAME] - Mise à jour
 	</string>
@@ -3075,6 +3270,33 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 	<string name="IM_moderator_label">
 		(Modérateur)
 	</string>
+	<string name="started_call">
+		A appelé quelqu&apos;un
+	</string>
+	<string name="joined_call">
+		A rejoint l&apos;appel
+	</string>
+	<string name="ringing-im">
+		En train de rejoindre l&apos;appel...
+	</string>
+	<string name="connected-im">
+		Connecté(e), cliquez sur Quitter l&apos;appel pour raccrocher
+	</string>
+	<string name="hang_up-im">
+		A quitté l&apos;appel
+	</string>
+	<string name="answering-im">
+		Connexion en cours...
+	</string>
+	<string name="conference-title">
+		Conférence ad-hoc
+	</string>
+	<string name="inventory_item_offered-im">
+		Objet de l&apos;inventaire offert
+	</string>
+	<string name="share_alert">
+		Faire glisser les objets de l&apos;inventaire ici
+	</string>
 	<string name="only_user_message">
 		Vous êtes le seul participant à cette session.
 	</string>
@@ -3084,6 +3306,12 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 	<string name="invite_message">
 		Pour accepter ce chat vocal/vous connecter, cliquez sur le bouton [BUTTON NAME].
 	</string>
+	<string name="muted_message">
+		Vous ignorez ce résident. Si vous lui envoyez un message, il ne sera plus ignoré.
+	</string>
+	<string name="generic">
+		Erreur lors de la requête, veuillez réessayer ultérieurement.
+	</string>
 	<string name="generic_request_error">
 		Erreur lors de la requête, veuillez réessayer ultérieurement.
 	</string>
@@ -3102,19 +3330,37 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 	<string name="not_a_mod_error">
 		Vous n&apos;êtes pas modérateur de session.
 	</string>
+	<string name="muted">
+		Un modérateur de groupe a désactivé votre chat écrit.
+	</string>
 	<string name="muted_error">
 		Un modérateur de groupe a désactivé votre chat écrit.
 	</string>
 	<string name="add_session_event">
 		Impossible d&apos;ajouter des participants à la session de chat avec [RECIPIENT].
 	</string>
+	<string name="message">
+		Impossible d&apos;envoyer votre message à la session de chat avec [RECIPIENT].
+	</string>
 	<string name="message_session_event">
 		Impossible d&apos;envoyer votre message à la session de chat avec [RECIPIENT].
 	</string>
+	<string name="mute">
+		Erreur lors de la modération.
+	</string>
+	<string name="removed">
+		Vous avez été supprimé du groupe.
+	</string>
 	<string name="removed_from_group">
 		Vous avez été supprimé du groupe.
 	</string>
 	<string name="close_on_no_ability">
 		Vous ne pouvez plus participer à la session de chat.
 	</string>
+	<string name="unread_chat_single">
+		[SOURCES] a dit quelque chose de nouveau
+	</string>
+	<string name="unread_chat_multiple">
+		[SOURCES] ont dit quelque chose de nouveau
+	</string>
 </strings>
-- 
GitLab


From e67bbf399ceec42b3f7788451c774cb8662ec4d4 Mon Sep 17 00:00:00 2001
From: Erica <erica@lindenlab.com>
Date: Fri, 29 Jan 2010 17:16:06 -0800
Subject: [PATCH 363/521]   EXT-4756 Black text in sell land confirmation
 dialog, EXT-2241 layout of Preferences > Sound needs to be improved for I18N,
 EXT-4683 Build>Options submenus are non-intuitive, EXT-3787 System messages
 needs to be visually distinct in Nearby and IM

---
 indra/newview/skins/default/colors.xml        | 26 +++++---
 .../default/xui/en/floater_color_picker.xml   | 61 ++++++++-----------
 .../skins/default/xui/en/menu_object.xml      | 20 +++---
 .../skins/default/xui/en/menu_viewer.xml      | 61 +++++++------------
 .../default/xui/en/panel_preferences_chat.xml | 38 +++++++-----
 .../xui/en/panel_preferences_sound.xml        |  7 ++-
 6 files changed, 102 insertions(+), 111 deletions(-)

diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml
index e2480479308..ec196245a1a 100644
--- a/indra/newview/skins/default/colors.xml
+++ b/indra/newview/skins/default/colors.xml
@@ -47,7 +47,7 @@
 	<color
 	 name="Black"
 	 value="0 0 0 1" />
-	<color
+	<colork
 	 name="Black_10"
 	 value="0 0 0 0.1" />
 	<color
@@ -77,6 +77,16 @@
 	<color
 	name="Purple"
 	value="1 0 1 1" />
+	<color
+	name="Lime"
+	value=".8 1 .73 1" />
+	<color
+	name="LtYellow"
+	value="1 1 .79 1" />
+	<color
+	name="LtOrange"
+	value="1 .85 .73 1" />
+
   <!-- This color name makes potentially unused colors show up bright purple.
   Leave this here until all Unused? are removed below, otherwise
   the viewer generates many warnings on startup. -->
@@ -97,7 +107,7 @@
      value="1 0.82 0.46 1" />
     <color
      name="AlertCautionTextColor"
-     reference="Black" />
+     reference="LtYellow" />
     <color
      name="AgentLinkColor"
      reference="White" />
@@ -226,10 +236,10 @@
      reference="White" />
     <color
      name="ColorPaletteEntry16"
-     reference="White" />
+     reference="LtYellow" />
     <color
      name="ColorPaletteEntry17"
-     reference="White" />
+     reference="LtGreen" />
     <color
      name="ColorPaletteEntry18"
      reference="LtGray" />
@@ -544,7 +554,7 @@
      reference="White" />
     <color
      name="ObjectChatColor"
-     reference="EmphasisColor" />
+     reference="EmphasisColor_35" />
     <color
      name="OverdrivenColor"
      reference="Red" />
@@ -592,7 +602,7 @@
      value="0.39 0.39 0.39 1" />
     <color
      name="ScriptErrorColor"
-     value="0.82 0.27 0.27 1" />
+     value="Red" />
     <color
      name="ScrollBGStripeColor"
      reference="Transparent" />
@@ -649,7 +659,7 @@
      reference="FrogGreen" />
     <color
      name="SystemChatColor"
-     reference="White" />
+     reference="LtGray" />
     <color
      name="TextBgFocusColor"
      reference="White" />
@@ -703,7 +713,7 @@
      reference="White" />
     <color
      name="llOwnerSayChatColor"
-     reference="LtGray" />
+     reference="LtYellow" />
 
     <!-- New Colors -->
     <color
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 fbecebc363d..9009c60a997 100644
--- a/indra/newview/skins/default/xui/en/floater_color_picker.xml
+++ b/indra/newview/skins/default/xui/en/floater_color_picker.xml
@@ -13,20 +13,19 @@
      type="string"
      length="1"
      follows="left|top"
-     font="SansSerif"
-     height="10"
+     height="20"
      layout="topleft"
-     left="12"
+     left="10"
      mouse_opaque="false"
      name="r_val_text"
-     top="35"
+     top="25"
      width="413">
         Red:
     </text>
     <spinner
      decimal_digits="0"
      follows="left"
-     height="16"
+     height="20"
      increment="1"
      initial_value="128"
      layout="topleft"
@@ -39,20 +38,18 @@
      type="string"
      length="1"
      follows="left|top"
-     font="SansSerif"
-     height="10"
+     height="20"
      layout="topleft"
-     left="12"
+     left="10"
      mouse_opaque="false"
      name="g_val_text"
-     top="56"
      width="413">
         Green:
     </text>
     <spinner
      decimal_digits="0"
      follows="left"
-     height="16"
+     height="20"
      increment="1"
      initial_value="128"
      layout="topleft"
@@ -65,20 +62,18 @@
      type="string"
      length="1"
      follows="left|top"
-     font="SansSerif"
-     height="10"
+     height="20"
      layout="topleft"
-     left="12"
+     left="10"
      mouse_opaque="false"
      name="b_val_text"
-     top="77"
      width="413">
         Blue:
     </text>
     <spinner
      decimal_digits="0"
      follows="left"
-     height="16"
+     height="20"
      increment="1"
      initial_value="128"
      layout="topleft"
@@ -91,20 +86,18 @@
      type="string"
      length="1"
      follows="left|top"
-     font="SansSerif"
-     height="10"
+     height="20"
      layout="topleft"
-     left="12"
+     left="10"
      mouse_opaque="false"
      name="h_val_text"
-     top="108"
      width="413">
         Hue:
     </text>
     <spinner
      decimal_digits="0"
      follows="left"
-     height="16"
+     height="20"
      increment="1"
      initial_value="180"
      layout="topleft"
@@ -117,20 +110,18 @@
      type="string"
      length="1"
      follows="left|top"
-     font="SansSerif"
-     height="10"
+     height="20"
      layout="topleft"
-     left="12"
+     left="10"
      mouse_opaque="false"
      name="s_val_text"
-     top="129"
      width="413">
         Sat:
     </text>
     <spinner
      decimal_digits="0"
      follows="left"
-     height="16"
+     height="20"
      increment="1"
      initial_value="50"
      layout="topleft"
@@ -143,20 +134,18 @@
      type="string"
      length="1"
      follows="left|top"
-     font="SansSerif"
-     height="10"
+     height="20"
      layout="topleft"
-     left="12"
+     left="10"
      mouse_opaque="false"
      name="l_val_text"
-     top="150"
      width="413">
         Lum:
     </text>
     <spinner
      decimal_digits="0"
      follows="left"
-     height="16"
+     height="20"
      increment="1"
      initial_value="50"
      layout="topleft"
@@ -170,11 +159,11 @@
      height="20"
      label="Apply now"
      layout="topleft"
-     left="12"
+     left="10"
      name="apply_immediate"
      top_pad="185"
      width="100" />
-         <button
+    <button
      follows="left|bottom"
      height="28"
      image_selected="eye_button_active.tga"
@@ -185,7 +174,7 @@
      width="28" />
     <button
      follows="right|bottom"
-     height="20"
+     height="23"
      label="OK"
      label_selected="OK"
      layout="topleft"
@@ -195,7 +184,7 @@
      width="100" />
     <button
      follows="right|bottom"
-     height="20"
+     height="23"
      label="Cancel"
      label_selected="Cancel"
      layout="topleft"
@@ -209,7 +198,7 @@
      follows="left|top"
      height="16"
      layout="topleft"
-     left="12"
+     left="10"
      name="Current color:"
      top="172"
      width="110">
@@ -221,7 +210,7 @@
      follows="left|top"
      height="16"
      layout="topleft"
-     left="12"
+     left="10"
      name="(Drag below to save.)"
      top_pad="66"
      width="130">
diff --git a/indra/newview/skins/default/xui/en/menu_object.xml b/indra/newview/skins/default/xui/en/menu_object.xml
index 35518cd13b9..56028bb2e57 100644
--- a/indra/newview/skins/default/xui/en/menu_object.xml
+++ b/indra/newview/skins/default/xui/en/menu_object.xml
@@ -86,16 +86,6 @@
    <context_menu
          label="Remove &gt;"
          name="Remove">
-   <menu_item_call
-     enabled="false"
-     label="Take"
-     name="Pie Object Take">
-        <menu_item_call.on_click
-         function="Tools.BuyOrTake" />
-        <menu_item_call.on_enable
-         function="Tools.EnableBuyOrTake"
-         parameter="Buy,Take" />
-    </menu_item_call>
    <menu_item_call
          enabled="false"
          label="Report Abuse"
@@ -134,6 +124,16 @@
     </menu_item_call>
     </context_menu>
    <menu_item_separator layout="topleft" />
+    <menu_item_call
+     enabled="false"
+     label="Take"
+     name="Pie Object Take">
+        <menu_item_call.on_click
+         function="Tools.BuyOrTake" />
+        <menu_item_call.on_enable
+         function="Tools.EnableBuyOrTake"
+         parameter="Buy,Take" />
+    </menu_item_call>
    <menu_item_call
    enabled="false"
    label="Take Copy"
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index a98a049c178..7a4f63bfe48 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -662,6 +662,18 @@
           <menu_item_call.on_enable
              function="Tools.EnableUnlink" />
         </menu_item_call>
+        <menu_item_check
+             label="Edit Linked Parts"
+             layout="topleft"
+             name="Edit Linked Parts">
+                <menu_item_check.on_check
+                 control="EditLinkedParts" />
+                <menu_item_check.on_click
+                 function="Tools.EditLinkedParts"
+                 parameter="EditLinkedParts" />
+                <menu_item_check.on_enable
+                 function="Tools.EnableToolNotPie" />
+            </menu_item_check>
         <menu_item_separator
            layout="topleft" />
         <menu_item_call
@@ -799,18 +811,6 @@
          layout="topleft"
          name="Options"
          tear_off="true">
-            <menu_item_check
-             label="Edit Linked Parts"
-             layout="topleft"
-             name="Edit Linked Parts">
-                <menu_item_check.on_check
-                 control="EditLinkedParts" />
-                <menu_item_check.on_click
-                 function="Tools.EditLinkedParts"
-                 parameter="EditLinkedParts" />
-                <menu_item_check.on_enable
-                 function="Tools.EnableToolNotPie" />
-            </menu_item_check>
             <menu_item_call
              label="Set Default Upload Permissions"
              layout="topleft"
@@ -819,10 +819,10 @@
                  function="Floater.Toggle"
                  parameter="perm_prefs" />
             </menu_item_call>
-			<menu_item_check
-			   label="Show Advanced Permissions"
-			   layout="topleft"
-			   name="DebugPermissions">
+	   <menu_item_check
+	       label="Show Advanced Permissions"
+	       layout="topleft"
+	       name="DebugPermissions">
 			  <menu_item_check.on_check
 				 function="CheckControl"
 				 parameter="DebugPermissions" />
@@ -832,13 +832,7 @@
 			</menu_item_check>
             <menu_item_separator
              layout="topleft" />
-            <menu
-             create_jump_keys="true"
-             label="Selection"
-             layout="topleft"
-             name="Selection"
-             tear_off="true">
-                <menu_item_check
+            <menu_item_check
                  label="Select Only My Objects"
                  layout="topleft"
                  name="Select Only My Objects">
@@ -866,14 +860,9 @@
                      control="RectangleSelectInclusive" />
                     <menu_item_check.on_click
                      function="Tools.SelectBySurrounding" />
-                </menu_item_check>
-            </menu>
-            <menu
-             create_jump_keys="true"
-             label="Show"
-             layout="topleft"
-             name="Show"
-             tear_off="true">
+            </menu_item_check>
+          <menu_item_separator
+           layout="topleft" />
                 <menu_item_check
                  label="Show Hidden Selection"
                  layout="topleft"
@@ -902,13 +891,8 @@
                      function="ToggleControl"
                      parameter="ShowSelectionBeam" />
                 </menu_item_check>
-            </menu>
-            <menu
-             create_jump_keys="true"
-             label="Grid"
-             layout="topleft"
-             name="Grid"
-             tear_off="true">
+        <menu_item_separator
+           layout="topleft" />
                 <menu_item_check
                  label="Snap to Grid"
                  layout="topleft"
@@ -953,7 +937,6 @@
                     <menu_item_call.on_enable
                      function="Tools.EnableToolNotPie" />
                 </menu_item_call>
-            </menu>
         </menu>
         <menu
          create_jump_keys="true"
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 6e0b94ac2bf..433dfc17fe5 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
@@ -23,7 +23,7 @@
          layout="topleft"
          left="0"
          name="radio"
-         value="0" 
+         value="0"
          top="10"
          width="125" />
         <radio_item
@@ -32,7 +32,7 @@
          layout="topleft"
          left_delta="145"
          name="radio2"
-         value="1"         
+         value="1"
          top_delta="0"
          width="125" />
         <radio_item
@@ -41,7 +41,7 @@
          layout="topleft"
          left_delta="170"
          name="radio3"
-         value="2" 
+         value="2"
          top_delta="0"
          width="125" />
     </radio_group>
@@ -105,7 +105,7 @@
     </text>
     <color_swatch
      can_apply_immediately="true"
-     color="0.6 0.6 1 1"
+     color="LtGray"
      follows="left|top"
      height="47"
      label_width="60"
@@ -136,7 +136,7 @@
     </text>
     <color_swatch
      can_apply_immediately="true"
-     color="0.8 1 1 1"
+     color="LtGray"
      follows="left|top"
      height="47"
      label_width="44"
@@ -167,7 +167,7 @@
     </text>
     <color_swatch
      can_apply_immediately="true"
-     color="0.82 0.82 0.99 1"
+     color="Red"
      follows="left|top"
      height="47"
      layout="topleft"
@@ -197,7 +197,7 @@
     </text>
     <color_swatch
      can_apply_immediately="true"
-     color="0.7 0.9 0.7 1"
+     color="EmphasisColor_35"
      follows="left|top"
      height="47"
      layout="topleft"
@@ -227,7 +227,7 @@
     </text>
     <color_swatch
      can_apply_immediately="true"
-     color="0.7 0.9 0.7 1"
+     color="LtYellow"
      follows="left|top"
      height="47"
      layout="topleft"
@@ -257,7 +257,7 @@
     </text>
     <color_swatch
      can_apply_immediately="true"
-     color="0.6 0.6 1 1"
+     color="EmphasisColor"
      follows="left|top"
      height="47"
      layout="topleft"
@@ -316,22 +316,30 @@
     <text
      left="30"
      height="20"
-     width="300"
+     width="120"
      top_pad="20">
-     Show IMs in: (Requires restart)
+     Show IMs in:
     </text>
+    <text
+	 left_pad="6"
+	 height="20"
+	 width="100"
+	 text_color="White_25"
+	 >
+      (requires restart)
+      </text>
     <radio_group
      height="30"
      layout="topleft"
-     left_delta="30"
+     left="30"
      control_name="ChatWindow"
      name="chat_window"
      top_pad="0"
-     tool_tip="Show your Instant Messages in separate windows, or in one window with many tabs (Requires restart)"
+     tool_tip="Show your Instant Messages in separate floaters, or in one floater with many tabs (Requires restart)"
      width="331">
      <radio_item
       height="16"
-      label="Multiple windows"
+      label="Separate windows"
       layout="topleft"
       left="0"
       name="radio"
@@ -340,7 +348,7 @@
       width="150" />
      <radio_item
       height="16"
-      label="One window"
+      label="Tabs"
       layout="topleft"
       left_delta="0"
       name="radio2"
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 d8e3f4ccfb4..c01a0322096 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
@@ -236,9 +236,10 @@
      disabled_control="CmdLineDisableVoice"
      label="Enable voice"
      layout="topleft"
-     left="28"
+     font.style="BOLD"
+     left="101"
      name="enable_voice_check"
-     top_pad="5"
+     top_pad="13"
      width="110"
      >
     </check_box>
@@ -365,7 +366,7 @@
      name="device_settings_panel"
      class="panel_voice_device_settings"
      width="501"
-     top="285">
+     top="280">
       <panel.string
         name="default_text">
         Default
-- 
GitLab


From 0bbb95c84be891f95be1c4c1ce7ea5aa14bed815 Mon Sep 17 00:00:00 2001
From: Eli Linden <eli@lindenlab.com>
Date: Fri, 29 Jan 2010 17:46:35 -0800
Subject: [PATCH 364/521] DEV-43688 Cycle3 JA (correct version)

---
 .../default/xui/ja/floater_buy_currency.xml   | 388 +++---------------
 1 file changed, 65 insertions(+), 323 deletions(-)

diff --git a/indra/newview/skins/default/xui/ja/floater_buy_currency.xml b/indra/newview/skins/default/xui/ja/floater_buy_currency.xml
index d202bf1b9f1..ffdcf838d3f 100644
--- a/indra/newview/skins/default/xui/ja/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/ja/floater_buy_currency.xml
@@ -1,324 +1,66 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<floater
- legacy_header_height="18"
- can_minimize="false"
- height="275"
- layout="topleft"
- title="BUY L$"
- name="buy currency"
- help_topic="buy_linden_dollars"
- single_instance="true"
- width="350">
-    <floater.string
-     name="buy_currency">
-        Buy L$ [LINDENS] for approx. [LOCALAMOUNT]
-    </floater.string>
-    <icon
-     height="215"
-     image_name="Linden_Dollar_Background"
-     layout="topleft"
-     left="0"
-     name="normal_background"
-     top="17"
-     width="350" />
-   <text
-     type="string"
-     length="1"
-     follows="top|left"
-     font="SansSerifHuge"
-     layout="topleft"
-     left="20"
-     height="30"
-     top="25"
-     width="300"
-     name="info_need_more">
-        You need more L$
-    </text>
-    <text
-     type="string"
-     length="1"
-     follows="top|left"
-     height="16"
-     layout="topleft"
-     top="246"
-     left="15"
-     width="300"
-     name="contacting">
-        Contacting LindeX...
-    </text>
-    <text
-     type="string"
-     length="1"
-     follows="top|left"
-     font="SansSerifHuge"
-     layout="topleft"
-     left="20"
-     height="30"
-     top="25"
-     width="200"
-     name="info_buying">
-        Buy L$
-    </text>
-    <text
-     type="string"
-     length="1"
-     follows="top|left"
-     font="SansSerifMedium"
-     height="16"
-     layout="topleft"
-     left="20"
-     name="balance_label"
-     top="65"
-     width="210">
-        I have
-    </text>
-    <text
-     type="string"
-     length="1"
-     font="SansSerifMedium"
-     follows="top|left"
-     halign="right"
-     height="16"
-     layout="topleft"
-     left="200"
-     name="balance_amount"
-     top_delta="0"
-     width="120">
-        L$ [AMT]
-    </text>
-    <text
-     type="string"
-     length="1"
-     follows="top|left"
-     font="SansSerifMedium"
-     height="16"
-     top="95"
-     layout="topleft"
-     left="20"
-     name="currency_action"
-     width="210">
-        I want to buy
-    </text>
-    <text
-     font="SansSerifMedium"
-     type="string"
-     length="1"
-     follows="left|top"
-     height="16"
-     layout="topleft"
-     top_delta="0"
-     left="217"
-     name="currency_label"
-     width="15">
-      L$
-    </text>
-    <line_editor
-     type="string"
-     halign="right"
-     font="SansSerifMedium"
-     select_on_focus="true"
-     follows="top|left"
-     top_delta="-7"
-     height="22"
-     label="L$"
-     left_pad="3"
-     name="currency_amt"
-     width="85">
-        1234
-    </line_editor>
-    <text
-     type="string"
-     font="SansSerifMedium"
-     length="1"
-     follows="top|left"
-     height="16"
-     layout="topleft"
-     left="20"
-     top="125"
-     name="buying_label"
-     width="210">
-        For the price
-    </text>
-    <text
-     type="string"
-     length="1"
-     font="SansSerifMedium"
-     text_color="EmphasisColor"
-     follows="top|left"
-     halign="right"
-     height="16"
-     top_delta="0"
-     layout="topleft"
-     left="150"
-     name="currency_est"
-     width="170">
-     approx. [LOCALAMOUNT]
-    </text>
-    <text
-     type="string"
-     font="SansSerifSmall"
-     text_color="EmphasisColor"
-     length="1"
-     follows="top|left"
-     height="16"
-     layout="topleft"
-     top="125"
-     left="170"
-     width="150"
-     halign="right"
-     name="getting_data">
-        Estimating...
-    </text>
-    <text
-     type="string"
-     font="SansSerifSmall"
-     top="145"
-     length="1"
-     follows="top|left"
-     height="16"
-     halign="right"
-     left="150"
-     width="170"
-     layout="topleft"
-     name="buy_action">
-        [NAME] L$ [PRICE]
-    </text>
-    <text
-     type="string"
-     font="SansSerifMedium"
-     length="1"
-     follows="top|left"
-     height="16"
-     layout="topleft"
-     left="20"
-     name="total_label"
-     top="165"
-     width="210">
-        My new balance will be
-    </text>
-    <text
-     type="string"
-     length="1"
-     font="SansSerifMedium"
-     follows="top|left"
-     top_delta="0"
-     height="16"
-     layout="topleft"
-     left="200"
-     halign="right"
-     name="total_amount"
-     width="120">
-        L$ [AMT]
-    </text>
-    <text
-     type="string"
-     length="1"
-     text_color="0.7 0.7 0.7 0.5"
-     follows="top|left"
-     layout="topleft"
-     halign="right"
-     top="189"
-     left="20"
-     width="300"
-     height="30"
-     name="currency_links">
-      [http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency] | [http://www.secondlife.com/my/account/exchange_rates.php exchange rate]
-    </text>
-    <text
-     type="string"
-     length="1"
-     text_color="0.7 0.7 0.7 0.5"
-     follows="top|left"
-     layout="topleft"
-     halign="right"
-     top="202"
-     left="20"
-     width="300"
-     height="30"
-     name="exchange_rate_note">
-Re-enter amount to see the latest exchange rate.
-    </text>
-    <text
-     type="string"
-     length="1"
-     text_color="0.7 0.7 0.7 0.5"
-     follows="top|left"
-     layout="topleft"
-     halign="right"
-     top="213"
-     left="10"
-     width="310"
-     height="30"
-     name="purchase_warning_repurchase">
-        Confirming this purchase only buys L$, not the object.
-    </text>
-    <text
-     type="string"
-     length="1"
-     text_color="0.7 0.7 0.7 0.5"
-     follows="top|left"
-     layout="topleft"
-     halign="right"
-     top="213"
-     left="20"
-     width="300"
-     height="30"
-     name="purchase_warning_notenough">
-        You aren&apos;t buying enough L$. Please increase the amount.
-    </text>
-
-    <button
-     follows="bottom|left"
-     height="20"
-     label="Buy Now"
-     layout="topleft"
-     left="151"
-     name="buy_btn"
-     top="242"
-     width="90"/>
-    <button
-     follows="bottom|right"
-     height="20"
-     label="Cancel"
-     layout="topleft"
-     left_pad="10"
-     name="cancel_btn"
-     width="90"/>
-    <icon
-     height="215"
-     image_name="Linden_Dollar_Alert"
-     layout="topleft"
-     left="0"
-     name="error_background"
-     top="15"
-     width="350"/>
-    <text
-     type="string"
-     font="SansSerifHuge"
-     left="165"
-     width="170"
-     height="25"
-     top="25"
-     name="info_cannot_buy">
-        Unable to Buy
-    </text>
-     <text
-      type="string"
-      width="175"
-      height="125"
-      top="60"
-      left="165"
-      word_wrap="true"
-      follows="bottom|right"
-      name="cannot_buy_message">
-     </text>
-     <button
-      follows="bottom|left"
-      height="20"
-      label="Continue to the Web"
-      layout="topleft"
-      left="170"
-      name="error_web"
-      top="200"
-      width="160"/>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="buy currency" title="L$ の購入">
+	<floater.string name="buy_currency">
+		約 [LOCALAMOUNT] で L$ [LINDENS] を購入
+	</floater.string>
+	<text name="info_need_more">
+		L$ が足りません
+	</text>
+	<text name="contacting">
+		LindeXとコンタクト中…
+	</text>
+	<text name="info_buying">
+		L$ の購入
+	</text>
+	<text name="balance_label">
+		残高
+	</text>
+	<text name="balance_amount">
+		L$ [AMT]
+	</text>
+	<text name="currency_action">
+		購入希望額
+	</text>
+	<text name="currency_label">
+		L$
+	</text>
+	<line_editor label="L$" name="currency_amt">
+		1234
+	</line_editor>
+	<text name="buying_label">
+		価格
+	</text>
+	<text name="currency_est">
+		ç´„ [LOCALAMOUNT]
+	</text>
+	<text left_delta="3" name="getting_data">
+		見積もり中...
+	</text>
+	<text name="buy_action">
+		[NAME] L$ [PRICE]
+	</text>
+	<text name="total_label">
+		新しい残高
+	</text>
+	<text name="total_amount">
+		L$ [AMT]
+	</text>
+	<text name="currency_links">
+		[http://www.secondlife.com/my/account/payment_method_management.php?lang=ja-JP payment method] | [http://www.secondlife.com/my/account/currency.php?lang=ja-JP currency] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=ja-JP exchange rate]
+	</text>
+	<text name="exchange_rate_note">
+		金額を再入力して最新換算レートを確認します。
+	</text>
+	<text name="purchase_warning_repurchase">
+		この取引を決定すると、L$ を購入します。オブジェクトは購入しません。
+	</text>
+	<text name="purchase_warning_notenough">
+		購入しようとしている L$ が不足しています。 金額を上げてください。
+	</text>
+	<button label="購入する" name="buy_btn"/>
+	<button label="取り消し" name="cancel_btn"/>
+	<text name="info_cannot_buy">
+		購入できません
+	</text>
+	<button label="Web サイトに移動" name="error_web" width="140"/>
 </floater>
-- 
GitLab


From 690061c86c8944f7bda5faed9e86cddbb1cf3e62 Mon Sep 17 00:00:00 2001
From: Ramzi Linden <ramzi@lindenlab.com>
Date: Fri, 29 Jan 2010 18:40:49 -0800
Subject: [PATCH 365/521] DEV-45525 GUI Previewer is broken for launching an
 Editor path

---
 indra/newview/app_settings/settings.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index f3bda19ed1f..2a7c3b0f745 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -10686,7 +10686,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <real>150000.0</real>
+      <string />
     </map>
     <key>YawFromMousePosition</key>
     <map>
-- 
GitLab


From 77db05a93e0bf446c790ff5c1dd17ced607f170d Mon Sep 17 00:00:00 2001
From: Ramzi Linden <ramzi@lindenlab.com>
Date: Fri, 29 Jan 2010 19:27:13 -0800
Subject: [PATCH 366/521] DEV-43688 commit 3 missing FR translations - FR
 cycle3

---
 indra/newview/skins/default/xui/fr/floater_buy_currency.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
index 1f29025a249..5ea36d85059 100644
--- a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
@@ -46,7 +46,7 @@
 		[AMT] L$
 	</text>
 	<text name="currency_links">
-		[http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency] | [http://www.secondlife.com/my/account/exchange_rates.php exchange rate]
+		[http://www.secondlife.com/my/account/payment_method_management.php?lang=fr-FR mode de paiement] | [http://www.secondlife.com/my/account/currency.php?lang=fr-FR devise] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=fr-FR taux de change]
 	</text>
 	<text name="exchange_rate_note">
 		Saisissez à nouveau le montant pour voir le taux de change actuel.
-- 
GitLab


From 7408a22fd89c116bae79b87b21cff04c453bdd89 Mon Sep 17 00:00:00 2001
From: Ramzi Linden <ramzi@lindenlab.com>
Date: Fri, 29 Jan 2010 19:48:04 -0800
Subject: [PATCH 367/521] Add translate="false" to all the dummy strings in the
 /en folder. These constantly pollute the localization extraction of real
 strings.

---
 .../skins/default/xui/en/accordion_drag.xml    |  2 +-
 .../skins/default/xui/en/accordion_parent.xml  |  1 +
 .../skins/default/xui/en/floater_aaa.xml       |  3 ++-
 .../default/xui/en/floater_report_abuse.xml    |  3 +++
 .../default/xui/en/floater_test_button.xml     |  1 +
 .../default/xui/en/floater_test_checkbox.xml   |  1 +
 .../default/xui/en/floater_test_combobox.xml   |  1 +
 .../default/xui/en/floater_test_inspectors.xml |  1 +
 .../default/xui/en/floater_test_layout.xml     |  1 +
 .../xui/en/floater_test_line_editor.xml        |  1 +
 .../default/xui/en/floater_test_list_view.xml  |  1 +
 .../xui/en/floater_test_navigation_bar.xml     |  1 +
 .../default/xui/en/floater_test_radiogroup.xml |  1 +
 .../default/xui/en/floater_test_slider.xml     |  1 +
 .../default/xui/en/floater_test_spinner.xml    |  1 +
 .../xui/en/floater_test_text_editor.xml        |  1 +
 .../default/xui/en/floater_test_textbox.xml    |  1 +
 .../default/xui/en/floater_test_widgets.xml    |  1 +
 .../default/xui/en/floater_ui_preview.xml      |  1 +
 .../skins/default/xui/en/menu_login.xml        |  4 ++++
 .../skins/default/xui/en/panel_group_roles.xml | 18 +++++++++---------
 .../skins/default/xui/en/panel_login.xml       |  4 ++--
 .../skins/default/xui/en/panel_my_profile.xml  |  8 +++++++-
 .../default/xui/en/panel_notification.xml      |  1 +
 .../xui/en/panel_notifications_channel.xml     |  1 +
 .../skins/default/xui/en/panel_profile.xml     |  6 ++++++
 .../default/xui/en/panel_sys_well_item.xml     |  1 +
 .../skins/default/xui/en/panel_toast.xml       |  3 ++-
 28 files changed, 55 insertions(+), 15 deletions(-)

diff --git a/indra/newview/skins/default/xui/en/accordion_drag.xml b/indra/newview/skins/default/xui/en/accordion_drag.xml
index 94839a75939..e8a705e7449 100644
--- a/indra/newview/skins/default/xui/en/accordion_drag.xml
+++ b/indra/newview/skins/default/xui/en/accordion_drag.xml
@@ -4,5 +4,5 @@
   height="5"
   left="50"
   top="50"
-  follows="left|bottom|right" background_visible="true" label="splitter_drag" title="">
+  follows="left|bottom|right" background_visible="true" label="splitter_drag" title="" translate="false">
 </panel>
diff --git a/indra/newview/skins/default/xui/en/accordion_parent.xml b/indra/newview/skins/default/xui/en/accordion_parent.xml
index ea34bac0a77..e17a0dd351d 100644
--- a/indra/newview/skins/default/xui/en/accordion_parent.xml
+++ b/indra/newview/skins/default/xui/en/accordion_parent.xml
@@ -3,5 +3,6 @@
     background_visible="true"
        label="splitter_parent"
        title=""
+       translate="false"
     >
   </panel>
diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml
index b4d2dabc5c8..7236351f2e0 100644
--- a/indra/newview/skins/default/xui/en/floater_aaa.xml
+++ b/indra/newview/skins/default/xui/en/floater_aaa.xml
@@ -17,7 +17,7 @@
  save_visibility="true"
  single_instance="true" 
  width="320">
-  <string name="nudge_parabuild">Nudge 1</string>
+  <string name="nudge_parabuild" translate="false">Nudge 1</string>
   <string name="test_the_vlt">This string CHANGE2 is extracted.</string>
   <string name="testing_eli">Just a test. change here. more change.</string>
   <chat_history
@@ -35,6 +35,7 @@
    parse_highlights="true"
    text_color="ChatHistoryTextColor"
    text_readonly_color="ChatHistoryTextColor"
+   translate="false"
    width="320">
 Really long line that is long enough to wrap once with jyg descenders.
 Really long line that is long enough to wrap once with jyg descenders.
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 aa219b96152..ac0fca9cce9 100644
--- a/indra/newview/skins/default/xui/en/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/en/floater_report_abuse.xml
@@ -52,6 +52,7 @@
      left_pad="5"
      name="reporter_field"
      top_delta="0"
+     translate="false"
      use_ellipses="true"
      width="200">
         Loremipsum Dolorsitamut Longnamez
@@ -153,6 +154,7 @@
      left_pad="6"
      name="object_name"
      top_delta="0"
+     translate="false"
      use_ellipses="true"
      width="185">
         Consetetur Sadipscing
@@ -180,6 +182,7 @@
      left_pad="6"
      name="owner_name"
      top_delta="0"
+     translate="false"
      use_ellipses="true"
      width="185">
         Hendrerit Vulputate Kamawashi Longname
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 8c6ad5c0f7f..bf0a774e766 100644
--- a/indra/newview/skins/default/xui/en/floater_test_button.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_button.xml
@@ -6,6 +6,7 @@
  layout="topleft"
  name="floater_test_button"
  help_topic="floater_test_button"
+ translate="false"
  width="500">
     <button
      height="23"
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 042b4226c34..c828f6b284f 100644
--- a/indra/newview/skins/default/xui/en/floater_test_checkbox.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_checkbox.xml
@@ -6,6 +6,7 @@
  layout="topleft"
  name="floater_test_checkbox"
  help_topic="floater_test_checkbox"
+ translate="false"
  width="400">
     <check_box
      control_name="ShowStartLocation"
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 317d8f5ba86..45e2e34da76 100644
--- a/indra/newview/skins/default/xui/en/floater_test_combobox.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_combobox.xml
@@ -6,6 +6,7 @@
  layout="topleft"
  name="floater_test_combobox"
  help_topic="floater_test_combobox"
+ translate="false"
  width="400">
     <text
      type="string"
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 9143048aeb8..0f5c5f2be07 100644
--- a/indra/newview/skins/default/xui/en/floater_test_inspectors.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_inspectors.xml
@@ -7,6 +7,7 @@
  name="floater_test_inspectors"
  help_topic="floater_test_inspectors"
  title="TEST INSPECTORS" 
+ translate="false"
  width="400">
   <text
    height="20"
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 c6acb7c96e5..94f7e0b7980 100644
--- a/indra/newview/skins/default/xui/en/floater_test_layout.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_layout.xml
@@ -6,6 +6,7 @@
  layout="topleft"
  name="floater_test_layout"
  help_topic="floater_test_layout"
+ translate="false"
  width="500">
     <text
      type="string"
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 fe6ec91709d..2894ad2a325 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
@@ -6,6 +6,7 @@
  layout="topleft"
  name="floater_test_line_editor"
  help_topic="floater_test_line_editor"
+ translate="false"
  width="400">
   <line_editor
    height="20"
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 247c705687d..32ccc31dfd4 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
@@ -6,6 +6,7 @@
  layout="topleft"
  name="floater_test_list_view"
  help_topic="floater_test_list_view"
+ translate="false"
  width="400">
  <!-- intentionally empty -->
 </floater>
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 c6b4cca6b9f..f4a50ecc962 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
@@ -6,6 +6,7 @@
  layout="topleft"
  name="floater_test_navigation_bar"
  help_topic="floater_test_navigation_bar"
+ translate="false"
  width="900">
   <panel
     name="navigation_bar"
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 7ef2d97cdc9..db14ecae831 100644
--- a/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml
@@ -6,6 +6,7 @@
  layout="topleft"
  name="floater_test_radiogroup"
  help_topic="floater_test_radiogroup"
+ translate="false"
  width="400">
     <radio_group
      height="54"
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 85d8bb2bb1b..20bd555a032 100644
--- a/indra/newview/skins/default/xui/en/floater_test_slider.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_slider.xml
@@ -6,6 +6,7 @@
  layout="topleft"
  name="floater_test_slider"
  help_topic="floater_test_slider"
+ translate="false"
  width="450">
     <slider
      height="20"
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 3c44a4884d8..acd49aa492e 100644
--- a/indra/newview/skins/default/xui/en/floater_test_spinner.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_spinner.xml
@@ -6,6 +6,7 @@
  layout="topleft"
  name="floater_test_spinner"
  help_topic="floater_test_spinner"
+ translate="false"
  width="450">
     <spinner
      height="32"
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 8be0c28c5c5..dc8f00d5f36 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
@@ -5,6 +5,7 @@
  height="600"
  layout="topleft"
  name="floater_test_text_editor"
+ translate="false"
  width="800">
   <text_editor
    height="50"
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 8fc2677cbee..2df9bb35fe8 100644
--- a/indra/newview/skins/default/xui/en/floater_test_textbox.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_textbox.xml
@@ -6,6 +6,7 @@
  layout="topleft"
  name="floater_test_textbox"
  help_topic="floater_test_textbox"
+ translate="false"
  width="800">
     <text
      type="string"
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 2f88c234cce..447bd7f599b 100644
--- a/indra/newview/skins/default/xui/en/floater_test_widgets.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_widgets.xml
@@ -25,6 +25,7 @@
  layout="topleft"
  name="floater_test_widgets"
  help_topic="floater_test_widgets"
+ translate="false"
  width="850">
 
   <!-- Strings are used by C++ code for localization.  They are not visible
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 8b2136c2dc4..e86cb23c1eb 100644
--- a/indra/newview/skins/default/xui/en/floater_ui_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_ui_preview.xml
@@ -10,6 +10,7 @@
  help_topic="gui_preview_tool"
  single_instance="true"
  title="XUI PREVIEW TOOL"
+ translate="false"
  width="750">
     <panel
      bottom="640"
diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml
index 5f385227581..bbe6892b278 100644
--- a/indra/newview/skins/default/xui/en/menu_login.xml
+++ b/indra/newview/skins/default/xui/en/menu_login.xml
@@ -196,6 +196,7 @@
         <menu_item_call
          label="Textbox"
          name="Textbox"
+         translate="false"
          shortcut="control|1">
           <menu_item_call.on_click
            function="Floater.Show"
@@ -204,6 +205,7 @@
         <menu_item_call
          label="Text Editor"
          name="Text Editor"
+         translate="false"
          shortcut="control|2">
           <menu_item_call.on_click
            function="Floater.Show"
@@ -212,6 +214,7 @@
         <menu_item_call
          label="Widgets"
          name="Widgets"
+         translate="false"
          shortcut="control|shift|T">
           <menu_item_call.on_click
            function="Floater.Show"
@@ -219,6 +222,7 @@
         </menu_item_call>
         <menu_item_call
          label="Inspectors"
+         translate="false"
          name="Inspectors">
           <menu_item_call.on_click
            function="Floater.Show"
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 618d2f3b8e8..5f6b670cd27 100644
--- a/indra/newview/skins/default/xui/en/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_roles.xml
@@ -50,15 +50,15 @@ Select multiple Members by holding the Ctrl key and
 clicking on their names.
             </panel.string>
             <panel.string
-             name="power_folder_icon">
+             name="power_folder_icon" translate="false">
                 Inv_FolderClosed
             </panel.string>
             <panel.string
-             name="power_all_have_icon">
+             name="power_all_have_icon" translate="false">
                 Checkbox_On
             </panel.string>
             <panel.string
-             name="power_partial_icon">
+             name="power_partial_icon" translate="false">
                 Checkbox_Off
             </panel.string>
          <filter_editor
@@ -142,15 +142,15 @@ including the Everyone and Owner Roles.
                 The &apos;Everyone&apos; and &apos;Owners&apos; Roles are special and can't be deleted.
             </panel.string>
             <panel.string
-             name="power_folder_icon">
+             name="power_folder_icon" translate="false">
                 Inv_FolderClosed
             </panel.string>
             <panel.string
-             name="power_all_have_icon">
+             name="power_all_have_icon" translate="false">
                 Checkbox_On
             </panel.string>
             <panel.string
-             name="power_partial_icon">
+             name="power_partial_icon" translate="false">
                 Checkbox_Off
             </panel.string>
          <filter_editor
@@ -223,15 +223,15 @@ including the Everyone and Owner Roles.
 things in this group. There&apos;s a broad variety of Abilities.
             </panel.string>
             <panel.string
-             name="power_folder_icon">
+             name="power_folder_icon" translate="false">
                 Inv_FolderClosed
             </panel.string>
             <panel.string
-             name="power_all_have_icon">
+             name="power_all_have_icon" translate="false">
                 Checkbox_On
             </panel.string>
             <panel.string
-             name="power_partial_icon">
+             name="power_partial_icon" translate="false">
                 Checkbox_Off
             </panel.string>
          <filter_editor
diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml
index df942b1a267..4657d39a0f1 100644
--- a/indra/newview/skins/default/xui/en/panel_login.xml
+++ b/indra/newview/skins/default/xui/en/panel_login.xml
@@ -12,10 +12,10 @@ top="600"
        http://join.secondlife.com/
 </panel.string>
 <panel.string
-     name="real_url">
+     name="real_url" translate="false">
        http://secondlife.com/app/login/
 </panel.string>
-    <string name="reg_in_client_url">
+    <string name="reg_in_client_url" translate="false">
      http://secondlife.eniac15.lindenlab.com/reg-in-client/
 </string>
 <panel.string
diff --git a/indra/newview/skins/default/xui/en/panel_my_profile.xml b/indra/newview/skins/default/xui/en/panel_my_profile.xml
index 4894ae01da5..4164ce73dd5 100644
--- a/indra/newview/skins/default/xui/en/panel_my_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_my_profile.xml
@@ -119,6 +119,7 @@
                textbox.max_length="512"
                name="sl_description_edit"
                top_pad="-3"
+               translate="false"
                width="181"
                expanded_bg_visible="true"
                expanded_bg_color="DkGray">
@@ -172,6 +173,7 @@
                textbox.max_length="512"
                name="fl_description_edit"
                top_pad="-3"
+               translate="false"
                width="181"
                expanded_bg_visible="true"
                expanded_bg_color="DkGray">
@@ -187,6 +189,7 @@
              left="10"
              name="homepage_edit"
              top_pad="0"
+             translate="false"
              value="http://librarianavengers.org"
              width="300"
              word_wrap="false"
@@ -209,6 +212,7 @@
              layout="topleft"
              left="10"
              name="register_date"
+             translate="false"
              value="05/31/2376"
              width="300"
              word_wrap="true" />
@@ -241,6 +245,7 @@
             left="10"
             name="acc_status_text"
             top_pad="0"
+            translate="false"
             width="300"
             word_wrap="true">
               Resident. No payment info on file.
@@ -294,7 +299,8 @@
             layout="topleft"
             left="7"
             name="sl_groups"
-          top_pad="0"
+            top_pad="0"
+            translate="false"
             width="298"
             expanded_bg_visible="true"
             expanded_bg_color="DkGray">
diff --git a/indra/newview/skins/default/xui/en/panel_notification.xml b/indra/newview/skins/default/xui/en/panel_notification.xml
index df37f9973ce..145a24b6427 100644
--- a/indra/newview/skins/default/xui/en/panel_notification.xml
+++ b/indra/newview/skins/default/xui/en/panel_notification.xml
@@ -11,6 +11,7 @@
   name="notification_panel"
   top="0"
   	height="140"
+  translate="false"
   width="305">
   <!-- THIS PANEL CONTROLS TOAST HEIGHT? -->
   <panel
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 7b6c0f33da8..16593751f78 100644
--- a/indra/newview/skins/default/xui/en/panel_notifications_channel.xml
+++ b/indra/newview/skins/default/xui/en/panel_notifications_channel.xml
@@ -3,6 +3,7 @@
  height="100"
  layout="topleft"
  name="notifications_panel"
+ translate="false"
  width="100">
     <layout_stack
      follows="left|right|top|bottom"
diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml
index 7c584ba2c87..1f0ace58430 100644
--- a/indra/newview/skins/default/xui/en/panel_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile.xml
@@ -109,6 +109,7 @@
                textbox.max_length="512"
                name="sl_description_edit"
                top_pad="-3"
+               translate="false"
                width="180"
                expanded_bg_visible="true"
                expanded_bg_color="DkGray">
@@ -152,6 +153,7 @@
                textbox.max_length="512"
                name="fl_description_edit"
                top_pad="-3"
+               translate="false"
                width="180"
                expanded_bg_visible="true"
                expanded_bg_color="DkGray">
@@ -167,6 +169,7 @@
               left="10"
               name="homepage_edit"
               top_pad="0"
+              translate="false"
               value="http://librarianavengers.org"
               width="300"
               word_wrap="false"
@@ -189,6 +192,7 @@
              layout="topleft"
              left="10"
              name="register_date"
+             translate="false"
              value="05/31/2376"
              width="300"
              word_wrap="true" />
@@ -221,6 +225,7 @@
              left="10"
              name="acc_status_text"
              top_pad="0"
+             translate="false"
              width="300"
              word_wrap="true">
               Resident. No payment info on file.
@@ -275,6 +280,7 @@
             left="7"
             name="sl_groups"
             top_pad="0"
+            translate="false"
             width="290"
             expanded_bg_visible="true"
             expanded_bg_color="DkGray">
diff --git a/indra/newview/skins/default/xui/en/panel_sys_well_item.xml b/indra/newview/skins/default/xui/en/panel_sys_well_item.xml
index 2822f7b841b..5e74689c5a2 100644
--- a/indra/newview/skins/default/xui/en/panel_sys_well_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_sys_well_item.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!-- All our XML is utf-8 encoded. -->
 <panel
+  translate="false"
   name="sys_well_item"
   title="sys_well_item"
   visible="true"
diff --git a/indra/newview/skins/default/xui/en/panel_toast.xml b/indra/newview/skins/default/xui/en/panel_toast.xml
index d198237e5d5..bfe3cce7d0a 100644
--- a/indra/newview/skins/default/xui/en/panel_toast.xml
+++ b/indra/newview/skins/default/xui/en/panel_toast.xml
@@ -40,8 +40,9 @@
    word_wrap="true"
    text_color="white"
    top="5"
+   translate="false"
    v_pad="5" 
-    use_ellipses="true"
+   use_ellipses="true"
    width="260">
     Toast text;
   </text>
-- 
GitLab


From 9fd539f4db5857bb12cd2da06816a1fec9b585bf Mon Sep 17 00:00:00 2001
From: Chuck Linden <chuck@lindenlab.com>
Date: Sat, 30 Jan 2010 13:09:00 -0500
Subject: [PATCH 368/521] Replaced maturity icons new versions.
 http://jira.secondlife.com/browse/EXT-4709

---
 .../default/textures/icons/Parcel_M_Dark.png    | Bin 333 -> 348 bytes
 .../default/textures/icons/Parcel_M_Light.png   | Bin 322 -> 335 bytes
 .../default/textures/icons/Parcel_PG_Dark.png   | Bin 407 -> 400 bytes
 .../default/textures/icons/Parcel_PG_Light.png  | Bin 387 -> 403 bytes
 .../default/textures/icons/Parcel_R_Dark.png    | Bin 319 -> 357 bytes
 .../default/textures/icons/Parcel_R_Light.png   | Bin 309 -> 355 bytes
 6 files changed, 0 insertions(+), 0 deletions(-)

diff --git a/indra/newview/skins/default/textures/icons/Parcel_M_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_M_Dark.png
index 2f5871b8ffcf846835da70f7576aaf8e3ae24300..60e6a00a25ca1ec5f73554bdb04b7b4c105b5f6e 100644
GIT binary patch
delta 284
zcmV+%0ptG70^9<SNq_!HL_t(|+G70w|33pY01JqC_39NrklFym4kYS70K@@eVqzbe
zpaSF=!T{9+(#ybvBtR~3KsE>tu3fv%;2#joP+3)jBL3~$H?TMeV*^aMtN|JL`t=()
z|J127c%6mQAZI5>hW-2Z!}*skT>^`dY>=Lw9>bx-N5E{5%YXLn+Yc5a*&s7B6NZl;
zKQWv>bC%)M>C-^IDTA1pDE@SW4RCRBF*rKfGhDuWnc?>BI}Gk_Zsdg#2w0e#1H<Vc
z!;>dZ!7e12vT*?|Elmb~em({xBSWwY@c~9qUIS(kiZUE9i!d@F<r#9p0pu_WAk(k|
iP`wbZQ3C)37!?2vM^I<XyjDX10000<MNUMnLSTX)?RgIX

delta 269
zcmV+o0rLLb0?h)DNq_H2L_t(|+N_f?4ul{OMMtuYHd|Qg8T1Nx0}D%!sL9?yN^Naz
zwKdts)@5eJAX!XgeF;K7%+Cxs-ny=E2M_!RA)a!2$-yti3psMm`I~KmiwSHo7z<1j
zT;Y3ZI@2^kRaFp%A(Ul#*sJRr#&LwAC?JZW!yYq@mSurq7=NH`TbSp0*Kyr64ej9>
z6K2adj$;Z`pfPGTtVUUuQLv)xI?^s1B}qba-}ietO0)h)zwmt@(ln*4f*_zZYL_!o
z<zYr>c2?GDMhHH!x?uCUO+4&1*&=^6oNN(~X+7hL(C;XBG!t9wx3oL>2rvL}?OCr8
TPYHtn0000<MFvhpu0mjfvXFJa

diff --git a/indra/newview/skins/default/textures/icons/Parcel_M_Light.png b/indra/newview/skins/default/textures/icons/Parcel_M_Light.png
index 724ac22744cc07f744f3960cd2f254aa478be626..55f97f3b4e7a473a1ae0be2bf7c78b3f01f77d60 100644
GIT binary patch
delta 271
zcmV+q0r3990?z`FNq_N4L_t(|+N@JC3WGop9L3HeR<<I3Ks&V(MX=Kc`iQh5f;MU?
z;uq{qVQua%A_k(wO9mEh=h(T~<yKgh1^<9Rg@Pcsk@KB|cd@=CkrYMo5Lbdn1Zxeg
zg}5Vl;q8SsxULIg6=|Bj@rt4_p2jDLN6+ZG4o%axJPgBATYrZ_ZQCM_<1IH$lW~`Y
zx~_xcIP6TF*|yEN%R+gcLzZPkQ3T)jF$@F7aXb`~jxMHYLen&`EDMHVAj>ko8BtVK
z#oAL<l{q|vbaq+SHRgFn-}lVnH!Jef!jZovh`XKPMY*3*!YNj+wXfFxfu{fi0257A
V_vX_G4FCWD00>D%PDHLkV1mvbeaQd-

delta 257
zcmV+c0sj8a0>T22Nq^)?L_t(|+N@JC4udcZG!+X|#mdMCBRqf)An^+R!%r&lfeef=
zhLMq#c4AC(DTzuYPy?KFU>x~$cCaIapex|wk*4Wgz8;d9Wj&KD+O~bUOX7LZNVe2E
zH@XP!Zz9igN|J=8X`-sCR%c~dQV;~xbsg1py*k@;<oiB_VR~r3ApmY+Q)r%N<xB%H
za@In9-%}jN<awTA6h$g$ErdB}ClG;H(=`7NTVotY8iv8NgcuiK?MS=A(DhC2VONNA
zu3UhK_uydH<cgeHIJqL`&t@ld*mrBiK{2+}ep<T%Zvh4XWPMjf&maHV00000NkvXX
Hu0mjf9=UVO

diff --git a/indra/newview/skins/default/textures/icons/Parcel_PG_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_PG_Dark.png
index f0565f02ddebbe0b5a734cea38baa8e99f6c02e5..11ab1f1e60856a2c6a6eeaf986ffc824d38e1852 100644
GIT binary patch
delta 336
zcmV-W0k8g-1CRrdNq;g)L_t(|+G70w|33pY03*ntLr;G31KAsZ*nvd-2Y@)hPKNCx
z6I6g4Ll~fXKzbRNkOVNmk8fWY9^AOX@ZrrXLWVK0;F8_Db}7TImGc-hO{^K-ym$f@
ziz%pOkdRZvsvfIB=ML{>IJ$j3Lt)PxxW+AuW-u(7(9BTMH-C?KgHG<=!r&4TgJQdl
zR}h1cm;~6n99-NOdYG^o^x(!N1}Oy<jBtX95$z&m05agfrd43}^)p8qGMgqcC}`*q
z=OR!5KYMTo%m#Tcp{$7^BBva$g;)*Jv$SW}vt|jyi%0k2Vtdvs#%mB(uNm1oGyM4a
znW4WV1s?q(5=k;ZFX<7?BL8tENRX>Qv4kuAfB-OyFtQ-!8I05oG5}k^V##mtFbaSP
ikdtZQUZVy82rvNii*mA{HM;Zw0000<MNUMnLSTYp@0Ef8

delta 343
zcmV-d0jU0v1D6AkNq;#>L_t(|+N@J8kApxE9WFJf6G*UFEJ(0mnqc`g`~wmc77NKK
zY*&H=iv<bk8IT-r4@i5Z$@SwU%dqUs+j%pLFijJ^0|z`9W1qA6nwR-tJe$|iG|lhB
z^5OhsBIXh+d^{T2w(WgsKoA5}*Y$RwC<<AYMY^ujIF6L2DSwq^$-l$TFbr~Cmqby#
zCIW2R<_oB*ilQhYRaGg=GHRNJeBbARAjZWY_dJjL-<76m8n+<G^Ze>|SnQGAjWnR|
z`%T{IblL&|WVZTrUB};LS>7iC$?AmL9LJ$y80fDLGK4&28;0R65emE3=n}}RC<=bQ
zF6`qt-hBSmeo%BTNs>)AEE=%een^odX_p9D;tatcfiH@UI<62fYx9V_G;s5XY=1U;
pfrnkz==dZVTVj8uy#qf23;=fji}7UOCOQBB002ovPDHLkV1g8@pkDw0

diff --git a/indra/newview/skins/default/textures/icons/Parcel_PG_Light.png b/indra/newview/skins/default/textures/icons/Parcel_PG_Light.png
index f32b0570a128d57ed726c96e8665691cb1130c95..b536762ddc467659f54fd6f79a01c27fb1ff2bde 100644
GIT binary patch
delta 339
zcmV-Z0j&Om1Cs-gNq;p-L_t(|+G70w|33pY01Jq)>O9B~q&5Jt1Bv<%0CB*va{G@=
zPyuobVSwrZ>1AL-62Jgl94rjRih>N{f}Dg5gLn-a$Z=F+h%%F9IQQs1gCsx1po)#x
z7;ZoRj600bL4c7IgP*=6L;Rw1aE(=-Y78CzS`5K6P7-fWpnskO!;({vQEZ=k;xWUM
zk3YcP{r2Mzh8`wt2C0hkGF*ik0t+V@0S>qr(Jn#;(!hXDw2%d}jpPIwa#vkqID7v+
zaV`P{u(l*Gm<{q?&hkqPW$UluwGgX8dv3mAhyli!D%3C#C;-MH!IX^-Hk^CLzy}PQ
zg>gpk=zsq4J50mvmt=&|qGOL3)&LFE1iI=IFqUrP320=44q!{&plHSxuvqdNJd6Th
l0_0>`5QC9g#Rx!v0RXQ$X);p;&w2m=002ovPDHLkV1m<rk&plY

delta 323
zcmV-J0lfZ`1A_yQNq;3tL_t(|+N@Kdj)XuAEf*4kx<!H^!61;}K<o!VvY*8NU@pNT
zRv<xQ`33G2lAYI30>>r0$I_(C3^VWbwKLVGX`(Ys$0v%SPc?igzy1?{SAJ`n=0~4@
zd><5Yow3>non)ej@;u*cjN?dc+fr3kWSS<$aZF(t@_ZNus(<U6_jg3FzVE5)I-Wa@
zLrIb_C<p?wZJU8ud!9#Gmhm|u+YsT9Y+!@}-}f0<6vYxm&LF^_M3!YSSQNnw!&ubH
z8TdM_9T6hKrADX&YT~*suVF}6f~{-2Awrb0EH{xLA3%&q4f}A^Xica;yH<b!NYj*4
zf-<DNCV{>5jyzCksKpb265QZ#<r;cTwa8lyr&{E^mn}q>xdG`w(_WU;&aj670|1j5
Vf69sfb&~)9002ovPDHLkV1h^`lpFv6

diff --git a/indra/newview/skins/default/textures/icons/Parcel_R_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_R_Dark.png
index e0e6e14ccab60fd3ad9f27a410639dbf19002538..bf618752f635930d85d66f5debbc403e32e47d66 100644
GIT binary patch
delta 294
zcmV+>0one)0_6gbNPhtbNkl<Zc-mt8|NlP&H2@2Uc(;8AKako0#116tKLEr5LY^KU
znV<sX7{UP61JcXDgd{*Na6mQ)C&-vKgTcGGmEqgZpLo^bHR$21R}7EezGaXV7G~IY
z=`#5S?Y?l4!BtO}!N=5uVaw?=<QW9=%D&5281$8t7%bG)z<(~g_V_XB2A#Zho8jZP
zZw%rB{0y%?egu2(*!3Hv8+7FAHL&KjM~{Os9~URsg}4Hp1)JcTPoEf0+`i2)Ej^V%
zUQ7(`)zGdUuuC0vb%=A(9$+AYTmv%%1i0AQ!2!Sh>{+ZXVg%(iU>2b$!vV7hBNI}d
sAr~A#_F4d$h94b(>V<fX8UP@`053LVoh$Vvi2wiq07*qoM6N<$f}zibhyVZp

delta 255
zcmV<b0095x0>1)~NPhs~Nkl<Zc-pK}I}U>|3^f%CQzcfiva)8)5s=^v+=nx;GV};u
zSy{8fh}2GuG)@UZBBJ5*Bqx@Y_vB~A-ZV{c2YfmZ@u{wt3UQE+DpDcD$Da%DlZ}X(
z>pkEm__m^y63VjN)Z;jYq9`B;0yiOpJkKGDBAxer4|QEb+jzFXIp4h9wMHV;1%)Ax
z<LGY9plKRylR%x2r6fs?3w2!w!!Rs4W6V0Azd~7-X<Meds;ac0sX5PRjW7&%XXGqo
zY|*T2@Mzc6id<SawIa*U#tS;Qww9h0!<qZDb_c!!3;+lBOcW;^;8g$s002ovPDHLk
FV1ktubawy%

diff --git a/indra/newview/skins/default/textures/icons/Parcel_R_Light.png b/indra/newview/skins/default/textures/icons/Parcel_R_Light.png
index efca6776da7533cadab65e3e7959d8af55155a4f..a67bbd0cc578bb9522d3eff0a1050472296a0315 100644
GIT binary patch
delta 292
zcmV+<0o(qy0^<UZNPhtZNkl<Zc-mt8|NlP&H2@>Xpj!?${6O{wAa)>8{{bKlP&;ts
zBNJ4B977nOdO&&^n2-d>1rEpt;RFgR*D?T|&cMVYfL9$}gV@w{8Q8?d8GgNd$-o;F
zOuj*U0saghj~r!qzjYgfptl!!27$c7Z)?Nw?d(~GuX}cbU4O=5W<|O|+^%j6%se~{
zzn?x~V3CmldymJ_38z6UxFmS(9l)A}qGG`OzhAz9UHERQ0K>m8ABZ!EMM{o=$3Tza
zL3$>`ubY?QURBw$1?<w#>sJxyHNL<guxnt3fB?u9pnw<f@y44)D9UiabjHYplxN5V
q2avrMK&D{_pdET4UZVy82rvMu`B;#j8CKx{0000<MNUMnLSTYnfP#7e

delta 245
zcmV<R01E%(0<{8=NPhs=Nkl<Zc-pK}Ar6Ev5L_+@+*MXqA}e?R64@v4Jmg8_J)okp
z5{c|N9M^4FatRG7TqjxDY}m=nrc<oz3OP{Xr)ip}KVH7ti}P<^N^AWow}!hZq}^tV
z2V_DSYYHKt@B2f4nkE>A0hVP+BO;9B2=hFLJLep_u7kR+!EP9H`1jNrlAsDK8m_7;
z-5Nnk8Ehg@30kt&UME63jIsTW3S;|8+7a3!bxNr~NWJ78{lYnSx}#(wvW2^fp}?&9
vi2M~eACY`7n~2yJK)4ZFwp+`AuK)u8SgumEL^2J`00000NkvXXu0mjf2}f)X

-- 
GitLab


From e7d22ddc8150f2a7b5a564d6464b2a27e07943be Mon Sep 17 00:00:00 2001
From: Chuck Linden <chuck@lindenlab.com>
Date: Sat, 30 Jan 2010 13:54:39 -0500
Subject: [PATCH 369/521] Added "refresh" button to clear map.
 http://jira.secondlife.com/browse/EXT-4342

---
 .../default/xui/en/floater_world_map.xml      | 40 +++++++++----------
 1 file changed, 20 insertions(+), 20 deletions(-)

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 65c9c2a8fa9..e1df50bf58c 100644
--- a/indra/newview/skins/default/xui/en/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/en/floater_world_map.xml
@@ -403,7 +403,7 @@
       height="16"
       image_name="map_track_16.tga"
       layout="topleft"
-      left="5"
+      left="3"
       top="11"
       mouse_opaque="true"
       name="friends_icon"
@@ -415,7 +415,7 @@
      label="Online Friends"
      layout="topleft"
      top_delta="-4"
-     left_pad="5"
+     left_pad="7"
      max_chars="60"
      name="friend combo"
      tool_tip="Show friends on map"
@@ -433,7 +433,7 @@
      height="16"
      image_name="map_track_16.tga"
      layout="topleft"
-     left="5"
+     left="3"
      top_pad="8"
      mouse_opaque="true"
      name="landmark_icon"
@@ -445,7 +445,7 @@
      label="My Landmarks"
      layout="topleft"
      top_delta="-3"
-     left_pad="5"
+     left_pad="7"
      max_chars="64"
      name="landmark combo"
      tool_tip="Landmark to show on map"
@@ -463,7 +463,7 @@
      height="16"
      image_name="map_track_16.tga"
      layout="topleft"
-     left="5"
+     left="3"
      top_pad="7"
      mouse_opaque="true"
      name="region_icon"
@@ -476,7 +476,7 @@
      label="Regions by Name"
      layout="topleft"
      top_delta="-2"
-     left_pad="5"
+     left_pad="7"
      name="location"
      select_on_focus="true"
      tool_tip="Type the name of a region"
@@ -497,6 +497,19 @@
 		<button.commit_callback
 		function="WMap.Location" />
     </button>
+   <button
+     image_overlay="Refresh_Off"
+     follows="top|right"
+     height="23"
+     layout="topleft"
+     left="0"
+     name="Clear"
+     tool_tip="Clear tracking lines and reset map"
+     top_pad="5"
+     width="23">
+		<button.commit_callback
+		function="WMap.Clear" />
+    </button>
     <scroll_list
      draw_stripes="false"
      bg_writeable_color="MouseGray"
@@ -505,7 +518,7 @@
      layout="topleft"
      left="28"
      name="search_results"
-     top_pad="5"
+     top_pad="-23"
      width="209"
      sort_column="1">
         <scroll_list.columns
@@ -545,19 +558,6 @@
 		<button.commit_callback
 		function="WMap.CopySLURL" />
     </button>
-   <!-- <button
-     follows="right|bottom"
-     height="23"
-     label="Clear"
-     layout="topleft"
-     left="10"
-     name="Clear"
-     tool_tip="Stop tracking"
-     top_pad="5"
-     width="105">
-		<button.commit_callback
-		function="WMap.Clear" />
-    </button>-->
     <button
      enabled="false"
      follows="right|bottom"
-- 
GitLab


From 5815bcc162a4acc26185a228c4e28cb77e361d44 Mon Sep 17 00:00:00 2001
From: Chuck Linden <chuck@lindenlab.com>
Date: Sat, 30 Jan 2010 14:27:56 -0500
Subject: [PATCH 370/521] Swapped the login button and destination dropdown
 locations. http://jira.secondlife.com/browse/EXT-3751

---
 .../skins/default/xui/en/panel_login.xml      | 26 +++++++++----------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml
index df942b1a267..901cfaa365f 100644
--- a/indra/newview/skins/default/xui/en/panel_login.xml
+++ b/indra/newview/skins/default/xui/en/panel_login.xml
@@ -122,11 +122,23 @@ label="Remember"
   top_pad="3"
   name="remember_check"
  width="135" />
+<button
+  follows="left|bottom"
+  height="23"
+  image_unselected="PushButton_On"
+  image_selected="PushButton_On_Selected"
+  label="Log In"
+  label_color="White"
+  layout="topleft"
+  left_pad="10"
+  name="connect_btn"
+  top="35"
+  width="90" />
   <text
   follows="left|bottom"
   font="SansSerifSmall"
   height="15"
-  left_pad="8"
+  left_pad="18"
   name="start_location_text"
 top="20"
   width="130">
@@ -163,18 +175,6 @@ top_pad="2"
 name="server_combo"
 width="135"
   visible="false" />
-<button
-  follows="left|bottom"
-  height="23"
-  image_unselected="PushButton_On"
-  image_selected="PushButton_On_Selected"
-  label="Log In"
-  label_color="White"
-  layout="topleft"
-  left_pad="15"
-  name="connect_btn"
-  top="35"
-  width="90" />
 </layout_panel>
 <layout_panel
 follows="right|bottom"
-- 
GitLab


From 62f8cc21f6c2f6a488e6f74f2663b2e5c6acdf6f Mon Sep 17 00:00:00 2001
From: Chuck Linden <chuck@lindenlab.com>
Date: Sat, 30 Jan 2010 16:55:12 -0500
Subject: [PATCH 371/521] Edited graphics to better indicate "flying".
 http://jira.secondlife.com/browse/EXT-4411

---
 .../textures/bottomtray/Move_Fly_Off.png       | Bin 393 -> 3347 bytes
 .../textures/icons/Parcel_FlyNo_Dark.png       | Bin 424 -> 3221 bytes
 .../textures/icons/Parcel_FlyNo_Light.png      | Bin 429 -> 3235 bytes
 .../default/textures/icons/Parcel_Fly_Dark.png | Bin 271 -> 3077 bytes
 4 files changed, 0 insertions(+), 0 deletions(-)

diff --git a/indra/newview/skins/default/textures/bottomtray/Move_Fly_Off.png b/indra/newview/skins/default/textures/bottomtray/Move_Fly_Off.png
index 28ff6ba976932568651a72e2f3ae89408d0c9ccc..9e7291d6fbf131ec27337bd13434c37ba4af2128 100644
GIT binary patch
delta 3345
zcmV+s4es)Z1Ctt%BYz4*X+uL$Nkc;*P;zf(X>4Tx0C)kNmUmQBSrfqTdoR7v5<-y@
zdJRoV0Fe@UkzPe5BmqJR7!t5oL<LtA6={khiy|(#x)fO}qF7iI6tFMIBA~2`tB8ta
zU-TSh|JeP$v-8KC-<vyg@7$TW=R5!?zJWqfCaeHJhDag~^MCPR#>B=k@!bFhM1TX<
z0C0KPSwZ365dalGFAg&sb&|16pwIes{};H$@(p1!Kb!u4rO3+?OVFJ{(2%)&K{gNN
zJe1ROC0R22B+B%}G#SGf8H>>bQC5|4@)tJ$?DK`)WX#VH@lhXH&RP5nzKlCi-jX8~
zpo|2foS!2U<bR@k8)f};X@(HxHz?CH1l()@Fcg_xBH*Q<Y=tsK91+Grc^&`+O7bjD
zoW&BsGBi&BIGI_?#lqwi3DcNo!nAgDWHWsQx#<FlgcZW&rE$f4CMPo^iz`|Vz?VDA
zqJWaDwoJ6h_STN}_ADC<wESP?Ul+f6{X58d`^DpB=zr&)L5!|%wr{cDY?;*nu&2=4
z?D%F&ECZlr69B6BzS;B-03e?SK=X}R_hHE9B}F31a<a6{&CRtC3V0T>f_|0%>G0L_
zpJCQ{7P9lc){f~ZNa9M<B}`dSd70^%QZX|-i^~%*S$`X1bnE{dI4iALd6<U@k_2Lb
z2t6taoqsZ+C>d?Hh%b}~Geu0H=$|_LAH!zlAj2<njRLLaBcLy_017wg0QtQOU}$83
z#P3H}ps#%kBt`+*%Zt_?{WA9`qwAmb-xOSge!|(pWTwo_35#Izq~aVIqi;f{uz&>Q
z0Uf9TEuaUC0Snjw2jC3cfEVxw!5{*}g2jLbQhz`O5QAK>3akhDpb+c;dq6p;0yUrx
zG=LMJ1)K&Kz-4e9+ys5#J{SZe;2D?%ufYriL3oG?(I7QQ8!~{*ARCAc&4;|8Kqw4~
zg%Y4-NCZitRnSJL5Gsbsp@UEz^doc%x&U2;dZ4?|5Ht?`3B7|6m;%#bP1q2&gxRn=
z9De{uz>DBycqzOB&V#qZrEoQT3~q)mz}MkEco2RDPayyyBMd|bVIgdUg9IaSND?AO
z)*uB)2~v$TAZ<t|atj$mCXlxn9EOHrVptewj4vh<!^14atif!<lw*!ynlT-iTbLot
zB<3TQiq*iHVV$sk*cfawHW!<ZEy31en}4vEuzlDO>}wnj$G{ok9B{t4SX?S@C2kvT
zAFdI19@m2##!cbzcs0Bk-UT0w=i(*!e0&-H82%i-7e9i3Lm(5h2{r_8LL5Ov*gz;D
z93`A3^b$r1GeiZV0nv#VOym=n6N`v7#5Up$;s|kuq)0L%xsW1AsigI!Qc?ry5`XCd
z=_Q#=)+IZVL&-w&I&vxbIQa^Bi2RnKL@}jsDDf02Wjp0C<viss<t3F$HKe*x<ERqq
zc4{5<BJ~mVjT}wRLe5W)FSk~%Late^SMIqyQQkn_U4F6r3i%TGlkzv@ClrVZh6)@7
zuEH9H3WZY&0}4}$G(~I0V8sl@ZGVbK6|X9eDdCk2mAsVrN_k3$lrAa_(-4{-jYH$n
zHqvTnmuMq&9NmcSM^B{}(tn_L(<haclx>xxl$R-2D4$UtWFQPfh94uHQN%dG=x4lB
z(Nu9)5vXicX;A4^nO2>n>ZU4CEl_P#?NfcH##HlCOH<pa)}r=M9iwil9)GHytG-|T
zlKR9P`W)vuyg3DPPRzNd0c)6QglVkQIHb{~F{P=c>7$vYS*CeWb3%)u<))RYwOi|~
z*0?rJd%m_%d$;yE?Was-raLp8S<38SPU>jr`07Y?4(fF4%;*~FM(S?RZPb0JN77^K
zCF$+fYuB69*VYfxU!`BKe}B(_Xuvi|G1zO+X)tYQWEgF@*|5cM%t+P9&uE2Fz0m_>
zs<Er_QsZjl+a@>@wn>`FK9ifKu&JGCifM)E4Kvux-b`q=&#cEBYwl<+GOsotU{P4^
ztQ=N7Ysi9O5ooc&qQ&C5rM_jH<xa~^%a2xeR_RtXR`;!yto^MwSbw)!|7l}t!?UTd
zxjmOU*L&{Txvg_w*qYf2Z1>yVv7^}q*=@FKxBFo4U@x|Bupf8OcSvxkbQoaM*&*z0
z>?@8~M-Rufj;9^pI@vo(oK86X;mmSQb3W=kHqU6DU|!9<VHaH&uFFA}!THSj3G)xk
zA9U4m<+@h8K6cY{<A1x=x{bP<xTm@wbARq(<stTH@|fm0aaMEAdm^4bo&}!WUP@k(
zUgchoymh^kz3aUvee8Tz`keR0`Ud#!^d0ci^yB%}`Azye_^<Zw2%rRn2b2dq4m1rE
z2et*lLH<Fzf*vd|SRh)^5)6X<f_DW!3^58>8uD`}E;J;xB7gKrn045yu+DH=_>%CW
z;jbe+B8npJM;b>;Bip0oqvE6LqNbxgql=>lV=QA<$6Sw9j}^wY#^K|l;%eij7J4n*
zvv4HdE<QiLf05CmWs9yZR$rXH_{<XdCEO(^6R-)<2}cv&bA!3n+^Iyr#LC1;9*4J=
z_l)nx-_0KvxPJ(W1*1tWNySNH$u7yelE+hAQ%X`MgdAbH@I|U`YE|lVT5#Iov`^{L
z>5UnLjD(C+A|+9ps3TJ=b6I9jmRVMQ*5Fd7rF)i6iUY*8*--YP>{baK{h8{L8cR1x
zhjQlUROGzLjmkZ_OmUfLS=VyY<y)7JuJB&*{YuPA-hayWRXVHIuNqqIzWU%AXiegp
z_O*Iz^VW{6^I3OfJ!yT~`d>C!Z7AOGYGd@qwmi+eb$P>^d^XkR%jJvn2R1uzuG)gx
zBHYrwb?(-(tse{c1=k9#3QG##Z{uyd_MP>2rQdzpp0vHY$i8U*4%`mWj{cplJC77A
z7OyBC-hUOet9dtbcfsygdzS3ET4GyLwU@M4x_7WNu(Y*Izida@`|_0Xz6y_u#!8LK
zt(DXJ`1^YIyX|kN(yS`1dUrs0;LbsxgU!{3)g^~;hjI=*sfnuT{GR=NU9Ea;VeN;*
zqQiqn!j5#*In>o1)i_#I57$fU$B)GyyZM9X4}Yx<tcHV)jK;#_;JEbo(;pLl>^~83
zqWvWMWW!GeKUFr-nhKhs=H<<kEh#O7t+A~=r~FT~w>h^p{cQ2`;nO;&E6ymNDLP9!
zn|JopxfSQ8&S#yUxR88dxP3|c{fjXdZ+C=tbYBX%bmg-5<%^x}o#(E&TseK!>FTL#
z?0;)5*X^%2ciD9{{bKh^Q@4G0^9_d^tv4NSw)M>GIos>nd*PPnt;@IlZeQ<P(AU!+
z*?(sseqitp|IXOm^t&(a<=mUOzwQC{LBT_Xhb50R9##Kp@@wOu{ot7)&!Miz;g9bR
z^M;@Omi^oNk-R6=CnclWqjh68W2eWx$A51=UHEk5S=O_eiTvLcf3JLQ{QRds-2UjA
zjF}vHA%5}c&uuT&ULJmB`>K5^Wa`oDjMp>M1#i^e9C^!r+xaf~-RMm2d;I&-4<;Yl
zJ_dYz@G0Zdr@sILoAdna&gY5%000SaNLh0L01FcU01FcV0GgZ_0007ZNkl<ZIDZk9
zlg*3LK^Vv9SH3K5zO1jCL3pshT#`c34ofQrVW&a}qmyi4UW5qNvz{~|4?%@wRDZyx
zhlrL$>4m~5JBVO=SWVM>`I#Zb?r(MNJ5jO_mJWQFXP$ZHJM+vlL&#)p24Tk>4u>|G
zOp<Q5OZxpj84icPh{a-)sR)HaZGSu-zh1A`uWW5?iT((r(`jNdnI;pVQ97N@%5mIN
z2;2mMa=A=gF4ssvtyYihe;O8x<pKm=gB738H;QE#hPd5slFepEzOe>^_XYxi6^Oi9
zTU+y}RI1|$R@m+KnM5K%dc7Xm-rgp>u?oK@ATW;;&7)`A?Y3-nb@eLCvVZGlv-y!i
zp~&<3{QpT10V4Fs|5B&Zd5m2jrc$ZP5PT1EzyV0J*(A%$%VWh3Vdk9Q@4ta6J;Q=m
z;5qKXTd7p;*J?F->H1(WNCX19ANeaaC45JnPUq=RC}c#n4q*HPa6llJ%TJX`r5e&H
z*laegSS-rnXRTH%VPMcE0)INA(YO?iMi&tz!I*9}07F18Vh*e$P4(vHW;>I~e9q-^
zMX^}?0#D%s6*?l3NKS^sVVlR}(GCWKkNJFl19xKrGE_~0m@>GFbSfC@V4nd}a1d2{
zD-wx<Jg?V#J`#zXot>TiQYaLjRI61EUtmt7(NGckHR$`l2fov%fPelSNP<Nmg~)#N
zEoNtD=NewB1i61j6DgI-!wU-wI;m9p5&^fs1{l}&VS?TvVent%jYi|5OeWJC42Bap
z$tU=4gAACs@mj4GixZR}vV>K4z=Mfb?+Rp40fOI6%T7!DZP(mXCWA^$wP0NEo^cb?
b`hNn$_7uUtb7K_%015yANkvXXu0mjfJ+5?;

delta 367
zcmV-#0g(Qa8i@mtBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz
zD@jB_RCwBA{Qv(y12q5>1GNAJF5&`WdmxqqnL)0LSl!*-J@4JSmwNc{VPkS##Hy;Q
z>izur^VLAT`+?XRYzC<YX=`gcAsG@6a|{bq-U{SbVhmcfYJZidgoK31%a<>Y0O<oT
zaYm47@7}%Z6%rCMBGy$PLx2YU1hMn-@)iTlcnEgUojZ5Va&T}wN7taJsA$8>%gc{0
z{_x?$>$$nPsUWtwx%oYi5ZIsx4;}~t4H8AyASWk>HCCTKeaZ)8o0*xtg?kMMnt|Ac
zSg)Nrb?U~aPiUV`xwyDIV`OC9Nph?K)pGy+`*#i~#x`!;*a;MphbJLYqaWF@Ns}hk
zz*06@Sp;O*zkmO>fDGHSXHNjx20;x|2I9>?><%)6anKbbR5J)5zyM{yytH1Pv2XwY
N002ovPDHLkV1m)MrHB9k

diff --git a/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Dark.png
index 0455a52fdc8bdeed55430f60db0329acece8fe62..e0b18b2451ed930f309c1f14019e2b8d70a09291 100644
GIT binary patch
delta 3218
zcmV;D3~lqM1C<$&BYz4*X+uL$Nkc;*P;zf(X>4Tx0C)kNmUmQBSrfqTdoR7v5<-y@
zdJRoV0Fe@UkzPe5BmqJR7!t5oL<LtA6={khiy|(#x)fO}qF7iI6tFMIBA~2`tB8ta
zU-TSh|JeP$v-8KC-<vyg@7$TW=R5!?zJWqfCaeHJhDag~^MCPR#>B=k@!bFhM1TX<
z0C0KPSwZ365dalGFAg&sb&|16pwIes{};H$@(p1!Kb!u4rO3+?OVFJ{(2%)&K{gNN
zJe1ROC0R22B+B%}G#SGf8H>>bQC5|4@)tJ$?DK`)WX#VH@lhXH&RP5nzKlCi-jX8~
zpo|2foS!2U<bR@k8)f};X@(HxHz?CH1l()@Fcg_xBH*Q<Y=tsK91+Grc^&`+O7bjD
zoW&BsGBi&BIGI_?#lqwi3DcNo!nAgDWHWsQx#<FlgcZW&rE$f4CMPo^iz`|Vz?VDA
zqJWaDwoJ6h_STN}_ADC<wESP?Ul+f6{X58d`^DpB=zr&)L5!|%wr{cDY?;*nu&2=4
z?D%F&ECZlr69B6BzS;B-03e?SK=X}R_hHE9B}F31a<a6{&CRtC3V0T>f_|0%>G0L_
zpJCQ{7P9lc){f~ZNa9M<B}`dSd70^%QZX|-i^~%*S$`X1bnE{dI4iALd6<U@k_2Lb
z2t6taoqsZ+C>d?Hh%b}~Geu0H=$|_LAH!zlAj2<njRLLaBcLy_017wg0QtQOU}$83
z#P3H}ps#%kBt`+*%Zt_?{WA9`qwAmb-xOSge!|(pWTwo_35#Izq~aVIqi;f{uz&>Q
z0Uf9TEuaUC0Snjw2jC3cfEVxw!5{*}g2jLbQhz`O5QAK>3akhDpb+c;dq6p;0yUrx
zG=LMJ1)K&Kz-4e9+ys5#J{SZe;2D?%ufYriL3oG?(I7QQ8!~{*ARCAc&4;|8Kqw4~
zg%Y4-NCZitRnSJL5Gsbsp@UEz^doc%x&U2;dZ4?|5Ht?`3B7|6m;%#bP1q2&gxRn=
z9De{uz>DBycqzOB&V#qZrEoQT3~q)mz}MkEco2RDPayyyBMd|bVIgdUg9IaSND?AO
z)*uB)2~v$TAZ<t|atj$mCXlxn9EOHrVptewj4vh<!^14atif!<lw*!ynlT-iTbLot
zB<3TQiq*iHVV$sk*cfawHW!<ZEy31en}4vEuzlDO>}wnj$G{ok9B{t4SX?S@C2kvT
zAFdI19@m2##!cbzcs0Bk-UT0w=i(*!e0&-H82%i-7e9i3Lm(5h2{r_8LL5Ov*gz;D
z93`A3^b$r1GeiZV0nv#VOym=n6N`v7#5Up$;s|kuq)0L%xsW1AsigI!Qc?ry5`XCd
z=_Q#=)+IZVL&-w&I&vxbIQa^Bi2RnKL@}jsDDf02Wjp0C<viss<t3F$HKe*x<ERqq
zc4{5<BJ~mVjT}wRLe5W)FSk~%Late^SMIqyQQkn_U4F6r3i%TGlkzv@ClrVZh6)@7
zuEH9H3WZY&0}4}$G(~I0V8sl@ZGVbK6|X9eDdCk2mAsVrN_k3$lrAa_(-4{-jYH$n
zHqvTnmuMq&9NmcSM^B{}(tn_L(<haclx>xxl$R-2D4$UtWFQPfh94uHQN%dG=x4lB
z(Nu9)5vXicX;A4^nO2>n>ZU4CEl_P#?NfcH##HlCOH<pa)}r=M9iwil9)GHytG-|T
zlKR9P`W)vuyg3DPPRzNd0c)6QglVkQIHb{~F{P=c>7$vYS*CeWb3%)u<))RYwOi|~
z*0?rJd%m_%d$;yE?Was-raLp8S<38SPU>jr`07Y?4(fF4%;*~FM(S?RZPb0JN77^K
zCF$+fYuB69*VYfxU!`BKe}B(_Xuvi|G1zO+X)tYQWEgF@*|5cM%t+P9&uE2Fz0m_>
zs<Er_QsZjl+a@>@wn>`FK9ifKu&JGCifM)E4Kvux-b`q=&#cEBYwl<+GOsotU{P4^
ztQ=N7Ysi9O5ooc&qQ&C5rM_jH<xa~^%a2xeR_RtXR`;!yto^MwSbw)!|7l}t!?UTd
zxjmOU*L&{Txvg_w*qYf2Z1>yVv7^}q*=@FKxBFo4U@x|Bupf8OcSvxkbQoaM*&*z0
z>?@8~M-Rufj;9^pI@vo(oK86X;mmSQb3W=kHqU6DU|!9<VHaH&uFFA}!THSj3G)xk
zA9U4m<+@h8K6cY{<A1x=x{bP<xTm@wbARq(<stTH@|fm0aaMEAdm^4bo&}!WUP@k(
zUgchoymh^kz3aUvee8Tz`keR0`Ud#!^d0ci^yB%}`Azye_^<Zw2%rRn2b2dq4m1rE
z2et*lLH<Fzf*vd|SRh)^5)6X<f_DW!3^58>8uD`}E;J;xB7gKrn045yu+DH=_>%CW
z;jbe+B8npJM;b>;Bip0oqvE6LqNbxgql=>lV=QA<$6Sw9j}^wY#^K|l;%eij7J4n*
zvv4HdE<QiLf05CmWs9yZR$rXH_{<XdCEO(^6R-)<2}cv&bA!3n+^Iyr#LC1;9*4J=
z_l)nx-_0KvxPJ(W1*1tWNySNH$u7yelE+hAQ%X`MgdAbH@I|U`YE|lVT5#Iov`^{L
z>5UnLjD(C+A|+9ps3TJ=b6I9jmRVMQ*5Fd7rF)i6iUY*8*--YP>{baK{h8{L8cR1x
zhjQlUROGzLjmkZ_OmUfLS=VyY<y)7JuJB&*{YuPA-hayWRXVHIuNqqIzWU%AXiegp
z_O*Iz^VW{6^I3OfJ!yT~`d>C!Z7AOGYGd@qwmi+eb$P>^d^XkR%jJvn2R1uzuG)gx
zBHYrwb?(-(tse{c1=k9#3QG##Z{uyd_MP>2rQdzpp0vHY$i8U*4%`mWj{cplJC77A
z7OyBC-hUOet9dtbcfsygdzS3ET4GyLwU@M4x_7WNu(Y*Izida@`|_0Xz6y_u#!8LK
zt(DXJ`1^YIyX|kN(yS`1dUrs0;LbsxgU!{3)g^~;hjI=*sfnuT{GR=NU9Ea;VeN;*
zqQiqn!j5#*In>o1)i_#I57$fU$B)GyyZM9X4}Yx<tcHV)jK;#_;JEbo(;pLl>^~83
zqWvWMWW!GeKUFr-nhKhs=H<<kEh#O7t+A~=r~FT~w>h^p{cQ2`;nO;&E6ymNDLP9!
zn|JopxfSQ8&S#yUxR88dxP3|c{fjXdZ+C=tbYBX%bmg-5<%^x}o#(E&TseK!>FTL#
z?0;)5*X^%2ciD9{{bKh^Q@4G0^9_d^tv4NSw)M>GIos>nd*PPnt;@IlZeQ<P(AU!+
z*?(sseqitp|IXOm^t&(a<=mUOzwQC{LBT_Xhb50R9##Kp@@wOu{ot7)&!Miz;g9bR
z^M;@Omi^oNk-R6=CnclWqjh68W2eWx$A51=UHEk5S=O_eiTvLcf3JLQ{QRds-2UjA
zjF}vHA%5}c&uuT&ULJmB`>K5^Wa`oDjMp>M1#i^e9C^!r+xaf~-RMm2d;I&-4<;Yl
zJ_dYz@G0Zdr@sILoAdna&gY5%000SaNLh0L01FcU01FcV0GgZ_0005_Nkl<ZIDZkH
zls`yYQ542s8m$EjQ7DE6#plpP9V{poTj5Q*3L@eb2OS)$i&F(xMUa3Fr3HP9R7FJB
ziX@7ECMB+w79}F2MU4m+Bocq$>kCLQ=G6~=Il1?q^SzUM?~5-QjT#>GjGRt5gm`Yg
zWm&mXh6=o>j-+wu^OCF_ug0z9)_=gMioD3Hv58p*mZ1m=%8PL^F13(?-_Q*0@Tj~z
z{RIw9kbnXB2-=cAun!NaP{;46(zU68J?Mg0PzL%1d6lo@AQfW}zE`QP*I^6P{V&L?
zhm1$b9)aAodgflkE}WMnPF5=?r}v9fm;Pireal=dm^j=ZI`Z9nLAsflfPX4T!b>QH
ztaKxOKu=(EyE-_xVEC{9X4kUO#=KVp?XgaL6Xrqs21}5w(wnARpf@iP*xnrueYG9a
zba~m$X@Bn`^Br&m;bhgDL84>4LTrRJn1i37#1hagcnjY_N`^kqwEX*O#EULc&qH5k
zujz7?In_u*`p`apf)8*8ZGZ3{W<Uv7kgEoF!XidMT^iZ~VvMl`j<HTzw_pl(K!pd8
zPe<;8>6&Tim=jG6B<-;d$`3j`b^Dkp%SKEe$fm=9dssH(FqmM2;mc(77w~_=P%n)I
zDTssVqHzNcJ66X}Q3pj4x6mS*umYA$iBIcTg@tqnEl!Cl6>i?B01E&B07*qoM6N<$
Eg3M+$c>n+a

delta 399
zcmV;A0dW468K?u0BYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz
zN=ZaPRCwC7lrc`jKoCX8fGB9<E}}qjL!Tq;5pn~Z6W}9o14v6_Q>35^Cx}6!4;4Z*
zj;JDmWEv>VpXjf(SXePmJkr-_z4G(;&+K|dQAiiDCmqEaoPVb2rK*dH11JJK-ZeOc
z7McM+-v!vS%>%Hf2^#7Lj4?M`g9#l$88n0Ze=s5xF{wU0U``0mp)2U(4?sq_k<&t{
z1N)UMHQ>}Pj-FrS_&S!u_YboYF}l}(d%dq(F<=Ar<%mAlM(^QK`qNw4|N5?OC4i4x
zHE(rtI&dt>SbvaD3)f={_{2SV7Mg6Bh=_SXPzcZ+dsOb1C(nV7H%x)G$*}1m{vrna
ziNytO^K>z502RlEK>Y+%2)CTy2c&5LaK=j23Iq73R!pzU26}C-O@QXKB6qwFxE=z$
tY<q2vI0e@0fG1Y}VA;xwrtu@d00@kYi;psQA^-pY00>D%PDHLkV1lett_=VH

diff --git a/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Light.png b/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Light.png
index be0c379d844826f4002e972497c991e22e2acc00..101aaa42b1edfcb79bbc766e7db3b22696d0c218 100644
GIT binary patch
delta 3232
zcmV;R3}5rD1EU#`BYz4*X+uL$Nkc;*P;zf(X>4Tx0C)kNmUmQBSrfqTdoR7v5<-y@
zdJRoV0Fe@UkzPe5BmqJR7!t5oL<LtA6={khiy|(#x)fO}qF7iI6tFMIBA~2`tB8ta
zU-TSh|JeP$v-8KC-<vyg@7$TW=R5!?zJWqfCaeHJhDag~^MCPR#>B=k@!bFhM1TX<
z0C0KPSwZ365dalGFAg&sb&|16pwIes{};H$@(p1!Kb!u4rO3+?OVFJ{(2%)&K{gNN
zJe1ROC0R22B+B%}G#SGf8H>>bQC5|4@)tJ$?DK`)WX#VH@lhXH&RP5nzKlCi-jX8~
zpo|2foS!2U<bR@k8)f};X@(HxHz?CH1l()@Fcg_xBH*Q<Y=tsK91+Grc^&`+O7bjD
zoW&BsGBi&BIGI_?#lqwi3DcNo!nAgDWHWsQx#<FlgcZW&rE$f4CMPo^iz`|Vz?VDA
zqJWaDwoJ6h_STN}_ADC<wESP?Ul+f6{X58d`^DpB=zr&)L5!|%wr{cDY?;*nu&2=4
z?D%F&ECZlr69B6BzS;B-03e?SK=X}R_hHE9B}F31a<a6{&CRtC3V0T>f_|0%>G0L_
zpJCQ{7P9lc){f~ZNa9M<B}`dSd70^%QZX|-i^~%*S$`X1bnE{dI4iALd6<U@k_2Lb
z2t6taoqsZ+C>d?Hh%b}~Geu0H=$|_LAH!zlAj2<njRLLaBcLy_017wg0QtQOU}$83
z#P3H}ps#%kBt`+*%Zt_?{WA9`qwAmb-xOSge!|(pWTwo_35#Izq~aVIqi;f{uz&>Q
z0Uf9TEuaUC0Snjw2jC3cfEVxw!5{*}g2jLbQhz`O5QAK>3akhDpb+c;dq6p;0yUrx
zG=LMJ1)K&Kz-4e9+ys5#J{SZe;2D?%ufYriL3oG?(I7QQ8!~{*ARCAc&4;|8Kqw4~
zg%Y4-NCZitRnSJL5Gsbsp@UEz^doc%x&U2;dZ4?|5Ht?`3B7|6m;%#bP1q2&gxRn=
z9De{uz>DBycqzOB&V#qZrEoQT3~q)mz}MkEco2RDPayyyBMd|bVIgdUg9IaSND?AO
z)*uB)2~v$TAZ<t|atj$mCXlxn9EOHrVptewj4vh<!^14atif!<lw*!ynlT-iTbLot
zB<3TQiq*iHVV$sk*cfawHW!<ZEy31en}4vEuzlDO>}wnj$G{ok9B{t4SX?S@C2kvT
zAFdI19@m2##!cbzcs0Bk-UT0w=i(*!e0&-H82%i-7e9i3Lm(5h2{r_8LL5Ov*gz;D
z93`A3^b$r1GeiZV0nv#VOym=n6N`v7#5Up$;s|kuq)0L%xsW1AsigI!Qc?ry5`XCd
z=_Q#=)+IZVL&-w&I&vxbIQa^Bi2RnKL@}jsDDf02Wjp0C<viss<t3F$HKe*x<ERqq
zc4{5<BJ~mVjT}wRLe5W)FSk~%Late^SMIqyQQkn_U4F6r3i%TGlkzv@ClrVZh6)@7
zuEH9H3WZY&0}4}$G(~I0V8sl@ZGVbK6|X9eDdCk2mAsVrN_k3$lrAa_(-4{-jYH$n
zHqvTnmuMq&9NmcSM^B{}(tn_L(<haclx>xxl$R-2D4$UtWFQPfh94uHQN%dG=x4lB
z(Nu9)5vXicX;A4^nO2>n>ZU4CEl_P#?NfcH##HlCOH<pa)}r=M9iwil9)GHytG-|T
zlKR9P`W)vuyg3DPPRzNd0c)6QglVkQIHb{~F{P=c>7$vYS*CeWb3%)u<))RYwOi|~
z*0?rJd%m_%d$;yE?Was-raLp8S<38SPU>jr`07Y?4(fF4%;*~FM(S?RZPb0JN77^K
zCF$+fYuB69*VYfxU!`BKe}B(_Xuvi|G1zO+X)tYQWEgF@*|5cM%t+P9&uE2Fz0m_>
zs<Er_QsZjl+a@>@wn>`FK9ifKu&JGCifM)E4Kvux-b`q=&#cEBYwl<+GOsotU{P4^
ztQ=N7Ysi9O5ooc&qQ&C5rM_jH<xa~^%a2xeR_RtXR`;!yto^MwSbw)!|7l}t!?UTd
zxjmOU*L&{Txvg_w*qYf2Z1>yVv7^}q*=@FKxBFo4U@x|Bupf8OcSvxkbQoaM*&*z0
z>?@8~M-Rufj;9^pI@vo(oK86X;mmSQb3W=kHqU6DU|!9<VHaH&uFFA}!THSj3G)xk
zA9U4m<+@h8K6cY{<A1x=x{bP<xTm@wbARq(<stTH@|fm0aaMEAdm^4bo&}!WUP@k(
zUgchoymh^kz3aUvee8Tz`keR0`Ud#!^d0ci^yB%}`Azye_^<Zw2%rRn2b2dq4m1rE
z2et*lLH<Fzf*vd|SRh)^5)6X<f_DW!3^58>8uD`}E;J;xB7gKrn045yu+DH=_>%CW
z;jbe+B8npJM;b>;Bip0oqvE6LqNbxgql=>lV=QA<$6Sw9j}^wY#^K|l;%eij7J4n*
zvv4HdE<QiLf05CmWs9yZR$rXH_{<XdCEO(^6R-)<2}cv&bA!3n+^Iyr#LC1;9*4J=
z_l)nx-_0KvxPJ(W1*1tWNySNH$u7yelE+hAQ%X`MgdAbH@I|U`YE|lVT5#Iov`^{L
z>5UnLjD(C+A|+9ps3TJ=b6I9jmRVMQ*5Fd7rF)i6iUY*8*--YP>{baK{h8{L8cR1x
zhjQlUROGzLjmkZ_OmUfLS=VyY<y)7JuJB&*{YuPA-hayWRXVHIuNqqIzWU%AXiegp
z_O*Iz^VW{6^I3OfJ!yT~`d>C!Z7AOGYGd@qwmi+eb$P>^d^XkR%jJvn2R1uzuG)gx
zBHYrwb?(-(tse{c1=k9#3QG##Z{uyd_MP>2rQdzpp0vHY$i8U*4%`mWj{cplJC77A
z7OyBC-hUOet9dtbcfsygdzS3ET4GyLwU@M4x_7WNu(Y*Izida@`|_0Xz6y_u#!8LK
zt(DXJ`1^YIyX|kN(yS`1dUrs0;LbsxgU!{3)g^~;hjI=*sfnuT{GR=NU9Ea;VeN;*
zqQiqn!j5#*In>o1)i_#I57$fU$B)GyyZM9X4}Yx<tcHV)jK;#_;JEbo(;pLl>^~83
zqWvWMWW!GeKUFr-nhKhs=H<<kEh#O7t+A~=r~FT~w>h^p{cQ2`;nO;&E6ymNDLP9!
zn|JopxfSQ8&S#yUxR88dxP3|c{fjXdZ+C=tbYBX%bmg-5<%^x}o#(E&TseK!>FTL#
z?0;)5*X^%2ciD9{{bKh^Q@4G0^9_d^tv4NSw)M>GIos>nd*PPnt;@IlZeQ<P(AU!+
z*?(sseqitp|IXOm^t&(a<=mUOzwQC{LBT_Xhb50R9##Kp@@wOu{ot7)&!Miz;g9bR
z^M;@Omi^oNk-R6=CnclWqjh68W2eWx$A51=UHEk5S=O_eiTvLcf3JLQ{QRds-2UjA
zjF}vHA%5}c&uuT&ULJmB`>K5^Wa`oDjMp>M1#i^e9C^!r+xaf~-RMm2d;I&-4<;Yl
zJ_dYz@G0Zdr@sILoAdna&gY5%000SaNLh0L01FcU01FcV0GgZ_00068Nkl<ZIDZkX
z(@#hgVI0Qs8I=@Q$_P>rWiHX7i?IYjht_|1h(ZwY5W=P)^anCYqK-jykic6<=Mdsa
z1R=zr5>YfZ+R#D}Nv)s=V%yL$)1AK0HUn<%Ze#So$M=0_-uLH^nOQR&4jTbez`kpk
z^JE;0#bOz2Z4R1KZ0tu}kOTWEe1DRH2k_;87B(r?02fbDg1iaZaWPenBY`4Zz&YfM
zHU-H+HdWvSZlVqEu!ec;Nsx|Db7~w%v5a~gMj1XLYw~qm$%*@j?mBsv`54swTYN><
zm^r@Vd+ff2!mOtZW4dO0XQy@j$G67KpD))<vn1rY;}!3hCjI??7QV=h2Y=AZdV^Yo
z;Ae!%a)Yzg*Ztiw%Jhw7#-{isUGkst3FfnSglXKt6dWjVG^4dA=?wQKe-}*@m>YM?
zOJ5CziU+y3g6QY!W7iqeg=-kqiM~x0e1d93q0X;BKaL3)P0m(_MiMVixusW=n;&j0
zE_AYPNnbUL9*us-mzmqp4}YNxxA7QNc!=H6<5428kEBxP>2i=q@S62=SV({DYnl)p
z&`X=~=GvGoE8ay*&y%8B>JezP^hfbK{={6LPCL#ZS5a=IyV7V=?2z}eY}Qd&uwj_4
zyZ6=VM!rz+8TTVdAP&o;buIsF)$f?~zS6?(0q;bF(ZVPqD$4k89U1H3-|`FN`HLE$
S)6Z@I0000<MNUMnLSTYfUr?6-

delta 404
zcmV;F0c-xF8Lb15BYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz
zPf0{URCwC7ltD_vP!NVE#idYpT}iWXDRhwo1bTtoz}Jmi(;Ik%_5_V5P*2dh&!Vo~
zSX{Yl5iArj{v-cLjA@A>85kaUknjET&%EblSte~nM_P(+aDNa4x0-Dzenv)s&zb^z
z<}sjiEFm&U({$9N#}RUgbU5Uy5yb%Y6-e+ka_|pEj0&g4%_FW8DwYG_1+#2l_JJ+d
zRb`&<K4iRkm)>U<y`G+_s73GP>7i&vS4$#T6`ve}4!1kGeA~+L-@BCnJ}OQ{mu0C9
z4!+%#L7}eC@qe^2brhm@`YI6cX{Q7l?}J*ixGo8D0Nv+$6z9h+Av7uLa3QR*A^&rz
zVg~pl#rgT>X-N}6#})c!Hu&l%phCD9^q0p~1Aq%ERVzZkH>#Lk|1{96^K1fS*MFV!
y+UNHG;8opcGvXAO*9yI31*=+CRE;kI1^{MhiFxmFkqwIg0000<MNUMnLSTY5a<<|C

diff --git a/indra/newview/skins/default/textures/icons/Parcel_Fly_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_Fly_Dark.png
index ed4a512e04a419639f9695670697bca7dee85bb1..c27f18e3c745b985d3024548b5c7073b9fca28bb 100644
GIT binary patch
delta 3072
zcmV+b4FB_w0)-fmBYz4*X+uL$Nkc;*P;zf(X>4Tx0C)kNmUmQBSrfqTdoR7v5<-y@
zdJRoV0Fe@UkzPe5BmqJR7!t5oL<LtA6={khiy|(#x)fO}qF7iI6tFMIBA~2`tB8ta
zU-TSh|JeP$v-8KC-<vyg@7$TW=R5!?zJWqfCaeHJhDag~^MCPR#>B=k@!bFhM1TX<
z0C0KPSwZ365dalGFAg&sb&|16pwIes{};H$@(p1!Kb!u4rO3+?OVFJ{(2%)&K{gNN
zJe1ROC0R22B+B%}G#SGf8H>>bQC5|4@)tJ$?DK`)WX#VH@lhXH&RP5nzKlCi-jX8~
zpo|2foS!2U<bR@k8)f};X@(HxHz?CH1l()@Fcg_xBH*Q<Y=tsK91+Grc^&`+O7bjD
zoW&BsGBi&BIGI_?#lqwi3DcNo!nAgDWHWsQx#<FlgcZW&rE$f4CMPo^iz`|Vz?VDA
zqJWaDwoJ6h_STN}_ADC<wESP?Ul+f6{X58d`^DpB=zr&)L5!|%wr{cDY?;*nu&2=4
z?D%F&ECZlr69B6BzS;B-03e?SK=X}R_hHE9B}F31a<a6{&CRtC3V0T>f_|0%>G0L_
zpJCQ{7P9lc){f~ZNa9M<B}`dSd70^%QZX|-i^~%*S$`X1bnE{dI4iALd6<U@k_2Lb
z2t6taoqsZ+C>d?Hh%b}~Geu0H=$|_LAH!zlAj2<njRLLaBcLy_017wg0QtQOU}$83
z#P3H}ps#%kBt`+*%Zt_?{WA9`qwAmb-xOSge!|(pWTwo_35#Izq~aVIqi;f{uz&>Q
z0Uf9TEuaUC0Snjw2jC3cfEVxw!5{*}g2jLbQhz`O5QAK>3akhDpb+c;dq6p;0yUrx
zG=LMJ1)K&Kz-4e9+ys5#J{SZe;2D?%ufYriL3oG?(I7QQ8!~{*ARCAc&4;|8Kqw4~
zg%Y4-NCZitRnSJL5Gsbsp@UEz^doc%x&U2;dZ4?|5Ht?`3B7|6m;%#bP1q2&gxRn=
z9De{uz>DBycqzOB&V#qZrEoQT3~q)mz}MkEco2RDPayyyBMd|bVIgdUg9IaSND?AO
z)*uB)2~v$TAZ<t|atj$mCXlxn9EOHrVptewj4vh<!^14atif!<lw*!ynlT-iTbLot
zB<3TQiq*iHVV$sk*cfawHW!<ZEy31en}4vEuzlDO>}wnj$G{ok9B{t4SX?S@C2kvT
zAFdI19@m2##!cbzcs0Bk-UT0w=i(*!e0&-H82%i-7e9i3Lm(5h2{r_8LL5Ov*gz;D
z93`A3^b$r1GeiZV0nv#VOym=n6N`v7#5Up$;s|kuq)0L%xsW1AsigI!Qc?ry5`XCd
z=_Q#=)+IZVL&-w&I&vxbIQa^Bi2RnKL@}jsDDf02Wjp0C<viss<t3F$HKe*x<ERqq
zc4{5<BJ~mVjT}wRLe5W)FSk~%Late^SMIqyQQkn_U4F6r3i%TGlkzv@ClrVZh6)@7
zuEH9H3WZY&0}4}$G(~I0V8sl@ZGVbK6|X9eDdCk2mAsVrN_k3$lrAa_(-4{-jYH$n
zHqvTnmuMq&9NmcSM^B{}(tn_L(<haclx>xxl$R-2D4$UtWFQPfh94uHQN%dG=x4lB
z(Nu9)5vXicX;A4^nO2>n>ZU4CEl_P#?NfcH##HlCOH<pa)}r=M9iwil9)GHytG-|T
zlKR9P`W)vuyg3DPPRzNd0c)6QglVkQIHb{~F{P=c>7$vYS*CeWb3%)u<))RYwOi|~
z*0?rJd%m_%d$;yE?Was-raLp8S<38SPU>jr`07Y?4(fF4%;*~FM(S?RZPb0JN77^K
zCF$+fYuB69*VYfxU!`BKe}B(_Xuvi|G1zO+X)tYQWEgF@*|5cM%t+P9&uE2Fz0m_>
zs<Er_QsZjl+a@>@wn>`FK9ifKu&JGCifM)E4Kvux-b`q=&#cEBYwl<+GOsotU{P4^
ztQ=N7Ysi9O5ooc&qQ&C5rM_jH<xa~^%a2xeR_RtXR`;!yto^MwSbw)!|7l}t!?UTd
zxjmOU*L&{Txvg_w*qYf2Z1>yVv7^}q*=@FKxBFo4U@x|Bupf8OcSvxkbQoaM*&*z0
z>?@8~M-Rufj;9^pI@vo(oK86X;mmSQb3W=kHqU6DU|!9<VHaH&uFFA}!THSj3G)xk
zA9U4m<+@h8K6cY{<A1x=x{bP<xTm@wbARq(<stTH@|fm0aaMEAdm^4bo&}!WUP@k(
zUgchoymh^kz3aUvee8Tz`keR0`Ud#!^d0ci^yB%}`Azye_^<Zw2%rRn2b2dq4m1rE
z2et*lLH<Fzf*vd|SRh)^5)6X<f_DW!3^58>8uD`}E;J;xB7gKrn045yu+DH=_>%CW
z;jbe+B8npJM;b>;Bip0oqvE6LqNbxgql=>lV=QA<$6Sw9j}^wY#^K|l;%eij7J4n*
zvv4HdE<QiLf05CmWs9yZR$rXH_{<XdCEO(^6R-)<2}cv&bA!3n+^Iyr#LC1;9*4J=
z_l)nx-_0KvxPJ(W1*1tWNySNH$u7yelE+hAQ%X`MgdAbH@I|U`YE|lVT5#Iov`^{L
z>5UnLjD(C+A|+9ps3TJ=b6I9jmRVMQ*5Fd7rF)i6iUY*8*--YP>{baK{h8{L8cR1x
zhjQlUROGzLjmkZ_OmUfLS=VyY<y)7JuJB&*{YuPA-hayWRXVHIuNqqIzWU%AXiegp
z_O*Iz^VW{6^I3OfJ!yT~`d>C!Z7AOGYGd@qwmi+eb$P>^d^XkR%jJvn2R1uzuG)gx
zBHYrwb?(-(tse{c1=k9#3QG##Z{uyd_MP>2rQdzpp0vHY$i8U*4%`mWj{cplJC77A
z7OyBC-hUOet9dtbcfsygdzS3ET4GyLwU@M4x_7WNu(Y*Izida@`|_0Xz6y_u#!8LK
zt(DXJ`1^YIyX|kN(yS`1dUrs0;LbsxgU!{3)g^~;hjI=*sfnuT{GR=NU9Ea;VeN;*
zqQiqn!j5#*In>o1)i_#I57$fU$B)GyyZM9X4}Yx<tcHV)jK;#_;JEbo(;pLl>^~83
zqWvWMWW!GeKUFr-nhKhs=H<<kEh#O7t+A~=r~FT~w>h^p{cQ2`;nO;&E6ymNDLP9!
zn|JopxfSQ8&S#yUxR88dxP3|c{fjXdZ+C=tbYBX%bmg-5<%^x}o#(E&TseK!>FTL#
z?0;)5*X^%2ciD9{{bKh^Q@4G0^9_d^tv4NSw)M>GIos>nd*PPnt;@IlZeQ<P(AU!+
z*?(sseqitp|IXOm^t&(a<=mUOzwQC{LBT_Xhb50R9##Kp@@wOu{ot7)&!Miz;g9bR
z^M;@Omi^oNk-R6=CnclWqjh68W2eWx$A51=UHEk5S=O_eiTvLcf3JLQ{QRds-2UjA
zjF}vHA%5}c&uuT&ULJmB`>K5^Wa`oDjMp>M1#i^e9C^!r+xaf~-RMm2d;I&-4<;Yl
zJ_dYz@G0Zdr@sILoAdna&gY5%000SaNLh0L01FcU01FcV0GgZ_0004KNkl<ZIDZkf
z)W1staTv#O&3-`*1yM^vt<}&_6jX2!)E^)cfq_9S4bk4vTC@ZWH8r#p5z*8Va!}${
z)LP(T1R6om;38b_4=Lz*r(fv$z)LxOp69;jeb2CM+aZIrP!q!|p4|18Ww}2Jslg<p
z6zyT%q*yhkgXgFn#=DwKVmf$;VSf&;(2Axp8QjK{5qzP5DJ-I4OwQiPgh}MEflcTq
z`M@JQ(`?1lbZOi4;{kE>p$EDG-}tR~fR0@xt2(vn6w=V@v+#}Aig&1fL(<hX#&H5s
zbYTrj`|n%rYxRnk_-Y?&%%d9`P>FWL3zo3}^{(I;XQ+u*tUG>(^YS+;x_Lyge5@x;
zyFgFg0W?ex$_;ukfx76d*BHbtbc0G*MF+GCj!=oNMDB5ld8AMm4c^8qKA}sT!3nnT
zjYjbtss;^CL%ZM*8I0o@e~Jd{(jw5!yFefbJC6PWf{)ie4&*HVHuwiwnm%1oVBF~d
O0000<MNUMnLSTZIfB4P-

delta 244
zcmV<Q01N+x7>@#wBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUy
zu}MThRCwBA{Qv(y11$g(1C0RK-~$H^^n)-hT&w`Z1wg~+Q`_JKAie;ifrjT(!(c{O
z<N*!j2T?$50J6Zr!C@iA215-E0OAKgya9*>NHC)S=!l8vf^95NdI8kn4?sKth#RmN
z@BoUD!3Ss%GT<^;0F7qAVekPg;veuCoB+ij%>_6Nc7S4R24AFG<RRxgn4t?OH54W1
uAsL!T?VPuPT85&8@z5&WhLpho0R{jo?n8D5`;B4%0000<MNUMnLSTZ|AzuOj

-- 
GitLab


From fb531ffd6bea24290362fd58dd6ff6e99f8b1177 Mon Sep 17 00:00:00 2001
From: Ramzi Linden <ramzi@lindenlab.com>
Date: Sat, 30 Jan 2010 14:25:23 -0800
Subject: [PATCH 372/521] DEV-43688 Cycle3 JA, FR, DE (minor spacing
 corrections)

---
 indra/newview/skins/default/xui/de/strings.xml | 4 ++--
 indra/newview/skins/default/xui/fr/strings.xml | 4 ++--
 indra/newview/skins/default/xui/ja/strings.xml | 4 ++--
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
index 8fd1c59ca0b..858bbf27b11 100644
--- a/indra/newview/skins/default/xui/de/strings.xml
+++ b/indra/newview/skins/default/xui/de/strings.xml
@@ -1486,8 +1486,8 @@
 	<string name="covenant_last_modified">
 		Zuletzt geändert:
 	</string>
-	<string name="none_text" value=" (keiner)"/>
-	<string name="never_text" value=" (nie)"/>
+	<string name="none_text" value=" (keiner) "/>
+	<string name="never_text" value=" (nie) "/>
 	<string name="GroupOwned">
 		In Gruppenbesitz
 	</string>
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index c6f73dde212..1888dc1827b 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -1486,8 +1486,8 @@
 	<string name="covenant_last_modified">
 		Dernière modification :
 	</string>
-	<string name="none_text" value=" (aucun)"/>
-	<string name="never_text" value=" (jamais)"/>
+	<string name="none_text" value=" (aucun) "/>
+	<string name="never_text" value=" (jamais) "/>
 	<string name="GroupOwned">
 		Propriété du groupe
 	</string>
diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml
index d2a1977fc97..288ad4bc1d0 100644
--- a/indra/newview/skins/default/xui/ja/strings.xml
+++ b/indra/newview/skins/default/xui/ja/strings.xml
@@ -1486,8 +1486,8 @@
 	<string name="covenant_last_modified">
 		最終修正日:
 	</string>
-	<string name="none_text" value=" (なし)"/>
-	<string name="never_text" value=" (無)"/>
+	<string name="none_text" value=" (なし) "/>
+	<string name="never_text" value=" (無) "/>
 	<string name="GroupOwned">
 		グループ所有
 	</string>
-- 
GitLab


From 2ae22a481d45e8c6634cc250386ca4cf488e635c Mon Sep 17 00:00:00 2001
From: Ramzi Linden <ramzi@lindenlab.com>
Date: Sat, 30 Jan 2010 14:37:21 -0800
Subject: [PATCH 373/521] DEV-43688 resident translations for DA (set4-set5),
 resident translations for PL (set1 thru set4), resident translations for IT
 (set1 thru set6) (I can promise this is the last weekend I work for LL. Peace
 Love & Hope 2010.)

---
 .../skins/default/xui/da/floater_activeim.xml |    2 +
 .../skins/default/xui/da/floater_auction.xml  |   14 +-
 .../default/xui/da/floater_avatar_picker.xml  |   44 +-
 .../default/xui/da/floater_bulk_perms.xml     |   64 +-
 .../skins/default/xui/da/floater_bumps.xml    |   29 +-
 .../default/xui/da/floater_buy_object.xml     |    8 +-
 .../skins/default/xui/da/floater_camera.xml   |   19 +-
 .../default/xui/da/floater_color_picker.xml   |   12 +-
 .../skins/default/xui/da/floater_gesture.xml  |   37 +-
 .../skins/default/xui/da/floater_hud.xml      |    4 +-
 .../default/xui/da/floater_im_session.xml     |    9 +
 .../default/xui/da/floater_land_holdings.xml  |    4 +-
 .../default/xui/da/floater_live_lsleditor.xml |   21 +-
 .../default/xui/da/floater_mem_leaking.xml    |   16 +-
 .../skins/default/xui/da/floater_moveview.xml |   45 +-
 .../default/xui/da/floater_my_friends.xml     |    6 +-
 .../default/xui/da/floater_perm_prefs.xml     |    2 +-
 .../skins/default/xui/da/floater_postcard.xml |   12 +-
 .../default/xui/da/floater_preferences.xml    |   19 +-
 .../xui/da/floater_preview_animation.xml      |   11 +-
 .../xui/da/floater_preview_classified.xml     |    8 +-
 .../default/xui/da/floater_preview_sound.xml  |   11 +-
 .../default/xui/da/floater_region_info.xml    |    4 +-
 .../default/xui/da/floater_script_queue.xml   |   21 +-
 .../skins/default/xui/da/floater_search.xml   |   16 +
 .../default/xui/da/floater_select_key.xml     |    6 +-
 .../default/xui/da/floater_sound_preview.xml  |    6 +-
 .../default/xui/da/floater_texture_ctrl.xml   |   22 +-
 .../skins/default/xui/da/floater_tools.xml    |  585 ++--
 .../default/xui/da/floater_voice_controls.xml |   25 +
 .../default/xui/da/floater_world_map.xml      |  120 +-
 .../skins/default/xui/da/inspect_avatar.xml   |   21 +
 .../skins/default/xui/da/inspect_group.xml    |   22 +
 .../default/xui/da/inspect_remote_object.xml  |   13 +
 .../default/xui/da/menu_attachment_other.xml  |   17 +
 .../default/xui/da/menu_attachment_self.xml   |   12 +
 .../skins/default/xui/da/menu_avatar_icon.xml |    7 +
 .../default/xui/da/menu_avatar_other.xml      |   16 +
 .../skins/default/xui/da/menu_avatar_self.xml |   27 +
 .../skins/default/xui/da/menu_bottomtray.xml  |   12 +
 .../skins/default/xui/da/menu_favorites.xml   |   10 +
 .../default/xui/da/menu_gesture_gear.xml      |   10 +
 .../skins/default/xui/da/menu_group_plus.xml  |    5 +
 .../skins/default/xui/da/menu_hide_navbar.xml |    5 +
 .../default/xui/da/menu_imchiclet_adhoc.xml   |    4 +
 .../default/xui/da/menu_imchiclet_group.xml   |    6 +
 .../default/xui/da/menu_imchiclet_p2p.xml     |    7 +
 .../xui/da/menu_inspect_avatar_gear.xml       |   17 +
 .../xui/da/menu_inspect_object_gear.xml       |   17 +
 .../default/xui/da/menu_inspect_self_gear.xml |    8 +
 .../xui/da/menu_inventory_gear_default.xml    |   14 +
 .../skins/default/xui/da/menu_land.xml        |    9 +
 .../skins/default/xui/da/menu_landmark.xml    |    7 +
 .../skins/default/xui/da/menu_login.xml       |   33 +-
 .../skins/default/xui/da/menu_mini_map.xml    |    3 +-
 .../skins/default/xui/da/menu_navbar.xml      |   11 +
 .../skins/default/xui/da/menu_nearby_chat.xml |    9 +
 .../skins/default/xui/da/menu_object.xml      |   24 +
 .../skins/default/xui/da/menu_object_icon.xml |    5 +
 .../default/xui/da/menu_participant_list.xml  |   16 +
 .../xui/da/menu_people_friends_view_sort.xml  |    7 +
 .../xui/da/menu_people_groups_view_sort.xml   |    5 +
 .../default/xui/da/menu_people_nearby.xml     |   10 +
 .../xui/da/menu_people_nearby_multiselect.xml |    8 +
 .../xui/da/menu_people_nearby_view_sort.xml   |    8 +
 .../xui/da/menu_people_recent_view_sort.xml   |    7 +
 .../skins/default/xui/da/menu_picks_plus.xml  |    5 +
 .../skins/default/xui/da/menu_place.xml       |    7 +
 .../default/xui/da/menu_place_add_button.xml  |    5 +
 .../xui/da/menu_places_gear_folder.xml        |   15 +
 .../default/xui/da/menu_profile_overflow.xml  |    5 +
 .../skins/default/xui/da/menu_slurl.xml       |    8 +-
 .../xui/da/menu_teleport_history_gear.xml     |    6 +
 .../xui/da/menu_teleport_history_item.xml     |    6 +
 .../xui/da/menu_teleport_history_tab.xml      |    5 +
 .../skins/default/xui/da/menu_text_editor.xml |    8 +
 .../skins/default/xui/da/menu_url_agent.xml   |    6 +
 .../skins/default/xui/da/menu_url_group.xml   |    6 +
 .../skins/default/xui/da/menu_url_http.xml    |    7 +
 .../default/xui/da/menu_url_inventory.xml     |    6 +
 .../skins/default/xui/da/menu_url_map.xml     |    6 +
 .../default/xui/da/menu_url_objectim.xml      |    8 +
 .../skins/default/xui/da/menu_url_parcel.xml  |    6 +
 .../skins/default/xui/da/menu_url_slapp.xml   |    5 +
 .../skins/default/xui/da/menu_url_slurl.xml   |    7 +
 .../default/xui/da/menu_url_teleport.xml      |    6 +
 .../skins/default/xui/da/menu_viewer.xml      |  493 +--
 .../skins/default/xui/da/mime_types_mac.xml   |  217 ++
 .../skins/default/xui/da/notifications.xml    |  990 +++---
 .../default/xui/da/panel_avatar_list_item.xml |   25 +
 .../default/xui/da/panel_classified_info.xml  |   22 +
 .../default/xui/da/panel_edit_classified.xml  |   33 +
 .../skins/default/xui/da/panel_edit_hair.xml  |   12 +
 .../default/xui/da/panel_edit_profile.xml     |   91 +-
 .../skins/default/xui/da/panel_edit_shape.xml |   23 +
 .../skins/default/xui/da/panel_edit_shirt.xml |   10 +
 .../skins/default/xui/da/panel_edit_skirt.xml |   10 +
 .../default/xui/da/panel_edit_tattoo.xml      |    8 +
 .../default/xui/da/panel_group_list_item.xml  |    4 +
 .../default/xui/da/panel_group_notify.xml     |    8 +
 .../default/xui/da/panel_group_roles.xml      |   14 +-
 .../default/xui/da/panel_im_control_panel.xml |   13 +
 .../default/xui/da/panel_landmark_info.xml    |   37 +
 .../skins/default/xui/da/panel_landmarks.xml  |   14 +
 .../skins/default/xui/da/panel_login.xml      |   54 +-
 .../da/panel_media_settings_permissions.xml   |   20 +
 .../default/xui/da/panel_navigation_bar.xml   |   15 +
 .../skins/default/xui/da/panel_notes.xml      |   23 +
 .../xui/da/panel_outfits_inventory.xml        |    7 +
 .../panel_outfits_inventory_gear_default.xml  |    9 +
 .../skins/default/xui/da/panel_people.xml     |   53 +
 .../skins/default/xui/da/panel_picks.xml      |   20 +
 .../skins/default/xui/da/panel_places.xml     |   14 +
 .../xui/da/panel_preferences_privacy.xml      |   49 +-
 .../xui/da/panel_preferences_setup.xml        |   58 +-
 .../skins/default/xui/da/panel_profile.xml    |   37 +
 .../default/xui/da/panel_region_covenant.xml  |    6 +-
 .../default/xui/da/panel_region_debug.xml     |   51 +-
 .../default/xui/da/panel_region_texture.xml   |   24 +-
 .../skins/default/xui/da/panel_script_ed.xml  |   43 +
 .../skins/default/xui/da/panel_side_tray.xml  |   26 +
 .../xui/da/panel_stand_stop_flying.xml        |    6 +
 .../default/xui/da/panel_teleport_history.xml |   14 +
 .../default/xui/da/sidepanel_item_info.xml    |   70 +
 .../default/xui/da/sidepanel_task_info.xml    |  119 +
 .../newview/skins/default/xui/da/strings.xml  |    2 +-
 .../skins/default/xui/it/floater_about.xml    |   69 +-
 .../default/xui/it/floater_about_land.xml     |  476 ++-
 .../skins/default/xui/it/floater_activeim.xml |    2 +
 .../xui/it/floater_animation_preview.xml      |  216 +-
 .../skins/default/xui/it/floater_auction.xml  |   14 +-
 .../default/xui/it/floater_avatar_picker.xml  |   53 +-
 .../xui/it/floater_avatar_textures.xml        |   50 +-
 .../skins/default/xui/it/floater_beacons.xml  |   26 +-
 .../default/xui/it/floater_build_options.xml  |   13 +-
 .../default/xui/it/floater_bulk_perms.xml     |   64 +-
 .../skins/default/xui/it/floater_bumps.xml    |   27 +-
 .../default/xui/it/floater_buy_contents.xml   |    5 +-
 .../default/xui/it/floater_buy_currency.xml   |   80 +-
 .../skins/default/xui/it/floater_buy_land.xml |   47 +-
 .../default/xui/it/floater_buy_object.xml     |    4 +-
 .../skins/default/xui/it/floater_camera.xml   |   19 +-
 .../default/xui/it/floater_color_picker.xml   |   13 +-
 .../default/xui/it/floater_customize.xml      |  202 +-
 .../xui/it/floater_device_settings.xml        |    2 +-
 .../default/xui/it/floater_env_settings.xml   |    6 +-
 .../skins/default/xui/it/floater_gesture.xml  |   28 +-
 .../xui/it/floater_hardware_settings.xml      |   21 +-
 .../default/xui/it/floater_help_browser.xml   |    8 +
 .../skins/default/xui/it/floater_im.xml       |    2 +-
 .../default/xui/it/floater_im_container.xml   |    2 +
 .../default/xui/it/floater_im_session.xml     |    9 +
 .../default/xui/it/floater_image_preview.xml  |   22 +-
 .../default/xui/it/floater_incoming_call.xml  |   21 +
 .../skins/default/xui/it/floater_inspect.xml  |   17 +-
 .../default/xui/it/floater_inventory.xml      |   57 +-
 .../it/floater_inventory_item_properties.xml  |   82 +-
 .../skins/default/xui/it/floater_joystick.xml |   42 +-
 .../skins/default/xui/it/floater_lagmeter.xml |  221 +-
 .../default/xui/it/floater_land_holdings.xml  |    6 +-
 .../default/xui/it/floater_live_lsleditor.xml |   19 +-
 .../default/xui/it/floater_lsl_guide.xml      |    4 +-
 .../default/xui/it/floater_media_settings.xml |    6 +
 .../default/xui/it/floater_mem_leaking.xml    |    2 +-
 .../skins/default/xui/it/floater_moveview.xml |   42 +-
 .../default/xui/it/floater_mute_object.xml    |    8 +-
 .../default/xui/it/floater_nearby_chat.xml    |    2 +
 .../default/xui/it/floater_openobject.xml     |    2 +-
 .../default/xui/it/floater_outgoing_call.xml  |   28 +
 .../skins/default/xui/it/floater_pay.xml      |   32 +-
 .../default/xui/it/floater_pay_object.xml     |   37 +-
 .../default/xui/it/floater_perm_prefs.xml     |    2 +-
 .../skins/default/xui/it/floater_postcard.xml |   14 +-
 .../default/xui/it/floater_preferences.xml    |   16 +-
 .../xui/it/floater_preview_animation.xml      |    7 +-
 .../xui/it/floater_preview_classified.xml     |    6 +-
 .../default/xui/it/floater_preview_event.xml  |    6 +-
 .../xui/it/floater_preview_gesture.xml        |   60 +-
 .../xui/it/floater_preview_gesture_info.xml   |    2 +
 .../it/floater_preview_gesture_shortcut.xml   |   15 +
 .../xui/it/floater_preview_gesture_steps.xml  |    2 +
 .../xui/it/floater_preview_notecard.xml       |   22 +-
 .../default/xui/it/floater_preview_sound.xml  |    7 +-
 .../xui/it/floater_preview_texture.xml        |   37 +-
 .../default/xui/it/floater_region_info.xml    |    2 +-
 .../default/xui/it/floater_report_abuse.xml   |  100 +-
 .../xui/it/floater_script_debug_panel.xml     |    2 +
 .../default/xui/it/floater_script_preview.xml |    3 +
 .../default/xui/it/floater_script_queue.xml   |   17 +-
 .../default/xui/it/floater_script_search.xml  |   10 +-
 .../skins/default/xui/it/floater_search.xml   |   16 +
 .../default/xui/it/floater_select_key.xml     |    2 +-
 .../default/xui/it/floater_sell_land.xml      |  126 +-
 .../default/xui/it/floater_settings_debug.xml |    8 +-
 .../skins/default/xui/it/floater_snapshot.xml |   75 +-
 .../skins/default/xui/it/floater_stats.xml    |   71 +
 .../skins/default/xui/it/floater_sys_well.xml |    9 +
 .../skins/default/xui/it/floater_telehub.xml  |   19 +-
 .../default/xui/it/floater_texture_ctrl.xml   |   14 +-
 .../skins/default/xui/it/floater_tools.xml    |  623 ++--
 .../default/xui/it/floater_top_objects.xml    |   10 +-
 .../skins/default/xui/it/floater_tos.xml      |    3 +-
 .../default/xui/it/floater_voice_controls.xml |   25 +
 .../skins/default/xui/it/floater_water.xml    |   45 +-
 .../xui/it/floater_whitelist_entry.xml        |    9 +
 .../default/xui/it/floater_world_map.xml      |  125 +-
 .../skins/default/xui/it/inspect_avatar.xml   |   21 +
 .../skins/default/xui/it/inspect_group.xml    |   22 +
 .../skins/default/xui/it/inspect_object.xml   |   34 +
 .../default/xui/it/inspect_remote_object.xml  |   13 +
 .../default/xui/it/menu_attachment_other.xml  |   17 +
 .../default/xui/it/menu_attachment_self.xml   |   12 +
 .../skins/default/xui/it/menu_avatar_icon.xml |    7 +
 .../default/xui/it/menu_avatar_other.xml      |   16 +
 .../skins/default/xui/it/menu_avatar_self.xml |   27 +
 .../skins/default/xui/it/menu_bottomtray.xml  |   12 +
 .../skins/default/xui/it/menu_favorites.xml   |   10 +
 .../default/xui/it/menu_gesture_gear.xml      |   10 +
 .../skins/default/xui/it/menu_group_plus.xml  |    5 +
 .../skins/default/xui/it/menu_hide_navbar.xml |    5 +
 .../default/xui/it/menu_imchiclet_adhoc.xml   |    4 +
 .../default/xui/it/menu_imchiclet_group.xml   |    6 +
 .../default/xui/it/menu_imchiclet_p2p.xml     |    7 +
 .../xui/it/menu_inspect_avatar_gear.xml       |   17 +
 .../xui/it/menu_inspect_object_gear.xml       |   17 +
 .../default/xui/it/menu_inspect_self_gear.xml |    8 +
 .../skins/default/xui/it/menu_inventory.xml   |   24 +-
 .../default/xui/it/menu_inventory_add.xml     |   32 +
 .../xui/it/menu_inventory_gear_default.xml    |   14 +
 .../skins/default/xui/it/menu_land.xml        |    9 +
 .../skins/default/xui/it/menu_landmark.xml    |    7 +
 .../skins/default/xui/it/menu_login.xml       |   27 +-
 .../skins/default/xui/it/menu_mini_map.xml    |    3 +-
 .../skins/default/xui/it/menu_navbar.xml      |   11 +
 .../skins/default/xui/it/menu_nearby_chat.xml |    9 +
 .../skins/default/xui/it/menu_object.xml      |   24 +
 .../skins/default/xui/it/menu_object_icon.xml |    5 +
 .../default/xui/it/menu_participant_list.xml  |   16 +
 .../xui/it/menu_people_friends_view_sort.xml  |    7 +
 .../xui/it/menu_people_groups_view_sort.xml   |    5 +
 .../default/xui/it/menu_people_nearby.xml     |   10 +
 .../xui/it/menu_people_nearby_multiselect.xml |    8 +
 .../xui/it/menu_people_nearby_view_sort.xml   |    8 +
 .../xui/it/menu_people_recent_view_sort.xml   |    7 +
 .../skins/default/xui/it/menu_picks.xml       |    8 +
 .../skins/default/xui/it/menu_picks_plus.xml  |    5 +
 .../skins/default/xui/it/menu_place.xml       |    7 +
 .../default/xui/it/menu_place_add_button.xml  |    5 +
 .../xui/it/menu_places_gear_folder.xml        |   15 +
 .../xui/it/menu_places_gear_landmark.xml      |   18 +
 .../default/xui/it/menu_profile_overflow.xml  |    5 +
 .../skins/default/xui/it/menu_slurl.xml       |    2 +-
 .../xui/it/menu_teleport_history_gear.xml     |    6 +
 .../xui/it/menu_teleport_history_item.xml     |    6 +
 .../xui/it/menu_teleport_history_tab.xml      |    5 +
 .../skins/default/xui/it/menu_text_editor.xml |    8 +
 .../skins/default/xui/it/menu_url_agent.xml   |    6 +
 .../skins/default/xui/it/menu_url_group.xml   |    6 +
 .../skins/default/xui/it/menu_url_http.xml    |    7 +
 .../default/xui/it/menu_url_inventory.xml     |    6 +
 .../skins/default/xui/it/menu_url_map.xml     |    6 +
 .../default/xui/it/menu_url_objectim.xml      |    8 +
 .../skins/default/xui/it/menu_url_parcel.xml  |    6 +
 .../skins/default/xui/it/menu_url_slapp.xml   |    5 +
 .../skins/default/xui/it/menu_url_slurl.xml   |    7 +
 .../default/xui/it/menu_url_teleport.xml      |    6 +
 .../skins/default/xui/it/menu_viewer.xml      |  499 +--
 .../skins/default/xui/it/mime_types_linux.xml |  217 ++
 .../skins/default/xui/it/mime_types_mac.xml   |  217 ++
 .../skins/default/xui/it/notifications.xml    | 1385 +++-----
 .../xui/it/panel_active_object_row.xml        |    9 +
 .../xui/it/panel_adhoc_control_panel.xml      |    8 +
 .../default/xui/it/panel_avatar_list_item.xml |   25 +
 .../xui/it/panel_block_list_sidetray.xml      |   10 +
 .../skins/default/xui/it/panel_bottomtray.xml |   23 +
 .../default/xui/it/panel_classified_info.xml  |   22 +
 .../skins/default/xui/it/panel_edit_alpha.xml |   10 +
 .../default/xui/it/panel_edit_classified.xml  |   33 +
 .../skins/default/xui/it/panel_edit_eyes.xml  |    9 +
 .../default/xui/it/panel_edit_gloves.xml      |   10 +
 .../skins/default/xui/it/panel_edit_hair.xml  |   12 +
 .../default/xui/it/panel_edit_jacket.xml      |   11 +
 .../skins/default/xui/it/panel_edit_pants.xml |   10 +
 .../skins/default/xui/it/panel_edit_pick.xml  |   28 +
 .../default/xui/it/panel_edit_profile.xml     |   91 +-
 .../skins/default/xui/it/panel_edit_shape.xml |   23 +
 .../skins/default/xui/it/panel_edit_shirt.xml |   10 +
 .../skins/default/xui/it/panel_edit_shoes.xml |   10 +
 .../skins/default/xui/it/panel_edit_skin.xml  |   14 +
 .../skins/default/xui/it/panel_edit_skirt.xml |   10 +
 .../skins/default/xui/it/panel_edit_socks.xml |   10 +
 .../default/xui/it/panel_edit_tattoo.xml      |    8 +
 .../default/xui/it/panel_edit_underpants.xml  |   10 +
 .../default/xui/it/panel_edit_undershirt.xml  |   10 +
 .../default/xui/it/panel_edit_wearable.xml    |  101 +
 .../skins/default/xui/it/panel_friends.xml    |   10 +-
 .../xui/it/panel_group_control_panel.xml      |    9 +
 .../default/xui/it/panel_group_general.xml    |   79 +-
 .../xui/it/panel_group_info_sidetray.xml      |   36 +
 .../default/xui/it/panel_group_invite.xml     |   22 +-
 .../default/xui/it/panel_group_land_money.xml |   45 +-
 .../default/xui/it/panel_group_list_item.xml  |    4 +
 .../default/xui/it/panel_group_notices.xml    |   55 +-
 .../default/xui/it/panel_group_notify.xml     |    8 +
 .../default/xui/it/panel_group_roles.xml      |  145 +-
 .../default/xui/it/panel_im_control_panel.xml |   13 +
 .../default/xui/it/panel_landmark_info.xml    |   37 +
 .../skins/default/xui/it/panel_landmarks.xml  |   14 +
 .../skins/default/xui/it/panel_login.xml      |   59 +-
 .../default/xui/it/panel_main_inventory.xml   |   64 +
 .../newview/skins/default/xui/it/panel_me.xml |    7 +
 .../xui/it/panel_media_settings_general.xml   |   32 +
 .../it/panel_media_settings_permissions.xml   |   20 +
 .../xui/it/panel_media_settings_security.xml  |   12 +
 .../skins/default/xui/it/panel_my_profile.xml |   37 +
 .../default/xui/it/panel_navigation_bar.xml   |   15 +
 .../default/xui/it/panel_nearby_chat.xml      |    9 +
 .../default/xui/it/panel_nearby_chat_bar.xml  |   11 +
 .../skins/default/xui/it/panel_notes.xml      |   23 +
 .../xui/it/panel_outfits_inventory.xml        |    7 +
 .../panel_outfits_inventory_gear_default.xml  |    9 +
 .../skins/default/xui/it/panel_people.xml     |   53 +
 .../skins/default/xui/it/panel_pick_info.xml  |   16 +
 .../skins/default/xui/it/panel_picks.xml      |   20 +
 .../default/xui/it/panel_place_profile.xml    |  103 +
 .../skins/default/xui/it/panel_places.xml     |   14 +
 .../xui/it/panel_preferences_advanced.xml     |   38 +-
 .../xui/it/panel_preferences_alerts.xml       |   18 +-
 .../default/xui/it/panel_preferences_chat.xml |   32 +-
 .../xui/it/panel_preferences_general.xml      |  116 +-
 .../xui/it/panel_preferences_graphics1.xml    |  207 +-
 .../xui/it/panel_preferences_privacy.xml      |   50 +-
 .../xui/it/panel_preferences_setup.xml        |   78 +-
 .../xui/it/panel_preferences_sound.xml        |   62 +-
 .../xui/it/panel_prim_media_controls.xml      |   28 +
 .../skins/default/xui/it/panel_profile.xml    |   36 +-
 .../default/xui/it/panel_profile_view.xml     |   16 +
 .../default/xui/it/panel_region_covenant.xml  |   23 +-
 .../default/xui/it/panel_region_debug.xml     |   16 +-
 .../default/xui/it/panel_region_estate.xml    |    8 +-
 .../default/xui/it/panel_region_texture.xml   |    6 +-
 .../skins/default/xui/it/panel_script_ed.xml  |   43 +
 .../skins/default/xui/it/panel_side_tray.xml  |   26 +
 .../xui/it/panel_side_tray_tab_caption.xml    |    5 +
 .../xui/it/panel_stand_stop_flying.xml        |    6 +
 .../skins/default/xui/it/panel_status_bar.xml |   53 +-
 .../default/xui/it/panel_teleport_history.xml |   14 +
 .../skins/default/xui/it/panel_world_map.xml  |    6 +
 .../skins/default/xui/it/role_actions.xml     |   72 +
 .../default/xui/it/sidepanel_appearance.xml   |   11 +
 .../default/xui/it/sidepanel_inventory.xml    |   11 +
 .../default/xui/it/sidepanel_item_info.xml    |   70 +
 .../default/xui/it/sidepanel_task_info.xml    |  119 +
 .../newview/skins/default/xui/it/strings.xml  | 2886 ++++++++++++++++-
 .../skins/default/xui/it/teleport_strings.xml |    6 +-
 .../skins/default/xui/pl/floater_about.xml    |   69 +-
 .../default/xui/pl/floater_mute_object.xml    |   17 +-
 .../default/xui/pl/floater_report_abuse.xml   |   99 +-
 .../skins/default/xui/pl/floater_stats.xml    |   71 +
 .../default/xui/pl/menu_attachment_other.xml  |   17 +
 .../default/xui/pl/menu_attachment_self.xml   |   12 +
 .../skins/default/xui/pl/menu_avatar_icon.xml |    7 +
 .../default/xui/pl/menu_avatar_other.xml      |   16 +
 .../skins/default/xui/pl/menu_avatar_self.xml |   27 +
 .../skins/default/xui/pl/menu_bottomtray.xml  |   12 +
 .../skins/default/xui/pl/menu_favorites.xml   |   10 +
 .../default/xui/pl/menu_gesture_gear.xml      |   10 +
 .../skins/default/xui/pl/menu_group_plus.xml  |    5 +
 .../skins/default/xui/pl/menu_hide_navbar.xml |    5 +
 .../default/xui/pl/menu_imchiclet_adhoc.xml   |    4 +
 .../default/xui/pl/menu_imchiclet_group.xml   |    6 +
 .../default/xui/pl/menu_imchiclet_p2p.xml     |    7 +
 .../xui/pl/menu_inspect_avatar_gear.xml       |   17 +
 .../xui/pl/menu_inspect_object_gear.xml       |   17 +
 .../default/xui/pl/menu_inspect_self_gear.xml |    8 +
 .../skins/default/xui/pl/menu_inventory.xml   |   24 +-
 .../default/xui/pl/menu_inventory_add.xml     |   32 +
 .../xui/pl/menu_inventory_gear_default.xml    |   14 +
 .../skins/default/xui/pl/menu_land.xml        |    9 +
 .../skins/default/xui/pl/menu_landmark.xml    |    7 +
 .../skins/default/xui/pl/menu_login.xml       |   33 +-
 .../skins/default/xui/pl/menu_mini_map.xml    |    3 +-
 .../skins/default/xui/pl/menu_navbar.xml      |   11 +
 .../skins/default/xui/pl/menu_nearby_chat.xml |    9 +
 .../skins/default/xui/pl/menu_object.xml      |   24 +
 .../skins/default/xui/pl/menu_object_icon.xml |    5 +
 .../default/xui/pl/menu_participant_list.xml  |   16 +
 .../xui/pl/menu_people_friends_view_sort.xml  |    7 +
 .../xui/pl/menu_people_groups_view_sort.xml   |    5 +
 .../default/xui/pl/menu_people_nearby.xml     |   10 +
 .../xui/pl/menu_people_nearby_multiselect.xml |    8 +
 .../xui/pl/menu_people_nearby_view_sort.xml   |    8 +
 .../xui/pl/menu_people_recent_view_sort.xml   |    7 +
 .../skins/default/xui/pl/menu_picks.xml       |    8 +
 .../skins/default/xui/pl/menu_picks_plus.xml  |    5 +
 .../skins/default/xui/pl/menu_place.xml       |    7 +
 .../default/xui/pl/menu_place_add_button.xml  |    5 +
 .../xui/pl/menu_places_gear_folder.xml        |   15 +
 .../xui/pl/menu_places_gear_landmark.xml      |   18 +
 .../default/xui/pl/menu_profile_overflow.xml  |    5 +
 .../skins/default/xui/pl/menu_slurl.xml       |    8 +-
 .../xui/pl/menu_teleport_history_gear.xml     |    6 +
 .../xui/pl/menu_teleport_history_item.xml     |    6 +
 .../xui/pl/menu_teleport_history_tab.xml      |    5 +
 .../skins/default/xui/pl/menu_text_editor.xml |    8 +
 .../skins/default/xui/pl/menu_url_agent.xml   |    6 +
 .../skins/default/xui/pl/menu_url_group.xml   |    6 +
 .../skins/default/xui/pl/menu_url_http.xml    |    7 +
 .../default/xui/pl/menu_url_inventory.xml     |    6 +
 .../skins/default/xui/pl/menu_url_map.xml     |    6 +
 .../default/xui/pl/menu_url_objectim.xml      |    8 +
 .../skins/default/xui/pl/menu_url_parcel.xml  |    6 +
 .../skins/default/xui/pl/menu_url_slapp.xml   |    5 +
 .../skins/default/xui/pl/menu_url_slurl.xml   |    7 +
 .../default/xui/pl/menu_url_teleport.xml      |    6 +
 .../skins/default/xui/pl/menu_viewer.xml      |  491 +--
 .../xui/pl/panel_block_list_sidetray.xml      |   10 +
 .../default/xui/pl/panel_group_roles.xml      |  165 +-
 .../skins/default/xui/pl/panel_login.xml      |   65 +-
 .../default/xui/pl/panel_main_inventory.xml   |   64 +
 .../xui/pl/panel_preferences_advanced.xml     |   38 +-
 .../xui/pl/panel_preferences_alerts.xml       |   23 +-
 .../default/xui/pl/panel_preferences_chat.xml |   31 +-
 .../xui/pl/panel_preferences_sound.xml        |   66 +-
 .../skins/default/xui/pl/panel_world_map.xml  |    6 +
 .../newview/skins/default/xui/pl/strings.xml  | 2865 +++++++++++++++-
 .../skins/default/xui/pl/teleport_strings.xml |   12 +-
 427 files changed, 15895 insertions(+), 5411 deletions(-)
 create mode 100644 indra/newview/skins/default/xui/da/floater_activeim.xml
 create mode 100644 indra/newview/skins/default/xui/da/floater_im_session.xml
 create mode 100644 indra/newview/skins/default/xui/da/floater_search.xml
 create mode 100644 indra/newview/skins/default/xui/da/floater_voice_controls.xml
 create mode 100644 indra/newview/skins/default/xui/da/inspect_avatar.xml
 create mode 100644 indra/newview/skins/default/xui/da/inspect_group.xml
 create mode 100644 indra/newview/skins/default/xui/da/inspect_remote_object.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_attachment_other.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_attachment_self.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_avatar_icon.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_avatar_other.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_avatar_self.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_bottomtray.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_favorites.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_gesture_gear.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_group_plus.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_hide_navbar.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_imchiclet_adhoc.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_imchiclet_group.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_imchiclet_p2p.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_inspect_avatar_gear.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_inspect_object_gear.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_inspect_self_gear.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_inventory_gear_default.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_land.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_landmark.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_navbar.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_nearby_chat.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_object.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_object_icon.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_participant_list.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_people_friends_view_sort.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_people_groups_view_sort.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_people_nearby.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_people_nearby_multiselect.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_people_nearby_view_sort.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_people_recent_view_sort.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_picks_plus.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_place.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_place_add_button.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_places_gear_folder.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_profile_overflow.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_teleport_history_gear.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_teleport_history_item.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_teleport_history_tab.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_text_editor.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_url_agent.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_url_group.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_url_http.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_url_inventory.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_url_map.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_url_objectim.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_url_parcel.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_url_slapp.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_url_slurl.xml
 create mode 100644 indra/newview/skins/default/xui/da/menu_url_teleport.xml
 create mode 100644 indra/newview/skins/default/xui/da/mime_types_mac.xml
 create mode 100644 indra/newview/skins/default/xui/da/panel_avatar_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/da/panel_classified_info.xml
 create mode 100644 indra/newview/skins/default/xui/da/panel_edit_classified.xml
 create mode 100644 indra/newview/skins/default/xui/da/panel_edit_hair.xml
 create mode 100644 indra/newview/skins/default/xui/da/panel_edit_shape.xml
 create mode 100644 indra/newview/skins/default/xui/da/panel_edit_shirt.xml
 create mode 100644 indra/newview/skins/default/xui/da/panel_edit_skirt.xml
 create mode 100644 indra/newview/skins/default/xui/da/panel_edit_tattoo.xml
 create mode 100644 indra/newview/skins/default/xui/da/panel_group_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/da/panel_group_notify.xml
 create mode 100644 indra/newview/skins/default/xui/da/panel_im_control_panel.xml
 create mode 100644 indra/newview/skins/default/xui/da/panel_landmark_info.xml
 create mode 100644 indra/newview/skins/default/xui/da/panel_landmarks.xml
 create mode 100644 indra/newview/skins/default/xui/da/panel_media_settings_permissions.xml
 create mode 100644 indra/newview/skins/default/xui/da/panel_navigation_bar.xml
 create mode 100644 indra/newview/skins/default/xui/da/panel_notes.xml
 create mode 100644 indra/newview/skins/default/xui/da/panel_outfits_inventory.xml
 create mode 100644 indra/newview/skins/default/xui/da/panel_outfits_inventory_gear_default.xml
 create mode 100644 indra/newview/skins/default/xui/da/panel_people.xml
 create mode 100644 indra/newview/skins/default/xui/da/panel_picks.xml
 create mode 100644 indra/newview/skins/default/xui/da/panel_places.xml
 create mode 100644 indra/newview/skins/default/xui/da/panel_profile.xml
 create mode 100644 indra/newview/skins/default/xui/da/panel_script_ed.xml
 create mode 100644 indra/newview/skins/default/xui/da/panel_side_tray.xml
 create mode 100644 indra/newview/skins/default/xui/da/panel_stand_stop_flying.xml
 create mode 100644 indra/newview/skins/default/xui/da/panel_teleport_history.xml
 create mode 100644 indra/newview/skins/default/xui/da/sidepanel_item_info.xml
 create mode 100644 indra/newview/skins/default/xui/da/sidepanel_task_info.xml
 create mode 100644 indra/newview/skins/default/xui/it/floater_activeim.xml
 create mode 100644 indra/newview/skins/default/xui/it/floater_help_browser.xml
 create mode 100644 indra/newview/skins/default/xui/it/floater_im_container.xml
 create mode 100644 indra/newview/skins/default/xui/it/floater_im_session.xml
 create mode 100644 indra/newview/skins/default/xui/it/floater_incoming_call.xml
 create mode 100644 indra/newview/skins/default/xui/it/floater_media_settings.xml
 create mode 100644 indra/newview/skins/default/xui/it/floater_nearby_chat.xml
 create mode 100644 indra/newview/skins/default/xui/it/floater_outgoing_call.xml
 create mode 100644 indra/newview/skins/default/xui/it/floater_preview_gesture_info.xml
 create mode 100644 indra/newview/skins/default/xui/it/floater_preview_gesture_shortcut.xml
 create mode 100644 indra/newview/skins/default/xui/it/floater_preview_gesture_steps.xml
 create mode 100644 indra/newview/skins/default/xui/it/floater_script_debug_panel.xml
 create mode 100644 indra/newview/skins/default/xui/it/floater_search.xml
 create mode 100644 indra/newview/skins/default/xui/it/floater_stats.xml
 create mode 100644 indra/newview/skins/default/xui/it/floater_sys_well.xml
 create mode 100644 indra/newview/skins/default/xui/it/floater_voice_controls.xml
 create mode 100644 indra/newview/skins/default/xui/it/floater_whitelist_entry.xml
 create mode 100644 indra/newview/skins/default/xui/it/inspect_avatar.xml
 create mode 100644 indra/newview/skins/default/xui/it/inspect_group.xml
 create mode 100644 indra/newview/skins/default/xui/it/inspect_object.xml
 create mode 100644 indra/newview/skins/default/xui/it/inspect_remote_object.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_attachment_other.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_attachment_self.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_avatar_icon.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_avatar_other.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_avatar_self.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_bottomtray.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_favorites.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_gesture_gear.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_group_plus.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_hide_navbar.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_imchiclet_adhoc.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_imchiclet_group.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_imchiclet_p2p.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_inspect_avatar_gear.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_inspect_object_gear.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_inspect_self_gear.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_inventory_add.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_inventory_gear_default.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_land.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_landmark.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_navbar.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_nearby_chat.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_object.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_object_icon.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_participant_list.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_people_friends_view_sort.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_people_groups_view_sort.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_people_nearby.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_people_nearby_multiselect.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_people_nearby_view_sort.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_people_recent_view_sort.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_picks.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_picks_plus.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_place.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_place_add_button.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_places_gear_folder.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_places_gear_landmark.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_profile_overflow.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_teleport_history_gear.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_teleport_history_item.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_teleport_history_tab.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_text_editor.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_url_agent.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_url_group.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_url_http.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_url_inventory.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_url_map.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_url_objectim.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_url_parcel.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_url_slapp.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_url_slurl.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_url_teleport.xml
 create mode 100644 indra/newview/skins/default/xui/it/mime_types_linux.xml
 create mode 100644 indra/newview/skins/default/xui/it/mime_types_mac.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_active_object_row.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_adhoc_control_panel.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_avatar_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_bottomtray.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_classified_info.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_edit_alpha.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_edit_classified.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_edit_eyes.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_edit_gloves.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_edit_hair.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_edit_jacket.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_edit_pants.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_edit_pick.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_edit_shape.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_edit_shirt.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_edit_shoes.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_edit_skin.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_edit_skirt.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_edit_socks.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_edit_tattoo.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_edit_underpants.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_edit_undershirt.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_edit_wearable.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_group_control_panel.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_group_info_sidetray.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_group_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_group_notify.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_im_control_panel.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_landmark_info.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_landmarks.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_main_inventory.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_me.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_media_settings_general.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_media_settings_permissions.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_media_settings_security.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_my_profile.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_navigation_bar.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_nearby_chat.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_nearby_chat_bar.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_notes.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_outfits_inventory.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_outfits_inventory_gear_default.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_people.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_pick_info.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_picks.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_place_profile.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_places.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_prim_media_controls.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_profile_view.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_script_ed.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_side_tray.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_side_tray_tab_caption.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_stand_stop_flying.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_teleport_history.xml
 create mode 100644 indra/newview/skins/default/xui/it/role_actions.xml
 create mode 100644 indra/newview/skins/default/xui/it/sidepanel_appearance.xml
 create mode 100644 indra/newview/skins/default/xui/it/sidepanel_inventory.xml
 create mode 100644 indra/newview/skins/default/xui/it/sidepanel_item_info.xml
 create mode 100644 indra/newview/skins/default/xui/it/sidepanel_task_info.xml
 create mode 100644 indra/newview/skins/default/xui/pl/floater_stats.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_attachment_other.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_attachment_self.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_avatar_icon.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_avatar_other.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_avatar_self.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_bottomtray.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_favorites.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_gesture_gear.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_group_plus.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_hide_navbar.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_imchiclet_adhoc.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_imchiclet_group.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_imchiclet_p2p.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_inspect_avatar_gear.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_inspect_object_gear.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_inspect_self_gear.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_inventory_add.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_inventory_gear_default.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_land.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_landmark.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_navbar.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_nearby_chat.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_object.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_object_icon.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_participant_list.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_people_friends_view_sort.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_people_groups_view_sort.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_people_nearby.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_people_nearby_multiselect.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_people_nearby_view_sort.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_people_recent_view_sort.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_picks.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_picks_plus.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_place.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_place_add_button.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_places_gear_folder.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_places_gear_landmark.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_profile_overflow.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_teleport_history_gear.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_teleport_history_item.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_teleport_history_tab.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_text_editor.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_url_agent.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_url_group.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_url_http.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_url_inventory.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_url_map.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_url_objectim.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_url_parcel.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_url_slapp.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_url_slurl.xml
 create mode 100644 indra/newview/skins/default/xui/pl/menu_url_teleport.xml
 create mode 100644 indra/newview/skins/default/xui/pl/panel_block_list_sidetray.xml
 create mode 100644 indra/newview/skins/default/xui/pl/panel_main_inventory.xml

diff --git a/indra/newview/skins/default/xui/da/floater_activeim.xml b/indra/newview/skins/default/xui/da/floater_activeim.xml
new file mode 100644
index 00000000000..6fdac8d8801
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/floater_activeim.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_activeim" title="AKTIV IM"/>
diff --git a/indra/newview/skins/default/xui/da/floater_auction.xml b/indra/newview/skins/default/xui/da/floater_auction.xml
index 8f793557bea..e74e8a991b7 100644
--- a/indra/newview/skins/default/xui/da/floater_auction.xml
+++ b/indra/newview/skins/default/xui/da/floater_auction.xml
@@ -1,9 +1,11 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="floater_auction" title="START LINDEN LAND SALG">
-	<check_box label="Vis også gul aftegning af område" name="fence_check" />
-	<button label="Foto" label_selected="Foto" name="snapshot_btn" />
-	<button label="OK" label_selected="OK" name="ok_btn" />
-	<string name="already for sale">
+	<floater.string name="already for sale">
 		Du kan ikke sætte jord på auktion der allerede er sat til salg.
-	</string>
+	</floater.string>
+	<check_box initial_value="true" label="Vis også gul aftegning af område" name="fence_check"/>
+	<button label="Foto" label_selected="Foto" name="snapshot_btn"/>
+	<button label="Sælg til enhver" label_selected="Sælg til enhver" name="sell_to_anyone_btn"/>
+	<button label="Nulstil valg" label_selected="Nulstil valg" name="reset_parcel_btn"/>
+	<button label="Start auktion" label_selected="Start auktion" name="start_auction_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_avatar_picker.xml b/indra/newview/skins/default/xui/da/floater_avatar_picker.xml
index 0ddb6e9dbe5..a337da9b51a 100644
--- a/indra/newview/skins/default/xui/da/floater_avatar_picker.xml
+++ b/indra/newview/skins/default/xui/da/floater_avatar_picker.xml
@@ -1,5 +1,23 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="avatarpicker" title="VÆLG BEBOER">
+	<floater.string name="not_found">
+		&apos;[TEXT]&apos; ikke fundet
+	</floater.string>
+	<floater.string name="no_one_near">
+		Ingen i nærheden
+	</floater.string>
+	<floater.string name="no_results">
+		Ingen resultater
+	</floater.string>
+	<floater.string name="searching">
+		Søger...
+	</floater.string>
+	<string label="Vælg" label_selected="Vælg" name="Select">
+		Vælg
+	</string>
+	<string name="Close">
+		Luk
+	</string>
 	<tab_container name="ResidentChooserTabs">
 		<panel label="Søg" name="SearchPanel">
 			<text name="InstructSearchResidentName">
@@ -7,34 +25,22 @@
 			</text>
 			<button label="Find" label_selected="Find" name="Find"/>
 		</panel>
-		<panel label="Visitkort" name="CallingCardsPanel">
-			<text name="InstructSelectCallingCard">
-				Vælg et visitkort:
+		<panel label="Venner" name="FriendsPanel">
+			<text name="InstructSelectFriend">
+				Vælg en person:
 			</text>
 		</panel>
 		<panel label="Nær ved mig" name="NearMePanel">
 			<text name="InstructSelectResident">
-				Vælg beboere i nærheden:
+				Vælg en person nær:
 			</text>
-			<button label="Gentegn liste" label_selected="Gentegn liste" name="Refresh"/>
 			<slider label="Område" name="near_me_range"/>
 			<text name="meters">
 				meter
 			</text>
+			<button label="Gentegn liste" label_selected="Gentegn liste" name="Refresh"/>
 		</panel>
 	</tab_container>
-	<button label="Vælg" label_selected="Vælg" name="Select"/>
-	<button label="Annullér" label_selected="Annullér" name="Cancel"/>
-	<string name="not_found">
-		&apos;[TEXT]&apos; ikke fundet
-	</string>
-	<string name="no_one_near">
-		Ingen i nærheden
-	</string>
-	<string name="no_results">
-		Ingen resultater
-	</string>
-	<string name="searching">
-		Søger...
-	</string>
+	<button label="OK" label_selected="OK" name="ok_btn"/>
+	<button label="Annullér" label_selected="Annullér" name="cancel_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_bulk_perms.xml b/indra/newview/skins/default/xui/da/floater_bulk_perms.xml
index 9cf44d64791..0dd1a4f6ba6 100644
--- a/indra/newview/skins/default/xui/da/floater_bulk_perms.xml
+++ b/indra/newview/skins/default/xui/da/floater_bulk_perms.xml
@@ -1,44 +1,54 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floaterbulkperms" title="MASSE-ÆNDRING AF RETTIGHEDER PÅ INDHOLD">
-	<text name="applyto">
-		Indholdstyper
-	</text>
+<floater name="floaterbulkperms" title="REDIGÉR RETTIGHEDER FOR INDHOLD">
+	<floater.string name="nothing_to_modify_text">
+		Valgte indeholder ikke noget som kan redigeres.
+	</floater.string>
+	<floater.string name="status_text">
+		Sætter rettigheder på [NAME]
+	</floater.string>
+	<floater.string name="start_text">
+		Påbegynder forespørgsel på rettighedsændringer...
+	</floater.string>
+	<floater.string name="done_text">
+		Afsluttet forespørgsel på rettighedsændringer.
+	</floater.string>
 	<check_box label="Animationer" name="check_animation"/>
+	<icon name="icon_animation" tool_tip="Animation"/>
 	<check_box label="Kropsdele" name="check_bodypart"/>
+	<icon name="icon_bodypart" tool_tip="Kropsdele"/>
 	<check_box label="Tøj" name="check_clothing"/>
+	<icon name="icon_clothing" tool_tip="Tøj"/>
 	<check_box label="Bevægelser" name="check_gesture"/>
-	<check_box label="Landemærker" name="check_landmark"/>
+	<icon name="icon_gesture" tool_tip="Bevægelser"/>
 	<check_box label="Noter" name="check_notecard"/>
+	<icon name="icon_notecard" tool_tip="Noter"/>
 	<check_box label="Objekter" name="check_object"/>
+	<icon name="icon_object" tool_tip="Objekter"/>
 	<check_box label="Scripts" name="check_script"/>
+	<icon name="icon_script" tool_tip="Scripts"/>
 	<check_box label="Lyde" name="check_sound"/>
+	<icon name="icon_sound" tool_tip="Lyde"/>
 	<check_box label="Teksturer" name="check_texture"/>
-	<button label="Vælg alle" label_selected="Alle" name="check_all"/>
-	<button label="Fravælg alle" label_selected="Ingen" name="check_none"/>
+	<icon name="icon_texture" tool_tip="Teksturer"/>
+	<button label="√ Alle" label_selected="Alle" name="check_all"/>
+	<button label="Fjern" label_selected="Ingen" name="check_none"/>
 	<text name="newperms">
-		Nye rettigheder
+		Nye indholdsrettigheder
+	</text>
+	<text name="GroupLabel">
+		Gruppe:
 	</text>
-	<check_box label="Del med gruppe" name="share_with_group"/>
-	<check_box label="Tillad enhver at kopiere" name="everyone_copy"/>
+	<check_box label="Del" name="share_with_group"/>
+	<text name="AnyoneLabel">
+		Enhver:
+	</text>
+	<check_box label="Kopiér" name="everyone_copy"/>
 	<text name="NextOwnerLabel">
-		Næste ejer kan:
+		Næste ejer:
 	</text>
 	<check_box label="Redigere" name="next_owner_modify"/>
 	<check_box label="Kopiére" name="next_owner_copy"/>
-	<check_box label="Sælge/Give væk" name="next_owner_transfer"/>
-	<button label="Hjælp" name="help"/>
-	<button label="Gem" name="apply"/>
-	<button label="Luk" name="close"/>
-	<string name="nothing_to_modify_text">
-		Valgte indeholder ikke noget som kan redigeres.
-	</string>
-	<string name="status_text">
-		Sætter rettigheder på [NAME]
-	</string>
-	<string name="start_text">
-		Påbegynder forespørgsel på rettighedsændringer...
-	</string>
-	<string name="done_text">
-		Afsluttet forespørgsel på rettighedsændringer.
-	</string>
+	<check_box initial_value="true" label="Overfør" name="next_owner_transfer" tool_tip="Næste ejer kan sælge eller forære dette objekt væk"/>
+	<button label="Ok" name="apply"/>
+	<button label="Annullér" name="close"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_bumps.xml b/indra/newview/skins/default/xui/da/floater_bumps.xml
index 704e6c36085..d22de6e7f13 100644
--- a/indra/newview/skins/default/xui/da/floater_bumps.xml
+++ b/indra/newview/skins/default/xui/da/floater_bumps.xml
@@ -1,21 +1,24 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="floater_bumps" title="BUMP, SKUB &amp; SLAG">
-	<string name="none_detected">
+	<floater.string name="none_detected">
 		Ingen registreret
-	</string>
-	<string name="bump">
+	</floater.string>
+	<floater.string name="bump">
 		[TIME]  [FIRST] [LAST] ramte dig
-	</string>
-	<string name="llpushobject">
+	</floater.string>
+	<floater.string name="llpushobject">
 		[TIME]  [FIRST] [LAST] skubbede dig med et script
-	</string>
-	<string name="selected_object_collide">
+	</floater.string>
+	<floater.string name="selected_object_collide">
 		[TIME]  [FIRST] [LAST] ramte dig med et objekt
-	</string>
-	<string name="scripted_object_collide">
+	</floater.string>
+	<floater.string name="scripted_object_collide">
 		[TIME]  [FIRST] [LAST] ramte dig med et scriptet objekt
-	</string>
-	<string name="physical_object_collide">
+	</floater.string>
+	<floater.string name="physical_object_collide">
 		[TIME]  [FIRST] [LAST] ramte dig med et fysisk objekt
-	</string>
+	</floater.string>
+	<floater.string name="timeStr">
+		[[hour,datetime,slt]:[min,datetime,slt]]
+	</floater.string>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_buy_object.xml b/indra/newview/skins/default/xui/da/floater_buy_object.xml
index 266753902ba..f9e18dcf65a 100644
--- a/indra/newview/skins/default/xui/da/floater_buy_object.xml
+++ b/indra/newview/skins/default/xui/da/floater_buy_object.xml
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="contents" title="KØB KOPI AF OBJEKT">
 	<text name="contents_text">
-		og dets indhold:
+		Indeholder:
 	</text>
 	<text name="buy_text">
 		Køb for L$[AMOUNT] fra [NAME]?
 	</text>
-	<button label="Annullér" label_selected="Annullér" name="cancel_btn" />
-	<button label="Køb" label_selected="Køb" name="buy_btn" />
+	<button label="Annullér" label_selected="Annullér" name="cancel_btn"/>
+	<button label="Køb" label_selected="Køb" name="buy_btn"/>
 	<string name="title_buy_text">
 		Køb
 	</string>
diff --git a/indra/newview/skins/default/xui/da/floater_camera.xml b/indra/newview/skins/default/xui/da/floater_camera.xml
index c52f7ab8324..25965596090 100644
--- a/indra/newview/skins/default/xui/da/floater_camera.xml
+++ b/indra/newview/skins/default/xui/da/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 name="camera_floater" title="">
 	<floater.string name="rotate_tooltip">
 		Roter kamera omkring fokus
@@ -11,6 +11,21 @@
 	</floater.string>
 	<panel name="controls">
 		<joystick_track name="cam_track_stick" tool_tip="Flyt kamera op og ned, til venstre og højre"/>
-		<joystick_zoom name="zoom" tool_tip="Zoom kamera mod fokus"/>
+		<panel name="zoom" tool_tip="Zoom kamera mod fokus">
+			<slider_bar name="zoom_slider" tool_tip="Zoom kamera mod fokus"/>
+		</panel>
+		<joystick_rotate name="cam_rotate_stick" tool_tip="Kreds kamera omkring fokus"/>
+		<panel name="camera_presets">
+			<button name="rear_view" tool_tip="Se bagfra"/>
+			<button name="group_view" tool_tip="Se som gruppe"/>
+			<button name="front_view" tool_tip="Se forfra"/>
+			<button name="mouselook_view" tool_tip="Førsteperson"/>
+		</panel>
+	</panel>
+	<panel name="buttons">
+		<button label="" name="orbit_btn" tool_tip="Rotér kamera"/>
+		<button label="" name="pan_btn" tool_tip="Panorér kamera"/>
+		<button label="" name="avatarview_btn" tool_tip="Se som avatar"/>
+		<button label="" name="freecamera_btn" tool_tip="Se objekt"/>
 	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_color_picker.xml b/indra/newview/skins/default/xui/da/floater_color_picker.xml
index d0a47b76e03..514b2c43317 100644
--- a/indra/newview/skins/default/xui/da/floater_color_picker.xml
+++ b/indra/newview/skins/default/xui/da/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 name="ColorPicker" title="FARVE VÆLGER">
 	<text name="r_val_text">
 		Rød:
@@ -18,14 +18,14 @@
 	<text name="l_val_text">
 		Lysstyrke:
 	</text>
-	<check_box label="Anvend straks" name="apply_immediate" />
-	<button label="" label_selected="" name="color_pipette" />
-	<button label="Annullér" label_selected="Annullér" name="cancel_btn" />
-	<button label="Vælg" label_selected="Vælg" name="select_btn" />
+	<check_box label="Benyt nu" name="apply_immediate"/>
+	<button label="" label_selected="" name="color_pipette"/>
+	<button label="Annullér" label_selected="Annullér" name="cancel_btn"/>
+	<button label="Ok" label_selected="Ok" name="select_btn"/>
 	<text name="Current color:">
 		Nuværende Farve:
 	</text>
 	<text name="(Drag below to save.)">
-		(Træk ned og gem)
+		(Træk ned for at gemme)
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_gesture.xml b/indra/newview/skins/default/xui/da/floater_gesture.xml
index 11ecc8bd9a8..b7075e356ad 100644
--- a/indra/newview/skins/default/xui/da/floater_gesture.xml
+++ b/indra/newview/skins/default/xui/da/floater_gesture.xml
@@ -1,16 +1,27 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="gestures" title="AKTIVE BEVÆGELSER">
-	<text name="help_label">
-		Dobbelt-klik på en bevægelse for at afspille animation og lyd.
-	</text>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater label="Steder" name="gestures" title="BEVÆGELSER">
+	<floater.string name="loading">
+		Henter...
+	</floater.string>
+	<floater.string name="playing">
+		(Afspiller)
+	</floater.string>
+	<floater.string name="copy_name">
+		Kopi af [COPY_NAME]
+	</floater.string>
 	<scroll_list name="gesture_list">
-		<column label="Genvej" name="trigger" />
-		<column label="Taste" name="shortcut" />
-		<column label="" name="key" />
-		<column label="Navn" name="name" />
+		<scroll_list.columns label="Navn" name="name"/>
+		<scroll_list.columns label="Chat" name="trigger"/>
+		<scroll_list.columns label="" name="key"/>
+		<scroll_list.columns label="Taste" name="shortcut"/>
 	</scroll_list>
-	<button label="Ny" name="new_gesture_btn" />
-	<button label="Redigér" name="edit_btn" />
-	<button label="Afspil" name="play_btn" />
-	<button label="Stop" name="stop_btn" />
+	<panel label="bottom_panel" name="bottom_panel">
+		<menu_button name="gear_btn" tool_tip="Flere muligheder"/>
+		<button name="new_gesture_btn" tool_tip="Lav ny bevægelse"/>
+		<button name="activate_btn" tool_tip="Aktivér/Deaktivér valgte bevægelse"/>
+		<button name="del_btn" tool_tip="Slet denne bevægelse"/>
+	</panel>
+	<button label="Redigér" name="edit_btn"/>
+	<button label="Afspil" name="play_btn"/>
+	<button label="Stop" name="stop_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_hud.xml b/indra/newview/skins/default/xui/da/floater_hud.xml
index 18584e57cae..c70da459558 100644
--- a/indra/newview/skins/default/xui/da/floater_hud.xml
+++ b/indra/newview/skins/default/xui/da/floater_hud.xml
@@ -1,2 +1,2 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="floater_hud" title="TUTORIAL" />
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_hud" title="KURSUS"/>
diff --git a/indra/newview/skins/default/xui/da/floater_im_session.xml b/indra/newview/skins/default/xui/da/floater_im_session.xml
new file mode 100644
index 00000000000..aa7df6ad2b9
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/floater_im_session.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="panel_im">
+	<layout_stack name="im_panels">
+		<layout_panel label="IM kontrol panel" name="panel_im_control_panel"/>
+		<layout_panel>
+			<line_editor label="Til" name="chat_editor"/>
+		</layout_panel>
+	</layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_land_holdings.xml b/indra/newview/skins/default/xui/da/floater_land_holdings.xml
index 39c906eb183..b3c12627f7f 100644
--- a/indra/newview/skins/default/xui/da/floater_land_holdings.xml
+++ b/indra/newview/skins/default/xui/da/floater_land_holdings.xml
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="land holdings floater" title="MIT LAND">
 	<scroll_list name="parcel list">
-		<column label="Navn" name="name"/>
+		<column label="Parcel" name="name"/>
 		<column label="Region" name="location"/>
 		<column label="Type" name="type"/>
 		<column label="Område" name="area"/>
 		<column label="" name="hidden"/>
 	</scroll_list>
 	<button label="Teleport" label_selected="Teleport" name="Teleport" tool_tip="Teleport til centrum på dette land."/>
-	<button label="Vis på kort" label_selected="Vis på kort" name="Show on Map" tool_tip="Vis dette land på verdenskortet."/>
+	<button label="Kort" label_selected="Kort" name="Show on Map" tool_tip="Vis dette land i verdenskortet"/>
 	<text name="contrib_label">
 		Bidrag til dine grupper:
 	</text>
diff --git a/indra/newview/skins/default/xui/da/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/da/floater_live_lsleditor.xml
index cfc5fb8860b..4079ff9f38d 100644
--- a/indra/newview/skins/default/xui/da/floater_live_lsleditor.xml
+++ b/indra/newview/skins/default/xui/da/floater_live_lsleditor.xml
@@ -1,12 +1,15 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="script ed float" title="SCRIPT: NYT SCRIPT">
-	<button label="Nulstil" label_selected="Reset" name="Reset" />
-	<check_box label="Kører" name="running" />
-	<check_box label="Mono" name="mono" />
-	<string name="not_allowed">
-		Du har ikke rettigheder til at se dette script.
-	</string>
-	<string name="script_running">
+	<floater.string name="not_allowed">
+		Du kan ikke se eller redigere dette script, da det er sat til &quot;no copy&quot;. Du skal bruge fulde rettigheder for at kunne se og redigere et script i dette objekt.
+	</floater.string>
+	<floater.string name="script_running">
 		Kører
-	</string>
+	</floater.string>
+	<floater.string name="Title">
+		Script: [NAME]
+	</floater.string>
+	<button label="Nulstil" label_selected="Reset" name="Reset"/>
+	<check_box initial_value="true" label="Kører" name="running"/>
+	<check_box initial_value="true" label="Mono" name="mono"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_mem_leaking.xml b/indra/newview/skins/default/xui/da/floater_mem_leaking.xml
index e7ad821d408..60bb3149a5e 100644
--- a/indra/newview/skins/default/xui/da/floater_mem_leaking.xml
+++ b/indra/newview/skins/default/xui/da/floater_mem_leaking.xml
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="MemLeak" title="MEMORY LEAKING SIMULATION">
-	<spinner label="Leaking Speed (bytes per frame):" name="leak_speed" />
-	<spinner label="Max Leaked Memory (MB):" name="max_leak" />
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="MemLeak" title="SIMULÉR MEMORY LEAK">
+	<spinner label="Leaking Speed (bytes per frame):" name="leak_speed"/>
+	<spinner label="Max Leaked Memory (MB):" name="max_leak"/>
 	<text name="total_leaked_label">
 		Current leaked memory: [SIZE] KB
 	</text>
@@ -11,8 +11,8 @@
 	<text name="note_label_2">
 		[NOTE2]
 	</text>
-	<button label="Start" name="start_btn" />
-	<button label="Stop" name="stop_btn" />
-	<button label="Slip" name="release_btn" />
-	<button label="Luk" name="close_btn" />
+	<button label="Start" name="start_btn"/>
+	<button label="Stop" name="stop_btn"/>
+	<button label="Slip" name="release_btn"/>
+	<button label="Luk" name="close_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_moveview.xml b/indra/newview/skins/default/xui/da/floater_moveview.xml
index 2b505288810..b00dc6bf4db 100644
--- a/indra/newview/skins/default/xui/da/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/da/floater_moveview.xml
@@ -1,13 +1,36 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="move_floater">
-<panel name="panel_actions">
-	<button label="" label_selected="" name="turn left btn" tool_tip="Drej til venstre" />
-	<button label="" label_selected="" name="turn right btn" tool_tip="Drej til højre" />
-	<button label="" label_selected="" name="move up btn" tool_tip="Hop eller flyv op" />
-	<button label="" label_selected="" name="move down btn" tool_tip="Duk eller flyv ned" />
-	<joystick_slide name="slide left btn" tool_tip="GÃ¥ til venstre" />
-	<joystick_slide name="slide right btn" tool_tip="Gå til højre" />
-	<joystick_turn name="forward btn" tool_tip="GÃ¥ fremad" />
-	<joystick_turn name="backward btn" tool_tip="GÃ¥ bagud" />
-</panel>
+	<string name="walk_forward_tooltip">
+		Gå frem (Tryk på Op piletast eller W)
+	</string>
+	<string name="walk_back_tooltip">
+		Gå baglæns (Tryk på Ned piletast eller S)
+	</string>
+	<string name="run_forward_tooltip">
+		Løb forlæns (Tryk på Op piletast eller W)
+	</string>
+	<string name="run_back_tooltip">
+		Løb baglæns (Tryk på Ned piletast eller S)
+	</string>
+	<string name="fly_forward_tooltip">
+		Flyv frem (Tryk på Op piletast eller W)
+	</string>
+	<string name="fly_back_tooltip">
+		Flyv baglæns (Tryk på Ned piletast eller S)
+	</string>
+	<panel name="panel_actions">
+		<button label="" label_selected="" name="turn left btn" tool_tip="xxx
+				Drej til venstre (Tryk på venstre piletast eller A)"/>
+		<button label="" label_selected="" name="turn right btn" tool_tip="Drej til højre (Tryk på højre piletast eller D)"/>
+		<button label="" label_selected="" name="move up btn" tool_tip="Flyv op, Tryk på &quot;E&quot;"/>
+		<button label="" label_selected="" name="move down btn" tool_tip="Flyv ned, Tryk på &quot;C&quot;"/>
+		<joystick_turn name="forward btn" tool_tip="Gå frem (Tryk på Op piletast eller W)"/>
+		<joystick_turn name="backward btn" tool_tip="Gå tilbage (Tryk på Ned piletast eller S)"/>
+	</panel>
+	<panel name="panel_modes">
+		<button label="" name="mode_walk_btn" tool_tip="GÃ¥ tilstand"/>
+		<button label="" name="mode_run_btn" tool_tip="Løbe tilstand"/>
+		<button label="" name="mode_fly_btn" tool_tip="Flyve tilstand"/>
+		<button label="Stop flyvning" name="stop_fly_btn" tool_tip="Stop flyvning"/>
+	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_my_friends.xml b/indra/newview/skins/default/xui/da/floater_my_friends.xml
index 54b401076cd..c3db53ce631 100644
--- a/indra/newview/skins/default/xui/da/floater_my_friends.xml
+++ b/indra/newview/skins/default/xui/da/floater_my_friends.xml
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="floater_my_friends" title="KONTAKTER">
 	<tab_container name="friends_and_groups">
-		<panel label="Venner" name="friends_panel" />
-		<panel label="Grupper" name="groups_panel" />
+		<panel label="Venner" name="friends_panel"/>
+		<panel label="Grupper" name="groups_panel"/>
 	</tab_container>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_perm_prefs.xml b/indra/newview/skins/default/xui/da/floater_perm_prefs.xml
index 69a8d3af94f..eecddbcdb09 100644
--- a/indra/newview/skins/default/xui/da/floater_perm_prefs.xml
+++ b/indra/newview/skins/default/xui/da/floater_perm_prefs.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="perm prefs" title="STANDARD TILLADELSER VED HENTNING">
+<floater name="perm prefs" title="STANDARD RETTIGHEDER">
 	<panel label="Tilladelser" name="permissions">
 		<button label="?" label_selected="?" name="help"/>
 		<check_box label="Del med gruppe" name="share_with_group"/>
diff --git a/indra/newview/skins/default/xui/da/floater_postcard.xml b/indra/newview/skins/default/xui/da/floater_postcard.xml
index cd61e7ac975..44b0fd4faa9 100644
--- a/indra/newview/skins/default/xui/da/floater_postcard.xml
+++ b/indra/newview/skins/default/xui/da/floater_postcard.xml
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="Postcard" title="E-MAIL BILLEDE">
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Postcard" title="EMAIL FOTO">
 	<text name="to_label">
 		Send til:
 	</text>
@@ -12,7 +12,7 @@
 	<text name="subject_label">
 		Emne:
 	</text>
-	<line_editor label="Skriv dit emne her." name="subject_form" />
+	<line_editor label="Skriv dit emne her." name="subject_form"/>
 	<text name="msg_label">
 		Besked:
 	</text>
@@ -22,10 +22,10 @@
 	<text name="fine_print">
 		Hvis din modtager opretter en konto i SL, vil du få en henvisnings bonus.
 	</text>
-	<button label="Annullér" name="cancel_btn" />
-	<button label="Send" name="send_btn" />
+	<button label="Annullér" name="cancel_btn"/>
+	<button label="Send" name="send_btn"/>
 	<string name="default_subject">
-		Postkort fra [SECOND_LIFE]
+		Postkort fra [SECOND_LIFE].
 	</string>
 	<string name="default_message">
 		Tjek det her ud!
diff --git a/indra/newview/skins/default/xui/da/floater_preferences.xml b/indra/newview/skins/default/xui/da/floater_preferences.xml
index e251c9ad2c6..f0fe3472d00 100644
--- a/indra/newview/skins/default/xui/da/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/da/floater_preferences.xml
@@ -1,8 +1,15 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="Preferences" title="INDSTILLINGER">
-	<button label="OK" label_selected="OK" name="OK" />
-	<button label="Annullér" label_selected="Annullér" name="Cancel" />
-	<button label="Gem" label_selected="Gem" name="Apply" />
-	<button label="Om" label_selected="Om" name="About..." />
-	<button label="Hjælp" label_selected="Hjælp" name="Help" />
+	<button label="OK" label_selected="OK" name="OK"/>
+	<button label="Annullér" label_selected="Annullér" name="Cancel"/>
+	<tab_container name="pref core">
+		<panel label="Generelt" name="general"/>
+		<panel label="Grafik" name="display"/>
+		<panel label="Privatliv" name="im"/>
+		<panel label="Sound" name="audio"/>
+		<panel label="Chat" name="chat"/>
+		<panel label="Beskeder" name="msgs"/>
+		<panel label="Opsætning" name="input"/>
+		<panel label="Avanceret" name="advanced1"/>
+	</tab_container>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_preview_animation.xml b/indra/newview/skins/default/xui/da/floater_preview_animation.xml
index 1494bf36d08..436843decc9 100644
--- a/indra/newview/skins/default/xui/da/floater_preview_animation.xml
+++ b/indra/newview/skins/default/xui/da/floater_preview_animation.xml
@@ -1,10 +1,11 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="preview_anim">
+	<floater.string name="Title">
+		Animation: [NAME]
+	</floater.string>
 	<text name="desc txt">
 		Beskrivelse:
 	</text>
-	<button label="Afspil i verden" label_selected="Stop" name="Anim play btn"
-	     tool_tip="Afspil denne animation så andre kan se den." />
-	<button label="Afspil lokalt" label_selected="Stop" name="Anim audition btn"
-	     tool_tip="Afspil denne animation så kun du kan se den." />
+	<button label="Afspil i verden" label_selected="Stop" name="Anim play btn" tool_tip="Vis denne animation så andre kan se den"/>
+	<button label="Afspil lokalt" label_selected="Stop" name="Anim audition btn" tool_tip="Vis denne animation så kun du kan se den"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_preview_classified.xml b/indra/newview/skins/default/xui/da/floater_preview_classified.xml
index cf2d14b80a4..bc232f3e9f9 100644
--- a/indra/newview/skins/default/xui/da/floater_preview_classified.xml
+++ b/indra/newview/skins/default/xui/da/floater_preview_classified.xml
@@ -1,2 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="classified_preview" title="ANNONCE INFORMATION" />
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="classified_preview" title="ANNONCE INFORMATION">
+	<floater.string name="Title">
+		Annonce: [NAME]
+	</floater.string>
+</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_preview_sound.xml b/indra/newview/skins/default/xui/da/floater_preview_sound.xml
index 9fbfba88b5c..21f76564622 100644
--- a/indra/newview/skins/default/xui/da/floater_preview_sound.xml
+++ b/indra/newview/skins/default/xui/da/floater_preview_sound.xml
@@ -1,10 +1,11 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="preview_sound">
+	<floater.string name="Title">
+		Lyd: [NAME]
+	</floater.string>
 	<text name="desc txt">
 		Beskrivelse:
 	</text>
-	<button label="Afspil lokalt" label_selected="Afspil lokalt" name="Sound audition btn"
-	     tool_tip="Afspil denne lyd så kun du kan høre den." />
-	<button label="Afspil i verden" label_selected="Afspil i verden" name="Sound play btn"
-	     tool_tip="Afspil denne lyd så den kan høres af andre." />
+	<button label="Afspil i verden" label_selected="Afspil i verden" name="Sound play btn" tool_tip="Afspil denne lyd så alle kan høre den"/>
+	<button label="Afspil lokalt" label_selected="Afspil lokalt" name="Sound audition btn" tool_tip="Afspil denne lyd så kun du kan høre den"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_region_info.xml b/indra/newview/skins/default/xui/da/floater_region_info.xml
index 5c95c8ed5ef..ae00f90f164 100644
--- a/indra/newview/skins/default/xui/da/floater_region_info.xml
+++ b/indra/newview/skins/default/xui/da/floater_region_info.xml
@@ -1,2 +1,2 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="regioninfo" title="REGION/ESTATE" />
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="regioninfo" title="REGION/ESTATE"/>
diff --git a/indra/newview/skins/default/xui/da/floater_script_queue.xml b/indra/newview/skins/default/xui/da/floater_script_queue.xml
index 3f54c924267..1ff54944583 100644
--- a/indra/newview/skins/default/xui/da/floater_script_queue.xml
+++ b/indra/newview/skins/default/xui/da/floater_script_queue.xml
@@ -1,4 +1,19 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="queue" title="NULSTIL FORLØB">
-	<button label="Luk" label_selected="Luk" name="close" />
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="queue" title="NULSTIL FREMSKRIDT">
+	<floater.string name="Starting">
+		Starter [START] af [COUNT] genstande.
+	</floater.string>
+	<floater.string name="Done">
+		Færdig.
+	</floater.string>
+	<floater.string name="Resetting">
+		Nulstiller
+	</floater.string>
+	<floater.string name="Running">
+		Running
+	</floater.string>
+	<floater.string name="NotRunning">
+		Not running
+	</floater.string>
+	<button label="Luk" label_selected="Luk" name="close"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_search.xml b/indra/newview/skins/default/xui/da/floater_search.xml
new file mode 100644
index 00000000000..80a30b1aa17
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/floater_search.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_search" title="FIND">
+	<floater.string name="loading_text">
+		Henter...
+	</floater.string>
+	<floater.string name="done_text">
+		Færdig
+	</floater.string>
+	<layout_stack name="stack1">
+		<layout_panel name="browser_layout">
+			<text name="refresh_search">
+				Gentag søgning med &quot;God level&quot;
+			</text>
+		</layout_panel>
+	</layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_select_key.xml b/indra/newview/skins/default/xui/da/floater_select_key.xml
index 7fa868a3a9f..fe0d31c6c35 100644
--- a/indra/newview/skins/default/xui/da/floater_select_key.xml
+++ b/indra/newview/skins/default/xui/da/floater_select_key.xml
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="modal container" title="">
-	<button label="Annullér" label_selected="Annullér" name="Cancel" />
+	<button label="Annullér" label_selected="Annullér" name="Cancel"/>
 	<text name="Save item as:">
-		Tryk på en taste for at vælge
+		Tryk på en taste for at sætte din &quot;Tale&quot; knap udløser.
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_sound_preview.xml b/indra/newview/skins/default/xui/da/floater_sound_preview.xml
index e54bdf4f42c..5f74f28a23c 100644
--- a/indra/newview/skins/default/xui/da/floater_sound_preview.xml
+++ b/indra/newview/skins/default/xui/da/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 name="Sound Preview" title="SOUND.WAV">
 	<text name="name_label">
 		Navn:
@@ -6,6 +6,6 @@
 	<text name="description_label">
 		Beskrivelse:
 	</text>
-	<button label="Annullér" label_selected="Annullér" name="cancel_btn" />
-	<button label="Hent (L$[AMOUNT])" label_selected="Hent (L$[AMOUNT])" name="ok_btn" />
+	<button label="Annullér" label_selected="Annullér" name="cancel_btn"/>
+	<button label="Hent (L$[AMOUNT])" label_selected="Hent (L$[AMOUNT])" name="ok_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/da/floater_texture_ctrl.xml
index 4167e2938aa..00b49a9df90 100644
--- a/indra/newview/skins/default/xui/da/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/da/floater_texture_ctrl.xml
@@ -1,23 +1,23 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="texture picker" title="VÆLG: TEKSTUR">
 	<string name="choose_picture">
 		Klik for at vælge et billede
 	</string>
 	<text name="Multiple">
-		Flere
+		Flere teksturer
 	</text>
 	<text name="unknown">
 		Størrelse: [DIMENSIONS]
 	</text>
-	<button label="Standard" label_selected="Standard" name="Default" />
-	<button label="Ingen" label_selected="Ingen" name="None" />
-	<button label="Blank" label_selected="Blank" name="Blank" />
-	<check_box label="Vis mapper" name="show_folders_check" />
-	<search_editor label="Skriv her for at søge" name="inventory search editor" />
-	<check_box label="Benyt straks" name="apply_immediate_check" />
-	<button label="" label_selected="" name="Pipette" />
-	<button label="Annullér" label_selected="Annullér" name="Cancel" />
-	<button label="Vælg" label_selected="Vælg" name="Select" />
+	<button label="Standard" label_selected="Standard" name="Default"/>
+	<button label="Ingen" label_selected="Ingen" name="None"/>
+	<button label="Blank" label_selected="Blank" name="Blank"/>
+	<check_box label="Vis mapper" name="show_folders_check"/>
+	<search_editor label="Filtrér teksturer" name="inventory search editor"/>
+	<check_box label="Benyt ny" name="apply_immediate_check"/>
+	<button label="" label_selected="" name="Pipette"/>
+	<button label="Annullér" label_selected="Annullér" name="Cancel"/>
+	<button label="Ok" label_selected="Ok" name="Select"/>
 	<string name="pick title">
 		Vælg:
 	</string>
diff --git a/indra/newview/skins/default/xui/da/floater_tools.xml b/indra/newview/skins/default/xui/da/floater_tools.xml
index c3287bac84e..77459aca674 100644
--- a/indra/newview/skins/default/xui/da/floater_tools.xml
+++ b/indra/newview/skins/default/xui/da/floater_tools.xml
@@ -1,92 +1,160 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="toolbox floater" title="" short_title="BYG">
+<floater name="toolbox floater" short_title="BYGGE VÆRKTØJER" title="">
+	<floater.string name="status_rotate">
+		Træk i de farvede bånd for at rotere objekt
+	</floater.string>
+	<floater.string name="status_scale">
+		Klik og træk for at strække valgte side
+	</floater.string>
+	<floater.string name="status_move">
+		Træk for at flytte, hold shift nede for at kopiere
+	</floater.string>
+	<floater.string name="status_modifyland">
+		Klik og hold for at redigere land
+	</floater.string>
+	<floater.string name="status_camera">
+		Klik og træk for at flytte kamera
+	</floater.string>
+	<floater.string name="status_grab">
+		Træk for at flytte, Ctrl for at løfte, Ctrl+Shift for at rotere
+	</floater.string>
+	<floater.string name="status_place">
+		Klik et sted i verden for at bygge
+	</floater.string>
+	<floater.string name="status_selectland">
+		Klik og træk for at vælge land
+	</floater.string>
+	<floater.string name="grid_screen_text">
+		Skærm
+	</floater.string>
+	<floater.string name="grid_local_text">
+		Lokalt
+	</floater.string>
+	<floater.string name="grid_world_text">
+		Verden
+	</floater.string>
+	<floater.string name="grid_reference_text">
+		Reference
+	</floater.string>
+	<floater.string name="grid_attachment_text">
+		Vedhæng
+	</floater.string>
 	<button label="" label_selected="" name="button focus" tool_tip="Fokus"/>
 	<button label="" label_selected="" name="button move" tool_tip="Flyt"/>
 	<button label="" label_selected="" name="button edit" tool_tip="Redigér"/>
 	<button label="" label_selected="" name="button create" tool_tip="Opret"/>
 	<button label="" label_selected="" name="button land" tool_tip="Land"/>
+	<text name="text status">
+		Træk for at flytte, shift+træk for at kopiere
+	</text>
 	<radio_group name="focus_radio_group">
 		<radio_item label="Zoom" name="radio zoom"/>
 		<radio_item label="Kredsløb (Ctrl)" name="radio orbit"/>
-		<radio_item label="Panorér (Ctrl-Shift)" name="radio pan"/>
+		<radio_item label="Panorér (Ctrl+Shift)" name="radio pan"/>
 	</radio_group>
 	<radio_group name="move_radio_group">
 		<radio_item label="Flyt" name="radio move"/>
 		<radio_item label="Løft (Ctrl)" name="radio lift"/>
-		<radio_item label="Spin (Ctrl-Shift)" name="radio spin"/>
+		<radio_item label="Spin (Ctrl+Shift)" name="radio spin"/>
 	</radio_group>
 	<radio_group name="edit_radio_group">
-		<radio_item label="Position" name="radio position"/>
+		<radio_item label="Flyt" name="radio position"/>
 		<radio_item label="Rotér (Ctrl)" name="radio rotate"/>
-		<radio_item label="Stræk (Ctrl-Shift)" name="radio stretch"/>
-		<radio_item label="Vælg tekstur" name="radio select face"/>
+		<radio_item label="Stræk (Ctrl+Shift)" name="radio stretch"/>
+		<radio_item label="Vælg overflade" name="radio select face"/>
 	</radio_group>
 	<check_box label="Redigér sammenlænkede dele" name="checkbox edit linked parts"/>
-	<text name="text ruler mode">
-		Lineal:
+	<text name="RenderingCost" tool_tip="Hvis beregnede rendering omkostninger for dette objekt">
+		þ: [COUNT]
 	</text>
-	<combo_box name="combobox grid mode">
-		<combo_box.item name="World" label="Verden"/>
-		<combo_box.item name="Local" label="Lokal"/>
-		<combo_box.item name="Reference" label="Reference"/>
-	</combo_box>
 	<check_box label="Stræk begge sider" name="checkbox uniform"/>
-	<check_box label="Stræk teksturer" name="checkbox stretch textures"/>
-	<check_box label="Benyt gitter" name="checkbox snap to grid"/>
-	<button label="Valg..." label_selected="Valg..." name="Options..." height="18" bottom_delta="-15"/>
-	<text name="text status">
-		Træk for at flytte, shift+træk for at kopiere
-	</text>
-	<button label="" label_selected="" name="ToolCube" tool_tip="Terning" />
-	<button label="" label_selected="" name="ToolPrism" tool_tip="Prisme" />
-	<button label="" label_selected="" name="ToolPyramid" tool_tip="Pyramide" />
-	<button label="" label_selected="" name="ToolTetrahedron" tool_tip="Tetraed" />
-	<button label="" label_selected="" name="ToolCylinder" tool_tip="Cylinder" />
-	<button label="" label_selected="" name="ToolHemiCylinder" tool_tip="Hemicylinder" />
-	<button label="" label_selected="" name="ToolCone" tool_tip="Kegle" />
-	<button label="" label_selected="" name="ToolHemiCone" tool_tip="Hemikegle" />
-	<button label="" label_selected="" name="ToolSphere" tool_tip="Sfære" />
-	<button label="" label_selected="" name="ToolHemiSphere" tool_tip="Hemisfære" />
-	<button label="" label_selected="" name="ToolTorus" tool_tip="Kuglering" />
-	<button label="" label_selected="" name="ToolTube" tool_tip="Rør" />
-	<button label="" label_selected="" name="ToolRing" tool_tip="Ring" />
-	<button label="" label_selected="" name="ToolTree" tool_tip="Træ" />
-	<button label="" label_selected="" name="ToolGrass" tool_tip="Græs" />
-	<check_box label="Hold værktøjet valgt" name="checkbox sticky" />
-	<check_box label="Kopiér valgte" name="checkbox copy selection" />
-	<check_box label="Centreret kopi" name="checkbox copy centers" />
-	<check_box label="Rotér" name="checkbox copy rotates" />
+	<check_box initial_value="true" label="Stræk teksturer" name="checkbox stretch textures"/>
+	<check_box initial_value="true" label="Benyt gitter" name="checkbox snap to grid"/>
+	<combo_box name="combobox grid mode" tool_tip="Vælg hvilken type lineal der skal bruges til positionering af objekt">
+		<combo_box.item label="Verden" name="World"/>
+		<combo_box.item label="Lokalt" name="Local"/>
+		<combo_box.item label="Reference" name="Reference"/>
+	</combo_box>
+	<button bottom_delta="-15" height="18" label="Valg..." label_selected="Valg..." name="Options..." tool_tip="Se flere muligheder for gitter"/>
+	<button label="" label_selected="" name="ToolCube" tool_tip="Terning"/>
+	<button label="" label_selected="" name="ToolPrism" tool_tip="Prisme"/>
+	<button label="" label_selected="" name="ToolPyramid" tool_tip="Pyramide"/>
+	<button label="" label_selected="" name="ToolTetrahedron" tool_tip="Tetraed"/>
+	<button label="" label_selected="" name="ToolCylinder" tool_tip="Cylinder"/>
+	<button label="" label_selected="" name="ToolHemiCylinder" tool_tip="Hemicylinder"/>
+	<button label="" label_selected="" name="ToolCone" tool_tip="Kegle"/>
+	<button label="" label_selected="" name="ToolHemiCone" tool_tip="Hemikegle"/>
+	<button label="" label_selected="" name="ToolSphere" tool_tip="Sfære"/>
+	<button label="" label_selected="" name="ToolHemiSphere" tool_tip="Hemisfære"/>
+	<button label="" label_selected="" name="ToolTorus" tool_tip="Kuglering"/>
+	<button label="" label_selected="" name="ToolTube" tool_tip="Rør"/>
+	<button label="" label_selected="" name="ToolRing" tool_tip="Ring"/>
+	<button label="" label_selected="" name="ToolTree" tool_tip="Træ"/>
+	<button label="" label_selected="" name="ToolGrass" tool_tip="Græs"/>
+	<check_box label="Hold værktøjet valgt" name="checkbox sticky"/>
+	<check_box label="Kopier valgte" name="checkbox copy selection"/>
+	<check_box initial_value="true" label="Centreret kopi" name="checkbox copy centers"/>
+	<check_box label="Rotér kopi" name="checkbox copy rotates"/>
 	<radio_group name="land_radio_group">
-		<radio_item label="Vælg" name="radio select land" />
-		<radio_item label="Udflad" name="radio flatten" />
-		<radio_item label="Hæv" name="radio raise" />
-		<radio_item label="Sænk" name="radio lower" />
-		<radio_item label="Udjævn" name="radio smooth" />
-		<radio_item label="Gør ujævnt" name="radio noise" />
-		<radio_item label="Tilbagefør" name="radio revert" />
+		<radio_item label="Vælg" name="radio select land"/>
+		<radio_item label="Udflad" name="radio flatten"/>
+		<radio_item label="Hæv" name="radio raise"/>
+		<radio_item label="Sænk" name="radio lower"/>
+		<radio_item label="Udjævn" name="radio smooth"/>
+		<radio_item label="Gør ujævnt" name="radio noise"/>
+		<radio_item label="Tilbagefør" name="radio revert"/>
 	</radio_group>
-	<combo_box name="combobox brush size">
-		<combo_box.item name="Small" label="Lille"/>
-		<combo_box.item name="Medium" label="Mellem"/>
-		<combo_box.item name="Large" label="Stor"/>
-	</combo_box>
-	<text name="Strength:">
-		Styrke:
-	</text>
 	<text name="Dozer Size:">
 		Størrelse
 	</text>
 	<text name="Strength:">
-		Styrke
+		Styrke:
 	</text>
+	<button label="Apply" label_selected="Apply" name="button apply to selection" tool_tip="Ændre valgte land"/>
 	<text name="obj_count">
-		Valgte objekter: [COUNT]
+		Objekter: [COUNT]
 	</text>
 	<text name="prim_count">
-		prims: [COUNT]
+		Prims: [COUNT]
 	</text>
 	<tab_container name="Object Info Tabs">
 		<panel label="Generelt" name="General">
+			<panel.string name="text deed continued">
+				Dedikér
+			</panel.string>
+			<panel.string name="text deed">
+				Deed
+			</panel.string>
+			<panel.string name="text modify info 1">
+				Du kan ændre dette objekt
+			</panel.string>
+			<panel.string name="text modify info 2">
+				Du kan ændre disse objekter
+			</panel.string>
+			<panel.string name="text modify info 3">
+				Du kan ikke ændre dette objekt
+			</panel.string>
+			<panel.string name="text modify info 4">
+				Du kan ikke ændre disse objekter
+			</panel.string>
+			<panel.string name="text modify warning">
+				Du skal vælge hele objektet for at sætte rettigheder
+			</panel.string>
+			<panel.string name="Cost Default">
+				Pris: L$
+			</panel.string>
+			<panel.string name="Cost Total">
+				Total pris: L$
+			</panel.string>
+			<panel.string name="Cost Per Unit">
+				Pris pr: L$
+			</panel.string>
+			<panel.string name="Cost Mixed">
+				Blandet pris
+			</panel.string>
+			<panel.string name="Sale Mixed">
+				Blandet salg
+			</panel.string>
 			<text name="Name:">
 				Navn:
 			</text>
@@ -99,128 +167,77 @@
 			<text name="Creator Name">
 				Thrax Linden
 			</text>
-			<button label="Profil..." label_selected="Profil..." name="button creator profile"/>
 			<text name="Owner:">
 				Ejer:
 			</text>
 			<text name="Owner Name">
 				Thrax Linden
 			</text>
-			<button label="Profil..." label_selected="Profil..." name="button owner profile"/>
 			<text name="Group:">
 				Gruppe:
 			</text>
-			<text name="Group Name Proxy">
-				The Lindens
-			</text>
-			<button label="Sæt..." label_selected="Sæt..." name="button set group"/>
-			<text name="Permissions:">
-				Tilladelser:
-			</text>
-
-			<check_box label="Del med gruppe" name="checkbox share with group" tool_tip="Tillad gruppemedlemmer at flytte, ændre, kopiere og slette."/>
-			<string name="text deed continued">
-				Deed...
-			</string>
-			<string name="text deed">
-				Deed
-			</string>
-			<button label="Dedikér..." label_selected="Dedikér..." name="button deed" tool_tip="Gruppedelte genstande kan dedikeres af en gruppeadministrator."/>
-			<check_box label="Tillad enhver at flytte" name="checkbox allow everyone move"/>
-			<check_box label="Tillad enhver at kopiére" name="checkbox allow everyone copy"/>
-			<check_box label="Vis i søgning" name="search_check" tool_tip="Lad folk se dette objekt i søgeresultater"/>
-			<check_box label="Til salg" name="checkbox for sale"/>
-			<text name="Cost">
-				Pris:  L$
+			<button label="Sæt..." label_selected="Sæt..." name="button set group" tool_tip="Vælg en gruppe der skal dele dette objekts rettigheder"/>
+			<name_box initial_value="Henter..." name="Group Name Proxy"/>
+			<button label="Dedikér" label_selected="Dedikér" name="button deed" tool_tip="Dedikering giver denne genstand væk med rettighederne for &apos;næste ejer&apos;. Gruppe-delte objekter kan dedikeres af gruppe-administrator."/>
+			<check_box label="Del" name="checkbox share with group" tool_tip="Tillad alle medlemmer fra den valgte gruppe at dele dine &apos;redigere&apos; rettigheder for dette objekt. Du skal dedikere for åbne for rolle begrænsninger."/>
+			<text name="label click action">
+				Klik for at:
 			</text>
+			<combo_box name="clickaction">
+				<combo_box.item label="Rør (Standard)" name="Touch/grab(default)"/>
+				<combo_box.item label="Sid på objekt" name="Sitonobject"/>
+				<combo_box.item label="Køb objekt" name="Buyobject"/>
+				<combo_box.item label="Betal objekt" name="Payobject"/>
+				<combo_box.item label="Ã…ben" name="Open"/>
+				<combo_box.item label="Zoom" name="Zoom"/>
+			</combo_box>
+			<check_box label="Til salg:" name="checkbox for sale"/>
 			<combo_box name="sale type">
 				<combo_box.item label="Kopi" name="Copy"/>
 				<combo_box.item label="Indhold" name="Contents"/>
 				<combo_box.item label="Original" name="Original"/>
 			</combo_box>
-
-			<text name="label click action">
-				NÃ¥r der venstreklikkes:
-			</text>
-			<combo_box name="clickaction">
-				<combo_box.item name="Touch/grab(default)" label="Rør/tag (standard)"/>
-				<combo_box.item name="Sitonobject" label="Sid på objekt"/>
-				<combo_box.item name="Buyobject" label="Køb objekt"/>
-				<combo_box.item name="Payobject" label="Betal objekt"/>
-				<combo_box.item name="Open" label="Ã…ben"/>
-				<combo_box.item name="Play" label="Afspil medie på parcel"/>
-				<combo_box.item name="Opemmedia" label="Åben media på parcel"/>
-			</combo_box>
-		<panel name="perms_build">
-			<text name="perm_modify">
-				Du kan redigére dette objekt
-			</text>
-			<text name="B:">
-				B:
-			</text>
-			<text name="O:">
-				O:
-			</text>
-			<text name="G:">
-				G:
-			</text>
-			<text name="E:">
-				E:
-			</text>
-			<text name="N:">
-				N:
-			</text>
-			<text name="F:">
-				F:
-			</text>
-			<text name="Next owner can:">
-				Næste ejer kan:
-			</text>
-			<check_box label="Redigére" name="checkbox next owner can modify"/>
-			<check_box label="Kopiére" name="checkbox next owner can copy" left_delta="80"/>
-			<check_box name="checkbox next owner can transfer" left_delta="67"/>
-		</panel>
-			<string name="text modify info 1">
-				Du kan redigere dette objekt
-			</string>
-			<string name="text modify info 2">
-				Du kan redigere disse objekter
-			</string>
-			<string name="text modify info 3">
-				Du kan ikke redigere dette objekt
-			</string>
-			<string name="text modify info 4">
-				Du kan ikke redigere disse objekter
-			</string>
-			<string name="text modify warning">
-				Du skal vælge hele objektet for at sætte rettigheder
-			</string>
-			<string name="Cost Default">
-				Pris: L$
-			</string>
-			<string name="Cost Total">
-				Total pris: L$
-			</string>
-			<string name="Cost Per Unit">
-				Pris Pr: L$
-			</string>
-			<string name="Cost Mixed">
-				Blandet pris
-			</string>
-			<string name="Sale Mixed">
-				Blandet salg
-			</string>
+			<spinner label="Pris: L$" name="Edit Cost"/>
+			<check_box label="Vis i søgning" name="search_check" tool_tip="Lad folk se dette objekt i søgeresultater"/>
+			<panel name="perms_build">
+				<text name="perm_modify">
+					Du kan redigere dette objekt
+				</text>
+				<text name="Anyone can:">
+					Enhver:
+				</text>
+				<check_box label="Flyt" name="checkbox allow everyone move"/>
+				<check_box label="Kopi" name="checkbox allow everyone copy"/>
+				<text name="Next owner can:">
+					Næste ejer:
+				</text>
+				<check_box label="Redigére" name="checkbox next owner can modify"/>
+				<check_box label="Kopiére" left_delta="80" name="checkbox next owner can copy"/>
+				<check_box label="Sælge/give væk" left_delta="67" name="checkbox next owner can transfer" tool_tip="Næste ejer kan give væk eller sælge dette objekt"/>
+				<text name="B:">
+					B:
+				</text>
+				<text name="O:">
+					O:
+				</text>
+				<text name="G:">
+					G:
+				</text>
+				<text name="E:">
+					E:
+				</text>
+				<text name="N:">
+					N:
+				</text>
+				<text name="F:">
+					F:
+				</text>
+			</panel>
 		</panel>
 		<panel label="Objekt" name="Object">
-			<text name="select_single">
-				Vælg kun én prim for at ændre indstillinger.
-			</text>
-			<text name="edit_object">
-				Ret objektets indstillinger:
-			</text>
 			<check_box label="Låst" name="checkbox locked" tool_tip="Forhindrer objektet i at blive flyttet eller slettet. Ofte brugbar under byggeri for at forhindre utilsigtet ændring."/>
 			<check_box label="Fysisk" name="Physical Checkbox Ctrl" tool_tip="Tillader objekter at blive skubbet og at være påvirkelig af tyngdekraften"/>
-			<check_box label="Temporær" name="Temporary Checkbox Ctrl" tool_tip="Medfårer at objekter bliver slettet 1 minut efter de er skabt."/>
+			<check_box label="Temporær" name="Temporary Checkbox Ctrl" tool_tip="Medfører at objekt slettes 1 minut efter skabelse"/>
 			<check_box label="Uden masse" name="Phantom Checkbox Ctrl" tool_tip="FÃ¥r objektet til ikke at kollidere med andre objekter eller personer"/>
 			<text name="label position">
 				Position (meter)
@@ -240,33 +257,27 @@
 			<spinner label="X" name="Rot X"/>
 			<spinner label="Y" name="Rot Y"/>
 			<spinner label="Z" name="Rot Z"/>
-			<text name="label material">
-				Materiale
-			</text>
-			<combo_box name="material">
-				<combo_box.item name="Stone" label="Sten"/>
-				<combo_box.item name="Metal" label="Metal"/>
-				<combo_box.item name="Glass" label="Glas"/>
-				<combo_box.item name="Wood" label="Træ"/>
-				<combo_box.item name="Flesh" label="Kød"/>
-				<combo_box.item name="Plastic" label="Plastik"/>
-				<combo_box.item name="Rubber" label="Gummi"/>
-			</combo_box>
-			<text name="label basetype">
-				Byggegeometrisk figur
-			</text>
 			<combo_box name="comboBaseType">
-				<combo_box.item name="Box" label="Terning"/>
-				<combo_box.item name="Cylinder" label="Cylinder"/>
-				<combo_box.item name="Prism" label="Prisme"/>
-				<combo_box.item name="Sphere" label="Spfære"/>
-				<combo_box.item name="Torus" label="Kuglering"/>
-				<combo_box.item name="Tube" label="Rør"/>
-				<combo_box.item name="Ring" label="Ring"/>
-				<combo_box.item name="Sculpted" label="Sculpted"/>
+				<combo_box.item label="Terning" name="Box"/>
+				<combo_box.item label="Cylinder" name="Cylinder"/>
+				<combo_box.item label="Prisme" name="Prism"/>
+				<combo_box.item label="Spfære" name="Sphere"/>
+				<combo_box.item label="Kuglering" name="Torus"/>
+				<combo_box.item label="Rør" name="Tube"/>
+				<combo_box.item label="Ring" name="Ring"/>
+				<combo_box.item label="Sculpted" name="Sculpted"/>
+			</combo_box>
+			<combo_box name="material">
+				<combo_box.item label="Sten" name="Stone"/>
+				<combo_box.item label="Metal" name="Metal"/>
+				<combo_box.item label="Glas" name="Glass"/>
+				<combo_box.item label="Træ" name="Wood"/>
+				<combo_box.item label="Kød" name="Flesh"/>
+				<combo_box.item label="Plastik" name="Plastic"/>
+				<combo_box.item label="Gummi" name="Rubber"/>
 			</combo_box>
 			<text name="text cut">
-				Snit begynd og slut
+				Snit Z-akse (start/slut)
 			</text>
 			<spinner label="B" name="cut begin"/>
 			<spinner label="S" name="cut end"/>
@@ -280,13 +291,13 @@
 				Form på hul
 			</text>
 			<combo_box name="hole">
-				<combo_box.item name="Default" label="Standard"/>
-				<combo_box.item name="Circle" label="Cirkel"/>
-				<combo_box.item name="Square" label="Firkant"/>
-				<combo_box.item name="Triangle" label="Trekant"/>
+				<combo_box.item label="Standard" name="Default"/>
+				<combo_box.item label="Cirkel" name="Circle"/>
+				<combo_box.item label="Firkant" name="Square"/>
+				<combo_box.item label="Trekant" name="Triangle"/>
 			</combo_box>
 			<text name="text twist">
-				Vrid begynd og slut
+				Vrid (start/slut)
 			</text>
 			<spinner label="B" name="Twist Begin"/>
 			<spinner label="S" name="Twist End"/>
@@ -304,13 +315,13 @@
 			<spinner label="X" name="Shear X"/>
 			<spinner label="Y" name="Shear Y"/>
 			<text name="advanced_cut">
-				Profilsnit begynd og slut
+				Snit - radial (start/slut)
 			</text>
 			<text name="advanced_dimple">
-				Fordybning begynd og slut
+				Fordybning (Start/slut)
 			</text>
 			<text name="advanced_slice">
-				Snit begynd og slut
+				Skive (start/slut)
 			</text>
 			<spinner label="B" name="Path Limit Begin"/>
 			<spinner label="S" name="Path Limit End"/>
@@ -326,17 +337,17 @@
 				Omdrejninger
 			</text>
 			<texture_picker label="Sculpt tekstur" name="sculpt texture control" tool_tip="Klik her for at vælge billede"/>
-			<check_box label="Spejlet" name="sculpt mirror control" tool_tip="Spejler sculpted prim omkring X aksen."/>
-			<check_box label="Vrangen ud" name="sculpt invert control" tool_tip="Vender &apos;vrangen&apos; ud på sculpted prim."/>
+			<check_box label="Spejlet" name="sculpt mirror control" tool_tip="Spejler sculpted prim omkring X akse"/>
+			<check_box label="Vrangen ud" name="sculpt invert control" tool_tip="Vender &apos;vrangen ud&apos; på sculpted prim"/>
 			<text name="label sculpt type">
 				Sting type
 			</text>
 			<combo_box name="sculpt type control">
-				<combo_box.item name="None" label="(ingen)"/>
-				<combo_box.item name="Sphere" label="Sfære"/>
-				<combo_box.item name="Torus" label="Kuglering"/>
-				<combo_box.item name="Plane" label="Plan"/>
-				<combo_box.item name="Cylinder" label="Cylinder"/>
+				<combo_box.item label="(ingen)" name="None"/>
+				<combo_box.item label="Sfære" name="Sphere"/>
+				<combo_box.item label="Kuglering" name="Torus"/>
+				<combo_box.item label="Plan" name="Plane"/>
+				<combo_box.item label="Cylinder" name="Cylinder"/>
 			</combo_box>
 		</panel>
 		<panel label="Features" name="Features">
@@ -346,107 +357,106 @@
 			<text name="edit_object">
 				Redigér objektets egenskaber:
 			</text>
-			<check_box label="Fleksibel/blød" name="Flexible1D Checkbox Ctrl" tool_tip="Tillader objektet at ændre form omkring Z-aksen. (Kun på klient-siden)"/>
-			<spinner label_width="78" width="141" label="Blødhed" name="FlexNumSections"/>
-			<spinner label_width="78" width="141" label="Tyngdekraft" name="FlexGravity"/>
-			<spinner label_width="78" width="141" label="Træk" name="FlexFriction"/>
-			<spinner label_width="78" width="141" label="Vind" name="FlexWind"/>
-			<spinner label_width="78" width="141" label="Spændstighed" name="FlexTension"/>
-			<spinner label_width="78" width="141" label="Kraft X" name="FlexForceX"/>
-			<spinner label_width="78" width="141" label="Kraft Y" name="FlexForceY"/>
-			<spinner label_width="78" width="141" label="Kraft Z" name="FlexForceZ"/>
+			<check_box label="Fleksibel/blød" name="Flexible1D Checkbox Ctrl" tool_tip="Tillader objektet at flekse omkring Z aksen (kun på klient siden)"/>
+			<spinner label="Blødhed" label_width="78" name="FlexNumSections" width="141"/>
+			<spinner label="Tyngdekraft" label_width="78" name="FlexGravity" width="141"/>
+			<spinner label="Træk" label_width="78" name="FlexFriction" width="141"/>
+			<spinner label="Vind" label_width="78" name="FlexWind" width="141"/>
+			<spinner label="Spændstighed" label_width="78" name="FlexTension" width="141"/>
+			<spinner label="Kraft X" label_width="78" name="FlexForceX" width="141"/>
+			<spinner label="Kraft Y" label_width="78" name="FlexForceY" width="141"/>
+			<spinner label="Kraft Z" label_width="78" name="FlexForceZ" width="141"/>
 			<check_box label="Lys" name="Light Checkbox Ctrl" tool_tip="Medfårer at objektet afgiver lys"/>
-			<text name="label color">
-				Farve
-			</text>
 			<color_swatch label="" name="colorswatch" tool_tip="Klik for at åbne farvevælger"/>
+			<texture_picker label="" name="light texture control" tool_tip="Klik for at vælge billede til projektion (har kun effekt hvis &apos;deferred rendering&apos; er aktiveret)"/>
 			<spinner label="Intensitet" name="Light Intensity"/>
+			<spinner label="Synsvidde" name="Light FOV"/>
 			<spinner label="Radius" name="Light Radius"/>
+			<spinner label="Fokus" name="Light Focus"/>
 			<spinner label="Udfasning" name="Light Falloff"/>
+			<spinner label="Omgivelser" name="Light Ambiance"/>
 		</panel>
 		<panel label="Tekstur" name="Texture">
+			<panel.string name="string repeats per meter">
+				Gentagelser pr. meter
+			</panel.string>
+			<panel.string name="string repeats per face">
+				Gentagelser pr. overflade
+			</panel.string>
 			<texture_picker label="Tekstur" name="texture control" tool_tip="Klik for at vælge billede"/>
 			<color_swatch label="Farve" name="colorswatch" tool_tip="Klik for at åbne farvevælger"/>
-			<text name="color trans" left="170" width="105">
+			<text left="170" name="color trans" width="105">
 				Gennemsigtighed%
 			</text>
 			<spinner left="171" name="ColorTrans"/>
-			<text name="glow label" left="170">
+			<text left="170" name="glow label">
 				Glød
 			</text>
 			<spinner left="170" name="glow"/>
-			<check_box label="Selvlysende" name="checkbox fullbright" left="170"/>
+			<check_box label="Selvlysende" left="170" name="checkbox fullbright"/>
 			<text name="tex gen">
 				Afbildning
 			</text>
 			<combo_box name="combobox texgen">
-				<combo_box.item name="Default" label="Standard"/>
-				<combo_box.item name="Planar" label="Plan"/>
+				<combo_box.item label="Standard" name="Default"/>
+				<combo_box.item label="Plan" name="Planar"/>
 			</combo_box>
 			<text name="label shininess">
 				Blankhed
 			</text>
 			<combo_box name="combobox shininess">
-				<combo_box.item name="None" label="Ingen"/>
-				<combo_box.item name="Low" label="Lav"/>
-				<combo_box.item name="Medium" label="Mellem"/>
-				<combo_box.item name="High" label="Høj"/>
+				<combo_box.item label="Ingen" name="None"/>
+				<combo_box.item label="Lav" name="Low"/>
+				<combo_box.item label="Mellem" name="Medium"/>
+				<combo_box.item label="Høj" name="High"/>
 			</combo_box>
 			<text name="label bumpiness">
 				Struktur
 			</text>
 			<combo_box name="combobox bumpiness">
-				<combo_box.item name="None" label="Ingen"/>
-				<combo_box.item name="Brightness" label="Lysintensitet"/>
-				<combo_box.item name="Darkness" label="Mørke"/>
-				<combo_box.item name="woodgrain" label="træårer"/>
-				<combo_box.item name="bark" label="bark"/>
-				<combo_box.item name="bricks" label="mursten"/>
-				<combo_box.item name="checker" label="tern"/>
-				<combo_box.item name="concrete" label="beton"/>
-				<combo_box.item name="crustytile" label="rustik flise"/>
-				<combo_box.item name="cutstone" label="Skåret sten"/>
-				<combo_box.item name="discs" label="plader"/>
-				<combo_box.item name="gravel" label="grus"/>
-				<combo_box.item name="petridish" label="petriskål"/>
-				<combo_box.item name="siding" label="udvendig beklædning"/>
-				<combo_box.item name="stonetile" label="stenflise"/>
-				<combo_box.item name="stucco" label="puds"/>
-				<combo_box.item name="suction" label="rør"/>
-				<combo_box.item name="weave" label="væv"/>
+				<combo_box.item label="Ingen" name="None"/>
+				<combo_box.item label="Lysintensitet" name="Brightness"/>
+				<combo_box.item label="Mørke" name="Darkness"/>
+				<combo_box.item label="træårer" name="woodgrain"/>
+				<combo_box.item label="bark" name="bark"/>
+				<combo_box.item label="mursten" name="bricks"/>
+				<combo_box.item label="tern" name="checker"/>
+				<combo_box.item label="beton" name="concrete"/>
+				<combo_box.item label="rustik flise" name="crustytile"/>
+				<combo_box.item label="Skåret sten" name="cutstone"/>
+				<combo_box.item label="plader" name="discs"/>
+				<combo_box.item label="grus" name="gravel"/>
+				<combo_box.item label="petriskål" name="petridish"/>
+				<combo_box.item label="udvendig beklædning" name="siding"/>
+				<combo_box.item label="stenflise" name="stonetile"/>
+				<combo_box.item label="puds" name="stucco"/>
+				<combo_box.item label="rør" name="suction"/>
+				<combo_box.item label="væv" name="weave"/>
 			</combo_box>
 			<text name="tex scale">
-				Gentagelser pr. overflade
+				Gentagelser på overflade
 			</text>
 			<spinner label="Vandret (U)" name="TexScaleU"/>
 			<check_box label="Vend" name="checkbox flip s"/>
 			<spinner label="Lodret (V)" name="TexScaleV"/>
 			<check_box label="Vend" name="checkbox flip t"/>
-			<text name="tex rotate">
-				Rotation (grader)
-			</text>
-			<string name="string repeats per meter">
-				Gentagelser pr. meter
-			</string>
-			<string name="string repeats per face">
-				Gentagelser pr. overflade
-			</string>
-			<text name="rpt">
-				Gentagelser pr. meter
-			</text>
-			<spinner left="125" name="TexRot" width="55" />
-			<spinner left="125" name="rptctrl" width="55" />
-			<button label="Gem" label_selected="Gem" name="button apply" left_delta="62"/>
+			<spinner label="RotationËš" left="125" name="TexRot" width="55"/>
+			<spinner label="Gentagelser pr. meter" left="125" name="rptctrl" width="55"/>
+			<button label="Gem" label_selected="Gem" left_delta="62" name="button apply"/>
 			<text name="tex offset">
-				Offset
+				Tekstur offset
 			</text>
 			<spinner label="Vandret (U)" name="TexOffsetU"/>
 			<spinner label="Lodret (V)" name="TexOffsetV"/>
-			<text name="textbox autofix">
-				Rette medie tekstur ind
-(skal indlæses først)
-			</text>
-			<button label="Ret ind" label_selected="Ret ind" name="button align" left="160"/>
+			<panel name="Add_Media">
+				<text name="media_tex">
+					Media
+				</text>
+				<button name="add_media" tool_tip="Tilføj media"/>
+				<button name="delete_media" tool_tip="Slet denne media tekstur"/>
+				<button name="edit_media" tool_tip="Redigér dette media"/>
+				<button label="Flugt" label_selected="Flugt Media" name="button align" tool_tip="Flugt media tekstur (skal hentes først)"/>
+			</panel>
 		</panel>
 		<panel label="Indhold" name="Contents">
 			<button label="Nyt script" label_selected="Nyt script" name="button new script"/>
@@ -458,14 +468,20 @@
 			Parcel information
 		</text>
 		<text name="label_area_price">
-			Pris: L$[PRICE] for [AREA] m².
+			Pris: L$[PRICE] for [AREA] m²
 		</text>
 		<text name="label_area">
-			Område: [AREA] m².
+			Areal: [AREA] m²
 		</text>
-		<button label="Om land..." label_selected="Om land..." name="button about land"/>
-		<check_box label="Vis ejere" name="checkbox show owners" tool_tip="Farver grunde afhængigt af ejerskab: &#10;&#10;Grøn = Dit land &#10;Turkis = Din gruppes land &#10;Rød = Ejet af andre &#10;Gul = Til salg &#10;Lilla = På auktion &#10;Grå = Offentligt ejet"/>
-		<button label="?" label_selected="?" name="button show owners help"/>
+		<button label="Om land" label_selected="Om land" name="button about land"/>
+		<check_box label="Vis ejere" name="checkbox show owners" tool_tip="Farver grunde afhængigt af ejerskab: 
+
+Grøn = Dit land 
+Turkis = Din gruppes land 
+Rød = Ejet af andre 
+Gul = Til salg 
+Lilla = PÃ¥ auktion 
+Grå = Offentligt ejet"/>
 		<text name="label_parcel_modify">
 			Redigere grund
 		</text>
@@ -475,45 +491,6 @@
 			Transaktioner for land
 		</text>
 		<button label="Køb land" label_selected="Køb land" name="button buy land"/>
-		<button label="Flyt fra land" label_selected="Flyt fra land" name="button abandon land"/>
+		<button label="Efterlad land" label_selected="Efterlad land" name="button abandon land"/>
 	</panel>
-	<floater.string name="status_rotate">
-		Træk i de farvede bånd for at rotere objekt
-	</floater.string>
-	<floater.string name="status_scale">
-		Klik og træk for at strække valgte side
-	</floater.string>
-	<floater.string name="status_move">
-		Træk for at flytte, hold shift nede for at kopiere
-	</floater.string>
-	<floater.string name="status_modifyland">
-		Klik og hold for at redigere land
-	</floater.string>
-	<floater.string name="status_camera">
-		Klik og træk for at ændre synsvinkel
-	</floater.string>
-	<floater.string name="status_grab">
-		Træk for at flytte objekter, Ctrl for at løfte, Ctrl-Shift for at rotere
-	</floater.string>
-	<floater.string name="status_place">
-		Klik et sted i verden for at bygge
-	</floater.string>
-	<floater.string name="status_selectland">
-		Klik og træk for at vælge land
-	</floater.string>
-	<floater.string name="grid_screen_text">
-		Skærm
-	</floater.string>
-	<floater.string name="grid_local_text">
-		Lokalt
-	</floater.string>
-	<floater.string name="grid_world_text">
-		Verden
-	</floater.string>
-	<floater.string name="grid_reference_text">
-		Reference
-	</floater.string>
-	<floater.string name="grid_attachment_text">
-		Vedhæng
-	</floater.string>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_voice_controls.xml b/indra/newview/skins/default/xui/da/floater_voice_controls.xml
new file mode 100644
index 00000000000..8651851233d
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/floater_voice_controls.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_voice_controls" title="Stemme opsætning">
+	<string name="title_nearby">
+		STEMMER NÆR
+	</string>
+	<string name="title_group">
+		Gruppe opkald med [GROUP]
+	</string>
+	<string name="title_adhoc">
+		Konference kald
+	</string>
+	<string name="title_peer_2_peer">
+		Opkald med [NAME]
+	</string>
+	<string name="no_one_near">
+		Ingen nær
+	</string>
+	<panel name="control_panel">
+		<layout_stack>
+			<layout_panel name="leave_btn_panel">
+				<button label="Forlad opkald" name="leave_call_btn"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_world_map.xml b/indra/newview/skins/default/xui/da/floater_world_map.xml
index 62930716ce4..137e8509a4c 100644
--- a/indra/newview/skins/default/xui/da/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/da/floater_world_map.xml
@@ -1,57 +1,69 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="worldmap" title="VERDENSKORT">
-	<tab_container name="maptab">
-		<panel label="Objekter" name="objects_mapview"/>
-		<panel label="Terræn" name="terrain_mapview"/>
-	</tab_container>
-	<text name="you_label">
-		Dig
-	</text>
-	<text name="home_label">
-		Hjem
-	</text>
-	<text name="auction_label">
-		Auktion
-	</text>
-	<text name="land_for_sale_label">
-		Land til salg
-	</text>
-	<button label="Tag hjem" label_selected="Tag hjem" name="Go Home" tool_tip="Teleporter til dit hjem"/>
-	<check_box label="Beboer" name="people_chk"/>
-	<check_box label="Infohub" name="infohub_chk"/>
-	<check_box label="Telehub" name="telehubchk"/>
-	<check_box label="Land til salg" name="land_for_sale_chk"/>
-	<text name="events_label">
-		Events:
-	</text>
-	<check_box label="PG" name="event_chk"/>
-	<check_box label="Mature" name="event_mature_chk"/>
-	<check_box label="Adult" name="event_adult_chk"/>
-	<combo_box label="Venner online" name="friend combo" tool_tip="Ven der skal vises på kortet">
-		<combo_box.item name="item1" label="Venner online" />
-	</combo_box>
-	<combo_box label="Landemærker" name="landmark combo" tool_tip="Landemærke der skal vises på kortet">
-		<combo_box.item name="item1" label="Landemærker" />
-	</combo_box>
-	<line_editor label="Søg på region navn" name="location" tool_tip="Skriv navnet på en region"/>
-	<button label="Søg" name="DoSearch" tool_tip="Søg efter en region"/>
-	<text name="search_label">
-		Søgeresultater:
-	</text>
-	<scroll_list name="search_results">
-		<column label="" name="icon"/>
-		<column label="" name="sim_name"/>
-	</scroll_list>
-	<text name="location_label">
-		Lokation:
-	</text>
-	<spinner name="spin x" tool_tip="X koordinat for lokation der skal vises på kortet"/>
-	<spinner name="spin y" tool_tip="Y koordinat for lokation der skal vises på kortet"/>
-	<spinner name="spin z" tool_tip="Z koordinat for lokation der skal vises på kortet"/>
-	<button label="Teleport" label_selected="Teleport" name="Teleport" tool_tip="Teleportér til den valgte lokation"/>
-	<button label="Vis destination" label_selected="Vis destination" name="Show Destination" tool_tip="Centrér kortet på valgte lokation"/>
-	<button label="Slet" label_selected="Slet" name="Clear" tool_tip="Stop søg"/>
-	<button label="Vis min position" label_selected="Vis min position" name="Show My Location" tool_tip="Centrer kortet på din avatars lokation"/>
-	<button label="Kopiér SLurl til udklipsholder" name="copy_slurl" tool_tip="Kopierer den nuværende lokation som et SLurl, så det kan bruges på nettet."/>
-	<slider label="Zoom" name="zoom slider"/>
+	<panel name="layout_panel_1">
+		<text name="events_label">
+			Forklaring
+		</text>
+	</panel>
+	<panel>
+		<button label="Vis min position" label_selected="Vis min position" name="Show My Location" tool_tip="Centrér kort om min avatars position"/>
+		<text name="person_label">
+			Mig
+		</text>
+		<check_box label="Beboer" name="people_chk"/>
+		<check_box label="Infohub" name="infohub_chk"/>
+		<text name="infohub_label">
+			Infohub
+		</text>
+		<check_box label="Land til salg" name="land_for_sale_chk"/>
+		<text name="land_sale_label">
+			Land til salg
+		</text>
+		<text name="auction_label">
+			af ejer
+		</text>
+		<button label="Tag hjem" label_selected="Tag hjem" name="Go Home" tool_tip="Teleportér til min hjemmelokation"/>
+		<text name="Home_label">
+			Hjem
+		</text>
+		<text name="events_label">
+			Events:
+		</text>
+		<check_box label="PG" name="event_chk"/>
+		<check_box initial_value="true" label="Mature" name="event_mature_chk"/>
+		<text name="mature_label">
+			Mature
+		</text>
+		<check_box label="Adult" name="event_adult_chk"/>
+	</panel>
+	<panel>
+		<text name="find_on_map_label">
+			Find på kort
+		</text>
+	</panel>
+	<panel>
+		<combo_box label="Venner online" name="friend combo" tool_tip="Vis venner på kort">
+			<combo_box.item label="Mine venner online" name="item1"/>
+		</combo_box>
+		<combo_box label="Mine landemærker" name="landmark combo" tool_tip="Landemærke der skal vises på kort">
+			<combo_box.item label="Mine landemærker" name="item1"/>
+		</combo_box>
+		<search_editor label="Regioner efter navn" name="location" tool_tip="Skriv navnet på en region"/>
+		<button label="Find" name="DoSearch" tool_tip="Søg efter en region"/>
+		<scroll_list name="search_results">
+			<scroll_list.columns label="" name="icon"/>
+			<scroll_list.columns label="" name="sim_name"/>
+		</scroll_list>
+		<button label="Teleport" label_selected="Teleport" name="Teleport" tool_tip="Teleportér til den valgte lokation"/>
+		<button label="Kopiér SLurl" name="copy_slurl" tool_tip="Kopierer denne lokation som SLurl der kan bruges på web."/>
+		<button label="Vis selektion" label_selected="Vis destination" name="Show Destination" tool_tip="Centrér kortet på valgte lokation"/>
+	</panel>
+	<panel>
+		<text name="zoom_label">
+			Zoom
+		</text>
+	</panel>
+	<panel>
+		<slider label="Zoom" name="zoom slider"/>
+	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/inspect_avatar.xml b/indra/newview/skins/default/xui/da/inspect_avatar.xml
new file mode 100644
index 00000000000..1b85544303a
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/inspect_avatar.xml
@@ -0,0 +1,21 @@
+<?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
+-->
+<floater name="inspect_avatar">
+	<string name="Subtitle">
+		[AGE]
+	</string>
+	<string name="Details">
+		[SL_PROFILE]
+	</string>
+	<slider name="volume_slider" tool_tip="Stemme lydstyrke" value="0.5"/>
+	<button label="Tilføj ven" name="add_friend_btn"/>
+	<button label="IM" name="im_btn"/>
+	<button label="Mere" name="view_profile_btn"/>
+	<panel name="moderator_panel">
+		<button label="Slå stemme-chat fra" name="disable_voice"/>
+		<button label="Slå stemme-chat til" name="enable_voice"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/da/inspect_group.xml b/indra/newview/skins/default/xui/da/inspect_group.xml
new file mode 100644
index 00000000000..486c5d8784d
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/inspect_group.xml
@@ -0,0 +1,22 @@
+<?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
+-->
+<floater name="inspect_group">
+	<string name="PrivateGroup">
+		Privat gruppe
+	</string>
+	<string name="FreeToJoin">
+		Ã…ben tilmelding
+	</string>
+	<string name="CostToJoin">
+		Tilmeldingsgebyr: L$[AMOUNT]
+	</string>
+	<string name="YouAreMember">
+		Du er meldlem
+	</string>
+	<button label="Tilmeld" name="join_btn"/>
+	<button label="Forlad" name="leave_btn"/>
+	<button label="Vis profil" name="view_profile_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/da/inspect_remote_object.xml b/indra/newview/skins/default/xui/da/inspect_remote_object.xml
new file mode 100644
index 00000000000..a06452afe69
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/inspect_remote_object.xml
@@ -0,0 +1,13 @@
+<?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
+-->
+<floater name="inspect_remote_object">
+	<text name="object_owner_label">
+		Ejer:
+	</text>
+	<button label="Kort" name="map_btn"/>
+	<button label="Blokér" name="block_btn"/>
+	<button label="Luk" name="close_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/da/menu_attachment_other.xml b/indra/newview/skins/default/xui/da/menu_attachment_other.xml
new file mode 100644
index 00000000000..2cc23e27c70
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_attachment_other.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- *NOTE: See also menu_avatar_other.xml -->
+<context_menu name="Avatar Pie">
+	<menu_item_call label="Profil" name="Profile..."/>
+	<menu_item_call label="Tilføj ven" name="Add Friend"/>
+	<menu_item_call label="Send besked" name="Send IM..."/>
+	<menu_item_call label="Opkald" name="Call"/>
+	<menu_item_call label="Invitér til gruppe" name="Invite..."/>
+	<menu_item_call label="Blokér" name="Avatar Mute"/>
+	<menu_item_call label="Rapportér" name="abuse"/>
+	<menu_item_call label="Frys" name="Freeze..."/>
+	<menu_item_call label="Smid ud" name="Eject..."/>
+	<menu_item_call label="Debug" name="Debug..."/>
+	<menu_item_call label="Zoom ind" name="Zoom In"/>
+	<menu_item_call label="Betal" name="Pay..."/>
+	<menu_item_call label="Objekt profil" name="Object Inspect"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/da/menu_attachment_self.xml b/indra/newview/skins/default/xui/da/menu_attachment_self.xml
new file mode 100644
index 00000000000..306ae96d49f
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_attachment_self.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Attachment Pie">
+	<menu_item_call label="Berør" name="Attachment Object Touch"/>
+	<menu_item_call label="Redigér" name="Edit..."/>
+	<menu_item_call label="Tag af" name="Detach"/>
+	<menu_item_call label="Smid" name="Drop"/>
+	<menu_item_call label="Stå op" name="Stand Up"/>
+	<menu_item_call label="Udseende" name="Appearance..."/>
+	<menu_item_call label="Venner" name="Friends..."/>
+	<menu_item_call label="Grupper" name="Groups..."/>
+	<menu_item_call label="Profil" name="Profile..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/da/menu_avatar_icon.xml b/indra/newview/skins/default/xui/da/menu_avatar_icon.xml
new file mode 100644
index 00000000000..26b58ce1ab4
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_avatar_icon.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Avatar Icon Menu">
+	<menu_item_call label="Profil" name="Show Profile"/>
+	<menu_item_call label="Send besked..." name="Send IM"/>
+	<menu_item_call label="Tilføj ven..." name="Add Friend"/>
+	<menu_item_call label="Fjern ven..." name="Remove Friend"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/da/menu_avatar_other.xml b/indra/newview/skins/default/xui/da/menu_avatar_other.xml
new file mode 100644
index 00000000000..66d357e7e29
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_avatar_other.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- *NOTE: See also menu_attachment_other.xml -->
+<context_menu name="Avatar Pie">
+	<menu_item_call label="Profil" name="Profile..."/>
+	<menu_item_call label="Tilføj ven" name="Add Friend"/>
+	<menu_item_call label="Besked" name="Send IM..."/>
+	<menu_item_call label="Opkald" name="Call"/>
+	<menu_item_call label="Invitér til gruppe" name="Invite..."/>
+	<menu_item_call label="Blokér" name="Avatar Mute"/>
+	<menu_item_call label="Rapportér" name="abuse"/>
+	<menu_item_call label="Frys" name="Freeze..."/>
+	<menu_item_call label="Smid ud" name="Eject..."/>
+	<menu_item_call label="Debug" name="Debug..."/>
+	<menu_item_call label="Zoom ind" name="Zoom In"/>
+	<menu_item_call label="Betal" name="Pay..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/da/menu_avatar_self.xml b/indra/newview/skins/default/xui/da/menu_avatar_self.xml
new file mode 100644
index 00000000000..29620fca271
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_avatar_self.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Self Pie">
+	<menu_item_call label="Stå op" name="Stand Up"/>
+	<context_menu label="Tag af &gt;" name="Take Off &gt;">
+		<context_menu label="Tøj &gt;" name="Clothes &gt;">
+			<menu_item_call label="Trøje" name="Shirt"/>
+			<menu_item_call label="Bukser" name="Pants"/>
+			<menu_item_call label="Nederdel" name="Skirt"/>
+			<menu_item_call label="Sko" name="Shoes"/>
+			<menu_item_call label="Strømper" name="Socks"/>
+			<menu_item_call label="Jakke" name="Jacket"/>
+			<menu_item_call label="Handsker" name="Gloves"/>
+			<menu_item_call label="Undertrøje" name="Self Undershirt"/>
+			<menu_item_call label="Underbukser" name="Self Underpants"/>
+			<menu_item_call label="Tatovering" name="Self Tattoo"/>
+			<menu_item_call label="Alpha" name="Self Alpha"/>
+			<menu_item_call label="Alt tøj" name="All Clothes"/>
+		</context_menu>
+		<context_menu label="HUD &gt;" name="Object Detach HUD"/>
+		<context_menu label="Tag af &gt;" name="Object Detach"/>
+		<menu_item_call label="Tag alt af" name="Detach All"/>
+	</context_menu>
+	<menu_item_call label="Udseende" name="Appearance..."/>
+	<menu_item_call label="Venner" name="Friends..."/>
+	<menu_item_call label="Grupper" name="Groups..."/>
+	<menu_item_call label="Profil" name="Profile..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/da/menu_bottomtray.xml b/indra/newview/skins/default/xui/da/menu_bottomtray.xml
new file mode 100644
index 00000000000..dbdeefeaff2
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_bottomtray.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="hide_camera_move_controls_menu">
+	<menu_item_check label="Faste bevægelser" name="ShowGestureButton"/>
+	<menu_item_check label="Bevægelse knap" name="ShowMoveButton"/>
+	<menu_item_check label="Vis knap" name="ShowCameraButton"/>
+	<menu_item_check label="Foto knap" name="ShowSnapshotButton"/>
+	<menu_item_call label="Klip" name="NearbyChatBar_Cut"/>
+	<menu_item_call label="Kopiér" name="NearbyChatBar_Copy"/>
+	<menu_item_call label="Sæt ind" name="NearbyChatBar_Paste"/>
+	<menu_item_call label="Slet" name="NearbyChatBar_Delete"/>
+	<menu_item_call label="Vælg alt" name="NearbyChatBar_Select_All"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/da/menu_favorites.xml b/indra/newview/skins/default/xui/da/menu_favorites.xml
new file mode 100644
index 00000000000..a4793e294cb
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_favorites.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+	<menu_item_call label="Teleportér" name="Teleport To Landmark"/>
+	<menu_item_call label="Vis/ret landemærke" name="Landmark Open"/>
+	<menu_item_call label="Kopiér SLurl" name="Copy slurl"/>
+	<menu_item_call label="Vis på kort" name="Show On Map"/>
+	<menu_item_call label="Kopiér" name="Landmark Copy"/>
+	<menu_item_call label="Sæt ind" name="Landmark Paste"/>
+	<menu_item_call label="Slet" name="Delete"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/da/menu_gesture_gear.xml b/indra/newview/skins/default/xui/da/menu_gesture_gear.xml
new file mode 100644
index 00000000000..a9010e99b65
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_gesture_gear.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_gesture_gear">
+	<menu_item_call label="Tilføj/fjern fra favoritter" name="activate"/>
+	<menu_item_call label="Kopiér" name="copy_gesture"/>
+	<menu_item_call label="Sæt ind" name="paste"/>
+	<menu_item_call label="Kopiér UUID" name="copy_uuid"/>
+	<menu_item_call label="Gem til nuværende sæt" name="save_to_outfit"/>
+	<menu_item_call label="Editér" name="edit_gesture"/>
+	<menu_item_call label="Undersøg" name="inspect"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/da/menu_group_plus.xml b/indra/newview/skins/default/xui/da/menu_group_plus.xml
new file mode 100644
index 00000000000..97fbec1ed1d
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_group_plus.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_group_plus">
+	<menu_item_call label="Meld ind i gruppe..." name="item_join"/>
+	<menu_item_call label="Ny gruppe..." name="item_new"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/da/menu_hide_navbar.xml b/indra/newview/skins/default/xui/da/menu_hide_navbar.xml
new file mode 100644
index 00000000000..45276adda40
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_hide_navbar.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="hide_navbar_menu">
+	<menu_item_check label="Vis navigationsbjælke" name="ShowNavbarNavigationPanel"/>
+	<menu_item_check label="Vis favoritbjælke" name="ShowNavbarFavoritesPanel"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/da/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/da/menu_imchiclet_adhoc.xml
new file mode 100644
index 00000000000..f64a6ad455e
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_imchiclet_adhoc.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="IMChiclet AdHoc Menu">
+	<menu_item_call label="Afslut" name="End Session"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/da/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/da/menu_imchiclet_group.xml
new file mode 100644
index 00000000000..b89d9a57895
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_imchiclet_group.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="IMChiclet Group Menu">
+	<menu_item_call label="Gruppe info" name="Show Profile"/>
+	<menu_item_call label="Vis session" name="Chat"/>
+	<menu_item_call label="Afslut session" name="End Session"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/da/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/da/menu_imchiclet_p2p.xml
new file mode 100644
index 00000000000..6ebc40a8dd0
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_imchiclet_p2p.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="IMChiclet P2P Menu">
+	<menu_item_call label="Profil" name="Show Profile"/>
+	<menu_item_call label="Tilføj ven" name="Add Friend"/>
+	<menu_item_call label="Vis session" name="Send IM"/>
+	<menu_item_call label="Afslut session" name="End Session"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/da/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/da/menu_inspect_avatar_gear.xml
new file mode 100644
index 00000000000..5b8089bfe08
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_inspect_avatar_gear.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu name="Gear Menu">
+	<menu_item_call label="Profil" name="view_profile"/>
+	<menu_item_call label="Tilføj ven" name="add_friend"/>
+	<menu_item_call label="Besked" name="im"/>
+	<menu_item_call label="Opkald" name="call"/>
+	<menu_item_call label="Teleportér" name="teleport"/>
+	<menu_item_call label="Invitér til gruppe" name="invite_to_group"/>
+	<menu_item_call label="Blokér" name="block"/>
+	<menu_item_call label="Rapportér" name="report"/>
+	<menu_item_call label="Frys" name="freeze"/>
+	<menu_item_call label="Smid ud" name="eject"/>
+	<menu_item_call label="Debug" name="debug"/>
+	<menu_item_call label="Find på kort" name="find_on_map"/>
+	<menu_item_call label="Zoom ind" name="zoom_in"/>
+	<menu_item_call label="Betal" name="pay"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/da/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/da/menu_inspect_object_gear.xml
new file mode 100644
index 00000000000..c7bb2a9ead5
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_inspect_object_gear.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu name="Gear Menu">
+	<menu_item_call label="Berør" name="touch"/>
+	<menu_item_call label="Sid her" name="sit"/>
+	<menu_item_call label="betal" name="pay"/>
+	<menu_item_call label="Køb" name="buy"/>
+	<menu_item_call label="Tag" name="take"/>
+	<menu_item_call label="tag kopi" name="take_copy"/>
+	<menu_item_call label="Ã…ben" name="open"/>
+	<menu_item_call label="Redigér" name="edit"/>
+	<menu_item_call label="Tag på" name="wear"/>
+	<menu_item_call label="Rapportér" name="report"/>
+	<menu_item_call label="Blokér" name="block"/>
+	<menu_item_call label="Zoom ind" name="zoom_in"/>
+	<menu_item_call label="Fjern" name="remove"/>
+	<menu_item_call label="Mere info" name="more_info"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/da/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/da/menu_inspect_self_gear.xml
new file mode 100644
index 00000000000..cfe455e21da
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_inspect_self_gear.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu name="Gear Menu">
+	<menu_item_call label="Stå op" name="stand_up"/>
+	<menu_item_call label="Udseende" name="my_appearance"/>
+	<menu_item_call label="Profil" name="my_profile"/>
+	<menu_item_call label="Venner" name="my_friends"/>
+	<menu_item_call label="Grupper" name="my_groups"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/da/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/da/menu_inventory_gear_default.xml
new file mode 100644
index 00000000000..e643498822b
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_inventory_gear_default.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_gear_default">
+	<menu_item_call label="Nyt vindue" name="new_window"/>
+	<menu_item_call label="Sortér efter navn" name="sort_by_name"/>
+	<menu_item_call label="Sortér efter nyeste" name="sort_by_recent"/>
+	<menu_item_call label="Vis filtre" name="show_filters"/>
+	<menu_item_call label="Nulstil filtre" name="reset_filters"/>
+	<menu_item_call label="Luk alle mapper" name="close_folders"/>
+	<menu_item_call label="Tøm papirkurv" name="empty_trash"/>
+	<menu_item_call label="Tøm &quot;fundne genstande&quot;" name="empty_lostnfound"/>
+	<menu_item_call label="Gem tekstur som" name="Save Texture As"/>
+	<menu_item_call label="Find original" name="Find Original"/>
+	<menu_item_call label="Find alle links" name="Find All Links"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/da/menu_land.xml b/indra/newview/skins/default/xui/da/menu_land.xml
new file mode 100644
index 00000000000..1548f18f897
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_land.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Land Pie">
+	<menu_item_call label="Om land" name="Place Information..."/>
+	<menu_item_call label="Sid her" name="Sit Here"/>
+	<menu_item_call label="Køb" name="Land Buy"/>
+	<menu_item_call label="Køb adgang" name="Land Buy Pass"/>
+	<menu_item_call label="Byg" name="Create"/>
+	<menu_item_call label="Tilpas terræn" name="Edit Terrain"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/da/menu_landmark.xml b/indra/newview/skins/default/xui/da/menu_landmark.xml
new file mode 100644
index 00000000000..3cf2ffe375c
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_landmark.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="landmark_overflow_menu">
+	<menu_item_call label="Kopiér SLurl" name="copy"/>
+	<menu_item_call label="Slet" name="delete"/>
+	<menu_item_call label="Opret favorit" name="pick"/>
+	<menu_item_call label="Tilføj til favorit bjælke" name="add_to_favbar"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/da/menu_login.xml b/indra/newview/skins/default/xui/da/menu_login.xml
index 9d9dcd4b2e6..0942f1b807f 100644
--- a/indra/newview/skins/default/xui/da/menu_login.xml
+++ b/indra/newview/skins/default/xui/da/menu_login.xml
@@ -1,13 +1,30 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar name="Login Menu">
-	<menu label="Filer" name="File">
-		<menu_item_call label="Afslut" name="Quit" />
-	</menu>
-	<menu label="Rediger" name="Edit">
-		<menu_item_call label="Indstillinger..." name="Preferences..." />
+	<menu label="Mig" name="File">
+		<menu_item_call label="Indstillinger" name="Preferences..."/>
+		<menu_item_call label="Afslut" name="Quit"/>
 	</menu>
 	<menu label="Hjælp" name="Help">
-		<menu_item_call label="[SECOND_LIFE] hjælp" name="Second Life Help" />
-		<menu_item_call label="Om [APP_NAME]..." name="About Second Life..." />
+		<menu_item_call label="[SECOND_LIFE] hjælp" name="Second Life Help"/>
+	</menu>
+	<menu label="Debug" name="Debug">
+		<menu label="Redigér" name="Edit">
+			<menu_item_call label="Fortryd" name="Undo"/>
+			<menu_item_call label="Gendan" name="Redo"/>
+			<menu_item_call label="Klip" name="Cut"/>
+			<menu_item_call label="Kopiér" name="Copy"/>
+			<menu_item_call label="Sæt ind" name="Paste"/>
+			<menu_item_call label="Slet" name="Delete"/>
+			<menu_item_call label="Duplikér" name="Duplicate"/>
+			<menu_item_call label="Vælg alle" name="Select All"/>
+			<menu_item_call label="Vælg intet" name="Deselect"/>
+		</menu>
+		<menu_item_call label="Vis debug opsætning" name="Debug Settings"/>
+		<menu_item_call label="UI/farve opsætning" name="UI/Color Settings"/>
+		<menu_item_call label="Vis sidebakke" name="Show Side Tray"/>
+		<menu label="UI tests" name="UI Tests"/>
+		<menu_item_call label="Vis betingelser" name="TOS"/>
+		<menu_item_call label="Vis vigtig besked" name="Critical"/>
+		<menu_item_call label="Test i web browser" name="Web Browser Test"/>
 	</menu>
 </menu_bar>
diff --git a/indra/newview/skins/default/xui/da/menu_mini_map.xml b/indra/newview/skins/default/xui/da/menu_mini_map.xml
index 2a711dc5be1..667638c5291 100644
--- a/indra/newview/skins/default/xui/da/menu_mini_map.xml
+++ b/indra/newview/skins/default/xui/da/menu_mini_map.xml
@@ -3,6 +3,7 @@
 	<menu_item_call label="Zoom tæt" name="Zoom Close"/>
 	<menu_item_call label="Zoom mellem" name="Zoom Medium"/>
 	<menu_item_call label="Zoom langt" name="Zoom Far"/>
+	<menu_item_check label="Rotér kort" name="Rotate Map"/>
 	<menu_item_call label="Stop Tracking" name="Stop Tracking"/>
-	<menu_item_call label="Profil..." name="Profile"/>
+	<menu_item_call label="Verdenskort" name="World Map"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/da/menu_navbar.xml b/indra/newview/skins/default/xui/da/menu_navbar.xml
new file mode 100644
index 00000000000..c04206824ac
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_navbar.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Navbar Menu">
+	<menu_item_check label="Vis koordinater" name="Show Coordinates"/>
+	<menu_item_check label="Vis oplysninger om parcel" name="Show Parcel Properties"/>
+	<menu_item_call label="Landemærke" name="Landmark"/>
+	<menu_item_call label="Klip" name="Cut"/>
+	<menu_item_call label="Kopiér" name="Copy"/>
+	<menu_item_call label="Sæt ind" name="Paste"/>
+	<menu_item_call label="Slet" name="Delete"/>
+	<menu_item_call label="Vælg alt" name="Select All"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/da/menu_nearby_chat.xml b/indra/newview/skins/default/xui/da/menu_nearby_chat.xml
new file mode 100644
index 00000000000..be532ad406d
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_nearby_chat.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="NearBy Chat Menu">
+	<menu_item_call label="Vis personer tæt på..." name="nearby_people"/>
+	<menu_item_check label="Vis blokeret tekst" name="muted_text"/>
+	<menu_item_check label="Vis venne-ikoner" name="show_buddy_icons"/>
+	<menu_item_check label="Vis navne" name="show_names"/>
+	<menu_item_check label="Vis ikoner og navne" name="show_icons_and_names"/>
+	<menu_item_call label="Font størrelse" name="font_size"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/da/menu_object.xml b/indra/newview/skins/default/xui/da/menu_object.xml
new file mode 100644
index 00000000000..0714b67ec3b
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_object.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Object Pie">
+	<menu_item_call label="Berør" name="Object Touch"/>
+	<menu_item_call label="Redigér" name="Edit..."/>
+	<menu_item_call label="Byg" name="Build"/>
+	<menu_item_call label="Ã…ben" name="Open"/>
+	<menu_item_call label="Sid her" name="Object Sit"/>
+	<menu_item_call label="Objekt profil" name="Object Inspect"/>
+	<context_menu label="Sæt på &gt;" name="Put On">
+		<menu_item_call label="Tag på" name="Wear"/>
+		<context_menu label="Vedhæft &gt;" name="Object Attach"/>
+		<context_menu label="Vedhæft HUD &gt;" name="Object Attach HUD"/>
+	</context_menu>
+	<context_menu label="Fjern &gt;" name="Remove">
+		<menu_item_call label="Tag" name="Pie Object Take"/>
+		<menu_item_call label="Rapportér misbrug" name="Report Abuse..."/>
+		<menu_item_call label="Blokér" name="Object Mute"/>
+		<menu_item_call label="Returnér" name="Return..."/>
+		<menu_item_call label="Slet" name="Delete"/>
+	</context_menu>
+	<menu_item_call label="Tag kopi" name="Take Copy"/>
+	<menu_item_call label="Betal" name="Pay..."/>
+	<menu_item_call label="Køb" name="Buy..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/da/menu_object_icon.xml b/indra/newview/skins/default/xui/da/menu_object_icon.xml
new file mode 100644
index 00000000000..08aeb633b64
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_object_icon.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Object Icon Menu">
+	<menu_item_call label="Objekt Profil..." name="Object Profile"/>
+	<menu_item_call label="Blokér..." name="Block"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/da/menu_participant_list.xml b/indra/newview/skins/default/xui/da/menu_participant_list.xml
new file mode 100644
index 00000000000..44a016026c1
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_participant_list.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Participant List Context Menu">
+	<menu_item_call label="Profil" name="View Profile"/>
+	<menu_item_call label="Tilføj ven" name="Add Friend"/>
+	<menu_item_call label="Send besked" name="IM"/>
+	<menu_item_call label="Opkald" name="Call"/>
+	<menu_item_call label="Del" name="Share"/>
+	<menu_item_call label="Betal" name="Pay"/>
+	<menu_item_check label="Blokér/Fjern blokering" name="Block/Unblock"/>
+	<menu_item_check label="Sluk for tekst" name="MuteText"/>
+	<menu_item_check label="Tillad tekst chat" name="AllowTextChat"/>
+	<menu_item_call label="Sluk for denne deltager" name="ModerateVoiceMuteSelected"/>
+	<menu_item_call label="Sluk for alle andre" name="ModerateVoiceMuteOthers"/>
+	<menu_item_call label="Ã…ben for denne deltager" name="ModerateVoiceUnMuteSelected"/>
+	<menu_item_call label="Ã…ben for alle andre" name="ModerateVoiceUnMuteOthers"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/da/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/da/menu_people_friends_view_sort.xml
new file mode 100644
index 00000000000..525450f23f4
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_people_friends_view_sort.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_group_plus">
+	<menu_item_check label="Sortér efter navn" name="sort_name"/>
+	<menu_item_check label="Sortér efter status" name="sort_status"/>
+	<menu_item_check label="Vis person ikoner" name="view_icons"/>
+	<menu_item_call label="Vis blokerede beboere og objekter" name="show_blocked_list"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/da/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/da/menu_people_groups_view_sort.xml
new file mode 100644
index 00000000000..0b9a791530d
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_people_groups_view_sort.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_group_plus">
+	<menu_item_check label="Vis gruppe ikoner" name="Display Group Icons"/>
+	<menu_item_call label="Forlad valgte gruppe" name="Leave Selected Group"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/da/menu_people_nearby.xml b/indra/newview/skins/default/xui/da/menu_people_nearby.xml
new file mode 100644
index 00000000000..224190149b2
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_people_nearby.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Avatar Context Menu">
+	<menu_item_call label="Profil" name="View Profile"/>
+	<menu_item_call label="Tilføj ven" name="Add Friend"/>
+	<menu_item_call label="Besked" name="IM"/>
+	<menu_item_call label="Opkald" name="Call"/>
+	<menu_item_call label="Del" name="Share"/>
+	<menu_item_call label="Betal" name="Pay"/>
+	<menu_item_check label="Blokér/Fjern blokering" name="Block/Unblock"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/da/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/da/menu_people_nearby_multiselect.xml
new file mode 100644
index 00000000000..92c6d2c960d
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_people_nearby_multiselect.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Multi-Selected People Context Menu">
+	<menu_item_call label="Tilføj venner" name="Add Friends"/>
+	<menu_item_call label="Besked" name="IM"/>
+	<menu_item_call label="Opkald" name="Call"/>
+	<menu_item_call label="Del" name="Share"/>
+	<menu_item_call label="Betal" name="Pay"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/da/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/da/menu_people_nearby_view_sort.xml
new file mode 100644
index 00000000000..2f35ff3c92c
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_people_nearby_view_sort.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_group_plus">
+	<menu_item_check label="Sortér efter tidligere talere" name="sort_by_recent_speakers"/>
+	<menu_item_check label="Sortér efter navn" name="sort_name"/>
+	<menu_item_check label="Sortér efter afstand" name="sort_distance"/>
+	<menu_item_check label="Se ikoner for personer" name="view_icons"/>
+	<menu_item_call label="Vis blokerede beboere og objekter" name="show_blocked_list"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/da/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/da/menu_people_recent_view_sort.xml
new file mode 100644
index 00000000000..d081f637f22
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_people_recent_view_sort.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_group_plus">
+	<menu_item_check label="Sortér efter nyeste" name="sort_most"/>
+	<menu_item_check label="Sortér efter navn" name="sort_name"/>
+	<menu_item_check label="Vis person ikoner" name="view_icons"/>
+	<menu_item_call label="Vis blokerede beboere og objekter" name="show_blocked_list"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/da/menu_picks_plus.xml b/indra/newview/skins/default/xui/da/menu_picks_plus.xml
new file mode 100644
index 00000000000..d95071fbbb0
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_picks_plus.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="picks_plus_menu">
+	<menu_item_call label="Ny favorit" name="create_pick"/>
+	<menu_item_call label="Ny annonce" name="create_classified"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/da/menu_place.xml b/indra/newview/skins/default/xui/da/menu_place.xml
new file mode 100644
index 00000000000..b87964ac142
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_place.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="place_overflow_menu">
+	<menu_item_call label="Opret et landemærke" name="landmark"/>
+	<menu_item_call label="Opret favorit" name="pick"/>
+	<menu_item_call label="Køb adgang" name="pass"/>
+	<menu_item_call label="Redigér" name="edit"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/da/menu_place_add_button.xml b/indra/newview/skins/default/xui/da/menu_place_add_button.xml
new file mode 100644
index 00000000000..7ad22535503
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_place_add_button.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_folder_gear">
+	<menu_item_call label="Opret mappe" name="add_folder"/>
+	<menu_item_call label="Tilføj landemærke" name="add_landmark"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/da/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/da/menu_places_gear_folder.xml
new file mode 100644
index 00000000000..3ee3c02fb1a
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_places_gear_folder.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_folder_gear">
+	<menu_item_call label="Tilføj landemærke" name="add_landmark"/>
+	<menu_item_call label="Tilføj mappe" name="add_folder"/>
+	<menu_item_call label="Klip" name="cut"/>
+	<menu_item_call label="Kopiér" name="copy_folder"/>
+	<menu_item_call label="Sæt ind" name="paste"/>
+	<menu_item_call label="Omdøb" name="rename"/>
+	<menu_item_call label="Slet" name="delete"/>
+	<menu_item_call label="Udvid" name="expand"/>
+	<menu_item_call label="Luk" name="collapse"/>
+	<menu_item_call label="Udvid alle mapper" name="expand_all"/>
+	<menu_item_call label="Luk alle mapper" name="collapse_all"/>
+	<menu_item_check label="Sortér efter dato" name="sort_by_date"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/da/menu_profile_overflow.xml b/indra/newview/skins/default/xui/da/menu_profile_overflow.xml
new file mode 100644
index 00000000000..58fbc62643d
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_profile_overflow.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="profile_overflow_menu">
+	<menu_item_call label="Betal" name="pay"/>
+	<menu_item_call label="Del" name="share"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/da/menu_slurl.xml b/indra/newview/skins/default/xui/da/menu_slurl.xml
index ef5cfd7200c..a9302e111ea 100644
--- a/indra/newview/skins/default/xui/da/menu_slurl.xml
+++ b/indra/newview/skins/default/xui/da/menu_slurl.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="Popup">
-	<menu_item_call label="Om URL" name="about_url" />
-	<menu_item_call label="Teleportér til URL" name="teleport_to_url" />
-	<menu_item_call label="Vis på kort" name="show_on_map" />
+	<menu_item_call label="Om URL" name="about_url"/>
+	<menu_item_call label="Teleportér til URL" name="teleport_to_url"/>
+	<menu_item_call label="Kort" name="show_on_map"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/da/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/da/menu_teleport_history_gear.xml
new file mode 100644
index 00000000000..a1c25fea690
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_teleport_history_gear.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Teleport History Gear Context Menu">
+	<menu_item_call label="Udvid alle mapper" name="Expand all folders"/>
+	<menu_item_call label="Luk alle mapper" name="Collapse all folders"/>
+	<menu_item_call label="Nulstil teleport historik" name="Clear Teleport History"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/da/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/da/menu_teleport_history_item.xml
new file mode 100644
index 00000000000..dbaec62087e
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_teleport_history_item.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Teleport History Item Context Menu">
+	<menu_item_call label="Teleportér" name="Teleport"/>
+	<menu_item_call label="Mere information" name="More Information"/>
+	<menu_item_call label="Kopiér til udklipsholder" name="CopyToClipboard"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/da/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/da/menu_teleport_history_tab.xml
new file mode 100644
index 00000000000..c4d4bb4b5b4
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_teleport_history_tab.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Teleport History Item Context Menu">
+	<menu_item_call label="Ã…ben" name="TabOpen"/>
+	<menu_item_call label="Luk" name="TabClose"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/da/menu_text_editor.xml b/indra/newview/skins/default/xui/da/menu_text_editor.xml
new file mode 100644
index 00000000000..3ff31ea232f
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_text_editor.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Text editor context menu">
+	<menu_item_call label="Klip" name="Cut"/>
+	<menu_item_call label="Kopiér" name="Copy"/>
+	<menu_item_call label="Sæt ind" name="Paste"/>
+	<menu_item_call label="Slet" name="Delete"/>
+	<menu_item_call label="Vælg alt" name="Select All"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/da/menu_url_agent.xml b/indra/newview/skins/default/xui/da/menu_url_agent.xml
new file mode 100644
index 00000000000..491586f3b46
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_url_agent.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Vis beboer profil" name="show_agent"/>
+	<menu_item_call label="Kopiér navn til udklipsholder" name="url_copy_label"/>
+	<menu_item_call label="Kopiér  SLurl til udklipsholder" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/da/menu_url_group.xml b/indra/newview/skins/default/xui/da/menu_url_group.xml
new file mode 100644
index 00000000000..c776159b0a2
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_url_group.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Vis gruppeinformation" name="show_group"/>
+	<menu_item_call label="Kopiér gruppe til udklipsholder" name="url_copy_label"/>
+	<menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/da/menu_url_http.xml b/indra/newview/skins/default/xui/da/menu_url_http.xml
new file mode 100644
index 00000000000..4398777a391
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_url_http.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Indlæs" name="url_open"/>
+	<menu_item_call label="Ã…ben i intern browser" name="url_open_internal"/>
+	<menu_item_call label="Ã…ben i ekstern browser" name="url_open_external"/>
+	<menu_item_call label="Kopiér URL til udklipsholder" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/da/menu_url_inventory.xml b/indra/newview/skins/default/xui/da/menu_url_inventory.xml
new file mode 100644
index 00000000000..9a7de23e065
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_url_inventory.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Vis beholdningsgenstand" name="show_item"/>
+	<menu_item_call label="Kopiér navn til udklipsholder" name="url_copy_label"/>
+	<menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/da/menu_url_map.xml b/indra/newview/skins/default/xui/da/menu_url_map.xml
new file mode 100644
index 00000000000..ff4a4d5174f
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_url_map.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Vis på kort" name="show_on_map"/>
+	<menu_item_call label="Teleport til lokation" name="teleport_to_location"/>
+	<menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/da/menu_url_objectim.xml b/indra/newview/skins/default/xui/da/menu_url_objectim.xml
new file mode 100644
index 00000000000..e27cf849593
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_url_objectim.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Vis objekt information" name="show_object"/>
+	<menu_item_call label="Vis på kort" name="show_on_map"/>
+	<menu_item_call label="Teleportér til objekt lokation" name="teleport_to_object"/>
+	<menu_item_call label="Kopiér objekt navn til udklipsholder" name="url_copy_label"/>
+	<menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/da/menu_url_parcel.xml b/indra/newview/skins/default/xui/da/menu_url_parcel.xml
new file mode 100644
index 00000000000..0f21e14f661
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_url_parcel.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Vis information om parcel" name="show_parcel"/>
+	<menu_item_call label="Vis på kort" name="show_on_map"/>
+	<menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/da/menu_url_slapp.xml b/indra/newview/skins/default/xui/da/menu_url_slapp.xml
new file mode 100644
index 00000000000..dd25db2aa71
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_url_slapp.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Kør denne kommando" name="run_slapp"/>
+	<menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/da/menu_url_slurl.xml b/indra/newview/skins/default/xui/da/menu_url_slurl.xml
new file mode 100644
index 00000000000..8d84a138bb7
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_url_slurl.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Vis information" name="show_place"/>
+	<menu_item_call label="Vis på kort" name="show_on_map"/>
+	<menu_item_call label="Teleportér til lokation" name="teleport_to_location"/>
+	<menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/da/menu_url_teleport.xml b/indra/newview/skins/default/xui/da/menu_url_teleport.xml
new file mode 100644
index 00000000000..e0ca7b920db
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/menu_url_teleport.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Teleport" name="teleport"/>
+	<menu_item_call label="Vis på kort" name="show_on_map"/>
+	<menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/da/menu_viewer.xml b/indra/newview/skins/default/xui/da/menu_viewer.xml
index 6a75e273813..ec0631d54fe 100644
--- a/indra/newview/skins/default/xui/da/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/da/menu_viewer.xml
@@ -1,207 +1,324 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar name="Main Menu">
-	<menu label="Filer" name="File">
-		<tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/>
-		<menu label="Hent" name="upload">
-			<menu_item_call label="Billede (L$[COST])..." name="Upload Image"/>
-			<menu_item_call label="Lyd (L$[COST])..." name="Upload Sound"/>
-			<menu_item_call label="Animation (L$[COST])..." name="Upload Animation"/>
-			<menu_item_call label="Hent mange (L$[COST] per file)..." name="Bulk Upload"/>
-			<menu_item_separator label="-----------" name="separator"/>
-			<menu_item_call label="Sæt standard rettigheder..." name="perm prefs"/>
-		</menu>
-		<menu_item_separator label="-----------" name="separator"/>
-		<menu_item_call label="Luk vindue" name="Close Window"/>
-		<menu_item_call label="Luk alle vinduer" name="Close All Windows"/>
-		<menu_item_separator label="-----------" name="separator2"/>
-		<menu_item_call label="Gem tekstur som..." name="Save Texture As..."/>
-		<menu_item_separator label="-----------" name="separator3"/>
-		<menu_item_call label="Tag foto" name="Take Snapshot"/>
-		<menu_item_call label="Tag foto til disk" name="Snapshot to Disk"/>
-		<menu_item_separator label="-----------" name="separator4"/>
-		<menu_item_call label="Afslut" name="Quit"/>
-	</menu>
-	<menu label="Redigér" name="Edit">
-		<menu_item_call label="Annullér" name="Undo"/>
-		<menu_item_call label="Gentag" name="Redo"/>
-		<menu_item_separator label="-----------" name="separator"/>
-		<menu_item_call label="Klip" name="Cut"/>
-		<menu_item_call label="Kopier" name="Copy"/>
-		<menu_item_call label="Sæt ind" name="Paste"/>
-		<menu_item_call label="Slet" name="Delete"/>
-		<menu_item_separator label="-----------" name="separator2"/>
-		<menu_item_call label="Søg..." name="Search..."/>
-		<menu_item_separator label="-----------" name="separator3"/>
-		<menu_item_call label="Vælg alt" name="Select All"/>
-		<menu_item_call label="Vælg intet" name="Deselect"/>
-		<menu_item_separator label="-----------" name="separator4"/>
-		<menu_item_call label="Duplikér" name="Duplicate"/>
-		<menu_item_separator label="-----------" name="separator5"/>
-		<menu label="Vedhæft objekt" name="Attach Object"/>
-		<menu label="Tag objekt af" name="Detach Object"/>
-		<menu label="Tag tøj af" name="Take Off Clothing">
-			<menu_item_call label="Trøje" name="Shirt"/>
-			<menu_item_call label="Bukser" name="Pants"/>
-			<menu_item_call label="Sko" name="Shoes"/>
-			<menu_item_call label="Strømper" name="Socks"/>
-			<menu_item_call label="Jakke" name="Jacket"/>
-			<menu_item_call label="Handsker" name="Gloves"/>
-			<menu_item_call label="Undertrøje" name="Menu Undershirt"/>
-			<menu_item_call label="Underbukser" name="Menu Underpants"/>
-			<menu_item_call label="Nederdel" name="Skirt"/>
-			<menu_item_call label="Alt tøj" name="All Clothes"/>
-		</menu>
-		<menu_item_separator label="-----------" name="separator6"/>
-		<menu_item_call label="Bevægelser..." name="Gestures..."/>
-		<menu_item_call label="Profil..." name="Profile..."/>
-		<menu_item_call label="Udseende..." name="Appearance..."/>
-		<menu_item_separator label="-----------" name="separator7"/>
-		<menu_item_check label="Venner..." name="Friends..."/>
-		<menu_item_call label="Grupper..." name="Groups..."/>
-		<menu_item_separator label="-----------" name="separator8"/>
-		<menu_item_call label="Indstillinger..." name="Preferences..."/>
-	</menu>
-	<menu label="Vis" name="View">
-		<tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/>
-		<menu_item_call label="Første person" name="Mouselook"/>
-		<menu_item_check label="Byg" name="Build"/>
-		<menu_item_check label="Flyv via joystick" name="Joystick Flycam"/>
-		<menu_item_call label="Nulstil kamera" name="Reset View"/>
-		<menu_item_call label="Se på sidste chatter" name="Look at Last Chatter"/>
-		<menu_item_separator label="-----------" name="separator"/>
-		<menu_item_check label="Værktøjslinie" name="Toolbar"/>
-		<menu_item_check label="Local chat" name="Chat History"/>
-		<menu_item_check label="Kommunikér" name="Instant Message"/>
+	<menu label="Mig" name="Me">
+		<menu_item_call label="Indstillinger" name="Preferences"/>
+		<menu_item_call label="Mit instrumentpanel" name="Manage My Account"/>
+		<menu_item_call label="Køb L$" name="Buy and Sell L$"/>
+		<menu_item_call label="Profil" name="Profile"/>
+		<menu_item_call label="Udseende" name="Appearance"/>
 		<menu_item_check label="Beholdning" name="Inventory"/>
-		<menu_item_check label="Aktive talere" name="Active Speakers"/>
-		<menu_item_check label="Vis blokerede avatarer" name="Mute List"/>
-		<menu_item_separator label="-----------" name="separator2"/>
-		<menu_item_check label="Kamera kontrol" name="Camera Controls"/>
-		<menu_item_check label="Bevægelses kontrol" name="Movement Controls"/>
-		<menu_item_check label="Verdenskort" name="World Map"/>
-		<menu_item_check label="Lokalt kort" name="Mini-Map"/>
-		<menu_item_separator label="-----------" name="separator3"/>
-		<menu_item_check label="Teknisk info" name="Statistics Bar"/>
-		<menu_item_check label="Parcel skel" name="Property Lines"/>
-		<menu_item_check label="Visning af ingen adgang" name="Banlines"/>
-		<menu_item_check label="Grundejere" name="Land Owners"/>
-		<menu_item_separator label="-----------" name="separator4"/>
-		<menu label="Tips visning" name="Hover Tips">
-			<menu_item_check label="Vis tips" name="Show Tips"/>
-			<menu_item_separator label="-----------" name="separator"/>
-			<menu_item_check label="Tips om land" name="Land Tips"/>
-			<menu_item_check label="Tips på alle objekter" name="Tips On All Objects"/>
-		</menu>
-		<menu_item_check label="Fremhæv gennemsigtigt" name="Highlight Transparent"/>
-		<menu_item_check label="Pejlelys" name="beacons"/>
-		<menu_item_check label="Skjul partikler" name="Hide Particles"/>
-		<menu_item_check label="Vis HUD vedhæftninger" name="Show HUD Attachments"/>
-		<menu_item_separator label="-----------" name="separator5"/>
-		<menu_item_call label="Zoom ind" name="Zoom In"/>
-		<menu_item_call label="Zoom standard" name="Zoom Default"/>
-		<menu_item_call label="Zoom ud" name="Zoom Out"/>
-		<menu_item_separator label="-----------" name="separator6"/>
-		<menu_item_call label="Skift fuld skærm/vindue" name="Toggle Fullscreen"/>
-		<menu_item_call label="Sæt brugerfladestørrelse til normal" name="Set UI Size to Default"/>
+		<menu_item_call label="Vis beholdning i sidebakke" name="ShowSidetrayInventory"/>
+		<menu_item_call label="Mine bevægelser" name="Gestures"/>
+		<menu label="Min status" name="Status">
+			<menu_item_call label="Væk" name="Set Away"/>
+			<menu_item_call label="Optaget" name="Set Busy"/>
+		</menu>
+		<menu_item_call label="Anmod om administrator status" name="Request Admin Options"/>
+		<menu_item_call label="Stop administrator status" name="Leave Admin Options"/>
+		<menu_item_call label="Afslut [APP_NAME]" name="Quit"/>
+	</menu>
+	<menu label="Kommunikér" name="Communicate">
+		<menu_item_call label="Venner" name="My Friends"/>
+		<menu_item_call label="Grupper" name="My Groups"/>
+		<menu_item_check label="Chat i nærheden" name="Nearby Chat"/>
+		<menu_item_call label="Personer tæt på" name="Active Speakers"/>
+		<menu_item_check label="Media i nærheden" name="Nearby Media"/>
 	</menu>
 	<menu label="Verden" name="World">
-		<menu_item_call label="Chat" name="Chat"/>
-		<menu_item_check label="Løb" name="Always Run"/>
-		<menu_item_check label="Flyv" name="Fly"/>
-		<menu_item_separator label="-----------" name="separator"/>
-		<menu_item_call label="Opret landemærke her" name="Create Landmark Here"/>
-		<menu_item_call label="Sæt hjem til her" name="Set Home to Here"/>
-		<menu_item_separator label="-----------" name="separator2"/>
-		<menu_item_call label="Teleporter hjem" name="Teleport Home"/>
-		<menu_item_separator label="-----------" name="separator3"/>
-		<menu_item_call label="Sæt &apos;ikke til stede&apos;" name="Set Away"/>
-		<menu_item_call label="Sæt &apos;optaget&apos;" name="Set Busy"/>
-		<menu_item_call label="Stop animering af min avatar" name="Stop Animating My Avatar"/>
-		<menu_item_call label="Frigiv taster" name="Release Keys"/>
-		<menu_item_separator label="-----------" name="separator4"/>
-		<menu_item_call label="Konto historik..." name="Account History..."/>
-		<menu_item_call label="Vedligehold konto..." name="Manage My Account..."/>
-		<menu_item_call label="Køb L$..." name="Buy and Sell L$..."/>
-		<menu_item_separator label="-----------" name="separator5"/>
-		<menu_item_call label="Mit land..." name="My Land..."/>
-		<menu_item_call label="Om land..." name="About Land..."/>
-		<menu_item_call label="Køb land..." name="Buy Land..."/>
-		<menu_item_call label="Region/Estate..." name="Region/Estate..."/>
-		<menu_item_separator label="-----------" name="separator6"/>
-		<menu label="Indstillinger for omgivelser" name="Environment Settings">
+		<menu_item_check label="Flyt" name="Movement Controls"/>
+		<menu_item_check label="Vis" name="Camera Controls"/>
+		<menu_item_call label="Om land" name="About Land"/>
+		<menu_item_call label="Region/Estate" name="Region/Estate"/>
+		<menu_item_call label="Køb land" name="Buy Land"/>
+		<menu_item_call label="Mit land" name="My Land"/>
+		<menu label="Vis" name="Land">
+			<menu_item_check label="Ban Lines" name="Ban Lines"/>
+			<menu_item_check label="Pejlelys" name="beacons"/>
+			<menu_item_check label="Parcel skel" name="Property Lines"/>
+			<menu_item_check label="Land-ejere" name="Land Owners"/>
+		</menu>
+		<menu label="Landemærker" name="Landmarks">
+			<menu_item_call label="Opret landemærke her" name="Create Landmark Here"/>
+			<menu_item_call label="Sæt hjem til her" name="Set Home to Here"/>
+		</menu>
+		<menu_item_call label="Hjem" name="Teleport Home"/>
+		<menu_item_check label="Mini-kort" name="Mini-Map"/>
+		<menu_item_check label="Verdenskort" name="World Map"/>
+		<menu_item_call label="Foto" name="Take Snapshot"/>
+		<menu label="Sol" name="Environment Settings">
 			<menu_item_call label="Solopgang" name="Sunrise"/>
 			<menu_item_call label="Middag" name="Noon"/>
 			<menu_item_call label="Solnedgang" name="Sunset"/>
 			<menu_item_call label="Midnat" name="Midnight"/>
-			<menu_item_call label="Gendan til standard for region" name="Revert to Region Default"/>
-			<menu_item_separator label="-----------" name="separator"/>
+			<menu_item_call label="Benyt tid fra estate" name="Revert to Region Default"/>
 			<menu_item_call label="Redigering af omgivelser" name="Environment Editor"/>
 		</menu>
 	</menu>
-	<menu label="Funktioner" name="Tools">
-		<menu label="Vælg værktøj" name="Select Tool">
-			<menu_item_call label="Fokus" name="Focus"/>
-			<menu_item_call label="Flyt" name="Move"/>
-			<menu_item_call label="Rediger" name="Edit"/>
-			<menu_item_call label="Byg" name="Create"/>
-			<menu_item_call label="Land" name="Land"/>
-		</menu>
-		<menu_item_separator label="-----------" name="separator"/>
-		<menu_item_check label="Vælg kun egne objekter" name="Select Only My Objects"/>
-		<menu_item_check label="Vælg kun flytbare objekter" name="Select Only Movable Objects"/>
-		<menu_item_check label="Vælg ved at omkrandse" name="Select By Surrounding"/>
-		<menu_item_check label="Vis skjulte objekter" name="Show Hidden Selection"/>
-		<menu_item_check label="Vis lys-radius for valgte" name="Show Light Radius for Selection"/>
-		<menu_item_check label="Vis guidelys for valgte" name="Show Selection Beam"/>
-		<menu_item_separator label="-----------" name="separator2"/>
-		<menu_item_check label="Ret ind til gitter" name="Snap to Grid"/>
-		<menu_item_call label="Ret XY for objekt ind til gitter" name="Snap Object XY to Grid"/>
-		<menu_item_call label="Benyt valgte som grundlag for gitter" name="Use Selection for Grid"/>
-		<menu_item_call label="Gitter indstillinger..." name="Grid Options..."/>
-		<menu_item_separator label="-----------" name="separator3"/>
-		<menu_item_check label="Rediger sammekædede objekter" name="Edit Linked Parts"/>
-		<menu_item_call label="Sammenkæd" name="Link"/>
+	<menu label="Byg" name="BuildTools">
+		<menu_item_check label="Byg" name="Show Build Tools"/>
+		<menu label="Vælg byggerværktøj" name="Select Tool">
+			<menu_item_call label="Fokus værktøj" name="Focus"/>
+			<menu_item_call label="Flyt værktøj" name="Move"/>
+			<menu_item_call label="Redigeringsværktøj" name="Edit"/>
+			<menu_item_call label="Byg værktøj" name="Create"/>
+			<menu_item_call label="Land værktøj" name="Land"/>
+		</menu>
+		<menu label="Redigér" name="Edit">
+			<menu_item_call label="Fortryd" name="Undo"/>
+			<menu_item_call label="Gendan" name="Redo"/>
+			<menu_item_call label="Klip" name="Cut"/>
+			<menu_item_call label="Kopiér" name="Copy"/>
+			<menu_item_call label="Sæt ind" name="Paste"/>
+			<menu_item_call label="Slet" name="Delete"/>
+			<menu_item_call label="Duplikér" name="Duplicate"/>
+			<menu_item_call label="Vælg alt" name="Select All"/>
+			<menu_item_call label="Fravælg" name="Deselect"/>
+		</menu>
+		<menu_item_call label="Sammenkæde" name="Link"/>
 		<menu_item_call label="Adskil" name="Unlink"/>
-		<menu_item_separator label="-----------" name="separator4"/>
 		<menu_item_call label="Fokusér på valgte" name="Focus on Selection"/>
-		<menu_item_call label="Zoom på valgte" name="Zoom to Selection"/>
-		<menu_item_call label="Køb objekt" name="Menu Object Take">
-			<on_enable userdata="Køb,Tag" name="EnableBuyOrTake"/>
-		</menu_item_call>
-		<menu_item_call label="Tag kopi" name="Take Copy"/>
-		<menu_item_call label="Opdatér ændringer i indhold på objekt" name="Save Object Back to Object Contents"/>
-		<menu_item_separator label="-----------" name="separator6"/>
-		<menu_item_call label="Vis vindue med advarsler/fejl fra scripts" name="Show Script Warning/Error Window"/>
-		<menu label="Rekompilér scripts i valgte objekter" name="Recompile Scripts in Selection">
-			<menu_item_call label="Mono" name="Mono"/>
-			<menu_item_call label="LSL" name="LSL"/>
-		</menu>
-		<menu_item_call label="Genstart scripts i valgte objekter" name="Reset Scripts in Selection"/>
-		<menu_item_call label="Sæt scripts til &apos;Running&apos; i valgte objekter" name="Set Scripts to Running in Selection"/>
-		<menu_item_call label="Sæt scripts til &apos; Not running&apos; i valgte objekter" name="Set Scripts to Not Running in Selection"/>
+		<menu_item_call label="Zoom til valgte" name="Zoom to Selection"/>
+		<menu label="Objekt" name="Object">
+			<menu_item_call label="Køb" name="Menu Object Take"/>
+			<menu_item_call label="Tag kopi" name="Take Copy"/>
+			<menu_item_call label="Opdatér ændringer til beholdning" name="Save Object Back to My Inventory"/>
+			<menu_item_call label="Opdater ændringer i indhold til objekt" name="Save Object Back to Object Contents"/>
+		</menu>
+		<menu label="Scripts" name="Scripts">
+			<menu_item_call label="Rekompilér scripts (Mono)" name="Mono"/>
+			<menu_item_call label="Genoversæt scripts (LSL)" name="LSL"/>
+			<menu_item_call label="Genstart scripts" name="Reset Scripts"/>
+			<menu_item_call label="sæt scripts til &quot;Running&quot;" name="Set Scripts to Running"/>
+			<menu_item_call label="Sæt scripts til &quot;Not Running&quot;" name="Set Scripts to Not Running"/>
+		</menu>
+		<menu label="Valg" name="Options">
+			<menu_item_check label="Redigér sammenlænkede dele" name="Edit Linked Parts"/>
+			<menu_item_call label="Sæt standard rettigheder" name="perm prefs"/>
+			<menu_item_check label="Vis avancerede rettigheder" name="DebugPermissions"/>
+			<menu label="Selektion" name="Selection">
+				<menu_item_check label="Vælg kun egne objekter" name="Select Only My Objects"/>
+				<menu_item_check label="Vælg kun flytbare objekter" name="Select Only Movable Objects"/>
+				<menu_item_check label="Vælg ved at omkrandse" name="Select By Surrounding"/>
+			</menu>
+			<menu label="Vis" name="Show">
+				<menu_item_check label="Vis skjult selektion" name="Show Hidden Selection"/>
+				<menu_item_check label="Vis lys-radius for valgte" name="Show Light Radius for Selection"/>
+				<menu_item_check label="Vis udvælgelses stråle" name="Show Selection Beam"/>
+			</menu>
+			<menu label="Gitter" name="Grid">
+				<menu_item_check label="Ret ind til gitter" name="Snap to Grid"/>
+				<menu_item_call label="Ret XY for objekt ind til gitter" name="Snap Object XY to Grid"/>
+				<menu_item_call label="Benyt valgte som grundlag for gitter" name="Use Selection for Grid"/>
+				<menu_item_call label="Gitter valg" name="Grid Options"/>
+			</menu>
+		</menu>
+		<menu label="Vis lænkede dele" name="Select Linked Parts">
+			<menu_item_call label="Vælg næste del" name="Select Next Part"/>
+			<menu_item_call label="Vælg forrige del" name="Select Previous Part"/>
+			<menu_item_call label="Inkludér næste valg" name="Include Next Part"/>
+			<menu_item_call label="Inkludér forrige del" name="Include Previous Part"/>
+		</menu>
 	</menu>
 	<menu label="Hjælp" name="Help">
-		<menu_item_call label="[SECOND_LIFE] Hjælp" name="Second Life Help"/>
+		<menu_item_call label="[SECOND_LIFE] Help" name="Second Life Help"/>
 		<menu_item_call label="Tutorial" name="Tutorial"/>
-		<menu_item_separator label="-----------" name="separator"/>
-		<menu_item_call label="Officiel Linden Blog..." name="Official Linden Blog..."/>
-		<menu_item_separator label="-----------" name="separator2"/>
-		<menu_item_call label="Portal om scripts..." name="Scripting Portal..."/>
-		<menu_item_separator label="-----------" name="separator3"/>
-		<menu_item_call label="Rapporter misbrug..." name="Report Abuse..."/>
-		<menu_item_call label="Stød, skub &amp; slag..." name="Bumps, Pushes &amp;amp; Hits..."/>
-		<menu_item_call label="Lag meter" name="Lag Meter"/>
-		<menu_item_separator label="-----------" name="separator7"/>
-		<menu label="Fejlrapport" name="Bug Reporting">
-			<menu_item_call label="[SECOND_LIFE] sagsstyring..." name="Public Issue Tracker..."/>
-			<menu_item_call label="Hjælp til [SECOND_LIFE] sagsstyring..." name="Publc Issue Tracker Help..."/>
-			<menu_item_separator label="-----------" name="separator7"/>
-			<menu_item_call label="Om fejlrapportering..." name="Bug Reporing 101..."/>
-			<menu_item_call label="Anmeld sikkerhedshændelser..." name="Security Issues..."/>
-			<menu_item_call label="QA Wiki..." name="QA Wiki..."/>
-			<menu_item_separator label="-----------" name="separator9"/>
-			<menu_item_call label="Anmeld fejl..." name="Report Bug..."/>
-		</menu>
-		<menu_item_call label="Om [APP_NAME]..." name="About Second Life..."/>
+		<menu_item_call label="Rapporter misbrug" name="Report Abuse"/>
+		<menu_item_call label="Rapportér fejl" name="Report Bug"/>
+	</menu>
+	<menu label="Avanceret" name="Advanced">
+		<menu_item_check label="Sæt til &quot;væk&quot; efter 30 minutter" name="Go Away/AFK When Idle"/>
+		<menu_item_call label="Stop animering af min avatar" name="Stop Animating My Avatar"/>
+		<menu_item_call label="Gendan teksturer" name="Rebake Texture"/>
+		<menu_item_call label="Sæt UI størrelse til standard" name="Set UI Size to Default"/>
+		<menu_item_check label="Begræns valg afstand" name="Limit Select Distance"/>
+		<menu_item_check label="Fjern kamerabegrænsninger" name="Disable Camera Distance"/>
+		<menu_item_check label="Højopløsningsfoto" name="HighResSnapshot"/>
+		<menu_item_check label="Lydløse foto&apos;s til disk" name="QuietSnapshotsToDisk"/>
+		<menu_item_check label="Komprimér fotos til disk" name="CompressSnapshotsToDisk"/>
+		<menu label="Værktøjer til ydelse" name="Performance Tools">
+			<menu_item_call label="Lag meter" name="Lag Meter"/>
+			<menu_item_check label="Statistik bjælke" name="Statistics Bar"/>
+			<menu_item_check label="Vis avatarers gengivelsesbelastning" name="Avatar Rendering Cost"/>
+		</menu>
+		<menu label="Fremhævninger og  and sigtbarhed" name="Highlighting and Visibility">
+			<menu_item_check label="Pejlelys blink effekt" name="Cheesy Beacon"/>
+			<menu_item_check label="Skjul partikler" name="Hide Particles"/>
+			<menu_item_check label="Skjul valgte" name="Hide Selected"/>
+			<menu_item_check label="Fremhæv gennemsigtigt" name="Highlight Transparent"/>
+			<menu_item_check label="Vis HUD vedhæftninger" name="Show HUD Attachments"/>
+			<menu_item_check label="Vis muse-sigte" name="ShowCrosshairs"/>
+			<menu_item_check label="Vis tips om land" name="Land Tips"/>
+		</menu>
+		<menu label="Gengivelsestyper" name="Rendering Types">
+			<menu_item_check label="Simpel" name="Simple"/>
+			<menu_item_check label="Alpha" name="Alpha"/>
+			<menu_item_check label="Træer" name="Tree"/>
+			<menu_item_check label="Avatarer" name="Character"/>
+			<menu_item_check label="SurfacePath" name="SurfacePath"/>
+			<menu_item_check label="Himmel" name="Sky"/>
+			<menu_item_check label="Vand" name="Water"/>
+			<menu_item_check label="Jord" name="Ground"/>
+			<menu_item_check label="Volume" name="Volume"/>
+			<menu_item_check label="Græs" name="Grass"/>
+			<menu_item_check label="Skyer" name="Clouds"/>
+			<menu_item_check label="Partikler" name="Particles"/>
+			<menu_item_check label="Bump" name="Bump"/>
+		</menu>
+		<menu label="Gengivelsesegenskaber" name="Rendering Features">
+			<menu_item_check label="UI" name="UI"/>
+			<menu_item_check label="Valgte" name="Selected"/>
+			<menu_item_check label="Fremhævede" name="Highlighted"/>
+			<menu_item_check label="Dynamiske teksturer" name="Dynamic Textures"/>
+			<menu_item_check label="Fod skygger" name="Foot Shadows"/>
+			<menu_item_check label="TÃ¥ge" name="Fog"/>
+			<menu_item_check label="Fleksible objekter" name="Flexible Objects"/>
+		</menu>
+		<menu_item_check label="Kør flere tråde" name="Run Multiple Threads"/>
+		<menu_item_call label="Tøm gruppe cache" name="ClearGroupCache"/>
+		<menu_item_check label="Muse udjævning" name="Mouse Smoothing"/>
+		<menu_item_check label="Vis IM&apos;s i lokal chat" name="IMInChat"/>
+		<menu label="Shortcuts" name="Shortcuts">
+			<menu_item_check label="Søg" name="Search"/>
+			<menu_item_call label="Frigør taster" name="Release Keys"/>
+			<menu_item_call label="Sæt UI størrelse til standard" name="Set UI Size to Default"/>
+			<menu_item_check label="Løb altid" name="Always Run"/>
+			<menu_item_check label="Flyv" name="Fly"/>
+			<menu_item_call label="Luk vindue" name="Close Window"/>
+			<menu_item_call label="Luk alle vinduer" name="Close All Windows"/>
+			<menu_item_call label="Foto til disk" name="Snapshot to Disk"/>
+			<menu_item_call label="Første person" name="Mouselook"/>
+			<menu_item_check label="&quot;Joystick Flycam&quot;" name="Joystick Flycam"/>
+			<menu_item_call label="Nulstil udsyn" name="Reset View"/>
+			<menu_item_call label="Se på den sidste der chattede" name="Look at Last Chatter"/>
+			<menu label="Vælg byggeværktøj" name="Select Tool">
+				<menu_item_call label="Fokuseringsværktøj" name="Focus"/>
+				<menu_item_call label="Flyt værktøj" name="Move"/>
+				<menu_item_call label="Redigeringsværktøj" name="Edit"/>
+				<menu_item_call label="Opret værktøj" name="Create"/>
+				<menu_item_call label="Land værktøj" name="Land"/>
+			</menu>
+			<menu_item_call label="Zoom ind" name="Zoom In"/>
+			<menu_item_call label="Zoom standard" name="Zoom Default"/>
+			<menu_item_call label="Zoom ud" name="Zoom Out"/>
+			<menu_item_call label="Skift fuld-skærm" name="Toggle Fullscreen"/>
+		</menu>
+		<menu_item_call label="Vis debug valg" name="Debug Settings"/>
+		<menu_item_check label="Vis udviklingsmenu" name="Debug Mode"/>
+	</menu>
+	<menu label="Udvikling" name="Develop">
+		<menu label="Konsoller" name="Consoles">
+			<menu_item_check label="Tekstur konsol" name="Texture Console"/>
+			<menu_item_check label="Debug konsol" name="Debug Console"/>
+			<menu_item_call label="Konsol med notifikationer" name="Notifications"/>
+			<menu_item_check label="Tekstur størrelse konsol" name="Texture Size"/>
+			<menu_item_check label="Konsol med tekstur kategorier" name="Texture Category"/>
+			<menu_item_check label="Hurtig-timere" name="Fast Timers"/>
+			<menu_item_check label="Hukommelse" name="Memory"/>
+			<menu_item_call label="Vis Regionsinfo i debug-konsol" name="Region Info to Debug Console"/>
+			<menu_item_check label="Kamera" name="Camera"/>
+			<menu_item_check label="Vind" name="Wind"/>
+		</menu>
+		<menu label="Vis info" name="Display Info">
+			<menu_item_check label="Vis tid" name="Show Time"/>
+			<menu_item_check label="Vis gengivelses information" name="Show Render Info"/>
+			<menu_item_check label="Vis farve under cursor" name="Show Color Under Cursor"/>
+			<menu_item_check label="Vis opdateringer på objekter" name="Show Updates"/>
+		</menu>
+		<menu label="Fremtving en fejl" name="Force Errors">
+			<menu_item_call label="Sæt breakpoint" name="Force Breakpoint"/>
+			<menu_item_call label="Gennemtving LLError og crash" name="Force LLError And Crash"/>
+			<menu_item_call label="Fremtving &quot;Bad Memory Access&quot;" name="Force Bad Memory Access"/>
+			<menu_item_call label="Fremtving en uendelig løkke" name="Force Infinite Loop"/>
+			<menu_item_call label="Gennemtving drivernedbrud" name="Force Driver Carsh"/>
+			<menu_item_call label="Gennemtving software &quot;exception&quot;" name="Force Software Exception"/>
+			<menu_item_call label="Fremtving mistet forbindelse" name="Force Disconnect Viewer"/>
+			<menu_item_call label="Simulér et memory leak" name="Memory Leaking Simulation"/>
+		</menu>
+		<menu label="Gengivelses tests" name="Render Tests">
+			<menu_item_check label="Kamera offset" name="Camera Offset"/>
+			<menu_item_check label="Tilfældige framerates" name="Randomize Framerate"/>
+			<menu_item_check label="Frame test" name="Frame Test"/>
+		</menu>
+		<menu label="Gengivelse" name="Rendering">
+			<menu_item_check label="Akser" name="Axes"/>
+			<menu_item_check label="Wireframe" name="Wireframe"/>
+			<menu_item_check label="Global oplysning" name="Global Illumination"/>
+			<menu_item_check label="Animationsteksturer" name="Animation Textures"/>
+			<menu_item_check label="Slå teksturer fra" name="Disable Textures"/>
+			<menu_item_check label="Gengiv vedhæftede lys" name="Render Attached Lights"/>
+			<menu_item_check label="Gengiv vedhæftede partikler" name="Render Attached Particles"/>
+			<menu_item_check label="Hover Glow Objects" name="Hover Glow Objects"/>
+		</menu>
+		<menu label="Netværk" name="Network">
+			<menu_item_check label="Pause avatar" name="AgentPause"/>
+			<menu_item_call label="Mist en netværkspakke" name="Drop a Packet"/>
+		</menu>
+		<menu_item_call label="Stød, skub &amp; slag" name="Bumps, Pushes &amp;amp; Hits"/>
+		<menu label="Verden" name="World">
+			<menu_item_check label="Vælg anden sol end region" name="Sim Sun Override"/>
+			<menu_item_check label="Pejlelys blink effekt" name="Cheesy Beacon"/>
+			<menu_item_check label="Fast vejr" name="Fixed Weather"/>
+			<menu_item_call label="Dump Region Object Cache" name="Dump Region Object Cache"/>
+		</menu>
+		<menu label="UI (brugerflade)" name="UI">
+			<menu_item_call label="Test web browser" name="Web Browser Test"/>
+			<menu_item_call label="Print info om valgt objekt" name="Print Selected Object Info"/>
+			<menu_item_call label="Hukommelse statistik" name="Memory Stats"/>
+			<menu_item_check label="Dobbelt-klik auto-pilot" name="Double-ClickAuto-Pilot"/>
+			<menu_item_check label="Debug klik" name="Debug Clicks"/>
+			<menu_item_check label="Debug muse-hændelser" name="Debug Mouse Events"/>
+		</menu>
+		<menu label="XUI" name="XUI">
+			<menu_item_call label="Genindlæs farveopsætning" name="Reload Color Settings"/>
+			<menu_item_call label="Vis font test" name="Show Font Test"/>
+			<menu_item_call label="Hent fra XML" name="Load from XML"/>
+			<menu_item_call label="Gem til XML" name="Save to XML"/>
+			<menu_item_check label="Vis XUI navne" name="Show XUI Names"/>
+			<menu_item_call label="Send testbeskeder (IM)" name="Send Test IMs"/>
+		</menu>
+		<menu label="Avatar" name="Character">
+			<menu label="Grab Baked Texture" name="Grab Baked Texture">
+				<menu_item_call label="Iris" name="Iris"/>
+				<menu_item_call label="Hovede" name="Head"/>
+				<menu_item_call label="Overkrop" name="Upper Body"/>
+				<menu_item_call label="Underkrop" name="Lower Body"/>
+				<menu_item_call label="Nederdel" name="Skirt"/>
+			</menu>
+			<menu label="Avatar tests" name="Character Tests">
+				<menu_item_call label="Skift avatar geometri" name="Toggle Character Geometry"/>
+				<menu_item_check label="Tillad at udvælge avatar" name="Allow Select Avatar"/>
+			</menu>
+			<menu_item_call label="Tving værdier til standard" name="Force Params to Default"/>
+			<menu_item_check label="Animationsinfo" name="Animation Info"/>
+			<menu_item_check label="Slow motion animationer" name="Slow Motion Animations"/>
+			<menu_item_check label="Slå &quot;Level Of Detail&quot; fra" name="Disable LOD"/>
+			<menu_item_check label="Vis kollision skelet" name="Show Collision Skeleton"/>
+			<menu_item_check label="Vis avatar center" name="Display Agent Target"/>
+			<menu_item_call label="Debug avatar teksturer" name="Debug Avatar Textures"/>
+		</menu>
+		<menu_item_check label="HTTP teksturer" name="HTTP Textures"/>
+		<menu_item_check label="Benyt consol vindue ved næste opstart" name="Console Window"/>
+		<menu_item_check label="Vis administrationsmenu" name="View Admin Options"/>
+		<menu_item_call label="Anmod om administrator status" name="Request Admin Options"/>
+		<menu_item_call label="Forlad administrationsstatus" name="Leave Admin Options"/>
+	</menu>
+	<menu label="Administrér" name="Admin">
+		<menu label="Object">
+			<menu_item_call label="Tag kopi" name="Take Copy"/>
+			<menu_item_call label="Gennemtving ejer til mig" name="Force Owner To Me"/>
+			<menu_item_call label="Gennemtving ejer tolerance" name="Force Owner Permissive"/>
+			<menu_item_call label="Slet" name="Delete"/>
+			<menu_item_call label="LÃ¥s" name="Lock"/>
+		</menu>
+		<menu label="Parcel" name="Parcel">
+			<menu_item_call label="Sæt ejer til &quot;mig&quot;" name="Owner To Me"/>
+			<menu_item_call label="Sat til Linden indhold" name="Set to Linden Content"/>
+			<menu_item_call label="Kræv offentligt land" name="Claim Public Land"/>
+		</menu>
+		<menu label="Region" name="Region">
+			<menu_item_call label="Dump Temporary Asset Data" name="Dump Temp Asset Data"/>
+			<menu_item_call label="Gem regions &quot;State&quot;" name="Save Region State"/>
+		</menu>
+		<menu_item_call label="&quot;God Tools&quot;" name="God Tools"/>
 	</menu>
 </menu_bar>
diff --git a/indra/newview/skins/default/xui/da/mime_types_mac.xml b/indra/newview/skins/default/xui/da/mime_types_mac.xml
new file mode 100644
index 00000000000..bd9981b0456
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/mime_types_mac.xml
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<mimetypes name="default">
+	<widgetset name="web">
+		<label name="web_label">
+			Web indhold
+		</label>
+		<tooltip name="web_tooltip">
+			Dette sted har web-indhold
+		</tooltip>
+		<playtip name="web_playtip">
+			Vis web-indhold
+		</playtip>
+	</widgetset>
+	<widgetset name="movie">
+		<label name="movie_label">
+			Film
+		</label>
+		<tooltip name="movie_tooltip">
+			Der kan ses en film her
+		</tooltip>
+		<playtip name="movie_playtip">
+			Afspil film
+		</playtip>
+	</widgetset>
+	<widgetset name="image">
+		<label name="image_label">
+			Billede
+		</label>
+		<tooltip name="image_tooltip">
+			Dette sted har et billede
+		</tooltip>
+		<playtip name="image_playtip">
+			Vis dette steds billede
+		</playtip>
+	</widgetset>
+	<widgetset name="audio">
+		<label name="audio_label">
+			Lyd
+		</label>
+		<tooltip name="audio_tooltip">
+			Dette sted har lyd
+		</tooltip>
+		<playtip name="audio_playtip">
+			Afdspil dette steds lyd
+		</playtip>
+	</widgetset>
+	<scheme name="rtsp">
+		<label name="rtsp_label">
+			Real Time Streaming
+		</label>
+	</scheme>
+	<mimetype name="blank">
+		<label name="blank_label">
+			- Ingen -
+		</label>
+	</mimetype>
+	<mimetype name="none/none">
+		<label name="none/none_label">
+			- Ingen -
+		</label>
+	</mimetype>
+	<mimetype name="audio/*">
+		<label name="audio2_label">
+			Lyd
+		</label>
+	</mimetype>
+	<mimetype name="video/*">
+		<label name="video2_label">
+			Video
+		</label>
+	</mimetype>
+	<mimetype name="image/*">
+		<label name="image2_label">
+			Billede
+		</label>
+	</mimetype>
+	<mimetype name="video/vnd.secondlife.qt.legacy">
+		<label name="vnd.secondlife.qt.legacy_label">
+			Film (QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="application/javascript">
+		<label name="application/javascript_label">
+			Javascript
+		</label>
+	</mimetype>
+	<mimetype name="application/ogg">
+		<label name="application/ogg_label">
+			Ogg Audio/Video
+		</label>
+	</mimetype>
+	<mimetype name="application/pdf">
+		<label name="application/pdf_label">
+			PDF Dokument
+		</label>
+	</mimetype>
+	<mimetype name="application/postscript">
+		<label name="application/postscript_label">
+			Postscript Dokument
+		</label>
+	</mimetype>
+	<mimetype name="application/rtf">
+		<label name="application/rtf_label">
+			Rich Text (RTF)
+		</label>
+	</mimetype>
+	<mimetype name="application/smil">
+		<label name="application/smil_label">
+			Synchronized Multimedia Integration Language (SMIL)
+		</label>
+	</mimetype>
+	<mimetype name="application/xhtml+xml">
+		<label name="application/xhtml+xml_label">
+			Web side (XHTML)
+		</label>
+	</mimetype>
+	<mimetype name="application/x-director">
+		<label name="application/x-director_label">
+			Macromedia Director
+		</label>
+	</mimetype>
+	<mimetype name="audio/mid">
+		<label name="audio/mid_label">
+			Lyd (MIDI)
+		</label>
+	</mimetype>
+	<mimetype name="audio/mpeg">
+		<label name="audio/mpeg_label">
+			Lyd (MP3)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-aiff">
+		<label name="audio/x-aiff_label">
+			Lyd (AIFF)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-wav">
+		<label name="audio/x-wav_label">
+			Lyd (WAV)
+		</label>
+	</mimetype>
+	<mimetype name="image/bmp">
+		<label name="image/bmp_label">
+			Billede (BMP)
+		</label>
+	</mimetype>
+	<mimetype name="image/gif">
+		<label name="image/gif_label">
+			Billede (GIF)
+		</label>
+	</mimetype>
+	<mimetype name="image/jpeg">
+		<label name="image/jpeg_label">
+			Billede (JPEG)
+		</label>
+	</mimetype>
+	<mimetype name="image/png">
+		<label name="image/png_label">
+			Billede (PNG)
+		</label>
+	</mimetype>
+	<mimetype name="image/svg+xml">
+		<label name="image/svg+xml_label">
+			Billede (SVG)
+		</label>
+	</mimetype>
+	<mimetype name="image/tiff">
+		<label name="image/tiff_label">
+			Billede (TIFF)
+		</label>
+	</mimetype>
+	<mimetype name="text/html">
+		<label name="text/html_label">
+			Web side
+		</label>
+	</mimetype>
+	<mimetype name="text/plain">
+		<label name="text/plain_label">
+			Tekst
+		</label>
+	</mimetype>
+	<mimetype name="text/xml">
+		<label name="text/xml_label">
+			XML
+		</label>
+	</mimetype>
+	<mimetype name="video/mpeg">
+		<label name="video/mpeg_label">
+			Film (MPEG)
+		</label>
+	</mimetype>
+	<mimetype name="video/mp4">
+		<label name="video/mp4_label">
+			Film (MP4)
+		</label>
+	</mimetype>
+	<mimetype name="video/quicktime">
+		<label name="video/quicktime_label">
+			Film (QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-asf">
+		<label name="video/x-ms-asf_label">
+			Film (Windows Media ASF)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-wmv">
+		<label name="video/x-ms-wmv_label">
+			Film (Windows Media WMV)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-msvideo">
+		<label name="video/x-msvideo_label">
+			Film (AVI)
+		</label>
+	</mimetype>
+</mimetypes>
diff --git a/indra/newview/skins/default/xui/da/notifications.xml b/indra/newview/skins/default/xui/da/notifications.xml
index 42f55d4678c..42eac1be7a4 100644
--- a/indra/newview/skins/default/xui/da/notifications.xml
+++ b/indra/newview/skins/default/xui/da/notifications.xml
@@ -9,74 +9,33 @@
 	<global name="implicitclosebutton">
 		Luk
 	</global>
-  <template name="okbutton">
-    <form>
-      <button
-       name="OK"
-       text="$yestext"/>
-    </form>
-  </template>
-
-  <template name="okignore">
-    <form>
-      <button
-       name="OK"
-       text="$yestext"/>
-      <ignore text="$ignoretext"/>
-    </form>
-  </template>
-
-  <template name="okcancelbuttons">
-    <form>
-      <button
-       name="OK"
-       text="$yestext"/>
-      <button
-       name="Cancel"
-       text="$notext"/>
-    </form>
-  </template>
-
-  <template name="okcancelignore">
-    <form>
-      <button
-       name="OK"
-       text="$yestext"/>
-      <button
-       name="Cancel"
-       text="$notext"/>
-      <ignore text="$ignoretext"/>
-    </form>
-  </template>
-
-  <template name="okhelpbuttons">
-    <form>
-      <button
-       name="OK"
-       text="$yestext"/>
-      <button
-       name="Help"
-       text="$helptext"/>
-    </form>
-  </template>
-
-  <template name="yesnocancelbuttons">
-    <form>
-      <button
-       name="Yes"
-       text="$yestext"/>
-      <button
-       name="No"
-       text="$notext"/>
-      <button
-       name="Cancel"
-       text="$canceltext"/>
-    </form>
-  </template>
-	<notification functor="GenericAcknowledge" label="Ukendt advarsels-besked" name="MissingAlert">
-		Din version af [APP_NAME] kan ikke vise den advarselsbesked den modtog.
+	<template name="okbutton">
+		<form>
+			<button name="OK" text="$yestext"/>
+		</form>
+	</template>
+	<template name="okignore"/>
+	<template name="okcancelbuttons">
+		<form>
+			<button name="Cancel" text="$notext"/>
+		</form>
+	</template>
+	<template name="okcancelignore"/>
+	<template name="okhelpbuttons">
+		<form>
+			<button name="Help" text="$helptext"/>
+		</form>
+	</template>
+	<template name="yesnocancelbuttons">
+		<form>
+			<button name="Yes" text="$yestext"/>
+			<button name="No" text="$notext"/>
+		</form>
+	</template>
+	<notification functor="GenericAcknowledge" label="Ukendt notificeringsbesked" name="MissingAlert">
+		Din version af [APP_NAME] kan ikke vise den besked den lige modtog.  Undersøg venligst at du har den nyester version af klienten installeret.
 
-Fejl detaljer: Advarslen &apos;[_NAME]&apos; blev ikke fundet i notifications.xml.
+Fejl detaljer: Beskeden kaldet &apos;[_NAME]&apos; blev ikke fundet i notifications.xml.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="FloaterNotFound">
@@ -97,24 +56,18 @@ Fejl detaljer: Advarslen &apos;[_NAME]&apos; blev ikke fundet i notifications.xm
 		<usetemplate name="okcancelbuttons" notext="Annullér" yestext="Ja"/>
 	</notification>
 	<notification name="BadInstallation">
-		Der opstod en fejl ved opdatering af [APP_NAME]. Hent venligst den nyeste version fra secondlife.com.
-    <usetemplate
-     name="okbutton"
-     yestext="OK"/>
+		Der opstod en fejl ved opdatering af [APP_NAME].  Please [http://get.secondlife.com download the latest version] of the Viewer.
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="LoginFailedNoNetwork">
-		Netværksfejl: Kunne ikke oprette forbindelse.
+		Kunne ikke oprette forbindelse til [SECOND_LIFE_GRID].
 &apos;[DIAGNOSTIC]&apos;
-Check venligst din netværksforbindelse.
-	<usetemplate
-     name="okbutton"
-     yestext="OK"/>
+Make sure your Internet connection is working properly.
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="MessageTemplateNotFound">
 		Besked template [PATH] kunne ikke findes.
-	<usetemplate
-     name="okbutton"
-     yestext="OK"/>
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="WearableSave">
 		Gem ændringer til nuværende tøj/krops del?
@@ -177,7 +130,7 @@ Vælg kun en genstand, og prøv igen.
 Medlemmer ikke kan fjernes fra denne rolle.
 Medlemmerne skal fratræde sin rolle selv.
 Er du sikker på du vil fortsætte?
-		<usetemplate ignoretext="Når du tilføjer medlemmer til ejer rollen" name="okcancelignore" notext="Nej" yestext="Ja"/>
+		<usetemplate ignoretext="Bekræft, før jeg tilføjer en ny gruppe ejer" name="okcancelignore" notext="Nej" yestext="Ja"/>
 	</notification>
 	<notification name="AssignDangerousActionWarning">
 		Du er ved at tilføje muligheden for &apos;[ACTION_NAME]&apos; til
@@ -189,47 +142,31 @@ Ethvert medlem i en rolle med denne evne kan tildele sig selv -- og et andet med
 Add this Ability to &apos;[ROLE_NAME]&apos;?
 		<usetemplate name="okcancelbuttons" notext="Nej" yestext="Ja"/>
 	</notification>
-	<notification name="ClickSoundHelpLand">
-		Media og musik kan kun ses og høres indenfor parcellen. Lyd og stemme valg muligheder kan begrænses til parcellen eller de kan høres af beboere udenfor parcellen, afhængigt af deres indholdsrating. Gå til &apos;Knowledge Base&apos; for at lære hvordan disse valg opsættes.
-		<url name="url">
-			https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=5046
-		</url>
-    <usetemplate
-     name="okcancelbuttons"
-     yestext="GÃ¥ til &apos;Knowledge Base&apos;"
-	 notext="Luk" />
-	</notification>
-	<notification name="ClickSearchHelpAll">
-		Søgeresultater er organiseret baseret på den fane du står på, din indholdsrating, den valgte kategori og andre faktorer. for yderligere detaljer se i &apos;Knowledge Base&apos;.
-		<url name="url">
-			https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=4722
-		</url>
-    <usetemplate
-     name="okcancelbuttons"
-     yestext="GÃ¥ til &apos;Knowledge Base&apos;"
-	 notext="Luk" />
-	</notification>
-	<notification name="ClickPublishHelpAvatar">
-		Hvis du vælger &quot;Vis i Søgning&quot; Vises:
-- Din profil i søgeresultater
-- Et link til din profile i de offentlige gruppe sider
-	</notification>
-	<notification name="ClickUploadHelpPermissions">
-		Dinne standard rettigheder virker muligvis ikke i ældre regioner.
-	</notification>
-	<notification name="ClickWebProfileHelpAvatar">
-		Hvis en beboer har en hjemmeside adresse kan du:
- * Klikke &apos;Load&apos; for at side deres side her.
- * Klikke Load &gt; &apos;I ekstern browser&apos; for at se siden i din standard browser.
- * Klikke Load &gt; &apos;Hjemme URL&apos; for at returnere til denne beboers side hvis du har navigeret væk.
-
-Når du ser din egen profil, kan du skrive hvilken som helst adresse og klikke ok for at få den vist i din egen profil.
-Andre beboere kan besøge den adresse du har sat, når de besøger din profil.
+	<notification name="ClickUnimplemented">
+		Beklager, ikke implementeret endnu.
 	</notification>
 	<notification name="JoinGroupCannotAfford">
 		Tilmelding til denne gruppe koster L$[COST].
 Du har ikke nok L$ til denne tilmelding.
 	</notification>
+	<notification name="CreateGroupCost">
+		Oprettelse af denne gruppe vil koste L$100.
+Grupper skal have mindst 2 medlemmer, ellers slettes de for altid.
+Invitér venligst medlemmer indenfor 48 timer.
+		<usetemplate canceltext="Annullér" name="okcancelbuttons" notext="Annullér" yestext="Oprete en gruppe for L$100"/>
+	</notification>
+	<notification name="ConfirmLandSaleToAnyoneChange">
+		ADVARSEL: Ved at vælge &apos;sælg til enhver&apos; bliver til land tilgængeligt for alle i hele [SECOND_LIFE], også de som ikke er i denne region.
+
+Det valgte antal [LAND_SIZE] m² land bliver sat til salg.
+Salgprisen vil være [SALE_PRICE]L$ og vil være til salg til [NAME].
+	</notification>
+	<notification name="MultipleFacesSelected">
+		Flere overflader er valgt for øjeblikket.
+Hvis du fortsætter med denne aktion, vil flere instanser af media blive vist på overfladerne på objektet.
+Hvis media kun skal vises på en overflade, vælg &apos;Vælg overflade&apos; og klik på den relevante overflade  og klik på tilføj.
+		<usetemplate ignoretext="Media vil blive sat på flere valgte overflader" name="okcancelignore" notext="Annullér" yestext="OK"/>
+	</notification>
 	<notification name="PromptMissingSubjMsg">
 		E-mail dette billede med standard emne eller besked?
 		<usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/>
@@ -237,6 +174,10 @@ Du har ikke nok L$ til denne tilmelding.
 	<notification name="ErrorUploadingPostcard">
 		Der var et problem med at sende billedet på grund af følgende: [REASON]
 	</notification>
+	<notification name="MaxAttachmentsOnOutfit">
+		Kunne ikke vedhæfte objekt.
+Overskrider vedhæftnings begrænsning på [MAX_ATTACHMENTS] objekter. Tag venligst en anden vedhæftning af først.
+	</notification>
 	<notification name="MustHaveAccountToLogIn">
 		Ups! Noget var tomt.
 Du skal skrive både fornavn og efternavn på din figur.
@@ -244,6 +185,18 @@ Du skal skrive både fornavn og efternavn på din figur.
 Du har brug for en konto for at logge ind i [SECOND_LIFE]. Vil du oprette en nu?
 		<usetemplate name="okcancelbuttons" notext="Prøv igen" yestext="Lav ny konto"/>
 	</notification>
+	<notification name="AddClassified">
+		Annoncer vil vises i &apos;Annoncer&apos; sektionen i søge biblioteket og på [http://secondlife.com/community/classifieds secondlife.com] i en uge.
+Udfyld din annonce og klik på &apos;Udgiv...&apos; for at tilf&apos;je den til biblioteket.				
+Du vil blive spurgt om en pris når du klikker på &apos;Udgiv&apos;.
+Jo mere du betaler, jo højere oppe på listen vises annoncen, og den vil også optræde højere oppe når personer søger.
+		<usetemplate ignoretext="Hvordan man opretter en annonce" name="okcancelignore" notext="Cancel" yestext="OK"/>
+	</notification>
+	<notification name="DeleteMedia">
+		Du har valgt at slette media tilknyttet denne overflade.
+Er du sikker på at du vil fortsætte?
+		<usetemplate ignoretext="Bekræft før jeg slette media i et objekt" name="okcancelignore" notext="Nej" yestext="Ja"/>
+	</notification>
 	<notification name="ResetShowNextTimeDialogs">
 		Vil du gerne genaktivere alle disse popups, som du tidligere har bedt om ikke at få vist?
 		<usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/>
@@ -252,86 +205,144 @@ Du har brug for en konto for at logge ind i [SECOND_LIFE]. Vil du oprette en nu?
 		Vil du deaktivere alle popups som kan undværes?
 		<usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/>
 	</notification>
+	<notification name="CacheWillClear">
+		Cache vil blive tømt ved næste genstart af [APP_NAME].
+	</notification>
+	<notification name="CacheWillBeMoved">
+		Cache vil blive flyttet ved næste genstart af [APP_NAME].
+Note: This will clear the cache.
+	</notification>
+	<notification name="ChangeConnectionPort">
+		Port ændringer vil blive effektueret ved næste genstart af [APP_NAME].
+	</notification>
 	<notification name="ChangeSkin">
-		Det nye udseende vil vises efter du har genstartet [APP_NAME].
+		Den nye hud vil blive vist ved næste genstart af [APP_NAME].
+	</notification>
+	<notification name="StartRegionEmpty">
+		Ups, din start region er ikke angivet.
+Indtast venligst navn på region i Start lokation feltet eller vælg &quot;Min sidste lokation&quot; eller &quot;Hjem&quot;.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="UnsupportedHardware">
+		<usetemplate ignoretext="Din computer hardware understøttes ikke" name="okcancelignore" notext="No" yestext="Yes"/>
 	</notification>
-	<notification name="UnsupportedHardware"/>
 	<notification name="UnknownGPU">
+		Dit system har et grafikkort som er ukendt for [APP_NAME] lige nu.
+Dette er tilfældet med nyt hardware som endnu ikke er blevet testet med [APP_NAME].  [APP_NAME] vil sandsynligvis kunne køre normalt, men det kan være nødvendigt at justere opsætningen af grafik.
+(Mig &gt; Indstillinger &gt; Grafik).
 		<form name="form">
-			<ignore name="ignore" text="Ved opdagelse af et ukendt grafikkort"/>
+			<ignore name="ignore" text="Dit grafikkort kunne ikke identificeres"/>
 		</form>
 	</notification>
+	<notification name="DisplaySettingsNoShaders">
+		[APP_NAME] gik ned ved inititalisering af grafik drivere.
+Grafik kvaliteten sættes til &apos;lav&apos; for at undgå typiske problemer med drivere. Dette vil slå visse grafik funktioner fra.
+Vi anbefaler at opdatere driverne til dit grafikkort.
+Grafik kvaliteten kan forbedres i indstillinger &gt; Grafik.
+	</notification>
+	<notification name="CannotGiveCategory">
+		Du har ikke tilladelse til at videreføre den valgte mappe.
+	</notification>
+	<notification name="EjectAvatarFromGroup">
+		Du har smidt [AVATAR_NAME] ud af gruppen [GROUP_NAME]
+	</notification>
+	<notification name="PromptGoToCurrencyPage">
+		[EXTRA]
 
-  <notification name="invalid_tport">
-Der er problemer med at håndtere din teleport. Det kan være nødvendigt at logge ud og ind for at kunne skifte teleportere.
-Hvis du bliver ved med at have problemet kan du checke teknisk support på:
-www.secondlife.com/support
-  </notification>
-  <notification name="invalid_region_handoff">
-Problem registreret i forbindelse med skift til ny region. Det kan være nødvendigt at logge ud og ind for at kunne skifte regioner.
-Hvis du bliver ved med at have problemet kan du checke teknisk support på:
-www.secondlife.com/support
-  </notification>
-  <notification name="blocked_tport">
-Beklager, teleport er blokeret lige nu. Prøv igen senere.
+Gå til [_URL] for information om køb af L$?
+	</notification>
+	<notification name="CannotEncodeFile">
+		Kunne ikke &apos;forstå&apos; filen: [FILE]
+	</notification>
+	<notification name="DoNotSupportBulkAnimationUpload">
+		[APP_NAME] understøtter p.t. ikke at send flere animationsfiler ad gangen.
+	</notification>
+	<notification name="LandmarkCreated">
+		Du har tilføjet &quot;[LANDMARK_NAME]&quot; til din [FOLDER_NAME] mappe.
+	</notification>
+	<notification name="CannotOpenScriptObjectNoMod">
+		Ikke muligt at åbne script i objekt uden &apos;Redigére&apos; rettigheder.
+	</notification>
+	<notification name="invalid_tport">
+		Der opstod et problem ved din teleport. Det kan være nødvendigt at logge ind igen, før du kan teleporte.
+Hvis du bliver ved med at få denne fejl, check venligst [SUPPORT_SITE].
+	</notification>
+	<notification name="invalid_region_handoff">
+		Der opstod et problem ved skift til ny region. Det kan være nødvendigt at logge ind igen, før du kan skifte til andre regioner.
+Hvis du bliver ved med at få denne fejl, check venligst [SUPPORT_SITE].
+	</notification>
+	<notification name="blocked_tport">
+		Beklager, teleport er blokeret lige nu. Prøv igen senere.
 Hvis du stadig ikke kan teleporte, prøv venligst at logge ud og ligge ind for at løse dette problem.
-  </notification>
-  <notification name="nolandmark_tport">
-Beklager, systemet kunne ikke finde landmærke destinationen.
-  </notification>
-  <notification name="timeout_tport">
-Beklager, systemet kunne ikke fuldføre teleport forbindelse.
+	</notification>
+	<notification name="nolandmark_tport">
+		Beklager, systemet kunne ikke finde landmærke destinationen.
+	</notification>
+	<notification name="timeout_tport">
+		Beklager, systemet kunne ikke fuldføre teleport forbindelse.
 Prøv igen om lidt.
-  </notification>
-  <notification name="noaccess_tport">
-Beklager, du har ikke adgang til denne teleport destination.
-  </notification>
-  <notification name="missing_attach_tport">
-Dine vedhæng er ikke ankommet endnu. Prøv at vente lidt endnu eller log ud og ind igen før du prøver at teleporte igen.
-  </notification>
-  <notification name="too_many_uploads_tport">
-Tekniske problemer hindrer at din teleport kan gennemføres.
+	</notification>
+	<notification name="noaccess_tport">
+		Beklager, du har ikke adgang til denne teleport destination.
+	</notification>
+	<notification name="missing_attach_tport">
+		Dine vedhæng er ikke ankommet endnu. Prøv at vente lidt endnu eller log ud og ind igen før du prøver at teleporte igen.
+	</notification>
+	<notification name="too_many_uploads_tport">
+		Tekniske problemer hindrer at din teleport kan gennemføres.
 Prøv venligst igen om lidt eller vælg et mindre travlt område.
-  </notification>
-  <notification name="expired_tport">
-Beklager, men systemet kunne ikke fuldføre din teleport i rimelig tid. Prøv venligst igen om lidt.
-  </notification>
-  <notification name="expired_region_handoff">
-Beklager, men systemet kunne ikke fuldføre skift til anden region i rimelig tid. Prøv venligst igen om lidt.
-  </notification>
-  <notification name="no_host">
-Ikke muligt at fine teleport destination. Destinationen kan være midlertidig utilgængelig eller findes ikke mere. 
+	</notification>
+	<notification name="expired_tport">
+		Beklager, men systemet kunne ikke fuldføre din teleport i rimelig tid. Prøv venligst igen om lidt.
+	</notification>
+	<notification name="expired_region_handoff">
+		Beklager, men systemet kunne ikke fuldføre skift til anden region i rimelig tid. Prøv venligst igen om lidt.
+	</notification>
+	<notification name="no_host">
+		Ikke muligt at fine teleport destination. Destinationen kan være midlertidig utilgængelig eller findes ikke mere. 
 Prøv evt. igen om lidt.
-  </notification>
-  <notification name="no_inventory_host">
-Beholdningssystemet er ikke tilgængelig lige nu.
-  </notification>
-
-	<notification name="CannotGiveCategory">
-		Du har ikke tilladelse til at videreføre den valgte mappe.
 	</notification>
-	<notification name="CannotEncodeFile">
-		Kunne ikke &apos;forstå&apos; filen: [FILE]
+	<notification name="no_inventory_host">
+		Beholdningssystemet er ikke tilgængelig lige nu.
 	</notification>
 	<notification name="CannotBuyLandNoRegion">
 		Ikke i stand til at købe land:
 Kan ikke finde region som dette land er i.
 	</notification>
-	<notification name="ShowOwnersHelp">
-		Vis ejere:
-Farver på parceller viser ejer-type.
+	<notification name="CannotCloseFloaterBuyLand">
+		Du kan ikke lukke &apos;Køb land&apos; vinduet før [APP_NAME] har vurderet en pris på denne transaktion.
+	</notification>
+	<notification name="CannotDeedLandNoRegion">
+		Land kunne ikke dedikeres:
+Kunne ikke finde den region land ligger i.
+	</notification>
+	<notification name="ParcelCanPlayMedia">
+		Dette sted kan afspille &apos;streaming media&apos;.
+&apos;Streaming media&apos; kræver en hurtig internet opkobling.
 
-Grøn = Dit land
-Turkis = Din gruppes land
-Rød = Ejet af andre
-Gul = Til salg
-Lilla = PÃ¥ auktion
-Grå = Offentligt ejet
+Afspil altid &apos;streaming media&apos; når det er tilgængeligt?
+(Du kan ændre dette valg senere under Indstillinger &gt; Privatliv.)
+	</notification>
+	<notification name="CannotReleaseLandRegionNotFound">
+		Kunne ikke efterlade land:
+Kan ikke finde den region landet ligger i.
+	</notification>
+	<notification name="CannotDivideLandNoRegion">
+		Kunne ikke opdele land:
+Kan ikke finde den region landet ligger i.
+	</notification>
+	<notification name="CannotJoinLandNoRegion">
+		Kunne ikke opdele land:
+Kan ikke finde den region landet ligger i.
+	</notification>
+	<notification name="CannotSaveToAssetStore">
+		Kunne ikke gemme [NAME] i den centrale database.
+Dette er typisk en midlertidig fejl. Venligst rediger og gem igen om et par minutter.
 	</notification>
 	<notification name="YouHaveBeenLoggedOut">
-		Du er blevet logget ud af [SECOND_LIFE]:
+		Du er blevet logget af [SECOND_LIFE]:
             [MESSAGE]
-Du kan stadig se eksiterende PB&apos;er og chat ved at klikke&apos;Se PB &amp; Chat&apos;. Ellers, klik &apos;Afslut&apos; for at afslutte [APP_NAME] nu.
+Du kan stadig se igangværende samtaler (IM) og chat ved at klikke på &apos;Se IM &amp; chat. Ellers klik på &apos;Afslut&apos; for at lukke [APP_NAME] med det samme.
 		<usetemplate name="okcancelbuttons" notext="Afslut" yestext="Se PB &amp; Chat"/>
 	</notification>
 	<notification label="Tilføj ven" name="AddFriend">
@@ -354,15 +365,156 @@ Tilbyd venskab til [NAME]?
 			<button name="Cancel" text="Annullér"/>
 		</form>
 	</notification>
+	<notification name="AvatarMovedDesired">
+		Den ønskede lokation er ikke tilgængelig lige nu.
+Du er blevet flyttet til en region in nærheden.
+	</notification>
+	<notification name="AvatarMovedLast">
+		Din sidste lokation er ikke tilgængelig for øjeblikket.
+Du er blevet flyttet til en region in nærheden.
+	</notification>
+	<notification name="AvatarMovedHome">
+		Din hjemme lokation er ikke tilgængelig for øjeblikket.
+Du er blevet flyttet til en region in nærheden.
+Du kan måske ønske at sætte en ny hjemme lokation.
+	</notification>
+	<notification name="ClothingLoading">
+		Dit tøj hentes stadig ned.
+Du kan bruge [SECOND_LIFE] normalt og andre personer vil se dig korrekt.
+		<form name="form">
+			<ignore name="ignore" text="Det tager lang tid at hente tøj"/>
+		</form>
+	</notification>
+	<notification name="FirstRun">
+		[APP_NAME] installationen er færdig.
+
+Hvis det er første gang du bruger [SECOND_LIFE], skal du først oprette en konto for at logge på.
+Vend tilbage til [http://join.secondlife.com secondlife.com] for at oprette en ny konto?
+	</notification>
+	<notification name="LoginPacketNeverReceived">
+		Der er problemer med at koble på.  Der kan være et problem med din Internet forbindelse eller [SECOND_LIFE_GRID].
+
+Du kan enten checke din Internet forbindelse og prøve igen om lidt, klikke på Hjælp for at se [SUPPORT_SITE] siden, eller klikke på Teleport for at forsøge at teleportere hjem.
+	</notification>
 	<notification name="NotEnoughCurrency">
 		[NAME] L$ [PRICE] Du har ikke nok L$ til dette.
 	</notification>
+	<notification name="GrantedModifyRights">
+		[NAME] har givet dig rettighed til at redigere sine objekter.
+	</notification>
+	<notification name="RevokedModifyRights">
+		Dinne rettigheder til at redigere objekter ejet af [NAME] er fjernet
+	</notification>
 	<notification name="BuyOneObjectOnly">
 		Ikke muligt at købe mere end et objekt ad gangen. Vælg kun ét objekt og prøv igen.
 	</notification>
+	<notification name="DownloadWindowsMandatory">
+		En ny version af [APP_NAME] er tilgængelig.
+[MESSAGE]
+Du skal hente denne version for at bruge [APP_NAME].
+	</notification>
+	<notification name="DownloadWindows">
+		En opdateret version af [APP_NAME] er tilgængelig.
+[MESSAGE]
+Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
+	</notification>
+	<notification name="DownloadWindowsReleaseForDownload">
+		En opdateret version af [APP_NAME] er tilgængelig.
+[MESSAGE]
+Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
+	</notification>
+	<notification name="DownloadLinuxMandatory">
+		En ny version af [APP_NAME] er tilgængelig.
+[MESSAGE]
+Du skal hente denne version for at kunne benytte [APP_NAME].
+		<usetemplate name="okcancelbuttons" notext="Afslut" yestext="Hent"/>
+	</notification>
+	<notification name="DownloadLinux">
+		En opdateret version af [APP_NAME] er tilgængelig.
+[MESSAGE]
+Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
+		<usetemplate name="okcancelbuttons" notext="Fortsæt" yestext="Hent"/>
+	</notification>
+	<notification name="DownloadLinuxReleaseForDownload">
+		En opdateret version af [APP_NAME] er tilgængelig.
+[MESSAGE]
+Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
+		<usetemplate name="okcancelbuttons" notext="Fortsæt" yestext="Hent"/>
+	</notification>
+	<notification name="DownloadMacMandatory">
+		En ny version af [APP_NAME] er tilgængelig.
+[MESSAGE]
+Du skal hente denne opdatering for at bruge [APP_NAME].
+
+Download til dit Program bibliotek?
+	</notification>
+	<notification name="DownloadMac">
+		En opdateret version af [APP_NAME] er tilgængelig.
+[MESSAGE]
+Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
+
+Download til dit Program bibliotek?
+	</notification>
+	<notification name="DownloadMacReleaseForDownload">
+		En opdateret version af [APP_NAME] er tilgængelig.
+[MESSAGE]
+Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
+
+Download til dit Program bibliotek?
+	</notification>
+	<notification name="DeedObjectToGroup">
+		<usetemplate ignoretext="Bekræft før jeg dedikerer et objekt til en gruppe" name="okcancelignore" notext="Cancel" yestext="Deed"/>
+	</notification>
+	<notification name="WebLaunchExternalTarget">
+		Ønsker du at åbne din web browser for at se dette indhold?
+		<usetemplate ignoretext="Start min browser for at se hjemmesider" name="okcancelignore" notext="Cancel" yestext="OK"/>
+	</notification>
+	<notification name="WebLaunchJoinNow">
+		GÃ¥ til [http://secondlife.com/account/ Dashboard] for at administrere din konto?
+		<usetemplate ignoretext="Start min browser for at administrere min konto" name="okcancelignore" notext="Cancel" yestext="OK"/>
+	</notification>
+	<notification name="WebLaunchSecurityIssues">
+		<usetemplate ignoretext="Start min browser for at lære hvordan man rapporterer sikkerhedsproblemer" name="okcancelignore" notext="Cancel" yestext="OK"/>
+	</notification>
+	<notification name="WebLaunchQAWiki">
+		<usetemplate ignoretext="Start min browser for at se QA Wiki" name="okcancelignore" notext="Cancel" yestext="OK"/>
+	</notification>
+	<notification name="WebLaunchPublicIssue">
+		<usetemplate ignoretext="Start min browser for at bruge det Linden Labs sagsstyring" name="okcancelignore" notext="Cancel" yestext="Go to page"/>
+	</notification>
+	<notification name="WebLaunchSupportWiki">
+		<usetemplate ignoretext="Start min browser for at se bloggen" name="okcancelignore" notext="Cancel" yestext="OK"/>
+	</notification>
+	<notification name="WebLaunchLSLGuide">
+		Ønsker du at åbne &apos;Scripting Guide&apos; for hjælp til scripting?
+		<usetemplate ignoretext="Start min browser for at se Scripting Guide" name="okcancelignore" notext="Cancel" yestext="OK"/>
+	</notification>
+	<notification name="WebLaunchLSLWiki">
+		Ønsker du at besøge LSL portalen for hjælp til scripting?
+		<usetemplate ignoretext="Start min browser for at besøge LSL Portalen" name="okcancelignore" notext="Cancel" yestext="Go to page"/>
+	</notification>
+	<notification name="ReturnToOwner">
+		<usetemplate ignoretext="Bekræft før objekter returneres til deres ejere" name="okcancelignore" notext="Cancel" yestext="OK"/>
+	</notification>
+	<notification name="MuteLinden">
+		Beklager, men du kan ikke blokere en Linden.
+	</notification>
 	<notification name="CannotStartAuctionAlreadyForSale">
 		Du kan ikke starte en auktion på en parcel som allerede er sat til salg. Fjern &apos;til salg&apos; muligheden hvis du ønsker at starte en auktion.
 	</notification>
+	<notification label="Blokering af objekt via navn mislykkedes" name="MuteByNameFailed">
+		Du har allerede blokeret dette navn.
+	</notification>
+	<notification name="BusyModeSet">
+		Sat til &apos;optaget&apos;.
+Chat og personlige beskeder vil blive skjult. Personlige beskeder vil få din &apos;optaget&apos; besked. Alle teleport invitationer vil blive afvist. Alle objekter sendt til dig vil ende i papirkurven.
+		<usetemplate ignoretext="Jeg skrifter min status til &apos;optaget" name="okignore" yestext="OK"/>
+	</notification>
+	<notification name="JoinedTooManyGroupsMember">
+		Du har nået det maksimale antal grupper. Du skal forlade en anden gruppe for at kunne være med i denne - eller afvis tilbudet.
+[NAME] har inviteret dig til at være medlem af en gruppe.
+[INVITE]
+	</notification>
 	<notification name="OfferTeleport">
 		<form name="form">
 			<input name="message">
@@ -372,13 +524,22 @@ Tilbyd venskab til [NAME]?
 			<button name="Cancel" text="Annullér"/>
 		</form>
 	</notification>
+	<notification name="TeleportFromLandmark">
+		<usetemplate ignoretext="Bekræft at jeg vil teleportere til et landemærke" name="okcancelignore" notext="Cancel" yestext="Teleport"/>
+	</notification>
+	<notification name="TeleportToPick">
+		Teleport til [PICK]?
+		<usetemplate ignoretext="Bekræft at jeg ønsker at teleportere til et sted i favoritter" name="okcancelignore" notext="Annullér" yestext="Teleport"/>
+	</notification>
+	<notification name="TeleportToClassified">
+		Teleport til [CLASSIFIED]?
+		<usetemplate ignoretext="Bekræft at du ønsker at teleportere til lokation in annoncer" name="okcancelignore" notext="Annullér" yestext="Teleport"/>
+	</notification>
 	<notification name="RegionEntryAccessBlocked">
 		Du har ikke adgang til denne region på grund af din valgte indholdsrating. Dette kan skyldes manglende validering af din alder.
 
 Undersøg venligst om du har installeret den nyeste [APP_NAME] klient, og gå til &apos;Knowledge Base&apos; for yderligere detaljer om adgang til områder med denne indholdsrating.
-    <usetemplate
-     name="okbutton"
-     yestext="OK"/>
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="RegionEntryAccessBlocked_KB">
 		Du har ikke adgang til denne region på grund af din valgte indholdsrating.
@@ -387,36 +548,26 @@ GÃ¥ til &apos;Knowledge Base&apos; for mere information om indholdsratings.
 		<url name="url">
 			https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=6010
 		</url>
-    <usetemplate
-     name="okcancelignore"
-     yestext="GÃ¥ til &apos;Knowledge Base&apos;"
-	 notext="Luk"
-	 ignoretext="Når regionen er blokeret på grund af indholdsrating"/>
+		<usetemplate ignoretext="Ikke adgang til denne region på grund af begrænsninger i min indholdsrating" name="okcancelignore" notext="Luk" yestext="Gå til &apos;Knowledge Base&apos;"/>
 	</notification>
 	<notification name="RegionEntryAccessBlocked_Notify">
 		Du har ikke adgang til denne region på grund af din valgte indholdsrating.
 	</notification>
 	<notification name="RegionEntryAccessBlocked_Change">
-		Du har ikke adgang til denne region på grund af din nuværende indholdsrating opsætning.
+		Du har ikke adgang til denne region på grund af din indholdsrating præferencer.
 
-Du kan vælge &apos;Indstillinger&apos; for at hæve din indholdsrating nu og dermed få adgang. Du vil så få mulighed for at søge og få adgang til områder med indhold af typen [REGIONMATURITY]. Hvis du senere ønsker at skifte tilbage, kan du skifte tilbage i &apos;Indstillinger&apos;.
-	<form name="form">
-      <button
-       name="OK"
-       text="Ændre præferencer"/>
-      <button
-       name="Cancel"
-       text="Luk"/>
-       <ignore name="ignore" text="Når regionen er blokeret på grund af indholdsrating"/>
-    </form>
+Du kan klikke på &apos;Ændre præference&apos; for at ændre din indholdsrating nu og dermed opnå adgang. Du vil så få mulighed for at søge og tilgå [REGIONMATURITY] fra da af. Hvis du senere ønsker at ændre denne opsætning tilbage, gå til Mig &gt; Indstillinger &gt; Generelt.
+		<form name="form">
+			<button name="OK" text="Ændre indstillinger"/>
+			<button name="Cancel" text="Luk"/>
+			<ignore name="ignore" text="Din valgte indholdsrating forhindrer dig i at kommer til en region"/>
+		</form>
 	</notification>
 	<notification name="LandClaimAccessBlocked">
 		Du kan ikke kræve dette land på grund af din nuværende indholdsrating indstillinge . Dette kan skyldes manglende validering af din alder.
 
 Undersøg om du har den nyeste [APP_NAME] klient og gå venligst til &apos;Knowledge Base&apos; for yderligere detaljer om adgang til områder med denne indholdsrating.
-    <usetemplate
-     name="okbutton"
-     yestext="OK"/>
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="LandClaimAccessBlocked_KB">
 		Du kan ikke kræve dette land på grund af din nuværende indholdsrating indstilling..
@@ -425,32 +576,22 @@ GÃ¥ venligst til &apos;Knowledge Base&apos; for yderligere information om indhol
 		<url name="url">
 			https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=6010
 		</url>
-    <usetemplate
-     name="okcancelignore"
-     yestext="GÃ¥ til &apos;Knowledge Base&apos;"
-	 notext="Luk"
-	 ignoretext="Når land ikke kan kræves på grund af indholdsrating"/>
+		<usetemplate ignoretext="Du kan ikke kræve dette land, på grund af begrænsninger i indholdsrating" name="okcancelignore" notext="Luk" yestext="Gå til &apos;Knowledge Base&apos;"/>
 	</notification>
 	<notification name="LandClaimAccessBlocked_Notify">
 		Du kan ikke kræve dette land på grund af din indholdsrating.
 	</notification>
 	<notification name="LandClaimAccessBlocked_Change">
-		Du kan ikke kræve dette land på grund af din nuværende indholdsrating indstilling..
+		Du kan ikke kræve dette land, på grund af begrænsninger i din opsætning af indholdsrating.
 
-Du kan vælge &apos;Indstillinger&apos; for at hæve din indholdsrating nu og dermed få adgang. Du vil så få mulighed for at søge og få adgang til områder med indhold af typen [REGIONMATURITY]. Hvis du senere ønsker at skifte tilbage, kan du skifte tilbage i &apos;Indstillinger&apos;.
-    <usetemplate
-     name="okcancelignore"
-     yestext="Ændre præferencer"
-	 notext="Luk"
-	 ignoretext="Når land ikke kan kræves på grund af indholdsrating"/>
+Du kan klikke på &apos;Ændre præference&apos; for at ændre din indholdsrating nu og dermed opnå adgang. Du vil så få mulighed for at søge og tilgå [REGIONMATURITY] fra da af. Hvis du senere ønsker at ændre denne opsætning tilbage, gå til Mig &gt; Indstillinger &gt; Generelt.
+		<usetemplate ignoretext="Din valgte indholdsrating forhindrer dig i at kræve land" name="okcancelignore" notext="Luk" yestext="Ændre præferencer"/>
 	</notification>
 	<notification name="LandBuyAccessBlocked">
 		Du kan ikke købe dette land på grund af din nuværende indholdsrating indstillinge . Dette kan skyldes manglende validering af din alder.
 
 Undersøg om du har den nyeste [APP_NAME] klient og gå venligst til &apos;Knowledge Base&apos; for yderligere detaljer om adgang til områder med denne indholdsrating.
-    <usetemplate
-     name="okbutton"
-     yestext="OK"/>
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="LandBuyAccessBlocked_KB">
 		Du kan ikke købe dette land på grund af din nuværende indholdsrating. 
@@ -459,24 +600,19 @@ GÃ¥ til &apos;Knowledge Base&apos; for yderligere detaljer om indholdsrating.
 		<url name="url">
 			https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=6010
 		</url>
-    <usetemplate
-     name="okcancelignore"
-     yestext="GÃ¥ til &apos;Knowledge Base&apos;"
-	 notext="Luk"
-	 ignoretext="Når land ikke kan købes på grund af indholdsrating"/>
+		<usetemplate ignoretext="Du kan ikke købe dette land, på grund af begrænsninger i indholdsrating" name="okcancelignore" notext="Luk" yestext="Gå til &apos;Knowledge Base&apos;"/>
 	</notification>
 	<notification name="LandBuyAccessBlocked_Notify">
 		Du kan ikke købe dette land på grund af din nuværende indholdsrating indstilling.
 	</notification>
 	<notification name="LandBuyAccessBlocked_Change">
-		Du kan ikke købe dette land på grund af din valgte inholdsrating.
+		Du kan ikke købe dette land, på grund af begrænsninger i din opsætning af indholdsrating.
 
-Du kan vælge &apos;Indstillinger&apos; for at hæve din indholdsrating nu og dermed få adgang. Du vil så få mulighed for at søge og få adgang til områder med indhold af typen [REGIONMATURITY]. Hvis du senere ønsker at skifte tilbage, kan du skifte tilbage i &apos;Indstillinger&apos;.
-    <usetemplate
-     name="okcancelignore"
-     yestext="Ændre præferencer"
-	 notext="Luk"
-	 ignoretext="Når land ikke kan købes på grund af indholdsrating"/>
+Du kan klikke på &apos;Ændre præference&apos; for at ændre din indholdsrating nu og dermed opnå adgang. Du vil så få mulighed for at søge og tilgå [REGIONMATURITY] fra da af. Hvis du senere ønsker at ændre denne opsætning tilbage, gå til Mig &gt; Indstillinger &gt; Generelt.
+		<usetemplate ignoretext="Din valgte rating forhindrer dig i at købe land" name="okcancelignore" notext="Luk" yestext="Ændre præferencer"/>
+	</notification>
+	<notification name="TooManyPrimsSelected">
+		Der er valgt for mange prims. Vælg venligst [MAX_PRIM_COUNT] eller færre og prøv igen
 	</notification>
 	<notification name="UnableToLoadNotecardAsset">
 		Kunne ikke hente notecard indhold.
@@ -484,53 +620,92 @@ Du kan vælge &apos;Indstillinger&apos; for at hæve din indholdsrating nu og de
 	</notification>
 	<notification name="SetClassifiedMature">
 		Indeholder denne annonce &apos;Mature&apos; indhold?
-    <usetemplate
-     canceltext="Annullér"
-     name="yesnocancelbuttons"
-     notext="Nej"
-     yestext="Ja"/>
+		<usetemplate canceltext="Annullér" name="yesnocancelbuttons" notext="Nej" yestext="Ja"/>
 	</notification>
 	<notification name="SetGroupMature">
 		Indeholder denne gruppe &apos;Mature&apos; indhold?
-    <usetemplate
-     canceltext="Annullér"
-     name="yesnocancelbuttons"
-     notext="Nej"
-     yestext="Ja"/>
-	</notification>
-	<notification label="Indholdsrating" name="HelpRegionMaturity">
-		Sætter indholdsrating for regionen, som den vises øverst på menu-bjælken i beboernes klient, og i tooltips på verdenskortet når cursoren placeres over denne region. Denne indstilling har også betydning for adgangen til regionen og for søgeresultater. Andre beboere må kun få adgang til regionen eller se regionen i søgeresultater hvis de har valgt samme eller højere indholdsrating i deres opsætning.
-
-Det kan tage noget tid inden en ændring af indholdsrating er synligt på kortet.
+		<usetemplate canceltext="Annullér" name="yesnocancelbuttons" notext="Nej" yestext="Ja"/>
+	</notification>
+	<notification label="Voice Version Mismatch" name="VoiceVersionMismatch">
+		Denne version af [APP_NAME] er ikke kompatibel med stemme chat funktionen i denne region. For at kunne få stemme chat til at fungere skal du opdatere [APP_NAME].
+	</notification>
+	<notification name="MoveInventoryFromObject">
+		<usetemplate ignoretext="Advar mig før jeg flytter &apos;ikke-kopiérbare&apos; genstande fra et objekt" name="okcancelignore" notext="Cancel" yestext="OK"/>
+	</notification>
+	<notification name="MoveInventoryFromScriptedObject">
+		<usetemplate ignoretext="Advar mig før jeg flytter &apos;ikke-kopiérbare&apos; genstande, hvor det kan medføre at ødelægge et scriptet objekt" name="okcancelignore" notext="Cancel" yestext="OK"/>
+	</notification>
+	<notification name="ClickActionNotPayable">
+		Advarsel: &apos;Betal objekt&apos; klik-aktionen er blevet aktiveret, men det vil kun virke, hvis et script med et &apos;money()&apos; event er tilføjet.
+		<form name="form">
+			<ignore name="ignore" text="I set the action &apos;Pay object&apos; when building an object without a money() script"/>
+		</form>
+	</notification>
+	<notification name="WebLaunchAccountHistory">
+		GÃ¥ til [http://secondlife.com/account/ Dashboard] for at se konto-historik?
+		<usetemplate ignoretext="Start min browser for at se min konto historik" name="okcancelignore" notext="Cancel" yestext="Go to page"/>
+	</notification>
+	<notification name="ConfirmQuit">
+		<usetemplate ignoretext="Bekræft før jeg afslutter" name="okcancelignore" notext="Afslut ikke" yestext="Quit"/>
 	</notification>
 	<notification name="HelpReportAbuseEmailLL">
-		Brug dette værktøj for at rapportere brud på de almindelige bestemmelser og fællesskabs Standarder. Se:
-
-http://secondlife.com/corporate/tos.php
-http://secondlife.com/corporate/cs.php
+		Benyt dette værktøj til at rapportere Use this tool to report krænkelser af [http://secondlife.com/corporate/tos.php Terms of Service] og [http://secondlife.com/corporate/cs.php Community Standards].
 
-Alle rapporterede brud på almindelige bestemmelser og fællesskabs Standarder bliver undersøgt og løst. Du kan følge løsningen på din anmeldselse på:
-
-http://secondlife.com/support/incidentreport.php
+Alle indrapporterede krænkelser er undersøgt og and afgjort. Du kan se løsning ved at læse [http://secondlife.com/support/incidentreport.php Incident Report].
 	</notification>
 	<notification name="HelpReportAbuseContainsCopyright">
-		Dear Resident,
+		Kære beboer,
 
-Du ser ud til at være ved at rapportere noget vedr. krænkelse af intellektuelle ejendomsrettigheder. Sørg for, at du rapporterer dette korrekt:
+Det ser ud til at du indrapporterer krænkelse af ophavsret. Check venligst at du rapporterer korrekt:
 
-(1) Misbrugs processen. Du kan indsende en misbrugs rapport, hvis du mener, at en Beboer udnytter [SECOND_LIFE]&apos;s rettigheds system, for eksempel ved hjælp af en CopyBot eller lignende kopierings værktøjer, at de krænker intellektuelle ejendomsrettigheder. Det team vil undersøge og spørgsmål passende disciplinære sanktioner for adfærd, der overtræder [SECOND_LIFE] EF-standarderne eller Servicevilkår. Men det team vil ikke håndtere og vil ikke reagere på anmodninger om at fjerne indhold fra [SECOND_LIFE]&apos;s verden.
+(1) Krænkelsesproces. Du må sende en rapport, hvis du mener at en beboer udnytter [SECOND_LIFE] rettighedssystemet, for eksempel via CopyBot eller lignende værktøjer, til at overtræde ophavsretten til objekter.
 
-(2) DMCA eller Indholds fjernelses processen. For at anmode om fjernelse af indhold fra [SECOND_LIFE], skal du sende en gyldig anmeldelse af overtrædelsen som beskrevet i vores DMCA-politik på http://secondlife.com/corporate/dmca.php.
+(2) DCMA (”Digital Millennium Copyright Act”) eller fjernelsesproces. For at kræve at indhold fjernes fra [SECOND_LIFE], SKAL du sende en gyldig besked om overtrædelse som beskrevet i [http://secondlife.com/corporate/dmca.php DMCA Policy].
 
-Hvis du stadig ønsker at fortsætte med misbrugs processen, luk da venligst dette vindue og færdiggør indsendelsen af din rapport. Du kan være nødt til at vælge den særlige kategori »CopyBot eller Tilladelses Ydnyttelse.
+Hvis du stadig ønsker at fortsætte med rapportering om overtrædelse, luk venligst dette vindue og afslut afsendelse af rapporten. Du skal muligvis vælge en specifik kategori &apos;CopyBot or Permissions Exploit&apos;.
 
-Mange tak,
+Mange tak
 
 Linden Lab
 	</notification>
+	<notification label="Replace Existing Attachment" name="ReplaceAttachment">
+		<form name="form">
+			<ignore name="ignore" text="Erstat et eksisterende vedhæng med den valgte genstand"/>
+		</form>
+	</notification>
+	<notification label="Busy Mode Warning" name="BusyModePay">
+		<form name="form">
+			<ignore name="ignore" text="Jeg er ved at betale en person eller et objekt mens jeg er &apos;optaget&apos;"/>
+		</form>
+	</notification>
+	<notification name="ConfirmDeleteProtectedCategory">
+		Mappen &apos;[FOLDERNAME]&apos; er en system mappe. At slette denne mappe kan medføre ustabilitet. Er du sikker på at du vil slette den?
+		<usetemplate ignoretext="Bekræft, inden en system mappe slettes" name="okcancelignore" notext="Annullér" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmEmptyTrash">
+		Er du sikker på at du ønsker at tømme papirkurven?
+		<usetemplate ignoretext="Bekræft før papirkurv i beholdning tømmes" name="okcancelignore" notext="Cancel" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmClearBrowserCache">
+		Er du sikker på at du ønsker at slette din historik om besøg, web og søgninger?
+		<usetemplate name="okcancelbuttons" notext="Cancel" yestext="OK"/>
+	</notification>
 	<notification name="ConfirmClearCookies">
 		Er du sikker på du vil slette alle cookies?
 	</notification>
+	<notification name="ConfirmEmptyLostAndFound">
+		Er du sikker på at du vil slette indholdet i din &apos;Fundne genstande&apos;?
+		<usetemplate ignoretext="Bekræft før sletning af &apos;Fundne genstande&apos; mappe i beholdning" name="okcancelignore" notext="No" yestext="Yes"/>
+	</notification>
+	<notification name="CopySLURL">
+		Følgende SLurl er blevet kopieret til din udklipsholder:
+ [SLURL]
+
+Henvis til dette fra en hjemmeside for at give andre nem adgang til denne lokation, eller prøv det selv ved at indsætte det i adresselinien i en web-browser.
+		<form name="form">
+			<ignore name="ignore" text="SLurl er kopieret til min udklipsholder"/>
+		</form>
+	</notification>
 	<notification name="NewSkyPreset">
 		<form name="form">
 			<input name="message">
@@ -555,7 +730,23 @@ Linden Lab
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="Cannot_Purchase_an_Attachment">
-		Ting kan ikke købes imens de er en del af tilbehør.
+		Du kan ikke købe en genstand mens den er vedhæftet.
+	</notification>
+	<notification name="AutoWearNewClothing">
+		Vil du automatisk tage det tøj på du er ved at lave?
+		<usetemplate ignoretext="Tag det tøj på jeg laver, mens jeg ændrer udseende" name="okcancelignore" notext="No" yestext="Yes"/>
+	</notification>
+	<notification name="NotAgeVerified">
+		Du skal være alders-checket for at besøge dette område.  Ønsker du at gå til [SECOND_LIFE] hjemmesiden og bekræfte din alder?
+
+[_URL]
+		<usetemplate ignoretext="Jeg har ikke bekræftet min alder" name="okcancelignore" notext="No" yestext="Yes"/>
+	</notification>
+	<notification name="Cannot enter parcel: no payment info on file">
+		Du skal være betalende medlem for at besøge dette område.  Ønsker du at gå til [SECOND_LIFE] hjemmesiden for at blive dette?
+
+[_URL]
+		<usetemplate ignoretext="Du mangler at være betalende medlem" name="okcancelignore" notext="No" yestext="Yes"/>
 	</notification>
 	<notification name="SystemMessageTip">
 		[MESSAGE]
@@ -579,7 +770,7 @@ Linden Lab
 		[FIRST] [LAST] er Offline
 	</notification>
 	<notification name="AddSelfFriend">
-		Du kan ikke tilføje dig selv som ven.
+		Selvom du nok er meget sød, kan du ikke tilføje dig selv som ven.
 	</notification>
 	<notification name="UploadingAuctionSnapshot">
 		Uploader billeder fra verdenen og www...
@@ -598,7 +789,7 @@ Linden Lab
 		Terrain.raw downloadet
 	</notification>
 	<notification name="GestureMissing">
-		Gestus [NAME] mangler i databasen.
+		Bevægelsen [NAME] mangler i databasen.
 	</notification>
 	<notification name="UnableToLoadGesture">
 		Ikke muligt at indlæse gestus [NAME].
@@ -611,14 +802,14 @@ Prøv venligst igen.
 		Ikke muligt at indlæse landmærke.  Prøv venligst igen.
 	</notification>
 	<notification name="CapsKeyOn">
-		Du har slået store bogstaver til.
-Da det vil have betydning når du indtaster kodeordet, vil du højest sandsynlig slå dem fra.
+		Din Caps Lock er aktiveret.
+Det kan påvirke din indtastning af password.
 	</notification>
 	<notification name="NotecardMissing">
 		Note mangler i databasen.
 	</notification>
 	<notification name="NotecardNoPermissions">
-		Utilstrækkelige tilladelser til at se note.
+		Du har ikke rettigheder til at se denne note.
 	</notification>
 	<notification name="RezItemNoPermissions">
 		Utilstrækkelige tilladelser til at danne genstanden.
@@ -657,11 +848,11 @@ Prøv venligst igen.
 Prøv venligst igen.
 	</notification>
 	<notification name="CannotBuyObjectsFromDifferentOwners">
-		Kan ikke købe genstande fra forskellige ejere på samme tid.
-Prøv venligst at vælge en enkelt genstand.
+		Du kan kun købe objekter fra én ejer ad gangen.
+Vælg venligst et enkelt objekt.
 	</notification>
 	<notification name="ObjectNotForSale">
-		Genstanden ser ikke ud til at være til salg.
+		Dette objekt er ikke til salg.
 	</notification>
 	<notification name="EnteringGodMode">
 		Starter gud-tilstand, niveau [LEVEL]
@@ -670,10 +861,10 @@ Prøv venligst at vælge en enkelt genstand.
 		Stopper gud-tilstand, niveau [LEVEL]
 	</notification>
 	<notification name="CopyFailed">
-		Kopiering lykkedes ikke fordi du ikke har nok tilladelser til at kopiere
+		Du har ikke rettigheder til at kopiere dette.
 	</notification>
 	<notification name="InventoryAccepted">
-		[NAME] accepterede det du tilbød fra din beholdning.
+		[NAME] modtog dit tilbud til hans/hendes beholdning.
 	</notification>
 	<notification name="InventoryDeclined">
 		[NAME] afviste det du tilbød fra din beholdning.
@@ -688,12 +879,16 @@ Prøv venligst at vælge en enkelt genstand.
 		Dit visitkort blev afvist.
 	</notification>
 	<notification name="TeleportToLandmark">
-		Nu hvor du er nået frem til hovedlandet, kan du teleportere til steder som &apos;[NAME]&apos; ved at klikke på Beholdning-knappen i nederste højre side af skærmen hvorefter du vælger Landmærke-mappen.
-Dobbeltklik på landmærket og klik på Teleportér, for at rejse derhen.
+		Du kan teleportere til lokationer som &apos;[NAME]&apos; ved at åbne Steder panelet til højre på skærmen, og her vælge landemærker fanen.
+Klik på et landemærke og vælg den, derefter 
+Click on any landmark to select it, then click &apos;Teleport&apos; at the bottom of the panel.
+(You can also double-click on the landmark, or right-click it and choose &apos;Teleport&apos;.)
 	</notification>
 	<notification name="TeleportToPerson">
-		Nu hvor du har nået frem til hovedlandet, kan du kontakte indbyggere som &apos;[NAME]&apos; ved at klikke på Beholdning-knappen i nederste højre side af skærmen, hvorefter du vælger Visitkort-mappen.
-Dobbeltklik på kortet, klik på IM og skriv beskeden.
+		Du kan kontakte beboere som f.eks. &apos;[NAME]&apos; ved at åbne &apos;Personer&apos; panelet til højre på skærmen.
+Vælg beboeren fra listen og klik så på &apos;IM&apos; i bunden af panelet.
+(Du kan også dobbelt-klikke på navnet i listen eller højreklikke og vælge &apos;IM&apos;)
+(You can also double-click on their name in the list, or right-click and choose &apos;IM&apos;).
 	</notification>
 	<notification name="CantSelectLandFromMultipleRegions">
 		Kan ikke vælge land på tværs af grænser.
@@ -716,6 +911,9 @@ Prøv at vælge mindre stykker land.
 	<notification name="SystemMessage">
 		[MESSAGE]
 	</notification>
+	<notification name="PaymentRecived">
+		[MESSAGE]
+	</notification>
 	<notification name="EventNotification">
 		Besked om begivenhed:
 
@@ -739,8 +937,20 @@ Prøv at vælge mindre stykker land.
 		Deaktiverede bevægelser med samme udløser: [NAMES]
 	</notification>
 	<notification name="NoQuickTime">
-		Apple&apos;s QuickTime ser ikke ud til at være installeret på computeren.
-Hvis du vil se live transmitteret medie på grunde, der understøtter det, skal du gå ind på QuickTime-siden (http://www.apple.dk/quicktime) og installere QuickTime afspilleren.
+		Det ser ikke ud til at Apples QuickTime software er installeret på dit system.
+Hvis du ønsker at se streaming media på parceller der understøtter dette skal du besøge siden [http://www.apple.com/quicktime QuickTime site] og installere QuickTime Player.
+	</notification>
+	<notification name="NoPlugin">
+		Ingen Media Plugin blev fundet til at håndtere mime af typen &quot;[MIME_TYPE]&quot;.  Media af denne type vil ikke være tilgængelig.
+	</notification>
+	<notification name="MediaPluginFailed">
+		Følgende Media Plugin has fejlede:
+    [PLUGIN]
+
+Prøv venligst at geninstallere plugin eller kontakt leverandøren hvis problemerne bliver ved.
+		<form name="form">
+			<ignore name="ignore" text="En Media Plugin kunne ikke afvikles"/>
+		</form>
 	</notification>
 	<notification name="OwnedObjectsReturned">
 		De genstande du ejer på det valgte stykke land er blevet returneret til din beholdning.
@@ -759,23 +969,26 @@ Genstande, der ikke kan overføres og som er dedikeret til gruppen, er blevet sl
 	<notification name="UnOwnedObjectsReturned">
 		Genstandene på det valgte stykke land, der IKKE er ejet af dig, er blevet returneret til deres ejere.
 	</notification>
+	<notification name="ServerObjectMessage">
+		Besked fra [NAME]:
+[MSG]
+	</notification>
 	<notification name="NotSafe">
-		Dette land har sat skade til (&apos;ikke sikker&apos;).
-Du kan komme til skade her. Hvis du dør, vil du blive teleporteret til din hjem-lokalitet.
+		Dette land er åbnet for &apos;skade&apos;.
+Du kan blive skadet her. Hvis du dør, vil du blive teleporteret til din hjemme lokation.
 	</notification>
 	<notification name="NoFly">
-		Dette land har slået flyvning fra (&apos;ingen flyvning&apos;).
+		Dette sted har ikke aktiveret ret til flyvning.
 Du kan ikke flyve her.
 	</notification>
 	<notification name="PushRestricted">
-		Dette land giver ikke mulighed for at &apos;skubbe&apos; andre, med mindre du ejer landet.
+		Dette sted tillader ikke skubning. Du kan ikke skubbe andre, med mindre du ejer dette land.
 	</notification>
 	<notification name="NoVoice">
-		Dette land har ikke mulighed for at bruge stemme.
+		Dette sted har ikke aktiveret stemme-chat. Du vil ikke kunne høre nogen tale.
 	</notification>
 	<notification name="NoBuild">
-		Dette land giver ikke mulighed for at bygge (&apos;byggeri forbudt&apos;).
-Du kan ikke skabe genstande her.
+		Dette sted har ikke aktiveret bygge-ret. Du kan ikke bygge eller &apos;rezze&apos; objekter her.
 	</notification>
 	<notification name="ScriptsStopped">
 		En administrator har midlertidig stoppet scripts i denne region.
@@ -784,12 +997,12 @@ Du kan ikke skabe genstande her.
 		Denne region kører ikke nogen scripts.
 	</notification>
 	<notification name="NoOutsideScripts">
-		Dette land har eksterne scripts slået fra
-(&apos;ingen eksterne scripts&apos;).
-Ingen scripts vil køre på nær dem, som tilhører ejeren af landet.
+		Dette sted tillader ikke udefra kommende scripts.
+
+Ingen scripts vil virke her, udover de som tilhører ejeren af landet.
 	</notification>
 	<notification name="ClaimPublicLand">
-		Du kan kun gøre krav på offentlig land i den region, du befinder dig i.
+		Du kan kun kræve land i den region du befinder dig i.
 	</notification>
 	<notification name="RegionTPAccessBlocked">
 		Du har ikke adgang til denne region på grund af din valgte indholdsrating. Dette kan skyldes manglende validering af din alder eller at du ikke benytter den nyeste [APP_NAME] klient.
@@ -802,16 +1015,9 @@ GÃ¥ venligst til &apos;Knowledge Base&apos; for yderligere detaljer om adgang ti
 	<notification name="NoTeenGridAccess">
 		Du kan ikke tilslutte dig denne &apos;Teen&apos; region.
 	</notification>
-	<notification name="NoHelpIslandTP">
-		Du kan ikke teleportere tilbage til Help Island.
-Gå til &apos;Help Island Puclic&apos; for at prøve tutorial igen.
-	</notification>
 	<notification name="ImproperPaymentStatus">
 		Du har ikke de rette betalingsoplysninger til at komme ind i denne region.
 	</notification>
-	<notification name="MustGetAgeRegion">
-		Du skal være aldersgodkendt for at komme ind i denne region.
-	</notification>
 	<notification name="MustGetAgeParcel">
 		Du skal være aldersgodkendt for at komme ind på denne parcel.
 	</notification>
@@ -874,7 +1080,8 @@ Prøv igen om lidt.
 		No valid parcel could be found.
 	</notification>
 	<notification name="ObjectGiveItem">
-		En genstand med navnet [OBJECTFROMNAME], ejet af [FIRST] [LAST], har givet dig en/et [OBJECTTYPE] med navnet [OBJECTNAME].
+		Et objekt med navnet [OBJECTFROMNAME], ejet af [NAME_SLURL], har givet dig [OBJECTTYPE]:
+[ITEM_SLURL]
 		<form name="form">
 			<button name="Keep" text="Behold"/>
 			<button name="Discard" text="Smid væk"/>
@@ -882,7 +1089,8 @@ Prøv igen om lidt.
 		</form>
 	</notification>
 	<notification name="ObjectGiveItemUnknownUser">
-		En genstand med navnet [OBJECTFROMNAME], ejet af (en ukendt bruger), har givet dig en/et [OBJECTTYPE] med navnet [OBJECTNAME].
+		Et objekt med navnet [OBJECTFROMNAME], ejet af en ukendt beboer, har givet dig [OBJECTTYPE]:
+[ITEM_SLURL]
 		<form name="form">
 			<button name="Keep" text="Behold"/>
 			<button name="Discard" text="Smid væk"/>
@@ -890,15 +1098,17 @@ Prøv igen om lidt.
 		</form>
 	</notification>
 	<notification name="UserGiveItem">
-		[NAME] har givet dig en/et [OBJECTTYPE] med navnet &apos;[OBJECTNAME]&apos;.
+		[NAME_SLURL] har givet dig [OBJECTTYPE]:
+[ITEM_SLURL]
 		<form name="form">
 			<button name="Keep" text="Behold"/>
+			<button name="Show" text="Vis"/>
 			<button name="Discard" text="Smid væk"/>
-			<button name="Mute" text="Blokér"/>
 		</form>
 	</notification>
 	<notification name="GodMessage">
 		[NAME]
+
 [MESSAGE]
 	</notification>
 	<notification name="JoinGroup">
@@ -910,7 +1120,7 @@ Prøv igen om lidt.
 		</form>
 	</notification>
 	<notification name="TeleportOffered">
-		[NAME] har tilbudt at teleportere dig til hans eller hendes lokalitet:
+		[NAME] har tilbudt dig en teleport til lokationen:
 
 [MESSAGE]
 		<form name="form">
@@ -935,6 +1145,9 @@ Som standard vil du kunne se andres onlinestatus.
 			<button name="Decline" text="Afvis"/>
 		</form>
 	</notification>
+	<notification name="FriendshipOffered">
+		Du har tilbudt venskab til [TO_NAME]
+	</notification>
 	<notification name="FriendshipAccepted">
 		[NAME] accepterede dit tilbud om venskab.
 	</notification>
@@ -950,12 +1163,12 @@ Dette vil tilføje et bogmærke i din beholdning, så du hurtigt kan sende en pe
 		</form>
 	</notification>
 	<notification name="RegionRestartMinutes">
-		Regionen genstarter om [MINUTES] minutter.
-Hvis du bliver i denne region, vil du blive logget af.
+		Denne region vil genstarte om [MINUTES] minutter.
+Hvis du ikke forlader regionen, vil du blive logget af.
 	</notification>
 	<notification name="RegionRestartSeconds">
-		Regionen genstarter om [SECONDS] sekunder.
-Hvis du bliver i denne region, vil du blive logget af.
+		Denne region genstartes om [SECONDS] sekunder.
+Hvis du ikke forlader regionen, vil du blive logget af.
 	</notification>
 	<notification name="LoadWebPage">
 		Indlæs internetside [URL]?
@@ -975,7 +1188,7 @@ Fra genstand: [OBJECTNAME], ejer: [NAME]?
 		Det lykkedes ikke at finde [TYPE] med navnet [DESC] i databasen.
 	</notification>
 	<notification name="InvalidWearable">
-		Den genstand du prøver at tage på benytter funktioner som din klient ikke kan forstå. Opdatér din version af [APP_NAME] for at tage genstanden på.
+		Den genstand du prøver at tage på benytter en funktion din klient ikke kan forstå. Upgradér venligst din version af [APP_NAME] for at kunne tage denne genstand på.
 	</notification>
 	<notification name="ScriptQuestion">
 		&apos;[OBJECTNAME]&apos;, en genstand, ejet af &apos;[NAME]&apos;, vil gerne:
@@ -988,12 +1201,12 @@ Er det iorden?
 		</form>
 	</notification>
 	<notification name="ScriptQuestionCaution">
-		&apos;[OBJECTNAME]&apos;, en genstand, ejet af &apos;[NAME]&apos;, vil gerne:
+		Et objekt med navnet &apos;[OBJECTNAME]&apos;, ejet af &apos;[NAME]&apos;, ønsker at:
 
 [QUESTIONS]
-Hvis du ikke har tillid til denne genstand og dens skaber, bør du afvise denne forespørgsel. For yderligere information klik på Detaljer-knappen.
+Hvis du ikke stoler på dette objekt og dets skaber, bør du afvise denne forespørgsel.
 
-Imødekom denne forespørgsel?
+Tillad denne anmodning?
 		<form name="form">
 			<button name="Grant" text="Imødekom"/>
 			<button name="Deny" text="Afvis"/>
@@ -1014,39 +1227,44 @@ Imødekom denne forespørgsel?
 			<button name="Ignore" text="Ignorér"/>
 		</form>
 	</notification>
+	<notification name="ScriptToast">
+		[FIRST] [LAST]&apos;s &apos;[TITLE]&apos; ønsker bruger-input.
+		<form name="form">
+			<button name="Open" text="Ã…ben dialog"/>
+			<button name="Ignore" text="Ignorér"/>
+			<button name="Block" text="Blokér"/>
+		</form>
+	</notification>
 	<notification name="FirstBalanceIncrease">
-		Du har lige modtaget L$[AMOUNT].
-Genstande og andre brugere kan give dig L$.
-Din saldo er vist i øverste højre hjørne af skærmen.
+		Du har netop modtaget [AMOUNT] L$.
+Din balance vises øverst til højre.
 	</notification>
 	<notification name="FirstBalanceDecrease">
-		Du har lige modtaget L$[AMOUNT].
-Din saldo er vist i øverste højre hjørne af skærmen.
+		Du har netop betalt [AMOUNT] L$.
+Din balance vises øverst til højre.
+	</notification>
+	<notification name="BuyLindenDollarSuccess">
+		Tak for din betaling!
+
+Din L$ balance vil blive opdateret når transaktionen er gennemført. Ved transaktionen tager mere end 20 min., vil den blive annulleret. I så fald vil beløbet blive krediteret din US$ balance.
+
+Status for din betaling kan ses i din &apos;Transaction History&apos; side på din [http://secondlife.com/account/ Dashboard]
 	</notification>
 	<notification name="FirstSit">
-		Du sidder.
-Brug piletasterne (eller AWSD) for at ændre hvilken vej du ser.
-Klik på &apos;Stå op&apos;-knappen for at rejse dig op.
+		Du sidder ned.
+Benyt piletasterne (eller AWSD) til at se rundt.				
+Klik på &apos;Stå op&apos; tasten for at rejse dig.
 	</notification>
 	<notification name="FirstMap">
-		Klik og træk for at flytte kortvisningen.
+		Klik og træk på kortet for at se rundt.
 Dobbelt-klik for at teleportere.
-Brug kontrollerne til højre for at finde ting og se forskellige baggrunde.
+Benyt kontrollerne til højre for at finde ting og se forskellige baggrunde.
 	</notification>
 	<notification name="FirstBuild">
-		Du kan bygge nye genstande i nogle områder af [SECOND_LIFE].
-Brug værktøjet øverst til venstre for at bygge, og prøv at holde Ctrl eller Alt nede for hurtigt at skifte imellem værktøjerne.
-Tryk Esc for at stoppe med at bygge.
-	</notification>
-	<notification name="FirstLeftClickNoHit">
-		Venstre-klik interagerer med specielle genstande.
-Hvis musemarkøren ændrer sig til en hånd, kan du interagere med genstanden.
-Højre-klik viser altid en menu med ting du kan gøre.
+		Du har åbnet bygge værktøjer. Alle objekter du ser omkring dig er lavet via disse værktøjer.
 	</notification>
 	<notification name="FirstTeleport">
-		Du har lige teleporteret.
-Du er ved info-standen nærmest ved din destination.
-Din destination er markeret med en stor rød lyskegle.
+		Du kan kun teleportere til bestemte områder i denne region. Pilen peger på din specifikke destination. Klik på pilen for at fjerne den.
 	</notification>
 	<notification name="FirstOverrideKeys">
 		Dine bevælgelsestaster bliver nu håndteret af et objekt.
@@ -1055,46 +1273,41 @@ Nogle genstande (som skydevåben) kræver at du går ind i musevisning for at br
 Tryk på &apos;M&apos; for at gåre det.
 	</notification>
 	<notification name="FirstAppearance">
-		Du tilretter dit udseende.
-For at rotere og zoome brug piletasterne.
-Når du er færdig, tryk på &apos;Gem alt&apos; for at gemme dit udseende og lukke.
-Du kan rette dit udseende så tit du vil.
+		Du redigerer dit udseende.
+Benyt piletasterne til at se rundt.
+Når du er færdig, tryk på &apos;Gem alt&apos;.
 	</notification>
 	<notification name="FirstInventory">
-		Dette er din beholdning, der indeholder objekter, noter, tøj og andre ting du ejer.
-* For at bære et objekt eller en mappe med tøj, træk den over på dig selv.
-* For at få et objekt frem i verdenen, træk den ud på jorden.
-* For at læse en note, dobbeltklik på den.
+		Dette er din beholdning, som indeholder de genstande du ejer.
+
+* For at tage noget på, træk det over på dig selv.
+* For at &apos;rezze&apos; noget, træk det over på jorden.
+* For at læse en note, dobbelt-klik på den.
 	</notification>
 	<notification name="FirstSandbox">
-		Dette er sandkasseområdet.
-Genstande, der er skabt her, vil blive slettet efter du har forladt området. Sandkasser renses jævnligt. Se venligst informationen øverst på skærmen, lige ved siden af områdenavnet.
+		Dette er et sandkasse område. Her kan beboere lære ast bygge.
 
-Sandkasseområder er ikke almindelige. De er mærket med skilte.
+De ting du bygger vil blive slettet senere, så glem ikke at højre-klikke og vælge &quot;Tag&quot; for at tage en kopi af din kreation til din beholdning.
 	</notification>
 	<notification name="FirstFlexible">
-		Denne genstand er fleksibel.
-Fleksible genstande er ikke fysiske og man kan gå igennem dem, indtil fleksibel-punktet ikke er afkrydset.
+		Dette objekt er fleksibelt/blødt. Sådanne objekter skal være &apos;uden masse&apos; og ikke fysiske.
 	</notification>
 	<notification name="FirstDebugMenus">
-		Du har sat avanceret menu til.
-Denne menu indeholder funktioner brugbare for udviklere, der udbedrer fejl i [SECOND_LIFE].
-For at vise denne menu, skal man i Windows trykke Ctrl+Alt+D. PÃ¥ Mac tryk &#8997;&#8984;D.
+		Du har åbnet menuen &apos;Avanceret&apos;.
+
+For at slå denne menu fra og til,
+  Windows: Ctrl+Alt+D
+  Mac: &#8997;&#8984;D
 	</notification>
 	<notification name="FirstSculptedPrim">
-		Du retter en sculpted prim.
-Sculpted prims kræver et specielt tekstur for at specificere deres form.
-Du kan finde eksempler på sculptede teksturer i din beholdning.
-	</notification>
-	<notification name="FirstMedia">
-		Du er begyndt at afspille medie.  Medie kan sættes til automatisk af blive afspillet under Indstillinger, Lyd / Video. Vær opmærksom på, at der kan være en sikkerhedsrisiko for medie-steder, du ikke stoler på.
+		Du redigerer en &apos;Sculpted prim&apos;. Sådanne objekter kræver en speciel tekstur for at definere faconen.
 	</notification>
 	<notification name="MaxListSelectMessage">
 		Du må kun vælge op til [MAX_SELECT] genstande på denne liste.
 	</notification>
 	<notification name="VoiceInviteP2P">
-		[NAME] inviterer dig til en stemme-chat.
-Klik for at acceptere at koble dig på samtalen eller Afvis for at afvise invitationen. Klik på Slå fra for at blokere denne opkalder.
+		[NAME] inviterer dig til en stemme-chat samtale.
+Klik på Acceptér for at deltage eller Afvis for at afvise invitationen. Klik på Blokér for at blokere personen.
 		<form name="form">
 			<button name="Accept" text="Acceptér"/>
 			<button name="Decline" text="Afvis"/>
@@ -1102,17 +1315,17 @@ Klik for at acceptere at koble dig på samtalen eller Afvis for at afvise invita
 		</form>
 	</notification>
 	<notification name="AutoUnmuteByIM">
-		[FIRST] [LAST] har fået en personlig besked (IM) og er automatisk ikke blokeret mere.
+		[FIRST] [LAST] fik tilsendt en personlig besked og er dermed automatisk ikke mere blokeret.
 	</notification>
 	<notification name="AutoUnmuteByMoney">
-		[FIRST] [LAST] har fået penge og er automatisk ikke blokeret mere.
+		[FIRST] [LAST] blev givet penge og er dermed automatisk ikke mere blokeret.
 	</notification>
 	<notification name="AutoUnmuteByInventory">
-		[FIRST] [LAST] har fået tilbudt genstande og er automatisk ikke blokeret mere.
+		[FIRST] [LAST] blev tilbudt en genstand og er dermed automatisk ikke mere blokeret.
 	</notification>
 	<notification name="VoiceInviteGroup">
-		[NAME] har tilsluttet sig stemme-chat med gruppen [GROUP].
-Klik Acceptér for at slutte dig til samtalen eller Afvis for at afvise invitationen. Klik Slå fra for at blokere denne opkalder.
+		[NAME] har has sluttet sig til stemme-chaten i gruppen [GROUP].
+Klik på Acceptér for at deltage eller Afvis for at afvise invitationen. Klik på Blokér for at blokere personen.
 		<form name="form">
 			<button name="Accept" text="Acceptér"/>
 			<button name="Decline" text="Afvis"/>
@@ -1120,8 +1333,8 @@ Klik Acceptér for at slutte dig til samtalen eller Afvis for at afvise invitati
 		</form>
 	</notification>
 	<notification name="VoiceInviteAdHoc">
-		[NAME] har tilsluttet sig stemme-chat med en konference-chat.
-Klik Acceptér for at slutte dig til samtalen eller Afvis for at afvise invitationen. Klik Slå fra for at blokere denne opkalder.
+		[NAME] har sluttet sig til en stemme-chat med en konference chat.
+Klik på Acceptér for at deltage eller Afvis for at afvise invitationen. Klik på Blokér for at blokere personen.
 		<form name="form">
 			<button name="Accept" text="Acceptér"/>
 			<button name="Decline" text="Afvis"/>
@@ -1129,12 +1342,12 @@ Klik Acceptér for at slutte dig til samtalen eller Afvis for at afvise invitati
 		</form>
 	</notification>
 	<notification name="InviteAdHoc">
-		[NAME] inviterer dig til en konference-chat.
-Klik Acceptér for at slutte dig til samtalen eller Afvis for at afvise invitationen. Klik Slå fra for at blokere denne opkalder.
+		[NAME] inviterer dig til en konference chat.
+Klik på Acceptér for at deltage eller Afvis for at afvise invitationen. Klik på Blokér for at blokere personen.
 		<form name="form">
 			<button name="Accept" text="Acceptér"/>
 			<button name="Decline" text="Afvis"/>
-			<button name="Mute" text="Blokeret"/>
+			<button name="Mute" text="Blokér"/>
 		</form>
 	</notification>
 	<notification name="VoiceChannelFull">
@@ -1144,25 +1357,25 @@ Klik Acceptér for at slutte dig til samtalen eller Afvis for at afvise invitati
 		Vi beklager.  Dette område har nået sin maksimale kapacitet for stemme-chat.  Prøv venligst at benytte stemme i et andet område.
 	</notification>
 	<notification name="VoiceChannelDisconnected">
-		Du er blevet koblet af [VOICE_CHANNEL_NAME].  Du vil nu blive koblet op på en lokal stemme-chat.
+		Du er blevet koblet fra [VOICE_CHANNEL_NAME].  Du vil nu blive koblet til almindelig voice-chat.
 	</notification>
 	<notification name="VoiceChannelDisconnectedP2P">
-		[VOICE_CHANNEL_NAME] har afsluttet opkaldet.  Du vil nu blive koblet op på en lokal stemme-chat.
+		[VOICE_CHANNEL_NAME] har afsluttet samtalen.  Du vil nu blive koblet til almindelig voice-chat.
 	</notification>
 	<notification name="P2PCallDeclined">
-		[VOICE_CHANNEL_NAME] har afvist dit opkald.  Du vil nu blive koblet op på en lokal stemme-chat.
+		[VOICE_CHANNEL_NAME] har avist dit opkald.  Du vil nu blive koblet til almindelig voice-chat.
 	</notification>
 	<notification name="P2PCallNoAnswer">
-		[VOICE_CHANNEL_NAME] har ikke mulighed for at besvare dit opkald.  Du vil nu blive koblet op på en lokal chat.
+		[VOICE_CHANNEL_NAME] er ikke tilgængelig til at modtage dit opkald.  Du vil nu blive koblet til almindelig voice-chat.
 	</notification>
 	<notification name="VoiceChannelJoinFailed">
-		Det lykkedes ikke at koble op til [VOICE_CHANNEL_NAME]. Prøv venligst igen senere.
+		Det lykkedes ikke at forbinde til [VOICE_CHANNEL_NAME], prøv venligst igen senere.  Du vil nu blive koblet til almindelig voice-chat.
 	</notification>
 	<notification name="VoiceLoginRetry">
 		Vi laver en stemmekanal til dig. Det kan tage op til et minut.
 	</notification>
 	<notification name="Cannot enter parcel: not a group member">
-		Du kan ikke komme ind på området. Du er ikke medlem af den nødvendige gruppe.
+		Kun medlemmer af en bestemt gruppe kan besøge dette område.
 	</notification>
 	<notification name="Cannot enter parcel: banned">
 		Du kan ikke komme ind på området. Du er blevet udelukket.
@@ -1177,9 +1390,58 @@ Klik Acceptér for at slutte dig til samtalen eller Afvis for at afvise invitati
 		En fejl er opstået under forsøget på at koble sig på stemme chatten [VOICE_CHANNEL_NAME].  Pråv venligst senere.
 	</notification>
 	<notification name="ServerVersionChanged">
-		Det område, du er kommet ind på, kører en anden simulatorversion. Klik på denne besked for detaljer.
+		Du er netop ankommet til en region der benytter en anden server version, hvilket kan influere på hastigheden. [[URL] For at se yderligere.]
+	</notification>
+	<notification name="UnsupportedCommandSLURL">
+		Den SLurl du klikkede på understøttes ikke.
+	</notification>
+	<notification name="BlockedSLURL">
+		En SLurl blev modtaget en ikke sikret browser og den er blevet blokeret af sikkerhedsmæssige årsager.
+	</notification>
+	<notification name="ThrottledSLURL">
+		Flere SLurls blev modtaget fra en browser i et kort tidsrum.
+De vil blive blokeret nogle få sekunder af sikkerhedsmæssige årsager.
+	</notification>
+	<notification name="IMToast">
+		[MESSAGE]
+		<form name="form">
+			<button name="respondbutton" text="Svar"/>
+		</form>
+	</notification>
+	<notification name="AttachmentSaved">
+		Vedhæng er blevet gemt.
 	</notification>
-	<notification name="UnableToOpenCommandURL">
-		Www-adressen, du har klikket på, kan ikke åbnes fra denne internetbrowser.
+	<notification name="UnableToFindHelpTopic">
+		Ikke muligt at finde hjælp om dette element.
 	</notification>
+	<notification name="ObjectMediaFailure">
+		Server fejl: Media opdatering eller &quot;get&quot; fejlede.
+&apos;[ERROR]&apos;
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="TextChatIsMutedByModerator">
+		Din tekst chat er blevet slukket af moderator.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="VoiceIsMutedByModerator">
+		Din stemme er blevet slukket af moderatoren.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmClearTeleportHistory">
+		Er du sikker på at du vil slette teleport historikken?
+		<usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/>
+	</notification>
+	<notification name="BottomTrayButtonCanNotBeShown">
+		Den valgte knap kan ikke vises lige nu.
+Knappen vil blive vist når der er nok plads til den.
+	</notification>
+	<global name="UnsupportedGLRequirements">
+		Det ser ikke ud til at din hardware opfylder minimumskravene til [APP_NAME]. [APP_NAME] kræver et OpenGL grafikkort som understøter &apos;multitexture&apos;. Check eventuelt om du har de nyeste drivere for grafikkortet, og de nyeste service-packs og patches til dit operativsystem.
+
+Hvis du bliver ved med at have problemer, besøg venligst [SUPPORT_SITE].
+	</global>
+	<global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
+		Hvis du selv ejer land, kan du benytte det til hjemme lokation.
+Ellers kan du se på verdenskortet og finde steder markeret med &quot;Infohub&quot;.
+	</global>
 </notifications>
diff --git a/indra/newview/skins/default/xui/da/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/da/panel_avatar_list_item.xml
new file mode 100644
index 00000000000..a9d5ba73acf
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_avatar_list_item.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="avatar_list_item">
+	<string name="FormatSeconds">
+		[COUNT]s
+	</string>
+	<string name="FormatMinutes">
+		[COUNT]m
+	</string>
+	<string name="FormatHours">
+		[COUNT]t
+	</string>
+	<string name="FormatDays">
+		[COUNT]d
+	</string>
+	<string name="FormatWeeks">
+		[COUNT]u
+	</string>
+	<string name="FormatMonths">
+		[COUNT]mån
+	</string>
+	<string name="FormatYears">
+		[COUNT]Ã¥
+	</string>
+	<text name="avatar_name" value="Ukendt"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_classified_info.xml b/indra/newview/skins/default/xui/da/panel_classified_info.xml
new file mode 100644
index 00000000000..a9cce7bf453
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_classified_info.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_classified_info">
+	<text name="title" value="Annonce info"/>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<text name="classified_name" value="[name]"/>
+			<text name="classified_location" value="[loading...]"/>
+			<text name="content_type" value="[content type]"/>
+			<text name="category" value="[category]"/>
+			<check_box label="Forny automatisk hver uge" name="auto_renew"/>
+			<text name="price_for_listing" tool_tip="Pris for optagelse.">
+				L$[PRICE]
+			</text>
+			<text name="classified_desc" value="[description]"/>
+		</panel>
+	</scroll_container>
+	<panel name="buttons">
+		<button label="Teleport" name="teleport_btn"/>
+		<button label="Kort" name="show_on_map_btn"/>
+		<button label="Redigér" name="edit_btn"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_classified.xml b/indra/newview/skins/default/xui/da/panel_edit_classified.xml
new file mode 100644
index 00000000000..18689105aec
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_classified.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Redigér annoncer" name="panel_edit_classified">
+	<panel.string name="location_notice">
+		(vil blive opdateret efter gemning)
+	</panel.string>
+	<text name="title">
+		Rediger annonce
+	</text>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<icon label="" name="edit_icon" tool_tip="Klik for at forstørre billede"/>
+			<text name="Name:">
+				Titel:
+			</text>
+			<text name="description_label">
+				Beskrivelse:
+			</text>
+			<text name="location_label">
+				Lokation:
+			</text>
+			<text name="classified_location">
+				henter...
+			</text>
+			<button label="Sæt til nuværende lokation" name="set_to_curr_location_btn"/>
+			<spinner label="L$" name="price_for_listing" tool_tip="Pris for optagelse." value="50"/>
+			<check_box label="Forny automatisk hver uge" name="auto_renew"/>
+		</panel>
+	</scroll_container>
+	<panel label="bottom_panel" name="bottom_panel">
+		<button label="Gem" name="save_changes_btn"/>
+		<button label="Annullér" name="cancel_btn"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_hair.xml b/indra/newview/skins/default/xui/da/panel_edit_hair.xml
new file mode 100644
index 00000000000..14511d51d52
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_hair.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_hair_panel">
+	<panel name="avatar_hair_color_panel">
+		<texture_picker label="Tekstur" name="Texture" tool_tip="Klik for at vælge et billede"/>
+	</panel>
+	<accordion name="wearable_accordion">
+		<accordion_tab name="hair_color_tab" title="Farve"/>
+		<accordion_tab name="hair_style_tab" title="Stil"/>
+		<accordion_tab name="hair_eyebrows_tab" title="Øjenbryn"/>
+		<accordion_tab name="hair_facial_tab" title="Skæg"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_profile.xml b/indra/newview/skins/default/xui/da/panel_edit_profile.xml
index a8a02a34b79..d3cfdbba52f 100644
--- a/indra/newview/skins/default/xui/da/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/da/panel_edit_profile.xml
@@ -1,46 +1,49 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel name="edit_profile_panel">
-   <string name="CaptionTextAcctInfo">
-       [ACCTTYPE]
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Redigér profil" name="edit_profile_panel">
+	<string name="CaptionTextAcctInfo">
+		[ACCTTYPE]
 [PAYMENTINFO] [AGEVERIFICATION]
-   </string>
-   <string name="AcctTypeResident"
-    value="Beboer" />
-   <string name="AcctTypeTrial"
-    value="På prøve" />
-   <string name="AcctTypeCharterMember"
-    value="æresmedlem" />
-   <string name="AcctTypeEmployee"
-    value="Linden Lab medarbejder" />
-   <string name="PaymentInfoUsed"
-    value="Betalende medlem" />
-   <string name="PaymentInfoOnFile"
-    value="Registreret betalende" />
-   <string name="NoPaymentInfoOnFile"
-    value="Ingen betalingsinfo" />
-   <string name="AgeVerified"
-    value="Alders-checket" />
-   <string name="NotAgeVerified"
-    value="Ikke alders-checket" />
-   <string name="partner_edit_link_url">
-       http://www.secondlife.com/account/partners.php?lang=da
-   </string>
-    <panel name="scroll_content_panel">
-    <panel name="data_panel" >
-     <panel name="lifes_images_panel">
-          <panel name="second_life_image_panel">
-              <text name="second_life_photo_title_text">
-			[SECOND_LIFE]:
-              </text>
-          </panel>
-      </panel>
-        <text name="title_partner_text" value="Partner:"/>
-        <panel name="partner_data_panel">
-            <text name="partner_text" value="[FIRST] [LAST]"/>
-         </panel>
-      <text name="text_box3">
-	Optaget autosvar:
-      </text>
-    </panel>
-    </panel>
+	</string>
+	<string name="RegisterDateFormat">
+		[REG_DATE] ([AGE])
+	</string>
+	<string name="AcctTypeResident" value="Beboer"/>
+	<string name="AcctTypeTrial" value="På prøve"/>
+	<string name="AcctTypeCharterMember" value="æresmedlem"/>
+	<string name="AcctTypeEmployee" value="Linden Lab medarbejder"/>
+	<string name="PaymentInfoUsed" value="Betalende medlem"/>
+	<string name="PaymentInfoOnFile" value="Registreret betalende"/>
+	<string name="NoPaymentInfoOnFile" value="Ingen betalingsinfo"/>
+	<string name="AgeVerified" value="Alders-checket"/>
+	<string name="NotAgeVerified" value="Ikke alders-checket"/>
+	<string name="partner_edit_link_url">
+		http://www.secondlife.com/account/partners.php?lang=da
+	</string>
+	<string name="no_partner_text" value="Ingen"/>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<panel name="data_panel">
+				<panel name="lifes_images_panel">
+					<icon label="" name="2nd_life_edit_icon" tool_tip="Klik for at vælge et billede"/>
+				</panel>
+				<panel name="first_life_image_panel">
+					<text name="real_world_photo_title_text" value="Real World:"/>
+				</panel>
+				<icon label="" name="real_world_edit_icon" tool_tip="Klik for at vælge et billede"/>
+				<text name="title_homepage_text">
+					Hjemmeside:
+				</text>
+				<check_box label="Vis mig i søgeresultater" name="show_in_search_checkbox"/>
+				<text name="title_acc_status_text" value="Min konto:"/>
+				<text name="my_account_link" value="[[URL] Go to My Dashboard]"/>
+				<text name="acc_status_text" value="Beboer. Ingen betalingsinfo."/>
+				<text name="title_partner_text" value="Min partner:"/>
+				<text name="partner_edit_link" value="[[URL] Edit]"/>
+			</panel>
+		</panel>
+	</scroll_container>
+	<panel name="profile_me_buttons_panel">
+		<button label="Gem ændringer" name="save_btn"/>
+		<button label="Annullér" name="cancel_btn"/>
+	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_shape.xml b/indra/newview/skins/default/xui/da/panel_edit_shape.xml
new file mode 100644
index 00000000000..19c27748caa
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_shape.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_shape_panel">
+	<panel name="avatar_sex_panel">
+		<text name="gender_text">
+			Køn:
+		</text>
+		<radio_group name="sex_radio">
+			<radio_item label="Kvinde" name="radio"/>
+			<radio_item label="Mand" name="radio2"/>
+		</radio_group>
+	</panel>
+	<accordion name="wearable_accordion">
+		<accordion_tab name="shape_body_tab" title="Krop"/>
+		<accordion_tab name="shape_head_tab" title="Hoved"/>
+		<accordion_tab name="shape_eyes_tab" title="Øjne"/>
+		<accordion_tab name="shape_ears_tab" title="Ører"/>
+		<accordion_tab name="shape_nose_tab" title="Næse"/>
+		<accordion_tab name="shape_mouth_tab" title="Mund"/>
+		<accordion_tab name="shape_chin_tab" title="Hage"/>
+		<accordion_tab name="shape_torso_tab" title="Overkrop"/>
+		<accordion_tab name="shape_legs_tab" title="Ben"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_shirt.xml b/indra/newview/skins/default/xui/da/panel_edit_shirt.xml
new file mode 100644
index 00000000000..cd2e8d8cb32
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_shirt.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_shirt_panel">
+	<panel name="avatar_shirt_color_panel">
+		<texture_picker label="Stof" name="Fabric" tool_tip="Klik for at vælge et billede"/>
+		<color_swatch label="Farve/Nuance" name="Color/Tint" tool_tip="Klik for at åbne farvevælger"/>
+	</panel>
+	<accordion name="wearable_accordion">
+		<accordion_tab name="shirt_main_tab" title="Trøje"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_skirt.xml b/indra/newview/skins/default/xui/da/panel_edit_skirt.xml
new file mode 100644
index 00000000000..4407c87d364
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_skirt.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_skirt_panel">
+	<panel name="avatar_skirt_color_panel">
+		<texture_picker label="Stof" name="Fabric" tool_tip="Klik for at vælge et billede"/>
+		<color_swatch label="Farve/Nuance" name="Color/Tint" tool_tip="Klik for at åbne farvevælger"/>
+	</panel>
+	<accordion name="wearable_accordion">
+		<accordion_tab name="skirt_main_tab" title="Nederdel"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/da/panel_edit_tattoo.xml
new file mode 100644
index 00000000000..4a133d86935
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_tattoo.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_tattoo_panel">
+	<panel name="avatar_tattoo_color_panel">
+		<texture_picker label="Hoved tatovering" name="Head Tattoo" tool_tip="Klik for at vælge et billede"/>
+		<texture_picker label="Øvre tatovering" name="Upper Tattoo" tool_tip="Klik for at vælge et billede"/>
+		<texture_picker label="Nedre tatovering" name="Lower Tattoo" tool_tip="Klik for at vælge et billede"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_group_list_item.xml b/indra/newview/skins/default/xui/da/panel_group_list_item.xml
new file mode 100644
index 00000000000..bfffdccc5e1
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_group_list_item.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="group_list_item">
+	<text name="group_name" value="Ukendt"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_group_notify.xml b/indra/newview/skins/default/xui/da/panel_group_notify.xml
new file mode 100644
index 00000000000..43a84298e25
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_group_notify.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="instant_message" name="panel_group_notify">
+	<panel label="header" name="header">
+		<text name="title" value="Afsender navn / Gruppe navn"/>
+	</panel>
+	<text name="attachment" value="Bilag"/>
+	<button label="Ok" name="btn_ok"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_group_roles.xml b/indra/newview/skins/default/xui/da/panel_group_roles.xml
index 2cb57b4e87d..74bea831fb8 100644
--- a/indra/newview/skins/default/xui/da/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/da/panel_group_roles.xml
@@ -17,7 +17,7 @@ klik på deres navne.
 			<name_list name="member_list">
 				<name_list.columns label="Medlemsnavn" name="name"/>
 				<name_list.columns label="Doneret leje" name="donated"/>
-				<name_list.columns label="Sidst på den" name="online"/>
+				<name_list.columns label="Status" name="online"/>
 			</name_list>
 			<button label="Invitér nyt medlem" name="member_invite"/>
 			<button label="Udmeld" name="member_eject"/>
@@ -30,7 +30,7 @@ en eller flere roller. En gruppe kan have op til 10 roller,
 inkluderet alle- og ejerroller.
 			</panel.string>
 			<panel.string name="cant_delete_role">
-				&apos;Alle-&apos; og &apos;Ejerroller&apos; er specielle og kan ikke slettes.
+				Rollerne &apos;Everyone&apos; og &apos;Owners&apos; er specielle og kan ikke slettes
 			</panel.string>
 			<panel.string name="power_folder_icon">
 				Inv_FolderClosed
@@ -39,7 +39,7 @@ inkluderet alle- og ejerroller.
 			<scroll_list name="role_list">
 				<scroll_list.columns label="Rollenavn" name="name"/>
 				<scroll_list.columns label="Titel" name="title"/>
-				<scroll_list.columns label="Medlemmer" name="members"/>
+				<scroll_list.columns label="#" name="members"/>
 			</scroll_list>
 			<button label="Opret ny rolle" name="role_create"/>
 			<button label="Slet rolle" name="role_delete"/>
@@ -58,7 +58,7 @@ ting i denne gruppe. Der er en bred vifte af rettigheder.
 	</tab_container>
 	<panel name="members_footer">
 		<text name="static">
-			Tildelte roller
+			Medlemmer
 		</text>
 		<scroll_list name="member_assigned_roles">
 			<scroll_list.columns label="" name="checkbox"/>
@@ -74,13 +74,13 @@ ting i denne gruppe. Der er en bred vifte af rettigheder.
 	</panel>
 	<panel name="roles_footer">
 		<text name="static">
-			Navn
+			Rolle navn
 		</text>
 		<line_editor name="role_name">
 			Ansatte
 		</line_editor>
 		<text name="static3">
-			Titel
+			Rolle titel
 		</text>
 		<line_editor name="role_title">
 			(venter)
@@ -94,7 +94,7 @@ ting i denne gruppe. Der er en bred vifte af rettigheder.
 		<text name="static4">
 			Tildelte roller
 		</text>
-		<check_box label="Medlemmer er synlige" name="role_visible_in_list" tool_tip="Angiver om medlemmer med denne rolle er synlige i fanen &apos;Generelt&apos; for avatarer uden for gruppen."/>
+		<check_box label="Vis medlemmer for andre" name="role_visible_in_list" tool_tip="Angiver om medlemmer med denne rolle er synlige i fanen &apos;Generelt&apos; for avatarer uden for gruppen."/>
 		<text name="static5" tool_tip="A list of Abilities the currently selected role can perform.">
 			Tilladte rettigheder
 		</text>
diff --git a/indra/newview/skins/default/xui/da/panel_im_control_panel.xml b/indra/newview/skins/default/xui/da/panel_im_control_panel.xml
new file mode 100644
index 00000000000..0384652e5d0
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_im_control_panel.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+	<text name="avatar_name" value="Ukendt"/>
+	<button label="Profil" name="view_profile_btn"/>
+	<button label="Tilføj ven" name="add_friend_btn"/>
+	<button label="Teleportér" name="teleport_btn"/>
+	<button label="Del" name="share_btn"/>
+	<panel name="panel_call_buttons">
+		<button label="Opkald" name="call_btn"/>
+		<button label="Læg på" name="end_call_btn"/>
+		<button label="Stemme opsætning" name="voice_ctrls_btn"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_landmark_info.xml b/indra/newview/skins/default/xui/da/panel_landmark_info.xml
new file mode 100644
index 00000000000..202a4d46645
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_landmark_info.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="landmark_info">
+	<string name="title_create_landmark" value="Opret landemærke"/>
+	<string name="title_edit_landmark" value="Redigér landemærke"/>
+	<string name="title_landmark" value="Landemærke"/>
+	<string name="not_available" value="(N\A)"/>
+	<string name="unknown" value="(ukendt)"/>
+	<string name="public" value="(offentlig)"/>
+	<string name="server_update_text">
+		Information om sted ikke tilgængelig før en opdatering af server.
+	</string>
+	<string name="server_error_text">
+		Information om dette sted er ikke tilgængelig lige nu, prøv venligst igen senere.
+	</string>
+	<string name="server_forbidden_text">
+		Information om dette sted er ikke tilgængelig på grund af begrænsning i rettigheder.  Check venligst dine adgangsrettigheder med ejeren af parcellen.
+	</string>
+	<string name="acquired_date">
+		[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+	</string>
+	<text name="title" value="Sted profil"/>
+	<scroll_container name="place_scroll">
+		<panel name="scrolling_panel">
+			<text name="maturity_value" value="ukendt"/>
+			<panel name="landmark_info_panel">
+				<text name="owner_label" value="Ejer:"/>
+				<text name="creator_label" value="Skaber:"/>
+				<text name="created_label" value="Lavet d.:"/>
+			</panel>
+			<panel name="landmark_edit_panel">
+				<text name="title_label" value="Titel:"/>
+				<text name="notes_label" value="Mine noter:"/>
+				<text name="folder_label" value="Landemærke lokation:"/>
+			</panel>
+		</panel>
+	</scroll_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_landmarks.xml b/indra/newview/skins/default/xui/da/panel_landmarks.xml
new file mode 100644
index 00000000000..47487832cbb
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_landmarks.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="Landmarks">
+	<accordion name="landmarks_accordion">
+		<accordion_tab name="tab_favorites" title="Favorites bjælke"/>
+		<accordion_tab name="tab_landmarks" title="Landemærker"/>
+		<accordion_tab name="tab_inventory" title="Min beholdning"/>
+		<accordion_tab name="tab_library" title="Bibliotek"/>
+	</accordion>
+	<panel name="bottom_panel">
+		<button name="options_gear_btn" tool_tip="Vis yderligere valg"/>
+		<button name="add_btn" tool_tip="Tilføj nyt landemærke"/>
+		<dnd_button name="trash_btn" tool_tip="Fjern valgte landemærke"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_login.xml b/indra/newview/skins/default/xui/da/panel_login.xml
index 3b1b717c462..c8c275d84d0 100644
--- a/indra/newview/skins/default/xui/da/panel_login.xml
+++ b/indra/newview/skins/default/xui/da/panel_login.xml
@@ -6,33 +6,29 @@
 	<panel.string name="forgot_password_url">
 		http://secondlife.com/account/request.php
 	</panel.string>
-	<panel name="login_widgets">
-		<text name="first_name_text">
-			Fornavn:
-		</text>
-		<line_editor name="first_name_edit" tool_tip="[SECOND_LIFE] Fornavn"/>
-		<text name="last_name_text">
-			Efternavn:
-		</text>
-		<line_editor name="last_name_edit" tool_tip="[SECOND_LIFE] Efternavn"/>
-		<text name="password_text">
-			Password:
-		</text>
-		<button label="Log Ind" label_selected="Log Ind" name="connect_btn"/>
-		<text name="start_location_text">
-			Start lokation:
-		</text>
-		<combo_box name="start_location_combo">
-			<combo_box.item label="Min sidste lokation" name="MyLastLocation"/>
-			<combo_box.item label="Hjem" name="MyHome"/>
-			<combo_box.item label="&lt;Skriv navn på region&gt;" name="Typeregionname"/>
-		</combo_box>
-		<check_box label="Husk password" name="remember_check"/>
-		<text name="create_new_account_text">
-			Opret bruger
-		</text>
-		<text name="forgot_password_text">
-			Glemt navn eller password?
-		</text>
-	</panel>
+	<layout_stack name="login_widgets">
+		<layout_panel name="login">
+			<text name="first_name_text">
+				Fornavn:
+			</text>
+			<line_editor label="Fornavn" name="first_name_edit" tool_tip="[SECOND_LIFE] First Name"/>
+			<line_editor label="Efternavn" name="last_name_edit" tool_tip="[SECOND_LIFE] Last Name"/>
+			<check_box label="Husk" name="remember_check"/>
+			<text name="start_location_text">
+				Start ved:
+			</text>
+			<combo_box name="start_location_combo">
+				<combo_box.item label="Hjem" name="MyHome"/>
+			</combo_box>
+			<button label="Log på" name="connect_btn"/>
+		</layout_panel>
+		<layout_panel name="links">
+			<text name="create_new_account_text">
+				Opret bruger
+			</text>
+			<text name="login_help">
+				Hjælp til login
+			</text>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/da/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/da/panel_media_settings_permissions.xml
new file mode 100644
index 00000000000..70570920cda
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_media_settings_permissions.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Tilpas" name="Media settings for controls">
+	<text name="controls_label">
+		Kontroller:
+	</text>
+	<combo_box name="controls">
+		<combo_item name="Standard">
+			Standard
+		</combo_item>
+		<combo_item name="Mini">
+			Mini
+		</combo_item>
+	</combo_box>
+	<check_box initial_value="false" label="Tillad navigation og interaktion" name="perms_owner_interact"/>
+	<check_box initial_value="false" label="Vis kontrol bjælke" name="perms_owner_control"/>
+	<check_box initial_value="false" label="Tillad navigation og interaktion" name="perms_group_interact"/>
+	<check_box initial_value="false" label="Vis kontrol bjælke" name="perms_group_control"/>
+	<check_box initial_value="false" label="Tillad navigation og interaktion" name="perms_anyone_interact"/>
+	<check_box initial_value="false" label="Vis kontrol bjælke" name="perms_anyone_control"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_navigation_bar.xml b/indra/newview/skins/default/xui/da/panel_navigation_bar.xml
new file mode 100644
index 00000000000..465bc75a1bf
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_navigation_bar.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="navigation_bar">
+	<panel name="navigation_panel">
+		<button name="back_btn" tool_tip="GÃ¥ tilbage til min forrige lokation"/>
+		<button name="forward_btn" tool_tip="GÃ¥ en lokation fremad"/>
+		<button name="home_btn" tool_tip="Teleport til min hjemme lokation"/>
+		<location_input label="Lokation" name="location_combo"/>
+		<search_combo_box label="Søg" name="search_combo_box" tool_tip="Søg">
+			<combo_editor label="Søg [SECOND_LIFE]" name="search_combo_editor"/>
+		</search_combo_box>
+	</panel>
+	<favorites_bar name="favorite">
+		<chevron_button name="&gt;&gt;" tool_tip="Søg mere af mine favoritter"/>
+	</favorites_bar>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_notes.xml b/indra/newview/skins/default/xui/da/panel_notes.xml
new file mode 100644
index 00000000000..f8d911b9e58
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_notes.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Noter &amp; Privatliv" name="panel_notes">
+	<layout_stack name="layout">
+		<panel name="notes_stack">
+			<scroll_container name="profile_scroll">
+				<panel name="profile_scroll_panel">
+					<text name="status_message" value="Min private noter:"/>
+					<text name="status_message2" value="Tillad denne person at:"/>
+					<check_box label="Se min online status" name="status_check"/>
+					<check_box label="Se mig på kortet" name="map_check"/>
+					<check_box label="Editére, slette og tage mine objekter" name="objects_check"/>
+				</panel>
+			</scroll_container>
+		</panel>
+		<panel name="notes_buttons_panel">
+			<button label="Tilføj" name="add_friend" tool_tip="Tilbyd venskab til beboeren"/>
+			<button label="IM" name="im" tool_tip="Ã…ben session med personlig besked (IM)"/>
+			<button label="Kald" name="call" tool_tip="Opkald til denne beboer"/>
+			<button label="Kort" name="show_on_map_btn" tool_tip="Vis beboeren på kortet"/>
+			<button label="Teleport" name="teleport" tool_tip="Tilbyd teleport"/>
+		</panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/da/panel_outfits_inventory.xml
new file mode 100644
index 00000000000..7d6401283e0
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_outfits_inventory.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="Outfits">
+	<accordion name="outfits_accordion">
+		<accordion_tab name="tab_cof" title="Nuværende sæt"/>
+		<accordion_tab name="tab_outfits" title="Mine sæt"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/da/panel_outfits_inventory_gear_default.xml
new file mode 100644
index 00000000000..a6a796f6127
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_outfits_inventory_gear_default.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_gear_default">
+	<menu_item_call label="Erstat nuværende sæt" name="wear"/>
+	<menu_item_call label="Tilføj til nuværende sæt" name="add"/>
+	<menu_item_call label="Fjern fra nuværende sæt" name="remove"/>
+	<menu_item_call label="Omdøb" name="rename"/>
+	<menu_item_call label="Fjern" name="remove_link"/>
+	<menu_item_call label="Slet" name="delete"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/da/panel_people.xml b/indra/newview/skins/default/xui/da/panel_people.xml
new file mode 100644
index 00000000000..07b7f60810b
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_people.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Side tray panel -->
+<panel label="Personer" name="people_panel">
+	<string name="no_people" value="Ingen personer"/>
+	<string name="no_one_near" value="Ingen tæt på"/>
+	<string name="no_friends_online" value="Ingen venner online"/>
+	<string name="no_friends" value="Ingen venner"/>
+	<string name="no_groups" value="Ingen grupper"/>
+	<string name="people_filter_label" value="Filtrér personer"/>
+	<string name="groups_filter_label" value="Filtrér grupper"/>
+	<filter_editor label="Filtrér" name="filter_input"/>
+	<tab_container name="tabs">
+		<panel label="TÆT PÅ" name="nearby_panel">
+			<panel label="bottom_panel" name="bottom_panel">
+				<button name="nearby_view_sort_btn" tool_tip="Valg"/>
+				<button name="add_friend_btn" tool_tip="Tilføjer valgte beboere til din venneliste"/>
+			</panel>
+		</panel>
+		<panel label="VENNER" name="friends_panel">
+			<accordion name="friends_accordion">
+				<accordion_tab name="tab_online" title="Online"/>
+				<accordion_tab name="tab_all" title="Alle"/>
+			</accordion>
+			<panel label="bottom_panel" name="bottom_panel">
+				<button name="friends_viewsort_btn" tool_tip="Valg"/>
+				<button name="add_btn" tool_tip="Tilbyd venskab til beboer"/>
+				<button name="del_btn" tool_tip="Fjern valgte person fra din venneliste"/>
+			</panel>
+		</panel>
+		<panel label="GRUPPER" name="groups_panel">
+			<panel label="bottom_panel" name="bottom_panel">
+				<button name="groups_viewsort_btn" tool_tip="Valg"/>
+				<button name="plus_btn" tool_tip="Bliv medlem af gruppe/Opret ny gruppe"/>
+				<button name="activate_btn" tool_tip="Activér valgte gruppe"/>
+			</panel>
+		</panel>
+		<panel label="NYLIGE" name="recent_panel">
+			<panel label="bottom_panel" name="bottom_panel">
+				<button name="recent_viewsort_btn" tool_tip="Valg"/>
+				<button name="add_friend_btn" tool_tip="Tilføj valgte person til din venneliste"/>
+			</panel>
+		</panel>
+	</tab_container>
+	<panel name="button_bar">
+		<button label="Profil" name="view_profile_btn" tool_tip="Vis billede, grupper og anden information om beboer"/>
+		<button label="IM" name="im_btn" tool_tip="Chat privat med denne person"/>
+		<button label="Opkald" name="call_btn" tool_tip="Opkald til denne beboer"/>
+		<button label="Del" name="share_btn"/>
+		<button label="Teleport" name="teleport_btn" tool_tip="Tilbyd teleport"/>
+		<button label="Group profil" name="group_info_btn" tool_tip="Vis gruppe information"/>
+		<button label="Gruppe chat" name="chat_btn" tool_tip="Ã…ben chat session"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_picks.xml b/indra/newview/skins/default/xui/da/panel_picks.xml
new file mode 100644
index 00000000000..ee3c59b88a8
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_picks.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Favoritter" name="panel_picks">
+	<string name="no_picks" value="Ingen favoritter"/>
+	<string name="no_classifieds" value="Ingen annoncer"/>
+	<text name="empty_picks_panel_text">
+		Der er ingen favoritter/annoncer her
+	</text>
+	<accordion name="accordion">
+		<accordion_tab name="tab_picks" title="Favoritter"/>
+		<accordion_tab name="tab_classifieds" title="Annoncer"/>
+	</accordion>
+	<panel label="bottom_panel" name="edit_panel">
+		<button name="new_btn" tool_tip="Opret en ny favorit eller annonce på dette sted"/>
+	</panel>
+	<panel name="buttons_cucks">
+		<button label="Info" name="info_btn" tool_tip="Vis favorit information"/>
+		<button label="Teleportér" name="teleport_btn" tool_tip="Teleportér til dette sted"/>
+		<button label="Kort" name="show_on_map_btn" tool_tip="Vis dette sted på verdenskort"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_places.xml b/indra/newview/skins/default/xui/da/panel_places.xml
new file mode 100644
index 00000000000..052bf749cb7
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_places.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Steder" name="places panel">
+	<string name="landmarks_tab_title" value="MINE LANDEMÆRKER"/>
+	<string name="teleport_history_tab_title" value="TELEPORT HISTORIK"/>
+	<filter_editor label="Filtrér steder" name="Filter"/>
+	<panel name="button_panel">
+		<button label="Teleportér" name="teleport_btn"/>
+		<button label="Kort" name="map_btn"/>
+		<button label="Redigér" name="edit_btn"/>
+		<button label="Luk" name="close_btn"/>
+		<button label="Annullér" name="cancel_btn"/>
+		<button label="Gem" name="save_btn"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml
index c62beac8998..c382b222eaf 100644
--- a/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml
@@ -1,33 +1,26 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Kommunikation" name="im">
-	<text name="text_box">
-		Min online status:
+	<panel.string name="log_in_to_change">
+		log på for at ændre
+	</panel.string>
+	<button label="Nulstil historik" name="clear_cache"/>
+	<text name="cache_size_label_l">
+		(Lokationer, billeder, web, søge historik)
 	</text>
-	<check_box label="Kun mine venner og grupper kan se når jeg er online"
-	     name="online_visibility" />
-	<text name="text_box2">
-		IM valg:
+	<check_box label="Kun venner og grupper ved jeg er online" name="online_visibility"/>
+	<check_box label="Kun venner og grupper kan sende besked til mig" name="voice_call_friends_only_check"/>
+	<check_box label="Slå mikrofon fra når opkald slutter" name="auto_disengage_mic_check"/>
+	<check_box label="Acceptér cookies" name="cookies_enabled"/>
+	<check_box label="Tillad media autoplay" name="autoplay_enabled"/>
+	<text name="Logs:">
+		Logs:
 	</text>
-	<string name="log_in_to_change">
-		Log ind for at ændre
-	</string>
-	<check_box label="Send IM til E-mail ([EMAIL])" name="send_im_to_email" />
-	<check_box label="Inkludér IM i chat vindue" name="include_im_in_chat_console" />
-	<check_box label="Vis tidslinje i private beskeder (IM)" name="show_timestamps_check" />
-	<check_box label="Vis når venner logger på" name="friends_online_notify_checkbox" />
-	<text name="text_box3">
-		Optaget autosvar:
+	<check_box label="Gem en log med lokal chat på min computer" name="log_nearby_chat"/>
+	<check_box label="Gem en log med private beskeder (IM) på min computer" name="log_instant_messages"/>
+	<check_box label="Tilføj tidsstempel" name="show_timestamps_check_im"/>
+	<text name="log_path_desc">
+		Placering af logfiler
 	</text>
-	<text name="text_box4">
-		Log funktioner:
-	</text>
-	<check_box label="Gem en log af privat beskeder (IM) på min computer"
-	     name="log_instant_messages" />
-	<check_box label="Vis klokkeslæt i log" name="log_instant_messages_timestamp" />
-	<check_box label="Vis slutningen af sidste samtale i beskeder" name="log_show_history" />
-	<check_box label="Gem log af lokal chat på min computer" name="log_chat" />
-	<check_box label="Vis klokkeslæt i lokat chat log" name="log_chat_timestamp" />
-	<check_box label="Vis indkommende IM i lokal chat log" name="log_chat_IM" />
-	<check_box label="Inkludér dato med klokkeslæt" name="log_date_timestamp" />
-	<button label="Ændre sti" label_selected="Ændre sti" name="log_path_button" left="150"/>
+	<button label="Ændre sti" label_selected="Ændre sti" left="150" name="log_path_button"/>
+	<button label="Liste med blokeringer" name="block_list"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/da/panel_preferences_setup.xml b/indra/newview/skins/default/xui/da/panel_preferences_setup.xml
index e826e65315f..2dd0b71d8fe 100644
--- a/indra/newview/skins/default/xui/da/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/da/panel_preferences_setup.xml
@@ -1,30 +1,46 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Input &amp; kamera" name="Input panel">
-	<text name=" Mouselook Options:">
-		Førstepersons valg:
+<panel label="Input og kamera" name="Input panel">
+	<button label="Andre enheder" name="joystick_setup_button"/>
+	<text name="Mouselook:">
+		Første person:
 	</text>
-	<text name=" Mouse Sensitivity:">
-		Mus følsomhed:
+	<text name=" Mouse Sensitivity">
+		Mus - følsomhed
 	</text>
-	<check_box label="Omvendt mus" name="invert_mouse"/>
-	<text name=" Auto Fly Options:">
-		Auto flyv valg:
+	<check_box label="Omvendt" name="invert_mouse"/>
+	<text name="Network:">
+		Netværk:
 	</text>
-	<check_box label="Flyv/Land ved at holde Page Up/Down nede" name="automatic_fly"/>
-	<text name=" Camera Options:">
-		Kamera valg:
+	<text name="Maximum bandwidth">
+		Maksimum båndbredde
 	</text>
-	<text name="camera_fov_label">
-		Camera synsvinkel:
+	<text name="text_box2">
+		kbps
 	</text>
-	<text name="Camera Follow Distance:">
-		Kamera følge-afstand:
+	<check_box label="Speciel port" name="connection_port_enabled"/>
+	<spinner label="Port nummer:" name="web_proxy_port"/>
+	<text name="cache_size_label_l">
+		Cache størrelse
 	</text>
-	<check_box label="Fokusér kamera automatisk ved redigering" name="edit_camera_movement" tool_tip="Fokusér kamera automatisk når du går ind og ud af redigering."/>
-	<check_box label="Fokusér kamera automatisk ved udseende" name="appearance_camera_movement" tool_tip="Lad kameraet automatisk placere sig når du er i redigering"/>
-	<text name="text2">
-		Avatar skærm funktioner:
+	<text name="text_box5">
+		MB
+	</text>
+	<button label="Vælg" label_selected="Vælg" name="set_cache"/>
+	<button label="Nulstil" label_selected="Gem" name="reset_cache"/>
+	<text name="Cache location">
+		Cache lokation
+	</text>
+	<text name="Web:">
+		Web:
+	</text>
+	<radio_group name="use_external_browser">
+		<radio_item label="Benyt den indbyggede browser" name="internal" tool_tip="Brug den indbyggede web browser til hjælp, web links m.v. Denne browser åbner et nyt vindue i [APP_NAME]."/>
+		<radio_item label="Brug min normale browser (IE, Firefox)" name="external" tool_tip="Brug systemets standard web browser til hjælp, web links, m.v. Ikke anbefalet hvis du kører i fuld-skærm."/>
+	</radio_group>
+	<check_box initial_value="false" label="Web proxy" name="web_proxy_enabled"/>
+	<line_editor name="web_proxy_editor" tool_tip="Angiv navn eller IP addresse på den proxy du ønsker at anvende"/>
+	<button label="Vælg" label_selected="Vælg" name="set_proxy"/>
+	<text name="Proxy location">
+		Proxy placering
 	</text>
-	<check_box label="Vis avatar i førsteperson" name="first_person_avatar_visible"/>
-	<button label="Joystick opsætning" name="joystick_setup_button"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/da/panel_profile.xml b/indra/newview/skins/default/xui/da/panel_profile.xml
new file mode 100644
index 00000000000..ef7110ffcf5
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_profile.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Profil" name="panel_profile">
+	<string name="no_partner_text" value="Ingen"/>
+	<string name="RegisterDateFormat">
+		[REG_DATE] ([AGE])
+	</string>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<panel name="second_life_image_panel">
+				<text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
+			</panel>
+			<panel name="first_life_image_panel">
+				<text name="title_rw_descr_text" value="Real world:"/>
+			</panel>
+			<text name="me_homepage_text">
+				Hjemmeside:
+			</text>
+			<text name="title_member_text" value="Medlem siden:"/>
+			<text name="title_acc_status_text" value="Konto status:"/>
+			<text name="acc_status_text" value="Beboer. Ingen betalingsinfo"/>
+			<text name="title_partner_text" value="Partner:"/>
+			<text name="title_groups_text" value="Grupper:"/>
+		</panel>
+	</scroll_container>
+	<panel name="profile_buttons_panel">
+		<button label="Tilføj ven" name="add_friend" tool_tip="Tilbyd venskab til denne beboer"/>
+		<button label="IM" name="im" tool_tip="Skriv en personlig besked (IM)"/>
+		<button label="Opkald" name="call" tool_tip="Opkald til denne beboer"/>
+		<button label="Map" name="show_on_map_btn" tool_tip="Show the resident on the map"/>
+		<button label="Tilbyd teleport" name="teleport" tool_tip="Tilbyd en teleport til denne beboer"/>
+		<button label="â–¼" name="overflow_btn" tool_tip="Betal penge til eller del beholdning med denne beboer"/>
+	</panel>
+	<panel name="profile_me_buttons_panel">
+		<button label="Redigér profil" name="edit_profile_btn"/>
+		<button label="Redigér udseende" name="edit_appearance_btn"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_region_covenant.xml b/indra/newview/skins/default/xui/da/panel_region_covenant.xml
index 394664f1f11..0e8ab7556f9 100644
--- a/indra/newview/skins/default/xui/da/panel_region_covenant.xml
+++ b/indra/newview/skins/default/xui/da/panel_region_covenant.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Covenant" name="Covenant">
 	<text name="estate_section_lbl">
-		Estate:
+		Estate
 	</text>
 	<text name="estate_name_lbl">
 		Navn:
@@ -27,10 +27,10 @@
 		Ændringer i regler vil blive vist i alle parceller til denne estate.
 	</text>
 	<text name="covenant_instructions">
-		Træk og slip et notecard her for at ændre regler for denne estate.
+		Træk og slip en note for at ændre regler for denne estate.
 	</text>
 	<text name="region_section_lbl">
-		Region:
+		Region
 	</text>
 	<text name="region_name_lbl">
 		Navn:
diff --git a/indra/newview/skins/default/xui/da/panel_region_debug.xml b/indra/newview/skins/default/xui/da/panel_region_debug.xml
index 07e857163ac..08e2d1e263e 100644
--- a/indra/newview/skins/default/xui/da/panel_region_debug.xml
+++ b/indra/newview/skins/default/xui/da/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 label="Debug" name="Debug">
 	<text name="region_text_lbl">
 		Region:
@@ -6,16 +6,13 @@
 	<text name="region_text">
 		ukendt
 	</text>
-	<check_box label="Deaktivér scripts" name="disable_scripts_check"
-	     tool_tip="Deaktivér alle scripts i denne region" />
-	<button label="?" name="disable_scripts_help" />
-	<check_box label="Deaktivér kollisioner" name="disable_collisions_check"
-	     tool_tip="Deaktivér kollisioner mellem objekter i denne region" />
-	<button label="?" name="disable_collisions_help" />
-	<check_box label="Deaktivér fysik" name="disable_physics_check"
-	     tool_tip="Deaktivér alt fysik i denne region" />
-	<button label="?" name="disable_physics_help" />
-	<button label="Gem" name="apply_btn" />
+	<check_box label="Deaktivér scripts" name="disable_scripts_check" tool_tip="Deaktivér alle scripts i denne region"/>
+	<button label="?" name="disable_scripts_help"/>
+	<check_box label="Deaktivér kollisioner" name="disable_collisions_check" tool_tip="Deaktivér kollisioner mellem objekter i denne region"/>
+	<button label="?" name="disable_collisions_help"/>
+	<check_box label="Deaktivér fysik" name="disable_physics_check" tool_tip="Deaktivér alt fysik i denne region"/>
+	<button label="?" name="disable_physics_help"/>
+	<button label="Gem" name="apply_btn"/>
 	<text name="objret_text_lbl">
 		Returnér objekter
 	</text>
@@ -25,27 +22,19 @@
 	<line_editor name="target_avatar_name">
 		(ingen)
 	</line_editor>
-	<button label="Vælg..." name="choose_avatar_btn" />
+	<button label="Vælg" name="choose_avatar_btn"/>
 	<text name="options_text_lbl">
 		Valg:
 	</text>
-	<check_box label="Returnér kun objekter med script" name="return_scripts"
-	     tool_tip="Returnér kun objekter med scripts." />
-	<check_box label="Returnér kun objekter på andre brugeres land" name="return_other_land"
-	     tool_tip="returnér kun objekter på land som tilhører andre" />
-	<check_box label="Returnér objekter fra alle regioner i denne estate"
-	     name="return_estate_wide"
-	     tool_tip="Returnér objekter i alle regioner der tilhører denne estate" />
-	<button label="Returnér" name="return_btn" />
-	<button label="Mest kolliderende..." name="top_colliders_btn"
-	     tool_tip="Liste med de objekter der oplever flest kollissioner" />
-	<button label="?" name="top_colliders_help" />
-	<button label="Mest krævende scripts..." name="top_scripts_btn"
-	     tool_tip="Liste med de objekter der kræver mest script tid" />
-	<button label="?" name="top_scripts_help" />
-	<button label="Genstart region" name="restart_btn"
-	     tool_tip="Genstart region om 2 minutter (sender advarsel først)" />
-	<button label="?" name="restart_help" />
-	<button label="Udskyd genstart" name="cancel_restart_btn"
-	     tool_tip="Udsæt genstart med en time" />
+	<check_box label="Med scripts" name="return_scripts" tool_tip="Returnér kun objekter med scripts"/>
+	<check_box label="På en andens land" name="return_other_land" tool_tip="returnér kun objekter på land som tilhører andre"/>
+	<check_box label="I hver eneste region i denne estate" name="return_estate_wide" tool_tip="Returnér objekter i alle regioner der tilhører denne estate"/>
+	<button label="Returnér" name="return_btn"/>
+	<button label="Mest kolliderende..." name="top_colliders_btn" tool_tip="Liste med de objekter der oplever flest kollissioner"/>
+	<button label="?" name="top_colliders_help"/>
+	<button label="Mest krævende scripts..." name="top_scripts_btn" tool_tip="Liste med de objekter der kræver mest script tid"/>
+	<button label="?" name="top_scripts_help"/>
+	<button label="Genstart region" name="restart_btn" tool_tip="Genstart region om 2 minutter (sender advarsel først)"/>
+	<button label="?" name="restart_help"/>
+	<button label="Udskyd genstart" name="cancel_restart_btn" tool_tip="Udsæt genstart med en time"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/da/panel_region_texture.xml b/indra/newview/skins/default/xui/da/panel_region_texture.xml
index 65c4743da03..fc597eee151 100644
--- a/indra/newview/skins/default/xui/da/panel_region_texture.xml
+++ b/indra/newview/skins/default/xui/da/panel_region_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 label="Terræn textures" name="Textures">
 	<text name="region_text_lbl">
 		Region:
@@ -36,22 +36,22 @@
 	<text name="height_text_lbl9">
 		Nordøst
 	</text>
-	<spinner label="Lav" name="height_start_spin_0" />
-	<spinner label="Lav" name="height_start_spin_1" />
-	<spinner label="Lav" name="height_start_spin_2" />
-	<spinner label="Lav" name="height_start_spin_3" />
-	<spinner label="Høj" name="height_range_spin_0" />
-	<spinner label="Høj" name="height_range_spin_1" />
-	<spinner label="Høj" name="height_range_spin_2" />
-	<spinner label="Høj" name="height_range_spin_3" />
+	<spinner label="Lav" name="height_start_spin_0"/>
+	<spinner label="Lav" name="height_start_spin_1"/>
+	<spinner label="Lav" name="height_start_spin_2"/>
+	<spinner label="Lav" name="height_start_spin_3"/>
+	<spinner label="Høj" name="height_range_spin_0"/>
+	<spinner label="Høj" name="height_range_spin_1"/>
+	<spinner label="Høj" name="height_range_spin_2"/>
+	<spinner label="Høj" name="height_range_spin_3"/>
 	<text name="height_text_lbl10">
-		Disse værdier repræsenterer overgange for texturerne ovenfor målt i meter
+		Disse værdier repræsenterer blandingsområder for teksturer ovenfor.
 	</text>
 	<text name="height_text_lbl11">
-		LAV værdien er MAKSIMUM højde for texture nummer 1,
+		Målt i meter, angiver LAV værdien MAKSIMUM højden for tekstur 1, og HØJ værdien er minimumshøjden for tekstur 4.
 	</text>
 	<text name="height_text_lbl12">
 		og HØJ værdien er MIMIMUM højde for texture nummer 4.
 	</text>
-	<button label="Gem" name="apply_btn" />
+	<button label="Gem" name="apply_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/da/panel_script_ed.xml b/indra/newview/skins/default/xui/da/panel_script_ed.xml
new file mode 100644
index 00000000000..0bdfa89d3b7
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_script_ed.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="script panel">
+	<panel.string name="loading">
+		Henter...
+	</panel.string>
+	<panel.string name="can_not_view">
+		Du kan ikke se eller rette dette script, da det er sat til &quot;no copy&quot;. Du skal have fulde rettigheder for at se eller rette et script i et objekt.
+	</panel.string>
+	<panel.string name="public_objects_can_not_run">
+		Offentlige objekter kan ikke afvikle scripts
+	</panel.string>
+	<panel.string name="script_running">
+		kører
+	</panel.string>
+	<panel.string name="Title">
+		Script: [NAME]
+	</panel.string>
+	<text_editor name="Script Editor">
+		Henter...
+	</text_editor>
+	<button label="Gem" label_selected="Gem" name="Save_btn"/>
+	<combo_box label="Indsæt..." name="Insert..."/>
+	<menu_bar name="script_menu">
+		<menu label="Filer" name="File">
+			<menu_item_call label="Gem" name="Save"/>
+			<menu_item_call label="Annullér alle ændringer" name="Revert All Changes"/>
+		</menu>
+		<menu label="Redigér" name="Edit">
+			<menu_item_call label="Fortryd" name="Undo"/>
+			<menu_item_call label="Gentag" name="Redo"/>
+			<menu_item_call label="Klip" name="Cut"/>
+			<menu_item_call label="Kopiér" name="Copy"/>
+			<menu_item_call label="Indsæt" name="Paste"/>
+			<menu_item_call label="Vælg alt" name="Select All"/>
+			<menu_item_call label="Fravælg alt" name="Deselect"/>
+			<menu_item_call label="Søg / Erstat..." name="Search / Replace..."/>
+		</menu>
+		<menu label="Hjælp" name="Help">
+			<menu_item_call label="Hjælp..." name="Help..."/>
+			<menu_item_call label="Hjælp med keywords..." name="Keyword Help..."/>
+		</menu>
+	</menu_bar>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_side_tray.xml b/indra/newview/skins/default/xui/da/panel_side_tray.xml
new file mode 100644
index 00000000000..ab4a2a134e7
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_side_tray.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Side tray cannot show background because it is always
+	partially on screen to hold tab buttons. -->
+<side_tray name="sidebar">
+	<sidetray_tab description="Hjem." name="sidebar_home">
+		<panel label="hjem" name="panel_home"/>
+	</sidetray_tab>
+	<sidetray_tab description="Find venner, kontakter og personer tæt på." name="sidebar_people">
+		<panel_container name="panel_container">
+			<panel label="Gruppe info" name="panel_group_info_sidetray"/>
+			<panel label="Blokerede beboere og objekter" name="panel_block_list_sidetray"/>
+		</panel_container>
+	</sidetray_tab>
+	<sidetray_tab description="Find steder du vil hen og steder du har været før." label="Steder" name="sidebar_places">
+		<panel label="Steder" name="panel_places"/>
+	</sidetray_tab>
+	<sidetray_tab description="Redigér din profile og favoritter." name="sidebar_me">
+		<panel label="Mig" name="panel_me"/>
+	</sidetray_tab>
+	<sidetray_tab description="Ændre dit nuværende udseende" name="sidebar_appearance">
+		<panel label="Redigér fremtoning" name="sidepanel_appearance"/>
+	</sidetray_tab>
+	<sidetray_tab description="Browse din beholdning." name="sidebar_inventory">
+		<panel label="Redigér beholdning" name="sidepanel_inventory"/>
+	</sidetray_tab>
+</side_tray>
diff --git a/indra/newview/skins/default/xui/da/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/da/panel_stand_stop_flying.xml
new file mode 100644
index 00000000000..f25639d56fc
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_stand_stop_flying.xml
@@ -0,0 +1,6 @@
+<?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 name="panel_stand_stop_flying">
+	<button label="Stå" name="stand_btn" tool_tip="Klik her for at stå op."/>
+	<button label="Stop flyvning" name="stop_fly_btn" tool_tip="Stop flyvning"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_teleport_history.xml b/indra/newview/skins/default/xui/da/panel_teleport_history.xml
new file mode 100644
index 00000000000..64b5ecf5cf4
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_teleport_history.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="Teleport History">
+	<accordion name="history_accordion">
+		<accordion_tab name="today" title="I dag"/>
+		<accordion_tab name="yesterday" title="I går"/>
+		<accordion_tab name="2_days_ago" title="2 dage siden"/>
+		<accordion_tab name="3_days_ago" title="3 dage siden"/>
+		<accordion_tab name="4_days_ago" title="4 dage siden"/>
+		<accordion_tab name="5_days_ago" title="5 dage siden"/>
+		<accordion_tab name="6_days_and_older" title="6 dage siden"/>
+		<accordion_tab name="1_month_and_older" title="1 måned eller ældre"/>
+		<accordion_tab name="6_months_and_older" title="6 måneder eller ældre"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/sidepanel_item_info.xml b/indra/newview/skins/default/xui/da/sidepanel_item_info.xml
new file mode 100644
index 00000000000..685601b922e
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/sidepanel_item_info.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="item properties" title="Egenskaber for beholdningsgenstand">
+	<panel.string name="unknown">
+		(ukendt)
+	</panel.string>
+	<panel.string name="public">
+		(offentlig)
+	</panel.string>
+	<panel.string name="you_can">
+		Du kan:
+	</panel.string>
+	<panel.string name="owner_can">
+		Ejer kan:
+	</panel.string>
+	<panel.string name="acquiredDate">
+		[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+	</panel.string>
+	<text name="title" value="Egenskaber for genstand"/>
+	<panel label="">
+		<text name="LabelItemNameTitle">
+			Navn:
+		</text>
+		<text name="LabelItemDescTitle">
+			Beskrivelse:
+		</text>
+		<text name="LabelCreatorTitle">
+			Skaber:
+		</text>
+		<button label="Profil..." name="BtnCreator"/>
+		<text name="LabelOwnerTitle">
+			Ejer:
+		</text>
+		<button label="Profil..." name="BtnOwner"/>
+		<text name="LabelAcquiredTitle">
+			Erhvervet:
+		</text>
+		<text name="LabelAcquiredDate">
+			Ons Maj 24 12:50:46 2006
+		</text>
+		<text name="OwnerLabel">
+			Dig:
+		</text>
+		<check_box label="Editér" name="CheckOwnerModify"/>
+		<check_box label="Kopiér" name="CheckOwnerCopy"/>
+		<check_box label="Sælg" name="CheckOwnerTransfer"/>
+		<text name="AnyoneLabel">
+			Enhver:
+		</text>
+		<check_box label="Kopiér" name="CheckEveryoneCopy"/>
+		<text name="GroupLabel">
+			Gruppe:
+		</text>
+		<check_box label="Del" name="CheckShareWithGroup"/>
+		<text name="NextOwnerLabel">
+			Næste ejer:
+		</text>
+		<check_box label="Editér" name="CheckNextOwnerModify"/>
+		<check_box label="Kopiér" name="CheckNextOwnerCopy"/>
+		<check_box label="Sælg" name="CheckNextOwnerTransfer"/>
+		<check_box label="Til salg" name="CheckPurchase"/>
+		<combo_box name="combobox sale copy">
+			<combo_box.item label="Kopiér" name="Copy"/>
+			<combo_box.item label="Original" name="Original"/>
+		</combo_box>
+		<spinner label="Pris:" name="Edit Cost"/>
+		<text name="CurrencySymbol">
+			L$
+		</text>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/sidepanel_task_info.xml b/indra/newview/skins/default/xui/da/sidepanel_task_info.xml
new file mode 100644
index 00000000000..6ade03ce563
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/sidepanel_task_info.xml
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="object properties" title="Egenskaber for objekt">
+	<panel.string name="text deed continued">
+		Dedikér
+	</panel.string>
+	<panel.string name="text deed">
+		Dedikér
+	</panel.string>
+	<panel.string name="text modify info 1">
+		Du kan modificere dette objekt
+	</panel.string>
+	<panel.string name="text modify info 2">
+		Du kan modificere disse objekter
+	</panel.string>
+	<panel.string name="text modify info 3">
+		Du kan ikke modificere dette objekt
+	</panel.string>
+	<panel.string name="text modify info 4">
+		Du kan ikke modificere disse objekter
+	</panel.string>
+	<panel.string name="text modify warning">
+		Dette objekt har linkede dele
+	</panel.string>
+	<panel.string name="Cost Default">
+		Pris: L$
+	</panel.string>
+	<panel.string name="Cost Total">
+		Total pris: L$
+	</panel.string>
+	<panel.string name="Cost Per Unit">
+		Pris pr.: L$
+	</panel.string>
+	<panel.string name="Cost Mixed">
+		Blandet pris
+	</panel.string>
+	<panel.string name="Sale Mixed">
+		Blandet salg
+	</panel.string>
+	<panel label="">
+		<text name="Name:">
+			Navn:
+		</text>
+		<text name="Description:">
+			Beskrivelse:
+		</text>
+		<text name="Creator:">
+			Skaber:
+		</text>
+		<text name="Owner:">
+			Ejer:
+		</text>
+		<text name="Group:">
+			Gruppe:
+		</text>
+		<button name="button set group" tool_tip="Vælg en gruppe der skal dele dette objekts rettigheder"/>
+		<name_box initial_value="Henter..." name="Group Name Proxy"/>
+		<button label="Dedikér" label_selected="Dedikér" name="button deed" tool_tip="Dedikering giver denne genstand væk med næste ejers rettigheder. Gruppedelte genstande kan dedikeres af en gruppeadministrator."/>
+		<check_box label="Del" name="checkbox share with group" tool_tip="Tillad alle medlemmer i den angivne gruppe at videregive dine &quot;redigere&quot; rettigheder for dette objekt. Du må dedikere for at tillade rolle begrænsninger."/>
+		<text name="label click action">
+			Klik for at:
+		</text>
+		<combo_box name="clickaction">
+			<combo_box.item label="Røre  (standard)" name="Touch/grab(default)"/>
+			<combo_box.item label="Sidde på objekt" name="Sitonobject"/>
+			<combo_box.item label="Købe objekt" name="Buyobject"/>
+			<combo_box.item label="Betale til objekt" name="Payobject"/>
+			<combo_box.item label="Ã…bne" name="Open"/>
+		</combo_box>
+		<check_box label="Til salg:" name="checkbox for sale"/>
+		<combo_box name="sale type">
+			<combo_box.item label="Kopi" name="Copy"/>
+			<combo_box.item label="Indhold" name="Contents"/>
+			<combo_box.item label="Original" name="Original"/>
+		</combo_box>
+		<spinner label="Pris: L$" name="Edit Cost"/>
+		<check_box label="Vis i søgning" name="search_check" tool_tip="Lad personer se dette objekt i søgeresultater"/>
+		<panel name="perms_build">
+			<text name="perm_modify">
+				Du kan redigere dette objekt
+			</text>
+			<text name="Anyone can:">
+				Enhver:
+			</text>
+			<check_box label="Flytte" name="checkbox allow everyone move"/>
+			<check_box label="Kopiere" name="checkbox allow everyone copy"/>
+			<text name="Next owner can:">
+				Næste ejer:
+			</text>
+			<check_box label="Redigere" name="checkbox next owner can modify"/>
+			<check_box label="Kopiere" name="checkbox next owner can copy"/>
+			<check_box label="Overfør" name="checkbox next owner can transfer" tool_tip="Næste ejer kan sælge eller give dette objekt væk"/>
+			<text name="B:">
+				B:
+			</text>
+			<text name="O:">
+				Ã…:
+			</text>
+			<text name="G:">
+				O:
+			</text>
+			<text name="E:">
+				R:
+			</text>
+			<text name="N:">
+				N:
+			</text>
+			<text name="F:">
+				F:
+			</text>
+		</panel>
+	</panel>
+	<panel name="button_panel">
+		<button label="Ã…ben" name="open_btn"/>
+		<button label="Betal" name="pay_btn"/>
+		<button label="Køb" name="buy_btn"/>
+		<button label="Annullér" name="cancel_btn"/>
+		<button label="Gem" name="save_btn"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/strings.xml b/indra/newview/skins/default/xui/da/strings.xml
index fda01d2f597..493bb4cb20c 100644
--- a/indra/newview/skins/default/xui/da/strings.xml
+++ b/indra/newview/skins/default/xui/da/strings.xml
@@ -815,7 +815,7 @@ tekstur i din beholdning.
 	<string name="no_copy" value=" (ikke kopiere)"/>
 	<string name="worn" value=" (båret)"/>
 	<string name="link" value=" (sammenkæde)"/>
-	<string name="broken_link" value=" (brudt_kæde)&quot;"/>
+	<string name="broken_link" value=" (brudt_kæde)"/>
 	<string name="LoadingContents">
 		Henter indhold...
 	</string>
diff --git a/indra/newview/skins/default/xui/it/floater_about.xml b/indra/newview/skins/default/xui/it/floater_about.xml
index f80f810dba6..a2fcaa63f67 100644
--- a/indra/newview/skins/default/xui/it/floater_about.xml
+++ b/indra/newview/skins/default/xui/it/floater_about.xml
@@ -1,20 +1,60 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="INFORMAZIONI SU [CAPITALIZED_APP_NAME]">
-<tab_container name="about_tab">
-	<panel name="credits_panel">
-	<text_editor name="credits_editor">
-		Second Life è offerto da Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl and many others.
+<floater name="floater_about" title="Informazioni su [APP_NAME]">
+	<floater.string name="AboutHeader">
+		[APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL])
+[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]]
+	</floater.string>
+	<floater.string name="AboutCompiler">
+		Fatto con [COMPILER] versione [COMPILER_VERSION]
+	</floater.string>
+	<floater.string name="AboutPosition">
+		Tu sei in [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] a [REGION] ospitata da [HOSTNAME] ([HOSTIP])
+[SERVER_VERSION]
+[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
+	</floater.string>
+	<floater.string name="AboutSystem">
+		CPU: [CPU]
+Memoria: [MEMORY_MB] MB
+Versione Sistema Operativo: [OS_VERSION]
+Venditore Scheda Grafica: [GRAPHICS_CARD_VENDOR]
+Scheda Grafica: [GRAPHICS_CARD]
+	</floater.string>
+	<floater.string name="AboutDriver">
+		Versione Driver Scheda Grafica: [GRAPHICS_DRIVER_VERSION]
+	</floater.string>
+	<floater.string name="AboutLibs">
+		Versione OpenGL: [OPENGL_VERSION]
+
+Versione libcurl: [LIBCURL_VERSION]
+Versione J2C Decoder: [J2C_VERSION]
+Versione Audio Driver: [AUDIO_DRIVER_VERSION]
+Versione Qt Webkit: [QT_WEBKIT_VERSION]
+Versione Vivox: [VIVOX_VERSION]
+	</floater.string>
+	<floater.string name="none">
+		(nessuno)
+	</floater.string>
+	<floater.string name="AboutTraffic">
+		Pacchetti Perduti: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
+	</floater.string>
+	<tab_container name="about_tab">
+		<panel label="Informazioni" name="support_panel">
+			<button label="Copia negli appunti" name="copy_btn"/>
+		</panel>
+		<panel label="Ringraziamenti" name="credits_panel">
+			<text_editor name="credits_editor">
+				Second Life è offerto da Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl and many others.
 
   Si ringraziano i seguenti residenti per aver contribuito a rendere questa versione la migliore possibile: able whitman, Adeon Writer, adonaira aabye, Aeron Kohime, Agathos Frascati, Aimee Trescothick, Aleric Inglewood, Alissa Sabre, Aminom Marvin, Angela Talamasca, Aralara Rajal, Armin Weatherwax, Ashrilyn Hayashida, Athanasius Skytower, Aura Dirval, Barney Boomslang, Biancaluce Robbiani, Biker Offcourse, Borg Capalini, Bulli Schumann, catherine pfeffer, Chalice Yao, Corre Porta, Court Goodman, Cummere Mayo, Dale Innis, Darien Caldwell, Darjeeling Schoonhoven, Daten Thielt, dimentox travanti, Dirk Talamasca, Drew Dwi, Duckless Vandyke, Elanthius Flagstaff, Electro Burnstein, emiley tomsen, Escort DeFarge, Eva Rau, Ezian Ecksol, Fire Centaur, Fluf Fredriksson, Francisco Koolhoven, Frontera Thor, Frungi Stastny, Gally Young, gearsawe stonecutter, Gigs Taggart, Gordon Wendt, Gudmund Shepherd, Gypsy Paz, Harleen Gretzky, Henri Beauchamp, Inma Rau, Irene Muni, Iskar Ariantho, Jacek Antonelli, JB Kraft, Jessicka Graves, Joeseph Albanese, Joshua Philgarlic, Khyota Wulluf, kirstenlee Cinquetti, Latif Khalifa, Lex Neva, Lilibeth Andree, Lisa Lowe, Lunita Savira, Loosey Demonia, lum pfohl, Marcos Fonzarelli, MartinRJ Fayray, Marusame Arai, Matthew Dowd, Maya Remblai, McCabe Maxsted, Meghan Dench, Melchoir Tokhes, Menos Short, Michelle2 Zenovka, Mimika Oh, Minerva Memel, Mm Alder, Ochi Wolfe, Omei Turnbull, Pesho Replacement, Phantom Ninetails, phoenixflames kukulcan, Polo Gufler, prez pessoa, princess niven, Prokofy Neva, Qie Niangao, Rem Beattie, RodneyLee Jessop, Saijanai Kuhn, Seg Baphomet, Sergen Davies, Shirley Marquez, SignpostMarv Martin, Sindy Tsure, Sira Arbizu, Skips Jigsaw, Sougent Harrop, Spritely Pixel, Squirrel Wood, StarSong Bright, Subversive Writer, Sugarcult Dagger, Sylumm Grigorovich, Tammy Nowotny, Tanooki Darkes, Tayra Dagostino, Theoretical Chemistry, Thickbrick Sleaford, valerie rosewood, Vex Streeter, Vixen Heron, Whoops Babii, Winter Ventura, Xiki Luik, Yann Dufaux, Yina Yao, Yukinoroh Kamachi, Zolute Infinity, Zwagoth Klaar
 
 
 
   Per avere successo nel business, sii coraggioso, sii il primo, sii differente. --Henry Marchant
-	</text_editor>
-	</panel>
-	<panel name="licenses_panel">
-	<text_editor name="credits_editor">
-  3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion
+			</text_editor>
+		</panel>
+		<panel label="Licenze" name="licenses_panel">
+			<text_editor name="credits_editor">
+				3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion
   APR Copyright (C) 2000-2004 The Apache Software Foundation
   cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se)
   DBus/dbus-glib Copyright (C) 2002, 2003  CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc.
@@ -35,10 +75,7 @@
   Tutti i diritti riservati.  Leggi licenses.txt per maggiori dettagli.
 
   Chat vocale Codifica audio: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
-	</text_editor>
-	</panel>
-</tab_container>
-	<string name="you_are_at">
-		Sei a [POSITION]
-	</string>
+			</text_editor>
+		</panel>
+	</tab_container>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_about_land.xml b/indra/newview/skins/default/xui/it/floater_about_land.xml
index f2bd150ad7b..4c82475a6f4 100644
--- a/indra/newview/skins/default/xui/it/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/it/floater_about_land.xml
@@ -1,7 +1,59 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floaterland" title="INFORMAZIONI SUL TERRENO">
+<floater name="floaterland" title="INFO SUL TERRENO">
+	<floater.string name="Minutes">
+		[MINUTES] minuti
+	</floater.string>
+	<floater.string name="Minute">
+		minuto
+	</floater.string>
+	<floater.string name="Seconds">
+		[SECONDS] secondi
+	</floater.string>
+	<floater.string name="Remaining">
+		restante
+	</floater.string>
 	<tab_container name="landtab">
-		<panel label="Generale" name="land_general_panel">
+		<panel label="GENERALE" name="land_general_panel">
+			<panel.string name="new users only">
+				Solo ai nuovi residenti
+			</panel.string>
+			<panel.string name="anyone">
+				A chiunque
+			</panel.string>
+			<panel.string name="area_text">
+				Area
+			</panel.string>
+			<panel.string name="area_size_text">
+				[AREA] m²
+			</panel.string>
+			<panel.string name="auction_id_text">
+				Asta n.: [ID]
+			</panel.string>
+			<panel.string name="need_tier_to_modify">
+				Devi confermare l&apos;acquisto prima di poter modificare il terreno.
+			</panel.string>
+			<panel.string name="group_owned_text">
+				(Posseduta dal gruppo)
+			</panel.string>
+			<panel.string name="profile_text">
+				Profilo...
+			</panel.string>
+			<panel.string name="info_text">
+				Info...
+			</panel.string>
+			<panel.string name="public_text">
+				(pubblica)
+			</panel.string>
+			<panel.string name="none_text">
+				(nessuno)
+			</panel.string>
+			<panel.string name="sale_pending_text">
+				(vendita in corso)
+			</panel.string>
+			<panel.string name="no_selection_text">
+				Nessun appezzamento selezionato.
+Vai al menu Mondo &gt; Informazioni sul terreno oppure seleziona un altro appezzamento per vederne i dettagli.
+			</panel.string>
 			<text name="Name:">
 				Nome:
 			</text>
@@ -11,123 +63,93 @@
 			<text name="LandType">
 				Tipo:
 			</text>
-			<text name="LandTypeText" left="119">
+			<text left="119" name="LandTypeText">
 				Mainland / Homestead
 			</text>
 			<text name="ContentRating" width="115">
 				Categoria di accesso:
 			</text>
-			<text name="ContentRatingText" left="119">
+			<text left="119" name="ContentRatingText">
 				Adult
 			</text>
 			<text name="Owner:">
 				Proprietario:
 			</text>
-			<text name="OwnerText" left="119" width="227">
+			<text left="119" name="OwnerText" width="227">
 				Leyla Linden
 			</text>
-			<button label="Profilo..." label_selected="Profilo..." name="Profile..."/>
 			<text name="Group:">
 				Gruppo:
 			</text>
-			<text left="119" name="GroupText" width="227" />
+			<text left="119" name="GroupText" width="227"/>
 			<button label="Imposta..." label_selected="Imposta..." name="Set..."/>
-			<check_box left="119" label="Permetti cessione al gruppo" name="check deed" tool_tip="Un funzionario del gruppo può cedere questa terra al gruppo stesso cosicchè essa sarà  supportata  dalle terre del gruppo."/>
+			<check_box label="Permetti cessione al gruppo" left="119" name="check deed" tool_tip="Un funzionario del gruppo può cedere questa terra al gruppo stesso cosicchè essa sarà  supportata  dalle terre del gruppo."/>
 			<button label="Cedi..." label_selected="Cedi..." name="Deed..." tool_tip="Puoi solo offrire terra se sei un funzionario del gruppo selezionato."/>
-			<check_box left="119" label="Il proprietario fa un contributo con la cessione" name="check contrib" tool_tip="Quando la terra è ceduta al gruppo, il proprietario precedente contribuisce con abbastanza allocazione di terra per supportarlo."/>
+			<check_box label="Il proprietario fa un contributo con la cessione" left="119" name="check contrib" tool_tip="Quando la terra è ceduta al gruppo, il proprietario precedente contribuisce con abbastanza allocazione di terra per supportarlo."/>
 			<text name="For Sale:">
 				In vendita:
 			</text>
-			<text name="Not for sale." left="119">
+			<text left="119" name="Not for sale.">
 				Non in vendita.
 			</text>
-			<text name="For Sale: Price L$[PRICE]." left="119">
+			<text left="119" name="For Sale: Price L$[PRICE].">
 				Prezzo: [PRICE]L$ ([PRICE_PER_SQM]L$/m²).
 			</text>
-			<text name="SalePending" left="119" width="321"/>
+			<text left="119" name="SalePending" width="321"/>
 			<button bottom="-242" label="Vendi la terra..." label_selected="Vendi la terra..." name="Sell Land..."/>
-			<text name="For sale to" left="119">
+			<text left="119" name="For sale to">
 				In vendita a: [BUYER]
 			</text>
-			<text name="Sell with landowners objects in parcel." width="240" left="119">
+			<text left="119" name="Sell with landowners objects in parcel." width="240">
 				Gli oggetti sono inclusi nella vendita.
 			</text>
-			<text name="Selling with no objects in parcel." width="240" left="119">
+			<text left="119" name="Selling with no objects in parcel." width="240">
 				Gli oggetti non sono inclusi nella vendita.
 			</text>
-			<button bottom="-242" font="SansSerifSmall" left="275" width="165" label="Annulla la vendita del terreno" label_selected="Annulla la vendita del terreno" name="Cancel Land Sale"/>
+			<button bottom="-242" font="SansSerifSmall" label="Annulla la vendita del terreno" label_selected="Annulla la vendita del terreno" left="275" name="Cancel Land Sale" width="165"/>
 			<text name="Claimed:" width="115">
 				Presa in possesso il:
 			</text>
-			<text name="DateClaimText" left="119">
+			<text left="119" name="DateClaimText">
 				Tue Aug 15 13:47:25 2006
 			</text>
 			<text name="PriceLabel">
 				Area:
 			</text>
-			<text name="PriceText" left="119" width="140">
+			<text left="119" name="PriceText" width="140">
 				4048 m²
 			</text>
 			<text name="Traffic:">
 				Traffico:
 			</text>
-			<text name="DwellText" left="119" width="140">
+			<text left="119" name="DwellText" width="140">
 				0
 			</text>
 			<button label="Acquista il terreno..." label_selected="Acquista il terreno..." left="130" name="Buy Land..." width="125"/>
 			<button label="Acquista per il gruppo..." label_selected="Acquista per il gruppo..." name="Buy For Group..."/>
-			<button label="Compra pass..." label_selected="Compra pass..." left="130" width="125" name="Buy Pass..." tool_tip="Un pass ti da un accesso temporaneo in questo territorio."/>
+			<button label="Compra pass..." label_selected="Compra pass..." left="130" name="Buy Pass..." tool_tip="Un pass ti da un accesso temporaneo in questo territorio." width="125"/>
 			<button label="Abbandona la terra..." label_selected="Abbandona la terra..." name="Abandon Land..."/>
 			<button label="Reclama la terra..." label_selected="Reclama la terra..." name="Reclaim Land..."/>
 			<button label="Vendita Linden..." label_selected="Vendita Linden..." name="Linden Sale..." tool_tip="La terra deve essere posseduta, con contenuto impostato, e non già messa in asta."/>
-			<panel.string name="new users only">
-				Solo ai nuovi residenti
-			</panel.string>
-			<panel.string name="anyone">
-				A chiunque
-			</panel.string>
-			<panel.string name="area_text">
-				Area
-			</panel.string>
-			<panel.string name="area_size_text">
-				[AREA] m²
-			</panel.string>
-			<panel.string name="auction_id_text">
-				Asta n.: [ID]
-			</panel.string>
-			<panel.string name="need_tier_to_modify">
-				Devi confermare l&apos;acquisto prima di poter modificare il terreno.
-			</panel.string>
-			<panel.string name="group_owned_text">
-				(Posseduta dal gruppo)
-			</panel.string>
-			<panel.string name="profile_text">
-				Profilo...
-			</panel.string>
-			<panel.string name="info_text">
-				Info...
-			</panel.string>
-			<panel.string name="public_text">
-				(pubblica)
+		</panel>
+		<panel label="COVENANT" name="land_covenant_panel">
+			<panel.string name="can_resell">
+				La terra acquistata in questa regione può essere rivenduta.
 			</panel.string>
-			<panel.string name="none_text">
-				(nessuno)
+			<panel.string name="can_not_resell">
+				La terra acquistata in questa regione non può essere rivenduta.
 			</panel.string>
-			<panel.string name="sale_pending_text">
-				(vendita in corso)
+			<panel.string name="can_change">
+				La terra acquistata in questa regione può essere unita
+o suddivisa.
 			</panel.string>
-			<panel.string name="no_selection_text">
-				Nessun appezzamento selezionato.
-Vai al menu Mondo &gt; Informazioni sul terreno oppure seleziona un altro appezzamento per vederne i dettagli.
+			<panel.string name="can_not_change">
+				La terra acquistata in questa regione non può essere unita
+o suddivisa.
 			</panel.string>
-		</panel>
-		<panel label="Regolamento" name="land_covenant_panel">
 			<text name="estate_section_lbl">
 				Proprietà:
 			</text>
-			<text name="estate_name_lbl">
-				Nome:
-			</text>
 			<text name="estate_name_text">
 				Continente
 			</text>
@@ -146,131 +168,144 @@ Vai al menu Mondo &gt; Informazioni sul terreno oppure seleziona un altro appezz
 			<text name="region_section_lbl">
 				Regione:
 			</text>
-			<text name="region_name_lbl">
-				Nome:
-			</text>
-			<text name="region_name_text" left="125">
+			<text left="125" name="region_name_text">
 				leyla
 			</text>
 			<text name="region_landtype_lbl">
 				Tipo:
 			</text>
-			<text name="region_landtype_text" left="125">
+			<text left="125" name="region_landtype_text">
 				Mainland / Homestead
 			</text>
 			<text name="region_maturity_lbl" width="115">
 				Categoria di accesso:
 			</text>
-			<text name="region_maturity_text" left="125">
+			<text left="125" name="region_maturity_text">
 				Adult
 			</text>
 			<text name="resellable_lbl">
 				Rivendita:
 			</text>
-			<text name="resellable_clause" left="125">
+			<text left="125" name="resellable_clause">
 				La terra in questa regione non può essere rivenduta.
 			</text>
 			<text name="changeable_lbl">
 				Suddividi:
 			</text>
-			<text name="changeable_clause" left="125">
+			<text left="125" name="changeable_clause">
 				La terra in questa regione non può essere unita/suddivisa.
 			</text>
-			<panel.string name="can_resell">
-				La terra acquistata in questa regione può essere rivenduta.
-			</panel.string>
-			<panel.string name="can_not_resell">
-				La terra acquistata in questa regione non può essere rivenduta.
-			</panel.string>
-			<panel.string name="can_change">
-				La terra acquistata in questa regione può essere unita
-o suddivisa.
+		</panel>
+		<panel label="OBJECTS" name="land_objects_panel">
+			<panel.string name="objects_available_text">
+				[COUNT] dei [MAX] ([AVAILABLE] disponibili)
 			</panel.string>
-			<panel.string name="can_not_change">
-				La terra acquistata in questa regione non può essere unita
-o suddivisa.
+			<panel.string name="objects_deleted_text">
+				[COUNT] dei [MAX] ([DELETED] saranno cancellati)
 			</panel.string>
-		</panel>
-		<panel label="Oggetti" name="land_objects_panel">
 			<text name="parcel_object_bonus">
 				Fattore bonus degli oggetti della regione: [BONUS]
 			</text>
 			<text name="Simulator primitive usage:">
-				Oggetti presenti sul simulatore:
+				Uso dei Primative :
 			</text>
-			<text name="objects_available" left="214" width="230" >
+			<text left="214" name="objects_available" width="230">
 				[COUNT] dei [MAX] ([AVAILABLE] dsponibili)
 			</text>
-			<panel.string name="objects_available_text">
-				[COUNT] dei [MAX] ([AVAILABLE] disponibili)
-			</panel.string>
-			<panel.string name="objects_deleted_text">
-				[COUNT] dei [MAX] ([DELETED] saranno cancellati)
-			</panel.string>
 			<text name="Primitives parcel supports:" width="200">
 				Oggetti che il terreno supporta:
 			</text>
-			<text name="object_contrib_text" left="214" width="152">
+			<text left="214" name="object_contrib_text" width="152">
 				[COUNT]
 			</text>
 			<text name="Primitives on parcel:">
 				Oggetti sul terreno:
 			</text>
-			<text name="total_objects_text" left="214"  width="48">
+			<text left="214" name="total_objects_text" width="48">
 				[COUNT]
 			</text>
-			<text name="Owned by parcel owner:" left="14" width="180" >
+			<text left="14" name="Owned by parcel owner:" width="180">
 				Posseduti dal proprietario:
 			</text>
-			<text name="owner_objects_text" left="214"  width="48">
+			<text left="214" name="owner_objects_text" width="48">
 				[COUNT]
 			</text>
 			<button label="Mostra" label_selected="Mostra" name="ShowOwner" right="-135" width="60"/>
-			<button label="Restituisci..." label_selected="Restituisci..." name="ReturnOwner..." tool_tip="Restituisci gli oggetti ai loro proprietari." right="-10" width="119"/>
-			<text name="Set to group:" left="14"  width="180">
+			<button label="Restituisci..." label_selected="Restituisci..." name="ReturnOwner..." right="-10" tool_tip="Restituisci gli oggetti ai loro proprietari." width="119"/>
+			<text left="14" name="Set to group:" width="180">
 				Imposta al gruppo:
 			</text>
-			<text name="group_objects_text" left="214"  width="48">
+			<text left="214" name="group_objects_text" width="48">
 				[COUNT]
 			</text>
 			<button label="Mostra" label_selected="Mostra" name="ShowGroup" right="-135" width="60"/>
-			<button label="Restituisci..." label_selected="Restituisci..." name="ReturnGroup..." tool_tip="Restituisci gli oggetti ai loro proprietari." right="-10" width="119"/>
-			<text name="Owned by others:" left="14"  width="180">
+			<button label="Restituisci..." label_selected="Restituisci..." name="ReturnGroup..." right="-10" tool_tip="Restituisci gli oggetti ai loro proprietari." width="119"/>
+			<text left="14" name="Owned by others:" width="180">
 				Posseduti da altri:
 			</text>
-			<text name="other_objects_text" left="214"  width="48">
+			<text left="214" name="other_objects_text" width="48">
 				[COUNT]
 			</text>
 			<button label="Mostra" label_selected="Mostra" name="ShowOther" right="-135" width="60"/>
-			<button label="Restituisci..." label_selected="Restituisci..." name="ReturnOther..." tool_tip="Restituisci gli oggetti ai loro proprietari." right="-10" width="119"/>
-			<text name="Selected / sat upon:" left="14" width="193">
+			<button label="Restituisci..." label_selected="Restituisci..." name="ReturnOther..." right="-10" tool_tip="Restituisci gli oggetti ai loro proprietari." width="119"/>
+			<text left="14" name="Selected / sat upon:" width="193">
 				Selezionati / sui quali sei sopra:
 			</text>
-			<text name="selected_objects_text" left="214"  width="48">
+			<text left="214" name="selected_objects_text" width="48">
 				[COUNT]
 			</text>
-			<text name="Autoreturn" left="4" width="412">
+			<text left="4" name="Autoreturn" width="412">
 				Autorestituisci gli oggetti degli altri residenti (minuti, 0 per disabilitata):
 			</text>
-			<line_editor name="clean other time" right="-20" />
+			<line_editor name="clean other time" right="-20"/>
 			<text name="Object Owners:" width="150">
 				Proprietari degli oggetti:
 			</text>
-			<button label="Aggiorna Elenco" label_selected="Aggiorna Elenco" name="Refresh List" left="158"/>
-			<button label="Restituisci oggetti..." label_selected="Restituisci oggetti..." name="Return objects..." left="270" width="164"/>
+			<button label="Aggiorna Elenco" label_selected="Aggiorna Elenco" left="158" name="Refresh List" tool_tip="Refresh Object List"/>
+			<button label="Restituisci oggetti..." label_selected="Restituisci oggetti..." left="270" name="Return objects..." width="164"/>
 			<name_list name="owner list">
-				<column label="Tipo" name="type"/>
-				<column label="Nome" name="name"/>
-				<column label="Conta" name="count"/>
-				<column label="Più recenti" name="mostrecent"/>
+				<name_list.columns label="Tipo" name="type"/>
+				<name_list.columns label="Nome" name="name"/>
+				<name_list.columns label="Conta" name="count"/>
+				<name_list.columns label="Più recenti" name="mostrecent"/>
 			</name_list>
 		</panel>
-		<panel label="Opzioni" name="land_options_panel">
+		<panel label="OPZIONI" name="land_options_panel">
+			<panel.string name="search_enabled_tooltip">
+				Fai in modo che la gente trovi questo terreno nei risultati della ricerca.
+			</panel.string>
+			<panel.string name="search_disabled_small_tooltip">
+				Questa opzione è disabilitata perchè questo terreno ha un&apos;area di 128 m² o inferiore.
+Solamente terreni più grandi possono essere abilitati nella ricerca.
+			</panel.string>
+			<panel.string name="search_disabled_permissions_tooltip">
+				Questa opzione è disabilitata perchè tu non puoi modificare le opzioni di questo terreno.
+			</panel.string>
+			<panel.string name="mature_check_mature">
+				Contenuto Mature
+			</panel.string>
+			<panel.string name="mature_check_adult">
+				Contenuto Adult
+			</panel.string>
+			<panel.string name="mature_check_mature_tooltip">
+				Il contenuto o le informazioni del tuo terreno sono considerate Mature.
+			</panel.string>
+			<panel.string name="mature_check_adult_tooltip">
+				Il contenuto o le informazioni del tuo terreno sono considerate Adult.
+			</panel.string>
+			<panel.string name="landing_point_none">
+				(nessuno)
+			</panel.string>
+			<panel.string name="push_restrict_text">
+				Nessuna spinta
+			</panel.string>
+			<panel.string name="push_restrict_region_text">
+				Nessuna spinta (Impostazione regionale)
+			</panel.string>
 			<text name="allow_label">
 				Permetti agli altri residenti di:
 			</text>
 			<check_box label="Modificare il terreno" name="edit land check" tool_tip="Se spuntato, chiunque può terraformare il tuo terreno. E&apos; preferibile lasciare questo quadrato non spuntato, dato che sarai sempre in grado di modificare il tuo terreno."/>
-			<check_box label="Creare dei landmark" name="check landmark"/>
 			<check_box label="Permetti il volo" name="check fly" tool_tip="Se spuntato, gli altri residenti potranno volare sul tuo terreno. Se non spuntato, potranno solamente arrivare in volo o sorvolare il terreno."/>
 			<text name="allow_label2">
 				Creare oggetti:
@@ -292,85 +327,37 @@ o suddivisa.
 			</text>
 			<check_box label="Sicuro (senza danno)" name="check safe" tool_tip="Se spuntato, imposta il terreno su &apos;sicuro&apos;, disabilitando i danni da combattimento. Se non spuntato, viene abilitato il combattimento a morte."/>
 			<check_box label="Nessuna spinta" name="PushRestrictCheck" tool_tip="Previeni i colpi. Selezionare questa opzione può essere utile per prevenire comportamenti dannosi sul tuo terreno."/>
-			<check_box label="Mostra il luogo nella ricerca (30 L$/week) sotto" name="ShowDirectoryCheck" tool_tip="Lascia che questa terra sia vista dagli altri nei risultati di ricerca"/>
-			<panel.string name="search_enabled_tooltip">
-				Fai in modo che la gente trovi questo terreno nei risultati della ricerca.
-			</panel.string>
-			<panel.string name="search_disabled_small_tooltip">
-				Questa opzione è disabilitata perchè questo terreno ha un&apos;area di 128 m² o inferiore.
-Solamente terreni più grandi possono essere abilitati nella ricerca.
-			</panel.string>
-			<panel.string name="search_disabled_permissions_tooltip">
-				Questa opzione è disabilitata perchè tu non puoi modificare le opzioni di questo terreno.
-			</panel.string>
-			<combo_box name="land category with adult" left="282" width="140">
-				<combo_box.item name="item0" label="Tutte le categorie"
-				/>
-				<combo_box.item name="item1" label="Luogo dei Linden"
-				/>
-				<combo_box.item name="item2" label="Adult"
-				/>
-				<combo_box.item name="item3" label="Arte &amp; Cultura"
-				/>
-				<combo_box.item name="item4" label="Affari"
-				/>
-				<combo_box.item name="item5" label="Educazione"
-				/>
-				<combo_box.item name="item6" label="Gioco"
-				/>
-				<combo_box.item name="item7" label="Divertimento"
-				/>
-				<combo_box.item name="item8" label="Accoglienza nuovi residenti"
-				/>
-				<combo_box.item name="item9" label="Parchi &amp; Natura"
-				/>
-				<combo_box.item name="item10" label="Residenziale"
-				/>
-				<combo_box.item name="item11" label="Shopping"
-				/>
-				<combo_box.item name="item12" label="Altro"
-				/>
+			<check_box label="Mostra luogo nel Cerca (L$30/settimana)" name="ShowDirectoryCheck" tool_tip="Lascia che questa terra sia vista dagli altri nei risultati di ricerca"/>
+			<combo_box left="282" name="land category with adult" width="140">
+				<combo_box.item label="Tutte le categorie" name="item0"/>
+				<combo_box.item label="Luogo dei Linden" name="item1"/>
+				<combo_box.item label="Adult" name="item2"/>
+				<combo_box.item label="Arte &amp; Cultura" name="item3"/>
+				<combo_box.item label="Affari" name="item4"/>
+				<combo_box.item label="Educazione" name="item5"/>
+				<combo_box.item label="Gioco" name="item6"/>
+				<combo_box.item label="Divertimento" name="item7"/>
+				<combo_box.item label="Accoglienza nuovi residenti" name="item8"/>
+				<combo_box.item label="Parchi &amp; Natura" name="item9"/>
+				<combo_box.item label="Residenziale" name="item10"/>
+				<combo_box.item label="Shopping" name="item11"/>
+				<combo_box.item label="Altro" name="item12"/>
 			</combo_box>
-			<combo_box name="land category" left="282" width="140">
-				<combo_box.item name="item0" label="Tutte le categorie"
-				/>
-				<combo_box.item name="item1" label="Luogo dei Linden"
-				/>
-				<combo_box.item name="item3" label="Arte &amp; Cultura"
-				/>
-				<combo_box.item name="item4" label="Affari"
-				/>
-				<combo_box.item name="item5" label="Educazione"
-				/>
-				<combo_box.item name="item6" label="Gioco"
-				/>
-				<combo_box.item name="item7" label="Divertimento"
-				/>
-				<combo_box.item name="item8" label="Accoglienza nuovi residenti"
-				/>
-				<combo_box.item name="item9" label="Parchi &amp; Natura"
-				/>
-				<combo_box.item name="item10" label="Residenziale"
-				/>
-				<combo_box.item name="item11" label="Shopping"
-				/>
-				<combo_box.item name="item12" label="Altro"
-				/>
+			<combo_box left="282" name="land category" width="140">
+				<combo_box.item label="Tutte le categorie" name="item0"/>
+				<combo_box.item label="Luogo dei Linden" name="item1"/>
+				<combo_box.item label="Arte &amp; Cultura" name="item3"/>
+				<combo_box.item label="Affari" name="item4"/>
+				<combo_box.item label="Educazione" name="item5"/>
+				<combo_box.item label="Gioco" name="item6"/>
+				<combo_box.item label="Divertimento" name="item7"/>
+				<combo_box.item label="Accoglienza nuovi residenti" name="item8"/>
+				<combo_box.item label="Parchi &amp; Natura" name="item9"/>
+				<combo_box.item label="Residenziale" name="item10"/>
+				<combo_box.item label="Shopping" name="item11"/>
+				<combo_box.item label="Altro" name="item12"/>
 			</combo_box>
-			<button label="?" label_selected="?" name="?" left="427"/>
 			<check_box label="Contenuto Mature" name="MatureCheck" tool_tip=" "/>
-			<panel.string name="mature_check_mature">
-				Contenuto Mature
-			</panel.string>
-			<panel.string name="mature_check_adult">
-				Contenuto Adult
-			</panel.string>
-			<panel.string name="mature_check_mature_tooltip">
-				Il contenuto o le informazioni del tuo terreno sono considerate Mature.
-			</panel.string>
-			<panel.string name="mature_check_adult_tooltip">
-				Il contenuto o le informazioni del tuo terreno sono considerate Adult.
-			</panel.string>
 			<text name="Snapshot:">
 				Fotografia:
 			</text>
@@ -378,39 +365,31 @@ Solamente terreni più grandi possono essere abilitati nella ricerca.
 			<text name="landing_point">
 				Punto di atterraggio: [LANDING]
 			</text>
-			<panel.string name="landing_point_none">
-				(nessuno)
-			</panel.string>
-			<button width="60" label="Imposta" label_selected="Imposta" name="Set" tool_tip="Imposta il punto di atterraggio dove arrivano i visitatori. Impostalo nel punto dove si trova il tuo avatar in questo terreno."/>
-			<button width="60" left="301" label="Elimina" label_selected="Elimina" name="Clear" tool_tip="Elimina punto di atterraggio."/>
+			<button label="Imposta" label_selected="Imposta" name="Set" tool_tip="Imposta il punto di atterraggio dove arrivano i visitatori. Impostalo nel punto dove si trova il tuo avatar in questo terreno." width="60"/>
+			<button label="Elimina" label_selected="Elimina" left="301" name="Clear" tool_tip="Elimina punto di atterraggio." width="60"/>
 			<text name="Teleport Routing: ">
 				Rotte dei teleport:
 			</text>
-			<combo_box width="140" name="landing type" tool_tip="Rotte dei teleport -- seleziona come vuoi organizzare i teleport nella tua terra.">
-				<combo_box.item name="Blocked" label="Bloccati"
-				/>
-				<combo_box.item name="LandingPoint" label="Punto di atterraggio"
-				/>
-				<combo_box.item name="Anywhere" label="Ovunque"
-				/>
+			<combo_box name="landing type" tool_tip="Rotte dei teleport -- seleziona come vuoi organizzare i teleport nella tua terra." width="140">
+				<combo_box.item label="Bloccati" name="Blocked"/>
+				<combo_box.item label="Punto di atterraggio" name="LandingPoint"/>
+				<combo_box.item label="Ovunque" name="Anywhere"/>
 			</combo_box>
-			<panel.string name="push_restrict_text">
-				Nessuna spinta
-			</panel.string>
-			<panel.string name="push_restrict_region_text">
-				Nessuna spinta (Impostazione regionale)
-			</panel.string>
 		</panel>
-		<panel label="Media" name="land_media_panel">
+		<panel label="MEDIA" name="land_media_panel">
 			<text name="with media:" width="85">
 				Tipo di Media:
 			</text>
-			<combo_box  left="97" name="media type" tool_tip="Specifica se l&apos;Url è un video, una pagina web, o un altro tipo di media"/>
+			<combo_box left="97" name="media type" tool_tip="Specifica se l&apos;Url è un video, una pagina web, o un altro tipo di media"/>
 			<text name="at URL:" width="85">
-				URL Media:
+				Home Page:
 			</text>
 			<line_editor left="97" name="media_url"/>
 			<button label="Imposta..." label_selected="Imposta..." name="set_media_url" width="63"/>
+			<text name="CurrentURL:">
+				Pagina attuale:
+			</text>
+			<check_box label="Nascondi indirizzo URL Media" left="94" name="hide_media_url" tool_tip="Abilitando questa opzione nasconderai l&apos;indirizzo url dei media a tutte le persone non autorizzate a vedere le informazioni del terreno. Nota che questo non è disponibile per contenuto di tipo HTML."/>
 			<text name="Description:">
 				Descrizione:
 			</text>
@@ -419,21 +398,14 @@ Solamente terreni più grandi possono essere abilitati nella ricerca.
 				Cambia
 Texture:
 			</text>
-			<texture_picker left="97" label="" name="media texture" tool_tip="Clicca per scegliere un&apos;immagine"/>
+			<texture_picker label="" left="97" name="media texture" tool_tip="Clicca per scegliere un&apos;immagine"/>
 			<text name="replace_texture_help" width="285">
 				(Gli oggetti che hanno questa texture applicata
 mostreranno il video o la pagina web dopo che avrai
 cliccato sulla freccia play.)
 			</text>
-			<text name="Options:">
-				Opzioni
-Media:
-			</text>
-			<check_box left="94" label="Auto ridimensiona" name="media_auto_scale" tool_tip="Spuntando questa opzione, nell&apos;appezzamento il contenuto media si ridimensionerà automaticamente. Potrebbe darsi che appaia un po&apos; più lento e che diminuisca la qualità visiva ma nessun altro riadattamento o allineamento della texture sarà necessario."/>
-			<check_box left="265" label="Fai ripetere il video" name="media_loop" tool_tip="Fai ripetere il video continuamente. Quando il video è finito, reinizierà dal principio."/>
-			<check_box left="94" label="Nascondi indirizzo URL Media" name="hide_media_url" tool_tip="Abilitando questa opzione nasconderai l&apos;indirizzo url dei media a tutte le persone non autorizzate a vedere le informazioni del terreno. Nota che questo non è disponibile per contenuto di tipo HTML."/>
-			<check_box left="265" label="Nascondi indirizzo URL Musica" name="hide_music_url" tool_tip="Abilitando questa opzione nasconderai l&apos;indirizzo url della musica a tutte le persone non autorizzate a vedere le informazioni del terreno."/>
-			<text left="99" width="120" name="media_size" tool_tip="Aumenta grandezza per far vedere meglio i media web, lascia a 0 per impostare il default.">
+			<check_box label="Auto ridimensiona" left="94" name="media_auto_scale" tool_tip="Spuntando questa opzione, nell&apos;appezzamento il contenuto media si ridimensionerà automaticamente. Potrebbe darsi che appaia un po&apos; più lento e che diminuisca la qualità visiva ma nessun altro riadattamento o allineamento della texture sarà necessario."/>
+			<text left="99" name="media_size" tool_tip="Aumenta grandezza per far vedere meglio i media web, lascia a 0 per impostare il default." width="120">
 				Grandezza Media:
 			</text>
 			<spinner left_delta="104" name="media_size_width" tool_tip="Aumenta larghezza per far vedere meglio i media web, lascia a 0 per impostare il default."/>
@@ -441,57 +413,43 @@ Media:
 			<text name="pixels">
 				pixels
 			</text>
-			<text name="MusicURL:">
-				URL Musica:
-			</text>
-			<line_editor left="97" name="music_url"/>
-			<text name="Sound:">
-				Suono:
-			</text>
-			<check_box left="94" label="Limita le gesture e i suoni degli oggetti in questo territorio" name="check sound local"/>
-			<button label="?" label_selected="?" name="?" left="420"/>
-			<text name="Voice settings:">
-				Voice:
+			<text name="Options:">
+				Opzioni
+Media:
 			</text>
-			<check_box left="94" label="Abilita il Voice" name="parcel_enable_voice_channel"/>
-			<check_box left="94" label="Abilita il Voice (stabilito su tutta la proprietà)" name="parcel_enable_voice_channel_is_estate_disabled"/>
-			<check_box left="114" label="Limita il voice a questa porzione di terreno" name="parcel_enable_voice_channel_parcel"/>
+			<check_box label="Fai ripetere il video" left="265" name="media_loop" tool_tip="Fai ripetere il video continuamente. Quando il video è finito, reinizierà dal principio."/>
+		</panel>
+		<panel label="SUONO" name="land_audio_panel">
+			<check_box label="Attiva Voice" name="parcel_enable_voice_channel"/>
+			<check_box label="Attiva Voice (stabilito dalla Proprietà)" name="parcel_enable_voice_channel_is_estate_disabled"/>
 		</panel>
-		<panel label="Accesso" name="land_access_panel">
+		<panel label="ACCESSO" name="land_access_panel">
+			<panel.string name="access_estate_defined">
+				(Definito dalla Proprietà)
+			</panel.string>
+			<panel.string name="estate_override">
+				Una o più di queste impostazioni sono già impostate a livello regionale
+			</panel.string>
 			<text name="Limit access to this parcel to:">
 				Accesso a questo terreno
 			</text>
-			<check_box label="Permetti accesso pubblico" name="public_access"/>
+			<check_box label="Permetti Accesso Pubblico [MATURITY]" name="public_access"/>
 			<text name="Only Allow">
-				Blocca l&apos;accesso con Residenti:
+				Accesso ristretto ai Residenti verificati con:
 			</text>
-			<check_box label="Che non hanno dato le proprie informazioni di pagamento alla Linden Lab" name="limit_payment" tool_tip="Manda via residenti non identificati."/>
-			<check_box label="Che non sono adulti con età verificata" name="limit_age_verified" tool_tip="Manda via residenti che non hanno verificato la loro età. Guarda il sito support.secondlife.com per ulteriori informazioni."/>
-			<panel.string name="estate_override">
-				Una o più di queste impostazioni sono già impostate a livello regionale
-			</panel.string>
+			<check_box label="Informazioni di pagamento on File [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="Manda via residenti non identificati."/>
+			<check_box label="Verifica dell&apos;età [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="Espelli residenti che non hanno verificato l&apos;età. Vedi [SUPPORT_SITE] per maggiori informazioni."/>
 			<check_box label="Permetti accesso al gruppo: [GROUP]" name="GroupCheck" tool_tip="Imposta il gruppo nel pannello generale."/>
 			<check_box label="Vendi pass a:" name="PassCheck" tool_tip="Permetti in questo terreno l&apos;accesso temporaneo"/>
 			<combo_box name="pass_combo">
-				<combo_box.item name="Anyone" label="Chiunque"
-				/>
-				<combo_box.item name="Group" label="Gruppo"
-				/>
+				<combo_box.item label="Chiunque" name="Anyone"/>
+				<combo_box.item label="Gruppo" name="Group"/>
 			</combo_box>
 			<spinner label="Prezzo in L$:" name="PriceSpin"/>
 			<spinner label="Ore di accesso:" name="HoursSpin"/>
-			<text label="Permetti sempre" name="AllowedText">
-				Residenti permessi
-			</text>
-			<name_list name="AccessList" tool_tip="([LISTED] in elenco, [MAX] massimo)"/>
-			<button label="Aggiungi..." label_selected="Aggiungi..." name="add_allowed"/>
-			<button label="Rimuovi" label_selected="Rimuovi" name="remove_allowed"/>
-			<text label="Blocca" name="BanCheck">
-				Residenti bloccati
-			</text>
-			<name_list name="BannedList" tool_tip="([LISTED] in elenco, [MAX] massimo)"/>
-			<button label="Aggiungi..." label_selected="Aggiungi..." name="add_banned"/>
-			<button label="Rimuovi" label_selected="Rimuovi" name="remove_banned"/>
+			<panel name="Allowed_layout_panel">
+				<name_list name="AccessList" tool_tip="([LISTED] in lista, [MAX] max)"/>
+			</panel>
 		</panel>
 	</tab_container>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_activeim.xml b/indra/newview/skins/default/xui/it/floater_activeim.xml
new file mode 100644
index 00000000000..d19882fa488
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_activeim.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_activeim" title="ATTIVA IM"/>
diff --git a/indra/newview/skins/default/xui/it/floater_animation_preview.xml b/indra/newview/skins/default/xui/it/floater_animation_preview.xml
index b6d6148afb2..74a994825db 100644
--- a/indra/newview/skins/default/xui/it/floater_animation_preview.xml
+++ b/indra/newview/skins/default/xui/it/floater_animation_preview.xml
@@ -1,70 +1,177 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="Animation Preview" title="">
+	<floater.string name="failed_to_initialize">
+		Impossibile inizializzare la sequenza
+	</floater.string>
+	<floater.string name="anim_too_long">
+		Il file dell&apos;animazione è lungo [LENGTH] secondi.
+
+La lunghezza massima è [MAX_LENGTH] secondi.
+	</floater.string>
+	<floater.string name="failed_file_read">
+		Impossibile leggere il file dell&apos;animazione.
+
+[STATUS]
+	</floater.string>
+	<floater.string name="E_ST_OK">
+		Ok
+	</floater.string>
+	<floater.string name="E_ST_EOF">
+		Fine prematura del file.
+	</floater.string>
+	<floater.string name="E_ST_NO_CONSTRAINT">
+		Impossibile leggere la definizione del vincolo.
+	</floater.string>
+	<floater.string name="E_ST_NO_FILE">
+		Non può aprire il file BVH.
+	</floater.string>
+	<floater.string name="E_ST_NO_HIER">
+		HIERARCHY header non valido.
+	</floater.string>
+	<floater.string name="E_ST_NO_JOINT">
+		Impossibile trovare la RADICE o UNIONE. ????????????
+	</floater.string>
+	<floater.string name="E_ST_NO_NAME">
+		Impossibile trovare il nome MISTO. ??????
+	</floater.string>
+	<floater.string name="E_ST_NO_OFFSET">
+		Impossibile trovare OFFSET.
+	</floater.string>
+	<floater.string name="E_ST_NO_CHANNELS">
+		Impossibile trovare CHANNELS. ?????
+	</floater.string>
+	<floater.string name="E_ST_NO_ROTATION">
+		Impossibile ottenere un ordine di rotazione.
+	</floater.string>
+	<floater.string name="E_ST_NO_AXIS">
+		Rotazione dell&apos;asse non disponibile.
+	</floater.string>
+	<floater.string name="E_ST_NO_MOTION">
+		Impossibile trovare il GESTO.
+	</floater.string>
+	<floater.string name="E_ST_NO_FRAMES">
+		Impossibile ottenere il numero dei frames.
+	</floater.string>
+	<floater.string name="E_ST_NO_FRAME_TIME">
+		Impossibile ottenere il tempo del frame.
+	</floater.string>
+	<floater.string name="E_ST_NO_POS">
+		Impossibile ottenre una posizione dei valori.
+	</floater.string>
+	<floater.string name="E_ST_NO_ROT">
+		Impossibile ottenere i valori di rotazione.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_FILE">
+		Impossibile aprire la traduzione del file.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_HEADER">
+		Impossibile leggere l&apos;intestazione della traduzione.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_NAME">
+		Impossibile leggere i nomi della traduzione.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_IGNORE">
+		Impossibile leggere la traduzione ignora il valore. ?????
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_RELATIVE">
+		Impossibile leggere la traduzione del valore relativo.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_OUTNAME">
+		Cannot read translation outname value.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_MATRIX">
+		Impossibile leggere la matrice di traduzione.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_MERGECHILD">
+		Impossibile unire il nome del bambino.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_MERGEPARENT">
+		Impossibile unire il nome del genitore.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_PRIORITY">
+		Impossibile ottenre il valore di priorità.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_LOOP">
+		Impossibile ottenere il valore di loop.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_EASEIN">
+		Impossibile essere in agio nei valori. ?????????
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_EASEOUT">
+		Cannot get ease Out values.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_HAND">
+		Impossibile ottenere il valore morph della mano.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_EMOTE">
+		Impossibile leggere il nome emote.
+	</floater.string>
 	<text name="name_label">
 		Nome:
 	</text>
 	<text name="description_label">
 		Descrizione:
 	</text>
-	<spinner label_width="72" width="110" label="Priorità" name="priority" tool_tip="Controlla quali altre animazioni possono essere annullate da questa animazione."/>
-	<check_box label="Ciclica" name="loop_check" tool_tip="Rende questa animazione ciclica."/>
-	<spinner label="In(%)" name="loop_in_point" tool_tip="Imposta il punto nell&apos;animazione in cui ritornare dopo ogni ciclo."/>
-	<spinner label="Out(%)" name="loop_out_point" tool_tip="Imposta il punto nell&apos;animazione in cui terminare dopo ogni ciclo."/>
+	<spinner label="Priorità" label_width="72" name="priority" tool_tip="Controlla quali altre animazioni possono prevalere su questa animazione" width="110"/>
+	<check_box label="Ciclica" name="loop_check" tool_tip="Rendi questa animazione in loop"/>
+	<spinner label="In(%)" name="loop_in_point" tool_tip="Imposta il momento nel quale l&apos;animazione inizia il loop"/>
+	<spinner label="Out(%)" name="loop_out_point" tool_tip="Imposta il momento nel quale l&apos;animazione ferma il loop"/>
 	<text name="hand_label">
 		Postura della mano
 	</text>
-	<combo_box left_delta="100"  width="184" name="hand_pose_combo" tool_tip="Controlla cosa fanno le mani durante l&apos;animazione.">
-		<combo_box.item name="Spread" label="Aperte"/>
-		<combo_box.item name="Relaxed" label="Rilassate"/>
-		<combo_box.item name="PointBoth" label="Entrambe indicano"/>
-		<combo_box.item name="Fist" label="Pugno"/>
-		<combo_box.item name="RelaxedLeft" label="Sinistra Rilassata"/>
-		<combo_box.item name="PointLeft" label="Sinistra Indica"/>
-		<combo_box.item name="FistLeft" label="Sinistra a pugno"/>
-		<combo_box.item name="RelaxedRight" label="Destra rilassata"/>
-		<combo_box.item name="PointRight" label="Destra Indica"/>
-		<combo_box.item name="FistRight" label="Destra a Pugno"/>
-		<combo_box.item name="SaluteRight" label="Destra Saluta"/>
-		<combo_box.item name="Typing" label="Digitano"/>
-		<combo_box.item name="PeaceRight" label="Destra &apos;segno di pace&apos;"/>
+	<combo_box left_delta="100" name="hand_pose_combo" tool_tip="Controlla ciò che fanno le mani durante l&apos;animazione" width="184">
+		<combo_box.item label="Stendi" name="Spread"/>
+		<combo_box.item label="Rilassato" name="Relaxed"/>
+		<combo_box.item label="indica entrambi" name="PointBoth"/>
+		<combo_box.item label="Pugno" name="Fist"/>
+		<combo_box.item label="Sinistra rilassata" name="RelaxedLeft"/>
+		<combo_box.item label="Indica sinistra" name="PointLeft"/>
+		<combo_box.item label="Pugno sinistra" name="FistLeft"/>
+		<combo_box.item label="Destra rilassata" name="RelaxedRight"/>
+		<combo_box.item label="Indica destra" name="PointRight"/>
+		<combo_box.item label="Pugno Destro" name="FistRight"/>
+		<combo_box.item label="Saluta Destra" name="SaluteRight"/>
+		<combo_box.item label="Scrivendo" name="Typing"/>
+		<combo_box.item label="Pace Destra" name="PeaceRight"/>
 	</combo_box>
 	<text name="emote_label">
 		Espressione
 	</text>
-	<combo_box left_delta="100" width="184" name="emote_combo" tool_tip="Controlla l&apos;espressione del viso durante l&apos;animazione.">
-		<combo_box.item name="[None]" label="None]"/>
-		<combo_box.item name="Aaaaah" label="Aaaaah"/>
-		<combo_box.item name="Afraid" label="Paura"/>
-		<combo_box.item name="Angry" label="Rabbia"/>
-		<combo_box.item name="BigSmile" label="Sorriso Aperto"/>
-		<combo_box.item name="Bored" label="Noia"/>
-		<combo_box.item name="Cry" label="Pianto"/>
-		<combo_box.item name="Disdain" label="Sdegno"/>
-		<combo_box.item name="Embarrassed" label="Imbarazzo"/>
-		<combo_box.item name="Frown" label="Accigliato"/>
-		<combo_box.item name="Kiss" label="Bacio"/>
-		<combo_box.item name="Laugh" label="Risata"/>
-		<combo_box.item name="Plllppt" label="Linguaccia"/>
-		<combo_box.item name="Repulsed" label="Repulsione"/>
-		<combo_box.item name="Sad" label="Tristezza"/>
-		<combo_box.item name="Shrug" label="Spallucce"/>
-		<combo_box.item name="Smile" label="Sorriso"/>
-		<combo_box.item name="Surprise" label="Sorpresa"/>
-		<combo_box.item name="Wink" label="Ammiccamento"/>
-		<combo_box.item name="Worry" label="Preoccupazione"/>
+	<combo_box left_delta="100" name="emote_combo" tool_tip="Controlla ciò che fà il viso durante l&apos;animazione" width="184">
+		<combo_box.item label="(Nessuno)" name="[None]"/>
+		<combo_box.item label="Aaaaah" name="Aaaaah"/>
+		<combo_box.item label="Spavento" name="Afraid"/>
+		<combo_box.item label="Arrabbiato" name="Angry"/>
+		<combo_box.item label="Grande sorriso" name="BigSmile"/>
+		<combo_box.item label="Annoiato" name="Bored"/>
+		<combo_box.item label="Pianto" name="Cry"/>
+		<combo_box.item label="Disdegno" name="Disdain"/>
+		<combo_box.item label="Imbarazzato" name="Embarrassed"/>
+		<combo_box.item label="Accigliato ?????" name="Frown"/>
+		<combo_box.item label="Bacio" name="Kiss"/>
+		<combo_box.item label="Risata" name="Laugh"/>
+		<combo_box.item label="Plllppt" name="Plllppt"/>
+		<combo_box.item label="Repulsione" name="Repulsed"/>
+		<combo_box.item label="Triste" name="Sad"/>
+		<combo_box.item label="Scrollata di spalle" name="Shrug"/>
+		<combo_box.item label="Sorriso" name="Smile"/>
+		<combo_box.item label="Stupore" name="Surprise"/>
+		<combo_box.item label="Occhiolino" name="Wink"/>
+		<combo_box.item label="Preoccupato" name="Worry"/>
 	</combo_box>
 	<text name="preview_label" width="250">
 		Vedi anteprima mentre
 	</text>
-	<combo_box left_delta="154" width="130" name="preview_base_anim" tool_tip="Da usarsi per controllare il comportamento dell&apos;animazione mentre l&apos;avatar svolge azioni abituali.">
-		<combo_box.item name="Standing" label="In piedi"/>
-		<combo_box.item name="Walking" label="Passeggia"/>
-		<combo_box.item name="Sitting" label="Siede"/>
-		<combo_box.item name="Flying" label="Vola"/>
+	<combo_box left_delta="154" name="preview_base_anim" tool_tip="Da usarsi per controllare il comportamento dell&apos;animazione mentre l&apos;avatar svolge azioni abituali." width="130">
+		<combo_box.item label="In piedi" name="Standing"/>
+		<combo_box.item label="Camminando" name="Walking"/>
+		<combo_box.item label="Sedendo" name="Sitting"/>
+		<combo_box.item label="Volando" name="Flying"/>
 	</combo_box>
-	<spinner label_width="125" width="192" label="Avvio lento (sec)" name="ease_in_time" tool_tip="Tempo (in secondi) in cui le animazioni iniziano a sfumare."/>
-	<spinner bottom_delta="-20"  label_width="125" left="10"  width="192" label="Arresto lento (sec)" name="ease_out_time" tool_tip="Tempo (in secondi) in cui le animazioni iniziano a sfumare."/>
-	<button bottom_delta="-32" name="play_btn" tool_tip="Attiva/sospendi l&apos;animazione."/>
+	<spinner label="Avvio lento (sec)" label_width="125" name="ease_in_time" tool_tip="Tempo (in seconds) oltre il quale le animazioni si miscelano" width="192"/>
+	<spinner bottom_delta="-20" label="Arresto lento (sec)" label_width="125" left="10" name="ease_out_time" tool_tip="Tempo (in seconds) oltre il quale le animazioni terminano di miscelarsi" width="192"/>
+	<button bottom_delta="-32" name="play_btn" tool_tip="Riproduci la tua animazione"/>
+	<button name="pause_btn" tool_tip="La tua animazione in Pause"/>
 	<button label="" name="stop_btn" tool_tip="Ferma la riproduzione dell&apos;animazione"/>
 	<text name="bad_animation_text">
 		Impossibile leggere il file dell&apos;animazione.
@@ -72,19 +179,6 @@
 Raccomandiamo file di tipo BVH esportati da
 Poser 4.
 	</text>
-	<button label="Annulla" name="cancel_btn"/>
 	<button label="Importa ([AMOUNT]L$)" name="ok_btn"/>
-	<string name="failed_to_initialize">
-		Impossibile inizializzare la sequenza
-	</string>
-	<string name="anim_too_long">
-		Il file dell&apos;animazione è lungo [LENGTH] secondi.
-
-La lunghezza massima è [MAX_LENGTH] secondi.
-	</string>
-	<string name="failed_file_read">
-		Impossibile leggere il file dell&apos;animazione.
-
-[STATUS]
-	</string>
+	<button label="Annulla" name="cancel_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_auction.xml b/indra/newview/skins/default/xui/it/floater_auction.xml
index bba76a83cc6..aa7b79fc506 100644
--- a/indra/newview/skins/default/xui/it/floater_auction.xml
+++ b/indra/newview/skins/default/xui/it/floater_auction.xml
@@ -1,9 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_auction" title="INIZIA A VENDERE TERRA LINDEN">
-	<check_box label="Includi barriere di selezione gialle" name="fence_check"/>
-	<button label="Fotografia" label_selected="Fotografia" name="snapshot_btn"/>
-	<button label="OK" label_selected="OK" name="ok_btn"/>
-	<string name="already for sale">
+<floater name="floater_auction" title="INIZIA LA VENDITA DI TERRA LINDEN">
+	<floater.string name="already for sale">
 		Non puoi mettere in asta terreni che sono già in vendita.
-	</string>
+	</floater.string>
+	<check_box initial_value="true" label="Includi barriere di selezione gialle" name="fence_check"/>
+	<button label="Fotografia" label_selected="Fotografia" name="snapshot_btn"/>
+	<button label="Vendi a chiunque" label_selected="Vendi a chiunque" name="sell_to_anyone_btn"/>
+	<button label="Annulla le Impostazioni" label_selected="Annulla le Impostazioni" name="reset_parcel_btn"/>
+	<button label="Inizia l&apos;Asta" label_selected="Inizia l&apos;Asta" name="start_auction_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_avatar_picker.xml b/indra/newview/skins/default/xui/it/floater_avatar_picker.xml
index 89a61eeca8c..e583d0b8b57 100644
--- a/indra/newview/skins/default/xui/it/floater_avatar_picker.xml
+++ b/indra/newview/skins/default/xui/it/floater_avatar_picker.xml
@@ -1,42 +1,47 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="avatarpicker" title="SCEGLI RESIDENTE">
+	<floater.string name="not_found">
+		&apos;[TEXT]&apos; non trovato
+	</floater.string>
+	<floater.string name="no_one_near">
+		Nessuno vicino
+	</floater.string>
+	<floater.string name="no_results">
+		Nessun risultato
+	</floater.string>
+	<floater.string name="searching">
+		Ricerca...
+	</floater.string>
+	<string label="Seleziona" label_selected="Seleziona" name="Select">
+		Seleziona
+	</string>
+	<string name="Close">
+		Chiudi
+	</string>
 	<tab_container name="ResidentChooserTabs">
 		<panel label="Cerca" name="SearchPanel">
 			<text name="InstructSearchResidentName">
-				Scrivi parte del nome del residente:
+				Scrivi parte del nome di una persona:
 			</text>
-			<button label="Trova" label_selected="Trova" name="Find"/>
+			<button label="Vai" label_selected="Vai" name="Find"/>
 		</panel>
-		<panel label="Biglietti da visita" name="CallingCardsPanel">
-			<text name="InstructSelectCallingCard">
-				Seleziona un biglietto da visita:
+		<panel label="Amici" name="FriendsPanel">
+			<text name="InstructSelectFriend">
+				Seleziona una persona:
 			</text>
 		</panel>
 		<panel label="Vicino a me" name="NearMePanel">
 			<text name="InstructSelectResident">
-				Seleziona un residente
-nelle vicinanze:
+				Seleziona una persona nei dintorni:
 			</text>
-			<button font="SansSerifSmall" left_delta="6" width="110" label="Aggiorna la lista" label_selected="Aggiorna l&apos;elenco" name="Refresh"/>
-			<slider label="Range" name="near_me_range" bottom_delta="-36"/>
+			<slider bottom_delta="-36" label="Range" name="near_me_range"/>
 			<text name="meters">
 				Metri
 			</text>
-		<scroll_list bottom_delta="-169" height="159" name="NearMe"  />
+			<button font="SansSerifSmall" label="Aggiorna la lista" label_selected="Aggiorna l&apos;elenco" left_delta="6" name="Refresh" width="110"/>
+			<scroll_list bottom_delta="-169" height="159" name="NearMe"/>
 		</panel>
 	</tab_container>
-	<button label="Seleziona" label_selected="Seleziona" name="Select"/>
-	<button label="Annulla" label_selected="Annulla" name="Cancel"/>
-	<string name="not_found">
-		&apos;[TEXT]&apos; non trovato
-	</string>
-	<string name="no_one_near">
-		Nessuno è vicino
-	</string>
-	<string name="no_results">
-		Nessun risultato
-	</string>
-	<string name="searching">
-		Ricerca...
-	</string>
+	<button label="OK" label_selected="OK" name="ok_btn"/>
+	<button label="Cancella" label_selected="Cancella" name="cancel_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_avatar_textures.xml b/indra/newview/skins/default/xui/it/floater_avatar_textures.xml
index f55b23af355..e5ce07f3000 100644
--- a/indra/newview/skins/default/xui/it/floater_avatar_textures.xml
+++ b/indra/newview/skins/default/xui/it/floater_avatar_textures.xml
@@ -1,30 +1,32 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="avatar_texture_debug" title="TEXTURE DELL&apos;AVATAR">
-	<text name="baked_label">
-		Texture Visualizzate
-	</text>
+<floater name="avatar_texture_debug" title="AVATAR TEXTURES">
+	<floater.string name="InvalidAvatar">
+		AVATAR NON VALIDO
+	</floater.string>
 	<text name="composite_label">
 		Texture Composite
 	</text>
-	<texture_picker label="Testa" name="baked_head"/>
-	<texture_picker label="Trucco" name="head_bodypaint"/>
-	<texture_picker label="Capelli" name="hair"/>
 	<button label="Deposito" label_selected="Deposito" name="Dump"/>
-	<texture_picker label="Occhi" name="baked_eyes"/>
-	<texture_picker label="Occhio" name="eye_texture"/>
-	<texture_picker label="Parte superiore del corpo" name="baked_upper_body"/>
-	<texture_picker label="Tatuaggio parte superiore del corpo" name="upper_bodypaint"/>
-	<texture_picker label="Canottiera" name="undershirt"/>
-	<texture_picker label="Guanti" name="gloves"/>
-	<texture_picker label="Maglietta" name="shirt"/>
-	<texture_picker label="Giacca, parte superiore" name="upper_jacket"/>
-	<texture_picker label="Parte inferiore del corpo" name="baked_lower_body"/>
-	<texture_picker label="Tatuaggio parte inferiore del corpo" name="lower_bodypaint"/>
-	<texture_picker label="Mutande" name="underpants"/>
-	<texture_picker label="Calze" name="socks"/>
-	<texture_picker label="Scarpe" name="shoes"/>
-	<texture_picker label="Pantaloni" name="pants"/>
-	<texture_picker label="Giacca" name="jacket"/>
-	<texture_picker label="Gonna" name="baked_skirt"/>
-	<texture_picker label="Gonna" name="skirt_texture"/>
+	<texture_picker label="Capelli" name="hair_grain"/>
+	<texture_picker label="Capelli Alpha" name="hair_alpha"/>
+	<texture_picker label="Trucco" name="head_bodypaint"/>
+	<texture_picker label="Testa Alpha" name="head_alpha"/>
+	<texture_picker label="Tatuaggio Testa" name="head_tattoo"/>
+	<texture_picker label="Occhio" name="eyes_iris"/>
+	<texture_picker label="Occhi Alpha" name="eyes_alpha"/>
+	<texture_picker label="Bodypaint Corpo Superiore" name="upper_bodypaint"/>
+	<texture_picker label="Maglietta intima" name="upper_undershirt"/>
+	<texture_picker label="Guanti" name="upper_gloves"/>
+	<texture_picker label="Camicia" name="upper_shirt"/>
+	<texture_picker label="Giacca superiore" name="upper_jacket"/>
+	<texture_picker label="Alpha Superiore" name="upper_alpha"/>
+	<texture_picker label="Tatuaggio superiore" name="upper_tattoo"/>
+	<texture_picker label="Bodypaint Corpo Inferiore" name="lower_bodypaint"/>
+	<texture_picker label="Slip" name="lower_underpants"/>
+	<texture_picker label="Calze" name="lower_socks"/>
+	<texture_picker label="Scarpe" name="lower_shoes"/>
+	<texture_picker label="Pantaloni" name="lower_pants"/>
+	<texture_picker label="Giacca" name="lower_jacket"/>
+	<texture_picker label="Alpha Inferiore" name="lower_alpha"/>
+	<texture_picker label="Tatuaggio basso" name="lower_tattoo"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_beacons.xml b/indra/newview/skins/default/xui/it/floater_beacons.xml
index 126c03e8556..8fd69d811d8 100644
--- a/indra/newview/skins/default/xui/it/floater_beacons.xml
+++ b/indra/newview/skins/default/xui/it/floater_beacons.xml
@@ -1,15 +1,21 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="beacons" title="SEGNALI LUMINOSI">
+<floater name="beacons" title="BEACONS">
 	<panel name="beacons_panel">
-		<check_box label="Oggetti scriptati con solo &apos;tocca&apos; abilitato" name="touch_only"/>
-		<check_box label="Oggetti scriptati" name="scripted"/>
-		<check_box label="Oggetti fisici" name="physical"/>
-		<check_box label="Sorgenti di suoni" name="sounds"/>
-		<check_box label="Sorgenti di particelle" name="particles"/>
-		<check_box label="Visualizza l&apos;evidenziato" name="highlights"/>
-		<check_box label="Visualizza segnali" name="beacons"/>
-		<text name="beacon_width_label">
-			Ampiezza segnali:
+		<text name="label_show">
+			Mostra:
 		</text>
+		<check_box label="Beacons" name="beacons"/>
+		<check_box label="Highlights" name="highlights"/>
+		<text name="beacon_width_label" tool_tip="Beacon width">
+			Larghezza:
+		</text>
+		<text name="label_objects">
+			Per questi oggetti:
+		</text>
+		<check_box label="Fisico" name="physical"/>
+		<check_box label="Scripted" name="scripted"/>
+		<check_box label="Tocca solo" name="touch_only"/>
+		<check_box label="Fonte del Suono" name="sounds"/>
+		<check_box label="Fonte delle Particle" name="particles"/>
 	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_build_options.xml b/indra/newview/skins/default/xui/it/floater_build_options.xml
index c6ee0f79176..233efef19bb 100644
--- a/indra/newview/skins/default/xui/it/floater_build_options.xml
+++ b/indra/newview/skins/default/xui/it/floater_build_options.xml
@@ -1,8 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="build options floater" title="OPZIONI DELLA GRIGLIA">
-	<spinner label="Unità di misura della griglia (metri)" name="GridResolution" width="250" label_width="192"/>
-	<spinner label="Estensione della griglia (metri)" name="GridDrawSize" width="250" label_width="192"/>
-	<check_box label="Abilita sotto-unità di movimento" name="GridSubUnit"/>
-	<check_box label="Mostra piani d&apos;intersezione" name="GridCrossSection"/>
+<floater name="build options floater" title="GRID OPTIONS">
+	<spinner label="Grid Units (meters)" label_width="192" name="GridResolution" width="250"/>
+	<spinner label="Estensione della griglia (metri)" label_width="192" name="GridDrawSize" width="250"/>
+	<check_box label="Usa allineamento sub-unitario" name="GridSubUnit"/>
+	<check_box label="Guarda le cross-sections" name="GridCrossSection"/>
+	<text name="grid_opacity_label" tool_tip="Opacità della Grid">
+		Opacità:
+	</text>
 	<slider label="Trasparenza della griglia" name="GridOpacity" width="250"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_bulk_perms.xml b/indra/newview/skins/default/xui/it/floater_bulk_perms.xml
index 7f5b68279e9..26890dc2093 100644
--- a/indra/newview/skins/default/xui/it/floater_bulk_perms.xml
+++ b/indra/newview/skins/default/xui/it/floater_bulk_perms.xml
@@ -1,44 +1,54 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floaterbulkperms" title="MODIFICA IN MASSA I PERMESSI DEL CONTENUTO">
-	<text name="applyto">
-		Tipi di contenuto
-	</text>
+<floater name="floaterbulkperms" title="MODIFICA PERMESSI DEL CONTENUTO">
+	<floater.string name="nothing_to_modify_text">
+		La selezione non contiene nessun contenuto modificabile.
+	</floater.string>
+	<floater.string name="status_text">
+		Impostazione permessi su [NAME]
+	</floater.string>
+	<floater.string name="start_text">
+		Avvio richiesta di modifica dei permessi...
+	</floater.string>
+	<floater.string name="done_text">
+		Conclusa richiesta di modifica dei permessi.
+	</floater.string>
 	<check_box label="Animazioni" name="check_animation"/>
+	<icon name="icon_animation" tool_tip="Animazioni"/>
 	<check_box label="Parti del corpo" name="check_bodypart"/>
+	<icon name="icon_bodypart" tool_tip="Parti del Corpo"/>
 	<check_box label="Abiti" name="check_clothing"/>
+	<icon name="icon_clothing" tool_tip="Vestiario"/>
 	<check_box label="Gesture" name="check_gesture"/>
-	<check_box label="Landmark" name="check_landmark"/>
+	<icon name="icon_gesture" tool_tip="Gestures"/>
 	<check_box label="Notecard" name="check_notecard"/>
+	<icon name="icon_notecard" tool_tip="Notecards"/>
 	<check_box label="Oggetti" name="check_object"/>
+	<icon name="icon_object" tool_tip="Oggetti"/>
 	<check_box label="Script" name="check_script"/>
+	<icon name="icon_script" tool_tip="Scripts"/>
 	<check_box label="Suoni" name="check_sound"/>
+	<icon name="icon_sound" tool_tip="Suoni"/>
 	<check_box label="Texture" name="check_texture"/>
-	<button label="Spunta tutti" label_selected="Tutti" name="check_all"/>
-	<button label="Togli la spunta a tutti" label_selected="Nessuno" name="check_none"/>
+	<icon name="icon_texture" tool_tip="Textures"/>
+	<button label="√ Tutto" label_selected="Tutti" name="check_all"/>
+	<button label="Pulisci" label_selected="Nessuno" name="check_none"/>
 	<text name="newperms">
-		Nuovi permessi
+		Nuovo Permessi del Contenuto
+	</text>
+	<text name="GroupLabel">
+		Gruppo:
 	</text>
-	<check_box label="Condividi con il gruppo" name="share_with_group"/>
-	<check_box label="Permetti a tutti di copiare" name="everyone_copy"/>
+	<check_box label="Condividi" name="share_with_group"/>
+	<text name="AnyoneLabel">
+		Chiunque:
+	</text>
+	<check_box label="Copia" name="everyone_copy"/>
 	<text name="NextOwnerLabel">
-		Il prossimo proprietario può:
+		Prossimo proprietario:
 	</text>
 	<check_box label="Modificare" name="next_owner_modify"/>
 	<check_box label="Copiare" name="next_owner_copy"/>
-	<check_box label="Rivendere/Regalare" name="next_owner_transfer"/>
-	<button label="Aiuto" name="help"/>
-	<button label="Applica" name="apply"/>
-	<button label="Chiudi" name="close"/>
-	<string name="nothing_to_modify_text">
-		La selezione non contiene nessun contenuto modificabile.
-	</string>
-	<string name="status_text">
-		Impostazione permessi su [NAME]
-	</string>
-	<string name="start_text">
-		Avvio richiesta di modifica dei permessi...
-	</string>
-	<string name="done_text">
-		Conclusa richiesta di modifica dei permessi.
-	</string>
+	<check_box initial_value="true" label="Transfer" name="next_owner_transfer" tool_tip="Prossimo proprietario può donare o rivendere questo oggetto"/>
+	<button label="Ok" name="apply"/>
+	<button label="Cancella" name="close"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_bumps.xml b/indra/newview/skins/default/xui/it/floater_bumps.xml
index 23fa1a41a69..d9dd3f26d72 100644
--- a/indra/newview/skins/default/xui/it/floater_bumps.xml
+++ b/indra/newview/skins/default/xui/it/floater_bumps.xml
@@ -1,21 +1,24 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="floater_bumps" title="COLLISIONI, SPINTE E COLPI">
-	<string name="none_detected">
+	<floater.string name="none_detected">
 		Nessuno rilevato
-	</string>
-	<string name="bump">
+	</floater.string>
+	<floater.string name="bump">
 		[TIME]  [FIRST] [LAST] ti ha urtato
-	</string>
-	<string name="llpushobject">
+	</floater.string>
+	<floater.string name="llpushobject">
 		[TIME]  [FIRST] [LAST] ti ha spinto per mezzo di uno script
-	</string>
-	<string name="selected_object_collide">
+	</floater.string>
+	<floater.string name="selected_object_collide">
 		[TIME]  [FIRST] [LAST] ti ha colpito con un oggetto
-	</string>
-	<string name="scripted_object_collide">
+	</floater.string>
+	<floater.string name="scripted_object_collide">
 		[TIME]  [FIRST] [LAST] ti ha colpito con un oggetto scriptato
-	</string>
-	<string name="physical_object_collide">
+	</floater.string>
+	<floater.string name="physical_object_collide">
 		[TIME]  [FIRST] [LAST] ti ha colpito con un oggetto fisico
-	</string>
+	</floater.string>
+	<floater.string name="timeStr">
+		[[hour,datetime,slt]:[min,datetime,slt]]
+	</floater.string>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_buy_contents.xml b/indra/newview/skins/default/xui/it/floater_buy_contents.xml
index 1a6f64c07e4..e84d396138b 100644
--- a/indra/newview/skins/default/xui/it/floater_buy_contents.xml
+++ b/indra/newview/skins/default/xui/it/floater_buy_contents.xml
@@ -7,8 +7,9 @@
 		Compra per [AMOUNT]L$ da [NAME]?
 	</text>
 	<button label="Annulla" label_selected="Annulla" name="cancel_btn" width="73"/>
-	<button label="Compra" label_selected="Compra" name="buy_btn" width="73" left_delta="-77"/>
-	<check_box label="Indossa adesso &#10;l&apos;indumento" name="wear_check" bottom="-234" left_delta="-125"/>
+	<button label="Compra" label_selected="Compra" left_delta="-77" name="buy_btn" width="73"/>
+	<check_box bottom="-234" label="Indossa adesso 
+l&apos;indumento" left_delta="-125" name="wear_check"/>
 	<string name="no_copy_text">
 		(non copiabile)
 	</string>
diff --git a/indra/newview/skins/default/xui/it/floater_buy_currency.xml b/indra/newview/skins/default/xui/it/floater_buy_currency.xml
index 8a597642516..9d97f7d72d5 100644
--- a/indra/newview/skins/default/xui/it/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/it/floater_buy_currency.xml
@@ -1,70 +1,66 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="buy currency" title="ACQUISTA VALUTA">
-	<text name="info_buying">
-		Acquistando valuta:
-	</text>
-	<text name="info_cannot_buy" left="5" right="-5">
-		Non è possibile comprare ora
-	</text>
-	<text name="info_need_more" left="5" right="-5" font="SansSerifLarge">
-		Hai bisogno di acquistare ulteriore contante:
-	</text>
-	<text name="error_message">
-		Qualcosa non è andato a buon fine.
+<floater name="buy currency" title="COMPRA L$">
+	<floater.string name="buy_currency">
+		Compra L$ [LINDENS] per approx. [LOCALAMOUNT]
+	</floater.string>
+	<text font="SansSerifLarge" left="5" name="info_need_more" right="-5">
+		Necessiti di più  L$
 	</text>
-	<button label="Vai al sito web" name="error_web"/>
 	<text name="contacting">
 		Sto contattando il LindeX...
 	</text>
-	<text name="buy_action_unknown">
-		Compra L$ sul mercato delle valute LindeX
+	<text name="info_buying">
+		COMPRA L$
 	</text>
-	<text name="buy_action">
-		[NAME] [PRICE]L$
+	<text name="balance_label">
+		Io ho
+	</text>
+	<text name="balance_amount">
+		[AMT]L$
 	</text>
 	<text name="currency_action" width="45">
-		Compra 
+		Io voglio comprare
+	</text>
+	<text name="currency_label">
+		L$
 	</text>
-	<line_editor name="currency_amt">
+	<line_editor label="L$" name="currency_amt">
 		1234
 	</line_editor>
+	<text name="buying_label">
+		Al prezzo
+	</text>
 	<text name="currency_est">
-		per circa [LOCALAMOUNT]
+		approx. [LOCALAMOUNT]
 	</text>
 	<text name="getting_data">
-		Dati in ricezione...
-	</text>
-	<text name="balance_label">
-		Attualmente possiedi
+		Calcolando...
 	</text>
-	<text name="balance_amount">
-		[AMT]L$
-	</text>
-	<text name="buying_label">
-		Stai comprando
-	</text>
-	<text name="buying_amount">
-		[AMT]L$
+	<text name="buy_action">
+		[NAME] [PRICE]L$
 	</text>
 	<text name="total_label">
-		Il tuo saldo sarà
+		Il mio saldo sarà
 	</text>
 	<text name="total_amount">
 		[AMT]L$
 	</text>
 	<text name="currency_links">
-		[http://www.secondlife.com/my/account/payment_method_management.php?lang=it-IT payment method] | [http://www.secondlife.com/my/account/currency.php?lang=it-IT currency] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=it-IT exchange rate]
+		[http://www.secondlife.com/ payment method] | [http://www.secondlife.com/ currency] | [http://www.secondlife.com/my/account/exchange_rates.php exchange rate]
+	</text>
+	<text name="exchange_rate_note">
+		Ri-scrivi un importo per vedere l&apos;ultimo rapporto di cambio.
 	</text>
 	<text name="purchase_warning_repurchase">
-		Confermando questa operazione si acquisterà solo la valuta. Per acquistare il bene, dovrai riprovare l&apos;operazione nuovamente.
+		Confermando questo acquisto di soli L$, non l&apos;oggetto.
 	</text>
-	<text name="purchase_warning_notenough" bottom_delta="16">
-		Non stai comprando abbastanza denaro.
-Devi aumentare l&apos;importo da acquistare.
+	<text bottom_delta="16" name="purchase_warning_notenough">
+		Non stai acquistando abbastanza L$. Per favore aumenta l&apos;importo.
 	</text>
+	<button label="Compra ora" name="buy_btn"/>
 	<button label="Cancella" name="cancel_btn"/>
-	<button label="Acquista" name="buy_btn"/>
-	<string name="buy_currency">
-		acquistare [LINDENS]L$ per circa [LOCALAMOUNT]
-	</string>
+	<text left="5" name="info_cannot_buy" right="-5">
+		Non in grado di acquistare
+	</text>
+	<button label="Continua sul Web" name="error_web"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_buy_land.xml b/indra/newview/skins/default/xui/it/floater_buy_land.xml
index b5d7ba07637..9fa5bd5570b 100644
--- a/indra/newview/skins/default/xui/it/floater_buy_land.xml
+++ b/indra/newview/skins/default/xui/it/floater_buy_land.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="buy land" title="COMPRA TERRA">
+<floater name="buy land" title="COMPRA LA TERRA">
 	<text name="region_name_label">
 		Regione:
 	</text>
@@ -18,10 +18,10 @@
 	<text name="estate_name_text">
 		(sconosciuto)
 	</text>
-	<text name="estate_owner_label" width="120" right="575">
+	<text name="estate_owner_label" right="575" width="120">
 		Proprietario della regione:
 	</text>
-	<text name="estate_owner_text" left="580" width="155">
+	<text left="580" name="estate_owner_text" width="155">
 		(sconosciuto)
 	</text>
 	<text name="resellable_changeable_label">
@@ -57,9 +57,9 @@
 		Prezzo:
 	</text>
 	<text name="info_price">
-		1500 L$
-(1.1 L$/m²)
-venduta con gli oggetti
+		L$ 1500
+(L$ 1.1/m²)
+sold with objects
 	</text>
 	<text name="info_action">
 		Comprando questa terra:
@@ -75,15 +75,16 @@ venduta con gli oggetti
 		Solo i membri premium possono possedere terra.
 	</text>
 	<combo_box name="account_level">
-		<combo_box.item name="US$9.95/month,billedmonthly" label="9.95 US$/mese, addebitati mensilmente"/>
-		<combo_box.item name="US$7.50/month,billedquarterly" label="7.50 US$/mese, addebitati ogni quadrimestre"/>
-		<combo_box.item name="US$6.00/month,billedannually" label="6.00 US$/mese, addebitati annualmente"/>
+		<combo_box.item label="US$9.95/mese, addebitato mensilmente" name="US$9.95/month,billedmonthly"/>
+		<combo_box.item label="US$7.50/mese, addebitato trimestralmente" name="US$7.50/month,billedquarterly"/>
+		<combo_box.item label="US$6.00/mese, addebitato annualmente" name="US$6.00/month,billedannually"/>
 	</combo_box>
 	<text name="land_use_action">
 		Aumenta il tasso di pagamento mensile delle tasse d&apos;uso della terra a 40 US$/mese.
 	</text>
 	<text name="land_use_reason">
-		Possiedi 1309 m² di terra. Questa porzione è 512 m² di terra.
+		Tu occupi 1309 m² di terreno.
+This parcel is 512 m² di terreno.
 	</text>
 	<text name="purchase_action">
 		Paga il residente Joe 4000 L$ per la terra
@@ -94,16 +95,16 @@ venduta con gli oggetti
 	<text name="currency_action" width="106">
 		Compra ulteriori L$
 	</text>
-	<line_editor name="currency_amt" left="174" width="80">
+	<line_editor left="174" name="currency_amt" width="80">
 		1000
 	</line_editor>
 	<text name="currency_est">
-		per circa [AMOUNT2] US$
+		per circa. [LOCAL_AMOUNT]
 	</text>
 	<text name="currency_balance">
 		Possiedi 2.100 L$.
 	</text>
-	<check_box label="Rimuovi [AMOUNT] metri quadri di contribuzione dal gruppo." name="remove_contribution"/>
+	<check_box label="Rimuovi [AMOUNT] m² di contribuzione dal gruppo." name="remove_contribution"/>
 	<button label="Compra" name="buy_btn"/>
 	<button label="Annulla" name="cancel_btn"/>
 	<string name="can_resell">
@@ -180,26 +181,26 @@ Prova a selezionare un&apos;area più piccola.
 		Il tuo account può possedere terra.
 	</string>
 	<string name="land_holdings">
-		Possiedi [BUYER] di metri quadri di terra.
+		Tu occupi [BUYER] m² di terreno.
 	</string>
 	<string name="pay_to_for_land">
 		Paga [AMOUNT] L$ a [SELLER] per questa terra
 	</string>
 	<string name="buy_for_US">
-		Comprare [AMOUNT] L$ per circa [AMOUNT2] US$,
+		Compra L$ [AMOUNT] per circa. [LOCAL_AMOUNT],
 	</string>
 	<string name="parcel_meters">
-		Questo terreno è di [AMOUNT] metri quadri.
+		Questo parcel è [AMOUNT] m²
 	</string>
 	<string name="premium_land">
-		Questa terra è premium, e sarà  addebitata come [AMOUNT] metri quadri.
+		Questo terreno è premium, e costerà [AMOUNT] m².
 	</string>
 	<string name="discounted_land">
-		Questa terra è scontata, e sarà  addebitata come [AMOUNT] metri quadri.
+		Questo terreno è scontato, e costerà [AMOUNT] m².
 	</string>
 	<string name="meters_supports_object">
-		[AMOUNT] metri quadri
-supporta [AMOUNT2] oggetti
+		[AMOUNT] m²
+mantiene [AMOUNT2] oggetti
 	</string>
 	<string name="sold_with_objects">
 		venduta con oggetti
@@ -208,9 +209,9 @@ supporta [AMOUNT2] oggetti
 		Oggetti non inclusi
 	</string>
 	<string name="info_price_string">
-		[PRICE] L$ 
-([PRICE_PER_SQM] L$/m²)
-[SOLD_WITH_OBJECTS]
+		L$ [PRICE]
+(L$ [PREZZO_PER_QM]/m²)
+[VENDUTO_CON_OGGETTI]
 	</string>
 	<string name="insufficient_land_credits">
 		Il gruppo [GROUP] avrà bisogno di contribuzioni anticipate, mediante crediti d&apos;uso terriero,
diff --git a/indra/newview/skins/default/xui/it/floater_buy_object.xml b/indra/newview/skins/default/xui/it/floater_buy_object.xml
index e99d4323670..5f3413931b5 100644
--- a/indra/newview/skins/default/xui/it/floater_buy_object.xml
+++ b/indra/newview/skins/default/xui/it/floater_buy_object.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="contents" title="COMPRA UNA COPIA DELL&apos;OGGETTO">
+<floater name="contents" title="COMPRA COPIA DELL&apos;OGGETTO">
 	<text name="contents_text">
-		e dei suoi contenuti:
+		Contiene:
 	</text>
 	<text name="buy_text">
 		Compra per [AMOUNT]L$ da [NAME]?
diff --git a/indra/newview/skins/default/xui/it/floater_camera.xml b/indra/newview/skins/default/xui/it/floater_camera.xml
index 823be8f4a1c..182f82f17ff 100644
--- a/indra/newview/skins/default/xui/it/floater_camera.xml
+++ b/indra/newview/skins/default/xui/it/floater_camera.xml
@@ -10,7 +10,22 @@
 		Muovi la telecamera su e giù e a sinistra e destra
 	</floater.string>
 	<panel name="controls">
-		<joystick_track name="cam_track_stick" tool_tip="Muovi la telecamera su e giù e a sinistra e destra"/>
-		<joystick_zoom name="zoom" tool_tip="Avvicina la telecamera nell&apos;inquadratura"/>
+		<joystick_track name="cam_track_stick" tool_tip="Sposta la visuale sù e giù, sinistra e destra"/>
+		<panel name="zoom" tool_tip="Avvicina la telecamera nell&apos;inquadratura">
+			<slider_bar name="zoom_slider" tool_tip="Zoom verso il focus"/>
+		</panel>
+		<joystick_rotate name="cam_rotate_stick" tool_tip="Ruota la visuale intorno al focus"/>
+		<panel name="camera_presets">
+			<button name="rear_view" tool_tip="Visuale posteriore"/>
+			<button name="group_view" tool_tip="Visuale di Gruppo"/>
+			<button name="front_view" tool_tip="Visuale Frontale"/>
+			<button name="mouselook_view" tool_tip="Visuale Mouselook"/>
+		</panel>
+	</panel>
+	<panel name="buttons">
+		<button label="" name="orbit_btn" tool_tip="Ruota la visuale"/>
+		<button label="" name="pan_btn" tool_tip="Visuale Panoramica"/>
+		<button label="" name="avatarview_btn" tool_tip="Guardare un avatar"/>
+		<button label="" name="freecamera_btn" tool_tip="Vedi oggetto"/>
 	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_color_picker.xml b/indra/newview/skins/default/xui/it/floater_color_picker.xml
index 297b006e725..8551d65da2c 100644
--- a/indra/newview/skins/default/xui/it/floater_color_picker.xml
+++ b/indra/newview/skins/default/xui/it/floater_color_picker.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="ColorPicker" title="TAVOLOZZA COLORI">
+<floater name="ColorPicker" title="SELETTORE di COLORE">
 	<text name="r_val_text">
 		Rosso:
 	</text>
@@ -24,15 +24,14 @@
 		Luminosità:
 	</text>
 	<spinner left="84" name="lspin" width="47"/>
-	<check_box label="Applica Immediatamente" name="apply_immediate"/>
-	<button left_delta="150" name="color_pipette" />
-	<button left_delta="55" label="Annulla" label_selected="Annulla" name="cancel_btn"/>
-	<button label="Seleziona" label_selected="Seleziona" name="select_btn"/>
+	<check_box label="Applica ora" name="apply_immediate"/>
+	<button left_delta="150" name="color_pipette"/>
+	<button label="Annulla" label_selected="Annulla" left_delta="55" name="cancel_btn"/>
+	<button label="Ok" label_selected="Ok" name="select_btn"/>
 	<text name="Current color:">
 		Colore attuale:
 	</text>
 	<text name="(Drag below to save.)">
-		(Trascina qui sotto
- per salvare)
+		(Trascina sotto per salvare)
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_customize.xml b/indra/newview/skins/default/xui/it/floater_customize.xml
index ad6111718af..63e08444cd8 100644
--- a/indra/newview/skins/default/xui/it/floater_customize.xml
+++ b/indra/newview/skins/default/xui/it/floater_customize.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater customize" title="ASPETTO FISICO" width="551">
+<floater name="floater customize" title="ASPETTO" width="551">
 	<tab_container name="customize tab container" tab_min_width="120" width="549">
 		<placeholder label="Parti del corpo" name="body_parts_placeholder"/>
-		<panel label="Forma del corpo" name="Shape" left="124" width="389">
-			<button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/>
+		<panel label="Forma del corpo" left="124" name="Shape" width="389">
+			<button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" left="267" name="Revert" width="120"/>
 			<button label="Corpo" label_selected="Corpo" name="Body"/>
 			<button label="Testa" label_selected="Testa" name="Head"/>
 			<button label="Occhi" label_selected="Occhi" name="Eyes"/>
@@ -14,8 +14,8 @@
 			<button label="Torso" label_selected="Torso" name="Torso"/>
 			<button label="Gambe" label_selected="Gambe" name="Legs"/>
 			<radio_group name="sex radio">
-				<radio_item name="radio" label="Femmina" />
-				<radio_item name="radio2" label="Maschio" />
+				<radio_item label="Femmina" name="radio"/>
+				<radio_item label="Maschio" name="radio2"/>
 			</radio_group>
 			<text name="title">
 				[DESC]
@@ -43,8 +43,8 @@ sul tuo avatar. In alternativa, puoi crearne una nuova ed indossarla.
 				Forma del corpo:
 			</text>
 			<button label="Crea una nuova forma del corpo" label_selected="Crea una nuova forma del corpo" name="Create New" width="190"/>
-			<button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/>
-			<button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/>
+			<button label="Salva" label_selected="Salva" left="95" name="Save" width="72"/>
+			<button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/>
 		</panel>
 		<panel label="Pelle" name="Skin">
 			<button label="Colore della pelle" label_selected="Colore della pelle" name="Skin Color" width="115"/>
@@ -76,13 +76,13 @@ In alternativa, puoi crearne una nuova da zero ed indossarla.
 			<text name="Item Action Label" right="89">
 				Pelle:
 			</text>
-			<texture_picker width="96" label="Tatuaggi: testa" name="Head Tattoos" tool_tip="Clicca per scegliere un&apos;immagine"/>
-			<texture_picker width="96" label="Tatuaggi: superiori" name="Upper Tattoos" tool_tip="Clicca per scegliere un&apos;immagine"/>
-			<texture_picker width="96" label="Tatuaggi: inferiori" name="Lower Tattoos" tool_tip="Clicca per scegliere un&apos;immagine"/>
+			<texture_picker label="Tatuaggi: testa" name="Head Tattoos" tool_tip="Clicca per scegliere un&apos;immagine" width="96"/>
+			<texture_picker label="Tatuaggi: superiori" name="Upper Tattoos" tool_tip="Clicca per scegliere un&apos;immagine" width="96"/>
+			<texture_picker label="Tatuaggi: inferiori" name="Lower Tattoos" tool_tip="Clicca per scegliere un&apos;immagine" width="96"/>
 			<button label="Crea una nuova pelle" label_selected="Crea una nuova pelle" name="Create New"/>
-			<button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/>
-			<button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/>
-			<button font="SansSerifSmall" width="120" left="267"  label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/>
+			<button label="Salva" label_selected="Salva" left="95" name="Save" width="72"/>
+			<button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/>
+			<button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" left="267" name="Revert" width="120"/>
 		</panel>
 		<panel label="Capelli" name="Hair">
 			<button label="Capelli" label_selected="Colore" name="Color"/>
@@ -116,9 +116,9 @@ In alternativa, puoi crearne di nuovi da zero ed indossarli.
 			</text>
 			<texture_picker label="Texture" name="Texture" tool_tip="Clicca per scegliere un&apos;immagine"/>
 			<button label="Crea nuovi capelli" label_selected="Crea nuovi capelli" name="Create New"/>
-			<button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/>
-			<button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/>
-			<button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/>
+			<button label="Salva" label_selected="Salva" left="95" name="Save" width="72"/>
+			<button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/>
+			<button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" left="267" name="Revert" width="120"/>
 		</panel>
 		<panel label="Occhi" name="Eyes">
 			<text name="title">
@@ -148,19 +148,19 @@ In alternativa, puoi crearne di nuovi da zero ed indossarli.
 			</text>
 			<texture_picker label="Iride" name="Iris" tool_tip="Clicca per scegliere un&apos;immagine"/>
 			<button label="Crea nuovi occhi" label_selected="Crea nuovi occhi" name="Create New"/>
-			<button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/>
-			<button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/>
-			<button font="SansSerifSmall" width="120" left="267"  label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/>
+			<button label="Salva" label_selected="Salva" left="95" name="Save" width="72"/>
+			<button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/>
+			<button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" left="267" name="Revert" width="120"/>
 		</panel>
-		<panel label="Vestiti" name="clothes_placeholder"/>
+		<placeholder label="Vestiti" name="clothes_placeholder"/>
 		<panel label="Camicia" name="Shirt">
 			<texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un&apos;immagine"/>
-			<color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere un colore"/>
+			<color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/>
 			<button label="Crea una nuova camicia" label_selected="Crea una nuova camicia" name="Create New"/>
 			<button label="Togli" label_selected="Togli" name="Take Off"/>
-			<button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/>
-			<button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/>
-			<button font="SansSerifSmall" width="120" left="267"  label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/>
+			<button label="Salva" label_selected="Salva" left="95" name="Save" width="72"/>
+			<button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/>
+			<button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" left="267" name="Revert" width="120"/>
 			<text name="title">
 				[DESC]
 			</text>
@@ -189,12 +189,12 @@ In alternativa, puoi crearne una nuova da zero ed indossarla.
 		</panel>
 		<panel label="Pantaloni" name="Pants">
 			<texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un&apos;immagine"/>
-			<color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere un colore"/>
-			<button label="Crea nuovi pantaloni" label_selected="Crea nuovi pantaloni" name="Create New" />
+			<color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/>
+			<button label="Crea nuovi pantaloni" label_selected="Crea nuovi pantaloni" name="Create New"/>
 			<button label="Togli" label_selected="Togli" name="Take Off"/>
-			<button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/>
-			<button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/>
-			<button font="SansSerifSmall" width="120" left="267"  label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/>
+			<button label="Salva" label_selected="Salva" left="95" name="Save" width="72"/>
+			<button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/>
+			<button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" left="267" name="Revert" width="120"/>
 			<text name="title">
 				[DESC]
 			</text>
@@ -248,12 +248,12 @@ In alternativa, puoi crearne uno paio nuovo da zero ed indossarlo.
 				Scarpe:
 			</text>
 			<texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un&apos;immagine"/>
-			<color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere un colore"/>
+			<color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/>
 			<button label="Crea nuove scarpe" label_selected="Crea nuove scarpe" name="Create New"/>
 			<button label="Togli" label_selected="Togli" name="Take Off"/>
-			<button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/>
-			<button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/>
-			<button font="SansSerifSmall" width="120" left="267"  label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/>
+			<button label="Salva" label_selected="Salva" left="95" name="Save" width="72"/>
+			<button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/>
+			<button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" left="267" name="Revert" width="120"/>
 		</panel>
 		<panel label="Calze" name="Socks">
 			<text name="title">
@@ -282,12 +282,12 @@ In alternativa, puoi crearne uno paio nuovo da zero ed indossarlo.
 				Calze:
 			</text>
 			<texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un&apos;immagine"/>
-			<color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere un colore"/>
-			<button label="Crea nuove calze" label_selected="Crea nuove calze" name="Create New" />
+			<color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/>
+			<button label="Crea nuove calze" label_selected="Crea nuove calze" name="Create New"/>
 			<button label="Togli" label_selected="Togli" name="Take Off"/>
-			<button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/>
-			<button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/>
-			<button font="SansSerifSmall" width="120" left="267"  label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/>
+			<button label="Salva" label_selected="Salva" left="95" name="Save" width="72"/>
+			<button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/>
+			<button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" left="267" name="Revert" width="120"/>
 		</panel>
 		<panel label="Giacca" name="Jacket">
 			<text name="title">
@@ -315,14 +315,14 @@ In alternativa, puoi crearne una nuova da zero ed indossarla.
 			<text name="Item Action Label" right="89">
 				Giacca:
 			</text>
-			<texture_picker width="96" label="Tessuto: superiore" name="Upper Fabric" tool_tip="Clicca per scegliere un&apos;immagine"/>
-			<texture_picker width="96" label="Tessuto: inferiore" name="Lower Fabric" tool_tip="Clicca per scegliere un&apos;immagine"/>
-			<color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere il colore"/>
+			<texture_picker label="Tessuto: superiore" name="Upper Fabric" tool_tip="Clicca per scegliere un&apos;immagine" width="96"/>
+			<texture_picker label="Tessuto: inferiore" name="Lower Fabric" tool_tip="Clicca per scegliere un&apos;immagine" width="96"/>
+			<color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/>
 			<button label="Crea una nuova giacca" label_selected="Crea una nuova giacca" name="Create New"/>
 			<button label="Togli" label_selected="Togli" name="Take Off"/>
-			<button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/>
-			<button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/>
-			<button font="SansSerifSmall" width="120" left="267"  label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/>
+			<button label="Salva" label_selected="Salva" left="95" name="Save" width="72"/>
+			<button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/>
+			<button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" left="267" name="Revert" width="120"/>
 		</panel>
 		<panel label="Guanti" name="Gloves">
 			<text name="title">
@@ -351,12 +351,12 @@ In alternativa, puoi crearne un paio nuovo da zero ed indossarlo.
 				Guanti:
 			</text>
 			<texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un&apos;immagine"/>
-			<color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere il colore"/>
+			<color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/>
 			<button label="Crea nuovi guanti" label_selected="Crea nuovi guanti" name="Create New"/>
-			<button width="115" font="SansSerifSmall" label="Rimuovi l&apos;indumento" label_selected="Rimuovi l&apos;indumento" name="Take Off"/>
-			<button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/>
-			<button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/>
-			<button font="SansSerifSmall" width="120" left="267"  label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/>
+			<button font="SansSerifSmall" label="Rimuovi l&apos;indumento" label_selected="Rimuovi l&apos;indumento" name="Take Off" width="115"/>
+			<button label="Salva" label_selected="Salva" left="95" name="Save" width="72"/>
+			<button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/>
+			<button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" left="267" name="Revert" width="120"/>
 		</panel>
 		<panel label="Canottiera" name="Undershirt">
 			<text name="title">
@@ -385,12 +385,12 @@ In alternativa, puoi crearne una nuovo da zero ed indossarla.
 				Canottiera:
 			</text>
 			<texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un&apos;immagine"/>
-			<color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere il colore"/>
+			<color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/>
 			<button label="Crea una nuova canottiera" label_selected="Crea una nuova canottiera" name="Create New"/>
-			<button width="115" font="SansSerifSmall" label="Rimuovi l&apos;indumento" label_selected="Rimuovi l&apos;indumento" name="Take Off"/>
-			<button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/>
-			<button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/>
-			<button font="SansSerifSmall" width="120" left="267"  label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/>
+			<button font="SansSerifSmall" label="Rimuovi l&apos;indumento" label_selected="Rimuovi l&apos;indumento" name="Take Off" width="115"/>
+			<button label="Salva" label_selected="Salva" left="95" name="Save" width="72"/>
+			<button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/>
+			<button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" left="267" name="Revert" width="120"/>
 		</panel>
 		<panel label="Mutande" name="Underpants">
 			<text name="title">
@@ -419,12 +419,12 @@ In alternativa, puoi crearne una paio nuovo da zero ed indossarlo.
 				Mutande:
 			</text>
 			<texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un&apos;immagine"/>
-			<color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere il colore"/>
+			<color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/>
 			<button label="Crea nuove mutande" label_selected="Crea nuove mutande" name="Create New"/>
-			<button width="115" font="SansSerifSmall" label="Rimuovi l&apos;indumento" label_selected="Rimuovi l&apos;indumento" name="Take Off"/>
-			<button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/>
-			<button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/>
-			<button font="SansSerifSmall" width="120" left="267"  label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/>
+			<button font="SansSerifSmall" label="Rimuovi l&apos;indumento" label_selected="Rimuovi l&apos;indumento" name="Take Off" width="115"/>
+			<button label="Salva" label_selected="Salva" left="95" name="Save" width="72"/>
+			<button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/>
+			<button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" left="267" name="Revert" width="120"/>
 		</panel>
 		<panel label="Gonna" name="Skirt">
 			<text name="title">
@@ -453,16 +453,88 @@ In alternativa, puoi crearne una nuova da zero ed indossarla.
 				Gonna:
 			</text>
 			<texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un&apos;immagine"/>
-			<color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere il colore"/>
+			<color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/>
 			<button label="Crea una nuova gonna" label_selected="Crea una nuova gonna" name="Create New"/>
-			<button width="115" font="SansSerifSmall" label="Rimuovi l&apos;indumento" label_selected="Rimuovi l&apos;indumento" name="Take Off"/>
-			<button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/>
-			<button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/>
-			<button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/>
+			<button font="SansSerifSmall" label="Rimuovi l&apos;indumento" label_selected="Rimuovi l&apos;indumento" name="Take Off" width="115"/>
+			<button label="Salva" label_selected="Salva" left="95" name="Save" width="72"/>
+			<button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/>
+			<button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" left="267" name="Revert" width="120"/>
+		</panel>
+		<panel label="Alpha" name="Alpha">
+			<text name="title">
+				[DESC]
+			</text>
+			<text name="title_no_modify">
+				[DESC]: non può essere modificato
+			</text>
+			<text name="title_loading">
+				[DESC]: caricando...
+			</text>
+			<text name="title_not_worn">
+				[DESC]: non indossato
+			</text>
+			<text name="path">
+				Collocato in [PATH]
+			</text>
+			<text name="not worn instructions">
+				Metti una nuova alpha mask trascinandone una dall&apos;inventario del tuo avatar.
+In alternativa, creane una nuova partendo da zero e indossala.
+			</text>
+			<text name="no modify instructions">
+				Non hai i permessi per modificare questa vestibilità.
+			</text>
+			<text name="Item Action Label">
+				Alpha:
+			</text>
+			<texture_picker label="Alpha inferiore" name="Lower Alpha" tool_tip="Clicca per scegliere una fotografia"/>
+			<texture_picker label="Alpha superiore" name="Upper Alpha" tool_tip="Clicca per scegliere una foto"/>
+			<texture_picker label="Alpha della testa" name="Head Alpha" tool_tip="Clicca per scegliere una fotografia"/>
+			<texture_picker label="Alpha dell&apos;occhio" name="Eye Alpha" tool_tip="Clicca per scegliere una fotografia"/>
+			<texture_picker label="Alpha dei capelli" name="Hair Alpha" tool_tip="Clicca per scegiere una fotografia"/>
+			<button label="Crea nuova alpha" label_selected="Crea nuova alpha" name="Create New"/>
+			<button label="Togli" label_selected="Togli" name="Take Off"/>
+			<button label="Salva" label_selected="Salva" name="Save"/>
+			<button label="Salva con nome..." label_selected="Salva con nome..." name="Save As"/>
+			<button label="Ripristina" label_selected="Ripristina" name="Revert"/>
+		</panel>
+		<panel label="Tatuaggio" name="Tattoo">
+			<text name="title">
+				[DESC]
+			</text>
+			<text name="title_no_modify">
+				[DESC]: non può essere modificato
+			</text>
+			<text name="title_loading">
+				[DESC]: caricando...
+			</text>
+			<text name="title_not_worn">
+				[DESC]: non indossato
+			</text>
+			<text name="path">
+				Collocato in [PATH]
+			</text>
+			<text name="not worn instructions">
+				Metti un nuovo tatuaggio trascinandone uno dall&apos;inventario del tuo avatar.
+In alternativa, creane uno nuovo partendo da zero e indossalo.
+			</text>
+			<text name="no modify instructions">
+				Non hai i permessi per moficare questa vestibilità.
+			</text>
+			<text name="Item Action Label">
+				Tatuaggio:
+			</text>
+			<texture_picker label="Tatuaggio della testa" name="Head Tattoo" tool_tip="Clicca per scegliere una foto"/>
+			<texture_picker label="Tatuaggio superiore" name="Upper Tattoo" tool_tip="Clicca per scegliere una fotografia"/>
+			<texture_picker label="Tatuaggio inferiore" name="Lower Tattoo" tool_tip="Clicca per scegliere una fotografia"/>
+			<button label="Crea Nuovo tatuaggio" label_selected="Crea un nuovo tatuaggio" name="Create New"/>
+			<button label="Togli" label_selected="Togli" name="Take Off"/>
+			<button label="Salva" label_selected="Salva" name="Save"/>
+			<button label="Salva con nome..." label_selected="Salva con nome..." name="Save As"/>
+			<button label="Ripristina" label_selected="Ripristina" name="Revert"/>
 		</panel>
 	</tab_container>
 	<scroll_container left="254" name="panel_container"/>
+	<button label="Crea vestiario" label_selected="Crea vestiario" name="make_outfit_btn"/>
 	<button label="Annulla" label_selected="Annulla" name="Cancel"/>
 	<button label="OK" label_selected="OK" name="Ok"/>
-	<button label="Crea Outfit..." label_selected="Crea Outfit..." name="Make Outfit" left="122" />
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_device_settings.xml b/indra/newview/skins/default/xui/it/floater_device_settings.xml
index 932978809d5..2410a16882e 100644
--- a/indra/newview/skins/default/xui/it/floater_device_settings.xml
+++ b/indra/newview/skins/default/xui/it/floater_device_settings.xml
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_device_settings" title="IMPOSTAZIONI DISPOSITIVI VOICE CHAT"/>
+<floater name="floater_device_settings" title="OPZIONI PER IL DISPOSITIVO VOICE CHAT"/>
diff --git a/indra/newview/skins/default/xui/it/floater_env_settings.xml b/indra/newview/skins/default/xui/it/floater_env_settings.xml
index 32858d18cdc..1c17c18e84b 100644
--- a/indra/newview/skins/default/xui/it/floater_env_settings.xml
+++ b/indra/newview/skins/default/xui/it/floater_env_settings.xml
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="Environment Editor Floater" title="EDITOR DELL&apos;AMBIENTE">
+	<floater.string name="timeStr">
+		[hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc]
+	</floater.string>
 	<text name="EnvTimeText">
 		Ora del
 giorno
@@ -15,7 +18,7 @@ Nuvole
 		Colore
 dell&apos;Acqua
 	</text>
-	<color_swatch label="" name="EnvWaterColor" tool_tip="Clicca per aprire la tavolozza dei colori"/>
+	<color_swatch label="" name="EnvWaterColor" tool_tip="Clicca per aprire il selettore dei colori"/>
 	<text name="EnvWaterFogText">
 		Nebbiosità
 dell&apos;acqua
@@ -23,5 +26,4 @@ dell&apos;acqua
 	<button bottom="-144" label="Usa orario della regione" name="EnvUseEstateTimeButton" width="145"/>
 	<button label="Cielo avanzato" name="EnvAdvancedSkyButton"/>
 	<button label="Acqua avanzata" name="EnvAdvancedWaterButton"/>
-	<button label="?" name="EnvSettingsHelpButton"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_gesture.xml b/indra/newview/skins/default/xui/it/floater_gesture.xml
index 91b7381d13d..eefa3bb3921 100644
--- a/indra/newview/skins/default/xui/it/floater_gesture.xml
+++ b/indra/newview/skins/default/xui/it/floater_gesture.xml
@@ -1,15 +1,25 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="gestures" title="GESTURE ATTIVE">
-	<text name="help_label">
-		Fai doppio click su una gesture per azionare animazioni
-e suoni.
-	</text>
+<floater label="Posti" name="gestures" title="GESTURES">
+	<floater.string name="loading">
+		Caricando...
+	</floater.string>
+	<floater.string name="playing">
+		(Riproducendo)
+	</floater.string>
+	<floater.string name="copy_name">
+		Copia di [COPY_NAME]
+	</floater.string>
 	<scroll_list bottom_delta="-385" height="360" name="gesture_list">
-		<column label="Frase scatenante" name="trigger" width="106"/>
-		<column label="Pulsante" name="shortcut" width="65"/>
-		<column label="Nome" name="name" width="129"/>
+		<scroll_list.columns label="Nome" name="name" width="129"/>
+		<scroll_list.columns label="Chat" name="trigger" width="106"/>
+		<scroll_list.columns label="Pulsante" name="shortcut" width="65"/>
 	</scroll_list>
-	<button label="Nuova" name="new_gesture_btn"/>
+	<panel label="bottom_panel" name="bottom_panel">
+		<menu_button name="gear_btn" tool_tip="Più opzioni"/>
+		<button name="new_gesture_btn" tool_tip="Crea nuova gesture"/>
+		<button name="activate_btn" tool_tip="Attiva/Disattiva la gesture selezionata"/>
+		<button name="del_btn" tool_tip="Cancella questa gesture"/>
+	</panel>
 	<button label="Modifica" name="edit_btn"/>
 	<button label="Play" name="play_btn"/>
 	<button label="Stop" name="stop_btn"/>
diff --git a/indra/newview/skins/default/xui/it/floater_hardware_settings.xml b/indra/newview/skins/default/xui/it/floater_hardware_settings.xml
index cdf3e970a66..08326b1da3d 100644
--- a/indra/newview/skins/default/xui/it/floater_hardware_settings.xml
+++ b/indra/newview/skins/default/xui/it/floater_hardware_settings.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Hardware Settings Floater" title="IMPOSTAZIONI HARDWARE">
+<floater name="Hardware Settings Floater" title="OPZIONI HARDWARE">
 	<text name="Filtering:">
 		Filtraggio:
 	</text>
@@ -8,21 +8,22 @@
 		Antialiasing:
 	</text>
 	<combo_box label="Antialiasing" name="fsaa" width="94">
-		<combo_box.item name="FSAADisabled" label="Disattivato"/>
-		<combo_box.item name="2x" label="2x"/>
-		<combo_box.item name="4x" label="4x"/>
-		<combo_box.item name="8x" label="8x"/>
-		<combo_box.item name="16x" label="16x"/>
+		<combo_box.item label="Disattivato" name="FSAADisabled"/>
+		<combo_box.item label="2x" name="2x"/>
+		<combo_box.item label="4x" name="4x"/>
+		<combo_box.item label="8x" name="8x"/>
+		<combo_box.item label="16x" name="16x"/>
 	</combo_box>
 	<spinner label="Gamma:" name="gamma"/>
 	<text name="(brightness, lower is brighter)">
-		(Luminosità, più basso = più luminoso, 0=default)
+		(0 = luminosità default, più basso = più luminoso)
 	</text>
 	<text name="Enable VBO:">
 		Attiva VBO:
 	</text>
-	<check_box label="Attiva oggetti OpenGL Vertex Buffer" name="vbo" tool_tip="Attivandolo su un hardware moderno aumenta la performance.  Ma, su un vecchio hardware, spesso l&apos;implementazione dei VBO è scarsa e potresti avere dei crash quando è attivato."/>
-	<slider label="Memoria Texture  (MB):" name="GrapicsCardTextureMemory" tool_tip="Quantità di memoria allocata per le texture. Impostata di default sulla memoria della scheda grafica. Ridurla può aumentare la performance, ma può anche rendere le texture sfocate."/>
-	<spinner label="Indice della distanza &#10;della nebbia:" name="fog"/>
+	<check_box initial_value="true" label="Attiva oggetti OpenGL Vertex Buffer" name="vbo" tool_tip="Attivandolo su un hardware moderno aumenta la performance.  Ma, su un vecchio hardware, spesso l&apos;implementazione dei VBO è scarsa e potresti avere dei crash quando è attivato."/>
+	<slider label="Texture Memory (MB):" name="GraphicsCardTextureMemory" tool_tip="Spazio di memoria da ssegnare alle textures. Memoria della scheda video in Defaults. Ridurre questa impostazione potrebbe migliorare il rendimento ma potrebbe anche rendere le textures poco definite."/>
+	<spinner label="Indice della distanza 
+della nebbia:" name="fog"/>
 	<button label="OK" label_selected="OK" name="OK"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_help_browser.xml b/indra/newview/skins/default/xui/it/floater_help_browser.xml
new file mode 100644
index 00000000000..9a158c5216d
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_help_browser.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_help_browser" title="HELP BROWSER">
+	<layout_stack name="stack1">
+		<layout_panel name="external_controls">
+			<button label="Apri nel mio Web Browser" name="open_browser"/>
+		</layout_panel>
+	</layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_im.xml b/indra/newview/skins/default/xui/it/floater_im.xml
index 2a9862fe7cd..6303615e60e 100644
--- a/indra/newview/skins/default/xui/it/floater_im.xml
+++ b/indra/newview/skins/default/xui/it/floater_im.xml
@@ -10,7 +10,7 @@
 		Clicca il tasto [BUTTON NAME] per accettare/connetterti a questa voice chat.
 	</string>
 	<string name="muted_message">
-		Hai mutato questo residente. L&apos;invio di un messaggio lo riabiliterà automaticamente.
+		Hai bloccato questo residente. Spedendo un messaggio sarà automaticamente sbloccati.
 	</string>
 	<string name="generic_request_error">
 		Errore durante la richiesta, riprova più tardi.
diff --git a/indra/newview/skins/default/xui/it/floater_im_container.xml b/indra/newview/skins/default/xui/it/floater_im_container.xml
new file mode 100644
index 00000000000..2970639f4c4
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_im_container.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<multi_floater name="floater_im_box" title="Instant Messages"/>
diff --git a/indra/newview/skins/default/xui/it/floater_im_session.xml b/indra/newview/skins/default/xui/it/floater_im_session.xml
new file mode 100644
index 00000000000..830c65b4439
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_im_session.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="panel_im">
+	<layout_stack name="im_panels">
+		<layout_panel label="Pannello di Controllo IM" name="panel_im_control_panel"/>
+		<layout_panel>
+			<line_editor label="A" name="chat_editor"/>
+		</layout_panel>
+	</layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_image_preview.xml b/indra/newview/skins/default/xui/it/floater_image_preview.xml
index 8ee3181bce3..341202d8bc2 100644
--- a/indra/newview/skins/default/xui/it/floater_image_preview.xml
+++ b/indra/newview/skins/default/xui/it/floater_image_preview.xml
@@ -10,17 +10,17 @@
 		Anteprima dell&apos;
 immagine come:
 	</text>
-	<combo_box label="Tipo d&apos;abito" name="clothing_type_combo" left="120" width="166">
-		<combo_box.item name="Image" label="Immagine"/>
-		<combo_box.item name="Hair" label="Capelli"/>
-		<combo_box.item name="FemaleHead" label="Testa femminile"/>
-		<combo_box.item name="FemaleUpperBody" label="Corpo femminile superiore"/>
-		<combo_box.item name="FemaleLowerBody" label="Corpo femminile inferiore"/>
-		<combo_box.item name="MaleHead" label="Testa maschile"/>
-		<combo_box.item name="MaleUpperBody" label="Corpo maschile superiore"/>
-		<combo_box.item name="MaleLowerBody" label="Corpo maschile inferiore"/>
-		<combo_box.item name="Skirt" label="Gonna"/>
-		<combo_box.item name="SculptedPrim" label="Oggetto sculpt"/>
+	<combo_box label="Tipo d&apos;abito" left="120" name="clothing_type_combo" width="166">
+		<combo_box.item label="Immagine" name="Image"/>
+		<combo_box.item label="Capelli" name="Hair"/>
+		<combo_box.item label="Testa Femminile" name="FemaleHead"/>
+		<combo_box.item label="Corpo Femminile Superiore" name="FemaleUpperBody"/>
+		<combo_box.item label="Corpo Femminile Inferiore" name="FemaleLowerBody"/>
+		<combo_box.item label="Testa Maschile" name="MaleHead"/>
+		<combo_box.item label="Corpo Maschile Superiore" name="MaleUpperBody"/>
+		<combo_box.item label="Corpo Maschile Inferiore" name="MaleLowerBody"/>
+		<combo_box.item label="Gonna" name="Skirt"/>
+		<combo_box.item label="Sculpted Prim" name="SculptedPrim"/>
 	</combo_box>
 	<text name="bad_image_text">
 		Non è stato possibile leggere l&apos;immagine.
diff --git a/indra/newview/skins/default/xui/it/floater_incoming_call.xml b/indra/newview/skins/default/xui/it/floater_incoming_call.xml
new file mode 100644
index 00000000000..fc7b8de6f40
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_incoming_call.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="incoming call" title="UNA PERSONA SCONOSCIUTA STA&apos; CHIAMANDO">
+	<floater.string name="localchat">
+		Voice Chat nei dintorni
+	</floater.string>
+	<floater.string name="anonymous">
+		anonimo
+	</floater.string>
+	<floater.string name="VoiceInviteP2P">
+		stà chiamando.
+	</floater.string>
+	<floater.string name="VoiceInviteAdHoc">
+		ha aggiunto una chiamata in Voice Chat ad una conferenza in chat.
+	</floater.string>
+	<text name="question">
+		Vuoi abbandonare [CURRENT_CHAT] e aderire a questa voice chat?
+	</text>
+	<button label="Accetta" label_selected="Accetta" name="Accept"/>
+	<button label="Rifiuta" label_selected="Rifiuta" name="Reject"/>
+	<button label="Inizia IM" name="Start IM"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_inspect.xml b/indra/newview/skins/default/xui/it/floater_inspect.xml
index 1a4e6c3c1bd..bae993d2be8 100644
--- a/indra/newview/skins/default/xui/it/floater_inspect.xml
+++ b/indra/newview/skins/default/xui/it/floater_inspect.xml
@@ -1,11 +1,14 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="inspect" title="ISPEZIONA OGGETTI" min_width="450">
+<floater min_width="450" name="inspect" title="ISPEZIONA OGGETTI">
+	<floater.string name="timeStamp">
+		[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+	</floater.string>
 	<scroll_list name="object_list" tool_tip="Seleziona un oggetto da questo elenco per evidenziarlo inworld">
-		<column label="Nome dell&apos;oggetto" name="object_name"/>
-		<column label="Proprietario" name="owner_name"/>
-		<column label="Creatore" name="creator_name"/>
-		<column label="Data di creazione" name="creation_date"/>
+		<scroll_list.columns label="Nome dell&apos;oggetto" name="object_name"/>
+		<scroll_list.columns label="Proprietario" name="owner_name"/>
+		<scroll_list.columns label="Creatore" name="creator_name"/>
+		<scroll_list.columns label="Data di creazione" name="creation_date"/>
 	</scroll_list>
-	<button width="185" label="Vedi il profilo del proprietario..." label_selected="" name="button owner" tool_tip="Vedi il profilo del proprietario dell&apos;oggetto evidenziato"/>
-	<button width="165" left="205" label="Vedi il profilo del creatore..." label_selected="" name="button creator" tool_tip="Vedi il profilo del creatore originale dell&apos;oggetto evidenziato"/>
+	<button label="Vedi il profilo del proprietario..." label_selected="" name="button owner" tool_tip="Vedi il profilo del proprietario dell&apos;oggetto evidenziato" width="185"/>
+	<button label="Vedi il profilo del creatore..." label_selected="" left="205" name="button creator" tool_tip="Vedi il profilo del creatore originale dell&apos;oggetto evidenziato" width="165"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_inventory.xml b/indra/newview/skins/default/xui/it/floater_inventory.xml
index e3325463d6c..5049bb3e58c 100644
--- a/indra/newview/skins/default/xui/it/floater_inventory.xml
+++ b/indra/newview/skins/default/xui/it/floater_inventory.xml
@@ -1,47 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="Inventory" title="INVENTARIO">
-	<search_editor label="Scrivi qui per cercare" name="inventory search editor"/>
-	<tab_container name="inventory filter tabs">
-		<inventory_panel label="Tutti gli elementi" name="All Items"/>
-		<inventory_panel label="Elementi recenti" name="Recent Items"/>
-	</tab_container>
-	<menu_bar name="Inventory Menu">
-		<menu label="File" name="File">
-			<menu_item_call label="Apri" name="Open"/>
-			<menu_item_call label="Nuova finestra" name="New Window"/>
-			<menu_item_call label="Mostra Filtri" name="Show Filters"/>
-			<menu_item_call label="Azzera Filtri" name="Reset Current"/>
-			<menu_item_call label="Chiudi tutte le cartelle" name="Close All Folders"/>
-			<menu_item_call label="Svuota Cestino" name="Empty Trash"/>
-		</menu>
-		<menu label="Crea" name="Create">
-			<menu_item_call label="Nuova Cartella" name="New Folder"/>
-			<menu_item_call label="Nuovo Script" name="New Script"/>
-			<menu_item_call label="Nuova Nota" name="New Note"/>
-			<menu_item_call label="Nuova Gesture" name="New Gesture"/>
-			<menu name="New Clothes">
-				<menu_item_call label="Nuova Camicia" name="New Shirt"/>
-				<menu_item_call label="Nuovi Pantaloni" name="New Pants"/>
-				<menu_item_call label="Nuove Scarpe" name="New Shoes"/>
-				<menu_item_call label="Nuove Calze" name="New Socks"/>
-				<menu_item_call label="Nuova Giacca" name="New Jacket"/>
-				<menu_item_call label="Nuova Gonna" name="New Skirt"/>
-				<menu_item_call label="Nuovi Guanti" name="New Gloves"/>
-				<menu_item_call label="Nuova Canottiera" name="New Undershirt"/>
-				<menu_item_call label="Nuove Mutande" name="New Underpants"/>
-			</menu>
-			<menu name="New Body Parts">
-				<menu_item_call label="Nuova Forma del Corpo" name="New Shape"/>
-				<menu_item_call label="Nuova Pelle" name="New Skin"/>
-				<menu_item_call label="Nuovi Capelli" name="New Hair"/>
-				<menu_item_call label="Nuovi Occhi" name="New Eyes"/>
-			</menu>
-		</menu>
-		<menu label="Ordinamento" name="Sort">
-			<menu_item_check label="Per nome" name="By Name"/>
-			<menu_item_check label="Per data" name="By Date"/>
-			<menu_item_check label="Cartelle sempre per nome" name="Folders Always By Name"/>
-			<menu_item_check label="Cartelle di sistema sempre in cima" name="System Folders To Top"/>
-		</menu>
-	</menu_bar>
+	<floater.string name="Title">
+		Inventario
+	</floater.string>
+	<floater.string name="TitleFetching">
+		Inventario (Fetching [ITEM_COUNT] Items...) [FILTER]
+	</floater.string>
+	<floater.string name="TitleCompleted">
+		Inventario ([ITEM_COUNT] Items) [FILTER]
+	</floater.string>
+	<floater.string name="Fetched">
+		Raggiunto ??????????
+	</floater.string>
+	<panel label="Pannello dell&apos;Inventario" name="Inventory Panel"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml
index 8860fd82076..aaf7b716566 100644
--- a/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml
@@ -1,5 +1,20 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="item properties" title="PROPRIETÀ DELL&apos;OGGETTO NELL&apos;INVENTARIO">
+<floater name="item properties" title="CARATTERISTICHE DELL&apos;ARTICOLO IN INVENTARIO">
+	<floater.string name="unknown">
+		(sconosciuto)
+	</floater.string>
+	<floater.string name="public">
+		(pubblico)
+	</floater.string>
+	<floater.string name="you_can">
+		Tu puoi:
+	</floater.string>
+	<floater.string name="owner_can">
+		Il proprietario può:
+	</floater.string>
+	<floater.string name="acquiredDate">
+		[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+	</floater.string>
 	<text name="LabelItemNameTitle">
 		Nome:
 	</text>
@@ -27,55 +42,32 @@
 		Wed May 24 12:50:46 2006
 	</text>
 	<text name="OwnerLabel">
-		Tu puoi:
-	</text>
-	<check_box label="Modificare" name="CheckOwnerModify"/>
-	<check_box left_delta="88" label="Copiare" name="CheckOwnerCopy"/>
-	<check_box label="Rivendere/Regalare" name="CheckOwnerTransfer"/>
-	<text name="BaseMaskDebug">
-		B:
-	</text>
-	<text name="OwnerMaskDebug">
-		O:
+		Tu:
 	</text>
-	<text name="GroupMaskDebug">
-		G:
+	<check_box label="Modifica" name="CheckOwnerModify"/>
+	<check_box label="Copiare" left_delta="88" name="CheckOwnerCopy"/>
+	<check_box label="Rivendi" name="CheckOwnerTransfer"/>
+	<text name="AnyoneLabel">
+		Chiunque:
 	</text>
-	<text name="EveryoneMaskDebug">
-		E:
+	<check_box label="Copia" name="CheckEveryoneCopy"/>
+	<text name="GroupLabel">
+		Gruppo:
 	</text>
-	<text name="NextMaskDebug">
-		N:
-	</text>
-	<check_box label="Condividi con il gruppo" name="CheckShareWithGroup"/>
-	<check_box label="Permetti a tutti di copiare" name="CheckEveryoneCopy"/>
+	<check_box label="Condividi" name="CheckShareWithGroup"/>
 	<text name="NextOwnerLabel" width="230">
-		Il prossimo proprietario può:
-	</text>
-	<check_box label="Modificare" name="CheckNextOwnerModify"/>
-	<check_box left_delta="88" label="Copiare" name="CheckNextOwnerCopy"/>
-	<check_box label="Rivendere/Regalare" name="CheckNextOwnerTransfer"/>
-	<text name="SaleLabel">
-		Metti l&apos;oggetto:
+		Prossimo Proprietario:
 	</text>
+	<check_box label="Modifica" name="CheckNextOwnerModify"/>
+	<check_box label="Copiare" left_delta="88" name="CheckNextOwnerCopy"/>
+	<check_box label="Rivendi" name="CheckNextOwnerTransfer"/>
 	<check_box label="In vendita" name="CheckPurchase"/>
-	<radio_group name="RadioSaleType" left_delta="88" >
-		<radio_item name="radio" label="Originale" />
-		<radio_item name="radio2" label="Copia" />
-	</radio_group>
-	<text name="TextPrice">
-		Prezzo:  L$
+	<combo_box name="combobox sale copy">
+		<combo_box.item label="Copia" name="Copy"/>
+		<combo_box.item label="Originale" name="Original"/>
+	</combo_box>
+	<spinner label="Prezzo:" name="Edit Cost"/>
+	<text name="CurrencySymbol">
+		L$
 	</text>
-	<string name="unknown">
-		(sconosciuto)
-	</string>
-	<string name="public">
-		(pubblico)
-	</string>
-	<string name="you_can">
-		Tu puoi:
-	</string>
-	<string name="owner_can">
-		Il proprietario può:
-	</string>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_joystick.xml b/indra/newview/skins/default/xui/it/floater_joystick.xml
index d74ff9bfb49..3eff0cfcebe 100644
--- a/indra/newview/skins/default/xui/it/floater_joystick.xml
+++ b/indra/newview/skins/default/xui/it/floater_joystick.xml
@@ -1,23 +1,23 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="Joystick" title="CONFIGURAZIONE JOYSTICK">
-	<check_box name="enable_joystick" label="Abilita Joystick:"/>
+	<check_box label="Abilita Joystick:" name="enable_joystick"/>
 	<text left="120" name="joystick_type" width="380"/>
-	<spinner label="Mapping: asse X" name="JoystickAxis1" label_width="140" width="180" left="12"/>
-	<spinner label="Mapping: asse Y" name="JoystickAxis2" label_width="134" width="174" left="205"/>
-	<spinner label="Mapping: asse Z" name="JoystickAxis0" label_width="94" width="134" left="390"/>
-	<spinner label="Mapping: direzione o Pitch" name="JoystickAxis4" label_width="140" width="180" left="12"/>
-	<spinner label="Mapping: altitudine o Yaw" name="JoystickAxis5" label_width="134" width="174" left="205"/>
-	<spinner label="Mapping del Roll" name="JoystickAxis3" label_width="94" width="134" left="390"/>
-	<spinner label="Mapping dello Zoom" name="JoystickAxis6" label_width="140" width="180" left="12"/>
-	<check_box label="Zoom diretto" name="ZoomDirect" left="205"/>
+	<spinner label="Mapping: asse X" label_width="140" left="12" name="JoystickAxis1" width="180"/>
+	<spinner label="Mapping: asse Y" label_width="134" left="205" name="JoystickAxis2" width="174"/>
+	<spinner label="Mapping: asse Z" label_width="94" left="390" name="JoystickAxis0" width="134"/>
+	<spinner label="Mapping: direzione o Pitch" label_width="140" left="12" name="JoystickAxis4" width="180"/>
+	<spinner label="Mapping: altitudine o Yaw" label_width="134" left="205" name="JoystickAxis5" width="174"/>
+	<spinner label="Mapping del Roll" label_width="94" left="390" name="JoystickAxis3" width="134"/>
+	<spinner label="Mapping dello Zoom" label_width="140" left="12" name="JoystickAxis6" width="180"/>
+	<check_box label="Zoom diretto" left="205" name="ZoomDirect"/>
 	<check_box label="Cursore 3D" name="Cursor3D"/>
 	<check_box label="Auto livellamento" name="AutoLeveling"/>
-	<text name="Control Modes:" left="3" width="113">
+	<text left="3" name="Control Modes:" width="113">
 		Modalità di controllo:
 	</text>
-	<check_box name="JoystickAvatarEnabled" label="Avatar"/>
-	<check_box name="JoystickBuildEnabled" left="192" label="Costruire"/>
-	<check_box name="JoystickFlycamEnabled" label="Camera dall&apos;alto"/>
+	<check_box label="Avatar" name="JoystickAvatarEnabled"/>
+	<check_box label="Costruire" left="192" name="JoystickBuildEnabled"/>
+	<check_box label="Camera dall&apos;alto" name="JoystickFlycamEnabled"/>
 	<text name="XScale">
 		Regolazione X
 	</text>
@@ -27,13 +27,13 @@
 	<text name="ZScale">
 		Regolazione Z
 	</text>
-	<text name="PitchScale" left="3" width="112">
+	<text left="3" name="PitchScale" width="112">
 		Regolazione: Pitch
 	</text>
-	<text name="YawScale" left="3" width="112">
+	<text left="3" name="YawScale" width="112">
 		Regolazione: Yaw
 	</text>
-	<text name="RollScale" left="3" width="112">
+	<text left="3" name="RollScale" width="112">
 		Regolazione: Roll
 	</text>
 	<text name="XDeadZone">
@@ -45,22 +45,22 @@
 	<text name="ZDeadZone">
 		Angolo morto Z
 	</text>
-	<text name="PitchDeadZone" left="3" width="112">
+	<text left="3" name="PitchDeadZone" width="112">
 		Angolo morto: Pitch
 	</text>
-	<text name="YawDeadZone" left="3" width="112">
+	<text left="3" name="YawDeadZone" width="112">
 		Angolo morto: Yaw
 	</text>
-	<text name="RollDeadZone" left="3" width="112">
+	<text left="3" name="RollDeadZone" width="112">
 		Angolo morto: Roll
 	</text>
 	<text name="Feathering">
 		Smussamento
 	</text>
-	<text name="ZoomScale2" width="135" left="6">
+	<text left="6" name="ZoomScale2" width="135">
 		Regolazione dello zoom
 	</text>
-	<text name="ZoomDeadZone" width="135" left="6">
+	<text left="6" name="ZoomDeadZone" width="135">
 		Angolo morto dello zoom
 	</text>
 	<button label="SpaceNavigator Defaults" name="SpaceNavigatorDefaults"/>
diff --git a/indra/newview/skins/default/xui/it/floater_lagmeter.xml b/indra/newview/skins/default/xui/it/floater_lagmeter.xml
index 5ed748da69e..93bf11b069c 100644
--- a/indra/newview/skins/default/xui/it/floater_lagmeter.xml
+++ b/indra/newview/skins/default/xui/it/floater_lagmeter.xml
@@ -1,155 +1,154 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_lagmeter" title="MISURATORE DEL LAG">
-	<button label="" label_selected="" name="client_lagmeter" tool_tip="Stato del lag del programma in locale"/>
-	<text left="30" name="client_lag_cause" right="-10" />
-	<text left="30" name="network_lag_cause" right="-10" />
-	<text left="30" name="server_lag_cause" right="-32" />
-	<text name="client">
-		Programma in locale:
-	</text>
-	<text name="client_text" left="145" font="SansSerifSmall">
-		Normale
-	</text>
-	<button label="" label_selected="" name="network_lagmeter" tool_tip="Stato del lag del network"/>
-	<text name="network">
-		Network:
-	</text>
-	<text name="network_text" font="SansSerifSmall">
-		Normale
-	</text>
-	<button label="" label_selected="" name="server_lagmeter" tool_tip="Stato del lag del server"/>
-	<text name="server">
-		Server:
-	</text>
-	<text name="server_text" font="SansSerifSmall">
-		Normale
-	</text>
-	<button label="?" name="server_help"/>
-	<button label="&gt;&gt;" name="minimize"/>
-	<string name="max_title_msg">
+<floater name="floater_lagmeter" title="LAG METER">
+	<floater.string name="max_title_msg">
 		Misuratore del lag
-	</string>
-	<string name="max_width_px">
+	</floater.string>
+	<floater.string name="max_width_px">
 		360
-	</string>
-	<string name="min_title_msg">
+	</floater.string>
+	<floater.string name="min_title_msg">
 		Lag
-	</string>
-	<string name="min_width_px">
+	</floater.string>
+	<floater.string name="min_width_px">
 		90
-	</string>
-	<string name="client_text_msg">
+	</floater.string>
+	<floater.string name="client_text_msg">
 		Programma in locale
-	</string>
-	<string name="client_frame_rate_critical_fps">
+	</floater.string>
+	<floater.string name="client_frame_rate_critical_fps">
 		10
-	</string>
-	<string name="client_frame_rate_warning_fps">
+	</floater.string>
+	<floater.string name="client_frame_rate_warning_fps">
 		15
-	</string>
-	<string name="client_frame_time_window_bg_msg">
+	</floater.string>
+	<floater.string name="client_frame_time_window_bg_msg">
 		Normale, finestra sullo sfondo
-	</string>
-	<string name="client_frame_time_critical_msg">
+	</floater.string>
+	<floater.string name="client_frame_time_critical_msg">
 		Velocità dei frame al di sotto di [CLIENT_FRAME_RATE_CRITICAL]
-	</string>
-	<string name="client_frame_time_warning_msg">
+	</floater.string>
+	<floater.string name="client_frame_time_warning_msg">
 		Velocità dei frame tra [CLIENT_FRAME_RATE_CRITICAL] e [CLIENT_FRAME_RATE_WARNING]
-	</string>
-	<string name="client_frame_time_normal_msg">
+	</floater.string>
+	<floater.string name="client_frame_time_normal_msg">
 		Normale
-	</string>
-	<string name="client_draw_distance_cause_msg">
+	</floater.string>
+	<floater.string name="client_draw_distance_cause_msg">
 		Possibile causa: Campo visivo impostato troppo alto
-	</string>
-	<string name="client_texture_loading_cause_msg">
+	</floater.string>
+	<floater.string name="client_texture_loading_cause_msg">
 		Possibile causa: Caricamento immagini
-	</string>
-	<string name="client_texture_memory_cause_msg">
+	</floater.string>
+	<floater.string name="client_texture_memory_cause_msg">
 		Possibile causa: Troppe immagini in memoria
-	</string>
-	<string name="client_complex_objects_cause_msg">
+	</floater.string>
+	<floater.string name="client_complex_objects_cause_msg">
 		Possibile causa: Troppi oggetti complessi intorno
-	</string>
-	<string name="network_text_msg">
+	</floater.string>
+	<floater.string name="network_text_msg">
 		Network
-	</string>
-	<string name="network_packet_loss_critical_pct">
+	</floater.string>
+	<floater.string name="network_packet_loss_critical_pct">
 		10
-	</string>
-	<string name="network_packet_loss_warning_pct">
+	</floater.string>
+	<floater.string name="network_packet_loss_warning_pct">
 		5
-	</string>
-	<string name="network_packet_loss_critical_msg">
+	</floater.string>
+	<floater.string name="network_packet_loss_critical_msg">
 		La connessione sta calando al di sotto del [NETWORK_PACKET_LOSS_CRITICAL]% di pacchetti
-	</string>
-	<string name="network_packet_loss_warning_msg">
+	</floater.string>
+	<floater.string name="network_packet_loss_warning_msg">
 		La connessione sta calando tra il [NETWORK_PACKET_LOSS_WARNING]% e il [NETWORK_PACKET_LOSS_CRITICAL]% di pacchetti
-	</string>
-	<string name="network_performance_normal_msg">
+	</floater.string>
+	<floater.string name="network_performance_normal_msg">
 		Normale
-	</string>
-	<string name="network_ping_critical_ms">
+	</floater.string>
+	<floater.string name="network_ping_critical_ms">
 		600
-	</string>
-	<string name="network_ping_warning_ms">
+	</floater.string>
+	<floater.string name="network_ping_warning_ms">
 		300
-	</string>
-	<string name="network_ping_critical_msg">
+	</floater.string>
+	<floater.string name="network_ping_critical_msg">
 		Il tempo di ping della connessione è al di sopra di [NETWORK_PING_CRITICAL] ms
-	</string>
-	<string name="network_ping_warning_msg">
+	</floater.string>
+	<floater.string name="network_ping_warning_msg">
 		Il tempo di ping della connessione è tra [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms
-	</string>
-	<string name="network_packet_loss_cause_msg">
+	</floater.string>
+	<floater.string name="network_packet_loss_cause_msg">
 		Possibile cattiva connessione o la larghezza di banda impostata nelle preferenze troppo alta.
-	</string>
-	<string name="network_ping_cause_msg">
+	</floater.string>
+	<floater.string name="network_ping_cause_msg">
 		Possibile cattiva connessione o l&apos;apertura di un programma di scambio files.
-	</string>
-	<string name="server_text_msg">
+	</floater.string>
+	<floater.string name="server_text_msg">
 		Server
-	</string>
-	<string name="server_frame_rate_critical_fps">
+	</floater.string>
+	<floater.string name="server_frame_rate_critical_fps">
 		20
-	</string>
-	<string name="server_frame_rate_warning_fps">
+	</floater.string>
+	<floater.string name="server_frame_rate_warning_fps">
 		30
-	</string>
-	<string name="server_single_process_max_time_ms">
+	</floater.string>
+	<floater.string name="server_single_process_max_time_ms">
 		20
-	</string>
-	<string name="server_frame_time_critical_msg">
+	</floater.string>
+	<floater.string name="server_frame_time_critical_msg">
 		Velocità dei frame al di sotto di [SERVER_FRAME_RATE_CRITICAL]
-	</string>
-	<string name="server_frame_time_warning_msg">
+	</floater.string>
+	<floater.string name="server_frame_time_warning_msg">
 		Velocità dei frame tra [SERVER_FRAME_RATE_CRITICAL] e [SERVER_FRAME_RATE_WARNING]
-	</string>
-	<string name="server_frame_time_normal_msg">
+	</floater.string>
+	<floater.string name="server_frame_time_normal_msg">
 		Normale
-	</string>
-	<string name="server_physics_cause_msg">
+	</floater.string>
+	<floater.string name="server_physics_cause_msg">
 		Possibile causa: troppi oggetti fisici
-	</string>
-	<string name="server_scripts_cause_msg">
+	</floater.string>
+	<floater.string name="server_scripts_cause_msg">
 		Possibile causa: troppi oggetti scriptati
-	</string>
-	<string name="server_net_cause_msg">
+	</floater.string>
+	<floater.string name="server_net_cause_msg">
 		Possibile causa: eccessivo traffico sulla rete
-	</string>
-	<string name="server_agent_cause_msg">
+	</floater.string>
+	<floater.string name="server_agent_cause_msg">
 		Possibile causa: troppi residenti in movimento nella regione
-	</string>
-	<string name="server_images_cause_msg">
+	</floater.string>
+	<floater.string name="server_images_cause_msg">
 		Possibile causa: troppe elaborazioni di immagini
-	</string>
-	<string name="server_generic_cause_msg">
+	</floater.string>
+	<floater.string name="server_generic_cause_msg">
 		Possibile causa: carico eccessivo del simulatore
-	</string>
-	<string name="smaller_label">
+	</floater.string>
+	<floater.string name="smaller_label">
 		&gt;&gt;
-	</string>
-	<string name="bigger_label">
+	</floater.string>
+	<floater.string name="bigger_label">
 		&lt;&lt;
-	</string>
+	</floater.string>
+	<button label="" label_selected="" name="client_lagmeter" tool_tip="Stato del lag del programma in locale"/>
+	<text name="client">
+		Client
+	</text>
+	<text font="SansSerifSmall" left="145" name="client_text">
+		Normale
+	</text>
+	<text left="30" name="client_lag_cause" right="-10"/>
+	<button label="" label_selected="" name="network_lagmeter" tool_tip="Stato del lag del network"/>
+	<text name="network">
+		Network
+	</text>
+	<text font="SansSerifSmall" name="network_text">
+		Normale
+	</text>
+	<text left="30" name="network_lag_cause" right="-10"/>
+	<button label="" label_selected="" name="server_lagmeter" tool_tip="Stato del lag del server"/>
+	<text name="server">
+		Server
+	</text>
+	<text font="SansSerifSmall" name="server_text">
+		Normale
+	</text>
+	<text left="30" name="server_lag_cause" right="-32"/>
+	<button label="&gt;&gt;" name="minimize" tool_tip="Pulsante per minimizzare"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_land_holdings.xml b/indra/newview/skins/default/xui/it/floater_land_holdings.xml
index 8a6689f6afc..9f2884448d0 100644
--- a/indra/newview/skins/default/xui/it/floater_land_holdings.xml
+++ b/indra/newview/skins/default/xui/it/floater_land_holdings.xml
@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="land holdings floater" title="IL MIO TERRENO">
+<floater name="land holdings floater" title="LA MIA TERRA">
 	<scroll_list name="parcel list">
-		<column label="Nome del terreno" name="name"/>
+		<column label="Parcel" name="name"/>
 		<column label="Regione" name="location"/>
 		<column label="Tipo" name="type"/>
 		<column label="Area" name="area"/>
 	</scroll_list>
 	<button label="Teletrasportati" label_selected="Teletrasportati" name="Teleport" tool_tip="Teletrasportati al centro di questo terreno."/>
-	<button width="130" label="Mostra sulla mappa" label_selected="Mostra sulla mappa" name="Show on Map" tool_tip="Mostra questo terreno sulla mappa."/>
+	<button label="Mappa" label_selected="Mappa" name="Show on Map" tool_tip="Mostra questa terra nella mappa del mondo" width="130"/>
 	<text name="contrib_label">
 		Contributi ai tuoi gruppi:
 	</text>
diff --git a/indra/newview/skins/default/xui/it/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/it/floater_live_lsleditor.xml
index bd50ad3df7e..d86b834c38d 100644
--- a/indra/newview/skins/default/xui/it/floater_live_lsleditor.xml
+++ b/indra/newview/skins/default/xui/it/floater_live_lsleditor.xml
@@ -1,12 +1,15 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="script ed float" title="SCRIPT: NUOVO SCRIPT">
-	<button label="Ripristina" label_selected="Ripristina" name="Reset"/>
-	<check_box label="In esecuzione" name="running" left="4"/>
-	<check_box label="Mono" name="mono" left="106"/>
-	<string name="not_allowed">
-		Non sei autorizzato a visualizzare questo script.
-	</string>
-	<string name="script_running">
+	<floater.string name="not_allowed">
+		Non puoi vedere o modificare questo script, perchè è impostato come &quot;no copy&quot;. Necesiti tutti i permessi per vedere o modificare lo script dentro un oggetto.
+	</floater.string>
+	<floater.string name="script_running">
 		In esecuzione
-	</string>
+	</floater.string>
+	<floater.string name="Title">
+		Script: [NAME]
+	</floater.string>
+	<button label="Ripristina" label_selected="Ripristina" name="Reset"/>
+	<check_box initial_value="true" label="In esecuzione" left="4" name="running"/>
+	<check_box initial_value="true" label="Mono" left="106" name="mono"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_lsl_guide.xml b/indra/newview/skins/default/xui/it/floater_lsl_guide.xml
index 4241a32ec1b..b699b280b63 100644
--- a/indra/newview/skins/default/xui/it/floater_lsl_guide.xml
+++ b/indra/newview/skins/default/xui/it/floater_lsl_guide.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="script ed float" title="LSL WIKI">
 	<check_box label="Segui il cursore" name="lock_check"/>
-	<combo_box label="Blocca" name="history_combo" left_delta="120" width="70"/>
-	<button label="Indietro" name="back_btn" left_delta="75"/>
+	<combo_box label="Blocca" left_delta="120" name="history_combo" width="70"/>
+	<button label="Indietro" left_delta="75" name="back_btn"/>
 	<button label="Avanti" name="fwd_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_media_settings.xml b/indra/newview/skins/default/xui/it/floater_media_settings.xml
new file mode 100644
index 00000000000..b99a11b8816
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_media_settings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="media_settings" title="IMPOSTAZIONI MEDIA">
+	<button label="OK" label_selected="OK" name="OK"/>
+	<button label="Cancella" label_selected="Cancella" name="Cancel"/>
+	<button label="Applica" label_selected="Applica" name="Apply"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_mem_leaking.xml b/indra/newview/skins/default/xui/it/floater_mem_leaking.xml
index d1809531574..ee3d642fefd 100644
--- a/indra/newview/skins/default/xui/it/floater_mem_leaking.xml
+++ b/indra/newview/skins/default/xui/it/floater_mem_leaking.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="MemLeak" title="SIMULAZIONE DI PERDITÀ DI MEMORIA">
+<floater name="MemLeak" title="SIMULA UNA PERDITA DI MEMORIA">
 	<spinner label="Perdità di velocità (bytes per frame):" name="leak_speed"/>
 	<spinner label="Memoria Persa Max (MB):" name="max_leak"/>
 	<text name="total_leaked_label">
diff --git a/indra/newview/skins/default/xui/it/floater_moveview.xml b/indra/newview/skins/default/xui/it/floater_moveview.xml
index 5bd84d48c8f..edc5d9178da 100644
--- a/indra/newview/skins/default/xui/it/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/it/floater_moveview.xml
@@ -1,13 +1,35 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="move_floater">
-<panel name="panel_actions">
-	<button label="" label_selected="" name="turn left btn" tool_tip="Gira a sinistra"/>
-	<button label="" label_selected="" name="turn right btn" tool_tip="Gira a destra"/>
-	<button label="" label_selected="" name="move up btn" tool_tip="Salta o vola in alto"/>
-	<button label="" label_selected="" name="move down btn" tool_tip="Inchinati o vola in basso"/>
-	<joystick_slide name="slide left btn" tool_tip="Vai a sinistra"/>
-	<joystick_slide name="slide right btn" tool_tip="Vai a destra"/>
-	<joystick_turn name="forward btn" tool_tip="Vai avanti"/>
-	<joystick_turn name="backward btn" tool_tip="Vai indietro"/>
-</panel>
+	<string name="walk_forward_tooltip">
+		Cammina in avanti (premi Freccia Sù o W)
+	</string>
+	<string name="walk_back_tooltip">
+		Cammina indietro (premi Freccia Giù o S)
+	</string>
+	<string name="run_forward_tooltip">
+		Corri in avanti (premi Freccia Sù o W)
+	</string>
+	<string name="run_back_tooltip">
+		Corri indietro (premi Freccia Giù o S)
+	</string>
+	<string name="fly_forward_tooltip">
+		Vola in avanti (premi Freccia Sù o W)
+	</string>
+	<string name="fly_back_tooltip">
+		Vola indietro (premi Freccia Giù o S)
+	</string>
+	<panel name="panel_actions">
+		<button label="" label_selected="" name="turn left btn" tool_tip="Gira a sinistra (premi Freccia Sinistra o A)"/>
+		<button label="" label_selected="" name="turn right btn" tool_tip="Gira a destra (premi Freccia Destra o D)"/>
+		<button label="" label_selected="" name="move up btn" tool_tip="Vola in alto, premi &quot;E&quot;"/>
+		<button label="" label_selected="" name="move down btn" tool_tip="Vola in basso, premi &quot;C&quot;"/>
+		<joystick_turn name="forward btn" tool_tip="Cammina in avanti (premi Freccia Sù o W)"/>
+		<joystick_turn name="backward btn" tool_tip="Cammina indietro (premi Freccia Giù o S)"/>
+	</panel>
+	<panel name="panel_modes">
+		<button label="" name="mode_walk_btn" tool_tip="Modalità per camminare"/>
+		<button label="" name="mode_run_btn" tool_tip="Modalità per correre"/>
+		<button label="" name="mode_fly_btn" tool_tip="Modalità di volo"/>
+		<button label="Ferma il volo" name="stop_fly_btn" tool_tip="Ferma il volo"/>
+	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_mute_object.xml b/indra/newview/skins/default/xui/it/floater_mute_object.xml
index a72bfe96815..81cd46ec4d0 100644
--- a/indra/newview/skins/default/xui/it/floater_mute_object.xml
+++ b/indra/newview/skins/default/xui/it/floater_mute_object.xml
@@ -1,12 +1,14 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="mute by name" title="IGNORA L&apos;OGGETTO DAL NOME">
+<floater name="mute by name" title="BLOCCA OGGETTO PER NOME">
 	<text name="message">
-		Ignora per nome ha effetti sull&apos;oggetto in chat e IM, non
-nei suoni. Devi scrivere esattamente il nome dell&apos;oggetto.
+		Blocca un oggetto:
 	</text>
 	<line_editor name="object_name">
 		Nome dell&apos;oggetto
 	</line_editor>
+	<text name="note">
+		* Blocca solo il testo dell&apos;oggetto, non i suoni
+	</text>
 	<button label="OK" name="OK"/>
 	<button label="Annulla" name="Cancel"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_nearby_chat.xml b/indra/newview/skins/default/xui/it/floater_nearby_chat.xml
new file mode 100644
index 00000000000..364b62fbdb3
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_nearby_chat.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="nearby_chat" title="CHAT VICINA"/>
diff --git a/indra/newview/skins/default/xui/it/floater_openobject.xml b/indra/newview/skins/default/xui/it/floater_openobject.xml
index 0c2029e18e4..d8144c7cd52 100644
--- a/indra/newview/skins/default/xui/it/floater_openobject.xml
+++ b/indra/newview/skins/default/xui/it/floater_openobject.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="objectcontents" title="CONTENUTO DELL&apos;OGGETTO">
+<floater name="objectcontents" title="CONTENUTO DEGLI OGGETTI">
 	<text name="object_name">
 		[DESC]:
 	</text>
diff --git a/indra/newview/skins/default/xui/it/floater_outgoing_call.xml b/indra/newview/skins/default/xui/it/floater_outgoing_call.xml
new file mode 100644
index 00000000000..b4536e31ccc
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_outgoing_call.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="outgoing call" title="CHIAMANDO">
+	<floater.string name="localchat">
+		Voice Chat nei dintorni
+	</floater.string>
+	<floater.string name="anonymous">
+		anonimo
+	</floater.string>
+	<floater.string name="VoiceInviteP2P">
+		stà chiamando.
+	</floater.string>
+	<floater.string name="VoiceInviteAdHoc">
+		ha aderito ad una chiamata Voice Chat con una chat in conferenza.
+	</floater.string>
+	<text name="connecting">
+		Connettendo a [CALLEE_NAME]
+	</text>
+	<text name="calling">
+		Chiamando [CALLEE_NAME]
+	</text>
+	<text name="noanswer">
+		Nessuna risposta.  Per favore riprova più tardi.
+	</text>
+	<text name="leaving">
+		Abbandonando [CURRENT_CHAT].
+	</text>
+	<button label="Cancella" label_selected="Cancella" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_pay.xml b/indra/newview/skins/default/xui/it/floater_pay.xml
index 4889f97ec7c..59004bbbd70 100644
--- a/indra/newview/skins/default/xui/it/floater_pay.xml
+++ b/indra/newview/skins/default/xui/it/floater_pay.xml
@@ -1,22 +1,26 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="Give Money" title="">
-	<button label="1 L$" label_selected="1 L$" name="fastpay 1" left="118" width="80" />
-	<button label="5 L$" label_selected="5 L$" name="fastpay 5" left="210"/>
-	<button label="10 L$" label_selected="10 L$" name="fastpay 10" left="118" width="80" />
-	<button label="20 L$" label_selected="20 L$" name="fastpay 20" left="210"/>
-	<button label="Paga" label_selected="Paga" name="pay btn" left="127"/>
-	<button label="Annulla" label_selected="Annulla" name="cancel btn" left="210"/>
-	<text name="payee_label" left="5" width="105">
-		Paga residente:
+	<string name="payee_group">
+		Paga Gruppo
+	</string>
+	<string name="payee_resident">
+		Paga Residente
+	</string>
+	<text left="5" name="payee_label" width="105">
+		Paga:
 	</text>
-	<text name="payee_name" left="115">
+	<icon name="icon_person" tool_tip="Persona"/>
+	<text left="115" name="payee_name">
 		[FIRST] [LAST]
 	</text>
-	<text name="fastpay text" width="110" halign="left">
-		Pagamento veloce:
-	</text>
-	<text name="amount text" left="4" >
-		Ammontare:
+	<button label="1 L$" label_selected="1 L$" left="118" name="fastpay 1" width="80"/>
+	<button label="5 L$" label_selected="5 L$" left="210" name="fastpay 5"/>
+	<button label="10 L$" label_selected="10 L$" left="118" name="fastpay 10" width="80"/>
+	<button label="20 L$" label_selected="20 L$" left="210" name="fastpay 20"/>
+	<text left="4" name="amount text">
+		O, scegli importo:
 	</text>
 	<line_editor left="70" name="amount" width="49"/>
+	<button label="Paga" label_selected="Paga" left="127" name="pay btn"/>
+	<button label="Annulla" label_selected="Annulla" left="210" name="cancel btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_pay_object.xml b/indra/newview/skins/default/xui/it/floater_pay_object.xml
index c41c0ba41eb..c51a2b7b317 100644
--- a/indra/newview/skins/default/xui/it/floater_pay_object.xml
+++ b/indra/newview/skins/default/xui/it/floater_pay_object.xml
@@ -1,31 +1,30 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="Give Money" title="">
-	<text name="payee_group" width="100" halign="left">
-		Paga il gruppo:
-	</text>
-	<text name="payee_resident" width="120" halign="left">
-		Paga il residente:
-	</text>
-	<text name="payee_name" left="120">
+	<string halign="left" name="payee_group" width="100">
+		Paga Gruppo
+	</string>
+	<string halign="left" name="payee_resident" width="120">
+		Pags Residente
+	</string>
+	<icon name="icon_person" tool_tip="Persona"/>
+	<text left="120" name="payee_name">
 		[FIRST] [LAST]
 	</text>
-	<text name="object_name_label" left="5" width="110" halign="left">
+	<text halign="left" left="5" name="object_name_label" width="110">
 		Mediante l&apos;oggetto:
 	</text>
-	<text name="object_name_text" left="120" >
+	<icon name="icon_object" tool_tip="Oggetti"/>
+	<text left="120" name="object_name_text">
 		...
 	</text>
-	<text name="fastpay text" width="115" halign="left">
-		Pagamento diretto:
-	</text>
-	<text name="amount text" left="5" halign="left">
-		Ammontare:
+	<button label="1 L$" label_selected="1 L$" left="125" name="fastpay 1" width="70"/>
+	<button label="5 L$" label_selected="5 L$" left="200" name="fastpay 5" width="70"/>
+	<button label="10 L$" label_selected="10 L$" left="125" name="fastpay 10" width="70"/>
+	<button label="20 L$" label_selected="20 L$" left="200" name="fastpay 20" width="70"/>
+	<text halign="left" left="5" name="amount text">
+		O, scegli importo:
 	</text>
-	<button label="1 L$" label_selected="1 L$" name="fastpay 1" left="125" width="70"/>
-	<button label="5 L$" label_selected="5 L$" name="fastpay 5" left="200" width="70"/>
-	<button label="10 L$" label_selected="10 L$" name="fastpay 10" left="125" width="70"/>
-	<button label="20 L$" label_selected="20 L$" name="fastpay 20" left="200" width="70"/>
+	<line_editor left="74" name="amount" width="50"/>
 	<button label="Paga" label_selected="Paga" name="pay btn"/>
 	<button label="Cancella" label_selected="Cancella" name="cancel btn"/>
-	<line_editor left="74" name="amount" width="50" />
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_perm_prefs.xml b/indra/newview/skins/default/xui/it/floater_perm_prefs.xml
index 46de31455bb..67e40939513 100644
--- a/indra/newview/skins/default/xui/it/floater_perm_prefs.xml
+++ b/indra/newview/skins/default/xui/it/floater_perm_prefs.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="perm prefs" title="PERMESSI DI BASE DI IMPORTAZIONE">
+<floater name="perm prefs" title="PERMESSI di UPLOAD in DEFAULT">
 	<panel label="Permessi" name="permissions">
 		<button label="?" label_selected="?" name="help"/>
 		<check_box label="Condividi con il gruppo" name="share_with_group"/>
diff --git a/indra/newview/skins/default/xui/it/floater_postcard.xml b/indra/newview/skins/default/xui/it/floater_postcard.xml
index 5ea3b634d44..de246db8266 100644
--- a/indra/newview/skins/default/xui/it/floater_postcard.xml
+++ b/indra/newview/skins/default/xui/it/floater_postcard.xml
@@ -1,21 +1,21 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Postcard" title="INVIA LA FOTOGRAFIA VIA EMAIL">
+<floater name="Postcard" title="ISTANTANEA IN EMAIL">
 	<text name="to_label" width="135">
 		Email del destinatario:
 	</text>
-	<line_editor name="to_form" left="143" width="127" />
+	<line_editor left="143" name="to_form" width="127"/>
 	<text name="from_label">
 		La tua email:
 	</text>
-	<line_editor name="from_form" left="143" width="127" />
+	<line_editor left="143" name="from_form" width="127"/>
 	<text name="name_label">
 		Il tuo nome:
 	</text>
-	<line_editor name="name_form" left="143" width="127" />
+	<line_editor left="143" name="name_form" width="127"/>
 	<text name="subject_label">
 		Soggetto:
 	</text>
-	<line_editor name="subject_form" left="143" width="127" />
+	<line_editor left="143" name="subject_form" width="127"/>
 	<line_editor label="Scrivi il soggetto qui." name="subject_form"/>
 	<text name="msg_label">
 		Messaggio:
@@ -29,12 +29,12 @@
 	<button label="Annulla" name="cancel_btn"/>
 	<button label="Invia" name="send_btn"/>
 	<string name="default_subject">
-		Cartolina da [SECOND_LIFE]
+		Cartolina da [SECOND_LIFE].
 	</string>
 	<string name="default_message">
 		Vieni a vedere!
 	</string>
 	<string name="upload_message">
-		In spedizione...
+		Spedendo...
 	</string>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_preferences.xml b/indra/newview/skins/default/xui/it/floater_preferences.xml
index 172449554d3..a76b9e3e27d 100644
--- a/indra/newview/skins/default/xui/it/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/it/floater_preferences.xml
@@ -1,9 +1,15 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Preferences" title="PREFERENZE" min_width="350" width="646">
+<floater min_width="350" name="Preferences" title="PREFERENZE" width="646">
 	<button label="OK" label_selected="OK" name="OK"/>
 	<button label="Annulla" label_selected="Annulla" name="Cancel"/>
-	<button label="Applica" label_selected="Applica" name="Apply"/>
-	<button label="Informazioni..." label_selected="Informazioni..." name="About..."/>
-	<button label="Aiuto" label_selected="Aiuto" name="Help"/>
-	<tab_container name="pref core" tab_width="146" width="646" />
+	<tab_container name="pref core" tab_width="146" width="646">
+		<panel label="Generale" name="general"/>
+		<panel label="Grafica" name="display"/>
+		<panel label="Privacy" name="im"/>
+		<panel label="Suono" name="audio"/>
+		<panel label="Chat" name="chat"/>
+		<panel label="Notifiche" name="msgs"/>
+		<panel label="Configurazione" name="input"/>
+		<panel label="Avanzato" name="advanced1"/>
+	</tab_container>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_preview_animation.xml b/indra/newview/skins/default/xui/it/floater_preview_animation.xml
index e9e0252613b..006198781ba 100644
--- a/indra/newview/skins/default/xui/it/floater_preview_animation.xml
+++ b/indra/newview/skins/default/xui/it/floater_preview_animation.xml
@@ -1,8 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="preview_anim">
+	<floater.string name="Title">
+		Animazione: [NAME]
+	</floater.string>
 	<text name="desc txt">
 		Descrizione:
 	</text>
-	<button left="20" width="131" label="Esegui inworld" label_selected="Ferma" name="Anim play btn" tool_tip="Esegui questa animazione così che altri possano vederla."/>
-	<button left="162" width="125" label="Esegui localmente" label_selected="Ferma" name="Anim audition btn" tool_tip="Esegui questa animazione così che solo tu possa vederla."/>
+	<button label="Esegui inworld" label_selected="Ferma" left="20" name="Anim play btn" tool_tip="Riproduci questa animazione così che gli altri possano vederla" width="131"/>
+	<button label="Esegui localmente" label_selected="Ferma" left="162" name="Anim audition btn" tool_tip="Riproduci questa animazione così che solo tu possa vederla" width="125"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_preview_classified.xml b/indra/newview/skins/default/xui/it/floater_preview_classified.xml
index 5819bd37a53..c617f81f7bb 100644
--- a/indra/newview/skins/default/xui/it/floater_preview_classified.xml
+++ b/indra/newview/skins/default/xui/it/floater_preview_classified.xml
@@ -1,2 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="classified_preview" title="INFORMAZIONE RISERVATA"/>
+<floater name="classified_preview" title="INFORMAZIONI RISERVATE">
+	<floater.string name="Title">
+		Riservato: [NAME]
+	</floater.string>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_preview_event.xml b/indra/newview/skins/default/xui/it/floater_preview_event.xml
index dca38c363f6..1e1653e7581 100644
--- a/indra/newview/skins/default/xui/it/floater_preview_event.xml
+++ b/indra/newview/skins/default/xui/it/floater_preview_event.xml
@@ -1,2 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="event_preview" title="INFORMAZIONE SULL&apos;EVENTO"/>
+<floater name="event_preview" title="INFORMAZIONI SULL&apos;EVENTO">
+	<floater.string name="Title">
+		Evento: [NAME]
+	</floater.string>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_preview_gesture.xml b/indra/newview/skins/default/xui/it/floater_preview_gesture.xml
index 60d3a7710ef..850f4c21acc 100644
--- a/indra/newview/skins/default/xui/it/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/it/floater_preview_gesture.xml
@@ -1,14 +1,29 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="gesture_preview">
-	<string name="stop_txt">
+	<floater.string name="step_anim">
+		Animazione da riprodurre:
+	</floater.string>
+	<floater.string name="step_sound">
+		Suono da riprodurre:
+	</floater.string>
+	<floater.string name="step_chat">
+		Scrivi in chat per dire:
+	</floater.string>
+	<floater.string name="step_wait">
+		Attendi:
+	</floater.string>
+	<floater.string name="stop_txt">
 		Stop
-	</string>
-	<string name="preview_txt">
+	</floater.string>
+	<floater.string name="preview_txt">
 		Anteprima
-	</string>
-	<string name="none_text">
+	</floater.string>
+	<floater.string name="none_text">
 		-- Nulla --
-	</string>
+	</floater.string>
+	<floater.string name="Title">
+		Gesture: [NAME]
+	</floater.string>
 	<text name="desc_label">
 		Descrizione:
 	</text>
@@ -22,36 +37,29 @@
 	<text name="key_label">
 		Scorciatoia da tastiera:
 	</text>
-	<combo_box label="Nessuno" name="modifier_combo" left="156" width="76"/>
-	<combo_box label="Nessuno" name="key_combo" width="76" left_delta="80"/>
+	<combo_box label="Nessuno" left="156" name="modifier_combo" width="76"/>
+	<combo_box label="Nessuno" left_delta="80" name="key_combo" width="76"/>
 	<text name="library_label">
 		Libreria:
 	</text>
+	<scroll_list name="library_list"/>
+	<button label="Aggiungi &gt;&gt;" name="add_btn"/>
 	<text name="steps_label">
 		Fasi:
 	</text>
-	<scroll_list name="library_list">
-		Animation
-Suono
-Chat
-Pausa
-	</scroll_list>
-	<button label="Aggiungi &gt;&gt;" name="add_btn"/>
-	<button label="Vai su" name="up_btn"/>
-	<button label="Vai giù" name="down_btn"/>
+	<button label="Sù" name="up_btn"/>
+	<button label="Giù" name="down_btn"/>
 	<button label="Elimina" name="delete_btn"/>
-	<text name="help_label">
-		Tutti i passi avvengono
-simultaneamente, a meno che tu
-non aggiunga pause.
-	</text>
 	<radio_group name="animation_trigger_type">
-		<radio_item name="start" label="Avvio" />
-		<radio_item name="stop" label="Stop" />
+		<radio_item label="Inizia" name="start"/>
+		<radio_item label="Stop" name="stop"/>
 	</radio_group>
-	<check_box left="226" label="finché le animazioni sono eseguite" name="wait_anim_check"/>
+	<check_box label="finché le animazioni sono eseguite" left="226" name="wait_anim_check"/>
 	<check_box label="tempo in secondi" name="wait_time_check"/>
-	<line_editor left_delta="114" name="wait_time_editor" />
+	<line_editor left_delta="114" name="wait_time_editor"/>
+	<text name="help_label">
+		Tutte le fasi avvengono simultaneamente, a meno che non aggiungi una fase attendi.
+	</text>
 	<check_box label="Attiva" name="active_check" tool_tip="Le gesture attivate possono essere eseguite scrivendo in chat la parola chiave o premendo i tasti chiave. Le gesture generalmente si disattivano quando c&apos;è un conflitto nei relativi tasti."/>
 	<button label="Anteprima" name="preview_btn"/>
 	<button label="Salva" name="save_btn"/>
diff --git a/indra/newview/skins/default/xui/it/floater_preview_gesture_info.xml b/indra/newview/skins/default/xui/it/floater_preview_gesture_info.xml
new file mode 100644
index 00000000000..660b868cae4
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_preview_gesture_info.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Gesture" title="GESTURE SHORTCUT"/>
diff --git a/indra/newview/skins/default/xui/it/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/it/floater_preview_gesture_shortcut.xml
new file mode 100644
index 00000000000..942d5ed1cee
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_preview_gesture_shortcut.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Gesture" title="TASTO RAPIDO PER GESTURE">
+	<text name="trigger_label">
+		Chat:
+	</text>
+	<text name="key_label">
+		Tastiera:
+	</text>
+	<combo_box label="Nessuno" name="modifier_combo"/>
+	<combo_box label="Nessuno" name="key_combo"/>
+	<text name="replace_text" tool_tip="Sostituisci la parola chiave con queste parole. Per esempio, parola chiave &apos;ciao&apos; sostituendo con &apos;buongiorno&apos; cambierà la chat da &apos;Io dico ciao&apos; in &apos;Io dico buongiorno&apos; non appena attiverete la gesture!">
+		Sostituisci:
+	</text>
+	<line_editor name="replace_editor" tool_tip="Sostituisci la parola chiave con queste parole. Per esempio, parola chiave &apos;ciao&apos; sostituendo con &apos;buongiorno&apos; cambierà la chat da &apos;Io dico ciao&apos; in &apos;Io dico buongiorno&apos; non appena attiverete la gesture"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_preview_gesture_steps.xml b/indra/newview/skins/default/xui/it/floater_preview_gesture_steps.xml
new file mode 100644
index 00000000000..7c1f55ddbac
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_preview_gesture_steps.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Gesture" title="TASTO RAPIDO GESTURE"/>
diff --git a/indra/newview/skins/default/xui/it/floater_preview_notecard.xml b/indra/newview/skins/default/xui/it/floater_preview_notecard.xml
index 81a51223b05..08f50872427 100644
--- a/indra/newview/skins/default/xui/it/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/it/floater_preview_notecard.xml
@@ -1,16 +1,22 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview notecard" title="NOTA:">
-	<button label="Salva" label_selected="Salva" name="Save"/>
+<floater name="preview notecard" title="NOTE:">
+	<floater.string name="no_object">
+		Impossibile trovare l&apos;oggetto che contiene questa nota.
+	</floater.string>
+	<floater.string name="not_allowed">
+		Non hai i permessi per leggere questa nota.
+	</floater.string>
+	<floater.string name="Title">
+		Notecard: [NAME]
+	</floater.string>
+	<floater.string label="Salva" label_selected="Salva" name="Save">
+		Salva
+	</floater.string>
 	<text name="desc txt">
 		Descrizione:
 	</text>
 	<text_editor name="Notecard Editor">
 		In caricamento...
 	</text_editor>
-	<string name="no_object">
-		Impossibile trovare l&apos;oggetto che contiene questa nota.
-	</string>
-	<string name="not_allowed">
-		Non ti è permesso vedere questa nota.
-	</string>
+	<button label="Salva" label_selected="Salva" name="Save"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_preview_sound.xml b/indra/newview/skins/default/xui/it/floater_preview_sound.xml
index 5fd015f7fef..182243561cf 100644
--- a/indra/newview/skins/default/xui/it/floater_preview_sound.xml
+++ b/indra/newview/skins/default/xui/it/floater_preview_sound.xml
@@ -1,8 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="preview_sound">
+	<floater.string name="Title">
+		Suono: [NAME]
+	</floater.string>
 	<text name="desc txt">
 		Descrizione:
 	</text>
-	<button label="Avvia localmente" label_selected="Avvia localmente" name="Sound audition btn" tool_tip="Avvia questo suono in modo che sia ascoltato solo da te."/>
-	<button label="Avvia inworld" label_selected="Avvia inworld" name="Sound play btn" tool_tip="Avvia questo suono in modo che sia ascoltato da tutti."/>
+	<button label="Avvia inworld" label_selected="Avvia inworld" name="Sound play btn" tool_tip="Riproduci questo suono in modo che gli altri possano sentirlo"/>
+	<button label="Avvia localmente" label_selected="Avvia localmente" name="Sound audition btn" tool_tip="Riproduci questo suono in modo che solo tu possa sentirlo"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_preview_texture.xml b/indra/newview/skins/default/xui/it/floater_preview_texture.xml
index e3232730e2e..dd24079ea3b 100644
--- a/indra/newview/skins/default/xui/it/floater_preview_texture.xml
+++ b/indra/newview/skins/default/xui/it/floater_preview_texture.xml
@@ -1,9 +1,44 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="preview_texture">
+	<floater.string name="Title">
+		Texture: [NAME]
+	</floater.string>
+	<floater.string name="Copy">
+		Copia nell&apos;Inventario
+	</floater.string>
 	<text name="desc txt">
 		Descrizione:
 	</text>
 	<text name="dimensions">
-		Dimensioni: [WIDTH] x [HEIGHT]
+		[WIDTH]px x [HEIGHT]px
 	</text>
+	<combo_box name="combo_aspect_ratio" tool_tip="Anteprima del rapporto d&apos;aspetto impostato">
+		<combo_item name="Unconstrained">
+			Libero
+		</combo_item>
+		<combo_item name="1:1" tool_tip="Immagine del Gruppo o Profilo nel Mondo Reale">
+			1:1
+		</combo_item>
+		<combo_item name="4:3" tool_tip="[SECOND_LIFE] profilo">
+			4:3
+		</combo_item>
+		<combo_item name="10:7" tool_tip="Annunci ed elenco del Cerca, landmarks">
+			10:7
+		</combo_item>
+		<combo_item name="3:2" tool_tip="Info sul terreno">
+			3:2
+		</combo_item>
+		<combo_item name="16:10">
+			16:10
+		</combo_item>
+		<combo_item name="16:9" tool_tip="Preferiti nel Profilo">
+			16:9
+		</combo_item>
+		<combo_item name="2:1">
+			2:1
+		</combo_item>
+	</combo_box>
+	<button label="OK" name="keep"/>
+	<button label="Cancella" name="discard"/>
+	<button label="Salva come:" name="save_tex_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_region_info.xml b/indra/newview/skins/default/xui/it/floater_region_info.xml
index a715cf1f06c..98808e4b55c 100644
--- a/indra/newview/skins/default/xui/it/floater_region_info.xml
+++ b/indra/newview/skins/default/xui/it/floater_region_info.xml
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="regioninfo" title="REGIONE/PROPRIETÀ"/>
+<floater name="regioninfo" title="REGIONE/PROPRIETA&apos;"/>
diff --git a/indra/newview/skins/default/xui/it/floater_report_abuse.xml b/indra/newview/skins/default/xui/it/floater_report_abuse.xml
index 4b969354fed..a1e430b6b23 100644
--- a/indra/newview/skins/default/xui/it/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/it/floater_report_abuse.xml
@@ -1,11 +1,14 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="floater_report_abuse" title="DENUNCIA DI ABUSO">
-	<check_box label="Includi una fotografia" name="screen_check"/>
+	<floater.string name="Screenshot">
+		Fotografia
+	</floater.string>
+	<check_box label="Utilizza questa fotografia" name="screen_check"/>
 	<text name="reporter_title">
 		Segnalato da:
 	</text>
 	<text name="reporter_field">
-		Loremipsum Dolorsitamut
+		Loremipsum Dolorsitamut Longnamez
 	</text>
 	<text name="sim_title">
 		Regione:
@@ -20,11 +23,11 @@
 		{128.1, 128.1, 15.4}
 	</text>
 	<text name="select_object_label">
-		Clicca sul pulsante e poi sull&apos;oggetto:
+		Clicca sul pulsante, poi sull&apos;oggetto offensivo:
 	</text>
 	<button label="" label_selected="" name="pick_btn" tool_tip="Selezionatore di oggetti - Identifica un oggetto come argomento di questa segnalazione"/>
 	<text name="object_name_label">
-		Nome:
+		Oggetto:
 	</text>
 	<text name="object_name">
 		Consetetur Sadipscing
@@ -33,54 +36,53 @@
 		Proprietario:
 	</text>
 	<text name="owner_name">
-		Hendrerit Vulputate
+		Hendrerit Vulputate Kamawashi Longname
 	</text>
 	<combo_box name="category_combo" tool_tip="Categoria -- scegli la categoria che descrive meglio questa segnalazione">
-		<combo_box.item name="Select_category" label="Scegli la categoria"/>
-		<combo_box.item name="Age__Age_play" label="Età &gt; Far finta di essere minore"/>
-		<combo_box.item name="Age__Adult_resident_on_Teen_Second_Life" label="Età &gt; Residente adulto nella Teen Second Life"/>
-		<combo_box.item name="Age__Underage_resident_outside_of_Teen_Second_Life" label="Età &gt; Residente minorenne al di fuori della &apos;Second Life per Teenager&apos;"/>
-		<combo_box.item name="Assault__Combat_sandbox___unsafe_area" label="Assalto &gt; sandbox da combattimento / area pericolosa"/>
-		<combo_box.item name="Assault__Safe_area" label="Assalto &gt; Area sicura"/>
-		<combo_box.item name="Assault__Weapons_testing_sandbox" label="Assalto &gt; Test di armi in sandbox"/>
-		<combo_box.item name="Commerce__Failure_to_deliver_product_or_service" label="Commercio &gt; Problema nella consegna di un prodotto o servizio"/>
-		<combo_box.item name="Disclosure__Real_world_information" label="Divulgazione &gt; Informazioni del mondo reale"/>
-		<combo_box.item name="Disclosure__Remotely_monitoring chat" label="Divulgazione &gt; Monitoraggio remoto di chat"/>
-		<combo_box.item name="Disclosure__Second_Life_information_chat_IMs" label="Divulgazione &gt; Informazione/chat/IMs di Second Life"/>
-		<combo_box.item name="Disturbing_the_peace__Unfair_use_of_region_resources" label="Disturbo della quiete &gt; Uso sleale delle risorse di una regione"/>
-		<combo_box.item name="Disturbing_the_peace__Excessive_scripted_objects" label="Disturbo della quiete &gt; Numero eccessivo di oggetti scriptati"/>
-		<combo_box.item name="Disturbing_the_peace__Object_littering" label="Disturbo della quiete &gt; Oggetti messi a soqquadro"/>
-		<combo_box.item name="Disturbing_the_peace__Repetitive_spam" label="Disturbo della quiete &gt; Spam continuato"/>
-		<combo_box.item name="Disturbing_the_peace__Unwanted_advert_spam" label="Disturbo della quiete &gt; Spam pubblicitario non richiesto"/>
-		<combo_box.item name="Fraud__L$" label="Truffa &gt; L$"/>
-		<combo_box.item name="Fraud__Land" label="Truffa &gt; Terreno"/>
-		<combo_box.item name="Fraud__Pyramid_scheme_or_chain_letter" label="Truffa &gt; Multilivello o catena di Sant&apos;Antonio"/>
-		<combo_box.item name="Fraud__US$" label="Truffa &gt; Dollari US$"/>
-		<combo_box.item name="Harassment__Advert_farms___visual_spam" label="Molestie &gt; Territori adibiti a pubblicità / spam visivo"/>
-		<combo_box.item name="Harassment__Defaming_individuals_or_groups" label="Molestie &gt; Diffamazione di individui o gruppi"/>
-		<combo_box.item name="Harassment__Impeding_movement" label="Molestie &gt; Impedimento di movimenti"/>
-		<combo_box.item name="Harassment__Sexual_harassment" label="Molestie &gt; Molestie sessuali"/>
-		<combo_box.item name="Harassment__Solicting_inciting_others_to_violate_ToS" label="Molestie &gt; Sollecitare/incitare altri a violare i Termini di Servizio"/>
-		<combo_box.item name="Harassment__Verbal_abuse" label="Molestie &gt; Abusi verbali"/>
-		<combo_box.item name="Indecency__Broadly_offensive_content_or_conduct" label="Indecenza &gt; Condotta o contenuti largamente offensivi"/>
-		<combo_box.item name="Indecency__Inappropriate_avatar_name" label="Indecenza &gt; Nome di un avatar inappropriato"/>
-		<combo_box.item name="Indecency__Mature_content_in_PG_region" label="Indecenza &gt; Contenuto o condotta inappropriata in una regione PG"/>
-		<combo_box.item name="Indecency__Inappropriate_content_in_Mature_region" label="Indecenza &gt; Contenuto o condotta inappropriata in una regione Mature"/>
-		<combo_box.item name="Intellectual_property_infringement_Content_Removal" label="Violazione della proprietà intellettuale &gt; Rimozione contenuti"/>
-		<combo_box.item name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit" label="Violazione della proprietà intellettuale &gt; CopyBot o sblocco di permessi"/>
-		<combo_box.item name="Intolerance" label="Intolleranza"/>
-		<combo_box.item name="Land__Abuse_of_sandbox_resources" label="Terreno &gt; Abuso delle risorse di una sandbox"/>
-		<combo_box.item name="Land__Encroachment__Objects_textures" label="Terreno &gt; Invasione &gt; Oggetti/textures"/>
-		<combo_box.item name="Land__Encroachment__Particles" label="Terreno &gt; Invasione &gt; Particelle"/>
-		<combo_box.item name="Land__Encroachment__Trees_plants" label="Terreno &gt; Invasione &gt; Alberi/piante"/>
-		<combo_box.item name="Wagering_gambling" label="Chiedere l&apos;elemosina/gioco d&apos;azzardo"/>
-		<combo_box.item name="Other" label="Altro"/>
+		<combo_box.item label="Scegli la categoria" name="Select_category"/>
+		<combo_box.item label="Età &gt; Far finta di essere minore" name="Age__Age_play"/>
+		<combo_box.item label="Età &gt; Residente adulto nella Teen Second Life" name="Age__Adult_resident_on_Teen_Second_Life"/>
+		<combo_box.item label="Età &gt; Residente minorenne al di fuori della &apos;Second Life per Teenager&apos;" name="Age__Underage_resident_outside_of_Teen_Second_Life"/>
+		<combo_box.item label="Assalto &gt; sandbox da combattimento / area pericolosa" name="Assault__Combat_sandbox___unsafe_area"/>
+		<combo_box.item label="Assalto &gt; Area sicura" name="Assault__Safe_area"/>
+		<combo_box.item label="Assalto &gt; Test di armi in sandbox" name="Assault__Weapons_testing_sandbox"/>
+		<combo_box.item label="Commercio &gt; Problema nella consegna di un prodotto o servizio" name="Commerce__Failure_to_deliver_product_or_service"/>
+		<combo_box.item label="Divulgazione &gt; Informazioni del mondo reale" name="Disclosure__Real_world_information"/>
+		<combo_box.item label="Divulgazione &gt; Monitoraggio remoto di chat" name="Disclosure__Remotely_monitoring chat"/>
+		<combo_box.item label="Divulgazione &gt; Informazione/chat/IMs di Second Life" name="Disclosure__Second_Life_information_chat_IMs"/>
+		<combo_box.item label="Disturbo della quiete &gt; Uso sleale delle risorse di una regione" name="Disturbing_the_peace__Unfair_use_of_region_resources"/>
+		<combo_box.item label="Disturbo della quiete &gt; Numero eccessivo di oggetti scriptati" name="Disturbing_the_peace__Excessive_scripted_objects"/>
+		<combo_box.item label="Disturbo della quiete &gt; Oggetti messi a soqquadro" name="Disturbing_the_peace__Object_littering"/>
+		<combo_box.item label="Disturbo della quiete &gt; Spam continuato" name="Disturbing_the_peace__Repetitive_spam"/>
+		<combo_box.item label="Disturbo della quiete &gt; Spam pubblicitario non richiesto" name="Disturbing_the_peace__Unwanted_advert_spam"/>
+		<combo_box.item label="Truffa &gt; L$" name="Fraud__L$"/>
+		<combo_box.item label="Truffa &gt; Terreno" name="Fraud__Land"/>
+		<combo_box.item label="Truffa &gt; Multilivello o catena di Sant&apos;Antonio" name="Fraud__Pyramid_scheme_or_chain_letter"/>
+		<combo_box.item label="Truffa &gt; Dollari US$" name="Fraud__US$"/>
+		<combo_box.item label="Molestie &gt; Territori adibiti a pubblicità / spam visivo" name="Harassment__Advert_farms___visual_spam"/>
+		<combo_box.item label="Molestie &gt; Diffamazione di individui o gruppi" name="Harassment__Defaming_individuals_or_groups"/>
+		<combo_box.item label="Molestie &gt; Impedimento di movimenti" name="Harassment__Impeding_movement"/>
+		<combo_box.item label="Molestie &gt; Molestie sessuali" name="Harassment__Sexual_harassment"/>
+		<combo_box.item label="Molestie &gt; Sollecitare/incitare altri a violare i Termini di Servizio" name="Harassment__Solicting_inciting_others_to_violate_ToS"/>
+		<combo_box.item label="Molestie &gt; Abusi verbali" name="Harassment__Verbal_abuse"/>
+		<combo_box.item label="Indecenza &gt; Condotta o contenuti largamente offensivi" name="Indecency__Broadly_offensive_content_or_conduct"/>
+		<combo_box.item label="Indecenza &gt; Nome di un avatar inappropriato" name="Indecency__Inappropriate_avatar_name"/>
+		<combo_box.item label="Indecenza &gt; Contenuto o condotta inappropriata in una regione PG" name="Indecency__Mature_content_in_PG_region"/>
+		<combo_box.item label="Indecenza &gt; Contenuto o condotta inappropriata in una regione Mature" name="Indecency__Inappropriate_content_in_Mature_region"/>
+		<combo_box.item label="Violazione della proprietà intellettuale &gt; Rimozione contenuti" name="Intellectual_property_infringement_Content_Removal"/>
+		<combo_box.item label="Violazione della proprietà intellettuale &gt; CopyBot o sblocco di permessi" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/>
+		<combo_box.item label="Intolleranza" name="Intolerance"/>
+		<combo_box.item label="Terreno &gt; Abuso delle risorse di una sandbox" name="Land__Abuse_of_sandbox_resources"/>
+		<combo_box.item label="Terreno &gt; Invasione &gt; Oggetti/textures" name="Land__Encroachment__Objects_textures"/>
+		<combo_box.item label="Terreno &gt; Invasione &gt; Particelle" name="Land__Encroachment__Particles"/>
+		<combo_box.item label="Terreno &gt; Invasione &gt; Alberi/piante" name="Land__Encroachment__Trees_plants"/>
+		<combo_box.item label="Chiedere l&apos;elemosina/gioco d&apos;azzardo" name="Wagering_gambling"/>
+		<combo_box.item label="Altro" name="Other"/>
 	</combo_box>
 	<text name="abuser_name_title">
 		Nome di chi ha commesso l&apos;abuso:
 	</text>
 	<button label="Scegli un residente" label_selected="" name="select_abuser" tool_tip="Scegli il nome di chi ha commesso l&apos;abuso dalla lista"/>
-	<check_box label="Non conosco il nome di chi ha fatto l&apos;abuso" name="omit_abuser_name" tool_tip="Metti qui la spunta se non sei in grado di fornire il nome di chi ha fatto l&apos;abuso"/>
 	<text name="abuser_name_title2">
 		Luogo dell&apos;abuso:
 	</text>
@@ -91,13 +93,11 @@
 		Dettagli:
 	</text>
 	<text name="bug_aviso">
-		Ti preghiamo di essere circostanziato riguardo data,
-luogo, natura dell&apos;abuso, testo rilevante di chat/IM, e,
-se possibile, indica l&apos;oggetto.
+		Specifica data, luogo, natura dell&apos;abuso, testo rilevante di chat/IM, e se possibile indica l&apos;oggetto.
 	</text>
 	<text name="incomplete_title">
-		Nota: Segnalazioni incomplete non saranno esaminate.
+		* Nota: segnalazioni incomplete non saranno esaminate
 	</text>
-	<button label="Annulla" label_selected="Annulla" name="cancel_btn"/>
 	<button label="Segnala abuso" label_selected="Segnala abuso" name="send_btn"/>
+	<button label="Annulla" label_selected="Annulla" name="cancel_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/it/floater_script_debug_panel.xml
new file mode 100644
index 00000000000..e70a30fa24a
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_script_debug_panel.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="script" short_title="[ALL SCRIPTS]" title="[ALL SCRIPTS]"/>
diff --git a/indra/newview/skins/default/xui/it/floater_script_preview.xml b/indra/newview/skins/default/xui/it/floater_script_preview.xml
index 934ffd53958..94282973977 100644
--- a/indra/newview/skins/default/xui/it/floater_script_preview.xml
+++ b/indra/newview/skins/default/xui/it/floater_script_preview.xml
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="preview lsl text" title="SCRIPT: SCRIPT DI ROTAZIONE">
+	<floater.string name="Title">
+		Script: [NAME]
+	</floater.string>
 	<text name="desc txt">
 		Descrizione:
 	</text>
diff --git a/indra/newview/skins/default/xui/it/floater_script_queue.xml b/indra/newview/skins/default/xui/it/floater_script_queue.xml
index 37eb3e4bbfb..728fbe8c8d9 100644
--- a/indra/newview/skins/default/xui/it/floater_script_queue.xml
+++ b/indra/newview/skins/default/xui/it/floater_script_queue.xml
@@ -1,4 +1,19 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="queue" title="PROGRESSIONE RESET">
+<floater name="queue" title="RESETTA IL PROGRESSO">
+	<floater.string name="Starting">
+		Conteggio [START] degli [COUNT] articoli.
+	</floater.string>
+	<floater.string name="Done">
+		Eseguito.
+	</floater.string>
+	<floater.string name="Resetting">
+		Resettando
+	</floater.string>
+	<floater.string name="Running">
+		In esecuzione
+	</floater.string>
+	<floater.string name="NotRunning">
+		Non in esecuzione
+	</floater.string>
 	<button label="Chiudi" label_selected="Chiudi" name="close"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_script_search.xml b/indra/newview/skins/default/xui/it/floater_script_search.xml
index e5f923f7a3f..3d0b02877e8 100644
--- a/indra/newview/skins/default/xui/it/floater_script_search.xml
+++ b/indra/newview/skins/default/xui/it/floater_script_search.xml
@@ -1,15 +1,15 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="script search" title="CERCA SCRIPT" width="320">
-	<check_box label="Senza distinzione tra maiuscole e minuscole" name="case_text" left="65"/>
+	<check_box label="Senza distinzione tra maiuscole e minuscole" left="65" name="case_text"/>
 	<button label="Cerca" label_selected="Cerca" name="search_btn" width="85"/>
-	<button label="Sostituisci" label_selected="Sostituisci" name="replace_btn" left="100" width="85"/>
-	<button label="Sostituisci tutto" label_selected="Sostituisci tutto" name="replace_all_btn" left="190" width="122"/>
+	<button label="Sostituisci" label_selected="Sostituisci" left="100" name="replace_btn" width="85"/>
+	<button label="Sostituisci tutto" label_selected="Sostituisci tutto" left="190" name="replace_all_btn" width="122"/>
 	<text name="txt" width="60">
 		Cerca
 	</text>
 	<text name="txt2" width="60">
 		Sostituisci
 	</text>
-	<line_editor left="65" name="search_text" width="240" />
-	<line_editor left="65" name="replace_text" width="240" />
+	<line_editor left="65" name="search_text" width="240"/>
+	<line_editor left="65" name="replace_text" width="240"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_search.xml b/indra/newview/skins/default/xui/it/floater_search.xml
new file mode 100644
index 00000000000..6afdd2437ee
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_search.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_search" title="TROVA">
+	<floater.string name="loading_text">
+		Caricando...
+	</floater.string>
+	<floater.string name="done_text">
+		Eseguito
+	</floater.string>
+	<layout_stack name="stack1">
+		<layout_panel name="browser_layout">
+			<text name="refresh_search">
+				Redo search to reflect current God level
+			</text>
+		</layout_panel>
+	</layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_select_key.xml b/indra/newview/skins/default/xui/it/floater_select_key.xml
index 04a77264972..181b7d52920 100644
--- a/indra/newview/skins/default/xui/it/floater_select_key.xml
+++ b/indra/newview/skins/default/xui/it/floater_select_key.xml
@@ -2,6 +2,6 @@
 <floater name="modal container" title="">
 	<button label="Annulla" label_selected="Annulla" name="Cancel"/>
 	<text name="Save item as:">
-		Premi un tasto per selezionare
+		clicca un tasto per impostare la modalità PARLA con il tuo pulsante.
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_sell_land.xml b/indra/newview/skins/default/xui/it/floater_sell_land.xml
index 91712a706bb..2a4fa05b54b 100644
--- a/indra/newview/skins/default/xui/it/floater_sell_land.xml
+++ b/indra/newview/skins/default/xui/it/floater_sell_land.xml
@@ -1,65 +1,65 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="sell land" title="VENDI TERRA">
-    <scroll_container name="profile_scroll">
-    <panel name="scroll_content_panel">
-	<text name="info_parcel_label">
-		Terreno:
-	</text>
-	<text name="info_parcel" left="82">
-		NOME APPEZZAMENTO
-	</text>
-	<text name="info_size_label">
-		Dimensioni:
-	</text>
-	<text name="info_size" left="82">
-		[AREA] m²
-	</text>
-	<text height="28" name="info_action" bottom_delta="-57">
-		Per vendere questo
-terreno:
-	</text>
-	<icon bottom_delta="-86" name="step_price" />
-	<text name="price_label">
-		Imposta prezzo:
-	</text>
-	<text name="price_text">
-		Scegli un prezzo appropriato per questa terra.
-	</text>
-	<text name="price_ld">
-		L$
-	</text>
-	<text name="price_per_m">
-		([PER_METER] L$ per metro quadro)
-	</text>
-	<text name="sell_to_label">
-		Vendi la terra a:
-	</text>
-	<text name="sell_to_text">
-		Scegli se vendere a tutti o ad un compratore in particolare.
-	</text>
-	<combo_box name="sell_to">
-		<combo_box.item name="--selectone--" label="selezionane uno --"/>
-		<combo_box.item name="Anyone" label="Chiunque"/>
-		<combo_box.item name="Specificuser:" label="Utente specifico:"/>
-	</combo_box>
-	<button label="Seleziona..." name="sell_to_select_agent"/>
-	<text name="sell_objects_label">
-		Vendi gli oggetti con la terra?
-	</text>
-	<text name="sell_objects_text">
-		Gli oggetti trasferibili del proprietario della terra sul terreno
-cambieranno proprietario.
-	</text>
-	<radio_group name="sell_objects" bottom_delta="-58" >
-		<radio_item name="no" label="No, voglio mantenere la proprietà degli oggetti" />
-		<radio_item name="yes" label="Si, vendi gli oggetti con la terra" />
-	</radio_group>
-	<button label="Mostra oggetti" name="show_objects"/>
-	<text name="nag_message_label">
-		RICORDA: tutte le vendite sono definitive.
-	</text>
-	<button label="Metti la terra in vendita" name="sell_btn"/>
-	<button label="Annulla" name="cancel_btn"/>
-    </panel>
-    </scroll_container>
+<floater name="sell land" title="VENDI LA TERRA">
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<text name="info_parcel_label">
+				Parcel:
+			</text>
+			<text left="82" name="info_parcel">
+				NOME DEL PARCEL
+			</text>
+			<text name="info_size_label">
+				Misura:
+			</text>
+			<text left="82" name="info_size">
+				[AREA] m²
+			</text>
+			<text bottom_delta="-57" height="28" name="info_action">
+				Vendere questo parcel:
+			</text>
+			<text name="price_label">
+				1. Imposta un prezzo:
+			</text>
+			<text name="price_text">
+				Scegli un prezzo adeguato.
+			</text>
+			<text name="price_ld">
+				L$
+			</text>
+			<line_editor name="price">
+				0
+			</line_editor>
+			<text name="price_per_m">
+				(L$[PER_METER] per m²)
+			</text>
+			<text name="sell_to_label">
+				2. Vendi la terra a:
+			</text>
+			<text name="sell_to_text">
+				Scegli se vendere a chiunque o ad un specifico compratore.
+			</text>
+			<combo_box name="sell_to">
+				<combo_box.item label="- Seleziona uno -" name="--selectone--"/>
+				<combo_box.item label="Chiunque" name="Anyone"/>
+				<combo_box.item label="Persona Specifica:" name="Specificuser:"/>
+			</combo_box>
+			<button label="Seleziona" name="sell_to_select_agent"/>
+			<text name="sell_objects_label">
+				3. Vendi gli oggetti con la terra?
+			</text>
+			<text name="sell_objects_text">
+				Gli oggetti trasferibili del proprietaio della Terra cambieranno proprietà.
+			</text>
+			<radio_group bottom_delta="-58" name="sell_objects">
+				<radio_item label="No, mantieni la proprietà sugli oggetti" name="no"/>
+				<radio_item label="Si, vendi gli oggetti con la terra" name="yes"/>
+			</radio_group>
+			<button label="Mostra Oggetti" name="show_objects"/>
+			<text name="nag_message_label">
+				RICORDA: Tutte le vendite sono definitive.
+			</text>
+			<button label="Imposta Terra in Vendita" name="sell_btn"/>
+			<button label="Cancella" name="cancel_btn"/>
+		</panel>
+	</scroll_container>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_settings_debug.xml b/indra/newview/skins/default/xui/it/floater_settings_debug.xml
index aec3c8aa9d4..385a7ed6e91 100644
--- a/indra/newview/skins/default/xui/it/floater_settings_debug.xml
+++ b/indra/newview/skins/default/xui/it/floater_settings_debug.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="settings_debug" title="CONFIGURAZIONI PER IL DEBUG">
+<floater name="settings_debug" title="DEBUG SETTINGS">
 	<combo_box name="boolean_combo">
-		<combo_box.item name="TRUE" label="VERO"/>
-		<combo_box.item name="FALSE" label="FALSO"/>
+		<combo_box.item label="VERO" name="TRUE"/>
+		<combo_box.item label="FALSO" name="FALSE"/>
 	</combo_box>
-	<color_swatch label="Colore" name="color_swatch"/>
+	<color_swatch label="Colore" name="val_color_swatch"/>
 	<spinner label="x" name="val_spinner_1"/>
 	<spinner label="x" name="val_spinner_2"/>
 	<spinner label="x" name="val_spinner_3"/>
diff --git a/indra/newview/skins/default/xui/it/floater_snapshot.xml b/indra/newview/skins/default/xui/it/floater_snapshot.xml
index e226ce6ffe4..668c3c8c9e2 100644
--- a/indra/newview/skins/default/xui/it/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/it/floater_snapshot.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Snapshot" title="ANTEPRIMA DELLA FOTOGRAFIA" width="247">
+<floater name="Snapshot" title="ANTEPRIMA FOTOGRAFIA" width="247">
 	<text name="type_label">
 		Destinazione della fotografia
 	</text>
 	<radio_group label="Tipo di fotografia" name="snapshot_type_radio" width="228">
-		<radio_item name="postcard" label="Invia via email" />
-		<radio_item name="texture" label="Salva nel tuo inventario ([AMOUNT] L$)" />
-		<radio_item name="local" label="Salva sul tuo pc" />
+		<radio_item label="Invia via email" name="postcard"/>
+		<radio_item label="Salva nel tuo inventario ([AMOUNT] L$)" name="texture"/>
+		<radio_item label="Salva sul tuo pc" name="local"/>
 	</radio_group>
 	<text name="file_size_label">
 		Grandezza del file: [SIZE] KB
@@ -14,13 +14,13 @@
 	<button label="Aggiorna la fotografia" name="new_snapshot_btn"/>
 	<button label="Invia" name="send_btn"/>
 	<button label="Salva ([AMOUNT] L$)" name="upload_btn"/>
-	<flyout_button label="Salva" name="save_btn" tool_tip="Salva l&apos;immagine come file" >
-		<flyout_button_item name="save_item" label="Salva"/>
-		<flyout_button_item name="saveas_item" label="Salva come..."/>
+	<flyout_button label="Salva" name="save_btn" tool_tip="Salva l&apos;immagine come file">
+		<flyout_button_item label="Salva" name="save_item"/>
+		<flyout_button_item label="Salva come..." name="saveas_item"/>
 	</flyout_button>
 	<button label="Annulla" name="discard_btn"/>
-	<button label="Espandi &gt;&gt;" name="more_btn" tool_tip="Opzioni avanzate"/>
-	<button label="&lt;&lt; Diminuisci" name="less_btn" tool_tip="Opzioni avanzate"/>
+	<button label="Espandi &gt;&gt;" name="more_btn" tool_tip="Opzioni Avanzate"/>
+	<button label="&lt;&lt; Diminuisci" name="less_btn" tool_tip="Opzioni Avanzate"/>
 	<text name="type_label2">
 		Grandezza
 	</text>
@@ -28,50 +28,51 @@
 		Formato
 	</text>
 	<combo_box label="Risoluzione" name="postcard_size_combo">
-		<combo_box.item name="CurrentWindow" label="Finestra corrente"/>
-		<combo_box.item name="640x480" label="640x480"/>
-		<combo_box.item name="800x600" label="800x600"/>
-		<combo_box.item name="1024x768" label="1024x768"/>
-		<combo_box.item name="Custom" label="Personalizzata"/>
+		<combo_box.item label="Finestra corrente" name="CurrentWindow"/>
+		<combo_box.item label="640x480" name="640x480"/>
+		<combo_box.item label="800x600" name="800x600"/>
+		<combo_box.item label="1024x768" name="1024x768"/>
+		<combo_box.item label="Personalizzata" name="Custom"/>
 	</combo_box>
 	<combo_box label="Risoluzione" name="texture_size_combo">
-		<combo_box.item name="CurrentWindow" label="Finestra corrente"/>
-		<combo_box.item name="Small(128x128)" label="Piccola (128x128)"/>
-		<combo_box.item name="Medium(256x256)" label="Media (256x256)"/>
-		<combo_box.item name="Large(512x512)" label="Larga (512x512)"/>
-		<combo_box.item name="Custom" label="Personalizzata"/>
+		<combo_box.item label="Finestra corrente" name="CurrentWindow"/>
+		<combo_box.item label="Piccola (128x128)" name="Small(128x128)"/>
+		<combo_box.item label="Media (256x256)" name="Medium(256x256)"/>
+		<combo_box.item label="Larga (512x512)" name="Large(512x512)"/>
+		<combo_box.item label="Personalizzata" name="Custom"/>
 	</combo_box>
 	<combo_box label="Risoluzione" name="local_size_combo">
-		<combo_box.item name="CurrentWindow" label="Finestra corrente"/>
-		<combo_box.item name="320x240" label="320x240"/>
-		<combo_box.item name="640x480" label="640x480"/>
-		<combo_box.item name="800x600" label="800x600"/>
-		<combo_box.item name="1024x768" label="1024x768"/>
-		<combo_box.item name="1280x1024" label="1280x1024"/>
-		<combo_box.item name="1600x1200" label="1600x1200"/>
-		<combo_box.item name="Custom" label="Personalizzata"/>
+		<combo_box.item label="Finestra corrente" name="CurrentWindow"/>
+		<combo_box.item label="320x240" name="320x240"/>
+		<combo_box.item label="640x480" name="640x480"/>
+		<combo_box.item label="800x600" name="800x600"/>
+		<combo_box.item label="1024x768" name="1024x768"/>
+		<combo_box.item label="1280x1024" name="1280x1024"/>
+		<combo_box.item label="1600x1200" name="1600x1200"/>
+		<combo_box.item label="Personalizzata" name="Custom"/>
 	</combo_box>
 	<combo_box label="Formato" name="local_format_combo">
-		<combo_box.item name="PNG" label="PNG"/>
-		<combo_box.item name="JPEG" label="JPEG"/>
-		<combo_box.item name="BMP" label="BMP"/>
+		<combo_box.item label="PNG" name="PNG"/>
+		<combo_box.item label="JPEG" name="JPEG"/>
+		<combo_box.item label="BMP" name="BMP"/>
 	</combo_box>
-	<spinner label="Larghezza" name="snapshot_width" label_width="58" width="116"/>
-	<spinner label="Altezza" name="snapshot_height" label_width="41" width="101" left="130"/>
+	<spinner label="Larghezza" label_width="58" name="snapshot_width" width="116"/>
+	<spinner label="Altezza" label_width="41" left="130" name="snapshot_height" width="101"/>
 	<check_box label="Mantieni le proporzioni" name="keep_aspect_check"/>
 	<slider label="Qualità d&apos;immagine" name="image_quality_slider"/>
 	<text name="layer_type_label" width="55">
 		Fotografa:
 	</text>
-	<combo_box label="Layer dell&apos;immagine" name="layer_types" left="68" width="165">
-		<combo_box.item name="Colors" label="Colori"/>
-		<combo_box.item name="Depth" label="Profondità"/>
-		<combo_box.item name="ObjectMattes" label="Colori primari degli oggetti"/>
+	<combo_box label="Layer dell&apos;immagine" left="68" name="layer_types" width="165">
+		<combo_box.item label="Colori" name="Colors"/>
+		<combo_box.item label="Profondità" name="Depth"/>
+		<combo_box.item label="Colori primari degli oggetti" name="ObjectMattes"/>
 	</combo_box>
 	<check_box label="Mostra l&apos;interfaccia nella fotografia" name="ui_check"/>
 	<check_box bottom_delta="-17" label="Mostra i dispositivi indossati nella foto" name="hud_check"/>
 	<check_box bottom_delta="-17" label="Mantieni aperto dopo aver salvato" name="keep_open_check"/>
-	<check_box bottom_delta="-17" label="Blocca l&apos;anteprima &#10;(Anteprima a schermo intero)" name="freeze_frame_check"/>
+	<check_box bottom_delta="-17" label="Blocca l&apos;anteprima 
+(Anteprima a schermo intero)" name="freeze_frame_check"/>
 	<check_box bottom_delta="-29" label="Auto-Aggiorna" name="auto_snapshot_check"/>
 	<string name="unknown">
 		sconosciuto
diff --git a/indra/newview/skins/default/xui/it/floater_stats.xml b/indra/newview/skins/default/xui/it/floater_stats.xml
new file mode 100644
index 00000000000..7c8e6ba1a18
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_stats.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Statistics" title="STATISTICHE">
+	<scroll_container name="statistics_scroll">
+		<container_view name="statistics_view">
+			<stat_view label="Base" name="basic">
+				<stat_bar label="FPS" name="fps"/>
+				<stat_bar label="Larghezza Banda" name="bandwidth"/>
+				<stat_bar label="Perdita Pacchetti" name="packet_loss"/>
+				<stat_bar label="Tempo Ping Sim" name="ping"/>
+			</stat_view>
+			<stat_view label="Avanzato" name="advanced">
+				<stat_view label="Render" name="render">
+					<stat_bar label="KTris Disegnate" name="ktrisframe"/>
+					<stat_bar label="KTris Disegnate" name="ktrissec"/>
+					<stat_bar label="Totale Oggetti" name="objs"/>
+					<stat_bar label="Nuovi Oggetti" name="newobjs"/>
+				</stat_view>
+				<stat_view label="Texture" name="texture">
+					<stat_bar label="Conteggio" name="numimagesstat"/>
+					<stat_bar label="Conteggio Grezzo" name="numrawimagesstat"/>
+					<stat_bar label="Memoria GL" name="gltexmemstat"/>
+					<stat_bar label="Memoria Formattata" name="formattedmemstat"/>
+					<stat_bar label="Memoria Complessiva" name="rawmemstat"/>
+					<stat_bar label="Memoria Impegnata" name="glboundmemstat"/>
+				</stat_view>
+				<stat_view label="Rete" name="network">
+					<stat_bar label="Pacchetti In Ingresso" name="packetsinstat"/>
+					<stat_bar label="Pacchetti In Uscita" name="packetsoutstat"/>
+					<stat_bar label="Oggetti" name="objectkbitstat"/>
+					<stat_bar label="Texture" name="texturekbitstat"/>
+					<stat_bar label="Risorse Server" name="assetkbitstat"/>
+					<stat_bar label="Layer" name="layerskbitstat"/>
+					<stat_bar label="Effettivi In Ingresso" name="actualinkbitstat"/>
+					<stat_bar label="Effettivi in Uscita" name="actualoutkbitstat"/>
+					<stat_bar label="Operazioni pendenti VFS" name="vfspendingoperations"/>
+				</stat_view>
+			</stat_view>
+			<stat_view label="Simulatore" name="sim">
+				<stat_bar label="Dilatazione temporale" name="simtimedilation"/>
+				<stat_bar label="FPS Sim" name="simfps"/>
+				<stat_bar label="FPS Motore Fisico" name="simphysicsfps"/>
+				<stat_view label="Dettagli Motore Fisico" name="physicsdetail">
+					<stat_bar label="Oggetti Pinzati" name="physicspinnedtasks"/>
+					<stat_bar label="Oggetti a basso LOD" name="physicslodtasks"/>
+					<stat_bar label="Memoria Allocata" name="physicsmemoryallocated"/>
+					<stat_bar label="Agenti Aggiornamenti al Sec" name="simagentups"/>
+					<stat_bar label="Agenti Principali" name="simmainagents"/>
+					<stat_bar label="Agenti Figli" name="simchildagents"/>
+					<stat_bar label="Oggetti" name="simobjects"/>
+					<stat_bar label="Oggetti Attivi" name="simactiveobjects"/>
+					<stat_bar label="Script Attivi" name="simactivescripts"/>
+					<stat_bar label="Eventi Script" name="simscripteps"/>
+					<stat_bar label="Pacchetti In Ingresso" name="siminpps"/>
+					<stat_bar label="Pacchetti In Uscita" name="simoutpps"/>
+					<stat_bar label="Download Pendenti" name="simpendingdownloads"/>
+					<stat_bar label="Upload Pendenti" name="simpendinguploads"/>
+					<stat_bar label="Numero totale byte non risposti" name="simtotalunackedbytes"/>
+				</stat_view>
+				<stat_view label="Tempo (ms)" name="simperf">
+					<stat_bar label="Tempo Totale Frame" name="simframemsec"/>
+					<stat_bar label="Tempo Netto" name="simnetmsec"/>
+					<stat_bar label="Tempo Motore Fisico" name="simsimphysicsmsec"/>
+					<stat_bar label="Tempo Simulazione" name="simsimothermsec"/>
+					<stat_bar label="Tempo Agenti" name="simagentmsec"/>
+					<stat_bar label="Tempo Immagini" name="simimagesmsec"/>
+					<stat_bar label="Tempo Script" name="simscriptmsec"/>
+				</stat_view>
+			</stat_view>
+		</container_view>
+	</scroll_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_sys_well.xml b/indra/newview/skins/default/xui/it/floater_sys_well.xml
new file mode 100644
index 00000000000..057d3657d04
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_sys_well.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="sys_well_window" title="NOTIFICHE">
+	<string name="title_im_well_window">
+		SESSIONE IM
+	</string>
+	<string name="title_notification_well_window">
+		NOTIFICHE
+	</string>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_telehub.xml b/indra/newview/skins/default/xui/it/floater_telehub.xml
index de5c32574f4..08f5564c7ba 100644
--- a/indra/newview/skins/default/xui/it/floater_telehub.xml
+++ b/indra/newview/skins/default/xui/it/floater_telehub.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="telehub" title="TELEHUB" min_height="310" height="310" width="286">
+<floater height="310" min_height="310" name="telehub" title="TELEHUB" width="286">
 	<text name="status_text_connected">
 		Telehub connesso all&apos;oggetto [OBJECT]
 	</text>
@@ -17,16 +17,13 @@
 	<text name="spawn_points_text" width="265">
 		Rigenera i punti (posizioni, non oggetti):
 	</text>
-	<scroll_list name="spawn_points_list" width="265" />
-	<button width="165" label="Aggiungi punti rigenerazione" name="add_spawn_point_btn"/>
-	<button width="105" left="175" label="Rimuovi punti" name="remove_spawn_point_btn"/>
+	<scroll_list name="spawn_points_list" width="265"/>
+	<button label="Aggiungi punti rigenerazione" name="add_spawn_point_btn" width="165"/>
+	<button label="Rimuovi punti" left="175" name="remove_spawn_point_btn" width="105"/>
 	<text name="spawn_point_help">
-		Seleziona un oggetto e clicca su aggiungi per
-specificarne la posizione.
-Potrai quindi muovere o rimuovere l&apos;oggetto.
-Le posizioni sono relative al centro del telehub.
-
-Seleziona un elemento per vederne la posizione
-globale.
+		Seleziona un oggetto e click &quot;Aggiungi Spawn&quot; per specificare la posizione.
+Ora puoi spostare o cancellare l&apos;oggetto.
+Le Posizioni sono relative al centro del telehub.
+Seleziona un oggetto nella lista per evidenziarlo nel mondo.
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml
index 836f85b48c4..e57c37073ad 100644
--- a/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml
@@ -1,22 +1,22 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="texture picker" title="PREFERITI: IMMAGINE">
+<floater name="texture picker" title="Foto: TEXTURE">
 	<string name="choose_picture">
 		Clicca per scegliere l&apos;immagine
 	</string>
 	<text name="Multiple">
-		Molteplice
+		Textures multiple
 	</text>
 	<text name="unknown">
-		Dimensioni: [DIMENSIONS]
+		Misura: [Dimensions]
 	</text>
 	<button label="Default" label_selected="Default" name="Default"/>
 	<button label="Niente" label_selected="Niente" name="None"/>
 	<button label="Vuoto" label_selected="Vuoto" name="Blank"/>
-	<check_box label="Visualizza Cartelle" name="show_folders_check"/>
-	<search_editor label="Scrivi qui per cercare" name="inventory search editor"/>
-	<check_box label="Applica Subito" name="apply_immediate_check"/>
+	<check_box label="Mostra cartelle" name="show_folders_check"/>
+	<search_editor label="Filtro Textures" name="inventory search editor"/>
+	<check_box label="Applica ora" name="apply_immediate_check"/>
 	<button label="Annulla" label_selected="Annulla" name="Cancel"/>
-	<button label="Seleziona" label_selected="Seleziona" name="Select"/>
+	<button label="Ok" label_selected="Ok" name="Select"/>
 	<string name="pick title">
 		Scegli:
 	</string>
diff --git a/indra/newview/skins/default/xui/it/floater_tools.xml b/indra/newview/skins/default/xui/it/floater_tools.xml
index 8e6f27e162f..dda957025b6 100644
--- a/indra/newview/skins/default/xui/it/floater_tools.xml
+++ b/indra/newview/skins/default/xui/it/floater_tools.xml
@@ -1,45 +1,81 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="toolbox floater" title="" short_title="COSTRUISCI" width="288">
+<floater name="toolbox floater" short_title="STRUMENTI/ATTREZZI PER COSTRUIRE" title="" width="288">
+	<floater.string name="status_rotate">
+		Sposta le fasce colorate per ruotare l&apos;oggetto
+	</floater.string>
+	<floater.string name="status_scale">
+		Clicca e trascina per ridimensionare il lato selezionato
+	</floater.string>
+	<floater.string name="status_move">
+		Trascina per spostare, maiuscolo+trascina per copiare
+	</floater.string>
+	<floater.string name="status_modifyland">
+		Clicca e tieni premuto per modificare il terreno
+	</floater.string>
+	<floater.string name="status_camera">
+		Clicca e trascina per spostare la camera
+	</floater.string>
+	<floater.string name="status_grab">
+		Trascina per spostare, Ctrl per sollevare, Ctrl+Shift per ruotare
+	</floater.string>
+	<floater.string name="status_place">
+		Clicca inworld per costruire
+	</floater.string>
+	<floater.string name="status_selectland">
+		Clicca e trascina per selezionare il terreno
+	</floater.string>
+	<floater.string name="grid_screen_text">
+		Schermo
+	</floater.string>
+	<floater.string name="grid_local_text">
+		Locale
+	</floater.string>
+	<floater.string name="grid_world_text">
+		Globale
+	</floater.string>
+	<floater.string name="grid_reference_text">
+		Riferimento
+	</floater.string>
+	<floater.string name="grid_attachment_text">
+		Accessorio
+	</floater.string>
 	<button label="" label_selected="" name="button focus" tool_tip="Focus"/>
 	<button label="" label_selected="" name="button move" tool_tip="Muoviti"/>
 	<button label="" label_selected="" name="button edit" tool_tip="Modifica"/>
 	<button label="" label_selected="" name="button create" tool_tip="Crea"/>
 	<button label="" label_selected="" name="button land" tool_tip="Terra"/>
+	<text name="text status" width="280">
+		Trascina per muovere, trascina+maiuscolo per copiare
+	</text>
 	<radio_group name="focus_radio_group">
 		<radio_item label="Zoom" name="radio zoom"/>
 		<radio_item label="Guarda ruotando (Ctrl)" name="radio orbit"/>
-		<radio_item label="Guarda panoramicamente (Ctrl-Shift)" name="radio pan"/>
+		<radio_item label="Panoramica (Ctrl+Shift)" name="radio pan"/>
 	</radio_group>
 	<radio_group name="move_radio_group">
 		<radio_item label="Muovi" name="radio move"/>
 		<radio_item label="Alza (Ctrl)" name="radio lift"/>
-		<radio_item label="Gira intorno (Ctrl-Shift)" name="radio spin"/>
+		<radio_item label="Ruota (Ctrl+Shift)" name="radio spin"/>
 	</radio_group>
 	<radio_group name="edit_radio_group">
-		<radio_item label="Posizione" name="radio position"/>
+		<radio_item label="Sposta" name="radio position"/>
 		<radio_item label="Ruota (Ctrl)" name="radio rotate"/>
-		<radio_item label="Ridimensiona (Ctrl-Shift)" name="radio stretch"/>
-		<radio_item label="Seleziona Texture" name="radio select face"/>
+		<radio_item label="Estendi/Stira???!!!! (Ctrl+Shift)" name="radio stretch"/>
+		<radio_item label="Seleziona Faccia multimediale" name="radio select face"/>
 	</radio_group>
-	<check_box label="Modifica parti unite" name="checkbox edit linked parts"/>
-	<text name="text ruler mode">
-		Modalità:
+	<check_box label="Modifica parti collegate" name="checkbox edit linked parts"/>
+	<text name="RenderingCost" tool_tip="Mostra il rendering cost calcolato per questo oggetto">
+		þ: [COUNT]
 	</text>
-	<combo_box name="combobox grid mode" left_delta="48">
-		<combo_box.item name="World" label="Globale"
-		/>
-		<combo_box.item name="Local" label="Locale"
-		/>
-		<combo_box.item name="Reference" label="Riferito a"
-		/>
-	</combo_box>
 	<check_box label="Ridimens. simmetricamente" name="checkbox uniform"/>
-	<check_box label="Ridimensiona le texture" name="checkbox stretch textures"/>
-	<check_box label="Usa righello" name="checkbox snap to grid"/>
-	<button label="Opzioni..." label_selected="Opzioni..." name="Options..."/>
-	<text name="text status" width="280">
-		Trascina per muovere, trascina+maiuscolo per copiare
-	</text>
+	<check_box initial_value="true" label="Ridimensiona le texture" name="checkbox stretch textures"/>
+	<check_box initial_value="true" label="Posiziona nella rete???!!!" name="checkbox snap to grid"/>
+	<combo_box left_delta="48" name="combobox grid mode" tool_tip="Scegli il tipo di righello per posizionare l&apos;oggetto">
+		<combo_box.item label="Rete del Mondo" name="World"/>
+		<combo_box.item label="Rete locale" name="Local"/>
+		<combo_box.item label="Riferimento della rete???!!!!" name="Reference"/>
+	</combo_box>
+	<button label="Opzioni..." label_selected="Opzioni..." name="Options..." tool_tip="Vedi più opzioni delle rete"/>
 	<button label="" label_selected="" name="ToolCube" tool_tip="Cubo"/>
 	<button label="" label_selected="" name="ToolPrism" tool_tip="Prisma"/>
 	<button label="" label_selected="" name="ToolPyramid" tool_tip="Piramide"/>
@@ -55,10 +91,10 @@
 	<button label="" label_selected="" name="ToolRing" tool_tip="Anello"/>
 	<button label="" label_selected="" name="ToolTree" tool_tip="Albero"/>
 	<button label="" label_selected="" name="ToolGrass" tool_tip="Erba"/>
-	<check_box label="Mantieni selezionato" name="checkbox sticky"/>
-	<check_box label="Copia la selezione" name="checkbox copy selection"/>
-	<check_box label="Centra" name="checkbox copy centers"/>
-	<check_box label="Ruota" name="checkbox copy rotates"/>
+	<check_box label="Mantieni lo strumento/attrezzo selezionato" name="checkbox sticky"/>
+	<check_box label="Seleziona la Copia" name="checkbox copy selection"/>
+	<check_box initial_value="true" label="Centra la Copia" name="checkbox copy centers"/>
+	<check_box label="Ruotare la Copia" name="checkbox copy rotates"/>
 	<radio_group name="land_radio_group">
 		<radio_item label="Seleziona il terreno" name="radio select land"/>
 		<radio_item label="Appiattisci" name="radio flatten"/>
@@ -68,25 +104,61 @@
 		<radio_item label="Ondula" name="radio noise"/>
 		<radio_item label="Ripristina" name="radio revert"/>
 	</radio_group>
-	<button label="Applica" label_selected="Applica" name="button apply to selection" tool_tip="Modifica il terreno selezionato" left="146"/>
 	<text name="Bulldozer:">
 		Bulldozer:
 	</text>
 	<text name="Dozer Size:">
 		Grandezza
 	</text>
-	<volume_slider left="184" name="slider brush size" width="74" />
+	<slider_bar initial_value="2.0" left="184" name="slider brush size" width="74"/>
 	<text name="Strength:">
 		Potenza
 	</text>
-	<text name="obj_count" left="134">
-		Oggetti selezionati: [COUNT]
+	<button label="Applica" label_selected="Applica" left="146" name="button apply to selection" tool_tip="Modifica la terra selezionata"/>
+	<text left="134" name="obj_count">
+		Oggetti: [COUNT]
 	</text>
-	<text name="prim_count" left="134">
-		primitivi: [COUNT]
+	<text left="134" name="prim_count">
+		Prims: [COUNT]
 	</text>
 	<tab_container name="Object Info Tabs" tab_max_width="150" tab_min_width="30" width="288">
 		<panel label="Generale" name="General">
+			<panel.string name="text deed continued">
+				Intesta
+			</panel.string>
+			<panel.string name="text deed">
+				Cedi al gruppo
+			</panel.string>
+			<panel.string name="text modify info 1">
+				Puoi modificare questo oggetto
+			</panel.string>
+			<panel.string name="text modify info 2">
+				Puoi modificare questi oggetti
+			</panel.string>
+			<panel.string name="text modify info 3">
+				Non puoi modificare questo oggetto
+			</panel.string>
+			<panel.string name="text modify info 4">
+				Non puoi modificare questi oggetti
+			</panel.string>
+			<panel.string name="text modify warning">
+				Devi selezionare tutto l&apos;oggetto per impostare i permessi
+			</panel.string>
+			<panel.string name="Cost Default">
+				Prezzo: L$
+			</panel.string>
+			<panel.string name="Cost Total">
+				Prezzo Totale: L$
+			</panel.string>
+			<panel.string name="Cost Per Unit">
+				Prezzo per Unità: L$
+			</panel.string>
+			<panel.string name="Cost Mixed">
+				Prezzo misto
+			</panel.string>
+			<panel.string name="Sale Mixed">
+				Vendita mista
+			</panel.string>
 			<text name="Name:">
 				Nome:
 			</text>
@@ -99,135 +171,77 @@
 			<text name="Creator Name">
 				Thrax Linden
 			</text>
-			<button label="Profilo..." label_selected="Profilo..." name="button creator profile"/>
 			<text name="Owner:">
 				Proprietario:
 			</text>
 			<text name="Owner Name">
 				Thrax Linden
 			</text>
-			<button label="Profilo..." label_selected="Profilo..." name="button owner profile"/>
 			<text name="Group:">
 				Gruppo:
 			</text>
-			<text name="Group Name Proxy">
-				The Lindens
-			</text>
-			<button label="Imposta..." label_selected="Imposta..." name="button set group"/>
-			<text name="Permissions:">
-				Permessi:
-			</text>
-
-			<check_box label="Condividi con il gruppo" name="checkbox share with group" tool_tip="Permetti a tutti i membri del gruppo di condividere ed utilizzare i tuoi permessi per questo oggetto. Devi cederlo al gruppo per abilitare le restrizioni di ruolo."/>
-			<string name="text deed continued">
-				Cedi al gruppo...
-			</string>
-			<string name="text deed">
-				Cedi al gruppo
-			</string>
-			<button left_delta="152" width="98" label="Cedi al gruppo..." label_selected="Cedi al gruppo..." name="button deed" tool_tip="Gli oggetti condivisi con il gruppo possono essere ceduti da un funzionario del gruppo."/>
-			<check_box label="Permetti a chiunque di spostare" name="checkbox allow everyone move"/>
-			<check_box label="Permetti a chiunque di copiare" name="checkbox allow everyone copy"/>
-			<check_box label="Mostra nella ricerca" name="search_check" tool_tip="Permetti che l&apos;oggetto sia visibile nella ricerca"/>
-			<check_box label="In vendita" name="checkbox for sale"/>
-			<text name="Cost">
-				Prezzo:  L$
+			<button label="Imposta..." label_selected="Imposta..." name="button set group" tool_tip="Scegli un gruppo per condividere i permessi di questo oggetto"/>
+			<name_box initial_value="Caricando..." name="Group Name Proxy"/>
+			<button label="Intesta" label_selected="Intesta" left_delta="152" name="button deed" tool_tip="Intestando permette di regalare questo oggetto con i permessi del prossimo proprietario. Gli oggetti condivisi dal gruppo posso essere instestati solo da un officer del gruppo." width="98"/>
+			<check_box label="Condividi" name="checkbox share with group" tool_tip="Permetti ai membri del gruppo selezionato di condividere i tuoi permessi modify per questo oggetto. Tu devi Intestare per attivare le restrizioni al ruolo."/>
+			<text name="label click action" width="220">
+				Clicca:
 			</text>
+			<combo_box name="clickaction" width="192">
+				<combo_box.item label="Tocca (default)" name="Touch/grab(default)"/>
+				<combo_box.item label="Siediti sull&apos;oggetto" name="Sitonobject"/>
+				<combo_box.item label="Compra l&apos;oggetto" name="Buyobject"/>
+				<combo_box.item label="Paga l&apos;oggetto" name="Payobject"/>
+				<combo_box.item label="Apri" name="Open"/>
+				<combo_box.item label="Zoom" name="Zoom"/>
+			</combo_box>
+			<check_box label="In vendita:" name="checkbox for sale"/>
 			<combo_box name="sale type">
 				<combo_box.item label="Copia" name="Copy"/>
 				<combo_box.item label="Contenuto" name="Contents"/>
 				<combo_box.item label="Originale" name="Original"/>
 			</combo_box>
-
-			<text name="label click action" width="220">
-				Se cliccato con il tasto sinistro del mouse:
-			</text>
-			<combo_box name="clickaction" width="192">
-				<combo_box.item name="Touch/grab(default)" label="Tocca/Afferra (default)"
-				/>
-				<combo_box.item name="Sitonobject" label="Siediti sull&apos;oggetto"
-				/>
-				<combo_box.item name="Buyobject" label="Compra l&apos;oggetto"
-				/>
-				<combo_box.item name="Payobject" label="Paga l&apos;oggetto"
-				/>
-				<combo_box.item name="Open" label="Apri"
-				/>
-				<combo_box.item name="Play" label="Attiva i multimedia del terreno"
-				/>
-				<combo_box.item name="Opemmedia" label="Apri i multimedia del terreno"
-				/>
-			</combo_box>
-		<panel name="perms_build">
-			<text name="perm_modify">
-				Puoi modificare questo oggetto
-			</text>
-			<text name="B:">
-				B:
-			</text>
-			<text name="O:">
-				O:
-			</text>
-			<text name="G:">
-				G:
-			</text>
-			<text name="E:">
-				E:
-			</text>
-			<text name="N:">
-				N:
-			</text>
-			<text name="F:">
-				F:
-			</text>
-			<text name="Next owner can:">
-				Il prossimo proprietario può:
-			</text>
-			<check_box label="Modificare" name="checkbox next owner can modify"/>
-			<check_box label="Copiare" name="checkbox next owner can copy" left_delta="80"/>
-			<check_box name="checkbox next owner can transfer" left_delta="67"/>
-		</panel>
-			<string name="text modify info 1">
-				Puoi modificare questo oggetto
-			</string>
-			<string name="text modify info 2">
-				Puoi modificare questi oggetti
-			</string>
-			<string name="text modify info 3">
-				Non puoi modificare questo oggetto
-			</string>
-			<string name="text modify info 4">
-				Non puoi modificare questi oggetti
-			</string>
-			<string name="text modify warning">
-				Devi selezionare l&apos;intero oggetto per impostare i permessi
-			</string>
-			<string name="Cost Default">
-				Prezzo: L$
-			</string>
-			<string name="Cost Total">
-				Prezzo totale: L$
-			</string>
-			<string name="Cost Per Unit">
-				Prezzo per: L$
-			</string>
-			<string name="Cost Mixed">
-				Prezzo misto
-			</string>
-			<string name="Sale Mixed">
-				Vendita mista
-			</string>
+			<spinner label="Prezzo: L$" name="Edit Cost"/>
+			<check_box label="Mostra nella ricerca" name="search_check" tool_tip="Permetti che l&apos;oggetto sia visibile nella ricerca"/>
+			<panel name="perms_build">
+				<text name="perm_modify">
+					Puoi modificare questo oggetto
+				</text>
+				<text name="Anyone can:">
+					Chiunque:
+				</text>
+				<check_box label="Sposta" name="checkbox allow everyone move"/>
+				<check_box label="Copia" name="checkbox allow everyone copy"/>
+				<text name="Next owner can:">
+					Prossimo proprietario:
+				</text>
+				<check_box label="Modificare" name="checkbox next owner can modify"/>
+				<check_box label="Copiare" left_delta="80" name="checkbox next owner can copy"/>
+				<check_box label="Transfer" left_delta="67" name="checkbox next owner can transfer" tool_tip="Il prossimo proprietario può regalare o rivendere questo oggetto"/>
+				<text name="B:">
+					B:
+				</text>
+				<text name="O:">
+					O:
+				</text>
+				<text name="G:">
+					G:
+				</text>
+				<text name="E:">
+					E:
+				</text>
+				<text name="N:">
+					N:
+				</text>
+				<text name="F:">
+					F:
+				</text>
+			</panel>
 		</panel>
 		<panel label="Oggetto" name="Object">
-			<text name="select_single">
-				Seleziona solo un prim per modificarne i parametri.
-			</text>
-			<text name="edit_object">
-				Modifica i parametri dell&apos;oggetto:
-			</text>
 			<check_box label="Bloccato" name="checkbox locked" tool_tip="Previene lo spostamento o la cancellazione dell&apos;oggetto. Spesso utile mentre si costruisce per evitare involontarie modifiche."/>
 			<check_box label="Fisico" name="Physical Checkbox Ctrl" tool_tip="Permette all&apos;oggetto di essere spostato e di subire gli effetti della gravità"/>
-			<check_box label="Temporaneo" name="Temporary Checkbox Ctrl" tool_tip="Provoca la cancellazione dell&apos;oggetto 1 minuto dopo la sua creazione."/>
+			<check_box label="Temporaneo" name="Temporary Checkbox Ctrl" tool_tip="Causa la cancellazione dell&apos;oggetto 1 minuto dopo la sua creazione"/>
 			<check_box label="Fantasma" name="Phantom Checkbox Ctrl" tool_tip="Rende l&apos;oggetto penetrabile dagli altri oggetti e dagli avatars"/>
 			<text name="label position">
 				Posizione (metri)
@@ -247,48 +261,27 @@
 			<spinner label="X" name="Rot X"/>
 			<spinner label="Y" name="Rot Y"/>
 			<spinner label="Z" name="Rot Z"/>
-			<text name="label material">
-				Materiale
-			</text>
-			<combo_box name="material">
-				<combo_box.item name="Stone" label="Pietra"
-				/>
-				<combo_box.item name="Metal" label="Metallo"
-				/>
-				<combo_box.item name="Glass" label="Vetro"
-				/>
-				<combo_box.item name="Wood" label="Legno"
-				/>
-				<combo_box.item name="Flesh" label="Carne"
-				/>
-				<combo_box.item name="Plastic" label="Plastica"
-				/>
-				<combo_box.item name="Rubber" label="Gomma"
-				/>
-			</combo_box>
-			<text name="label basetype">
-				Forma di costruzione
-			</text>
 			<combo_box name="comboBaseType">
-				<combo_box.item name="Box" label="Cubo"
-				/>
-				<combo_box.item name="Cylinder" label="Cilindro"
-				/>
-				<combo_box.item name="Prism" label="Prisma"
-				/>
-				<combo_box.item name="Sphere" label="Sfera"
-				/>
-				<combo_box.item name="Torus" label="Toro"
-				/>
-				<combo_box.item name="Tube" label="Tubo"
-				/>
-				<combo_box.item name="Ring" label="Anello"
-				/>
-				<combo_box.item name="Sculpted" label="Sculpted"
-				/>
+				<combo_box.item label="Cubo" name="Box"/>
+				<combo_box.item label="Cilindro" name="Cylinder"/>
+				<combo_box.item label="Prisma" name="Prism"/>
+				<combo_box.item label="Sfera" name="Sphere"/>
+				<combo_box.item label="Toro" name="Torus"/>
+				<combo_box.item label="Tubo" name="Tube"/>
+				<combo_box.item label="Anello" name="Ring"/>
+				<combo_box.item label="Sculpted" name="Sculpted"/>
+			</combo_box>
+			<combo_box name="material">
+				<combo_box.item label="Pietra" name="Stone"/>
+				<combo_box.item label="Metallo" name="Metal"/>
+				<combo_box.item label="Vetro" name="Glass"/>
+				<combo_box.item label="Legno" name="Wood"/>
+				<combo_box.item label="Carne" name="Flesh"/>
+				<combo_box.item label="Plastica" name="Plastic"/>
+				<combo_box.item label="Gomma" name="Rubber"/>
 			</combo_box>
 			<text name="text cut">
-				Linea di taglio Inizio e Fine
+				Riduci una sezione (begin/end)
 			</text>
 			<spinner label="I" name="cut begin"/>
 			<spinner label="F" name="cut end"/>
@@ -302,17 +295,13 @@
 				Forma del foro
 			</text>
 			<combo_box name="hole">
-				<combo_box.item name="Default" label="Default"
-				/>
-				<combo_box.item name="Circle" label="Rotondo"
-				/>
-				<combo_box.item name="Square" label="Quadrato"
-				/>
-				<combo_box.item name="Triangle" label="Triangolare"
-				/>
+				<combo_box.item label="Default" name="Default"/>
+				<combo_box.item label="Rotondo" name="Circle"/>
+				<combo_box.item label="Quadrato" name="Square"/>
+				<combo_box.item label="Triangolare" name="Triangle"/>
 			</combo_box>
 			<text name="text twist">
-				Torsione Inizio e Fine
+				Attorciglia (begin/end)
 			</text>
 			<spinner label="I" name="Twist Begin"/>
 			<spinner label="F" name="Twist End"/>
@@ -330,13 +319,13 @@
 			<spinner label="X" name="Shear X"/>
 			<spinner label="Y" name="Shear Y"/>
 			<text name="advanced_cut" width="149">
-				Ritaglia il profilo Inizio e Fine
+				Riduci un bordo (begin/end)
 			</text>
 			<text name="advanced_dimple">
-				Scava Inizio e Fine
+				Fossetta???!!!! (begin/end)
 			</text>
 			<text name="advanced_slice">
-				Affetta Inizio e Fine
+				Taglia???!!! (begin/end)
 			</text>
 			<spinner label="I" name="Path Limit Begin"/>
 			<spinner label="F" name="Path Limit End"/>
@@ -352,22 +341,17 @@
 				Rivoluzioni
 			</text>
 			<texture_picker label="Sculpt Texture" name="sculpt texture control" tool_tip="Clicca per scegliere un&apos;immagine"/>
-			<check_box label="Rifletti" name="sculpt mirror control" tool_tip="Ribalta lo sculpted prim lungo l&apos;asse X."/>
-			<check_box label="Rivolta" name="sculpt invert control" tool_tip="Inverte le normali dello sculpted prim, facendolo apparire rivoltato."/>
+			<check_box label="Rifletti" name="sculpt mirror control" tool_tip="Rovescia il prim sculpted lungo l&apos;asse X"/>
+			<check_box label="Rivolta" name="sculpt invert control" tool_tip="Inverti i normali prim sculpted, facendoli apparire a rovescio"/>
 			<text name="label sculpt type">
 				Tipo di congiunzione
 			</text>
 			<combo_box name="sculpt type control">
-				<combo_box.item name="None" label="(nessuna)"
-				/>
-				<combo_box.item name="Sphere" label="Sferica"
-				/>
-				<combo_box.item name="Torus" label="Toroidale"
-				/>
-				<combo_box.item name="Plane" label="Piana"
-				/>
-				<combo_box.item name="Cylinder" label="Cilindrica"
-				/>
+				<combo_box.item label="(nessuna)" name="None"/>
+				<combo_box.item label="Sferica" name="Sphere"/>
+				<combo_box.item label="Toroidale" name="Torus"/>
+				<combo_box.item label="Piana" name="Plane"/>
+				<combo_box.item label="Cilindrica" name="Cylinder"/>
 			</combo_box>
 		</panel>
 		<panel label="Caratteristiche" name="Features">
@@ -377,134 +361,110 @@
 			<text name="edit_object">
 				Modifica le caratteristiche dell&apos;oggetto:
 			</text>
-			<check_box label="Flessibilità" name="Flexible1D Checkbox Ctrl" tool_tip="Permette all&apos;oggetto di flettersi rispetto all&apos;asse Z. (solo lato client)"/>
-			<spinner label="Morbidezza" name="FlexNumSections" label_width="72" width="135"/>
-			<spinner label="Gravità" name="FlexGravity" label_width="72" width="135"/>
-			<spinner label="Elasticità" name="FlexFriction" label_width="72" width="135"/>
-			<spinner label="Sventolio" name="FlexWind" label_width="72" width="135"/>
-			<spinner label="Tensione" name="FlexTension" label_width="72" width="135"/>
-			<spinner label="Forza X" name="FlexForceX" label_width="72" width="135"/>
-			<spinner label="Forza Y" name="FlexForceY" label_width="72" width="135"/>
-			<spinner label="Forza Z" name="FlexForceZ" label_width="72" width="135"/>
+			<check_box label="Flessibilità" name="Flexible1D Checkbox Ctrl" tool_tip="Permetti all&apos;oggetto di flettersi lungo l&apos;asse Z  (Client-side only)"/>
+			<spinner label="Morbidezza" label_width="72" name="FlexNumSections" width="135"/>
+			<spinner label="Gravità" label_width="72" name="FlexGravity" width="135"/>
+			<spinner label="Elasticità" label_width="72" name="FlexFriction" width="135"/>
+			<spinner label="Sventolio" label_width="72" name="FlexWind" width="135"/>
+			<spinner label="Tensione" label_width="72" name="FlexTension" width="135"/>
+			<spinner label="Forza X" label_width="72" name="FlexForceX" width="135"/>
+			<spinner label="Forza Y" label_width="72" name="FlexForceY" width="135"/>
+			<spinner label="Forza Z" label_width="72" name="FlexForceZ" width="135"/>
 			<check_box label="Luce" name="Light Checkbox Ctrl" tool_tip="Imposta l&apos;oggetto come sorgente di luce"/>
-			<text name="label color">
-				Colore
-			</text>
-			<color_swatch label="" name="colorswatch" tool_tip="Clicca per aprire la tavolozza dei colori"/>
-			<spinner label="Intensità" name="Light Intensity" label_width="72" width="135"/>
-			<spinner label="Raggio" name="Light Radius" label_width="72" width="135"/>
-			<spinner label="Attenuazione" name="Light Falloff" label_width="72" width="135" />
+			<color_swatch label="" name="colorswatch" tool_tip="Clicca per aprire il selettore dei colori"/>
+			<texture_picker label="" name="light texture control" tool_tip="Clicca per scegliere una proiezione dell&apos;immagine (funziona solo con deferred rendering attivato)"/>
+			<spinner label="Intensità" label_width="72" name="Light Intensity" width="135"/>
+			<spinner label="FOV" name="Light FOV"/>
+			<spinner label="Raggio" label_width="72" name="Light Radius" width="135"/>
+			<spinner label="Focus" name="Light Focus"/>
+			<spinner label="Attenuazione" label_width="72" name="Light Falloff" width="135"/>
+			<spinner label="Atmosfera" name="Light Ambiance"/>
 		</panel>
 		<panel label="Texture" name="Texture">
+			<panel.string name="string repeats per meter">
+				Ripetizioni per metro
+			</panel.string>
+			<panel.string name="string repeats per face">
+				Ripetizioni per faccia
+			</panel.string>
 			<texture_picker label="Texture" name="texture control" tool_tip="Clicca per scegliere un&apos;immagine"/>
-			<color_swatch label="Colore" name="colorswatch" tool_tip="Clicca per aprire la tavolozza dei colori"/>
+			<color_swatch label="Colore" name="colorswatch" tool_tip="Clicca per aprire il selettore dei colori"/>
 			<text name="color trans">
 				Trasparenza %
 			</text>
 			<text name="glow label">
 				Bagliore
 			</text>
-			<check_box label="Massima &#10;luminosità" name="checkbox fullbright" bottom_delta="-21"/>
+			<check_box bottom_delta="-21" label="Massima 
+luminosità" name="checkbox fullbright"/>
 			<text name="tex gen">
-				Applicazione &#10;della texture
+				Applicazione 
+della texture
 			</text>
-			<combo_box name="combobox texgen" bottom_delta="-38">
-				<combo_box.item name="Default" label="Default"
-				/>
-				<combo_box.item name="Planar" label="Planare"
-				/>
+			<combo_box bottom_delta="-38" name="combobox texgen">
+				<combo_box.item label="Default" name="Default"/>
+				<combo_box.item label="Planare" name="Planar"/>
 			</combo_box>
-			<text name="label shininess" bottom="-120">
+			<text bottom="-120" name="label shininess">
 				Brillantezza
 			</text>
-			<combo_box name="combobox shininess" bottom_delta="-22">
-				<combo_box.item name="None" label="Nessuna"
-				/>
-				<combo_box.item name="Low" label="Bassa"
-				/>
-				<combo_box.item name="Medium" label="Media"
-				/>
-				<combo_box.item name="High" label="Alta"
-				/>
+			<combo_box bottom_delta="-22" name="combobox shininess">
+				<combo_box.item label="Nessuna" name="None"/>
+				<combo_box.item label="Bassa" name="Low"/>
+				<combo_box.item label="Media" name="Medium"/>
+				<combo_box.item label="Alta" name="High"/>
 			</combo_box>
-			<text name="label bumpiness" bottom="-120">
+			<text bottom="-120" name="label bumpiness">
 				Rilievo
 			</text>
-			<combo_box name="combobox bumpiness" width="100" bottom_delta="-22">
-				<combo_box.item name="None" label="Nessuna"
-				/>
-				<combo_box.item name="Brightness" label="Luminoso"
-				/>
-				<combo_box.item name="Darkness" label="Scuro"
-				/>
-				<combo_box.item name="woodgrain" label="Venature del legno"
-				/>
-				<combo_box.item name="bark" label="Corteccia"
-				/>
-				<combo_box.item name="bricks" label="Mattoni"
-				/>
-				<combo_box.item name="checker" label="Scacchi"
-				/>
-				<combo_box.item name="concrete" label="Cemento"
-				/>
-				<combo_box.item name="crustytile" label="Mattonella incrostata"
-				/>
-				<combo_box.item name="cutstone" label="Mosaico in pietra"
-				/>
-				<combo_box.item name="discs" label="Dischi"
-				/>
-				<combo_box.item name="gravel" label="Ghiaia"
-				/>
-				<combo_box.item name="petridish" label="Sassi"
-				/>
-				<combo_box.item name="siding" label="Listoni"
-				/>
-				<combo_box.item name="stonetile" label="Mattonelle in pietra"
-				/>
-				<combo_box.item name="stucco" label="Stucco"
-				/>
-				<combo_box.item name="suction" label="Cerchi rialzati"
-				/>
-				<combo_box.item name="weave" label="Trama"
-				/>
+			<combo_box bottom_delta="-22" name="combobox bumpiness" width="100">
+				<combo_box.item label="Nessuna" name="None"/>
+				<combo_box.item label="Luminoso" name="Brightness"/>
+				<combo_box.item label="Scuro" name="Darkness"/>
+				<combo_box.item label="Venature del legno" name="woodgrain"/>
+				<combo_box.item label="Corteccia" name="bark"/>
+				<combo_box.item label="Mattoni" name="bricks"/>
+				<combo_box.item label="Scacchi" name="checker"/>
+				<combo_box.item label="Cemento" name="concrete"/>
+				<combo_box.item label="Mattonella incrostata" name="crustytile"/>
+				<combo_box.item label="Mosaico in pietra" name="cutstone"/>
+				<combo_box.item label="Dischi" name="discs"/>
+				<combo_box.item label="Ghiaia" name="gravel"/>
+				<combo_box.item label="Sassi" name="petridish"/>
+				<combo_box.item label="Listoni" name="siding"/>
+				<combo_box.item label="Mattonelle in pietra" name="stonetile"/>
+				<combo_box.item label="Stucco" name="stucco"/>
+				<combo_box.item label="Cerchi rialzati" name="suction"/>
+				<combo_box.item label="Trama" name="weave"/>
 			</combo_box>
 			<text name="tex scale">
-				Ripetizioni per faccia
+				Ripeti / Lato
 			</text>
 			<spinner label="Orizzontale (U)" name="TexScaleU"/>
 			<check_box label="Inverti" name="checkbox flip s"/>
 			<spinner label="Verticale (V)" name="TexScaleV"/>
 			<check_box label="Inverti" name="checkbox flip t"/>
-			<text name="tex rotate">
-				Rotazione (Gradi)
-			</text>
-			<string name="string repeats per meter">
-				Ripetizioni per metro
-			</string>
-			<string name="string repeats per face">
-				Ripetizioni per faccia
-			</string>
-			<text name="rpt">
-				Ripetizioni per metro
-			</text>
-			<spinner left="120" name="TexRot" width="60" />
-			<spinner left="120" name="rptctrl" width="60" />
-			<button label="Applica" label_selected="Applica" name="button apply" left_delta="72"/>
+			<spinner label="RotazioneËš" left="120" name="TexRot" width="60"/>
+			<spinner label="Ripete / Metri" left="120" name="rptctrl" width="60"/>
+			<button label="Applica" label_selected="Applica" left_delta="72" name="button apply"/>
 			<text name="tex offset">
-				Offset
+				Bilanciamento della Texture
 			</text>
 			<spinner label="Orizzontale (U)" name="TexOffsetU"/>
 			<spinner label="Verticale (V)" name="TexOffsetV"/>
-			<text name="textbox autofix">
-				Allinea texture dei media
-(deve prima caricarsi)
-			</text>
-			<button label="Allinea" label_selected="Allinea" name="button align" left="160"/>
+			<panel name="Add_Media">
+				<text name="media_tex">
+					Media
+				</text>
+				<button name="add_media" tool_tip="Aggiungi Media"/>
+				<button name="delete_media" tool_tip="Cancella questa media texture"/>
+				<button name="edit_media" tool_tip="Modifica questo Media"/>
+				<button label="Alllinea" label_selected="Allinea Media" name="button align" tool_tip="Allinea media texture (must load first)"/>
+			</panel>
 		</panel>
 		<panel label="Contenuto" name="Contents">
-			<button label="Nuovo Script" label_selected="Nuovo script" name="button new script"/>
+			<button label="Nuovo Script" label_selected="Nuovo Script" name="button new script"/>
 			<button label="Permessi" name="button permissions"/>
-			<panel name="ContentsInventory" width="272" />
 		</panel>
 	</tab_container>
 	<panel name="land info panel">
@@ -512,62 +472,29 @@
 			Informazioni sul terreno
 		</text>
 		<text name="label_area_price">
-			Prezzo: [PRICE] L$ per [AREA] m²
+			Prezzo: L$[PRICE] per [AREA] m²
 		</text>
 		<text name="label_area">
 			Area: [AREA] m²
 		</text>
-		<button label="Informazioni sul terreno..." label_selected="Informazioni sul terreno..." name="button about land" width="156"/>
-		<check_box label="Mostra i proprietari" name="checkbox show owners" tool_tip="Colora i terreni in base ai loro proprietari: &#10;&#10;Verde = il tuo terreno &#10;Acqua = la terra del tuo gruppo &#10;Rosso = posseduta da altri &#10;Giallo = in vendita &#10;Viola = in asta &#10;Grigia = pubblica"/>
-		<button label="?" label_selected="?" name="button show owners help" left_delta="120"/>
+		<button label="Info sul terreno" label_selected="Info sul terreno" name="button about land" width="156"/>
+		<check_box label="Mostra i proprietari" name="checkbox show owners" tool_tip="Colora i terreni in base ai loro proprietari: 
+
+Verde = il tuo terreno 
+Acqua = la terra del tuo gruppo 
+Rosso = posseduta da altri 
+Giallo = in vendita 
+Viola = in asta 
+Grigia = pubblica"/>
 		<text name="label_parcel_modify">
 			Modifica il terreno
 		</text>
 		<button label="Suddividi" label_selected="Suddividi" name="button subdivide land" width="156"/>
-		<button label="Unisci" label_selected="Unisci" name="button join land" width="156"/>
+		<button label="Aderisci" label_selected="Aderisci" name="button join land" width="156"/>
 		<text name="label_parcel_trans">
 			Transazioni del territorio
 		</text>
-		<button label="Acquista il terreno" label_selected="Acquista il terreno" name="button buy land" width="156"/>
-		<button label="Abbandona il terreno" label_selected="Abbandona il terreno" name="button abandon land" width="156"/>
+		<button label="Compra la Terra" label_selected="Compra la Terra" name="button buy land" width="156"/>
+		<button label="Abbandona la Terra" label_selected="Abbandona la Terra" name="button abandon land" width="156"/>
 	</panel>
-	<floater.string name="status_rotate">
-		Sposta le fasce colorate per ruotare l&apos;oggetto
-	</floater.string>
-	<floater.string name="status_scale">
-		Clicca e trascina per ridimensionare il lato selezionato
-	</floater.string>
-	<floater.string name="status_move">
-		Trascina per spostare, maiuscolo+trascina per copiare
-	</floater.string>
-	<floater.string name="status_modifyland">
-		Clicca e tieni premuto per modificare il terreno
-	</floater.string>
-	<floater.string name="status_camera">
-		Clicca e sposta per cambiare visuale
-	</floater.string>
-	<floater.string name="status_grab">
-		Trascina per muovere, Ctrl per alzare, Ctrl-Shift per ruotare
-	</floater.string>
-	<floater.string name="status_place">
-		Clicca inworld per costruire
-	</floater.string>
-	<floater.string name="status_selectland">
-		Clicca e trascina per selezionare il terreno
-	</floater.string>
-	<floater.string name="grid_screen_text">
-		Schermo
-	</floater.string>
-	<floater.string name="grid_local_text">
-		Locale
-	</floater.string>
-	<floater.string name="grid_world_text">
-		Globale
-	</floater.string>
-	<floater.string name="grid_reference_text">
-		Riferimento
-	</floater.string>
-	<floater.string name="grid_attachment_text">
-		Accessorio
-	</floater.string>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_top_objects.xml b/indra/newview/skins/default/xui/it/floater_top_objects.xml
index 9b406199e91..8f7f3e060aa 100644
--- a/indra/newview/skins/default/xui/it/floater_top_objects.xml
+++ b/indra/newview/skins/default/xui/it/floater_top_objects.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="top_objects" title="IN CARICAMENTO...">
+<floater name="top_objects" title="Oggetti principali">
 	<text name="title_text">
 		In caricamento...
 	</text>
@@ -19,17 +19,17 @@
 	</text>
 	<button label="Mostra segnali luminosi" name="show_beacon_btn" width="150"/>
 	<text name="obj_name_text">
-		Nome oggetto:
+		Nome dell&apos;oggetto:
 	</text>
 	<button label="Filtro" name="filter_object_btn" width="150"/>
 	<text name="owner_name_text">
-		Nome oggetto:
+		Proprietario:
 	</text>
 	<button label="Filtro" name="filter_owner_btn" width="150"/>
 	<button label="Restituisci selezionato" name="return_selected_btn" width="150"/>
-	<button label="Restituisci tutti" name="return_all_btn" left="170"/>
+	<button label="Restituisci tutti" left="170" name="return_all_btn"/>
 	<button label="Disabilita selezionato" name="disable_selected_btn" width="150"/>
-	<button label="Disabilita per tutti" name="disable_all_btn" left="170"/>
+	<button label="Disabilita per tutti" left="170" name="disable_all_btn"/>
 	<button label="Aggiorna" name="refresh_btn" width="150"/>
 	<string name="top_scripts_title">
 		Script pesanti
diff --git a/indra/newview/skins/default/xui/it/floater_tos.xml b/indra/newview/skins/default/xui/it/floater_tos.xml
index 12b6021b5bb..f3f8072f568 100644
--- a/indra/newview/skins/default/xui/it/floater_tos.xml
+++ b/indra/newview/skins/default/xui/it/floater_tos.xml
@@ -4,8 +4,7 @@
 	<button label="Annulla" label_selected="Annulla" name="Cancel"/>
 	<check_box label="Accetto i Termini di Servizio" name="agree_chk"/>
 	<text name="tos_heading">
-		Leggi attentamente i seguenti Termini di Servizio. Per continuare ad entrare in [SECOND_LIFE],
-devi accettare l&apos;accordo.
+		Per favore leggi attentamente i seguenti Termini di Servizio. Per continuare il log in [SECOND_LIFE], devi accettare le condizioni.
 	</text>
 	<text_editor name="tos_text">
 		TOS_TEXT
diff --git a/indra/newview/skins/default/xui/it/floater_voice_controls.xml b/indra/newview/skins/default/xui/it/floater_voice_controls.xml
new file mode 100644
index 00000000000..e4c54d44eb4
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_voice_controls.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_voice_controls" title="Controlli del Voice">
+	<string name="title_nearby">
+		VOICE NEI DINTORNI
+	</string>
+	<string name="title_group">
+		Chiamata di Gruppo con [GROUP]
+	</string>
+	<string name="title_adhoc">
+		Conference Call
+	</string>
+	<string name="title_peer_2_peer">
+		Chiama con [NAME]
+	</string>
+	<string name="no_one_near">
+		Nessuno vicino
+	</string>
+	<panel name="control_panel">
+		<layout_stack>
+			<layout_panel name="leave_btn_panel">
+				<button label="Chiudi Chiamata" name="leave_call_btn"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_water.xml b/indra/newview/skins/default/xui/it/floater_water.xml
index 13db1d4589b..d2849440d61 100644
--- a/indra/newview/skins/default/xui/it/floater_water.xml
+++ b/indra/newview/skins/default/xui/it/floater_water.xml
@@ -3,7 +3,7 @@
 	<text name="KeyFramePresetsText" width="224">
 		Impostazioni predeterminate dell&apos;acqua:
 	</text>
-	<combo_box left_delta="230" name="WaterPresetsCombo" width="150" />
+	<combo_box left_delta="230" name="WaterPresetsCombo" width="150"/>
 	<button label="Nuovo" label_selected="Nuovo" name="WaterNewPreset"/>
 	<button label="Salva" label_selected="Salva" name="WaterSavePreset"/>
 	<button label="Cancella" label_selected="Cancella" name="WaterDeletePreset"/>
@@ -12,21 +12,22 @@
 			<text name="BHText">
 				Colore della nebbiosità dell&apos;acqua
 			</text>
-			<button label="?" name="WaterFogColorHelp" left="209"/>
-			<color_swatch label="" name="WaterFogColor" tool_tip="Clicca per aprire la selezione colore"/>
-			<text name="WaterFogDensText" font="SansSerifSmall">
-				Esponente di densità della nebbia&#10; dell&apos;acqua
+			<button label="?" left="209" name="WaterFogColorHelp"/>
+			<color_swatch label="" name="WaterFogColor" tool_tip="Clicca per aprire il selettore dei colori"/>
+			<text font="SansSerifSmall" name="WaterFogDensText">
+				Esponente di densità della nebbia
+ dell&apos;acqua
 			</text>
 			<slider bottom_delta="-40" name="WaterFogDensity"/>
-			<button label="?" name="WaterFogDensityHelp" left="209"/>
-			<text name="WaterUnderWaterFogModText" font="SansSerifSmall" bottom="-140">
+			<button label="?" left="209" name="WaterFogDensityHelp"/>
+			<text bottom="-140" font="SansSerifSmall" name="WaterUnderWaterFogModText">
 				Regolatore effetto nebbia subacquea
 			</text>
-			<button label="?" name="WaterUnderWaterFogModHelp" left="209"/>
+			<button label="?" left="209" name="WaterUnderWaterFogModHelp"/>
 			<text name="BDensText">
 				Scala di riflessione delle onde
 			</text>
-			<button label="?" name="WaterNormalScaleHelp" left="415"/>
+			<button label="?" left="415" name="WaterNormalScaleHelp"/>
 			<text name="BHText2">
 				1
 			</text>
@@ -39,31 +40,33 @@
 			<text name="HDText">
 				Scala Fresnel
 			</text>
-			<button label="?" name="WaterFresnelScaleHelp" left="415"/>
+			<button label="?" left="415" name="WaterFresnelScaleHelp"/>
 			<text name="FresnelOffsetText">
 				Offset Fresnel
 			</text>
-			<button label="?" name="WaterFresnelOffsetHelp" left="415"/>
-			<text name="DensMultText" font="SansSerifSmall">
-				Scala di rifrazione nell&apos;acqua&#10; dall&apos;alto
+			<button label="?" left="415" name="WaterFresnelOffsetHelp"/>
+			<text font="SansSerifSmall" name="DensMultText">
+				Scala di rifrazione nell&apos;acqua
+ dall&apos;alto
 			</text>
 			<slider bottom_delta="-40" name="WaterScaleAbove"/>
-			<button label="?" name="WaterScaleAboveHelp" left="650"/>
-			<text name="WaterScaleBelowText" font="SansSerifSmall" bottom="-70">
-				Scala di rifrazione nell&apos;acqua&#10; dal basso
+			<button label="?" left="650" name="WaterScaleAboveHelp"/>
+			<text bottom="-70" font="SansSerifSmall" name="WaterScaleBelowText">
+				Scala di rifrazione nell&apos;acqua
+ dal basso
 			</text>
 			<slider bottom_delta="-40" name="WaterScaleBelow"/>
-			<button label="?" name="WaterScaleBelowHelp" left="650"/>
-			<text name="MaxAltText" bottom="-122">
+			<button label="?" left="650" name="WaterScaleBelowHelp"/>
+			<text bottom="-122" name="MaxAltText">
 				Moltiplicatore della sfocatura
 			</text>
-			<button label="?" name="WaterBlurMultiplierHelp" left="650"/>
+			<button label="?" left="650" name="WaterBlurMultiplierHelp"/>
 		</panel>
 		<panel label="Immagine" name="Waves">
 			<text name="BHText">
 				Direzione della grande onda
 			</text>
-			<button label="?" name="WaterWave1Help" left="170"/>
+			<button label="?" left="170" name="WaterWave1Help"/>
 			<text name="WaterWave1DirXText">
 				X
 			</text>
@@ -73,7 +76,7 @@
 			<text name="BHText2">
 				Direzione della piccola onda
 			</text>
-			<button label="?" name="WaterWave2Help" left="170"/>
+			<button label="?" left="170" name="WaterWave2Help"/>
 			<text name="WaterWave2DirXText">
 				X
 			</text>
diff --git a/indra/newview/skins/default/xui/it/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/it/floater_whitelist_entry.xml
new file mode 100644
index 00000000000..6d68db058d1
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_whitelist_entry.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="whitelist_entry">
+	<text name="media_label">
+		Inserisci un URL o una configurazione URL da aggiungere alla lista dei domini permessi
+	</text>
+	<line_editor name="whitelist_entry" tool_tip="Inserisci un URL o una configurazione URL alla lista bianca"/>
+	<button label="OK" name="ok_btn"/>
+	<button label="Cancella" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_world_map.xml b/indra/newview/skins/default/xui/it/floater_world_map.xml
index 6fb7b93bc71..a672df0d963 100644
--- a/indra/newview/skins/default/xui/it/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/it/floater_world_map.xml
@@ -1,59 +1,70 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="worldmap" title="MAPPA">
-	<tab_container name="maptab">
-		<panel label="Oggetti" name="objects_mapview"/>
-		<panel label="Terreno" name="terrain_mapview"/>
-	</tab_container>
-	<text name="you_label">
-		Tu
-	</text>
-	<text name="home_label">
-		Casa
-	</text>
-	<text name="auction_label">
-		Asta
-	</text>
-	<text name="land_for_sale_label">
-		Terreno in vendita
-	</text>
-	<button label="Vai a Casa" label_selected="Vai a Casa" name="Go Home" tool_tip="Teletrasportati a casa"/>
-	<check_box label="Residenti" name="people_chk"/>
-	<check_box label="Punto informativo" name="infohub_chk"/>
-	<check_box label="Punto di snodo &#10;di teletrasporto" name="telehubchk"/>
-	<icon bottom="-170" name="landforsale" />
-	<check_box label="Terra in vendita" name="land_for_sale_chk" bottom="-170"/>
-	<text name="events_label">
-		Eventi:
-	</text>
-	<check_box label="PG" name="event_chk"/>
-	<check_box label="Mature" name="event_mature_chk"/>
-	<check_box label="Adult" name="event_adult_chk"/>
-	<icon bottom="-200" name="avatar_icon" />
-	<combo_box label="Amici Online" name="friend combo" tool_tip="Amici da mostrare sulla mappa">
-		<combo_box.item name="item1" label="Amici Online"/>
-	</combo_box>
-	<combo_box label="Landmark" name="landmark combo" tool_tip="Landmarks da mostrare sulla mappa">
-		<combo_box.item name="item1" label="Landmark"/>
-	</combo_box>
-	<line_editor label="Cerca per nome di regione" name="location" tool_tip="Scrivi il nome di una regione"/>
-	<button label="Cerca" name="DoSearch" tool_tip="Cerca regione"/>
-	<text name="search_label">
-		Cerca tra i risultati:
-	</text>
-	<scroll_list name="search_results" bottom_delta="-310" height="304" >
-		<column label="" name="icon"/>
-		<column label="" name="sim_name"/>
-	</scroll_list>
-	<text name="location_label">
-		Luogo:
-	</text>
-	<spinner name="spin x" tool_tip="Coordinata X del luogo da mostrare sulla mappa"/>
-	<spinner name="spin y" tool_tip="Coordinata Y del luogo da mostrare sulla mappa"/>
-	<spinner name="spin z" tool_tip="Coordinata Z del luogo da mostrare sulla mappa"/>
-	<button font="SansSerifSmall" label="Teletrasporto" label_selected="Teletrasporto" name="Teleport" tool_tip="Teletrasporto al luogo prescelto"/>
-	<button font="SansSerifSmall" left_delta="91" width="135" label="Mostra destinazione" label_selected="Mostra destinazione" name="Show Destination" tool_tip="Centra la mappa sul luogo prescelto"/>
-	<button font="SansSerifSmall" label="Pulisci" label_selected="Pulisci" name="Clear" tool_tip="Togli traccia"/>
-	<button font="SansSerifSmall" left_delta="91" width="135" label="Mostra la mia posizione" label_selected="Mostra la mia posizione" name="Show My Location" tool_tip="Centra la mappa alla posizione del tuo avatar"/>
-	<button font="SansSerifSmall" label="Copia lo SLurl negli appunti" name="copy_slurl" tool_tip="Copia l&apos;attuale posizione quale SLurl utilizzabile nel web."/>
-	<slider label="Zoom" name="zoom slider"/>
+<floater name="worldmap" title="MAPPA DEL MONDO">
+	<panel name="layout_panel_1">
+		<text name="events_label">
+			Legenda
+		</text>
+	</panel>
+	<panel>
+		<button font="SansSerifSmall" label="Mostra la mia posizione" label_selected="Mostra la mia posizione" left_delta="91" name="Show My Location" tool_tip="Centra la mappa sul luogo dove si trova il mio avatar" width="135"/>
+		<text name="person_label">
+			Io
+		</text>
+		<check_box label="Residenti" name="people_chk"/>
+		<check_box label="Punto informativo" name="infohub_chk"/>
+		<text name="infohub_label">
+			Infohub
+		</text>
+		<check_box bottom="-170" label="Terra in vendita" name="land_for_sale_chk"/>
+		<icon bottom="-170" name="landforsale"/>
+		<text name="land_sale_label">
+			Vendita di terra
+		</text>
+		<text name="auction_label">
+			per conto del proprietario
+		</text>
+		<button label="Vai a Casa" label_selected="Vai a Casa" name="Go Home" tool_tip="Teleport a casa mia"/>
+		<text name="Home_label">
+			Casa
+		</text>
+		<text name="events_label">
+			Eventi:
+		</text>
+		<check_box label="PG" name="event_chk"/>
+		<check_box initial_value="true" label="Mature" name="event_mature_chk"/>
+		<text name="mature_label">
+			Mature
+		</text>
+		<check_box label="Adult" name="event_adult_chk"/>
+	</panel>
+	<panel>
+		<text name="find_on_map_label">
+			Trova sulla Mappa
+		</text>
+	</panel>
+	<panel>
+		<combo_box label="Amici Online" name="friend combo" tool_tip="Mostra amici sulla mappa">
+			<combo_box.item label="Miei Amici Online" name="item1"/>
+		</combo_box>
+		<combo_box label="Miei Landmarks" name="landmark combo" tool_tip="Landmark da mostrare sulla mappa">
+			<combo_box.item label="Miei Landmarks" name="item1"/>
+		</combo_box>
+		<search_editor label="Regione per nome" name="location" tool_tip="Scrivi il nome di una regione"/>
+		<button label="Trova" name="DoSearch" tool_tip="Cerca regione"/>
+		<scroll_list bottom_delta="-310" height="304" name="search_results">
+			<scroll_list.columns label="" name="icon"/>
+			<scroll_list.columns label="" name="sim_name"/>
+		</scroll_list>
+		<button font="SansSerifSmall" label="Teletrasporto" label_selected="Teletrasporto" name="Teleport" tool_tip="Teletrasporto al luogo prescelto"/>
+		<button font="SansSerifSmall" label="Copia SLurl" name="copy_slurl" tool_tip="Copia il luogo attuale come SLurl per essere usato nel web."/>
+		<button font="SansSerifSmall" label="Mostra Selezione" label_selected="Mostra destinazione" left_delta="91" name="Show Destination" tool_tip="Centra la mappa sul luogo prescelto" width="135"/>
+	</panel>
+	<panel>
+		<text name="zoom_label">
+			Zoom
+		</text>
+	</panel>
+	<panel>
+		<slider label="Zoom" name="zoom slider"/>
+	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/inspect_avatar.xml b/indra/newview/skins/default/xui/it/inspect_avatar.xml
new file mode 100644
index 00000000000..61f7a692347
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/inspect_avatar.xml
@@ -0,0 +1,21 @@
+<?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
+-->
+<floater name="inspect_avatar">
+	<string name="Subtitle">
+		[ETA&apos;]
+	</string>
+	<string name="Details">
+		[PROFILO_SL]
+	</string>
+	<slider name="volume_slider" tool_tip="Volume del Voice" value="0.5"/>
+	<button label="Aggiungi Amico" name="add_friend_btn"/>
+	<button label="IM" name="im_btn"/>
+	<button label="Di più" name="view_profile_btn"/>
+	<panel name="moderator_panel">
+		<button label="Disattiva il Voice" name="disable_voice"/>
+		<button label="Attiva Voice" name="enable_voice"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/inspect_group.xml b/indra/newview/skins/default/xui/it/inspect_group.xml
new file mode 100644
index 00000000000..d7b86fdbcb1
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/inspect_group.xml
@@ -0,0 +1,22 @@
+<?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
+-->
+<floater name="inspect_group">
+	<string name="PrivateGroup">
+		Gruppo Privato
+	</string>
+	<string name="FreeToJoin">
+		Adesione libera
+	</string>
+	<string name="CostToJoin">
+		L$[AMOUNT] per aderire
+	</string>
+	<string name="YouAreMember">
+		Tu sei un Membro
+	</string>
+	<button label="Aderire" name="join_btn"/>
+	<button label="Abbandona" name="leave_btn"/>
+	<button label="Vedi Profilo" name="view_profile_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/inspect_object.xml b/indra/newview/skins/default/xui/it/inspect_object.xml
new file mode 100644
index 00000000000..7e6d195cb1f
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/inspect_object.xml
@@ -0,0 +1,34 @@
+<?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
+-->
+<floater name="inspect_object">
+	<string name="Creator">
+		Di [CREATOR]
+	</string>
+	<string name="CreatorAndOwner">
+		Di [CREATOR]
+owner [OWNER]
+	</string>
+	<string name="Price">
+		L$[AMOUNT]
+	</string>
+	<string name="PriceFree">
+		Gratis!
+	</string>
+	<string name="Touch">
+		Tocca
+	</string>
+	<string name="Sit">
+		Siedi
+	</string>
+	<button label="Compra" name="buy_btn"/>
+	<button label="Paga" name="pay_btn"/>
+	<button label="Fai una Copia" name="take_free_copy_btn"/>
+	<button label="Tocca" name="touch_btn"/>
+	<button label="Siedi" name="sit_btn"/>
+	<button label="Apri" name="open_btn"/>
+	<icon name="secure_browsing" tool_tip="Secure Browsing"/>
+	<button label="Ulteriore" name="more_info_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/inspect_remote_object.xml b/indra/newview/skins/default/xui/it/inspect_remote_object.xml
new file mode 100644
index 00000000000..9fabe2ca0b5
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/inspect_remote_object.xml
@@ -0,0 +1,13 @@
+<?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
+-->
+<floater name="inspect_remote_object">
+	<text name="object_owner_label">
+		Proprietario:
+	</text>
+	<button label="Mappa" name="map_btn"/>
+	<button label="Bloccare" name="block_btn"/>
+	<button label="Chiudi" name="close_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/menu_attachment_other.xml b/indra/newview/skins/default/xui/it/menu_attachment_other.xml
new file mode 100644
index 00000000000..ff068b90a5c
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_attachment_other.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- *NOTE: See also menu_avatar_other.xml -->
+<context_menu name="Avatar Pie">
+	<menu_item_call label="Vedi profilo" name="Profile..."/>
+	<menu_item_call label="Chiedi amicizia" name="Add Friend"/>
+	<menu_item_call label="IM" name="Send IM..."/>
+	<menu_item_call label="Chiama" name="Call"/>
+	<menu_item_call label="Invita nel gruppo" name="Invite..."/>
+	<menu_item_call label="Blocca" name="Avatar Mute"/>
+	<menu_item_call label="Denuncia" name="abuse"/>
+	<menu_item_call label="Congela" name="Freeze..."/>
+	<menu_item_call label="Espelli" name="Eject..."/>
+	<menu_item_call label="Debug" name="Debug..."/>
+	<menu_item_call label="Avvicinati" name="Zoom In"/>
+	<menu_item_call label="Paga" name="Pay..."/>
+	<menu_item_call label="Profilo oggetto" name="Object Inspect"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_attachment_self.xml b/indra/newview/skins/default/xui/it/menu_attachment_self.xml
new file mode 100644
index 00000000000..9711b5918a3
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_attachment_self.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Attachment Pie">
+	<menu_item_call label="Tocca" name="Attachment Object Touch"/>
+	<menu_item_call label="Modifica" name="Edit..."/>
+	<menu_item_call label="Stacca" name="Detach"/>
+	<menu_item_call label="Lascia" name="Drop"/>
+	<menu_item_call label="Alzati" name="Stand Up"/>
+	<menu_item_call label="Il mio aspetto fisico" name="Appearance..."/>
+	<menu_item_call label="I miei amici" name="Friends..."/>
+	<menu_item_call label="I miei gruppi" name="Groups..."/>
+	<menu_item_call label="Il mio profilo" name="Profile..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_avatar_icon.xml b/indra/newview/skins/default/xui/it/menu_avatar_icon.xml
new file mode 100644
index 00000000000..522c7ab4e6a
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_avatar_icon.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Avatar Icon Menu">
+	<menu_item_call label="Vedi profilo" name="Show Profile"/>
+	<menu_item_call label="Manda IM..." name="Send IM"/>
+	<menu_item_call label="Chiedi amicizia..." name="Add Friend"/>
+	<menu_item_call label="Togli amicizia..." name="Remove Friend"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/it/menu_avatar_other.xml b/indra/newview/skins/default/xui/it/menu_avatar_other.xml
new file mode 100644
index 00000000000..a435fcd3117
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_avatar_other.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- *NOTE: See also menu_attachment_other.xml -->
+<context_menu name="Avatar Pie">
+	<menu_item_call label="Vedi profilo" name="Profile..."/>
+	<menu_item_call label="Chiedi amicizia" name="Add Friend"/>
+	<menu_item_call label="IM" name="Send IM..."/>
+	<menu_item_call label="Chiama" name="Call"/>
+	<menu_item_call label="Invita nel gruppo" name="Invite..."/>
+	<menu_item_call label="Blocca" name="Avatar Mute"/>
+	<menu_item_call label="Denuncia" name="abuse"/>
+	<menu_item_call label="Congela" name="Freeze..."/>
+	<menu_item_call label="Espelli" name="Eject..."/>
+	<menu_item_call label="Debug" name="Debug..."/>
+	<menu_item_call label="Avvicinati" name="Zoom In"/>
+	<menu_item_call label="Paga" name="Pay..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_avatar_self.xml b/indra/newview/skins/default/xui/it/menu_avatar_self.xml
new file mode 100644
index 00000000000..b7a9f8efbed
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_avatar_self.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Self Pie">
+	<menu_item_call label="Alzati" name="Stand Up"/>
+	<context_menu label="Vola &gt;" name="Take Off &gt;">
+		<context_menu label="Abiti &gt;" name="Clothes &gt;">
+			<menu_item_call label="Gonna" name="Shirt"/>
+			<menu_item_call label="Pantaloni" name="Pants"/>
+			<menu_item_call label="Gonna" name="Skirt"/>
+			<menu_item_call label="Scarpe" name="Shoes"/>
+			<menu_item_call label="Calzini" name="Socks"/>
+			<menu_item_call label="Giacca" name="Jacket"/>
+			<menu_item_call label="Guanti" name="Gloves"/>
+			<menu_item_call label="Maglietta intima" name="Self Undershirt"/>
+			<menu_item_call label="Slip" name="Self Underpants"/>
+			<menu_item_call label="Tatuaggio" name="Self Tattoo"/>
+			<menu_item_call label="Alfa (trasparenza)" name="Self Alpha"/>
+			<menu_item_call label="Tutti gli abiti" name="All Clothes"/>
+		</context_menu>
+		<context_menu label="HUD &gt;" name="Object Detach HUD"/>
+		<context_menu label="Stacca &gt;" name="Object Detach"/>
+		<menu_item_call label="Stacca tutto" name="Detach All"/>
+	</context_menu>
+	<menu_item_call label="Il mio aspetto fisico" name="Appearance..."/>
+	<menu_item_call label="I miei amici" name="Friends..."/>
+	<menu_item_call label="I miei gruppi" name="Groups..."/>
+	<menu_item_call label="Il mio profilo" name="Profile..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_bottomtray.xml b/indra/newview/skins/default/xui/it/menu_bottomtray.xml
new file mode 100644
index 00000000000..185cf75183f
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_bottomtray.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="hide_camera_move_controls_menu">
+	<menu_item_check label="Tasto Gesture" name="ShowGestureButton"/>
+	<menu_item_check label="Tasto Movimento" name="ShowMoveButton"/>
+	<menu_item_check label="Tasto Camera" name="ShowCameraButton"/>
+	<menu_item_check label="Tasto Snapshot" name="ShowSnapshotButton"/>
+	<menu_item_call label="Taglia" name="NearbyChatBar_Cut"/>
+	<menu_item_call label="Copia" name="NearbyChatBar_Copy"/>
+	<menu_item_call label="Incolla" name="NearbyChatBar_Paste"/>
+	<menu_item_call label="Cancella" name="NearbyChatBar_Delete"/>
+	<menu_item_call label="Seleziona Tutto" name="NearbyChatBar_Select_All"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/it/menu_favorites.xml b/indra/newview/skins/default/xui/it/menu_favorites.xml
new file mode 100644
index 00000000000..9c4966d198f
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_favorites.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+	<menu_item_call label="Teleport" name="Teleport To Landmark"/>
+	<menu_item_call label="Vedi/Modifica Landmark" name="Landmark Open"/>
+	<menu_item_call label="Copia SLurl" name="Copy slurl"/>
+	<menu_item_call label="Mostra sulla mappa" name="Show On Map"/>
+	<menu_item_call label="Copia" name="Landmark Copy"/>
+	<menu_item_call label="Incolla" name="Landmark Paste"/>
+	<menu_item_call label="Cancella" name="Delete"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/it/menu_gesture_gear.xml b/indra/newview/skins/default/xui/it/menu_gesture_gear.xml
new file mode 100644
index 00000000000..c4f9d21d14d
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_gesture_gear.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_gesture_gear">
+	<menu_item_call label="Aggiungi/Cancella dai favoriti" name="activate"/>
+	<menu_item_call label="Copia" name="copy_gesture"/>
+	<menu_item_call label="Incolla" name="paste"/>
+	<menu_item_call label="Copia UUID" name="copy_uuid"/>
+	<menu_item_call label="Salva outfit" name="save_to_outfit"/>
+	<menu_item_call label="Modifica" name="edit_gesture"/>
+	<menu_item_call label="Ispeziona" name="inspect"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/it/menu_group_plus.xml b/indra/newview/skins/default/xui/it/menu_group_plus.xml
new file mode 100644
index 00000000000..6b7692a0671
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_group_plus.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_group_plus">
+	<menu_item_call label="Unisciti al gruppo..." name="item_join"/>
+	<menu_item_call label="Nuovo gruppo..." name="item_new"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/it/menu_hide_navbar.xml b/indra/newview/skins/default/xui/it/menu_hide_navbar.xml
new file mode 100644
index 00000000000..a87e76a19b2
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_hide_navbar.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="hide_navbar_menu">
+	<menu_item_check label="Mostra la barra di navigazione" name="ShowNavbarNavigationPanel"/>
+	<menu_item_check label="Mostra la barra dei favoriti" name="ShowNavbarFavoritesPanel"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/it/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/it/menu_imchiclet_adhoc.xml
new file mode 100644
index 00000000000..f78ed8489fe
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_imchiclet_adhoc.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="IMChiclet AdHoc Menu">
+	<menu_item_call label="Fine sessione" name="End Session"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/it/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/it/menu_imchiclet_group.xml
new file mode 100644
index 00000000000..f39ad316fe3
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_imchiclet_group.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="IMChiclet Group Menu">
+	<menu_item_call label="Informazioni gruppo" name="Show Profile"/>
+	<menu_item_call label="Mostra sessione" name="Chat"/>
+	<menu_item_call label="Fine sessione" name="End Session"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/it/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/it/menu_imchiclet_p2p.xml
new file mode 100644
index 00000000000..e89576b1f98
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_imchiclet_p2p.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="IMChiclet P2P Menu">
+	<menu_item_call label="Vedi profilo" name="Show Profile"/>
+	<menu_item_call label="Chiedi amicizia" name="Add Friend"/>
+	<menu_item_call label="Mostra sessione" name="Send IM"/>
+	<menu_item_call label="Fine sessione" name="End Session"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/it/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/it/menu_inspect_avatar_gear.xml
new file mode 100644
index 00000000000..968fbd37aee
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_inspect_avatar_gear.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu name="Gear Menu">
+	<menu_item_call label="Vedi profilo" name="view_profile"/>
+	<menu_item_call label="Chiedi amicizia" name="add_friend"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="Chiama" name="call"/>
+	<menu_item_call label="Teleport" name="teleport"/>
+	<menu_item_call label="Invita nel gruppo" name="invite_to_group"/>
+	<menu_item_call label="Blocca" name="block"/>
+	<menu_item_call label="Denuncia" name="report"/>
+	<menu_item_call label="Congela" name="freeze"/>
+	<menu_item_call label="Espelli" name="eject"/>
+	<menu_item_call label="Debug" name="debug"/>
+	<menu_item_call label="Trova sulla mappa" name="find_on_map"/>
+	<menu_item_call label="Avvicinati" name="zoom_in"/>
+	<menu_item_call label="Paga" name="pay"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/it/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/it/menu_inspect_object_gear.xml
new file mode 100644
index 00000000000..74d828fc20d
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_inspect_object_gear.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu name="Gear Menu">
+	<menu_item_call label="Tocca" name="touch"/>
+	<menu_item_call label="Siedi" name="sit"/>
+	<menu_item_call label="Paga" name="pay"/>
+	<menu_item_call label="Compra" name="buy"/>
+	<menu_item_call label="Prendi" name="take"/>
+	<menu_item_call label="Prendi copia" name="take_copy"/>
+	<menu_item_call label="Apri" name="open"/>
+	<menu_item_call label="Modifica" name="edit"/>
+	<menu_item_call label="Indossa" name="wear"/>
+	<menu_item_call label="Denuncia" name="report"/>
+	<menu_item_call label="Blocca" name="block"/>
+	<menu_item_call label="Avvicinati" name="zoom_in"/>
+	<menu_item_call label="Cancella" name="remove"/>
+	<menu_item_call label="Più info" name="more_info"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/it/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/it/menu_inspect_self_gear.xml
new file mode 100644
index 00000000000..1812a21b0db
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_inspect_self_gear.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu name="Gear Menu">
+	<menu_item_call label="Alzati" name="stand_up"/>
+	<menu_item_call label="Il mio aspetto fisico" name="my_appearance"/>
+	<menu_item_call label="Il mio profilo" name="my_profile"/>
+	<menu_item_call label="I miei amici" name="my_friends"/>
+	<menu_item_call label="I miei gruppi" name="my_groups"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/it/menu_inventory.xml b/indra/newview/skins/default/xui/it/menu_inventory.xml
index 31b50e8d6b1..edb9490914c 100644
--- a/indra/newview/skins/default/xui/it/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/it/menu_inventory.xml
@@ -12,7 +12,7 @@
 	<menu_item_call label="Nuovo Script" name="New Script"/>
 	<menu_item_call label="Nuova Notecard" name="New Note"/>
 	<menu_item_call label="Nuova Gesture" name="New Gesture"/>
-	<menu name="New Clothes">
+	<menu label="Maglietta Intima" name="New Clothes">
 		<menu_item_call label="Nuova Maglietta" name="New Shirt"/>
 		<menu_item_call label="Nuovi Pantaloni" name="New Pants"/>
 		<menu_item_call label="Nuove Scarpe" name="New Shoes"/>
@@ -22,31 +22,47 @@
 		<menu_item_call label="Nuovi Guanti" name="New Gloves"/>
 		<menu_item_call label="Nuova Canottiera" name="New Undershirt"/>
 		<menu_item_call label="Nuove Mutande" name="New Underpants"/>
+		<menu_item_call label="Nuovo Alfa Mask" name="New Alpha Mask"/>
+		<menu_item_call label="Nuovo Tatuaggio" name="New Tattoo"/>
 	</menu>
-	<menu name="New Body Parts">
+	<menu label="Nuove Parti del Corpo" name="New Body Parts">
 		<menu_item_call label="Nuova Forma del corpo" name="New Shape"/>
 		<menu_item_call label="Nuova Pelle" name="New Skin"/>
 		<menu_item_call label="Nuovi Capelli" name="New Hair"/>
 		<menu_item_call label="Nuovi Occhi" name="New Eyes"/>
 	</menu>
+	<menu label="Cambia Tipo" name="Change Type">
+		<menu_item_call label="Predefinito" name="Default"/>
+		<menu_item_call label="Guanti" name="Gloves"/>
+		<menu_item_call label="Giacca" name="Jacket"/>
+		<menu_item_call label="Pantaloni" name="Pants"/>
+		<menu_item_call label="Shape" name="Shape"/>
+		<menu_item_call label="Scarpe" name="Shoes"/>
+		<menu_item_call label="Camicia" name="Shirt"/>
+		<menu_item_call label="Gonna" name="Skirt"/>
+		<menu_item_call label="Slip" name="Underpants"/>
+		<menu_item_call label="Maglietta Intima" name="Undershirt"/>
+	</menu>
 	<menu_item_call label="Teletrasportati" name="Landmark Open"/>
 	<menu_item_call label="Apri" name="Animation Open"/>
 	<menu_item_call label="Apri" name="Sound Open"/>
 	<menu_item_call label="Elimina oggetto" name="Purge Item"/>
 	<menu_item_call label="Ripristina oggetto" name="Restore Item"/>
+	<menu_item_call label="Vai al Link" name="Goto Link"/>
 	<menu_item_call label="Apri" name="Open"/>
 	<menu_item_call label="Proprietà" name="Properties"/>
 	<menu_item_call label="Rinomina" name="Rename"/>
 	<menu_item_call label="Copia UUID dell&apos;oggetto" name="Copy Asset UUID"/>
 	<menu_item_call label="Copia" name="Copy"/>
 	<menu_item_call label="Incolla" name="Paste"/>
+	<menu_item_call label="Incolla come Link" name="Paste As Link"/>
 	<menu_item_call label="Cancella" name="Delete"/>
 	<menu_item_call label="Togli gli oggetti" name="Take Off Items"/>
 	<menu_item_call label="Aggiungi all&apos;outfit" name="Add To Outfit"/>
 	<menu_item_call label="Sostituisci outfit" name="Replace Outfit"/>
 	<menu_item_call label="Inizia la conferenza chat" name="Conference Chat Folder"/>
 	<menu_item_call label="Esegui" name="Sound Play"/>
-	<menu_item_call label="Informazioni sul landmark" name="Teleport To Landmark"/>
+	<menu_item_call label="Informazioni sul Landmark" name="About Landmark"/>
 	<menu_item_call label="Esegui inworld" name="Animation Play"/>
 	<menu_item_call label="Esegui localmente" name="Animation Audition"/>
 	<menu_item_call label="Invia un Instant Message" name="Send Instant Message"/>
@@ -54,8 +70,8 @@
 	<menu_item_call label="Inizia una conferenza chat" name="Conference Chat"/>
 	<menu_item_call label="Attiva" name="Activate"/>
 	<menu_item_call label="Disattiva" name="Deactivate"/>
+	<menu_item_call label="Salva con nome" name="Save As"/>
 	<menu_item_call label="Stacca da te" name="Detach From Yourself"/>
-	<menu_item_call label="Ripristina all&apos;ultima posizione" name="Restore to Last Position"/>
 	<menu_item_call label="Indossa" name="Object Wear"/>
 	<menu label="Attacca a" name="Attach To"/>
 	<menu label="Attacca all&apos;HUD" name="Attach To HUD"/>
diff --git a/indra/newview/skins/default/xui/it/menu_inventory_add.xml b/indra/newview/skins/default/xui/it/menu_inventory_add.xml
new file mode 100644
index 00000000000..d33dabc4c36
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_inventory_add.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_inventory_add">
+	<menu label="Carica sul server" name="upload">
+		<menu_item_call label="Immagine ([COST]L$)..." name="Upload Image"/>
+		<menu_item_call label="Suono ([COST]L$)..." name="Upload Sound"/>
+		<menu_item_call label="Animazione ([COST]L$)..." name="Upload Animation"/>
+		<menu_item_call label="In blocco ([COST]L$ per file)..." name="Bulk Upload"/>
+	</menu>
+	<menu_item_call label="Nuova Cartella" name="New Folder"/>
+	<menu_item_call label="Nuovo Script" name="New Script"/>
+	<menu_item_call label="Nuova Notecard" name="New Note"/>
+	<menu_item_call label="Nuova Gesture" name="New Gesture"/>
+	<menu label="Nuovi Abiti" name="New Clothes">
+		<menu_item_call label="Nuova Camicia" name="New Shirt"/>
+		<menu_item_call label="Nuovi Pantaloni" name="New Pants"/>
+		<menu_item_call label="Nuove Scarpe" name="New Shoes"/>
+		<menu_item_call label="Nuove Calze" name="New Socks"/>
+		<menu_item_call label="Nuova Giacca" name="New Jacket"/>
+		<menu_item_call label="Nuova Gonna" name="New Skirt"/>
+		<menu_item_call label="Nuovi Guanti" name="New Gloves"/>
+		<menu_item_call label="Nuova Maglietta Intima" name="New Undershirt"/>
+		<menu_item_call label="Nuovi Slip" name="New Underpants"/>
+		<menu_item_call label="Nuovo Alfa (Trasparenza)" name="New Alpha"/>
+		<menu_item_call label="Nuovo Tatuaggio" name="New Tattoo"/>
+	</menu>
+	<menu label="Nuove Parti del Corpo" name="New Body Parts">
+		<menu_item_call label="Nuova Shape" name="New Shape"/>
+		<menu_item_call label="Nuova Pelle" name="New Skin"/>
+		<menu_item_call label="Nuovi Capelli" name="New Hair"/>
+		<menu_item_call label="Nuovi Occhi" name="New Eyes"/>
+	</menu>
+</menu>
diff --git a/indra/newview/skins/default/xui/it/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/it/menu_inventory_gear_default.xml
new file mode 100644
index 00000000000..e97af5c9505
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_inventory_gear_default.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_gear_default">
+	<menu_item_call label="Nuova Finestra di Inventory" name="new_window"/>
+	<menu_item_call label="Ordina per nome" name="sort_by_name"/>
+	<menu_item_call label="Ordina per data (più recenti)" name="sort_by_recent"/>
+	<menu_item_call label="Mostra i Filtri" name="show_filters"/>
+	<menu_item_call label="Cancella i Filtri" name="reset_filters"/>
+	<menu_item_call label="Chiudi le cartelle" name="close_folders"/>
+	<menu_item_call label="Svuota cestino" name="empty_trash"/>
+	<menu_item_call label="Svuota Persi e Ritrovati" name="empty_lostnfound"/>
+	<menu_item_call label="Salva texture come" name="Save Texture As"/>
+	<menu_item_call label="Trova originale" name="Find Original"/>
+	<menu_item_call label="Trova tutti i link" name="Find All Links"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/it/menu_land.xml b/indra/newview/skins/default/xui/it/menu_land.xml
new file mode 100644
index 00000000000..173c080c3fa
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_land.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Land Pie">
+	<menu_item_call label="Info sul terreno" name="Place Information..."/>
+	<menu_item_call label="Siedi qui" name="Sit Here"/>
+	<menu_item_call label="Compra questo terreno" name="Land Buy"/>
+	<menu_item_call label="Compra permesso" name="Land Buy Pass"/>
+	<menu_item_call label="Costruisci" name="Create"/>
+	<menu_item_call label="Modifica terreno" name="Edit Terrain"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_landmark.xml b/indra/newview/skins/default/xui/it/menu_landmark.xml
new file mode 100644
index 00000000000..58e3e992ed8
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_landmark.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="landmark_overflow_menu">
+	<menu_item_call label="Copia SLurl" name="copy"/>
+	<menu_item_call label="Cancella" name="delete"/>
+	<menu_item_call label="Crea luogo consigliato" name="pick"/>
+	<menu_item_call label="Aggiungi alla barra dei favoriti" name="add_to_favbar"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_login.xml b/indra/newview/skins/default/xui/it/menu_login.xml
index 44a801d2739..db3b84df294 100644
--- a/indra/newview/skins/default/xui/it/menu_login.xml
+++ b/indra/newview/skins/default/xui/it/menu_login.xml
@@ -1,13 +1,30 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar name="Login Menu">
-	<menu label="File" name="File">
+	<menu label="Io" name="File">
+		<menu_item_call label="Preferenze" name="Preferences..."/>
 		<menu_item_call label="Chiudi" name="Quit"/>
 	</menu>
-	<menu label="Modifica" name="Edit">
-		<menu_item_call label="Preferenze...." name="Preferences..."/>
-	</menu>
 	<menu label="Aiuto" name="Help">
 		<menu_item_call label="Aiuto di [SECOND_LIFE]" name="Second Life Help"/>
-		<menu_item_call label="Informazioni su [APP_NAME]..." name="About Second Life..."/>
+	</menu>
+	<menu label="Debug" name="Debug">
+		<menu label="Modifica" name="Edit">
+			<menu_item_call label="Annulla" name="Undo"/>
+			<menu_item_call label="Ripeti" name="Redo"/>
+			<menu_item_call label="Taglia" name="Cut"/>
+			<menu_item_call label="Copia" name="Copy"/>
+			<menu_item_call label="Incolla" name="Paste"/>
+			<menu_item_call label="Cancella" name="Delete"/>
+			<menu_item_call label="Duplica" name="Duplicate"/>
+			<menu_item_call label="Seleziona Tutto" name="Select All"/>
+			<menu_item_call label="Deseleziona" name="Deselect"/>
+		</menu>
+		<menu_item_call label="Mostra Impostazioni di Debug" name="Debug Settings"/>
+		<menu_item_call label="Impostazioni colori Interfaccia" name="UI/Color Settings"/>
+		<menu_item_call label="Mostra la finestra laterale" name="Show Side Tray"/>
+		<menu label="Test Interfaccia Utente" name="UI Tests"/>
+		<menu_item_call label="Mostra i Termini di Servizio (TOS)" name="TOS"/>
+		<menu_item_call label="Mostra Messaggi critici" name="Critical"/>
+		<menu_item_call label="Test Web browser" name="Web Browser Test"/>
 	</menu>
 </menu_bar>
diff --git a/indra/newview/skins/default/xui/it/menu_mini_map.xml b/indra/newview/skins/default/xui/it/menu_mini_map.xml
index 1109f3f6466..7caa7fd226e 100644
--- a/indra/newview/skins/default/xui/it/menu_mini_map.xml
+++ b/indra/newview/skins/default/xui/it/menu_mini_map.xml
@@ -3,6 +3,7 @@
 	<menu_item_call label="Zoom ravvicinato" name="Zoom Close"/>
 	<menu_item_call label="Zoom Medio" name="Zoom Medium"/>
 	<menu_item_call label="Zoom Distante" name="Zoom Far"/>
+	<menu_item_check label="Ruota la mappa" name="Rotate Map"/>
 	<menu_item_call label="Ferma il puntamento" name="Stop Tracking"/>
-	<menu_item_call label="Profilo..." name="Profile"/>
+	<menu_item_call label="Mappa del mondo" name="World Map"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/it/menu_navbar.xml b/indra/newview/skins/default/xui/it/menu_navbar.xml
new file mode 100644
index 00000000000..3d855cf7017
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_navbar.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Navbar Menu">
+	<menu_item_check label="Mostra le coordinate" name="Show Coordinates"/>
+	<menu_item_check label="Mostra proprietà parcel" name="Show Parcel Properties"/>
+	<menu_item_call label="Landmark" name="Landmark"/>
+	<menu_item_call label="Taglia" name="Cut"/>
+	<menu_item_call label="Copia" name="Copy"/>
+	<menu_item_call label="Incolla" name="Paste"/>
+	<menu_item_call label="Cancella" name="Delete"/>
+	<menu_item_call label="Seleziona tutto" name="Select All"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/it/menu_nearby_chat.xml b/indra/newview/skins/default/xui/it/menu_nearby_chat.xml
new file mode 100644
index 00000000000..2a625fc7633
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_nearby_chat.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="NearBy Chat Menu">
+	<menu_item_call label="Mostra le persone vicine..." name="nearby_people"/>
+	<menu_item_check label="Mostra Testo bloccato" name="muted_text"/>
+	<menu_item_check label="Mostra Icone amici" name="show_buddy_icons"/>
+	<menu_item_check label="Mostra nomi" name="show_names"/>
+	<menu_item_check label="Mostra Icone e nomi" name="show_icons_and_names"/>
+	<menu_item_call label="Dimensioni del Font" name="font_size"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/it/menu_object.xml b/indra/newview/skins/default/xui/it/menu_object.xml
new file mode 100644
index 00000000000..955d4c8776e
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_object.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Object Pie">
+	<menu_item_call label="Tocca" name="Object Touch"/>
+	<menu_item_call label="Modifica" name="Edit..."/>
+	<menu_item_call label="Costruisci" name="Build"/>
+	<menu_item_call label="Apri" name="Open"/>
+	<menu_item_call label="Siedi qui" name="Object Sit"/>
+	<menu_item_call label="Profilo oggetto" name="Object Inspect"/>
+	<context_menu label="Metti &gt;" name="Put On">
+		<menu_item_call label="Indossa" name="Wear"/>
+		<context_menu label="Attacca &gt;" name="Object Attach"/>
+		<context_menu label="Attacca HUD &gt;" name="Object Attach HUD"/>
+	</context_menu>
+	<context_menu label="Togli &gt;" name="Remove">
+		<menu_item_call label="Prendi" name="Pie Object Take"/>
+		<menu_item_call label="Denuncia abuso" name="Report Abuse..."/>
+		<menu_item_call label="Blocca" name="Object Mute"/>
+		<menu_item_call label="Restituisci" name="Return..."/>
+		<menu_item_call label="Cancella" name="Delete"/>
+	</context_menu>
+	<menu_item_call label="Prendi copia" name="Take Copy"/>
+	<menu_item_call label="Paga" name="Pay..."/>
+	<menu_item_call label="Compra" name="Buy..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_object_icon.xml b/indra/newview/skins/default/xui/it/menu_object_icon.xml
new file mode 100644
index 00000000000..0f347b1a909
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_object_icon.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Object Icon Menu">
+	<menu_item_call label="Profilo oggetto..." name="Object Profile"/>
+	<menu_item_call label="Blocca..." name="Block"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/it/menu_participant_list.xml b/indra/newview/skins/default/xui/it/menu_participant_list.xml
new file mode 100644
index 00000000000..33c8fc404d8
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_participant_list.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Participant List Context Menu">
+	<menu_item_call label="Vedi profilo" name="View Profile"/>
+	<menu_item_call label="Chiedi amicizia" name="Add Friend"/>
+	<menu_item_call label="IM" name="IM"/>
+	<menu_item_call label="Chiama" name="Call"/>
+	<menu_item_call label="Condividi" name="Share"/>
+	<menu_item_call label="Paga" name="Pay"/>
+	<menu_item_check label="Blocca/Sblocca" name="Block/Unblock"/>
+	<menu_item_check label="Muta testo" name="MuteText"/>
+	<menu_item_check label="Consenti chat di testo" name="AllowTextChat"/>
+	<menu_item_call label="Muta questo partecipante" name="ModerateVoiceMuteSelected"/>
+	<menu_item_call label="Muta tutti gli altri" name="ModerateVoiceMuteOthers"/>
+	<menu_item_call label="Riabilita questo partecipante" name="ModerateVoiceUnMuteSelected"/>
+	<menu_item_call label="Riabilita tutti gli altri" name="ModerateVoiceUnMuteOthers"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/it/menu_people_friends_view_sort.xml
new file mode 100644
index 00000000000..ad8927be132
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_people_friends_view_sort.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_group_plus">
+	<menu_item_check label="Ordina per nome" name="sort_name"/>
+	<menu_item_check label="Ordina per stato" name="sort_status"/>
+	<menu_item_check label="Icone persone" name="view_icons"/>
+	<menu_item_call label="Mostra gli &amp; oggetti dei residenti bloccati" name="show_blocked_list"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/it/menu_people_groups_view_sort.xml
new file mode 100644
index 00000000000..d31ddaf1aa6
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_people_groups_view_sort.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_group_plus">
+	<menu_item_check label="Visualizza le icone di gruppo" name="Display Group Icons"/>
+	<menu_item_call label="Lascia i gruppi selezionati" name="Leave Selected Group"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_nearby.xml b/indra/newview/skins/default/xui/it/menu_people_nearby.xml
new file mode 100644
index 00000000000..be071a50743
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_people_nearby.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Avatar Context Menu">
+	<menu_item_call label="Vedi profilo" name="View Profile"/>
+	<menu_item_call label="Chiedi amicizia" name="Add Friend"/>
+	<menu_item_call label="IM" name="IM"/>
+	<menu_item_call label="Chiama" name="Call"/>
+	<menu_item_call label="Condividi" name="Share"/>
+	<menu_item_call label="Paga" name="Pay"/>
+	<menu_item_check label="Blocca/Sblocca" name="Block/Unblock"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/it/menu_people_nearby_multiselect.xml
new file mode 100644
index 00000000000..f9fda2fb985
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_people_nearby_multiselect.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Multi-Selected People Context Menu">
+	<menu_item_call label="Chiedi amicizie" name="Add Friends"/>
+	<menu_item_call label="IM" name="IM"/>
+	<menu_item_call label="Chiama" name="Call"/>
+	<menu_item_call label="Condividi" name="Share"/>
+	<menu_item_call label="Paga" name="Pay"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/it/menu_people_nearby_view_sort.xml
new file mode 100644
index 00000000000..c1b384196d0
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_people_nearby_view_sort.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_group_plus">
+	<menu_item_check label="Ordina mettendo per primo chi ha parlato per ultimo" name="sort_by_recent_speakers"/>
+	<menu_item_check label="Ordina per nome" name="sort_name"/>
+	<menu_item_check label="Ordina per Distanza" name="sort_distance"/>
+	<menu_item_check label="Vedi le icone delle persone" name="view_icons"/>
+	<menu_item_call label="Mostra gli &amp; oggetti dei residenti bloccati" name="show_blocked_list"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/it/menu_people_recent_view_sort.xml
new file mode 100644
index 00000000000..f8fd9dca79d
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_people_recent_view_sort.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_group_plus">
+	<menu_item_check label="Mostra prima i più recenti" name="sort_most"/>
+	<menu_item_check label="Ordina per nome" name="sort_name"/>
+	<menu_item_check label="Vedi le icone delle persone" name="view_icons"/>
+	<menu_item_call label="Mostra gli &amp; oggetti dei residenti bloccati" name="show_blocked_list"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/it/menu_picks.xml b/indra/newview/skins/default/xui/it/menu_picks.xml
new file mode 100644
index 00000000000..e84b321ccf8
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_picks.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Picks">
+	<menu_item_call label="Informazioni" name="pick_info"/>
+	<menu_item_call label="Modifica" name="pick_edit"/>
+	<menu_item_call label="Teleport" name="pick_teleport"/>
+	<menu_item_call label="Mappa" name="pick_map"/>
+	<menu_item_call label="Cancella" name="pick_delete"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_picks_plus.xml b/indra/newview/skins/default/xui/it/menu_picks_plus.xml
new file mode 100644
index 00000000000..d758a9715e2
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_picks_plus.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="picks_plus_menu">
+	<menu_item_call label="Nuovo luogo consigliato" name="create_pick"/>
+	<menu_item_call label="Nuovo Annuncio" name="create_classified"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_place.xml b/indra/newview/skins/default/xui/it/menu_place.xml
new file mode 100644
index 00000000000..5b9261b159a
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_place.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="place_overflow_menu">
+	<menu_item_call label="Prendi il Landmark" name="landmark"/>
+	<menu_item_call label="Crea luogo consigliato" name="pick"/>
+	<menu_item_call label="Compra Permesso" name="pass"/>
+	<menu_item_call label="Modifica" name="edit"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_place_add_button.xml b/indra/newview/skins/default/xui/it/menu_place_add_button.xml
new file mode 100644
index 00000000000..6dd10f422ec
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_place_add_button.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_folder_gear">
+	<menu_item_call label="Aggiungi cartella" name="add_folder"/>
+	<menu_item_call label="Aggiungi landmark" name="add_landmark"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/it/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/it/menu_places_gear_folder.xml
new file mode 100644
index 00000000000..45765bf77df
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_places_gear_folder.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_folder_gear">
+	<menu_item_call label="Aggiungi Landmark" name="add_landmark"/>
+	<menu_item_call label="Aggiungi cartella" name="add_folder"/>
+	<menu_item_call label="Taglia" name="cut"/>
+	<menu_item_call label="Copia" name="copy_folder"/>
+	<menu_item_call label="Incolla" name="paste"/>
+	<menu_item_call label="Rinomina" name="rename"/>
+	<menu_item_call label="Cancella" name="delete"/>
+	<menu_item_call label="Apri" name="expand"/>
+	<menu_item_call label="Chiudi" name="collapse"/>
+	<menu_item_call label="Apri tutte le cartelle" name="expand_all"/>
+	<menu_item_call label="Chiudi tutte le cartelle" name="collapse_all"/>
+	<menu_item_check label="Ordina per data" name="sort_by_date"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/it/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/it/menu_places_gear_landmark.xml
new file mode 100644
index 00000000000..2c5b8a848c1
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_places_gear_landmark.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_ladmark_gear">
+	<menu_item_call label="Teleport" name="teleport"/>
+	<menu_item_call label="Maggiori Informazioni" name="more_info"/>
+	<menu_item_call label="Mostra sulla Mappa" name="show_on_map"/>
+	<menu_item_call label="Aggiungi Landmark" name="add_landmark"/>
+	<menu_item_call label="Aggiungi Cartella" name="add_folder"/>
+	<menu_item_call label="Taglia" name="cut"/>
+	<menu_item_call label="Copia Landmark" name="copy_landmark"/>
+	<menu_item_call label="Copia SLurl" name="copy_slurl"/>
+	<menu_item_call label="Incolla" name="paste"/>
+	<menu_item_call label="Rinomina" name="rename"/>
+	<menu_item_call label="Cancella" name="delete"/>
+	<menu_item_call label="Apri tutte le cartelle" name="expand_all"/>
+	<menu_item_call label="Chiudi tutte le cartelle" name="collapse_all"/>
+	<menu_item_check label="Ordina per Data" name="sort_by_date"/>
+	<menu_item_call label="Crea Luogo Consigliato" name="create_pick"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/it/menu_profile_overflow.xml b/indra/newview/skins/default/xui/it/menu_profile_overflow.xml
new file mode 100644
index 00000000000..76a04a127e8
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_profile_overflow.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="profile_overflow_menu">
+	<menu_item_call label="Paga" name="pay"/>
+	<menu_item_call label="Condividi" name="share"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_slurl.xml b/indra/newview/skins/default/xui/it/menu_slurl.xml
index 283fd92b197..be83133efc1 100644
--- a/indra/newview/skins/default/xui/it/menu_slurl.xml
+++ b/indra/newview/skins/default/xui/it/menu_slurl.xml
@@ -2,5 +2,5 @@
 <menu name="Popup">
 	<menu_item_call label="Informazioni sull&apos;indirizzo URL" name="about_url"/>
 	<menu_item_call label="Teleportati all&apos;indirizzo URL" name="teleport_to_url"/>
-	<menu_item_call label="Mostra sulla mappa" name="show_on_map"/>
+	<menu_item_call label="Mappa" name="show_on_map"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/it/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/it/menu_teleport_history_gear.xml
new file mode 100644
index 00000000000..71acda5a9d0
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_teleport_history_gear.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Teleport History Gear Context Menu">
+	<menu_item_call label="Apri tutte le cartelle" name="Expand all folders"/>
+	<menu_item_call label="Chiudi tutte le cartelle" name="Collapse all folders"/>
+	<menu_item_call label="Cancella la storia dei Teleport" name="Clear Teleport History"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/it/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/it/menu_teleport_history_item.xml
new file mode 100644
index 00000000000..c01230584be
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_teleport_history_item.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Teleport History Item Context Menu">
+	<menu_item_call label="Teleport" name="Teleport"/>
+	<menu_item_call label="Più informazioni" name="More Information"/>
+	<menu_item_call label="Copia negli appunti" name="CopyToClipboard"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/it/menu_teleport_history_tab.xml
new file mode 100644
index 00000000000..c221f141a68
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_teleport_history_tab.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Teleport History Item Context Menu">
+	<menu_item_call label="Apri" name="TabOpen"/>
+	<menu_item_call label="Chiudi" name="TabClose"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_text_editor.xml b/indra/newview/skins/default/xui/it/menu_text_editor.xml
new file mode 100644
index 00000000000..baab233a219
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_text_editor.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Text editor context menu">
+	<menu_item_call label="Taglia" name="Cut"/>
+	<menu_item_call label="Copia" name="Copy"/>
+	<menu_item_call label="Incolla" name="Paste"/>
+	<menu_item_call label="Cancella" name="Delete"/>
+	<menu_item_call label="Seleziona Tutto" name="Select All"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_url_agent.xml b/indra/newview/skins/default/xui/it/menu_url_agent.xml
new file mode 100644
index 00000000000..874f7a8df9b
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_url_agent.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Mostra profilo" name="show_agent"/>
+	<menu_item_call label="Copia nome negli appunti" name="url_copy_label"/>
+	<menu_item_call label="Copia SLurl negli appunti" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_url_group.xml b/indra/newview/skins/default/xui/it/menu_url_group.xml
new file mode 100644
index 00000000000..ac9dab2b3c7
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_url_group.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Mostra info gruppo" name="show_group"/>
+	<menu_item_call label="Copia gruppo negli appunti" name="url_copy_label"/>
+	<menu_item_call label="Copia SLurl negli appunti" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_url_http.xml b/indra/newview/skins/default/xui/it/menu_url_http.xml
new file mode 100644
index 00000000000..b8f965f2d6f
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_url_http.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Apri pagina web" name="url_open"/>
+	<menu_item_call label="Apri nel browser interno" name="url_open_internal"/>
+	<menu_item_call label="Apri nel browser esterno" name="url_open_external"/>
+	<menu_item_call label="Copia URL negli appunti" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_url_inventory.xml b/indra/newview/skins/default/xui/it/menu_url_inventory.xml
new file mode 100644
index 00000000000..0b410b4eff0
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_url_inventory.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Mostra elemento dell&apos;inventory" name="show_item"/>
+	<menu_item_call label="Copia nome negli appunti" name="url_copy_label"/>
+	<menu_item_call label="Copia SLurl negli appunti" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_url_map.xml b/indra/newview/skins/default/xui/it/menu_url_map.xml
new file mode 100644
index 00000000000..096efcd1b9f
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_url_map.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Mostra sulla mappa" name="show_on_map"/>
+	<menu_item_call label="Teleportati nel luogo" name="teleport_to_location"/>
+	<menu_item_call label="Copia SLurl negli appunti" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_url_objectim.xml b/indra/newview/skins/default/xui/it/menu_url_objectim.xml
new file mode 100644
index 00000000000..67a9f0b9142
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_url_objectim.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Mostra info oggetto" name="show_object"/>
+	<menu_item_call label="Mostra sulla mappa" name="show_on_map"/>
+	<menu_item_call label="Teleportati sul luogo dell&apos;oggetto" name="teleport_to_object"/>
+	<menu_item_call label="Copia nome oggetto negli appunti" name="url_copy_label"/>
+	<menu_item_call label="Copia SLurl negli appunti" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_url_parcel.xml b/indra/newview/skins/default/xui/it/menu_url_parcel.xml
new file mode 100644
index 00000000000..e40d05f423e
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_url_parcel.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Mostra info appezzamento" name="show_parcel"/>
+	<menu_item_call label="Mostra sulla mappa" name="show_on_map"/>
+	<menu_item_call label="Copia SLurl negli appunti" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_url_slapp.xml b/indra/newview/skins/default/xui/it/menu_url_slapp.xml
new file mode 100644
index 00000000000..2e5ad64a598
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_url_slapp.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Lancia questo comando" name="run_slapp"/>
+	<menu_item_call label="Copia SLurl negli appunti" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_url_slurl.xml b/indra/newview/skins/default/xui/it/menu_url_slurl.xml
new file mode 100644
index 00000000000..1850252669a
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_url_slurl.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Mostra info del luogo" name="show_place"/>
+	<menu_item_call label="Mostra sulla mappa" name="show_on_map"/>
+	<menu_item_call label="Teleporta nel luogo" name="teleport_to_location"/>
+	<menu_item_call label="Copia SLurl negli appunti" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_url_teleport.xml b/indra/newview/skins/default/xui/it/menu_url_teleport.xml
new file mode 100644
index 00000000000..0a09090c261
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_url_teleport.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Teleportati in questo posto" name="teleport"/>
+	<menu_item_call label="Mostra Sulla mappa" name="show_on_map"/>
+	<menu_item_call label="Copia SLurl negli appunti" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_viewer.xml b/indra/newview/skins/default/xui/it/menu_viewer.xml
index b1eb80149e9..f9605da22ad 100644
--- a/indra/newview/skins/default/xui/it/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/it/menu_viewer.xml
@@ -1,213 +1,326 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar name="Main Menu">
-	<menu name="Me">
+	<menu label="Io" name="Me">
 		<menu_item_call label="Preferenze" name="Preferences"/>
-		<menu_item_call name="Manage My Account">
-			<menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=it" />
+		<menu_item_call label="Il mio Pannello di Controllo" name="Manage My Account">
+			<menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=it"/>
 		</menu_item_call>
+		<menu_item_call label="Compra L$" name="Buy and Sell L$"/>
+		<menu_item_call label="Il Mio Profilo" name="Profile"/>
+		<menu_item_call label="Il Mio Aspetto" name="Appearance"/>
+		<menu_item_check label="Il Mio Inventory" name="Inventory"/>
+		<menu_item_call label="Mostra Inventory su Barra Laterale" name="ShowSidetrayInventory"/>
+		<menu_item_call label="Le mie Gesture" name="Gestures"/>
+		<menu label="Il Mio Stato" name="Status">
+			<menu_item_call label="Non Disponibile" name="Set Away"/>
+			<menu_item_call label="Non Disponibile" name="Set Busy"/>
+		</menu>
+		<menu_item_call label="Richiedi Status Amministratore" name="Request Admin Options"/>
+		<menu_item_call label="Lascia Status Amministratore" name="Leave Admin Options"/>
+		<menu_item_call label="Esci da [APP_NAME]" name="Quit"/>
 	</menu>
-	<menu label="File" name="File">
-		<tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/>
-		<menu label="Carica" name="upload">
-			<menu_item_call label="Immagine ([COST]L$)..." name="Upload Image"/>
-			<menu_item_call label="Suono ([COST]L$)..." name="Upload Sound"/>
-			<menu_item_call label="Animazione ([COST]L$)..." name="Upload Animation"/>
-			<menu_item_call label="Multiplo ([COST]L$ per file)..." name="Bulk Upload"/>
-			<menu_item_separator label="-----------" name="separator"/>
-			<menu_item_call label="Imposta i permessi di base..." name="perm prefs"/>
-		</menu>
-		<menu_item_separator label="-----------" name="separator"/>
-		<menu_item_call label="Chiudi la finestra" name="Close Window"/>
-		<menu_item_call label="Chiudi tutte le finestre" name="Close All Windows"/>
-		<menu_item_separator label="-----------" name="separator2"/>
-		<menu_item_call label="Salva la texture come..." name="Save Texture As..."/>
-		<menu_item_separator label="-----------" name="separator3"/>
-		<menu_item_call label="Fai una fotografia" name="Take Snapshot"/>
-		<menu_item_call label="Salva la fotografia sul tuo disco" name="Snapshot to Disk"/>
-		<menu_item_separator label="-----------" name="separator4"/>
-		<menu_item_call label="Disconnetti" name="Quit"/>
-	</menu>
-	<menu label="Modifica" name="Edit">
-		<menu_item_call label="Annulla" name="Undo"/>
-		<menu_item_call label="Ripeti" name="Redo"/>
-		<menu_item_separator label="-----------" name="separator"/>
-		<menu_item_call label="Taglia" name="Cut"/>
-		<menu_item_call label="Copia" name="Copy"/>
-		<menu_item_call label="Incolla" name="Paste"/>
-		<menu_item_call label="Cancella" name="Delete"/>
-		<menu_item_separator label="-----------" name="separator2"/>
-		<menu_item_call label="Cerca..." name="Search..."/>
-		<menu_item_separator label="-----------" name="separator3"/>
-		<menu_item_call label="Seleziona tutto" name="Select All"/>
-		<menu_item_call label="Deseleziona" name="Deselect"/>
-		<menu_item_separator label="-----------" name="separator4"/>
-		<menu_item_call label="Duplica" name="Duplicate"/>
-		<menu_item_separator label="-----------" name="separator5"/>
-		<menu label="Indossa l&apos;oggetto" name="Attach Object"/>
-		<menu label="Togli l&apos;oggetto" name="Detach Object"/>
-		<menu label="Spogliati dei vestiti" name="Take Off Clothing">
-			<menu_item_call label="Maglietta" name="Shirt"/>
-			<menu_item_call label="Pantaloni" name="Pants"/>
-			<menu_item_call label="Scarpe" name="Shoes"/>
-			<menu_item_call label="Calze" name="Socks"/>
-			<menu_item_call label="Giacca" name="Jacket"/>
-			<menu_item_call label="Guanti" name="Gloves"/>
-			<menu_item_call label="Canottiera" name="Menu Undershirt"/>
-			<menu_item_call label="Mutande" name="Menu Underpants"/>
-			<menu_item_call label="Gonna" name="Skirt"/>
-			<menu_item_call label="Tutti i vestiti" name="All Clothes"/>
-		</menu>
-		<menu_item_separator label="-----------" name="separator6"/>
-		<menu_item_call label="Gesture..." name="Gestures..."/>
-		<menu_item_call label="Profilo..." name="Profile..."/>
-		<menu_item_call label="Aspetto fisico..." name="Appearance..."/>
-		<menu_item_separator label="-----------" name="separator7"/>
-		<menu_item_check label="Amici..." name="Friends..."/>
-		<menu_item_call label="Gruppi..." name="Groups..."/>
-		<menu_item_separator label="-----------" name="separator8"/>
-		<menu_item_call label="Preferenze..." name="Preferences..."/>
-	</menu>
-	<menu label="Visualizza" name="View">
-		<tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/>
-		<menu_item_call label="Visualizzazione in soggettiva" name="Mouselook"/>
-		<menu_item_check label="Costruisci" name="Build"/>
-		<menu_item_check label="Camera dall&apos;alto" name="Joystick Flycam"/>
-		<menu_item_call label="Reimposta la visuale" name="Reset View"/>
-		<menu_item_call label="Guarda l&apos;ultimo che ha parlato" name="Look at Last Chatter"/>
-		<menu_item_separator label="-----------" name="separator"/>
-		<menu_item_check label="Strumenti" name="Toolbar"/>
-		<menu_item_check label="Chat locale" name="Chat History"/>
-		<menu_item_check label="Comunica" name="Instant Message"/>
-		<menu_item_check label="Inventario" name="Inventory"/>
-		<menu_item_check label="Residenti con voice attivo" name="Active Speakers"/>
-		<menu_item_check label="Residenti ignorati &amp; Oggetti" name="Mute List"/>
-		<menu_item_separator label="-----------" name="separator2"/>
-		<menu_item_check label="Controlli della telecamera" name="Camera Controls"/>
-		<menu_item_check label="Controlli dei movimenti" name="Movement Controls"/>
-		<menu_item_check label="Mappa globale" name="World Map"/>
-		<menu_item_check label="Mini-Mappa" name="Mini-Map"/>
-		<menu_item_separator label="-----------" name="separator3"/>
-		<menu_item_check label="Barra delle statistiche" name="Statistics Bar"/>
-		<menu_item_check label="Confini della proprietÃ" name="Property Lines"/>
-		<menu_item_check label="Linee di confini privati" name="Banlines"/>
-		<menu_item_check label="Proprietari dei terreni" name="Land Owners"/>
-		<menu_item_separator label="-----------" name="separator4"/>
-		<menu label="Suggerimenti" name="Hover Tips">
-			<menu_item_check label="Mostra suggerimenti" name="Show Tips"/>
-			<menu_item_separator label="-----------" name="separator"/>
-			<menu_item_check label="Suggerimenti sul terreno" name="Land Tips"/>
-			<menu_item_check label="Suggerimenti su tutti gli oggetti" name="Tips On All Objects"/>
-		</menu>
-		<menu_item_check label="Evidenzia oggetti trasparenti" name="Highlight Transparent"/>
-		<menu_item_check label="Tracciatori" name="beacons"/>
-		<menu_item_check label="Nascondi le particelle" name="Hide Particles"/>
-		<menu_item_check label="Mostra dispositivi HUD indossati" name="Show HUD Attachments"/>
-		<menu_item_separator label="-----------" name="separator5"/>
-		<menu_item_call label="Zoom Avanti" name="Zoom In"/>
-		<menu_item_call label="Zoom Default" name="Zoom Default"/>
-		<menu_item_call label="Zoom Indietro" name="Zoom Out"/>
-		<menu_item_separator label="-----------" name="separator6"/>
-		<menu_item_call label="Alterna schermo intero" name="Toggle Fullscreen"/>
-		<menu_item_call label="Reimposta la grandezza dell&apos;interfaccia al default" name="Set UI Size to Default"/>
+	<menu label="Comunica" name="Communicate">
+		<menu_item_call label="I Miei Amici" name="My Friends"/>
+		<menu_item_call label="I Miei Gruppi" name="My Groups"/>
+		<menu_item_check label="Chat Limitrofa" name="Nearby Chat"/>
+		<menu_item_call label="Persone Vicine" name="Active Speakers"/>
+		<menu_item_check label="MultiMedia Vicini" name="Nearby Media"/>
 	</menu>
 	<menu label="Mondo" name="World">
-		<menu_item_call label="Chat" name="Chat"/>
-		<menu_item_check label="Corri sempre" name="Always Run"/>
-		<menu_item_check label="Vola" name="Fly"/>
-		<menu_item_separator label="-----------" name="separator"/>
-		<menu_item_call label="Crea qui un landmark" name="Create Landmark Here"/>
-		<menu_item_call label="Imposta la tua casa qui" name="Set Home to Here"/>
-		<menu_item_separator label="-----------" name="separator2"/>
-		<menu_item_call label="Teleportati a casa" name="Teleport Home"/>
-		<menu_item_separator label="-----------" name="separator3"/>
-		<menu_item_call label="Imposta come &apos;Assente&apos;" name="Set Away"/>
-		<menu_item_call label="Imposta occupato" name="Set Busy"/>
-		<menu_item_call label="Ferma le animazioni sul mio avatar" name="Stop Animating My Avatar"/>
-		<menu_item_call label="Rilascia tutti i dispositivi" name="Release Keys"/>
-		<menu_item_separator label="-----------" name="separator4"/>
-		<menu_item_call label="Estratto conto..." name="Account History..."/>
-		<menu_item_call label="Gestisci il mio account..." name="Manage My Account..."/>
-		<menu_item_call label="Compra L$..." name="Buy and Sell L$..."/>
-		<menu_item_separator label="-----------" name="separator5"/>
-		<menu_item_call label="Il mio terreno..." name="My Land..."/>
-		<menu_item_call label="Informazioni sul terreno..." name="About Land..."/>
-		<menu_item_call label="Acquista il terreno..." name="Buy Land..."/>
-		<menu_item_call label="Regione/Proprietà Immobiliari..." name="Region/Estate..."/>
-		<menu_item_separator label="-----------" name="separator6"/>
-		<menu label="Impostazioni dell&apos;ambiente" name="Environment Settings">
+		<menu_item_check label="Muovi" name="Movement Controls"/>
+		<menu_item_check label="Vista" name="Camera Controls"/>
+		<menu_item_call label="Info Terreno" name="About Land"/>
+		<menu_item_call label="Regione/Proprietà Immobiliari" name="Region/Estate"/>
+		<menu_item_call label="Compra Terreno" name="Buy Land"/>
+		<menu_item_call label="Il Mio Terreno" name="My Land"/>
+		<menu label="Mostra" name="Land">
+			<menu_item_check label="Linee Non Accessibili" name="Ban Lines"/>
+			<menu_item_check label="Segnalatori" name="beacons"/>
+			<menu_item_check label="Linee di Confine" name="Property Lines"/>
+			<menu_item_check label="Proprietari della Terra" name="Land Owners"/>
+		</menu>
+		<menu label="Landmark" name="Landmarks">
+			<menu_item_call label="Crea Landmark Qui" name="Create Landmark Here"/>
+			<menu_item_call label="Imposta Qui come Casa" name="Set Home to Here"/>
+		</menu>
+		<menu_item_call label="Teleport Casa" name="Teleport Home"/>
+		<menu_item_check label="Mini-Mappa" name="Mini-Map"/>
+		<menu_item_check label="Mappa del Mondo" name="World Map"/>
+		<menu_item_call label="Foto" name="Take Snapshot"/>
+		<menu label="Sole" name="Environment Settings">
 			<menu_item_call label="Alba" name="Sunrise"/>
 			<menu_item_call label="Mezzogiorno" name="Noon"/>
 			<menu_item_call label="Tramonto" name="Sunset"/>
 			<menu_item_call label="Mezzanotte" name="Midnight"/>
-			<menu_item_call label="Reimposta al default della regione" name="Revert to Region Default"/>
-			<menu_item_separator label="-----------" name="separator"/>
+			<menu_item_call label="Usa l&apos;ora della Proprietà" name="Revert to Region Default"/>
 			<menu_item_call label="Editor dell&apos;ambiente" name="Environment Editor"/>
 		</menu>
 	</menu>
-	<menu label="Strumenti" name="Tools">
-		<menu label="Seleziona strumento" name="Select Tool">
-			<menu_item_call label="Focalizza" name="Focus"/>
-			<menu_item_call label="Muovi" name="Move"/>
-			<menu_item_call label="Modifica" name="Edit"/>
-			<menu_item_call label="Crea" name="Create"/>
-			<menu_item_call label="Terra" name="Land"/>
-		</menu>
-		<menu_item_separator label="-----------" name="separator"/>
-		<menu_item_check label="Seleziona solo i miei oggetti" name="Select Only My Objects"/>
-		<menu_item_check label="Seleziona solo gli oggetti mobili" name="Select Only Movable Objects"/>
-		<menu_item_check label="Seleziona solo se racchiuso" name="Select By Surrounding"/>
-		<menu_item_check label="Mostra selezione nascosta" name="Show Hidden Selection"/>
-		<menu_item_check label="Mostra raggio di luce per la selezione" name="Show Light Radius for Selection"/>
-		<menu_item_check label="Mostra raggio di selezione" name="Show Selection Beam"/>
-		<menu_item_separator label="-----------" name="separator2"/>
-		<menu_item_check label="Allinea al righello" name="Snap to Grid"/>
-		<menu_item_call label="Allinea l&apos;oggetto XY al righello" name="Snap Object XY to Grid"/>
-		<menu_item_call label="Usa la selezione come righello" name="Use Selection for Grid"/>
-		<menu_item_call label="Opzioni del righello..." name="Grid Options..."/>
-		<menu_item_separator label="-----------" name="separator3"/>
-		<menu_item_check label="Modifica parti di oggetti uniti" name="Edit Linked Parts"/>
+	<menu label="Build" name="BuildTools">
+		<menu_item_check label="Build" name="Show Build Tools"/>
+		<menu label="Seleziona Strumento Build" name="Select Tool">
+			<menu_item_call label="Strumento Focalizza" name="Focus"/>
+			<menu_item_call label="Strumento Movimento" name="Move"/>
+			<menu_item_call label="Strumento Modifica" name="Edit"/>
+			<menu_item_call label="Crea Strumento" name="Create"/>
+			<menu_item_call label="Strumento Terreno" name="Land"/>
+		</menu>
+		<menu label="Modifica" name="Edit">
+			<menu_item_call label="Annulla" name="Undo"/>
+			<menu_item_call label="Rifai" name="Redo"/>
+			<menu_item_call label="Taglia" name="Cut"/>
+			<menu_item_call label="Copia" name="Copy"/>
+			<menu_item_call label="Incolla" name="Paste"/>
+			<menu_item_call label="Cancella" name="Delete"/>
+			<menu_item_call label="Duplica" name="Duplicate"/>
+			<menu_item_call label="Seleziona Tutto" name="Select All"/>
+			<menu_item_call label="Deseleziona" name="Deselect"/>
+		</menu>
 		<menu_item_call label="Unisci" name="Link"/>
-		<menu_item_call label="Dividi" name="Unlink"/>
-		<menu_item_separator label="-----------" name="separator4"/>
-		<menu_item_call label="Focalizza la selezione" name="Focus on Selection"/>
-		<menu_item_call label="Fai zoom sulla selezione" name="Zoom to Selection"/>
-		<menu_item_call label="Compra l&apos;oggetto" name="Menu Object Take">
-			<on_enable userdata="Compra,Prendi" name="EnableBuyOrTake"/>
-		</menu_item_call>
-		<menu_item_call label="Prendi una copia" name="Take Copy"/>
-		<menu_item_call label="Salva nuovamente l&apos;oggetto nel contenuto dell&apos;oggetto" name="Save Object Back to Object Contents"/>
-		<menu_item_separator label="-----------" name="separator6"/>
-		<menu_item_call label="Mostra avvisi script/finestra degli errori" name="Show Script Warning/Error Window"/>
-		<menu label="Ricompila gli script nella selezione" name="Recompile Scripts in Selection">
-			<menu_item_call label="Mono" name="Mono"/>
-			<menu_item_call label="LSL" name="LSL"/>
-		</menu>
-		<menu_item_call label="Reimposta gli script nella selezione" name="Reset Scripts in Selection"/>
-		<menu_item_call label="Attiva gli script nella selezione" name="Set Scripts to Running in Selection"/>
-		<menu_item_call label="Disattiva gli script nella selezione" name="Set Scripts to Not Running in Selection"/>
+		<menu_item_call label="Separa" name="Unlink"/>
+		<menu_item_call label="Focalizza su Selezione" name="Focus on Selection"/>
+		<menu_item_call label="Avvicina alla Selezione" name="Zoom to Selection"/>
+		<menu label="Oggetto" name="Object">
+			<menu_item_call label="Compra" name="Menu Object Take"/>
+			<menu_item_call label="Prendi Copia" name="Take Copy"/>
+			<menu_item_call label="Salva Nuovamente nell&apos;Inventory" name="Save Object Back to My Inventory"/>
+			<menu_item_call label="Salva Nuovamente Nel Contenuto Oggetto" name="Save Object Back to Object Contents"/>
+		</menu>
+		<menu label="Script" name="Scripts">
+			<menu_item_call label="Ricompila Script (Mono)" name="Mono"/>
+			<menu_item_call label="Ricompila gli Script(LSL)" name="LSL"/>
+			<menu_item_call label="Reimposta gli Script" name="Reset Scripts"/>
+			<menu_item_call label="Imposta gli Script in Esecuzione" name="Set Scripts to Running"/>
+			<menu_item_call label="Imposta gli Script Non In Esecuzione" name="Set Scripts to Not Running"/>
+		</menu>
+		<menu label="Opzioni" name="Options">
+			<menu_item_check label="Modifica Parti Unite" name="Edit Linked Parts"/>
+			<menu_item_call label="Imposta Permessi di Upload predefiniti" name="perm prefs"/>
+			<menu_item_check label="Mostra Permessi Avanzati" name="DebugPermissions"/>
+			<menu label="Selezione" name="Selection">
+				<menu_item_check label="Seleziona Solo i Miei Oggetti" name="Select Only My Objects"/>
+				<menu_item_check label="Seleziona Solo Oggetti Mobili" name="Select Only Movable Objects"/>
+				<menu_item_check label="Seleziona Se Racchiuso" name="Select By Surrounding"/>
+			</menu>
+			<menu label="Mostra" name="Show">
+				<menu_item_check label="Mostra Selezione Nascosta" name="Show Hidden Selection"/>
+				<menu_item_check label="Mostra Raggio Luce per Selezione" name="Show Light Radius for Selection"/>
+				<menu_item_check label="Mostra Raggio Selezione" name="Show Selection Beam"/>
+			</menu>
+			<menu label="Griglia" name="Grid">
+				<menu_item_check label="Allinea al Righello" name="Snap to Grid"/>
+				<menu_item_call label="Allinea Coordinate XY alla Griglia" name="Snap Object XY to Grid"/>
+				<menu_item_call label="Usa Selezione per la Griglia" name="Use Selection for Grid"/>
+				<menu_item_call label="Opzioni Griglia" name="Grid Options"/>
+			</menu>
+		</menu>
+		<menu label="Seleziona Parti Unite" name="Select Linked Parts">
+			<menu_item_call label="Seleziona Prossima Parte" name="Select Next Part"/>
+			<menu_item_call label="Seleziona Parte Precedente" name="Select Previous Part"/>
+			<menu_item_call label="Includi Prossima Parte" name="Include Next Part"/>
+			<menu_item_call label="Includi Parte Precedente" name="Include Previous Part"/>
+		</menu>
 	</menu>
 	<menu label="Aiuto" name="Help">
-		<menu_item_call label="Aiuto di [SECOND_LIFE]" name="Second Life Help"/>
+		<menu_item_call label="[SECOND_LIFE] Aiuto" name="Second Life Help"/>
 		<menu_item_call label="Tutorial" name="Tutorial"/>
-		<menu_item_separator label="-----------" name="separator"/>
-		<menu_item_call label="Blog ufficiale Linden..." name="Official Linden Blog..."/>
-		<menu_item_separator label="-----------" name="separator2"/>
-		<menu_item_call label="Portale degli script..." name="Scripting Portal..."/>
-		<menu_item_separator label="-----------" name="separator3"/>
-		<menu_item_call label="Denuncia di abuso..." name="Report Abuse..."/>
-		<menu_item_call label="Collisioni, Spinte &amp; Colpi..." name="Bumps, Pushes &amp;amp; Hits..."/>
-		<menu_item_call label="Misuratore del lag" name="Lag Meter"/>
-		<menu_item_separator label="-----------" name="separator7"/>
-		<menu label="Segnalazione di un bug" name="Bug Reporting">
-			<menu_item_call label="Registro pubblico errori..." name="Public Issue Tracker..."/>
-			<menu_item_call label="Aiuto per il registro pubblico errori..." name="Publc Issue Tracker Help..."/>
-			<menu_item_separator label="-----------" name="separator7"/>
-			<menu_item_call label="Come fare la segnalazione di un bug..." name="Bug Reporing 101..."/>
-			<menu_item_call label="Problematiche di sicurezza..." name="Security Issues..."/>
-			<menu_item_call label="Wiki QA - controllo qualità..." name="QA Wiki..."/>
-			<menu_item_separator label="-----------" name="separator9"/>
-			<menu_item_call label="Segnala un bug..." name="Report Bug..."/>
-		</menu>
-		<menu_item_call label="Informazioni su [APP_NAME]..." name="About Second Life..."/>
+		<menu_item_call label="Denuncia Abuso" name="Report Abuse"/>
+		<menu_item_call label="Segnala Bug" name="Report Bug"/>
+	</menu>
+	<menu label="Avanzato" name="Advanced">
+		<menu_item_check label="Imposta non disponibile dopo 30 Minuti" name="Go Away/AFK When Idle"/>
+		<menu_item_call label="Ferma le Animazioni" name="Stop Animating My Avatar"/>
+		<menu_item_call label="Ridisegna le Texture" name="Rebake Texture"/>
+		<menu_item_call label="Riporta le Dimensioni dell&apos;interfaccia ai Valori Predefiniti" name="Set UI Size to Default"/>
+		<menu_item_check label="Limita Distanza di Selezione" name="Limit Select Distance"/>
+		<menu_item_check label="Disabilita i Vincoli della Camera" name="Disable Camera Distance"/>
+		<menu_item_check label="Foto ad alta risoluzione" name="HighResSnapshot"/>
+		<menu_item_check label="Manda Foto su Disco Senza Avvisi" name="QuietSnapshotsToDisk"/>
+		<menu_item_check label="Comprimi le Foto su Disco" name="CompressSnapshotsToDisk"/>
+		<menu label="Strumenti di Performance" name="Performance Tools">
+			<menu_item_call label="Misuratore Lag" name="Lag Meter"/>
+			<menu_item_check label="Barra Statistiche" name="Statistics Bar"/>
+			<menu_item_check label="Mostra Il Costo Visualizzazione Avatar (ARC)" name="Avatar Rendering Cost"/>
+		</menu>
+		<menu label="Evidenziazione e Visibilità" name="Highlighting and Visibility">
+			<menu_item_check label="Effetto Lampeggiante Segnalatore" name="Cheesy Beacon"/>
+			<menu_item_check label="Nascondi Particelle" name="Hide Particles"/>
+			<menu_item_check label="Nascondi Selezionati" name="Hide Selected"/>
+			<menu_item_check label="Evidenzia Trasparente" name="Highlight Transparent"/>
+			<menu_item_check label="Mostra Attachment HUD" name="Show HUD Attachments"/>
+			<menu_item_check label="Mostra Mirino in Soggettiva" name="ShowCrosshairs"/>
+			<menu_item_check label="Mostra Tooltip sul Terreno" name="Land Tips"/>
+		</menu>
+		<menu label="Modalità di Rendering" name="Rendering Types">
+			<menu_item_check label="Semplice" name="Simple"/>
+			<menu_item_check label="Alfa (Trasparenza)" name="Alpha"/>
+			<menu_item_check label="Albero" name="Tree"/>
+			<menu_item_check label="Avatar" name="Character"/>
+			<menu_item_check label="Superfici" name="SurfacePath"/>
+			<menu_item_check label="Cielo" name="Sky"/>
+			<menu_item_check label="Acqua" name="Water"/>
+			<menu_item_check label="Suolo" name="Ground"/>
+			<menu_item_check label="Volume" name="Volume"/>
+			<menu_item_check label="Erba" name="Grass"/>
+			<menu_item_check label="Nuvole" name="Clouds"/>
+			<menu_item_check label="Particelle" name="Particles"/>
+			<menu_item_check label="Urti" name="Bump"/>
+		</menu>
+		<menu label="Caratteristiche di Rendering" name="Rendering Features">
+			<menu_item_check label="Interfaccia Utente" name="UI"/>
+			<menu_item_check label="Selezionati" name="Selected"/>
+			<menu_item_check label="Evidenziato" name="Highlighted"/>
+			<menu_item_check label="Texture Dinamiche" name="Dynamic Textures"/>
+			<menu_item_check label="Ombre dei Piedi" name="Foot Shadows"/>
+			<menu_item_check label="Nebbia" name="Fog"/>
+			<menu_item_check label="Oggetti Flessibili" name="Flexible Objects"/>
+		</menu>
+		<menu_item_check label="Esegui Thread Multipli" name="Run Multiple Threads"/>
+		<menu_item_call label="Pulisci la Cache di Gruppo" name="ClearGroupCache"/>
+		<menu_item_check label="Fluidità Mouse" name="Mouse Smoothing"/>
+		<menu_item_check label="Mostra IM nella Chat Limitrofa" name="IMInChat"/>
+		<menu label="Scorciatoie" name="Shortcuts">
+			<menu_item_check label="Ricerca" name="Search"/>
+			<menu_item_call label="Rilascia Tasti" name="Release Keys"/>
+			<menu_item_call label="Imposta dimensioni Interfacca a Valori Predefiniti" name="Set UI Size to Default"/>
+			<menu_item_check label="Corri Sempre" name="Always Run"/>
+			<menu_item_check label="Vola" name="Fly"/>
+			<menu_item_call label="Chiudi Finestra" name="Close Window"/>
+			<menu_item_call label="Chiudi Tutte le Finestre" name="Close All Windows"/>
+			<menu_item_call label="Foto su Disco" name="Snapshot to Disk"/>
+			<menu_item_call label="Soggettiva" name="Mouselook"/>
+			<menu_item_check label="Joystick Flycam" name="Joystick Flycam"/>
+			<menu_item_call label="Reimposta Vista" name="Reset View"/>
+			<menu_item_call label="Guarda l&apos;Ultimo che ha parlato" name="Look at Last Chatter"/>
+			<menu label="Seleziona Strumento Build" name="Select Tool">
+				<menu_item_call label="Strumento Focalizza" name="Focus"/>
+				<menu_item_call label="Strumento Movimento" name="Move"/>
+				<menu_item_call label="Strumento Modifica" name="Edit"/>
+				<menu_item_call label="Crea Strumento" name="Create"/>
+				<menu_item_call label="Strumento Terreno" name="Land"/>
+			</menu>
+			<menu_item_call label="Avvicina" name="Zoom In"/>
+			<menu_item_call label="Zoom Predefinito" name="Zoom Default"/>
+			<menu_item_call label="Allontana" name="Zoom Out"/>
+			<menu_item_call label="Alterna Schermo Intero" name="Toggle Fullscreen"/>
+		</menu>
+		<menu_item_call label="Mostra Impostazioni di Debug" name="Debug Settings"/>
+		<menu_item_check label="Mostra Menu Sviluppo" name="Debug Mode"/>
+	</menu>
+	<menu label="Sviluppo" name="Develop">
+		<menu label="Console" name="Consoles">
+			<menu_item_check label="Console Texture" name="Texture Console"/>
+			<menu_item_check label="Console di Debug" name="Debug Console"/>
+			<menu_item_call label="Console Notifiche" name="Notifications"/>
+			<menu_item_check label="Console Dimensioni Texture" name="Texture Size"/>
+			<menu_item_check label="Console Categoria Texture" name="Texture Category"/>
+			<menu_item_check label="Timer Veloci" name="Fast Timers"/>
+			<menu_item_check label="Memoria" name="Memory"/>
+			<menu_item_call label="Info Regione Sulla Console di Debug" name="Region Info to Debug Console"/>
+			<menu_item_check label="Camera" name="Camera"/>
+			<menu_item_check label="Vento" name="Wind"/>
+		</menu>
+		<menu label="Mostra Info" name="Display Info">
+			<menu_item_check label="Mostra Tempo" name="Show Time"/>
+			<menu_item_check label="Mostra Info Rendering" name="Show Render Info"/>
+			<menu_item_check label="Mostra Colore sotto il Cursore" name="Show Color Under Cursor"/>
+			<menu_item_check label="Mostra Aggiornamenti agli Oggetti" name="Show Updates"/>
+		</menu>
+		<menu label="Forza Errori" name="Force Errors">
+			<menu_item_call label="Forza Breakpoint" name="Force Breakpoint"/>
+			<menu_item_call label="Forza LLError e Crash" name="Force LLError And Crash"/>
+			<menu_item_call label="Forza Accesso Invalido alla Memoria" name="Force Bad Memory Access"/>
+			<menu_item_call label="Forza Ciclo Infinito" name="Force Infinite Loop"/>
+			<menu_item_call label="Forza il Crash del Driver" name="Force Driver Carsh"/>
+			<menu_item_call label="Forza Eccezione Software" name="Force Software Exception"/>
+			<menu_item_call label="Forza Disconnessione Viewer" name="Force Disconnect Viewer"/>
+			<menu_item_call label="Simula un Memory Leak" name="Memory Leaking Simulation"/>
+		</menu>
+		<menu label="Test di Rendering" name="Render Tests">
+			<menu_item_check label="Spostamento Camera" name="Camera Offset"/>
+			<menu_item_check label="Framerate Casuale" name="Randomize Framerate"/>
+			<menu_item_check label="Test Frame" name="Frame Test"/>
+		</menu>
+		<menu label="Rendering" name="Rendering">
+			<menu_item_check label="Assi" name="Axes"/>
+			<menu_item_check label="Wireframe" name="Wireframe"/>
+			<menu_item_check label="Illuminazione Globale" name="Global Illumination"/>
+			<menu_item_check label="Texture delle Animation" name="Animation Textures"/>
+			<menu_item_check label="Disabilita Textures" name="Disable Textures"/>
+			<menu_item_check label="Rendering Luci degli Attachment" name="Render Attached Lights"/>
+			<menu_item_check label="Visualizza Particelle dagli Attachment" name="Render Attached Particles"/>
+			<menu_item_check label="Gli Oggetti Brillano quando sono sotto il Cursore" name="Hover Glow Objects"/>
+		</menu>
+		<menu label="Rete" name="Network">
+			<menu_item_check label="Metti in Pausa Avatar" name="AgentPause"/>
+			<menu_item_call label="Perdi un Pacchetto" name="Drop a Packet"/>
+		</menu>
+		<menu_item_call label="Urti, Spinte &amp; Contatti" name="Bumps, Pushes &amp;amp; Hits"/>
+		<menu label="Mondo" name="World">
+			<menu_item_check label="Sostituisci al Sole della Regione" name="Sim Sun Override"/>
+			<menu_item_check label="Effetto Lampeggiante Indicatore" name="Cheesy Beacon"/>
+			<menu_item_check label="Fissa il Clima" name="Fixed Weather"/>
+			<menu_item_call label="Stampa la Cache degli Oggetti in Regione" name="Dump Region Object Cache"/>
+		</menu>
+		<menu label="Interfaccia Utente" name="UI">
+			<menu_item_call label="Test Browser Web" name="Web Browser Test"/>
+			<menu_item_call label="Stampa Info per Oggetto Selezionato" name="Print Selected Object Info"/>
+			<menu_item_call label="Statistiche Memoria" name="Memory Stats"/>
+			<menu_item_check label="Doppio Click Pilota Automatico" name="Double-ClickAuto-Pilot"/>
+			<menu_item_check label="Debug Click" name="Debug Clicks"/>
+			<menu_item_check label="Debug Eventi del Mouse" name="Debug Mouse Events"/>
+		</menu>
+		<menu label="XUI" name="XUI">
+			<menu_item_call label="Ricarica Impostazioni Colori" name="Reload Color Settings"/>
+			<menu_item_call label="Test Mostra Font" name="Show Font Test"/>
+			<menu_item_call label="Carica da XML" name="Load from XML"/>
+			<menu_item_call label="Salva in XML" name="Save to XML"/>
+			<menu_item_check label="Mostra Nomi XUI" name="Show XUI Names"/>
+			<menu_item_call label="Manda IM di Test" name="Send Test IMs"/>
+		</menu>
+		<menu label="Avatar" name="Character">
+			<menu label="Grab Baked Texture" name="Grab Baked Texture">
+				<menu_item_call label="Iride" name="Iris"/>
+				<menu_item_call label="Testa" name="Head"/>
+				<menu_item_call label="Parte Superiore Corpo" name="Upper Body"/>
+				<menu_item_call label="Parte Inferiore del Corpo" name="Lower Body"/>
+				<menu_item_call label="Gonna" name="Skirt"/>
+			</menu>
+			<menu label="Test Personaggio" name="Character Tests">
+				<menu_item_call label="Alterna la Geometria dei Personaggi" name="Toggle Character Geometry"/>
+				<menu_item_check label="Consenti Selezione Avatar" name="Allow Select Avatar"/>
+			</menu>
+			<menu_item_call label="Forza i Parametri ai Valori Predefiniti" name="Force Params to Default"/>
+			<menu_item_check label="Info delle Animation" name="Animation Info"/>
+			<menu_item_check label="Animazioni lente" name="Slow Motion Animations"/>
+			<menu_item_check label="Disabilita Livello di Dettaglio" name="Disable LOD"/>
+			<menu_item_check label="Mostra Schemi Collisione" name="Show Collision Skeleton"/>
+			<menu_item_check label="Mostra Agent Destinazione" name="Display Agent Target"/>
+			<menu_item_call label="Debug Texture dell&apos;Avatar" name="Debug Avatar Textures"/>
+		</menu>
+		<menu_item_check label="Texture HTTP" name="HTTP Textures"/>
+		<menu_item_check label="Finestra Console al Prossimo Lancio" name="Console Window"/>
+		<menu_item_check label="Mostra Menu Admin" name="View Admin Options"/>
+		<menu_item_call label="Richiedi Status Amministrator" name="Request Admin Options"/>
+		<menu_item_call label="Lascia lo Stato di Admin" name="Leave Admin Options"/>
+	</menu>
+	<menu label="Amministratore" name="Admin">
+		<menu label="Object">
+			<menu_item_call label="Prendi Copia" name="Take Copy"/>
+			<menu_item_call label="Rendimi Proprietario" name="Force Owner To Me"/>
+			<menu_item_call label="Forza Proprietario Facoltativo?" name="Force Owner Permissive"/>
+			<menu_item_call label="Cancella" name="Delete"/>
+			<menu_item_call label="Blocca" name="Lock"/>
+		</menu>
+		<menu label="Appezzamento" name="Parcel">
+			<menu_item_call label="Rendimi Proprietario" name="Owner To Me"/>
+			<menu_item_call label="Imposta al Contenuto Linden" name="Set to Linden Content"/>
+			<menu_item_call label="Prendi Terreno Pubblico" name="Claim Public Land"/>
+		</menu>
+		<menu label="Regione" name="Region">
+			<menu_item_call label="Stampa i Dati Temporanei degli Asset" name="Dump Temp Asset Data"/>
+			<menu_item_call label="Salva Stato Regione" name="Save Region State"/>
+		</menu>
+		<menu_item_call label="Strumenti SuperUser" name="God Tools"/>
 	</menu>
 </menu_bar>
diff --git a/indra/newview/skins/default/xui/it/mime_types_linux.xml b/indra/newview/skins/default/xui/it/mime_types_linux.xml
new file mode 100644
index 00000000000..5db3eddca8f
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/mime_types_linux.xml
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<mimetypes name="default">
+	<widgetset name="web">
+		<label name="web_label">
+			Contenuto del Web
+		</label>
+		<tooltip name="web_tooltip">
+			Questo luogo ha un contenuto Web
+		</tooltip>
+		<playtip name="web_playtip">
+			Mostra il contenuto Web
+		</playtip>
+	</widgetset>
+	<widgetset name="movie">
+		<label name="movie_label">
+			Video
+		</label>
+		<tooltip name="movie_tooltip">
+			Qui c&apos;è un video da riprodurre
+		</tooltip>
+		<playtip name="movie_playtip">
+			Riproduci video
+		</playtip>
+	</widgetset>
+	<widgetset name="image">
+		<label name="image_label">
+			Immagine
+		</label>
+		<tooltip name="image_tooltip">
+			C&apos;è un immagine in questo luogo
+		</tooltip>
+		<playtip name="image_playtip">
+			Guarda l&apos;immagine di questo luogo
+		</playtip>
+	</widgetset>
+	<widgetset name="audio">
+		<label name="audio_label">
+			Audio
+		</label>
+		<tooltip name="audio_tooltip">
+			In questo luogo c&apos;è l&apos;audio
+		</tooltip>
+		<playtip name="audio_playtip">
+			Riproduci l&apos;audio in questo luogo
+		</playtip>
+	</widgetset>
+	<scheme name="rtsp">
+		<label name="rtsp_label">
+			Real Time Streaming
+		</label>
+	</scheme>
+	<mimetype name="blank">
+		<label name="blank_label">
+			- Vuoto -
+		</label>
+	</mimetype>
+	<mimetype name="none/none">
+		<label name="none/none_label">
+			- Vuoto -
+		</label>
+	</mimetype>
+	<mimetype name="audio/*">
+		<label name="audio2_label">
+			Audio
+		</label>
+	</mimetype>
+	<mimetype name="video/*">
+		<label name="video2_label">
+			Video
+		</label>
+	</mimetype>
+	<mimetype name="image/*">
+		<label name="image2_label">
+			Immagine
+		</label>
+	</mimetype>
+	<mimetype name="video/vnd.secondlife.qt.legacy">
+		<label name="vnd.secondlife.qt.legacy_label">
+			Video (QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="application/javascript">
+		<label name="application/javascript_label">
+			Javascript
+		</label>
+	</mimetype>
+	<mimetype name="application/ogg">
+		<label name="application/ogg_label">
+			Audio/Video Ogg
+		</label>
+	</mimetype>
+	<mimetype name="application/pdf">
+		<label name="application/pdf_label">
+			Documento PDF
+		</label>
+	</mimetype>
+	<mimetype name="application/postscript">
+		<label name="application/postscript_label">
+			Documento Postscript
+		</label>
+	</mimetype>
+	<mimetype name="application/rtf">
+		<label name="application/rtf_label">
+			Rich Text (RTF)
+		</label>
+	</mimetype>
+	<mimetype name="application/smil">
+		<label name="application/smil_label">
+			Synchronized Multimedia Integration Language (SMIL)
+		</label>
+	</mimetype>
+	<mimetype name="application/xhtml+xml">
+		<label name="application/xhtml+xml_label">
+			Pagina Web (XHTML)
+		</label>
+	</mimetype>
+	<mimetype name="application/x-director">
+		<label name="application/x-director_label">
+			Direttore Macromedia
+		</label>
+	</mimetype>
+	<mimetype name="audio/mid">
+		<label name="audio/mid_label">
+			Audio (MIDI)
+		</label>
+	</mimetype>
+	<mimetype name="audio/mpeg">
+		<label name="audio/mpeg_label">
+			Audio (MP3)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-aiff">
+		<label name="audio/x-aiff_label">
+			Audio (AIFF)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-wav">
+		<label name="audio/x-wav_label">
+			Audio (WAV)
+		</label>
+	</mimetype>
+	<mimetype name="image/bmp">
+		<label name="image/bmp_label">
+			Immagine (BMP)
+		</label>
+	</mimetype>
+	<mimetype name="image/gif">
+		<label name="image/gif_label">
+			Immagine (GIF)
+		</label>
+	</mimetype>
+	<mimetype name="image/jpeg">
+		<label name="image/jpeg_label">
+			Immagine (JPEG)
+		</label>
+	</mimetype>
+	<mimetype name="image/png">
+		<label name="image/png_label">
+			Immagine (PNG)
+		</label>
+	</mimetype>
+	<mimetype name="image/svg+xml">
+		<label name="image/svg+xml_label">
+			Immagine (SVG)
+		</label>
+	</mimetype>
+	<mimetype name="image/tiff">
+		<label name="image/tiff_label">
+			Immagine (TIFF)
+		</label>
+	</mimetype>
+	<mimetype name="text/html">
+		<label name="text/html_label">
+			Pagina Web
+		</label>
+	</mimetype>
+	<mimetype name="text/plain">
+		<label name="text/plain_label">
+			Testo
+		</label>
+	</mimetype>
+	<mimetype name="text/xml">
+		<label name="text/xml_label">
+			XML
+		</label>
+	</mimetype>
+	<mimetype name="video/mpeg">
+		<label name="video/mpeg_label">
+			Video (MPEG)
+		</label>
+	</mimetype>
+	<mimetype name="video/mp4">
+		<label name="video/mp4_label">
+			Video (MP4)
+		</label>
+	</mimetype>
+	<mimetype name="video/quicktime">
+		<label name="video/quicktime_label">
+			Video (QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-asf">
+		<label name="video/x-ms-asf_label">
+			Video (Windows Media ASF)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-wmv">
+		<label name="video/x-ms-wmv_label">
+			Video (Windows Media WMV)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-msvideo">
+		<label name="video/x-msvideo_label">
+			Video (AVI)
+		</label>
+	</mimetype>
+</mimetypes>
diff --git a/indra/newview/skins/default/xui/it/mime_types_mac.xml b/indra/newview/skins/default/xui/it/mime_types_mac.xml
new file mode 100644
index 00000000000..f91c9ce5bd8
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/mime_types_mac.xml
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<mimetypes name="default">
+	<widgetset name="web">
+		<label name="web_label">
+			Argomento nel Web
+		</label>
+		<tooltip name="web_tooltip">
+			Questo luogo ha un argomento nel Web
+		</tooltip>
+		<playtip name="web_playtip">
+			Mostra l&apos;argomento del Web
+		</playtip>
+	</widgetset>
+	<widgetset name="movie">
+		<label name="movie_label">
+			Filmato
+		</label>
+		<tooltip name="movie_tooltip">
+			C&apos;è un filmato da vedere qui
+		</tooltip>
+		<playtip name="movie_playtip">
+			Riproduci il filmato
+		</playtip>
+	</widgetset>
+	<widgetset name="image">
+		<label name="image_label">
+			Immagine
+		</label>
+		<tooltip name="image_tooltip">
+			C&apos;è un&apos;immagine in questo luogo
+		</tooltip>
+		<playtip name="image_playtip">
+			Vedere l&apos;immagine di questo luogo
+		</playtip>
+	</widgetset>
+	<widgetset name="audio">
+		<label name="audio_label">
+			Audio
+		</label>
+		<tooltip name="audio_tooltip">
+			C&apos;è un audio in questo luogo
+		</tooltip>
+		<playtip name="audio_playtip">
+			Riproduci l&apos;audio di questo luogo
+		</playtip>
+	</widgetset>
+	<scheme name="rtsp">
+		<label name="rtsp_label">
+			Real Time Streaming
+		</label>
+	</scheme>
+	<mimetype name="blank">
+		<label name="blank_label">
+			- Nessuno -
+		</label>
+	</mimetype>
+	<mimetype name="none/none">
+		<label name="none/none_label">
+			- Nessuno -
+		</label>
+	</mimetype>
+	<mimetype name="audio/*">
+		<label name="audio2_label">
+			Audio
+		</label>
+	</mimetype>
+	<mimetype name="video/*">
+		<label name="video2_label">
+			Video
+		</label>
+	</mimetype>
+	<mimetype name="image/*">
+		<label name="image2_label">
+			Immagine
+		</label>
+	</mimetype>
+	<mimetype name="video/vnd.secondlife.qt.legacy">
+		<label name="vnd.secondlife.qt.legacy_label">
+			Filmato (QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="application/javascript">
+		<label name="application/javascript_label">
+			Javascript
+		</label>
+	</mimetype>
+	<mimetype name="application/ogg">
+		<label name="application/ogg_label">
+			Ogg Audio/Video
+		</label>
+	</mimetype>
+	<mimetype name="application/pdf">
+		<label name="application/pdf_label">
+			PDF Document
+		</label>
+	</mimetype>
+	<mimetype name="application/postscript">
+		<label name="application/postscript_label">
+			Postscript Document
+		</label>
+	</mimetype>
+	<mimetype name="application/rtf">
+		<label name="application/rtf_label">
+			Rich Text (RTF)
+		</label>
+	</mimetype>
+	<mimetype name="application/smil">
+		<label name="application/smil_label">
+			Synchronized Multimedia Integration Language (SMIL)
+		</label>
+	</mimetype>
+	<mimetype name="application/xhtml+xml">
+		<label name="application/xhtml+xml_label">
+			Pagina Web (XHTML)
+		</label>
+	</mimetype>
+	<mimetype name="application/x-director">
+		<label name="application/x-director_label">
+			Macromedia Director
+		</label>
+	</mimetype>
+	<mimetype name="audio/mid">
+		<label name="audio/mid_label">
+			Audio (MIDI)
+		</label>
+	</mimetype>
+	<mimetype name="audio/mpeg">
+		<label name="audio/mpeg_label">
+			Audio (MP3)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-aiff">
+		<label name="audio/x-aiff_label">
+			Audio (AIFF)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-wav">
+		<label name="audio/x-wav_label">
+			Audio (WAV)
+		</label>
+	</mimetype>
+	<mimetype name="image/bmp">
+		<label name="image/bmp_label">
+			Immagine (BMP)
+		</label>
+	</mimetype>
+	<mimetype name="image/gif">
+		<label name="image/gif_label">
+			Immagine (GIF)
+		</label>
+	</mimetype>
+	<mimetype name="image/jpeg">
+		<label name="image/jpeg_label">
+			Immagine (JPEG)
+		</label>
+	</mimetype>
+	<mimetype name="image/png">
+		<label name="image/png_label">
+			Immagine (PNG)
+		</label>
+	</mimetype>
+	<mimetype name="image/svg+xml">
+		<label name="image/svg+xml_label">
+			Immagine (SVG)
+		</label>
+	</mimetype>
+	<mimetype name="image/tiff">
+		<label name="image/tiff_label">
+			Immagine (TIFF)
+		</label>
+	</mimetype>
+	<mimetype name="text/html">
+		<label name="text/html_label">
+			Pagina Web
+		</label>
+	</mimetype>
+	<mimetype name="text/plain">
+		<label name="text/plain_label">
+			Testo
+		</label>
+	</mimetype>
+	<mimetype name="text/xml">
+		<label name="text/xml_label">
+			XML
+		</label>
+	</mimetype>
+	<mimetype name="video/mpeg">
+		<label name="video/mpeg_label">
+			Filmato (MPEG)
+		</label>
+	</mimetype>
+	<mimetype name="video/mp4">
+		<label name="video/mp4_label">
+			Filmato (MP4)
+		</label>
+	</mimetype>
+	<mimetype name="video/quicktime">
+		<label name="video/quicktime_label">
+			Filmato (QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-asf">
+		<label name="video/x-ms-asf_label">
+			Filmato (Windows Media ASF)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-wmv">
+		<label name="video/x-ms-wmv_label">
+			Filmato (Windows Media WMV)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-msvideo">
+		<label name="video/x-msvideo_label">
+			Filmato (AVI)
+		</label>
+	</mimetype>
+</mimetypes>
diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml
index 26a64a49d39..2a370a2ed0f 100644
--- a/indra/newview/skins/default/xui/it/notifications.xml
+++ b/indra/newview/skins/default/xui/it/notifications.xml
@@ -9,74 +9,33 @@
 	<global name="implicitclosebutton">
 		Chiudi
 	</global>
-  <template name="okbutton">
-    <form>
-      <button
-       name="OK"
-       text="$yestext"/>
-    </form>
-  </template>
-
-  <template name="okignore">
-    <form>
-      <button
-       name="OK"
-       text="$yestext"/>
-      <ignore text="$ignoretext"/>
-    </form>
-  </template>
-
-  <template name="okcancelbuttons">
-    <form>
-      <button
-       name="OK"
-       text="$yestext"/>
-      <button
-       name="Cancel"
-       text="$notext"/>
-    </form>
-  </template>
-
-  <template name="okcancelignore">
-    <form>
-      <button
-       name="OK"
-       text="$yestext"/>
-      <button
-       name="Cancel"
-       text="$notext"/>
-      <ignore text="$ignoretext"/>
-    </form>
-  </template>
-
-  <template name="okhelpbuttons">
-    <form>
-      <button
-       name="OK"
-       text="$yestext"/>
-      <button
-       name="Help"
-       text="$helptext"/>
-    </form>
-  </template>
-
-  <template name="yesnocancelbuttons">
-    <form>
-      <button
-       name="Yes"
-       text="$yestext"/>
-      <button
-       name="No"
-       text="$notext"/>
-      <button
-       name="Cancel"
-       text="$canceltext"/>
-    </form>
-  </template>
-	<notification functor="GenericAcknowledge" label="Messaggio di allerta sconosciuto" name="MissingAlert">
-		La tua versione di [APP_NAME] non sa come visualizzare il messaggio di allerta appena ricevuto. 
-
-Dettagli dell&apos;errore: il messaggio di allerta &apos;[_NAME]&apos; non è stato trovato in notifications.xml.
+	<template name="okbutton">
+		<form>
+			<button name="OK" text="$yestext"/>
+		</form>
+	</template>
+	<template name="okignore"/>
+	<template name="okcancelbuttons">
+		<form>
+			<button name="Cancel" text="$notext"/>
+		</form>
+	</template>
+	<template name="okcancelignore"/>
+	<template name="okhelpbuttons">
+		<form>
+			<button name="Help" text="$helptext"/>
+		</form>
+	</template>
+	<template name="yesnocancelbuttons">
+		<form>
+			<button name="Yes" text="$yestext"/>
+			<button name="No" text="$notext"/>
+		</form>
+	</template>
+	<notification functor="GenericAcknowledge" label="Messaggio di Notifica Sconosciuto" name="MissingAlert">
+		La versione di [APP_NAME] non riesce a visualizzare la notifica che ha ricevuto. Verifica di avere l&apos;ultima versione del Viewer installata.
+
+Dettaglio Errore: La notifica di nome &apos;[_NAME]&apos; non è stata trovata in notifications.xml.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="FloaterNotFound">
@@ -97,24 +56,18 @@ Dettagli dell&apos;errore: il messaggio di allerta &apos;[_NAME]&apos; non è st
 		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="Si"/>
 	</notification>
 	<notification name="BadInstallation">
-		Si è verificato un errore durante l&apos;aggiornamento di [APP_NAME]. Scarica l&apos;ultima versione da secondlife.com.
-    <usetemplate
-     name="okbutton"
-     yestext="OK"/>
+		Errore mentre si aggiornava [APP_NAME].  [http://get.secondlife.com Scarica l&apos;ultima versione] del Viewer.
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="LoginFailedNoNetwork">
-		Errore di rete: non è stato possibile stabilire una connessione. 
+		Non è possibile connettersi a [SECOND_LIFE_GRID].
 &apos;[DIAGNOSTIC]&apos;
-Per favore controlla la tua connessione.
-	<usetemplate
-     name="okbutton"
-     yestext="OK"/>
+Accertati che la tua connessione Internet stia funzionando correttamente.
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="MessageTemplateNotFound">
 		Il modello di messaggio [PATH] non è stato trovato.
-	<usetemplate
-     name="okbutton"
-     yestext="OK"/>
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="WearableSave">
 		Salva i cambiamenti all&apos;attuale parte del corpo/abito?
@@ -177,7 +130,7 @@ Vuoi davvero dare i diritti di modifica ai residenti selezionati?
 Non si possono rimuovere membri da quel ruolo.
 I membri devono dimettersi volontariamente dal ruolo.
 Confermi l&apos;operazione?
-		<usetemplate ignoretext="Quando si aggiungono membri al ruolo di proprietario del gruppo." name="okcancelignore" notext="No" yestext="Si"/>
+		<usetemplate ignoretext="Conferma prima di aggiungere un nuovo Proprietario del Gruppo" name="okcancelignore" notext="No" yestext="Si"/>
 	</notification>
 	<notification name="AssignDangerousActionWarning">
 		Stai per aggiungere il potere &apos;[ACTION_NAME]&apos; al ruolo &apos;[ROLE_NAME]&apos;.
@@ -197,58 +150,8 @@ Aggiungi questo potere a &apos;[ROLE_NAME]&apos;?
 Aggiungi questo potere a &apos;[ROLE_NAME]&apos;?
 		<usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
 	</notification>
-	<notification name="ClickPublishHelpLand">
-		Selezionare &apos;Pubblica in Ricerca&apos;
-Marcando questo campo si mostrerà:
-- questo terreno nei risultati di ricerca
-- gli oggetti pubblici di questo terreno
-- questo terreno nella ricerca web
-	</notification>
-	<notification name="ClickSoundHelpLand">
-		I media e la musica possono essere fruiti solo all&apos;interno del terreno. Le opzioni dei suoni e del voice possono essere limitati al terreno o potranno essere sentiti dai residenti al di fuori del terreno, a seconda della loro categoria di accesso. Vuoi andare alla Knowledge Base per ulteriori informazioni su come impostare queste opzioni?
-		<url name="url">
-			https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=5046
-		</url>
-    <usetemplate
-     name="okcancelbuttons"
-     yestext="Vai alla Knowledge Base"
-	 notext="Chiudi" />
-	</notification>
-	<notification name="ClickSearchHelpAll">
-		I risultati della ricerca sono basati sul tipo di scheda nella quale ti trovi, la tua categoria di accesso, la categoria scelta e altri fattori. Per maggiori dettagli, vai alla Knowledge Base.
-		<url name="url">
-			https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=4722
-		</url>
-    <usetemplate
-     name="okcancelbuttons"
-     yestext="Vai alla Knowledge Base"
-	 notext="Chiudi" />
-	</notification>
-	<notification name="ClickPublishHelpLandDisabled">
-		Non puoi rendere questo terreno visibile nella ricerca perchè è in una regione che non lo consente.
-	</notification>
-	<notification name="ClickPublishHelpAvatar">
-		Scegliendo &apos;Mostra in Ricerca&apos; verrà mostrato:
-- il mio profilo nei risultati della ricerca
-- un link al mio profilo nelle pagine pubbliche del gruppo
-	</notification>
-	<notification name="ClickPartnerHelpAvatar">
-		Puoi proporre o cancellare una partnership con un altro/a residente attraverso il sito web [SECOND_LIFE].
-
-Vai al sito web di [SECOND_LIFE] per ulteriori informazioni sulla partnership?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="Vai alla pagina"/>
-	</notification>
-	<notification name="ClickUploadHelpPermissions">
-		I tuoi permessi di base possono non funzionare nelle regioni più vecchie.
-	</notification>
-	<notification name="ClickWebProfileHelpAvatar">
-		Se questo/a residente ha impostato una URL nel suo profilo puoi:
- * Cliccare &apos;Carica&apos; per vedere la pagina in questa finestra web.
- * Cliccare Carica &gt; &apos;nel browser esterno&apos; per vedere la pagina nel vostro browser web preimpostato.
- * Cliccare Carica &gt; &apos;URL Principale&apos; per ritornare alla pagina web del profile di questo/a Residente se hai cambiato pagina.
-
-Quando visiti il tuo profilo, puoi specificare qualunque URL come tuo profilo web e cliccare OK per impostarla.
-Altri residenti possono visitare la URL che hai impostato cliccando sul tuo profilo.
+	<notification name="ClickUnimplemented">
+		Mi dispiace, non è ancora stato implementato.
 	</notification>
 	<notification name="JoinGroupCanAfford">
 		Iscriversi a questo gruppo costa [COST]L$.
@@ -259,6 +162,12 @@ Vuoi proseguire?
 		Iscriversi a questo gruppo costa [COST]L$.
 Non hai abbastanza L$ per iscriverti a questo gruppo.
 	</notification>
+	<notification name="CreateGroupCost">
+		La Creazione di questo gruppo costerà L$100.
+I Gruppi devono avere più di un membro, o saranno cancellati definitivamente.
+Per favore invita altri membri entro le prossime 48 ore.
+		<usetemplate canceltext="Annulla" name="okcancelbuttons" notext="Cancella" yestext="Crea un gruppo per L$100"/>
+	</notification>
 	<notification name="LandBuyPass">
 		Pagando [COST]L$ puoi entrare in questa terra (&apos;[PARCEL_NAME]&apos;) per [TIME] ore.  Compri un pass?
 		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
@@ -273,10 +182,10 @@ Il tuo prezzo di vendità è [SALE_PRICE]L$ ed è autorizzato alla vendita a [NA
 		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="ConfirmLandSaleToAnyoneChange">
-		ATTENZIONE: Cliccando &apos;vendi a tutti&apos; rende il tuo terrono disponibile all&apos;intera comunità di [SECOND_LIFE], anche non in questa regione.
+		ATTENZIONE: Cliccando &apos;vendi a tutti&apos; rende questo terreno disponibile all&apos;intera comunità [SECOND_LIFE], perfino a quelli che non sono in questa regione.
 
-Il terreno selezionato di [LAND_SIZE] m² sta per essere messo in vendita.
-Il tuo prezzo di vendità è [SALE_PRICE]L$ ed è autorizzato alla vendita a [NAME].
+Stai mettendo in vendita il terrendo selezionato di [LAND_SIZE] m².
+Il prezzo di vendità è [SALE_PRICE]L$ e verrà autorizzato alla vendita a [NAME].
 		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="ReturnObjectsDeededToGroup">
@@ -336,6 +245,12 @@ Oggetti: [N]
 L&apos;intera regione ha l&apos;abilitazione danni.
 Gli script devono essere autorizzati all&apos;esecuzione affinchè le armi funzionino.
 	</notification>
+	<notification name="MultipleFacesSelected">
+		Multiple facce multimediale sono attualmente selezionate.
+Se prosegui con questa azione, esempi separati del media saranno impostati su facce multimediali dell&apos;oggetto. ???!!!
+Per impostare il media su una sola faccia multimediale, scegli Seleziona Faccia e clicca la faccia desiderata dell&apos;oggetto e poi clicca Aggiungi.
+		<usetemplate ignoretext="Il Media sarà impostato su facce multimediali multiple" name="okcancelignore" notext="Cancella" yestext="OK"/>
+	</notification>
 	<notification name="MustBeInParcel">
 		Devi essere dentro il terreno per impostare il suo Punto di Atterraggio.
 	</notification>
@@ -371,6 +286,10 @@ La cartella equipaggiamento non contiene abbigliamento, parti del corpo o attach
 	<notification name="CannotWearTrash">
 		Non puoi indossare abiti e parti del corpo che sono nel cestino
 	</notification>
+	<notification name="MaxAttachmentsOnOutfit">
+		L&apos;oggetto non può essere attaccato.
+Superato il limite di oggetti attaccati [MAX_ATTACHMENTS]. Per favore prima stacca un altro oggetto.
+	</notification>
 	<notification name="CannotWearInfoNotComplete">
 		Non puoi indossare quell&apos;elemento perchè non è ancora stato caricato. Riprova fra un minuto.
 	</notification>
@@ -385,17 +304,22 @@ Hai bisogno di un account per entrare in [SECOND_LIFE]. Ne vuoi creare uno adess
 		<usetemplate name="okcancelbuttons" notext="Riprova" yestext="Crea un nuovo account"/>
 	</notification>
 	<notification name="AddClassified">
-		Gli annunci appaiono nella sezione &apos;Annunci&apos; della ricerca nel database e su [http://secondlife.com/community/classifieds/?lang=it-IT secondlife.com] per una settimana.
-Compila il tuo annuncio e clicca &apos;Pubblica...&apos; per aggiungerlo al database.
-Ti verrà chiesto un prezzo da pagare quando clicchi su Pubblica.
-Pagare un prezzo più alto fa sì che il tuo annuncio compaia più in alto nella lista, e che sia più facile da trovare quando la gente ricerca per parole chiavi.
-		<usetemplate ignoretext="Quando si aggiunge una inserzione." name="okcancelignore" notext="Annulla" yestext="OK"/>
+		L&apos;inserzione apparirà nella sezione &apos;Annunci&apos; della Ricerca e su [http://secondlife.com/community/classifieds secondlife.com] per una settimana.
+Compila la tua inserzione, e quindi clicca &apos;Pubblica...&apos; per aggiungerla all&apos;elenco.
+Ti sarà chiesto un prezzo da pagare quando clicchi Pubblica.
+Pagando di più il tuo annuncio apparirà più in alto nella lista, e apparirà anche più in alto quando la gente cerca per Parole Chiavi.
+		<usetemplate ignoretext="Come Creare una nuova Inserzione" name="okcancelignore" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="DeleteClassified">
 		Cancella annuncio &apos;[NAME]&apos;?
 Non ci sono rimborsi per la tariffa pagata.
 		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
 	</notification>
+	<notification name="DeleteMedia">
+		Hai selezionato la cancellazione del media associato a questa faccia multimediale.
+Sei sicuro di voler continuare?
+		<usetemplate ignoretext="Confemra la cancellazione del multimedia dall&apos;oggetto" name="okcancelignore" notext="No" yestext="Si"/>
+	</notification>
 	<notification name="ClassifiedSave">
 		Salva le modifiche all&apos;annuncio [NAME]?
 		<usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Non salvare" yestext="Salva"/>
@@ -426,17 +350,17 @@ Non ci sono rimborsi per la tariffa pagata.
 		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="CacheWillClear">
-		La Cache verrà pulita dopo il riavvio di [APP_NAME].
+		La Cache verrà cancellata dopo la ripartenza di  [APP_NAME].
 	</notification>
 	<notification name="CacheWillBeMoved">
-		La Cache verrà traslocata dopo il riavvio di [APP_NAME].
-Nota: Questo pulirà la cache.
+		La Cache verrà mossa dopo la ripartenza di  [APP_NAME].
+Nota: Questo cancellerà anche la cache.
 	</notification>
 	<notification name="ChangeConnectionPort">
-		Le impostazioni delle porte avranno effetto dopo il riavvio di [APP_NAME].
+		Le importazioni di Porte avranno effetto dopo la ripartenza di [APP_NAME].
 	</notification>
 	<notification name="ChangeSkin">
-		La nuova pelle apparità dopo il riavvio di [APP_NAME].
+		La nuova skin apparirà dopo la ripartenza di  [APP_NAME].
 	</notification>
 	<notification name="GoToAuctionPage">
 		Vai alla pagina web [SECOND_LIFE] per vedere i dettagli dell&apos;asta oppure fai un&apos;offerta?
@@ -484,6 +408,11 @@ L&apos;oggetto potrebbe essere troppo lontano oppure essere stato cancellato.
 	<notification name="SaveBytecodeFailReason">
 		C&apos;è stato un problema salvando lo script compilato a causa del seguente motivo: [REASON].  Riprova a salvare lo script più tardi.
 	</notification>
+	<notification name="StartRegionEmpty">
+		Oops, la tua Regione di Inizio non è stata impostata.
+Per favore scrivi il nome della Regione nello spazio Regione di Inizio oppure scegli la mia ultima Ubicazione o Casa Mia come ultima ubicazione.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
 	<notification name="CouldNotStartStopScript">
 		Non è stato possibile lanciare o fermare lo script perchè l&apos;oggetto che lo contiene non è stato trovato.
 L&apos;oggetto potrebbe essere troppo lontano oppure essere stato cancellato.
@@ -502,22 +431,21 @@ Vuoi visitare [_URL] per maggiori informazioni?
 		<url name="url" option="0">
 			http://secondlife.com/support/sysreqs.php?lang=it
 		</url>
-		<usetemplate ignoretext="Quando sto individuando hardware non supportato." name="okcancelignore" notext="No" yestext="Si"/>
+		<usetemplate ignoretext="L&apos;hardware di questo computer non è supportato" name="okcancelignore" notext="No" yestext="Si"/>
 	</notification>
 	<notification name="UnknownGPU">
-		Il tuo sistema contiene una scheda grafica che attualmente non supportiamo.
-Questo succede spesso con nuovi prodotti che non siamo riusciti a verificare. Probabilmente [APP_NAME] funzionerà correttamente ma forse dovrai modificare le impostazioni grafiche in modo appropriato.
-(Modifica &gt; Preferenze &gt; Grafica).
+		Il tuo sistema contiene una scheda grafica ancora sconosciuta a [APP_NAME].
+Questo succede spesso con nuovo hardware che non è ancora stato verificato con [APP_NAME].  Probabilmente [APP_NAME] funzionerà correttamente, ma forse devi regolare le impostazioni grafiche a qualcosa di più appropriato.
+(Io &gt; Preferenze &gt; Grafica).
 		<form name="form">
-			<ignore name="ignore" text="Quando sto valutando una scheda grafica sconosciuta"/>
+			<ignore name="ignore" text="La mia scheda grafica non è stata identificata"/>
 		</form>
 	</notification>
 	<notification name="DisplaySettingsNoShaders">
-		[APP_NAME] si è bloccata mentre stava inizializzando i driver grafici.
-La qualità grafica verrà impostata al valore basso per evitare alcuni degli errori più comuni con i driver.
-Questo però disabiliterà alcune funzioni grafiche.
-Ti raccomandiamo di aggiornare i driver della tua scheda grafica.
-La qualità grafica può essere aumentara in Preferenze &gt; Grafica.
+		[APP_NAME] si è interrotta mentre stava inizializzando i driver grafici.
+La Qualità Grafica verrà impostata a Basso per evitare alcuni errori comuni di driver. Questo disabiliterà alcune caratteristiche grafiche.
+Si raccomanda di aggiornare i driver della scheda grafica.
+La Qualità Grafica può essere aumentata in Preferenze &gt; Grafica.
 	</notification>
 	<notification name="RegionNoTerraforming">
 		La regione [REGION] non consente di terraformare.
@@ -570,6 +498,9 @@ Non potrà temporaneamente muoversi, chiacchierare in chat, o interagire con il
 		Espelli [AVATAR_NAME] dal tuo terreno?
 		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="Espelli"/>
 	</notification>
+	<notification name="EjectAvatarFromGroup">
+		Hai espulso [AVATAR_NAME] dal gruppo [GROUP_NAME]
+	</notification>
 	<notification name="AcquireErrorTooManyObjects">
 		ERRORE DI ACQUISIZIONE: hai selezionato troppi oggetti.
 	</notification>
@@ -580,7 +511,7 @@ Sposta tutti gli oggetti che vuoi acquisire su una sola regione.
 	<notification name="PromptGoToCurrencyPage">
 		[EXTRA]
 
-Vuoi andare su [_URL] per maggiori informazioni su come acquistare L$?
+Vai su [_URL] per informazioni sull&apos;acquisto di L$?
 		<url name="url">
 			http://secondlife.com/app/currency/?lang=it-IT
 		</url>
@@ -669,12 +600,15 @@ Attese [VALIDS]
 		Impossibile creare il file in uscita: [FILE]
 	</notification>
 	<notification name="DoNotSupportBulkAnimationUpload">
-		Non supportiamo attualmente l&apos;upload multiplo di file di animazione.
+		[APP_NAME] non supporta ancora l&apos;upload in blocco di file di animazione.
 	</notification>
 	<notification name="CannotUploadReason">
 		Impossibile importare il file [FILE] a causa del seguente motivo: [REASON]
 Riprova più tardi.
 	</notification>
+	<notification name="LandmarkCreated">
+		Hai aggiunto &quot;[LANDMARK_NAME]&quot; alla tua [FOLDER_NAME] cartella.
+	</notification>
 	<notification name="CannotCreateLandmarkNotOwner">
 		Non puoi creare qui un landmark perchè il proprietario di questo terreno non lo consente.
 	</notification>
@@ -697,6 +631,9 @@ Seleziona oggetti con degli script.
 
 Seleziona oggetti con script su cui hai i permessi di modifica.
 	</notification>
+	<notification name="CannotOpenScriptObjectNoMod">
+		Impossibile aprire la script dell&apos;oggetto senza i permessi modify.
+	</notification>
 	<notification name="CannotSetRunningSelectObjectsNoScripts">
 		Impossibile mettere &apos;in esecuzione&apos; gli script.
 
@@ -723,46 +660,44 @@ Ho cercato: [FINALQUERY]
 		Impossibile eseguire il teleport.
 [REASON]
 	</notification>
-
-  <notification name="invalid_tport">
-C&apos;è stato un problema nell&apos;elaborare la tua richiesta di teletrasporto. Potresti aver bisogno di ricollegarti prima di poter usare il teletrasporto. Se continui ad avere problemi, controlla per favore le FAQ del Supporto Tecnico a:
-www.secondlife.com/support
-  </notification>
-  <notification name="invalid_region_handoff">
-C&apos;è stato un problema nell&apos;elaborare il cambio di regione. Potresti aver bisogno di ricollegarti prima di poterlo effetuare. Se continui ad avere problemi, controlla per favore le FAQ del Supporto Tecnico a:
-www.secondlife.com/support
-  </notification>
-  <notification name="blocked_tport">
-Spiacenti, il teletrasporto è bloccato al momento. Prova di nuovo tra pochi istanti. Se ancora non potrai teletrasportarti, per favore scollegati e ricollegati per risolvere il problema.
-  </notification>
-  <notification name="nolandmark_tport">
-Spiacenti, ma il sistema non riesce a localizzare la destinazione del landmark
-  </notification>
-  <notification name="timeout_tport">
-Spiacenti, il sistema non riesce a completare il teletrasporto. Riprova tra un attimo.
-  </notification>
-  <notification name="noaccess_tport">
-Spiacenti, ma non hai accesso nel luogo di destinazione richiesto.
-  </notification>
-  <notification name="missing_attach_tport">
-Gli oggetti da te indossati non sono ancoa arrivati. Attendi ancora qualche secondo o scollegati e ricollegati prima di provare a teleportarti.
-  </notification>
-  <notification name="too_many_uploads_tport">
-Il server della regione è al momento occupato e la tua richiesta di teletrasporto non può essere soddisfatta entro breve tempo. Per favore prova di nuovo tra qualche minuto o spostati in un&apos;area meno affollata.
-  </notification>
-  <notification name="expired_tport">
-Spiacenti, il sistema non riesce a soddisfare la tua richiesta di teletrasporto entro un tempo ragionevole. Riprova tra qualche minuto.
-  </notification>
-  <notification name="expired_region_handoff">
-Spiacenti, il sistema non riesce a completare il cambio di regione entro un tempo ragionevole. Riprova tra qualche minuto.
-  </notification>
-  <notification name="no_host">
-Impossibile trovare la destinazione del teletrasporto; potrebbe essere temporaneamente non accessibile o non esistere più. Riprovaci tra qualche minuto.
-  </notification>
-  <notification name="no_inventory_host">
-L&apos;inventario è temporaneamente inaccessibile.
-  </notification>
-
+	<notification name="invalid_tport">
+		E&apos; stato incontrato un problema eseguendo la tua richiesta di teleport. Potresti avere bisogno di riloggarti per ritentare il teleport.
+Se continui a ricevere questo errore, controlla [SUPPORT_SITE].
+	</notification>
+	<notification name="invalid_region_handoff">
+		Ci sono stati problemi eseguendo il passaggio di regione. Potresti avere bisogno di riloggarti per ritentare il passaggio di regione.
+Se continui a ricevere questo errore, controlla  [SUPPORT_SITE].
+	</notification>
+	<notification name="blocked_tport">
+		Spiacenti, il teletrasporto è bloccato al momento. Prova di nuovo tra pochi istanti. Se ancora non potrai teletrasportarti, per favore scollegati e ricollegati per risolvere il problema.
+	</notification>
+	<notification name="nolandmark_tport">
+		Spiacenti, ma il sistema non riesce a localizzare la destinazione del landmark
+	</notification>
+	<notification name="timeout_tport">
+		Spiacenti, il sistema non riesce a completare il teletrasporto. Riprova tra un attimo.
+	</notification>
+	<notification name="noaccess_tport">
+		Spiacenti, ma non hai accesso nel luogo di destinazione richiesto.
+	</notification>
+	<notification name="missing_attach_tport">
+		Gli oggetti da te indossati non sono ancoa arrivati. Attendi ancora qualche secondo o scollegati e ricollegati prima di provare a teleportarti.
+	</notification>
+	<notification name="too_many_uploads_tport">
+		Il server della regione è al momento occupato e la tua richiesta di teletrasporto non può essere soddisfatta entro breve tempo. Per favore prova di nuovo tra qualche minuto o spostati in un&apos;area meno affollata.
+	</notification>
+	<notification name="expired_tport">
+		Spiacenti, il sistema non riesce a soddisfare la tua richiesta di teletrasporto entro un tempo ragionevole. Riprova tra qualche minuto.
+	</notification>
+	<notification name="expired_region_handoff">
+		Spiacenti, il sistema non riesce a completare il cambio di regione entro un tempo ragionevole. Riprova tra qualche minuto.
+	</notification>
+	<notification name="no_host">
+		Impossibile trovare la destinazione del teletrasporto; potrebbe essere temporaneamente non accessibile o non esistere più. Riprovaci tra qualche minuto.
+	</notification>
+	<notification name="no_inventory_host">
+		L&apos;inventario è temporaneamente inaccessibile.
+	</notification>
 	<notification name="CannotSetLandOwnerNothingSelected">
 		Impossibile impostare il proprietario del terreno:
 Nessun terreno selezionato.
@@ -800,7 +735,7 @@ Nessun terreno selezionato.
 Non riesco a trovare la regione dove è situato il terreno.
 	</notification>
 	<notification name="CannotCloseFloaterBuyLand">
-		Non puoi chiudere la finestra di Acquisto Terreno finchè [APP_NAME] non stima il prezzo di questa transazione.
+		Non puoi chiudere la finestra di Acquisto Terreno finchè [APP_NAME] non finisce di stimare il prezzo di questa transazione.
 	</notification>
 	<notification name="CannotDeedLandNothingSelected">
 		Impossibile cedere il terreno:
@@ -811,8 +746,8 @@ Nessun terreno selezionato.
 Nessun gruppo selezionato.
 	</notification>
 	<notification name="CannotDeedLandNoRegion">
-		Impossibile cedere il terreno:
-Non riesco a trovare la regione dove è situato il terreno.
+		Non è possibile donare il terreno:
+Non riesco a trovare la regione in cui si trova.
 	</notification>
 	<notification name="CannotDeedLandMultipleSelected">
 		Impossibile cedere il terreno:
@@ -821,11 +756,10 @@ Hai selezionato più di un terreno.
 Prova a selezionare un solo terreno.
 	</notification>
 	<notification name="ParcelCanPlayMedia">
-		Questo posto offre contenuto multimediale in streaming.
-Ricevere lo streaming multimediale richiede una connessione internet veloce.
+		Questo posto può mostrare contenuto multimediale in streaming. Questo richiede una connessione Internet veloce.
 
-Vuoi vedere il contenuto multimediale quando è disponibile?
-(Puoi cambiare questa opzione in seguito scegliendo Preferenze &gt; Audio &amp; Video.)
+Mostra contenuto multimediale quando disponibile?
+(Puoi cambiare questa opzione anche successivamente su Preferenze &gt; Privacy.)
 		<usetemplate name="okcancelbuttons" notext="Disabilita" yestext="Abilita MultiMedia"/>
 	</notification>
 	<notification name="CannotDeedLandWaitingForServer">
@@ -856,8 +790,8 @@ Non hai i permessi per rilasciare questo terreno.
 I terreni di tua proprietà vengono visualizzati in verde.
 	</notification>
 	<notification name="CannotReleaseLandRegionNotFound">
-		Impossibile abbandonare il terreno:
-Non riesco a trovare la regione dove è situato il terreno.
+		Non è possibile abbandonare il terreno:
+Non riesco a trovare la regione in cui si trova.
 	</notification>
 	<notification name="CannotReleaseLandNoTransfer">
 		Impossibile abbandonare il terreno:
@@ -894,12 +828,12 @@ Dividi il terreno?
 		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="CannotDivideLandNoRegion">
-		Impossibile dividere il terreno:
-Non riesco a trovare la regione dove è situato.
+		Non è possibile suddividere il terreno:
+Non riesco a trovare la regione in cui si trova.
 	</notification>
 	<notification name="CannotJoinLandNoRegion">
-		Impossibile unire il terreno:
-Non riesco a trovare la regione dove è situato.
+		Non è possibile unire il terreno:
+Non riesco a trovare la regione in cui si trova.
 	</notification>
 	<notification name="CannotJoinLandNothingSelected">
 		Impossibile unire il terreno:
@@ -924,17 +858,6 @@ Dovrai reimpostare il nome e le opzioni del nuovo terreno.
 Unisci il terreno?
 		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
 	</notification>
-	<notification name="ShowOwnersHelp">
-		Mostra i proprietari:
-colora i terreni per mostrare i diversi tipi di proprietari.
-
-Verde = il tuo terreno
-Acqua = la terra del tuo gruppo
-Rosso = posseduta da altri
-Giallo = in vendita
-Viola = in asta
-Grigia = pubblica
-	</notification>
 	<notification name="ConfirmNotecardSave">
 		Questa notecard deve essere salvata prima che l&apos;elemento possa essere copiato o visualizzato. Salva la notecard?
 		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
@@ -956,13 +879,13 @@ Grigia = pubblica
 		Impossibile salvare &apos;[NAME]&apos; nel file di oggetti indossabili.  Dovrai liberare dello spazio sul tuo computer e salvare di nuovo.
 	</notification>
 	<notification name="CannotSaveToAssetStore">
-		Impossibile salvare [NAME] nel database centrale.
-Normalmente questo problema è temporaneo. Riprova a generare la parte indossabile e a salvarla fra qualche minuto.
+		Non è possibile salvare [NAME] nel database centrale degli asset.
+Questo normalmente è un problema temporaneo. Riadatta e salva i vestiti e riprova fra qualche minuto.
 	</notification>
 	<notification name="YouHaveBeenLoggedOut">
 		Sei stato sconnesso da [SECOND_LIFE]:
             [MESSAGE]
-Puoi ancora vedere i tuoi IM e la chat cliccando &apos;Vedi IM &amp; Chat&apos;. Altrimenti, clicca &apos;Esci&apos; per uscire immediatamente da [APP_NAME].
+Puoi ancora vedere gli  IM e la chat cliccando &apos;Vedi IM &amp; Chat&apos;. Altrimenti clicca &apos;Esci&apos; per uscire immediatamente da[APP_NAME].
 		<usetemplate name="okcancelbuttons" notext="Esci" yestext="Vedi IM &amp; Chat"/>
 	</notification>
 	<notification name="OnlyOfficerCanBuyLand">
@@ -1121,29 +1044,36 @@ Cedi questo terreno di [AREA] m² al gruppo &apos;[GROUP_NAME]&apos;?
 	<notification name="ErrorMessage">
 		[ERROR_MESSAGE]
 	</notification>
-	<notification name="AvatarMoved">
-		La tua locazione [TYPE] non è al momento disponibile.
-[HELP]
-Il tuo avatar è stato spostato in una regione vicina.
+	<notification name="AvatarMovedDesired">
+		L&apos;ubicazione desiderata non è attualmente disponibile. Sei stato trasportato in una regione vicina.
+	</notification>
+	<notification name="AvatarMovedLast">
+		La tua ultima ubicazione non è al momento disponibile.
+Sei stato trasferito in una regione vicina .
+	</notification>
+	<notification name="AvatarMovedHome">
+		L&apos;ubicazione di casa tua non è al momento disponibile.
+Sei stato trasferito in un&apos;ubicazione vicina.
+Potresti impostare una nuova ubicazione.
 	</notification>
 	<notification name="ClothingLoading">
-		I tuoi vestiti stanno ancora scaricandosi.
-Puoi usare [SECOND_LIFE] normalmente e gli altri utenti ti vedranno correttamente.
+		Sto ancora scaricando i tuoi abiti.
+Puoi comunque usare [SECOND_LIFE] normalmente e gli altri ti vedranno correttamente.
 		<form name="form">
-			<ignore name="ignore" text="Qualora gli abiti impieghino troppo tempo a caricarsi."/>
+			<ignore name="ignore" text="Lo scarico degli abiti sta impiegando parecchio tempo"/>
 		</form>
 	</notification>
 	<notification name="FirstRun">
-		L&apos;installazione di [APP_NAME] è completata.
+		L&apos;installazione di [APP_NAME] è completa.
 
-Se questa è la prima volta che usi [SECOND_LIFE], avari bisogno di creare un account prima di poterti collegare.
-Vai su [https://join.secondlife.com/index.php?lang=it-IT secondlife.com] per creare un nuovo account?
+Se questa è la prima volta che usi [SECOND_LIFE], devi creare un account prima che tu possa fare il log in.
+Vuoi ritornare su [http://join.secondlife.com secondlife.com] per creare un nuovo account?
 		<usetemplate name="okcancelbuttons" notext="Continua" yestext="Nuovo Account..."/>
 	</notification>
 	<notification name="LoginPacketNeverReceived">
-		Ci sono stati problemi durante la connessione. Potrebbero esserci problemi con la tua connessione ad internet oppure con i server di [SECOND_LIFE].
+		Ci sono problemi di connessione. Può darsi che siano nella tua connessione Internet oppure in [SECOND_LIFE_GRID].
 
-Puoi controllare la tua connessione internet e riprovare fra qualche minuto, oppure cliccare su Aiuto per collegarti al nostro sito di supporto, oppure cliccare teleporta per cercare di teleportarti a casa.
+Puoi controllare la tua connessione Internet e riprovare fra qualche minuto, oppure cliccare Aiuto per vedere il [SUPPORT_SITE], oppure cliccare Teleport per tentare di teleportarti a casa.
 		<url name="url">
 			http://it.secondlife.com/support/
 		</url>
@@ -1165,10 +1095,10 @@ Scegli un avatar maschile o femminile. Puoi sempre cambiare idea più tardi.
 		[NAME] [PRICE]L$ Non hai abbastanza L$ per farlo.
 	</notification>
 	<notification name="GrantedModifyRights">
-		Ti sono stati accordati i privilegi di modifica degli oggetti di [FIRST_NAME] [LAST_NAME].
+		[NAME] ti ha dato il permesso di editare i suoi oggetti.
 	</notification>
 	<notification name="RevokedModifyRights">
-		Ti sono stati revocati i privilegi di modifica degli oggetti di [FIRST_NAME] [LAST_NAME].
+		Ti è stato revocato il permesso di modificare gli oggetti di [NAME]
 	</notification>
 	<notification name="FlushMapVisibilityCaches">
 		Questo reinizializzerà la cache della mappa di questa regione.
@@ -1249,91 +1179,105 @@ Imposta l&apos;oggetto per la vendita e riprova.
 	<notification name="DownloadWindowsMandatory">
 		E&apos; disponibile una nuova versione di [APP_NAME].
 [MESSAGE]
-Devi scaricare questo aggiornamento per usare [APP_NAME].
+Devi scaricarla per usare  [APP_NAME].
 		<usetemplate name="okcancelbuttons" notext="Esci" yestext="Scarica l&apos;aggiornamento"/>
 	</notification>
 	<notification name="DownloadWindows">
 		E&apos; disponibile una versione aggiornata di [APP_NAME].
 [MESSAGE]
-Questo aggiornamento non è obbligatorio, ma ti suggeriamo di installarlo per migliorarne le prestazioni e la stabilità.
+Questo aggiornamento non è obbligatorio, ma è consigliabile installarlo per migliorare le prestazioni e la stabilità.
 		<usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica l&apos;aggiornamento"/>
 	</notification>
 	<notification name="DownloadWindowsReleaseForDownload">
 		E&apos; disponibile una versione aggiornata di [APP_NAME].
 [MESSAGE]
-Questo aggiornamento non è obbligatorio, ma ti suggeriamo di installarlo per migliorarne le prestazioni e la stabilità.
+Questo aggiornamento non è obbligatorio, ma è consigliabile installarlo per migliorare le prestazioni e la stabilità.
 		<usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica l&apos;aggiornamento"/>
 	</notification>
+	<notification name="DownloadLinuxMandatory">
+		Una nuova versione di [APP_NAME] è disponibile.
+[MESSAGE]
+Devi scaricare questo aggiornamento per utilizzarlo [APP_NAME].
+		<usetemplate name="okcancelbuttons" notext="Esci" yestext="Download"/>
+	</notification>
+	<notification name="DownloadLinux">
+		E&apos; disponibile una versione aggiornata di [APP_NAME].
+[MESSAGE]
+Questo aggiornamento non è necessario, ti consigliamo di installarlo per migliorare il rendimento e la stabilità.
+		<usetemplate name="okcancelbuttons" notext="Continua" yestext="Download"/>
+	</notification>
+	<notification name="DownloadLinuxReleaseForDownload">
+		E&apos; disponibile una versione aggiornata di [APP_NAME].
+[MESSAGE]
+Questo aggiornamento non è obbligatorio, ma è consigliata l&apos;installazione per migliorare le prestazioni e l&apos;affidabilità.
+		<usetemplate name="okcancelbuttons" notext="Continua" yestext="Download"/>
+	</notification>
 	<notification name="DownloadMacMandatory">
 		E&apos; disponibile una nuova versione di [APP_NAME].
 [MESSAGE]
-Devi scaricare questo aggiornamento per usare [APP_NAME].
+Devi scaricarla per usare [APP_NAME].
 
-Vuoi avviarne lo scaricamento nella tua cartella applicazioni?
+Scarico nella cartella Applicazioni?
 		<usetemplate name="okcancelbuttons" notext="Esci" yestext="Scarica l&apos;aggiornamento"/>
 	</notification>
 	<notification name="DownloadMac">
 		E&apos; disponibile una versione aggiornata di [APP_NAME].
 [MESSAGE]
-Questo aggiornamento non è obbligatorio, ma ti suggeriamo di installarlo per migliorarne le prestazioni e la stabilità.
+Questo aggiornamento non è obbligatorio, ma è consigliabile installarlo per migliorare le prestazioni e la stabilità.
 
-Vuoi avviarne lo scaricamento nella tua cartella applicazioni?
+Scarico nella cartella Applicazioni?
 		<usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica l&apos;aggiornamento"/>
 	</notification>
 	<notification name="DownloadMacReleaseForDownload">
 		E&apos; disponibile una versione aggiornata di [APP_NAME].
 [MESSAGE]
-Questo aggiornamento non è obbligatorio, ma ti suggeriamo di installarlo per migliorarne le prestazioni e la stabilità.
+Questo aggiornamento non è obbligatorio, ma è consigliabile installarlo per migliorare le prestazioni e la stabilità.
 
-Vuoi avviarne lo scaricamento nella tua cartella applicazioni?
+Scarico nella cartella Applicazioni?
 		<usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica l&apos;aggiornamento"/>
 	</notification>
 	<notification name="DeedObjectToGroup">
 		La cessione di questo oggetto farà in modo che il gruppo:
 * Riceva i L$ pagati all&apos;oggetto
-		<usetemplate ignoretext="Quando cedi oggetti ai gruppi." name="okcancelignore" notext="Annulla" yestext="Cedi"/>
+		<usetemplate ignoretext="Conferma la donazione di un oggetto al gruppo" name="okcancelignore" notext="Annulla" yestext="Cedi"/>
 	</notification>
 	<notification name="WebLaunchExternalTarget">
-		Apri il tuo browser web per vedere questo contenuto?
-		<usetemplate ignoretext="Quando apri il browser di sistema per vedere una pagina web." name="okcancelignore" notext="Annulla" yestext="OK"/>
+		Vuoi aprire il browser per vedere questo contenuto?
+		<usetemplate ignoretext="Lancia il browser per vedere la pagina web" name="okcancelignore" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="WebLaunchJoinNow">
-		Vuoi andare su www.secondlife.com per gestire il tuo account?
-		<usetemplate ignoretext="Quando lanci il browser web per gestire il tuo account." name="okcancelignore" notext="Annulla" yestext="OK"/>
+		Vuoi andare su [http://secondlife.com/account/ Dashboard] per gestire il tuo account?
+		<usetemplate ignoretext="Lancia il browser pe gestire il mio account" name="okcancelignore" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="WebLaunchSecurityIssues">
 		Visita la Wiki di [SECOND_LIFE] per i dettagli su come segnalare un problema di sicurezza.
-		<usetemplate ignoretext="Quando lanci il browser web per vedere la Wiki sui problemi di sicurezza." name="okcancelignore" notext="Annulla" yestext="OK"/>
+		<usetemplate ignoretext="Lancia il browser per imparare a segnalare un Problema di Sicurezza" name="okcancelignore" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="WebLaunchQAWiki">
 		Visita il controllo di qualità Wiki [SECOND_LIFE].
-		<usetemplate ignoretext="Quando lanci il browser web per vedere il controllo di qualità Wiki." name="okcancelignore" notext="Annulla" yestext="OK"/>
+		<usetemplate ignoretext="Lancia il browser per vedere il QA Wiki" name="okcancelignore" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="WebLaunchPublicIssue">
 		Visita il registro pubblico dei problemi di [SECOND_LIFE], dove puoi segnalare bug ed altri problemi.
-		<usetemplate ignoretext="Quando lanci il browser web per vedere il registro pubblico dei problemi." name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/>
-	</notification>
-	<notification name="WebLaunchPublicIssueHelp">
-		Visita la Wiki di [SECOND_LIFE] per le informazioni su come usare il registro pubblico dei problemi.
-		<usetemplate ignoretext="Quando lanci il browser web per vedere la Wiki del registro pubblico dei problemi." name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/>
+		<usetemplate ignoretext="Lancia il browser per vedere il Registro dei Problemi Pubblici" name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/>
 	</notification>
 	<notification name="WebLaunchSupportWiki">
 		Vai al blog ufficiale Linden, per le ultime notizie ed informazioni.
-		<usetemplate ignoretext="Quando lanci il browser web per vedere il blog." name="okcancelignore" notext="Annulla" yestext="OK"/>
+		<usetemplate ignoretext="Lancia il browser per vedere il blog" name="okcancelignore" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="WebLaunchLSLGuide">
-		Vai alla guida dello scripting per l&apos;aiuto sullo scripting?
-		<usetemplate ignoretext="Quando lanci il browser web per vedere la guida dello scripting." name="okcancelignore" notext="Annulla" yestext="OK"/>
+		Vuoi aprire la Guida per lo Scripting per avere aiuto con lo scripting?
+		<usetemplate ignoretext="Lancia il browser per vedere la Guida per lo Scripting" name="okcancelignore" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="WebLaunchLSLWiki">
-		Vai al portale LSL per aiuto sullo scripting?
-		<usetemplate ignoretext="Quando lanci il browser web per vedere il portale LSL." name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/>
+		Vuoi visitare il Portale LSL per avere aiuto con lo Scripting?
+		<usetemplate ignoretext="Lancia il browser per vedere il Portale LSL" name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/>
 	</notification>
 	<notification name="ReturnToOwner">
 		Confermi di voler restituire gli oggetti selezionati ai loro proprietari? Gli oggetti trasferibili ceduti al gruppo, verranno restituiti ai proprietari precedenti.
 
 *ATTENZIONE* Gli oggetti ceduti non trasferibili verranno cancellati!
-		<usetemplate ignoretext="Quando restituisci gli oggetti ai loro proprietari." name="okcancelignore" notext="Annulla" yestext="OK"/>
+		<usetemplate ignoretext="Conferma la restituzione degli oggetti ai loro proprietari" name="okcancelignore" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="GroupLeaveConfirmMember">
 		Sei attualmente un membro del gruppo [GROUP].
@@ -1345,14 +1289,14 @@ Vuoi lasciare il gruppo?
 		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="Espelli tutti gli utenti"/>
 	</notification>
 	<notification name="MuteLinden">
-		Mi dispiace, ma non puoi mutare un Linden.
+		Mi dispiace, non puoi bloccare un Linden.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="CannotStartAuctionAlreadyForSale">
 		Non è possibile mettere in vendita all&apos;asta un terreno che è già impostato per la vendita. Disabilita la vendita del terreno, se sei certo di voler avviare una vendita all&apos;asta.
 	</notification>
-	<notification label="Non è stato possibile mutare l&apos;oggetto per nome" name="MuteByNameFailed">
-		Hai già mutato questo nome.
+	<notification label="E&apos; fallito Il Blocco dell&apos;Oggetto" name="MuteByNameFailed">
+		Hai già bloccato questo nome.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="RemoveItemWarn">
@@ -1369,16 +1313,13 @@ Vuoi cancellare quell&apos;elemento?
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="BusyModeSet">
-		Impostata la modalità &apos;Occupato&apos;.
-La chat e i messaggi verranno nascosti. I messaggi IM riceveranno la risposta impostata per la modalità &apos;Occupato&apos;. Tutte le offerte di teleport verranno declinate. Tutte le offerte di inventario andranno nel cestino.
-		<usetemplate ignoretext="Quando imposti la modalità &apos;occupato&apos;." name="okignore" yestext="OK"/>
+		E&apos; stata impostata la modalità Non Disponibile.
+La Chat e gli IM verranno nascosti. Gli IM riceveranno la tua risposta di Non Disponibile. Tutte le offerte di teleport verranno declinate. Tutte le offerte di Inventory andranno nel Cestino.
+		<usetemplate ignoretext="Cambio il mio stato in Non Disponibile" name="okignore" yestext="OK"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
-		Sei membro di troppi gruppi per poterti unire ad uno nuovo.
-Abbandona almeno un gruppo prima di unirti a questo, oppure declina l&apos;offerta.
-Per abbandonare un gruppo seleziona l&apos;opzione &apos;Gruppi..&apos; dal menu &apos;Modifica&apos;.
-[NAME] ti ha invitato ad unirti ad un gruppo come membro.
-
+		Hai raggiunto il limite massimo di gruppi. Devi lasciare un gruppo prima di poterti unire a questo, oppure puoi declinare questa offerta.
+[NAME] ti ha invitato ad unirti al gruppo come membro.
 [INVITE]
 		<usetemplate name="okcancelbuttons" notext="Declino" yestext="Unisciti"/>
 	</notification>
@@ -1444,7 +1385,15 @@ Per abbandonare un gruppo seleziona l&apos;opzione &apos;Gruppi..&apos; dal menu
 	</notification>
 	<notification name="TeleportFromLandmark">
 		Confermi di volerti teleportare?
-		<usetemplate ignoretext="Quando ti teleporti da un landmark dell&apos;inventario." name="okcancelignore" notext="Annulla" yestext="Teleportati"/>
+		<usetemplate ignoretext="Conferma il teleport verso un Landmark" name="okcancelignore" notext="Annulla" yestext="Teleportati"/>
+	</notification>
+	<notification name="TeleportToPick">
+		Teleport a [PICK]?
+		<usetemplate ignoretext="Conferma il teleport verso l&apos;ubicazione nei Posti Consigliati" name="okcancelignore" notext="Annulla" yestext="Teleport"/>
+	</notification>
+	<notification name="TeleportToClassified">
+		Teleport a [CLASSIFIED]?
+		<usetemplate ignoretext="Confermo il teleport verso questa ubicazione negli Annunci" name="okcancelignore" notext="Cancella" yestext="Teleport"/>
 	</notification>
 	<notification label="Manda un messaggio a tutti nella tua proprietà" name="MessageEstate">
 		Scrivi un annuncio breve che verrà mandato a tutti quelli che sono in questo momento nella tua proprietà.
@@ -1513,9 +1462,7 @@ Cambierà migliaia di regioni e produrrà seri problemi ai vari server.
 		Non sei ammesso in questa regione a causa della tua categoria di accesso. Questo può risultare da una mancanza di informazioni necessarie per convalidare la tua età.
 
 Verifica di avere installato l&apos;ultima versione del programma e vai alla Knowledge Base per ulteriori informazioni su come accedere nelle zone con tale categoria di accesso.
-    <usetemplate
-     name="okbutton"
-     yestext="OK"/>
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="RegionEntryAccessBlocked_KB">
 		Non sei ammesso in questa regione a causa della tua categoria d&apos;accesso. 
@@ -1524,37 +1471,26 @@ Vuoi andare alla Knowledge Base per ulteriori informazioni sulle categorie di ac
 		<url name="url">
 			http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/it
 		</url>
-    <usetemplate
-     name="okcancelignore"
-     yestext="Vai alla Knowledge Base"
-	 notext="Chiudi"
-	 ignoretext="Quando l&apos;entrata nella regione è bloccata a causa delle categorie di accesso."/>
+		<usetemplate ignoretext="Non posso entrare in questa Regione, a causa delle restrizioni sulla Categoria di Accesso" name="okcancelignore" notext="Chiudi" yestext="Vai alla Knowledge Base"/>
 	</notification>
 	<notification name="RegionEntryAccessBlocked_Notify">
 		Non sei ammesso in questa regione a causa della tua categoria d&apos;accesso.
 	</notification>
 	<notification name="RegionEntryAccessBlocked_Change">
-		Non puoi entrare in quella regione a causa delle tue preferenze sulle categorie di accesso.
-
-Puoi cliccare su &apos;Cambia le preferenze&apos; per aumentare subito le tue preferenze sulle categorie di accesso e riuscire ad entrare. Ti sarà permesso cercare ed avere accesso al contenuto [REGIONMATURITY] da quel momento in poi. Volendo poi ripristinare le impostazioni, potrai andare in Modifica &gt; Preferenze... &gt; Generale.
-	 <form name="form">
-      <button
-       name="OK"
-       text="Cambia le preferenze"/>
-      <button
-       default="true"
-       name="Cancel"
-       text="Chiudi"/>
-       <ignore name="ignore" text="Quando l&apos;entrata in una regione è bloccata a causa delle preferenze delle categorie di accesso."/>
-    </form>
+		Non ti è consentito entrare in quella Regione a causa della tua Categoria di Accesso impostata nelle Preferenze.
+
+Puoi cliccare su &apos;Cambia Preferenze&apos; per alzare la tua preferenza di Categoria di Accesso e quindi riuscire ad entrare. Sarai in grado di ricercare e di accedere da adesso in poi contenuto [REGIONMATURITY]. Se più tardi volessi cambiare di nuovo le tue impostazioni, vai su Me &gt; Preferenze &gt; Generali.
+		<form name="form">
+			<button name="OK" text="Cambia Preferenza"/>
+			<button default="true" name="Cancel" text="Chiudi"/>
+			<ignore name="ignore" text="Le mie preferenze attivate nel Rating (Classificazione) prevengono il mio ingresso in una Regione"/>
+		</form>
 	</notification>
 	<notification name="LandClaimAccessBlocked">
 		Non puoi prendere possesso di questo terreno a causa della tua categoria di accesso. Questo può essere dovuto ad una mancanza di informazioni valide che confermino la tua età.
 
 Verifica di avere installato l&apos;ultima versione del programma e vai alla Knowledge Base per informazioni sull&apos;accesso ad aree con queste categorie di accesso.
-    <usetemplate
-     name="okbutton"
-     yestext="OK"/>
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="LandClaimAccessBlocked_KB">
 		Non puoi prendere possesso di questa terra a causa delle preferenze sulle categorie di accesso. 
@@ -1563,32 +1499,22 @@ Vuoi andare alla Knowledge Base per maggiori informazioni sulle categorie di acc
 		<url name="url">
 			http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/it
 		</url>
-    <usetemplate
-     name="okcancelignore"
-     yestext="Vai alla Knowledge Base"
-	 notext="Chiudi"
-	 ignoretext="Quando l&apos;acquisizione della terra è bloccata a causa delle categorie di accesso."/>
+		<usetemplate ignoretext="Non posso richiedere questo Terreno, a causa delle restrizioni sulla Categoria di Accesso" name="okcancelignore" notext="Chiudi" yestext="Vai alla Knowledge Base"/>
 	</notification>
 	<notification name="LandClaimAccessBlocked_Notify">
 		Non puoi prendere possesso di questa terra a causa della tua categoria di accesso.
 	</notification>
 	<notification name="LandClaimAccessBlocked_Change">
-		Non puoi prendere possesso di questa terra a causa della tua categoria di accesso.
+		Non puoi richiedere questo Terreno a causa delle tue preferenze di Categoria di Accesso.
 
-Puoi cliccare su &apos;Cambia le preferenze&apos; per aumentare subito le tue preferenze sulle categorie di accesso e riuscire ad entrare. Ti sarà permesso cercare ed avere accesso al contenuto [REGIONMATURITY] da quel momento in poi. Volendo poi ripristinare le impostazioni, potrai andare in Modifica &gt; Preferenze... &gt; Generale.
-    <usetemplate
-     name="okcancelignore"
-     yestext="Cambia le preferenze"
-	 notext="Chiudi"
-	 ignoretext="Quando l&apos;acquisizione della terra è bloccata a causa delle preferenze delle categorie di accesso."/>
+Puoi cliccare su &apos;Cambia Preferenze&apos; per alzare la tua preferenza di Categoria di Accesso e quindi riuscire ad entrare. Sarai in grado di ricercare e di accedere da adesso in poi contenuto [REGIONMATURITY]. Se più tardi volessi cambiare di nuovo le tue impostazioni, vai su Me &gt; Preferenze &gt; Generali.
+		<usetemplate ignoretext="Le mie preferenze di Categoria di Accesso mi impediscono di chiedere questo Terreno" name="okcancelignore" notext="Chiudi" yestext="Cambia le preferenze"/>
 	</notification>
 	<notification name="LandBuyAccessBlocked">
 		Non puoi acquistare questo terreno a causa della tua categoria di accesso. Questo può essere dovuto ad una mancanza di informazioni valide che confermino la tua età.
 
 Verifica di avere installato l&apos;ultima versione del programma e vai alla Knowledge Base per informazioni sull&apos;accesso ad aree con queste categorie di accesso.
-    <usetemplate
-     name="okbutton"
-     yestext="OK"/>
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="LandBuyAccessBlocked_KB">
 		Non puoi acquistare questo terreno a causa della tua categoria di accesso. 
@@ -1597,27 +1523,19 @@ Vuoi andare alla Knowledge Base per maggiori informazioni sulle categorie di acc
 		<url name="url">
 			http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/it
 		</url>
-    <usetemplate
-     name="okcancelignore"
-     yestext="Vai alla Knowledge Base"
-	 notext="Chiudi"
-	 ignoretext="Quando un acquisto di terra è bloccato a causa delle categorie di accesso."/>
+		<usetemplate ignoretext="Non posso comprare questo Terreno , a causa delle restrizioni della Categoria di Accesso" name="okcancelignore" notext="Chiudi" yestext="Vai alla Knowledge Base"/>
 	</notification>
 	<notification name="LandBuyAccessBlocked_Notify">
 		Non puoi acquistare questa land a causa della tua categoria di accesso.
 	</notification>
 	<notification name="LandBuyAccessBlocked_Change">
-		Non puoi acquistare questa terra a causa delle tue preferenze sulle categorie di accesso .
+		Non puoi comprare questo Terreno a causa delle tue preferenze di Categoria di Accesso.
 
-Puoi cliccare su &apos;Cambia le preferenze&apos; per aumentare subito le tue preferenze sulle categorie di accesso e riuscire ad entrare. Ti sarà permesso cercare ed avere accesso al contenuto [REGIONMATURITY] da quel momento in poi. Volendo poi ripristinare le impostazioni, potrai andare in Modifica &gt; Preferenze... &gt; Generale.
-    <usetemplate
-     name="okcancelignore"
-     yestext="Cambia le preferenze"
-	 notext="Chiudi"
-	 ignoretext="Quando un acquisto di terra è bloccato a causa delle preferenze sulle categorie di accesso."/>
+Puoi cliccare su &apos;Cambia Preferenze&apos; per alzare la tua preferenza di Categoria di Accesso e quindi riuscire ad entrare. Sarai in grado di ricercare e di accedere da adesso in poi contenuto [REGIONMATURITY]. Se più tardi volessi cambiare di nuovo le tue impostazioni, vai su Me &gt; Preferenze &gt; Generali.
+		<usetemplate ignoretext="Le mie Preferenze di Accesso mi impediscono l&apos;acquisto di questo Terreno" name="okcancelignore" notext="Chiudi" yestext="Cambia le preferenze"/>
 	</notification>
 	<notification name="TooManyPrimsSelected">
-		&quot;Hai selezionato troppi prims.  Seleziona [MAX_PRIM_COUNT] o meno prims e riprova.&quot;
+		Hai selezionato troppi prim.  Seleziona non più di [MAX_PRIM_COUNT] prim e riprova
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="ProblemImportingEstateCovenant">
@@ -1650,19 +1568,11 @@ Pubblica questo annuncio adesso per [AMOUNT]L$?
 	</notification>
 	<notification name="SetClassifiedMature">
 		Queste inserzioni includono contenuto Mature?
-    <usetemplate
-     canceltext="Annulla"
-     name="yesnocancelbuttons"
-     notext="No"
-     yestext="Si"/>
+		<usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="No" yestext="Si"/>
 	</notification>
 	<notification name="SetGroupMature">
 		Questo gruppo include contenuto Mature?
-    <usetemplate
-     canceltext="Annulla"
-     name="yesnocancelbuttons"
-     notext="No"
-     yestext="Si"/>
+		<usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="No" yestext="Si"/>
 	</notification>
 	<notification label="Conferma il riavvio" name="ConfirmRestart">
 		Vuoi veramente far ripartire la regione in 2 minuti?
@@ -1676,231 +1586,12 @@ Pubblica questo annuncio adesso per [AMOUNT]L$?
 			<button name="Cancel" text="Annulla"/>
 		</form>
 	</notification>
-	<notification label="Blocca il terraforming" name="HelpRegionBlockTerraform">
-		Se questa casella è selezionata, i proprietari dei terreni non potranno terraformare il loro terreno indipendentemente dall&apos;impostazione locale di &apos;Modifica Terreno&apos;.
-
-Impostazione base: spenta
-	</notification>
-	<notification label="Blocca il volo" name="HelpRegionBlockFly">
-		Se questa casella è selezionata, le persone non potranno volare in questa regione indipendentemente dall&apos;impostazione locale di &apos;Volo&apos;.
-
-Impostazione base: spenta
-	</notification>
-	<notification label="Cambiamento in massa delle autorizzazioni del contenuto" name="HelpBulkPermission">
-		Lo strumento delle autorizzazioni in massa ti aiuta a modificare rapidamente i permessi su oggetti multipli nel contenuto dell&apos;oggetto/i selezionato/i. Ma tieni presente che stai solo impostando autorizzazioni per gli oggetti presenti nel contenuto e non le autorizzazioni per l&apos;oggetto/i che li contiene.
-
-Inoltre, le autorizzazioni non vengono applicate agli oggetti a loro volta contenuti all&apos;interno degli oggetti di cui stiamo cambiando i permessi. Il cambiamento sarà operato solo ed esclusivamente alla profondità di un livello.
-
-È possibile scegliere selettivamente quali tipi di oggetti modificare usando questa lista di controllo dei &apos;Tipi di contenuto&apos;. Le fotografie sono incluse quando si seleziona textures.
-
-* Questo strumento riuscirà solo a modificare le autorizzazioni degli oggetti che già tu puoi cambiare.
-* Non è possibile impostare in aumento, per il successivo proprietario, alcuna autorizzazione che non sia già in essere.
-* I permessi impostabili per il successivo proprietario sono solo richieste di cambiamento. Se un qualsiasi oggetto non può assumere tutte le nuove autorizzazioni impostate, nessuno dei suoi permessi cambierà.
-
-Quando si è pronti a cambiare i permessi in massa, fare clic su &apos;Applica&apos; e attendere la visualizzazione dei risultati.
-
-Se si chiude la finestra dello strumento autorizzazioni, mentre le autorizzazioni si stanno modificando, l&apos;operazione si arresterà.
-	</notification>
-	<notification label="Consenti Danni" name="HelpRegionAllowDamage">
-		Se questa casella è selezionata, il sistema del livello vitale su tutti i terreni sarà abilitato indipendentemente dalle impostazioni locali. Se la casella è lasciata vuota i proprietari dei singoli terreni individuali potranno comunque essere in grado di attivare il sistema di livello vitale sulla loro terra.
-
-Impostazione base: spenta
-	</notification>
-	<notification label="Limite avatar" name="HelpRegionAgentLimit">
-		Imposta il massimo numero di avatar consentito in questa regione.
-Le prestazioni possono variare a seconda del numero totale di avatar presenti.
-
-Impostazione base: 40
-	</notification>
-	<notification label="Coefficiente bonus oggetti" name="HelpRegionObjectBonus">
-		Il coefficiente bonus oggetti è un moltiplicatore per i prim consentiti su ogni terreno.
-Si può specificare da 1 a 10. Impostandolo ad 1, ogni terreno di 512m² consentià 117 oggetti. Impostandolo a 2, ogni terreno di 512m² ne consentirà 234 o il doppio, e così via. Il numero complessivo di oggetti consentiti per una regione rimane comunque 15.000 indipendentemente dal coefficiente di bonus.
-Una volta impostato, fai attenzione che abbassare il bonus può causare la cancellazione o restituzione di oggetti.
-
-Impostazione base: 1.0
-	</notification>
-	<notification label="Categoria di accesso" name="HelpRegionMaturity">
-		Imposta la categoria di accesso della regione, come mostrato nella barra dei menu nella parte superiore dello schermo di qualsiasi residente e nelle tooltip sulla mappa di [SECOND_LIFE], quando il cursore si muove su questa regione. Questa impostazione influenza anche l&apos;accesso a questa regione e i risultati della ricerca. Altri residenti possono entrare solo in regioni o visualizzare risultati della ricerca con la stessa categoria di accesso che hanno scelto nella loro preferenze.
-
-Può trascorrere un po&apos; di tempo prima che questa modifica si rifletta sulla mappa.
-	</notification>
-	<notification label="Limita gli urti" name="HelpRegionRestrictPushObject">
-		Questa casella limita per tutta la regione i permessi di urto (spinte).
-Se abilitata, i residenti possono essere urtati/spinti solo da sè stessi o dal proprietario del terreno.
-(La spinta si riferisce all&apos;uso della funzione LSL llPushObject())
-
-Impostazione base: spenta
-	</notification>
-	<notification label="Unisci/Dividi terreno" name="HelpParcelChanges">
-		Questa casella imposta se i terreni non posseduti dal possessore della proprietà immobiliare possano essere unite o divise.
-Se questa opzione è deselezionata:
- * Soltanto i possessori o i manager della proprietà immobiliare possono unire o dividere i terreni.
- * Possono solo unire o dividere terreni che appartengono al proprietario, o ad un gruppo dove hanno poteri appropriati.
-Se questa opzione è selezionata:
- * Tutti i proprietari del terreno possono unire o dividere i terreni che possiedono.
- * Per i terreni di proprietà del gruppo, solo coloro con poteri appropriati possono unire o dividere il terreno.
-
-Impostazione base: Selezionata
-	</notification>
-	<notification label="Non mostrare in ricerca" name="HelpRegionSearch">
-		Selezionare questa casella bloccherà i proprietari dei terreni dal mettere in lista i loro terreni nella ricerca
-
-Impostazione base: spenta
-	</notification>
 	<notification label="Cambiato il contenuto Mature" name="RegionMaturityChange">
 		La classificazione del contenuto Mature di questa regione è stata aggiornata.
 Può essere necessario un po&apos; di tempo prima che questo cambiamento sia visibile sulle mappe.
-	</notification>
-	<notification label="Rivendita dei Terreni" name="HelpRegionLandResell">
-		I possessori e i manager della proprietà immobiliare possono vendere tutte le terre di cui sono proprietari.
-Se questa opzione è lasciata deselezionata i compratori non potranno rivendere le proprie terre in questa regione.
-Se questa opzione è selezionato i compratori possono rivendere i loro terreni in questa regione.
-
-Impostazione base: Non consentire
-	</notification>
-	<notification label="Disabilita gli script" name="HelpRegionDisableScripts">
-		Se le prestazioni di una sim sono basse, probabilmente è colpa di uno script. Apri la &apos;Barra delle statistiche&apos; (Ctrl+Shift+1). Controlla il FPS della fisica del simulatore.
-Se è più basso di 45, apri il pannello &apos;Time&apos; (Tempi) collocato ln fondo alla &apos;Barra delle statistiche&apos; 
-Se il tempo per gli script è di 25 ms o più alto, clicca sul bottone &apos;Visualizza l&apos;elenco degli script più pesanti...&apos;. Ti verrà dato il nome e l&apos;ubicazione degli script che probabilmente causano una cattiva prestazione.
-
-Selezionare la casella della disabilitazione script e, premendo il bottone applica, disabilitare temporaneamente tutti gli script in questa regione. Questo è necessario per poterti recare verso l&apos;ubicazione dello script definito nell&apos;elenco come &apos;script più pesante&apos;. Una volta arrivato all&apos;oggetto, studia lo script per capire se è quello che sta causando il problema. Potresti dover contattare il proprietario dello script oppure cancellare o restituire l&apos;oggetto.
-Disabilita la casella e quindi premere applica per riattivare gli script nella regione.
-
-Impostazione base: spento
-	</notification>
-	<notification label="Disabilita le collisioni" name="HelpRegionDisableCollisions">
-		Quando le prestazioni della sim sono basse, può darsi che la colpa sia di oggetti fisici.
-Apri la &apos;Barra delle statistiche&apos; (Ctrl+Shift+1).
-Controlla il FPS della fisica del simulatore.
-Se è più basso di 45, apri il pannello &apos;Time&apos; (Tempi) collocato in fondo alla &apos;Barra delle statistiche&apos;.
-Se il tempo della sim (fisica) risulta 20 ms o più, clicca sul bottone &apos;mostra gli oggetti che collidono di più&apos;.
-Ti verranno dati il nome e l&apos;ubicazione degli oggetti fisici che possono causare una cattiva prestazione.
-
-Selezionare la casella disabilita collisioni e, premendo il bottone applica, disabilitare temporaneamente le collisioni oggetto-oggetto. Questo è necessario per poterti recare verso l&apos;ubicazione dell&apos;oggetto che sta collidendo eccessivamente.
-Una volta arrivato sul posto, studia l&apos;oggetto - sta collidendo costantemente con altri oggetti? Potresti dover contattare il proprietario dell&apos;oggetto oppure cancellare o restituire l&apos;oggetto.
-Disabilitare la casella disabilita collisioni e quindi premere applica per riattivare le collisioni nella regione.
-
-Impostazione base: spento
-	</notification>
-	<notification label="Disabilita la fisica" name="HelpRegionDisablePhysics">
-		Disabilitare la fisica è simile alla disabilitazione delle collisioni eccetto che tutte le simulazioni fisiche sono disabilitate.  Questo significa che non solo gli oggetti cessano di collidere, ma anche gli avatar non riusciranno più a muoversi.
-
-Questo dovrebbe essere utilizzato solo se il &apos;disabilita collisioni&apos; non restituisce abbastanza prestazioni alla regione dopo aver cercato un problema fisico o un oggetto che collide eccessivamente.
-
-Fai attenzione a riabilitare la fisica quando hai terminato, altrimenti nessun avatar riuscirà a muoversi.
-
-Impostazione base: spento
-	</notification>
-	<notification label="Oggetti con maggiori collisioni" name="HelpRegionTopColliders">
-		Mostra una lista di oggetti che sperimentano la maggior quantità di potenziali collisioni oggetto-oggetto.  Questi oggetti possono abbassare le prestazioni.
-Seleziona Visualizza &gt; Barra della statistiche e guarda sotto Simulator (Simulatore) &gt; Time (Tempi) &gt; Physics Time (Tempo Sim fisica) per controllare se un tempo di più di 20 ms è impiegato nella fisica.
-	</notification>
-	<notification label="Script pesanti" name="HelpRegionTopScripts">
-		Mostra una lista degli oggetti che occupano la maggior parte del loro tempo eseguendo script LSL.  Questi oggetti possono abbassare le prestazioni.
-Seleziona Visualizza &gt; Barra della statistiche e guarda sotto Simulator (Simulatore) &gt; Time (Tempi) &gt; Script Time (Tempo Script) per controllare se un tempo di più di 20 ms è impiegato per gli script.
-	</notification>
-	<notification label="Fai ripartire la regione" name="HelpRegionRestart">
-		Fai ripartire i processi del server che gestisce questa regione dopo un avvertimento di due minuti.  Tutti i residenti nella regione verranno scollegati.
-La regione salverà i suoi dati e dovrebbe tornare attiva entro 90 secondi.
-
-Far ripartire la regione non risolverà i problemi maggiori delle prestazioni e dovrebbe essere fatta solo se necessario.
-	</notification>
-	<notification label="Altezza dell&apos;acqua" name="HelpRegionWaterHeight">
-		Questa è l&apos;altezza in metri del mare dove deve apparire l&apos;acqua.
-Se questa impostazione è diversa da 20 e l&apos;acqua circonda il confine di terra o acqua della tua sim, vedrai una discontinuità fra la sim e il mare.
-
-Impostazione base: 20
-	</notification>
-	<notification label="Sollevamento terreno" name="HelpRegionTerrainRaise">
-		Questa è l&apos;ulteriore altezza in metri entro la quale i proprietari di appezzamenti possono alzare il loro terreno partendo dall&apos;altezza preimpostata.
-
-Impostazione base: 4
-	</notification>
-	<notification label="Abbassamento terreno" name="HelpRegionTerrainLower">
-		Questa è l&apos;ulteriore altezza in metri entro la quale i proprietari di appezzamenti possono abbassare il loro terreno partendo dall&apos;altezza preimpostata.
-
-Impostazione base: -4
-	</notification>
-	<notification label="Importa terreno RAW" name="HelpRegionUploadRaw">
-		Questo bottone importa un file .RAW nella regione in cui sei.
-Il file deve avere le corrette dimensioni (RGB, 256x256) e 13 canali.  Il modo migliore per creare un file di terreno è di scaricare un file RAW esistente.  Un buon primo passo è quello di modificare il canale del rosso (altezza della terra), ed importarlo.
-
-L&apos;importazione può impiegare fino a 45 secondi. Nota che importare un file del terreno *non muoverà* gli oggetti che sono sulla sim, soltanto il terreno stesso e i permessi associati agli appezzamenti.
-Questo potrebbe far sì che gli oggetti vadano sotto terra.
-
-Per maggiori informazioni sulle modifiche dei campi dell&apos;altezza della regione, consulta il tasto F1 Aiuto.
-	</notification>
-	<notification label="Scarica il terreno RAW" name="HelpRegionDownloadRaw">
-		Questo bottone scarica un file che contiene i dati dell&apos;altezza, delle dimensioni, dello stato di vendita del terreno e di alcuni permessi degli appezzamenti di questa regione.
-Aprendo questo file in un programma come Photoshop devi specificare le dimensioni che sono: RGB, 256x256 con 13 channels. Questo file del terreno non può essere aperto in nessun altro modo.
-
-Per maggiori informazioni sulle modifiche dei campi dell&apos;altezza della regione, consulta il tasto F1 Aiuto.
-	</notification>
-	<notification label="Usa il sole della proprietà" name="HelpRegionUseEstateSun">
-		Questa casella fa si che la posizione del sole in questa regione coincida con la posizione del sole nel resto della proprietà.
-
-Impostazione base: attivo
-	</notification>
-	<notification label="Sole fisso" name="HelpRegionFixedSun">
-		Questa casella imposta la posizione del sole ad un valore definito nel cursore delle fasi e fa in modo che il sole non si muova.
-
-Impostazione base: spento
-	</notification>
-	<notification label="Crea il Terreno" name="HelpRegionBakeTerrain">
-		Questo bottone salva l&apos;attuale forma del terreno come impostazione base per la regione. Una volta creato, il terreno può riassumere la forma base ogni volta che che tu o altri dovessero usare l&apos;opzione &apos;Reimposta&apos; della modifica del terreno.
-Il terreno creato è anche il punto intermedio dei limiti di sollevamento ed abbassamento terreno.
-	</notification>
-	<notification label="Manager della proprietà" name="HelpEstateEstateManager">
-		Un manager della proprietà è un residente a cui avete delegato il controllo di una regione o di una proprietà.  Un manager della proprietà può cambiare qualunque impostazione in queste finestre, eccezion fatta per l&apos;importazione, l&apos;esportazione e la creazione del terreno.  In particolare, possono consentire o bloccare l&apos;accesso ai residenti nella tua proprietà.
-
-I manager della proprietà possono essere soltanto aggiunti o rimossi dal possessore della proprietà e non possono farlo loro l&apos;un l&apos;altro.  Scegli solo residenti di cui ti fidi come manager della proprietà, dato che tu sarai responsabile per le loro azioni.
-	</notification>
-	<notification label="Usa l&apos;ora globale" name="HelpEstateUseGlobalTime">
-		Questa casella fa si che il sole nella vostra proprietà segua la stessa posizione della mainland Linden.
-
-Impostazione base: on
-	</notification>
-	<notification label="Sole Fisso" name="HelpEstateFixedSun">
-		Questa casella imposta la posizione del sole su una posizione del cursore di Fase del sole e lo blocca in quella posizione.
-	</notification>
-	<notification label="Accesso Pubblico" name="HelpEstateExternallyVisible">
-		Questa casella permette ai residenti che sono su altre regioni, di entrare in questa proprietà anche se non sono nella lista di accesso.
-
-Impostazione base: attivo
-	</notification>
-	<notification label="Consenti teleport diretto" name="HelpEstateAllowDirectTeleport">
-		Se selezionato, consente ai residenti di teleportarsi direttamente in qualunque punto di questa proprietà.
-Se deselezionato, i residenti si teleporteranno al più vicino snodo.
-
-Impostazione base: spento
-	</notification>
-	<notification label="Consenti accesso" name="HelpEstateAllowResident">
-		L&apos;accesso a questa proprietà verrà limitata solo ai residenti ed ai gruppi elencati più sotto. Questa impostazione è disponibile solo se l&apos;accesso pubblico è deselezionato.
-	</notification>
-	<notification label="Consenti Accesso di gruppo" name="HelpEstateAllowGroup">
-		L&apos;accesso a questa proprietà verrà limitata solo ai gruppi qui elencati e ai residenti loro appartenenti. Questa impostazione è disponibile soltanto se l&apos;accesso pubblico è deselezionato.
-	</notification>
-	<notification label="Indirizzo di posta email per le segnalazioni di abuso" name="HelpEstateAbuseEmailAddress">
-		Impostando qui un indirizzo di posta elettronica valido, farà si che le segnalazioni di abuso, fatte su questa proprietà, siano mandate a quell&apos;indirizzo.
-Lasciandolo vuoto causerà l&apos;invio delle segnalazioni di abuso soltanto ai Linden Lab.
-	</notification>
-	<notification label="Rifiuta accesso" name="HelpEstateBanResident">
-		I residenti su questa lista non saranno accettati nella tua proprietà, indipendentemente da qualunque altra impostazione.
-	</notification>
-	<notification label="Consenti la voice chat" name="HelpEstateVoiceChat">
-		I terreni di questa proprietà potranno avere i loro canali voce nei quali i residenti potranno parlare con gli avatar vicini.
-
-Impostazione base: spento
 	</notification>
 	<notification label="Versione voice non compatibile" name="VoiceVersionMismatch">
-		Questa versione di [APP_NAME] non è compatibile con le impostazioni di voice chat di questa regione. Per poter fare funzionare correttamente la chat voce devi aggiornare [APP_NAME].
-	</notification>
-	<notification label="Regolamento della proprietà" name="HelpEstateCovenant">
-		Impostare un regolamento della proprietà ti consente di vendere i terreni all&apos;interno di quella proprietà. Se non imposti un regolamento, non puoi vendere i terreni. La notecard per il tuo regolamente può essere vuota se non desideri applicare nessuna regola o informare i compratori di cose inerenti la terra, prima dell&apos;acquisto.
-
-Un regolamento può essere usato per comunicare regole, linee guida, informazioni culturali o semplicemente ciò che ti aspetti dal possibile compratore. Questo può includere impostazioni in zone, regolamenti architettonici, opzioni di pagamento o qualunque altra informazione che ritieni importante che il nuovo proprietario debba aver visto e accettato prima dell&apos;acquisto.
-
-Il compratore deve accettare il regolamento selezionando la casella appropriata per poter completare l&apos;acquisto. I regolamenti delle proprietà sono sempre visibili nella finestra &apos;Informazioni sul terreno&apos; in tutti gli appezzamenti in cui è stato impostato.
+		Questa versione di [APP_NAME] non è compatibile con le capacità di Chat Voice in questa regione. Per poter far funzionare correttamente la Chat Voice devi aggiornare [APP_NAME].
 	</notification>
 	<notification label="Impossibile comprare oggetti" name="BuyObjectOneOwner">
 		Impossibile comprare oggetti da proprietari diversi nello stesso momento.
@@ -1989,52 +1680,36 @@ Hai aggiornato l&apos;ubicazione di questo preferito ma gli altri dettagli conse
 Questi elementi verranno trasferiti nel tuo inventario, ma non copiati.
 
 Trasferisci gli elementi nell&apos;inventario?
-		<usetemplate ignoretext="Quando si trasferiscono elementi non copiabili, dagli oggetti all&apos;inventario." name="okcancelignore" notext="Annulla" yestext="OK"/>
+		<usetemplate ignoretext="Avvertimi quando rimuovo gli elementi  &apos;no-copy&apos; da un oggetto" name="okcancelignore" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="MoveInventoryFromScriptedObject">
 		Hai selezionato elementi dell&apos;inventario non copiabili.  Questi elementi verranno trasferiti nel tuo inventario, non verranno copiati.
 Dato che questo oggetto è scriptato, il trasferimento di questi elementi nel tuo inventario potrebbe causare un malfunzionamento degli script.
 
 Trasferisci gli elementi nell&apos;inventario?
-		<usetemplate ignoretext="Quando si trasferiscono oggetti scriptati non copiabili nell&apos;inventario." name="okcancelignore" notext="Annulla" yestext="OK"/>
+		<usetemplate ignoretext="Avvertimi se la rimozione di elementi  &apos;no-copy&apos; possono danneggiare un oggetto scriptato" name="okcancelignore" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="ClickActionNotPayable">
-		Attenzione: L&apos;azione &apos;Paga l&apos;oggetto&apos; al click è stata impostata, ma funzionerà solo se aggiungi uno script con un evento money().
+		Attenzione: E&apos; stata impostata l&apos;azione &apos;Paga Oggetto&apos;, ma funzionerà soltanto se inserisci uno script con un evento money().
 		<form name="form">
-			<ignore name="ignore" text="Quando imposti il &apos;Paga l&apos;oggetto&apos; senza l&apos;evento money()"/>
+			<ignore name="ignore" text="Ho impostato l&apos;azione &apos;Paga Oggetto&apos; costruendo un oggetto senza uno script money()"/>
 		</form>
 	</notification>
 	<notification name="OpenObjectCannotCopy">
 		Non ci sono elementi in questo oggetto che tu possa copiare.
 	</notification>
 	<notification name="WebLaunchAccountHistory">
-		Vai nel sito web di [SECOND_LIFE] per vedere il tuo estratto conto?
-		<usetemplate ignoretext="Quando carichi la pagina web dell&apos;estratto conto." name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/>
-	</notification>
-	<notification name="ClickOpenF1Help">
-		Visita il sito di supporto di [SECOND_LIFE]?
-		<usetemplate ignoretext="Quando visiti il sito del supporto di [SECOND_LIFE]." name="okcancelignore" notext="Annulla" yestext="Vai"/>
+		Vai su [http://secondlife.com/account/ Dashboard] per vedere la storia delle tue Transazioni?
+		<usetemplate ignoretext="Lancia il browser per vedere la storia del mio account" name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/>
 	</notification>
 	<notification name="ConfirmQuit">
 		Confermi di voler uscire?
-		<usetemplate ignoretext="Quando esci da [APP_NAME]." name="okcancelignore" notext="Continua" yestext="Esci"/>
+		<usetemplate ignoretext="Conferma Uscita" name="okcancelignore" notext="Non Uscire" yestext="Esci"/>
 	</notification>
 	<notification name="HelpReportAbuseEmailLL">
-		Usa questo strumento per segnalare violazioni ai [http://secondlife.com/corporate/tos.php?lang=it-IT Termini di Servizio] e agli [http://secondlife.com/corporate/cs.php?lang=it-IT standard della Comunità].
-
-Tutte gli abusi ai Termini di Servizio e agli Standard della Comunità segnalati, sono indagati e risolti. Puoi controllare la risoluzione degli abusi visitando la pagina delle Risoluzioni degli Incidenti:
-
-http://secondlife.com/support/incidentreport.php
-	</notification>
-	<notification name="HelpReportAbuseEmailEO">
-		IMPORTANTE: questo rapporto verrà inviato al proprietario della regione dove sei in questo momento e non ai Linden Lab.
+		Usa questo strumento per segnalare violazioni del [http://secondlife.com/corporate/tos.php Terms of Service] e  [http://secondlife.com/corporate/cs.php Community Standards].
 
-Come servizio ai residenti e ai visitatori, il proprietario della regione in cui ti trovi, ha scelto di ricevere e risolvere le segnalazioni di abuso che nascono in questa regione. Il Linden Lab non investiga sulle segnalazione inviate da qui.
-
-Il proprietario della regione risolverà le segnalazione basandosi sulle regole locali di questa regione così come sono indicate dal regolamento della proprietà.
-(Puoi vedere il regolamento andando sul menu Mondo e selezionando Informazioni sul terreno.)
-
-La risoluzione di questa segnalazione verrà applicata solo in questa regione; L&apos;accesso dei residenti ad altre aree di [SECOND_LIFE] non verrà influenzato dal risultato di questa segnalazione. Soltanto i Linden Lab possono restringere l&apos;accesso alla totalità di [SECOND_LIFE].
+Tutti gli abusi segnalati verranno investigati e risolti. Puoi verificare lo stato delle segnalazione leggendo [http://secondlife.com/support/incidentreport.php Incident Report].
 	</notification>
 	<notification name="HelpReportAbuseSelectCategory">
 		Scegli una categoria per questa segnalazione di abuso.
@@ -2058,18 +1733,19 @@ Devi essere il più specifico possibile, includendo i nomi e i dettagli dell&apo
 Inserendo una descrizione accurata ci aiuti a gestire ed elaborare le segnalazioni di abuso.
 	</notification>
 	<notification name="HelpReportAbuseContainsCopyright">
-		Caro residente,
+		Gentile Residente,
 
-Sembra che stai segnalando un problema di furto di proprietà intellettuale. Cerca di essere sicuro che la tua segnalazione stia riportando correttamente:
+Sembra che tu stia segnalando una violazione di proprietà intellettuale. Cerca di essere sicuro che la tua segnalazione stia riportando correttamente:
 
-(1) Il processo di abuso. Puoi sottomettere una segnalazione di abuso se ritieni che un residente stia sfruttando il sistema di permessi di [SECOND_LIFE], per esempio, usando CopyBot oppure simili strumenti di copia, per rubare i diritti della proprietà intellettuale. L&apos;ufficio Abusi investigherà e deciderà delle azioni disciplinari adeguate per comportamenti che violano gli standard di comunità di [SECOND_LIFE] o i Termini di Servizio. Si tenga però presente che l&apos;ufficio Abusi non gestisce e non risponde alle richieste di rimozione di contenuto da [SECOND_LIFE].
+(1) Il processo di Abuso. Puoi inviare una segnalazione di abuso se ritieni che un residente stia sfruttando il sistema di permessi di [SECOND_LIFE], per esempio usando CopyBot o simili strumenti di copia, per rubare i diritti della proprietà intellettuale. L&apos;Ufficio Abusi investigherà e deciderà adeguate azioni disciplinari per comportamenti che violano i [http://secondlife.com/corporate/tos.php Termini di Servizio] di  [SECOND_LIFE] oppure i  [http://secondlife.com/corporate/cs.php Standard di Comunità]. Si tenga però presente che l&apos;ufficio Abusi non gestisce e non risponde alle richieste di rimozione di contentuo da [SECOND_LIFE].
 
-(2) Il processo di rimozione DMCA o processo di rimozione dei contenuti. Per richiedere la rimozione di contenuto da [SECOND_LIFE], DEVI sottomettere una notifica valida di furto intellettuale come definito nella nostra politica DMCA che trovi a http://secondlife.com/corporate/dmca.php.
+(2) Il processo di rimozione DMCA o processo di rimozione dei contenuti. Per richiedere la rimozione di contenuto da [SECOND_LIFE], DEVI compilare una denuncia valid di furto come definito nella nostra  [http://secondlife.com/corporate/dmca.php Policy DMCA].
 
-Se desideri egualmente continuare con il processo di abuso, chiudi questa finestra e termina di compilare la segnalazione. Potresti dover selezionare la categoria specifica &apos;CopyBot o Sfruttamento permessi&apos;.
+Se desideri egualmente continuare con il processo di Abuso, chiudi questa finestra e completa la compilazione della segnalazione. Puoi specificare la categoria specifica  &apos;CopyBot o Sfruttamento Permessi&apos;.
 
 Grazie,
-La Linden Lab
+
+Linden Lab
 	</notification>
 	<notification name="FailedRequirementsCheck">
 		I seguenti componenti obbligatori sono mancanti da [FLOATER]:
@@ -2079,9 +1755,9 @@ La Linden Lab
 		C&apos;è già un oggetto indossato in questo punto del corpo.
 Vuoi sostituirlo con l&apos;oggetto selezionato?
 		<form name="form">
-			<ignore name="ignore" save_option="true" text="Quando avviene la sostituzione di un oggetto indossato già esistente."/>
-			<button name="Yes" text="OK"/>
-			<button name="No" text="Annulla"/>
+			<ignore name="ignore" save_option="true" text="Sostituisci un preesistente attachment con l&apos;elemento selezionato"/>
+			<button ignore="Replace Automatically" name="Yes" text="OK"/>
+			<button ignore="Never Replace" name="No" text="Annulla"/>
 		</form>
 	</notification>
 	<notification label="Avviso di &apos;Occupato&apos;" name="BusyModePay">
@@ -2089,18 +1765,22 @@ Vuoi sostituirlo con l&apos;oggetto selezionato?
 
 Desideri abbandonare la modalità &apos;Occupato&apos; prima di completare questa transazione?
 		<form name="form">
-			<ignore name="ignore" save_option="true" text="Quando avviene il pagamento di una persona o di un oggetto in modalità &apos;Occupato&apos;."/>
-			<button name="Yes" text="OK"/>
-			<button name="No" text="Abbandona"/>
+			<ignore name="ignore" save_option="true" text="Sto per pagare una persona o un oggetto mentro sono Non Disponibile"/>
+			<button ignore="Always leave Busy Mode" name="Yes" text="OK"/>
+			<button ignore="Never leave Busy Mode" name="No" text="Abbandona"/>
 		</form>
 	</notification>
+	<notification name="ConfirmDeleteProtectedCategory">
+		La cartella &apos;[FOLDERNAME]&apos; è una cartella di sistema. La cancellazione delle cartelle di sistema può creare instabilità.  Sei sicuro di volerla cancellare?
+		<usetemplate ignoretext="Conferma prima di cancellare una cartella di sistema" name="okcancelignore" notext="Cancella" yestext="OK"/>
+	</notification>
 	<notification name="ConfirmEmptyTrash">
-		Confermi di volere permanentemente rimuovere il contenuto del tuo cartella Cestino?
-		<usetemplate ignoretext="Quando svuoti la cartella cestino del tuo inventario." name="okcancelignore" notext="Annulla" yestext="OK"/>
+		Vuoi veramente cancellare permanentemente il contenuto del tuo Cestino?
+		<usetemplate ignoretext="Conferma lo svuotamento del contenuto del Cestino" name="okcancelignore" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="ConfirmClearBrowserCache">
-		Confermi di voler pulire la cache del tuo browser?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="Si"/>
+		Vuoi veramente cancellare la storia dei viaggi, web e delle ricerche fatte?
+		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="ConfirmClearCookies">
 		Confermi di volere cancellare i tuoi cookie?
@@ -2111,39 +1791,18 @@ Desideri abbandonare la modalità &apos;Occupato&apos; prima di completare quest
 		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="Si"/>
 	</notification>
 	<notification name="ConfirmEmptyLostAndFound">
-		Confermi di volere rimuovere permanentemente il contenuto della tua cartalla Persi e ritrovati?
-		<usetemplate ignoretext="Quando cancelli la cartella degli oggetti perduti e ritrovati del tuo inventario." name="okcancelignore" notext="No" yestext="Si"/>
+		Vuoi veramente cancellare permanentemente il contenuto dei tuoi Persi e Ritrovati?
+		<usetemplate ignoretext="Conferma lo svuotamento della cartella Persi e Ritrovati" name="okcancelignore" notext="No" yestext="Si"/>
 	</notification>
 	<notification name="CopySLURL">
-		Lo SLurl seguente è stato copiato nei tuoi appunti:
+		Lo SLurl seguente è stato copiato negli Appunti:
  [SLURL]
 
-Lo puoi inserire in una pagina web per dare ad altri modo di accedere a questo posto o puoi provare a copiarla nella barra indirizzi del tuo browser web.
+Inseriscilo in una pagina web per dare ad altri un accesso facile a questa ubicazione, o provala incollandola nella barra indirizzo di un browser web.
 		<form name="form">
-			<ignore name="ignore" text="Quando copi uno SLurl negli appunti."/>
+			<ignore name="ignore" text="Lo SLurl è stato copiato negli Appunti"/>
 		</form>
 	</notification>
-	<notification name="GraphicsPreferencesHelp">
-		Questo pannello controlla la dimensione delle finestre, la risoluzione e la qualità della grafica del tuo browser.  Le Preferenze &gt; Grafica  consente di scegliere fra quattro livelli grafici: Basso, Medio, Alto, e Ultra. Puoi anche modificare le impostazioni grafiche selezionando la casella Personalizza e manipolando le seguenti impostazioni:
-
-Effetti grafici: Abilita o disabilita vari tipi di effetti grafici.
-
-Oggetti riflettenti: Imposta le tipologie di oggetti riflessi dall&apos;acqua.
-
-Visualizzazione Avatar: Imposta le opzioni che influenzano come il client visualizza gli avatar.
-
-Campo visivo: Imposta quanto lontano dalla tua posizione gli oggetti vengono visualizzati nella scena.
-
-Massima quantità di particelle: Imposta il valore massimo di particelle che puoi vedere contemporaneamente sullo schermo.
-
-Qualità post elaborazione: Imposta la risoluzione con il quale il bagliore è visualizzato.
-
-Dettaglio della retinatura: Imposta il dettaglio o il numero di triangoli che sono usati per visualizzare determinati oggetti. Un valore più alto impiega più tempo ad essere visualizzato, ma rende questi oggetti più dettagliati.
-
-Dettagli dell&apos;illuminazione: Seleziona quali tipi di luce vuoi visualizzare.
-
-Dettaglio del terreno: Imposta la quantità di dettagli che vuoi vedere per le texture del terreno.
-	</notification>
 	<notification name="WLSavePresetAlert">
 		Vuoi sovrascrivere le preimpostazioni salvate?
 		<usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
@@ -2162,158 +1821,6 @@ Dettaglio del terreno: Imposta la quantità di dettagli che vuoi vedere per le t
 		Effetto di post elaborazione già presente. Vuoi sovrascrivere?
 		<usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
 	</notification>
-	<notification name="HelpEditSky">
-		Modifica i cursori di WindLight per creare e savare un insieme di cieli.
-	</notification>
-	<notification name="HelpEditDayCycle">
-		Scegli quale cielo impostare per ciclo giornaliero.
-	</notification>
-	<notification name="EnvSettingsHelpButton">
-		Queste impostazioni modificano il modo in cui l&apos;ambiente viene visto localmente sul tuo computer.  La tua scheda grafica deve supportare gli effetti atmosferici per poter accedere a tutte le impostazioni.
-
-Modifica il cursore &apos;Ora del Giorno&apos; per cambiare la fase giornaliera locale sul client.
-
-Modifica il cursore &apos;Intensità delle nuvole&apos; per controllare la quantità di nuvole che coprono il cielo.
-
-Scegli un colore nella tavolozza colori per il &apos;colore dell&apos;acqua&apos; per cambiare il colore dell&apos;acqua.
-
-Modifica il cursore &apos;Nebbiosità dell&apos;acqua&apos; per controllare quanto densa è la nebbia sott&apos;acqua.
-
-Clicca &apos;Usa l&apos;ora della proprietà&apos; per sincronizzare il tempo del giorno con l&apos;ora del giorno della regione e collegarle stabilmente.
-
-Clicca &apos;Cielo avanzato&apos; per visualizzare un editor con le impostazioni avanzate per il cielo.
-
-Clicca &apos;Acqua Avanzata&apos; per visualizzare un editor con le impostazini avanzate per l&apos;acqua.
-	</notification>
-	<notification name="HelpDayCycle">
-		L&apos;editor del Ciclo Giorno/Notte permette di controllare il cielo durante il ciclo giornaliero di [SECOND_LIFE]. Questo è il ciclo che è usato dal cursore dell&apos;editor base dell&apos;ambiente.
-
-L&apos;editor del ciclo giorno/notte funziona impostando i fotogrammi chiave. Questi sono nodi (rappresentati da tacche grige sul grafico temporale) che hanno delle preregolazioni associate del cielo. Man mano che l&apos;ora del giorno procede, il cielo di WindLight&apos;si anima&apos; interpolando i valori fra questi fotogrammi chiave.
-
-La freccia gialla sopra la linea del tempo rappresenta la tua vista corrente, basata sull&apos;ora del giorno. Cliccandola e spostandola vedrai come il giorno si animerebbe. Si può aggiungere o cancellare fotogrammi chiave cliccando sui tasti &apos;Aggiungi Fotogramma Chiave&apos; e &apos;Cancella Fotogramma Chiave&apos; alla destra della linea del tempo.
-
-Si possono impostare le posizioni temporali dei fotogrammi chiave spostandole lungo la linea del tempo o impostando il loro valore a mano nella finestra di impostazione dei fotogrammi chiave. All&apos;interno della finestra di impostazione si può associare il fotogramma chiave con le impostazioni corrispondenti di Wind Light.
-
-La durata del ciclo definisce la durata complessiva di un &apos;giorno&apos;. Impostando questo ad un valore basso (per esempio, 2 minuti) tutto il ciclo di 24 ore verrà completato in solo 2 minuti reali! Una volta soddisfatto dell tua linea del tempo e le impostazioni dei fotogrammi chiave, usa i bottoni Play e Stop per vederne in anteprima i risultati. Attenzione: si può sempre spostare la freccia gialla indicatrice del tempo sopra la linea del tempo per vedere il ciclo animarsi interattivamente. Scegliendo invece il pulsanto &apos;Usa il tempo della regione&apos; ci si sincronizza con il le durate del ciclo definite per questa regione.
-
-Una volta soddisfatto del ciclo giornaliero, puoi salvarlo o ricaricarlo con i bottoni &apos;Salva test del giorno&apos; e &apos;Carica il test del giorno&apos;. Attualmente è possibile definire un solo ciclo giorno/notte
-	</notification>
-	<notification name="HelpBlueHorizon">
-		Si usano i cursori RGB (Rosso/Verde/Blu) per modificare il colore del cielo. Si può usare il cursore I (Intensità) per alterare i tre cursori all&apos;unisono.
-	</notification>
-	<notification name="HelpHazeHorizon">
-		Altezza della foschia all&apos;orizzonte è uno dei parametri più utili per modificare l&apos;esposizione di luce complessiva nella scena.
-E&apos; utile per simulare molte impostazioni di esposizione, come la sovraesposizione del sole e impostazioni più scure a diaframma chiuso.
-	</notification>
-	<notification name="HelpBlueDensity">
-		La densità del blu influenza la saturazione complessiva del cielo e della nebbia. Se impostate il cursore (I) Intensità verso destra i colori diventeranno più brillanti e accesi. Se lo impostate tutto a sinistra, i colori diventeranno opachi e ultimamente si confonderanno con il bianco/nero. Se si vuole controllare in modo preciso l&apos;equilibro di colori del cielo, si può agire sui singoli elementi di saturazione utilizzando i tre cursori RGB (Rosso, Verde, Blu).
-	</notification>
-	<notification name="HelpHazeDensity">
-		La densità della foschia controlla il livello di foschia grigia generale nell&apos;atmosfera.
-E&apos; utile per simulare scene con un livello alto di fumo e di inquinamento di origine umana.
-E&apos; anche utile per simulare la nebbia e la foschia al mattino.
-	</notification>
-	<notification name="HelpDensityMult">
-		Il moltiplicatore di densità può essere usato per influenzare la densità atmosferica generale. Con valori bassi, crea la sensazione di &apos;aria sottile&apos;, con valori alti crea un effetto molto pesante, annebbiato.
-	</notification>
-	<notification name="HelpDistanceMult">
-		Modifica la distanza percepita da WindLight.
-Immettendo il valore zero si spegne l&apos;influenza di WindLight sul terreno e gli oggetti.
-Valori più grandi di 1 simulano distanze più grandi per effetti atmosferici più spessi.
-	</notification>
-	<notification name="HelpMaxAltitude">
-		Altitudine Massima modifica i calcoli di altezza che fa WindLight quando calcola l&apos;illuminazione atmosferica.
-In periodi successivi del giorno, è utile per modificare quanto &apos;profondo&apos; appaia il tramonto.
-	</notification>
-	<notification name="HelpSunlightColor">
-		Modifica il colore e l&apos;intensità della luce diretta nella scena.
-	</notification>
-	<notification name="HelpSunAmbient">
-		Modifica il colore e l&apos;intensità della luce atmosferica ambientale nella scena.
-	</notification>
-	<notification name="HelpSunGlow">
-		Il cursore Grandezza controlla la dimensione del sole.
-Il cursore Focus controlla quanto è offuscato il sole sopra il cielo.
-	</notification>
-	<notification name="HelpSceneGamma">
-		Modifica la distribuzione di luci e ombre nello schermo.
-	</notification>
-	<notification name="HelpStarBrightness">
-		Modifica la brillantezza delle stelle nel cielo.
-	</notification>
-	<notification name="HelpTimeOfDay">
-		Controlla la posizione del sole nel cielo.
-Simile all&apos;elevazione.
-	</notification>
-	<notification name="HelpEastAngle">
-		Controlla la posizione del sole nel cielo.
-Simile all&apos;azimuth.
-	</notification>
-	<notification name="HelpCloudColor">
-		Modifica il colore delle nuvole. Normalmente si raccomanda di mantenere un colore verso il bianco, ma puoi sbizzarrirti.
-	</notification>
-	<notification name="HelpCloudDetail">
-		Controlla l&apos;immagine dei dettagli che è sovraimposta sopra l&apos;immagine principale delle nuvole.
-X e Y controllano la sua posizione.
-D (Densità) controlla quanto gonfie o spezzettate appaiono le nuvole.
-	</notification>
-	<notification name="HelpCloudDensity">
-		Consente di controllare la posizione delle nuvole usando i cursori X e Y e quanto dense siano usando il cursore D.
-	</notification>
-	<notification name="HelpCloudCoverage">
-		Controlla quanto le nuvole coprono il cielo.
-	</notification>
-	<notification name="HelpCloudScale">
-		Controlla le dimensioni delle immagini delle nuvole sul cielo stellato.
-	</notification>
-	<notification name="HelpCloudScrollX">
-		Controlla la velocità delle nuvole lungo la direzione X.
-	</notification>
-	<notification name="HelpCloudScrollY">
-		Controlla la velocità delle nuvole lungo la direzione Y.
-	</notification>
-	<notification name="HelpClassicClouds">
-		Seleziona questa casella per consentire la visualizzazione delle nuvole nello stile classico in aggiunta alle nuvole Windlight.
-	</notification>
-	<notification name="HelpWaterFogColor">
-		Sceglie il Colore della nebbiosità dell&apos;acqua.
-	</notification>
-	<notification name="HelpWaterFogDensity">
-		Controlla la densità della foschia dell&apos;acqua e quanto lontano si può vedere sott&apos;acqua.
-	</notification>
-	<notification name="HelpUnderWaterFogMod">
-		Modifica l&apos;effetto dell&apos;Esponente Densità Vapore Acqueo per controllare quanto lontano può vedere il vostro avatar quando è sott&apos;acqua.
-	</notification>
-	<notification name="HelpWaterGlow">
-		Controlla la quantità del bagliore dell&apos;acqua.
-	</notification>
-	<notification name="HelpWaterNormalScale">
-		Controlla le dimensioni delle tre wavelet che compongono l&apos;acqua.
-	</notification>
-	<notification name="HelpWaterFresnelScale">
-		Controlla quanta luce è riflessa ad angoli differenti.
-	</notification>
-	<notification name="HelpWaterFresnelOffset">
-		Controlla quanta intensità di luce è riflessa.
-	</notification>
-	<notification name="HelpWaterScaleAbove">
-		Controlla quanta luce è rifratta guardando dal di sopra della superficie dell&apos;acqua.
-	</notification>
-	<notification name="HelpWaterScaleBelow">
-		Controlla quanta luce è rifratta guardando dal di sotto della superficie dell&apos;acqua.
-	</notification>
-	<notification name="HelpWaterBlurMultiplier">
-		Controlla come le onde e le riflessioni vengono miscelate.
-	</notification>
-	<notification name="HelpWaterNormalMap">
-		Controlla quale mappa normale è sovraimposta nell&apos;acqua per determinare le riflessioni/rifrazioni.
-	</notification>
-	<notification name="HelpWaterWave1">
-		Controlla dove e quanto velocemente la versione ingrandita della mappa normale si muove lungo le direzioni X e Y.
-	</notification>
-	<notification name="HelpWaterWave2">
-		Controlla dove e quanto velocemente la versione ridotta della mappa normale si muove lungo le direzioni X e Y.
-	</notification>
 	<notification name="NewSkyPreset">
 		Fornisci il nome per il nuovo cielo.
 		<form name="form">
@@ -2359,35 +1866,33 @@ D (Densità) controlla quanto gonfie o spezzettate appaiono le nuvole.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="Cannot_Purchase_an_Attachment">
-		Gli elementi non possono essere comprati mentre sono indossati.
+		Non puoi comprare un oggetto mentre è indossato.
 	</notification>
 	<notification label="Informazioni sulle richieste per il permesso di addebito" name="DebitPermissionDetails">
 		Accettare questa richiesta da allo script il permesso continuativo di prendere Linden dollar (L$) dal tuo account. Per revocare questo permesso, il proprietario dell&apos;oggetto deve cancellare l&apos;oggetto oppure reimpostare gli script nell&apos;oggetto.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="AutoWearNewClothing">
-		Vuoi indossare automaticamente i vestiti che crei?
-		<usetemplate ignoretext="Quando Indossi automaticamente nuovi vestiti." name="okcancelignore" notext="No" yestext="Si"/>
+		Vuoi indossare automaticamente gli oggetti che stai per creare?
+		<usetemplate ignoretext="Indossa gli abiti che creo mentre modifico il Mio Aspetto" name="okcancelignore" notext="No" yestext="Si"/>
 	</notification>
 	<notification name="NotAgeVerified">
-		La tua età deve essere verificata per poter entrare in questo territorio.
-Vuoi visitare il sito di [SECOND_LIFE] per verificare la tua eta?
+		Devi avere l&apos;Età Verificata per visitare quest&apos;area. Vuoi andare sul sito [SECOND_LIFE] per verificare la tua età?
 
 [_URL]
 		<url name="url" option="0">
 			https://secondlife.com/account/verification.php?lang=it
 		</url>
-		<usetemplate ignoretext="Quando hai un avviso per mancanza della verifica dell&apos;età." name="okcancelignore" notext="No" yestext="Si"/>
+		<usetemplate ignoretext="Non ho verificato la mia età" name="okcancelignore" notext="No" yestext="Si"/>
 	</notification>
 	<notification name="Cannot enter parcel: no payment info on file">
-		Questo terreno richiede che tu abbia registrato le tue informazioni di pagamento prima che tu possa accedervi.
-Vuoi visitare il sito di [SECOND_LIFE] per impostarle?
+		Devi avere le Informazioni di Pagamento registrate per poter visitare quest&apos;area. Vuoi andare sul sito di [SECOND_LIFE] ed impostarle?
 
 [_URL]
 		<url name="url" option="0">
 			https://secondlife.com/account/index.php?lang=it
 		</url>
-		<usetemplate ignoretext="Quando hai un avviso per mancanza di informazioni di pagamento registrate." name="okcancelignore" notext="No" yestext="Si"/>
+		<usetemplate ignoretext="Manca la registrazione delle Informazioni di Pagamento" name="okcancelignore" notext="No" yestext="Si"/>
 	</notification>
 	<notification name="MissingString">
 		La stringa [STRING_NAME] non è presente in strings.xml
@@ -2417,7 +1922,7 @@ Vuoi visitare il sito di [SECOND_LIFE] per impostarle?
 		[FIRST] [LAST] è Offline
 	</notification>
 	<notification name="AddSelfFriend">
-		Non puoi aggiungere te stesso come amico.
+		Anche se sei molto piacevole, non puoi aggiungerti come amicizia.
 	</notification>
 	<notification name="UploadingAuctionSnapshot">
 		Sto importando le fotografie per l&apos;uso inworld e per il web...
@@ -2436,7 +1941,7 @@ Vuoi visitare il sito di [SECOND_LIFE] per impostarle?
 		Terrain.raw caricato
 	</notification>
 	<notification name="GestureMissing">
-		La gesture [NAME] non è stata trovata nel database.
+		Manca la Gesture [NAME] dal database.
 	</notification>
 	<notification name="UnableToLoadGesture">
 		Impossibile caricare la gesture [NAME].
@@ -2449,14 +1954,14 @@ Riprova.
 		Impossibile caricare il Landmark di riferimento. Riprova.
 	</notification>
 	<notification name="CapsKeyOn">
-		Il tasto BLOC MAIUSC è attivato.
-Dato che questo tasto ha effetto su come scrivi la password, forse sarebbe preferibile disattivarlo.
+		Hai il Blocco delle Maiuscole attivato.
+Questo potrebbe influenzare la tua password.
 	</notification>
 	<notification name="NotecardMissing">
 		Notecard non trovata nel database.
 	</notification>
 	<notification name="NotecardNoPermissions">
-		Permessi insufficienti per visualizzare la notecard.
+		Non hai il permesso di vedere questa notecard.
 	</notification>
 	<notification name="RezItemNoPermissions">
 		Permessi insufficienti per creare un oggetto.
@@ -2494,11 +1999,11 @@ Riprova.
 Riprova.
 	</notification>
 	<notification name="CannotBuyObjectsFromDifferentOwners">
-		Non è possibile acquistare oggetti provenienti da diversi proprietari allo stesso tempo.
-Seleziona un oggetto singolo per volta.
+		Puoi comprare oggetti solo da un proprietario per volta.
+Seleziona solo un oggetto.
 	</notification>
 	<notification name="ObjectNotForSale">
-		L&apos;oggetto non sembra essere in vendita
+		Questo oggetto non è in vendita.
 	</notification>
 	<notification name="EnteringGodMode">
 		Entra in modalità divina, livello [LEVEL]
@@ -2507,10 +2012,10 @@ Seleziona un oggetto singolo per volta.
 		Esci dalla modalità divina, livello [LEVEL]
 	</notification>
 	<notification name="CopyFailed">
-		La copia non è riuscita perche non hai il permesso di copiare.
+		Non hai i permessi per copiare.
 	</notification>
 	<notification name="InventoryAccepted">
-		[NAME] ha accettato la tua offerta dall&apos;inventario.
+		[NAME] ha ricevuto la tua offerta di Inventory.
 	</notification>
 	<notification name="InventoryDeclined">
 		[NAME] non ha accettato la tua offerta dall&apos;inventario.
@@ -2525,12 +2030,14 @@ Seleziona un oggetto singolo per volta.
 		Il tuo biglietto da visita non è stato accettato.
 	</notification>
 	<notification name="TeleportToLandmark">
-		Ora che hai raggiunto la mainland, puoi teleportarti in posti come &apos;[NAME]&apos; cliccando inventario in basso a destra del tuo schermo, e selezionando la cartella dei Landmarks.
-Fai doppio click su un landmark e poi clicca su Teleport per andare là.
+		Puoi teleportarti alle ubicazioni come  &apos;[NAME]&apos; aprendo il pannello Luoghi sul lato destro dello schermo, e quindi selezionare la linguetta Landmarks.
+Clicca su un landmark per selezionarlo e quindi clicca  &apos;Teleport&apos; sul fondo del pannello.
+(Puoi anche fare doppio-click sul landmark oppure cliccarlo con il tasto destro e scegliere &apos;Teleport&apos;.)
 	</notification>
 	<notification name="TeleportToPerson">
-		Ora che hai raggiunto la mainland, puoi contattare residenti con &apos;[NAME]&apos; cliccando inventario in basso a destra del tuo schermo, e selezionando la cartella dei biglietti da visita.
-Fai doppio click sul biglietto, clicca su IM messaggio istantaneo, e scrivi il messaggio.
+		Puoi contattare residenti come  &apos;[NAME]&apos; aprendo il pannello Persone sul lato destro dello schermo.
+Seleziona il residente dalla lista, e clica &apos;IM&apos; in fondo al pannello.
+(Puoi anche fare doppio click sul loro nome nella lista, oppure cliccare con il tasto destro e scegliere &apos;IM&apos;).
 	</notification>
 	<notification name="CantSelectLandFromMultipleRegions">
 		Non è possibile selezionare il terreno attraverso i confini del server.
@@ -2553,6 +2060,9 @@ Prova a selezionare una parte di terreno più piccola.
 	<notification name="SystemMessage">
 		[MESSAGE]
 	</notification>
+	<notification name="PaymentRecived">
+		[MESSAGE]
+	</notification>
 	<notification name="EventNotification">
 		Notifica eventi:
 
@@ -2577,8 +2087,20 @@ Prova a selezionare una parte di terreno più piccola.
 [NAMES]
 	</notification>
 	<notification name="NoQuickTime">
-		Il software Apple QuickTime sembra non essere installato nel tuo sistema.
-Se desideri visualizzare il video streaming nei terreni supportati si consiglia di andare sul sito di QuickTime (http://www.apple.com/quicktime) e procedere con l&apos;installazione di QuickTime Player.
+		Il Software QuickTime di Apple non sembra installato sul tuo computer.
+Se vuoi vedere contenuto multimediale sugli appezzamenti che lo supportano devi andare su [http://www.apple.com/quicktime QuickTime site] e installare il Player QuickTime.
+	</notification>
+	<notification name="NoPlugin">
+		Nessun Media Plugin è stato trovato per gestire &quot;[MIME_TYPE]&quot; il tipo mime.  Il Media di questo tipo non è disponibile.
+	</notification>
+	<notification name="MediaPluginFailed">
+		Questo Media Plugin non funziona:
+    [PLUGIN]
+
+Per favore re-installa il plugin o contatta il venditore se continui ad avere questi problemi.
+		<form name="form">
+			<ignore name="ignore" text="Mancato funzionamento del Media Plugin"/>
+		</form>
 	</notification>
 	<notification name="OwnedObjectsReturned">
 		Gli oggetti che possiedi sul terreno selezionato ti sono stati restituiti nell&apos;inventario.
@@ -2597,24 +2119,26 @@ Gli oggetti non trasferibili che erano stati ceduti al gruppo sono stati cancell
 	<notification name="UnOwnedObjectsReturned">
 		Gli oggetti selezionati sul terreno che non sono di tua proprietà sono stati restituiti ai loro proprietari.
 	</notification>
+	<notification name="ServerObjectMessage">
+		Messaggio da [NAME]:
+[MSG]
+	</notification>
 	<notification name="NotSafe">
-		In questa terra il danno è abilitato (&apos;non sicura&apos;).
-Puoi farti male qui. Se muori, sarai teleportato a casa.
+		Questo terreno è abilitato ai Danni da combattimento.
+Qui potresti ricevere ferite. Se dovessi morire verrai teleportato a casa tua.
 	</notification>
 	<notification name="NoFly">
-		Questa terra ha il volo disabilitato (&apos;non puoi volare&apos;).
-Non è possibile volare qui.
+		Quest&apos;are ha il volo disabilitato.
+Qui non puoi volare.
 	</notification>
 	<notification name="PushRestricted">
-		Questa terra è &apos;Senza spinte&apos;.
-Non si puo spingere gli altri a meno che tu non sia propietario del terreno.
+		Quest&apos;area non consente le spinte. Non puoi spingere gli altri a meno che tu non sia il proprietario del terreno.
 	</notification>
 	<notification name="NoVoice">
-		Questa terra ha il voice disabilitato.
+		Quest&apos;area ha la chat voice disabilitata. Non puoi sentire nessuno parlare.
 	</notification>
 	<notification name="NoBuild">
-		Questo terreno ha la costruzione disabilitata (&apos;non puoi costruire&apos;).
-Non puoi costruire qui.
+		Quest&apos;area ha il building disabilitato. Qui non puoi costruire o rezzare oggetti.
 	</notification>
 	<notification name="ScriptsStopped">
 		Un amministratore ha temporaneamente disabilitato gli script in questa regione.
@@ -2623,12 +2147,12 @@ Non puoi costruire qui.
 		In questa terra nessuno script è attivo.
 	</notification>
 	<notification name="NoOutsideScripts">
-		Questa land ha script esterni disabilitati.
-(&apos;nessuno script esterno&apos;).
-Nessuno script esterno funzionerà tranne quelli del propietario del terreno.
+		Questo terreno non consente script esterni.
+
+Qui funzinano solo gli script del proprietario del terreno.
 	</notification>
 	<notification name="ClaimPublicLand">
-		Puoi solo prendere possesso di terra pubblica nella regione dove sei attualmente.
+		Puoi solo chiedere terreni pubblici nella regione in cui sei posizionato.
 	</notification>
 	<notification name="RegionTPAccessBlocked">
 		Non puoi entrare in quella regione a causa della tua categoria di accesso. Può essere necessario validare l&apos;età e/o installare l&apos;ultima versione del programma.
@@ -2641,16 +2165,9 @@ Visita la Knowledge Base per informazioni sull&apos;accesso alle aree con queste
 	<notification name="NoTeenGridAccess">
 		Il tuo account non può connettersi a questa regione della griglia per Teenager.
 	</notification>
-	<notification name="NoHelpIslandTP">
-		Non è possibile per te ritornare all&apos;Help Island.
-Vai alla &apos;Help Island Public&apos; per ripetere il tutorial.
-	</notification>
 	<notification name="ImproperPaymentStatus">
 		Non hai una impostazioni di pagamento corrette per entrare in questa regione.
 	</notification>
-	<notification name="MustGetAgeRegion">
-		Devi avere un&apos;età verificata per entrare in questa regione.
-	</notification>
 	<notification name="MustGetAgeParcel">
 		Devi essere di età verificata per entrare in questa terra.
 	</notification>
@@ -2713,31 +2230,35 @@ Riprova tra qualche istante.
 		Non è stato trovato nessun territorio valido.
 	</notification>
 	<notification name="ObjectGiveItem">
-		Un oggetto chiamato [OBJECTFROMNAME] di proprietà di [FIRST] [LAST] ti ha dato un [OBJECTTYPE] che si chiama [OBJECTNAME].
+		L&apos;oggetto [OBJECTFROMNAME] posseduto da [NAME_SLURL] ti ha dato [OBJECTTYPE]:
+[ITEM_SLURL]
 		<form name="form">
 			<button name="Keep" text="Prendi"/>
 			<button name="Discard" text="Rifiuta"/>
-			<button name="Mute" text="Muta"/>
+			<button name="Mute" text="Blocca"/>
 		</form>
 	</notification>
 	<notification name="ObjectGiveItemUnknownUser">
-		Un oggetto chiamato [OBJECTFROMNAME] di proprietà di (un utente sconosciuto) ti ha dato un [OBJECTTYPE] che si chiama [OBJECTNAME].
+		Un oggetto di nome [OBJECTFROMNAME] posseduto da un residente sconosciuto ti ha dato [OBJECTTYPE]:
+[ITEM_SLURL]
 		<form name="form">
 			<button name="Keep" text="Prendi"/>
 			<button name="Discard" text="Rifiuta"/>
-			<button name="Mute" text="Muta"/>
+			<button name="Mute" text="Blocca"/>
 		</form>
 	</notification>
 	<notification name="UserGiveItem">
-		[NAME] ti ha dato un [OBJECTTYPE] chiamato &apos;[OBJECTNAME]&apos;.
+		[NAME_SLURL] ti ha dato [OBJECTTYPE]:
+[ITEM_SLURL]
 		<form name="form">
 			<button name="Keep" text="Prendi"/>
+			<button name="Show" text="Mostra"/>
 			<button name="Discard" text="Rifiuta"/>
-			<button name="Mute" text="Muta"/>
 		</form>
 	</notification>
 	<notification name="GodMessage">
 		[NAME]
+
 [MESSAGE]
 	</notification>
 	<notification name="JoinGroup">
@@ -2749,7 +2270,7 @@ Riprova tra qualche istante.
 		</form>
 	</notification>
 	<notification name="TeleportOffered">
-		[NAME] ti ha offerto di teleportarti dove sta ora:
+		[NAME] ti ha offerto di teleportarti nella sua ubicazione:
 
 [MESSAGE]
 		<form name="form">
@@ -2776,6 +2297,9 @@ Riprova tra qualche istante.
 			<button name="Decline" text="Rifiuta"/>
 		</form>
 	</notification>
+	<notification name="FriendshipOffered">
+		Hai offerto l&apos;amicizia a [TO_NAME]
+	</notification>
 	<notification name="OfferFriendshipNoMessage">
 		[NAME] ti ha offerto la sua amicizia.
 
@@ -2801,12 +2325,12 @@ in modo da poter rapidamente inviargli un IM al residente.
 		</form>
 	</notification>
 	<notification name="RegionRestartMinutes">
-		Il riavvio della regione avverrà tra [MINUTES] minuti.
-Se rimani in questa regione sarai disconnesso.
+		Questa regione farà il restart fra [MINUTES] minuti.
+Se rimani qui verrai disconnesso.
 	</notification>
 	<notification name="RegionRestartSeconds">
-		Il riavvio della regione avverrà tra [SECONDS] secondi.
-Se rimani in questa regione sarai disconnesso.
+		Questa regione farà il restart fra  [SECONDS] secondi.
+Se rimani qui verrai disconnesso.
 	</notification>
 	<notification name="LoadWebPage">
 		Caricare pagina web [URL]?
@@ -2826,7 +2350,7 @@ Dall&apos;oggetto: [OBJECTNAME], di: [NAME]?
 		Impossibile trovare [TYPE] chiamato [DESC] nel database.
 	</notification>
 	<notification name="InvalidWearable">
-		L&apos;oggetto che si sta tentando di indossare utilizza una funzione che il programma non riesce a leggere. Aggiorna la tua versione di [APP_NAME] per riuscire a indossare l&apos;oggetto.
+		L&apos;elemento che stai tentando di indossare usa delle caratteristiche che il tuo viewer non può leggere. Aggiorna la versione di [APP_NAME] per poterlo indossare.
 	</notification>
 	<notification name="ScriptQuestion">
 		&apos;[OBJECTNAME]&apos;, un oggetto di proprietà di &apos;[NAME]&apos;, vorrebbe:
@@ -2836,16 +2360,16 @@ Va bene?
 		<form name="form">
 			<button name="Yes" text="Si"/>
 			<button name="No" text="No"/>
-			<button name="Mute" text="Muta"/>
+			<button name="Mute" text="Blocca"/>
 		</form>
 	</notification>
 	<notification name="ScriptQuestionCaution">
-		&apos;[OBJECTNAME]&apos;, un oggetto di proprietà di &apos;[NAME]&apos;, vorrebbe:
+		Un oggetto di nome &apos;[OBJECTNAME]&apos;, posseduto da  &apos;[NAME]&apos; vorrebbe:
 
 [QUESTIONS]
-Se non ci si fida dell&apos;oggetto e del suo creatore, si dovrebbe negare la richiesta. Per ulteriori informazioni, fai clic sul pulsante &apos;Dettagli&apos;.
+Se non ti fidi di questo oggetto e del suo creatore dovresti declinare la richiesta.
 
-Accettare tale richiesta?
+Consenti questa richiesta?
 		<form name="form">
 			<button name="Grant" text="Accetta"/>
 			<button name="Deny" text="Nega"/>
@@ -2866,39 +2390,44 @@ Accettare tale richiesta?
 			<button name="Ignore" text="Ignora"/>
 		</form>
 	</notification>
+	<notification name="ScriptToast">
+		[FIRST] [LAST]&apos;s &apos;[TITLE]&apos; richiede il contributo dell&apos;utente.
+		<form name="form">
+			<button name="Open" text="Apri il Dialog"/>
+			<button name="Ignore" text="Ignora"/>
+			<button name="Block" text="Blocca"/>
+		</form>
+	</notification>
 	<notification name="FirstBalanceIncrease">
 		Hai appena ricevuto [AMOUNT]L$.
-Gli oggetti e gli altri utenti possono darti L$.
-Il tuo saldo è indicato nell&apos;angolo in alto a destra dello schermo.
+Il tuo saldo in L$ è mostrato in alto a destra.
 	</notification>
 	<notification name="FirstBalanceDecrease">
 		Hai appena pagato [AMOUNT]L$.
-Il tuo saldo è indicato nell&apos;angolo in alto a destra dello schermo.
+Il tuo saldo in L$ è mostrato in alto a destra.
+	</notification>
+	<notification name="BuyLindenDollarSuccess">
+		Grazie per il pagamento!
+
+Il tuo saldo in L$ sarà aggiornato al termine dell&apos;elaborazione. Se l&apos;elaborazione dovesse impiegare più di 20 minuti, la transazione verrà annullata. In quel caso l&apos;ammontare dell&apos;acquisto verrà rimborsato nel tuo saldo in US$.
+
+Lo stato del tuo pagamento potrà essere controllato nella pagina della Storia delle tue Transazioni su  [http://secondlife.com/account/ Pannello di Controllo]
 	</notification>
 	<notification name="FirstSit">
 		Sei seduto.
-Utilizza i tasti freccia (o AWSD) per cambiare visualizzazione.
-Fai clic sul pulsante &apos;Alzati&apos; per rialzarti.
+Usa le frecce (oppure AWSD) per guardarti intorno.
+Clicca il bottone &apos;Alzati&apos; per alzarti.
 	</notification>
 	<notification name="FirstMap">
-		Fai clic e trascina per scorrere la mappa.
-Doppio click per teleportarti.
-Utilizza i controlli sulla destra per trovare le cose e visualizzare sfondi differenti.
+		Clicca e trascina la mappa per guardare attorno.
+Fai doppio click per teleportarti.
+Usa i controlli sulla destra per trovare cose e visualizzare sfondi differenti.
 	</notification>
 	<notification name="FirstBuild">
-		È possibile creare nuovi oggetti in alcune zone di [SECOND_LIFE].
-Utilizza gli strumenti in alto a sinistra per costruire, e prova a tenere premuto Ctrl o Alt per passare rapidamente tra uno strumento e l&apos;altro.
-Premi Esc per smettere di costruire.
-	</notification>
-	<notification name="FirstLeftClickNoHit">
-		Cliccare con il tasto sinistro fa interagire con particolari oggetti.
-Se il puntatore del mouse si trasforma in una mano, puoi interagire con l&apos;oggetto.
-Se fai clic col tasto destro ti verranno sempre mostrati menù con le cose che puoi fare.
+		Hai aperto gli Strumenti di Build. Ogni oggetto attorno a te è stato costruito con questi strumenti.
 	</notification>
 	<notification name="FirstTeleport">
-		Questa regione non permette i teleport da punto a punto, cosi sei stato teletrasportato nel punto più vicino.
-La tua destinazione originale è comunque segnata da un segnale luminoso.
-Segui la freccia rossa per arrivare a destinazione, o fai clic sulla freccia per spegnerla.
+		Puoi teleportarti solo in certe aree di questa regione. La freccia indica la tua destinazione. Clicca sulla freccia per farla sparire.
 	</notification>
 	<notification name="FirstOverrideKeys">
 		I tuoi movimenti della tastiera vengono ora gestiti da un oggetto.
@@ -2908,86 +2437,80 @@ Premi &apos;M&apos; per farlo.
 	</notification>
 	<notification name="FirstAppearance">
 		Stai modificando il tuo aspetto.
-Per ruotare e fare uno zoom, utilizza le frecce della tastiera.
-Quando hai finito, premi &apos;Salva tutto&apos;
-per salvare il tuo look e uscire.
-Puoi modificare il tuo aspetto ogni qualvolta vuoi.
+Usa le frecce per guardarti attorno.
+Quando hai finito premi &apos;Salva Tutto&apos;.
 	</notification>
 	<notification name="FirstInventory">
-		Questo è il tuo inventario, che contiene gli oggetti, notecard, abbigliamento, e altre cose che possiedi.
-* Per indossare un oggetto o un outfit completo contenuto in una cartella, trascinali su te stesso.
-* Per ricreare un oggetto inworld, trascinalo sul terreno.
-* Per leggere una notecard, fai doppio clic su di essa.
+		Questo è il tuo Inventory, che contiene gli elementi che possiedi.
+
+* Per indossare qualcosa, trascinala su di te.
+* Per rezzare qualcosa inworld, trascinala sul suolo.
+* Per leggere una notecard, fai doppio click.
 	</notification>
 	<notification name="FirstSandbox">
-		Questa è una regione sandbox.
-Gli oggetti che costruisci qui, potrebbero essere cancellati dopo che lasci questa area, dato che le sandbox si autopuliscono regolarmente. Leggi le informazioni scritte al riguardo, vicino al nome della regione in alto sullo schermo.
+		Questa è una Sandbox, serve per aiutare i Residenti ad imparare a costruire.
 
-Le regioni sandbox sono rare, e sono contrassegnate da segnali.
+Gli oggetti che costruisci qui saranno cancellati dopo che te ne sei andato, perciò non dimenticare di cliccare sulle tue creazioni col tasto destro e scegliere &apos;Prendi&apos; per trasferirle nel tuo Inventory.
 	</notification>
 	<notification name="FirstFlexible">
-		Questo oggetto è flessibile.
-Gli oggetti flessibili non possono essere fisici e devano essere fantasma fino a quando la casella di controllo della flessibilità verrà deselezionata.
+		Questo oggetto è flessibile. Gli oggetti Flexy devono essere fantasma e non fisici.
 	</notification>
 	<notification name="FirstDebugMenus">
-		Hai attivato il menu Avanzato.
-Questo menu contiene funzioni utili per gli sviluppatori per il debug di [SECOND_LIFE].
-Per attivare o disattivare questo menu su Windows premere Ctrl+Alt+D. Su Mac premere &#8997;&#8984;D.
+		Hai abilitato il menu Avanzato.
+
+Per abilitarlo/disabilitarlo,
+  Windows: Ctrl+Alt+D
+  Mac: &#8997;&#8984;D
 	</notification>
 	<notification name="FirstSculptedPrim">
-		Si sta modificando uno sculpted prim.
-Gli sculpted prim richiedono una speciale texture che ne specifichi la forma.
-Puoi trovare esempi di texture sculpted nella libreria dell&apos;inventario.
-	</notification>
-	<notification name="FirstMedia">
-		Hai iniziato la riproduzione dei media. I media possono essere impostati per essere riprodotti automaticamente nella finestra delle Preferenze sotto la voce Audio / Video. Questo può essere un rischio di sicurezza da media che non sono affidabili.
+		Stai modificando un prim Sculpted. Gli oggetti Sculpted hanno bisogno di una texture speciale per definire la loro forma.
 	</notification>
 	<notification name="MaxListSelectMessage">
 		È possibile selezionare solo fino a [MAX_SELECT] oggetti da questa lista.
 	</notification>
 	<notification name="VoiceInviteP2P">
-		[NAME] ti ha invitato a una chiamata Voice.
-Fai clic su Accetta per partecipare alla chiamata o su Rifiuta per rifiutare l&apos;invito. fai clic sul pulsante Muta per mutare il chiamante.
+		[NAME] ti sta invitando ad una chiamata in Chat Voice.
+Clicca Accetta per unirti alla chiamata oppure Declina per declinare l&apos;invito. Clicca Blocca per bloccare questo chiamante.
 		<form name="form">
 			<button name="Accept" text="Accetta"/>
 			<button name="Decline" text="Rifiuta"/>
-			<button name="Mute" text="Muta"/>
+			<button name="Mute" text="Blocca"/>
 		</form>
 	</notification>
 	<notification name="AutoUnmuteByIM">
-		A [FIRST] [LAST] e&apos; stato mandato un messaggio instantaneo ed è stato quindi automaticamente non mutato.
+		Hai appena inviato un IM a [FIRST] [LAST], che è stato automaticamente sbloccato.
 	</notification>
 	<notification name="AutoUnmuteByMoney">
-		A [FIRST] [LAST] è stato dato del denaro ed è stato automaticamente non mutato.
+		Hai appena inviato del denaro a [FIRST] [LAST], che è stato automaticamente sbloccato.
 	</notification>
 	<notification name="AutoUnmuteByInventory">
-		A [FIRST] [LAST] é stato passato qualcosa dall&apos;inventario ed è stato automaticamente non mutato.
+		Hai appena offerto un elemento dell&apos;Inventory a [FIRST] [LAST], che è stato automaticamente sbloccato.
 	</notification>
 	<notification name="VoiceInviteGroup">
-		[NAME] ha iniziato una chiamata Voice-Chat con il gruppo [GROUP].
-Fai clic su Accetta per partecipare alla chiamata o Rifiuta per Rifiutare l&apos;invito. Fai clic sul pulsante muta per mutare il chiamante.
+		[NAME] si è aggiunto alla chiamata in Chat Voice con il gruppo [GROUP].
+Clicca  Accetta per unirti alla chiamata oppure  Declina per declinare l&apos;invito. Clicca Blocca per bloccare questo chiamante.
 		<form name="form">
 			<button name="Accept" text="Accetta"/>
 			<button name="Decline" text="Rifiuta"/>
-			<button name="Mute" text="Muta"/>
+			<button name="Mute" text="Blocca"/>
 		</form>
 	</notification>
 	<notification name="VoiceInviteAdHoc">
-		[NAME] ha iniziato una chiamata Voice Chat mediante una conferenza chat..
-Fai clic su Accetta per partecipare alla chiamata o Rifiuta per Rifiutare l&apos;invito. Fai clic sul pulsante muta per mutare il chiamante.
+		[NAME] si è aggiunto alla chiamata in Chat Voice con una conferenza.
+Clicca Accetta per unirti alla chiamata oppure Declina to declinare l&apos;invito. Clicca Blocca per bloccare questo chiamante.
 		<form name="form">
 			<button name="Accept" text="Accetta"/>
 			<button name="Decline" text="Rifiuta"/>
-			<button name="Mute" text="Muta"/>
+			<button name="Mute" text="Blocca"/>
 		</form>
 	</notification>
 	<notification name="InviteAdHoc">
-		[NAME] ti ha invitato ad una conferenza chat.
-Fai clic su Accetta per partecipare alla chiamata o su Rifiuta per rifiutare l&apos;invito. Fai clic sul pulsante muta per mutare il chiamante.
+		[NAME] ti sta invitando ad una conferenza in chat.
+Clicca Accetta per unirti alla chat oppure  Declina per declinare l&apos;invito. Clicca Blocca per bloccare questo chiamante.
 		<form name="form">
 			<button name="Accept" text="Accetta"/>
 			<button name="Decline" text="Rifiuta"/>
-			<button name="Mute" text="Muta"/>
+			<button name="Mute" text="Blocca"/>
 		</form>
 	</notification>
 	<notification name="VoiceChannelFull">
@@ -2997,25 +2520,25 @@ Fai clic su Accetta per partecipare alla chiamata o su Rifiuta per rifiutare l&a
 		Siamo spiacenti.  Questa area ha raggiunto la capacità massima per le chiamate voice.  Si prega di provare ad usare il voice in un&apos;altra area.
 	</notification>
 	<notification name="VoiceChannelDisconnected">
-		Sei stato disconnesso da [VOICE_CHANNEL_NAME].  Ora verrai riconnesso al canale voice chat pubblico.
+		Sei stato disconnesso da [VOICE_CHANNEL_NAME].  Verrai ora riconnesso alla Chat Voice Locale.
 	</notification>
 	<notification name="VoiceChannelDisconnectedP2P">
-		[VOICE_CHANNEL_NAME] ha chiuso la chiamata.  Ora verrai riconnesso al canale voice chat pubblico.
+		[VOICE_CHANNEL_NAME] ha terminato la chiamata.  Verrai ora riconnesso alla Chat Voice Locale.
 	</notification>
 	<notification name="P2PCallDeclined">
-		[VOICE_CHANNEL_NAME] ha rifiutato la tua chiamata. Ora verrai riconnesso al canale voice chat pubblico.
+		[VOICE_CHANNEL_NAME] ha declinato la tua chiamata. Verrai ora riconnesso alla Chat Voice Locale.
 	</notification>
 	<notification name="P2PCallNoAnswer">
-		[VOICE_CHANNEL_NAME] non è disponibile per rispondere alla chiamata. Ora verrai riconnesso al canale voice chat pubblico.
+		[VOICE_CHANNEL_NAME] non è disponibile per la tua chiamata. Verrai ora riconnesso alla Chat Voice Locale.
 	</notification>
 	<notification name="VoiceChannelJoinFailed">
-		Impossibile connettersi con [VOICE_CHANNEL_NAME], si prega di riprovare più tardi. Ora verrai riconnesso al canale voice chat pubblico.
+		Connessione a [VOICE_CHANNEL_NAME] fallita, riprova più tardi.  Verrai ora riconnesso alla Chat Voice Locale.
 	</notification>
 	<notification name="VoiceLoginRetry">
 		Stiamo creando una canale voice per te. Questo può richiedere fino a un minuto.
 	</notification>
 	<notification name="Cannot enter parcel: not a group member">
-		Non puoi entrare nel terreno, non sei un membro del gruppo appropriato.
+		Soltanto i membri di uno specifico gruppo possono visitare quest&apos;area.
 	</notification>
 	<notification name="Cannot enter parcel: banned">
 		Non puoi entrare nel terreno, sei stato bloccato.
@@ -3030,18 +2553,58 @@ Fai clic su Accetta per partecipare alla chiamata o su Rifiuta per rifiutare l&a
 		Si è verificato un errore durante il tentativo di collegarti a una voice chat con [VOICE_CHANNEL_NAME].  Riprova più tardi.
 	</notification>
 	<notification name="ServerVersionChanged">
-		La regione in cui sei entrato, gira su una versione di simulatore differente. Fai clic su questo messaggio per i dettagli.
+		Sei appena entrato in una regione che usa una versione differente del server, questo potrebbe influenzare le prestazioni. [[URL] Guarda le Release Notes.]
+	</notification>
+	<notification name="UnsupportedCommandSLURL">
+		Lo SLurl che hai cliccato non è attivo.
+	</notification>
+	<notification name="BlockedSLURL">
+		Uno SLurl è stato ricevuto da un browser sconosciuto e per la tua sicurezza è stato bloccato.
 	</notification>
-	<notification name="UnableToOpenCommandURL">
-		L&apos;URL che hai selezionato non può essere aperto da questo browser.
+	<notification name="ThrottledSLURL">
+		Multipli SLurls sono stati ricevuti da un browser sconosciuto in un breve periodo.
+Per la tua sicurezza verranno bloccati per alcuni secondi.
+	</notification>
+	<notification name="IMToast">
+		[MESSAGE]
+		<form name="form">
+			<button name="respondbutton" text="Rispondi"/>
+		</form>
+	</notification>
+	<notification name="AttachmentSaved">
+		L&apos;Allegato (Attachment) è stato salvato.
+	</notification>
+	<notification name="UnableToFindHelpTopic">
+		Impossibilitato a trovare il tema aiuto per questo elemento (nozione)???!!!!.
+	</notification>
+	<notification name="ObjectMediaFailure">
+		Errore del Server: aggiornamento del Media o mancato funzionamento.
+&apos;[ERROR]&apos;
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="TextChatIsMutedByModerator">
+		Il tuo testo nella chat è stato interrotto dal moderatore.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="VoiceIsMutedByModerator">
+		La tua voce è stata interrotta dal moderatore.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmClearTeleportHistory">
+		Sei sicuro di volere cancellare la cronologia dei tuoi teleport?
+		<usetemplate name="okcancelbuttons" notext="Cancella" yestext="OK"/>
+	</notification>
+	<notification name="BottomTrayButtonCanNotBeShown">
+		Il bottone selezionato non può essere mostrato in questo momento.
+Il bottone verrà mostrato quando ci sarà abbastanza spazio.
 	</notification>
 	<global name="UnsupportedCPU">
 		- La velocità della tua CPU non soddisfa i requisiti minimi.
 	</global>
 	<global name="UnsupportedGLRequirements">
-		Sembra che tu non abbia i requisiti appropriati hardware per [APP_NAME]. [APP_NAME] ha bisogno di una scheda grafica OpenGL che abbia il supporto multitexture. Se ritieni di avere l&apos;hardware giusto verifica di avere installati i driver più aggiornati per la tua scheda grafica e gli aggiornamenti e service pack appropriati per il tuo sistema operativo.
+		Non sembra che tu abbia i requisiti hardware adeguati per [APP_NAME]. [APP_NAME] richiede una scheda grafica OpenGL con supporto multitexture. Se tu ce l&apos;hai, dovresti accertarti di avere i driver, i service pack e le patch più recenti della scheda grafica e del tuo sistema operativo.
 
-Se continui ad avere problemi, visita il sito: http://www.secondlife.com/support
+Se continui ad avere problemi, visita [SUPPORT_SITE].
 	</global>
 	<global name="UnsupportedCPUAmount">
 		796
@@ -3055,10 +2618,8 @@ Se continui ad avere problemi, visita il sito: http://www.secondlife.com/support
 	<global name="UnsupportedRAM">
 		- La memoria del tuo sistema non soddisfa i requisiti minimi.
 	</global>
-	<global name="PermYes">
-		Si
-	</global>
-	<global name="PermNo">
-		No
+	<global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
+		Se possiedi una parte di terra, puoi creare qui la tua ubicazione di casa.
+Altrimenti, puoi guardare sulla Mappa e trovare luoghi segnalati come &quot;Infohub&quot;.
 	</global>
 </notifications>
diff --git a/indra/newview/skins/default/xui/it/panel_active_object_row.xml b/indra/newview/skins/default/xui/it/panel_active_object_row.xml
new file mode 100644
index 00000000000..b8cca6f01ac
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_active_object_row.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_activeim_row">
+	<string name="unknown_obj">
+		Oggetto sconosciuto
+	</string>
+	<text name="object_name">
+		Oggetto senza nome
+	</text>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/it/panel_adhoc_control_panel.xml
new file mode 100644
index 00000000000..4a7c9b11c74
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_adhoc_control_panel.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+	<panel name="panel_call_buttons">
+		<button label="Chiama" name="call_btn"/>
+		<button label="Abbandona Chiamata" name="end_call_btn"/>
+		<button label="Voice Controls" name="voice_ctrls_btn"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/it/panel_avatar_list_item.xml
new file mode 100644
index 00000000000..40f805774e7
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_avatar_list_item.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="avatar_list_item">
+	<string name="FormatSeconds">
+		[COUNT]s
+	</string>
+	<string name="FormatMinutes">
+		[COUNT]m
+	</string>
+	<string name="FormatHours">
+		[COUNT]h
+	</string>
+	<string name="FormatDays">
+		[COUNT]d
+	</string>
+	<string name="FormatWeeks">
+		[COUNT]w
+	</string>
+	<string name="FormatMonths">
+		[COUNT]mon
+	</string>
+	<string name="FormatYears">
+		[COUNT]y
+	</string>
+	<text name="avatar_name" value="Sconosciuto"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml
new file mode 100644
index 00000000000..cf833924aec
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="block_list_panel">
+	<text name="title_text">
+		Lista bloccata
+	</text>
+	<scroll_list name="blocked" tool_tip="Lista dei residenti bloccati"/>
+	<button label="Blocca il Residente..." label_selected="Blocca Residente..." name="Block resident..." tool_tip="Scegli un residente da bloccare"/>
+	<button label="Blocca l&apos;oggetto per nome..." label_selected="Blocca l&apos;oggetto per nome..." name="Block object by name..."/>
+	<button label="Sblocca" label_selected="Sblocca" name="Unblock" tool_tip="Rimuovi dalla lista il residente o l&apos;oggetto bloccato"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_bottomtray.xml b/indra/newview/skins/default/xui/it/panel_bottomtray.xml
new file mode 100644
index 00000000000..f2aab63dce9
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_bottomtray.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="bottom_tray">
+	<string name="SpeakBtnToolTip">
+		Microfono on/off
+	</string>
+	<string name="VoiceControlBtnToolTip">
+		Mostra/nascondi il pannello voice control
+	</string>
+	<layout_stack name="toolbar_stack">
+		<layout_panel name="gesture_panel">
+			<gesture_combo_box label="Gesture" name="Gesture" tool_tip="Mostra/nascondi gestures"/>
+		</layout_panel>
+		<layout_panel name="movement_panel">
+			<button label="Sposta" name="movement_btn" tool_tip="Mostra/nascondi i controlli del movimento"/>
+		</layout_panel>
+		<layout_panel name="cam_panel">
+			<button label="Visualizza" name="camera_btn" tool_tip="Mostra/nascondi i controlli della camera"/>
+		</layout_panel>
+		<layout_panel name="snapshot_panel">
+			<button label="" name="snapshots" tool_tip="Scatta una foto"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_classified_info.xml b/indra/newview/skins/default/xui/it/panel_classified_info.xml
new file mode 100644
index 00000000000..2ba127d34a5
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_classified_info.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_classified_info">
+	<text name="title" value="Info sugli Annunci"/>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<text name="classified_name" value="[nome]"/>
+			<text name="classified_location" value="[caricando...]"/>
+			<text name="content_type" value="[tipo di contenuto]"/>
+			<text name="category" value="[categoria]"/>
+			<check_box label="Auto rinnovo settimanale" name="auto_renew"/>
+			<text name="price_for_listing" tool_tip="Prezzo di listino.">
+				L$[PREZZO]
+			</text>
+			<text name="classified_desc" value="[descrizione]"/>
+		</panel>
+	</scroll_container>
+	<panel name="buttons">
+		<button label="Teleport" name="teleport_btn"/>
+		<button label="Mappa" name="show_on_map_btn"/>
+		<button label="Modifica" name="edit_btn"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_edit_alpha.xml b/indra/newview/skins/default/xui/it/panel_edit_alpha.xml
new file mode 100644
index 00000000000..652bef04303
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_edit_alpha.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_alpha_panel">
+	<panel name="avatar_alpha_color_panel">
+		<texture_picker label="Alpha inferiore" name="Lower Alpha" tool_tip="Clicca per scegliere una fotografia"/>
+		<texture_picker label="Alpha superiore" name="Upper Alpha" tool_tip="Click to choose a picture"/>
+		<texture_picker label="Alpha della testa" name="Head Alpha" tool_tip="Clicca per scegliere una fotografia"/>
+		<texture_picker label="Alpha dell&apos;occhio" name="Eye Alpha" tool_tip="Clicca per scegliere una fotografia"/>
+		<texture_picker label="Alpha dei capelli" name="Hair Alpha" tool_tip="Clicca per scegliere una fotografia"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_edit_classified.xml b/indra/newview/skins/default/xui/it/panel_edit_classified.xml
new file mode 100644
index 00000000000..81ef121dd81
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_edit_classified.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Modifica gli Annunci" name="panel_edit_classified">
+	<panel.string name="location_notice">
+		(sarà aggiornato dopo il salvataggio)
+	</panel.string>
+	<text name="title">
+		Modifica gli Annunci
+	</text>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<icon label="" name="edit_icon" tool_tip="Clicca per selezionare un&apos;immagine"/>
+			<text name="Name:">
+				Titolo:
+			</text>
+			<text name="description_label">
+				Descrizione:
+			</text>
+			<text name="location_label">
+				Luogo:
+			</text>
+			<text name="classified_location">
+				caricando...
+			</text>
+			<button label="Imposta sul luogo attuale" name="set_to_curr_location_btn"/>
+			<spinner label="L$" name="price_for_listing" tool_tip="Fissare il Prezzo." value="50"/>
+			<check_box label="Auto-rinnovo settimanale" name="auto_renew"/>
+		</panel>
+	</scroll_container>
+	<panel label="bottom_panel" name="bottom_panel">
+		<button label="Salva" name="save_changes_btn"/>
+		<button label="Cancella" name="cancel_btn"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_edit_eyes.xml b/indra/newview/skins/default/xui/it/panel_edit_eyes.xml
new file mode 100644
index 00000000000..3b1e51e759d
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_edit_eyes.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_eyes_panel">
+	<panel name="avatar_eye_color_panel">
+		<texture_picker label="Iride" name="Iris" tool_tip="Clicca per scegliere una fotografia"/>
+	</panel>
+	<accordion name="wearable_accordion">
+		<accordion_tab name="eyes_main_tab" title="Occhi"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_edit_gloves.xml b/indra/newview/skins/default/xui/it/panel_edit_gloves.xml
new file mode 100644
index 00000000000..2a80d6df3d3
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_edit_gloves.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_gloves_panel">
+	<panel name="avatar_gloves_color_panel">
+		<texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere una fotografia"/>
+		<color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/>
+	</panel>
+	<accordion name="wearable_accordion">
+		<accordion_tab name="gloves_main_tab" title="Guanti"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_edit_hair.xml b/indra/newview/skins/default/xui/it/panel_edit_hair.xml
new file mode 100644
index 00000000000..137a5cabeb6
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_edit_hair.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_hair_panel">
+	<panel name="avatar_hair_color_panel">
+		<texture_picker label="Texture" name="Texture" tool_tip="Clicca per scegliere una fotografia"/>
+	</panel>
+	<accordion name="wearable_accordion">
+		<accordion_tab name="hair_color_tab" title="Colore"/>
+		<accordion_tab name="hair_style_tab" title="Stile"/>
+		<accordion_tab name="hair_eyebrows_tab" title="Sopracciglia"/>
+		<accordion_tab name="hair_facial_tab" title="Facciale"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_edit_jacket.xml b/indra/newview/skins/default/xui/it/panel_edit_jacket.xml
new file mode 100644
index 00000000000..43c825ff73e
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_edit_jacket.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_jacket_panel">
+	<panel name="avatar_jacket_color_panel">
+		<texture_picker label="Tessuto superiore" name="Upper Fabric" tool_tip="Clicca per scegliere una fotografia"/>
+		<texture_picker label="Tessuto inferiore" name="Lower Fabric" tool_tip="Clicca per scegliere una fotografia"/>
+		<color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/>
+	</panel>
+	<accordion name="wearable_accordion">
+		<accordion_tab name="jacket_main_tab" title="Giacca"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_edit_pants.xml b/indra/newview/skins/default/xui/it/panel_edit_pants.xml
new file mode 100644
index 00000000000..cbab711fb1e
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_edit_pants.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_pants_panel">
+	<panel name="avatar_pants_color_panel">
+		<texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere una fotografia"/>
+		<color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/>
+	</panel>
+	<accordion name="wearable_accordion">
+		<accordion_tab name="pants_main_tab" title="Pantaloni"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_edit_pick.xml b/indra/newview/skins/default/xui/it/panel_edit_pick.xml
new file mode 100644
index 00000000000..7f2e82e4ffc
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_edit_pick.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Modifica scelta ????" name="panel_edit_pick">
+	<text name="title">
+		Modifica scelta ????
+	</text>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<icon label="" name="edit_icon" tool_tip="Clicca per selezionare un&apos;immagine"/>
+			<text name="Name:">
+				Titolo:
+			</text>
+			<text name="description_label">
+				Descrizione:
+			</text>
+			<text name="location_label">
+				Luogo:
+			</text>
+			<text name="pick_location">
+				caricando...
+			</text>
+			<button label="Imposta come luogo attuale" name="set_to_curr_location_btn"/>
+		</panel>
+	</scroll_container>
+	<panel label="bottom_panel" name="bottom_panel">
+		<button label="Salva [WHAT]" name="save_changes_btn"/>
+		<button label="Cancella" name="cancel_btn"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_edit_profile.xml b/indra/newview/skins/default/xui/it/panel_edit_profile.xml
index 33f3c367c2e..b9779c77b56 100644
--- a/indra/newview/skins/default/xui/it/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/it/panel_edit_profile.xml
@@ -1,45 +1,48 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel name="edit_profile_panel">
-   <string name="CaptionTextAcctInfo">
-       [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
-   </string>
-   <string name="AcctTypeResident"
-    value="Residente" />
-   <string name="AcctTypeTrial"
-    value="Prova" />
-   <string name="AcctTypeCharterMember"
-    value="Membro privilegiato" />
-   <string name="AcctTypeEmployee"
-    value="Impiegato della Linden Lab" />
-   <string name="PaymentInfoUsed"
-    value="Info. di pagamento usate" />
-   <string name="PaymentInfoOnFile"
-    value="Info. di pagamento in archivio" />
-   <string name="NoPaymentInfoOnFile"
-    value="Nessuna info. di pagamento" />
-   <string name="AgeVerified"
-    value="Età verificata" />
-   <string name="NotAgeVerified"
-    value="Età non verificata" />
-   <string name="partner_edit_link_url">
-       http://www.secondlife.com/account/partners.php?lang=it
-   </string>
-    <panel name="scroll_content_panel">
-    <panel name="data_panel" >
-     <panel name="lifes_images_panel">
-          <panel name="second_life_image_panel">
-              <text name="second_life_photo_title_text">
-			[SECOND_LIFE]:
-              </text>
-          </panel>
-      </panel>
-        <text name="title_partner_text" value="Partner:"/>
-        <panel name="partner_data_panel">
-            <text name="partner_text" value="[FIRST] [LAST]"/>
-         </panel>
-      <text name="text_box3">
-	Risposta agli IM quando sono in &apos;Occupato&apos;:
-      </text>
-    </panel>
-    </panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Modifica del profilo" name="edit_profile_panel">
+	<string name="CaptionTextAcctInfo">
+		[ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
+	</string>
+	<string name="RegisterDateFormat">
+		[REG_DATE] ([ETA&apos;])
+	</string>
+	<string name="AcctTypeResident" value="Residente"/>
+	<string name="AcctTypeTrial" value="Prova"/>
+	<string name="AcctTypeCharterMember" value="Membro privilegiato"/>
+	<string name="AcctTypeEmployee" value="Impiegato della Linden Lab"/>
+	<string name="PaymentInfoUsed" value="Info. di pagamento usate"/>
+	<string name="PaymentInfoOnFile" value="Info. di pagamento in archivio"/>
+	<string name="NoPaymentInfoOnFile" value="Nessuna info. di pagamento"/>
+	<string name="AgeVerified" value="Età verificata"/>
+	<string name="NotAgeVerified" value="Età non verificata"/>
+	<string name="partner_edit_link_url">
+		http://www.secondlife.com/account/partners.php?lang=it
+	</string>
+	<string name="no_partner_text" value="Nessuno"/>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<panel name="data_panel">
+				<panel name="lifes_images_panel">
+					<icon label="" name="2nd_life_edit_icon" tool_tip="Clicca per selezionare un&apos;immagine"/>
+				</panel>
+				<panel name="first_life_image_panel">
+					<text name="real_world_photo_title_text" value="Mondo Reale:"/>
+				</panel>
+				<icon label="" name="real_world_edit_icon" tool_tip="Clicca per selezionare un&apos;immagine"/>
+				<text name="title_homepage_text">
+					Homepage:
+				</text>
+				<check_box label="Mostrami nei risultati della ricerca" name="show_in_search_checkbox"/>
+				<text name="title_acc_status_text" value="Mio Account:"/>
+				<text name="my_account_link" value="[[URL] Vai al mio pannello personale]"/>
+				<text name="acc_status_text" value="Residente. No payment info on file."/>
+				<text name="title_partner_text" value="Mio Partner:"/>
+				<text name="partner_edit_link" value="[[URL] Modifica]"/>
+			</panel>
+		</panel>
+	</scroll_container>
+	<panel name="profile_me_buttons_panel">
+		<button label="Salva le modifiche" name="save_btn"/>
+		<button label="Cancella" name="cancel_btn"/>
+	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_edit_shape.xml b/indra/newview/skins/default/xui/it/panel_edit_shape.xml
new file mode 100644
index 00000000000..f22b393ecd8
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_edit_shape.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_shape_panel">
+	<panel name="avatar_sex_panel">
+		<text name="gender_text">
+			Sesso:
+		</text>
+		<radio_group name="sex_radio">
+			<radio_item label="Femminile" name="radio"/>
+			<radio_item label="Maschile" name="radio2"/>
+		</radio_group>
+	</panel>
+	<accordion name="wearable_accordion">
+		<accordion_tab name="shape_body_tab" title="Corpo"/>
+		<accordion_tab name="shape_head_tab" title="Testa"/>
+		<accordion_tab name="shape_eyes_tab" title="Occhi"/>
+		<accordion_tab name="shape_ears_tab" title="Orecchie"/>
+		<accordion_tab name="shape_nose_tab" title="Naso"/>
+		<accordion_tab name="shape_mouth_tab" title="Bocca"/>
+		<accordion_tab name="shape_chin_tab" title="Mento"/>
+		<accordion_tab name="shape_torso_tab" title="Busto"/>
+		<accordion_tab name="shape_legs_tab" title="Gambe"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_edit_shirt.xml b/indra/newview/skins/default/xui/it/panel_edit_shirt.xml
new file mode 100644
index 00000000000..5d902ae40b3
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_edit_shirt.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_shirt_panel">
+	<panel name="avatar_shirt_color_panel">
+		<texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere una foto"/>
+		<color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/>
+	</panel>
+	<accordion name="wearable_accordion">
+		<accordion_tab name="shirt_main_tab" title="Camicia"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_edit_shoes.xml b/indra/newview/skins/default/xui/it/panel_edit_shoes.xml
new file mode 100644
index 00000000000..bd1fa5b16d2
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_edit_shoes.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_shoes_panel">
+	<panel name="avatar_shoes_color_panel">
+		<texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere una fotografia"/>
+		<color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/>
+	</panel>
+	<accordion name="wearable_accordion">
+		<accordion_tab name="shoes_main_tab" title="Scarpe"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_edit_skin.xml b/indra/newview/skins/default/xui/it/panel_edit_skin.xml
new file mode 100644
index 00000000000..2fa76d4afc1
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_edit_skin.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_skin_panel">
+	<panel name="avatar_skin_color_panel">
+		<texture_picker label="Tatuaggi Testa" name="Head Tattoos" tool_tip="Clicca per scegliere un&apos;immagine"/>
+		<texture_picker label="Tatuaggi superiori" name="Upper Tattoos" tool_tip="Clicca per scegliere un&apos;immagine"/>
+		<texture_picker label="Tatuaggi inferiori" name="Lower Tattoos" tool_tip="Clicca per scegliere un&apos;immagine"/>
+	</panel>
+	<accordion name="wearable_accordion">
+		<accordion_tab name="skin_color_tab" title="Colore della pelle"/>
+		<accordion_tab name="skin_face_tab" title="Dettagli del Viso"/>
+		<accordion_tab name="skin_makeup_tab" title="Trucco"/>
+		<accordion_tab name="skin_body_tab" title="Dettagli del Corpo"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_edit_skirt.xml b/indra/newview/skins/default/xui/it/panel_edit_skirt.xml
new file mode 100644
index 00000000000..e036fff67ef
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_edit_skirt.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_skirt_panel">
+	<panel name="avatar_skirt_color_panel">
+		<texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere una fotografia"/>
+		<color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/>
+	</panel>
+	<accordion name="wearable_accordion">
+		<accordion_tab name="skirt_main_tab" title="Gonna"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_edit_socks.xml b/indra/newview/skins/default/xui/it/panel_edit_socks.xml
new file mode 100644
index 00000000000..1d1eb4bd3a7
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_edit_socks.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_socks_panel">
+	<panel name="avatar_socks_color_panel">
+		<texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere una foto"/>
+		<color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/>
+	</panel>
+	<accordion name="wearable_accordion">
+		<accordion_tab name="socks_main_tab" title="Calze"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/it/panel_edit_tattoo.xml
new file mode 100644
index 00000000000..5435a28ff91
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_edit_tattoo.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_tattoo_panel">
+	<panel name="avatar_tattoo_color_panel">
+		<texture_picker label="Tatuaggio sulla testa" name="Head Tattoo" tool_tip="Clicca per scegliere una foto"/>
+		<texture_picker label="Tatuaggio superiore" name="Upper Tattoo" tool_tip="Clicca per scegliere una foto"/>
+		<texture_picker label="Tatuaggio inferiore" name="Lower Tattoo" tool_tip="Clicca per scegliere una foto"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_edit_underpants.xml b/indra/newview/skins/default/xui/it/panel_edit_underpants.xml
new file mode 100644
index 00000000000..ca2ba3ca011
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_edit_underpants.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_underpants_panel">
+	<panel name="avatar_underpants_color_panel">
+		<texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere una fotografia"/>
+		<color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/>
+	</panel>
+	<accordion name="wearable_accordion">
+		<accordion_tab name="underpants_main_tab" title="Slip"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/it/panel_edit_undershirt.xml
new file mode 100644
index 00000000000..cf44dad464f
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_edit_undershirt.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_undershirt_panel">
+	<panel name="avatar_undershirt_color_panel">
+		<texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere una fotografia"/>
+		<color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/>
+	</panel>
+	<accordion name="wearable_accordion">
+		<accordion_tab name="undershirt_main_tab" title="Maglietta intima"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_edit_wearable.xml b/indra/newview/skins/default/xui/it/panel_edit_wearable.xml
new file mode 100644
index 00000000000..baf585dad06
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_edit_wearable.xml
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Indossabile" name="panel_edit_wearable">
+	<string name="edit_shape_title">
+		Modifica la Shape
+	</string>
+	<string name="edit_skin_title">
+		Modifica la Skin
+	</string>
+	<string name="edit_hair_title">
+		Modifica capelli
+	</string>
+	<string name="edit_eyes_title">
+		Modifica occhi
+	</string>
+	<string name="edit_shirt_title">
+		Modifica camicia
+	</string>
+	<string name="edit_pants_title">
+		Modifica pantaloni
+	</string>
+	<string name="edit_shoes_title">
+		Modifica scarpe
+	</string>
+	<string name="edit_socks_title">
+		Modifica calze
+	</string>
+	<string name="edit_jacket_title">
+		Modifica Giacca
+	</string>
+	<string name="edit_skirt_title">
+		Modifica gonna
+	</string>
+	<string name="edit_gloves_title">
+		Modifica guanti
+	</string>
+	<string name="edit_undershirt_title">
+		Modifica maglietta intima
+	</string>
+	<string name="edit_underpants_title">
+		Modifica slip
+	</string>
+	<string name="edit_alpha_title">
+		Modifica Alpha Mask
+	</string>
+	<string name="edit_tattoo_title">
+		Modifica tatuaggio
+	</string>
+	<string name="shape_desc_text">
+		Shape:
+	</string>
+	<string name="skin_desc_text">
+		Skin:
+	</string>
+	<string name="hair_desc_text">
+		Capelli:
+	</string>
+	<string name="eyes_desc_text">
+		Occhi:
+	</string>
+	<string name="shirt_desc_text">
+		Camicia:
+	</string>
+	<string name="pants_desc_text">
+		Pantaloni:
+	</string>
+	<string name="shoes_desc_text">
+		Scarpe:
+	</string>
+	<string name="socks_desc_text">
+		Calze:
+	</string>
+	<string name="jacket_desc_text">
+		Giacca:
+	</string>
+	<string name="skirt_skirt_desc_text">
+		Giacca:
+	</string>
+	<string name="gloves_desc_text">
+		Guanti:
+	</string>
+	<string name="undershirt_desc_text">
+		Maglietta intima:
+	</string>
+	<string name="underpants_desc_text">
+		Slip:
+	</string>
+	<string name="alpha_desc_text">
+		Alpha Mask
+	</string>
+	<string name="tattoo_desc_text">
+		Tatuaggio:
+	</string>
+	<text name="edit_wearable_title" value="Modifica Shape"/>
+	<panel label="Camicia" name="wearable_type_panel">
+		<text name="description_text" value="Shape:"/>
+	</panel>
+	<panel name="button_panel">
+		<button label="Salva con nome" name="save_as_button"/>
+		<button label="Ripristina" name="revert_button"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_friends.xml b/indra/newview/skins/default/xui/it/panel_friends.xml
index e2eb3dd6e76..a3a985f5aa6 100644
--- a/indra/newview/skins/default/xui/it/panel_friends.xml
+++ b/indra/newview/skins/default/xui/it/panel_friends.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="friends">
 	<string name="Multiple">
-		Amici multipli...
+		Amici multipli
 	</string>
 	<scroll_list name="friend_list" tool_tip="Tieni premuto shift o control mentre clicchi per selezionare più di un amico">
 		<column name="icon_online_status" tool_tip="Stato Online"/>
@@ -13,8 +13,8 @@
 	</scroll_list>
 	<button label="IM/Chiama" name="im_btn" tool_tip="Apri una sessione di IM - Messaggio Privato"/>
 	<button label="Profilo" name="profile_btn" tool_tip="Mostra foto, gruppi, ed altre informazioni"/>
-	<button label="Teleport..." name="offer_teleport_btn" tool_tip="Offri a questo amico un teleport per dove sei tu ora"/>
-	<button label="Paga..." name="pay_btn" tool_tip="Dai Linden dollar (L$) a questo amico"/>
-	<button label="Rimuovi..." name="remove_btn" tool_tip="Rimuovi questa persona dalla tua lista amici"/>
-	<button label="Aggiungi..." name="add_btn" tool_tip="Offri amicizia ad un residente"/>
+	<button label="Teleport" name="offer_teleport_btn" tool_tip="Offri a questo amico un teleport per dove sei tu ora"/>
+	<button label="Paga" name="pay_btn" tool_tip="Dai Linden dollar (L$) a questo amico"/>
+	<button label="Rimuovi" name="remove_btn" tool_tip="Rimuovi questa persona dalla tua lista amici"/>
+	<button label="Aggiungi" name="add_btn" tool_tip="Offri amicizia ad un residente"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_group_control_panel.xml b/indra/newview/skins/default/xui/it/panel_group_control_panel.xml
new file mode 100644
index 00000000000..c2bceaeef60
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_group_control_panel.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+	<button label="Profilo del Gruppo" name="group_info_btn"/>
+	<panel name="panel_call_buttons">
+		<button label="Chiama Gruppo" name="call_btn"/>
+		<button label="Chiudi Chiamata" name="end_call_btn"/>
+		<button label="Apri Controlli Voice" name="voice_ctrls_btn"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_group_general.xml b/indra/newview/skins/default/xui/it/panel_group_general.xml
index 2bc4d820828..0ca1ce20642 100644
--- a/indra/newview/skins/default/xui/it/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/it/panel_group_general.xml
@@ -1,72 +1,37 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Generale" name="general_tab">
-	<string name="help_text">
-		Il pannello &apos;Generale&apos; contiene informazioni generali riguardanti il gruppo, un elenco dei proprietari e i membri visibili, le preferenze generali di gruppo e le opzioni dei membri.
+	<panel.string name="help_text">
+		La tabella generale contiene informazioni generali su questo gruppo, lista dei membri, preferenze generali del gruppo e opzioni dei membri.
 
-Passa il mouse sulle opzioni per un aiuto aggiuntivo.
-	</string>
-	<string name="group_info_unchanged">
-		Le informazioni generali del gruppo sono cambiate.
-	</string>
-	<button label="?" label_selected="?" name="help_button"/>
-	<line_editor label="Scrivi il nome del nuovo gruppo qui" name="group_name_editor"/>
-	<text name="group_name">
-		Scrivi il nome del nuovo gruppo qui
-	</text>
-	<text name="prepend_founded_by">
-		Fondato da
-	</text>
-	<text name="founder_name">
-		(attendi)
-	</text>
-	<text name="group_charter_label">
-		Statuto del gruppo
-	</text>
-	<texture_picker label="Immagine del gruppo" name="insignia" tool_tip="Clicca per scegliere una immagine"/>
+Muovi il tuo mouse sopra le opzioni per maggior aiuto.
+	</panel.string>
+	<panel.string name="group_info_unchanged">
+		Le informazioni generali sul gruppo sono cambiate
+	</panel.string>
+	<panel.string name="incomplete_member_data_str">
+		Rilevando i dati dei membri
+	</panel.string>
 	<text_editor name="charter">
 		Statuto del gruppo
 	</text_editor>
-	<button label="Unisciti (0 L$)" label_selected="Unisciti (0 L$)" name="join_button"/>
-	<button label="Visualizza dettagli" label_selected="Visualizza dettagli" name="info_button"/>
-	<text name="text_owners_and_visible_members">
-		Proprietari &amp; Membri visibili
-	</text>
-	<text name="text_owners_are_shown_in_bold">
-		(I proprietari sono scritti in neretto)
-	</text>
 	<name_list name="visible_members">
-		<name_list.columns label="Nome del membro" name="name"/>
+		<name_list.columns label="Membro" name="name"/>
 		<name_list.columns label="Titolo" name="title"/>
-		<name_list.columns label="Ultimo login" name="online"/>
 	</name_list>
-	<text name="text_group_preferences">
-		Preferenze di gruppo
+	<text name="active_title_label">
+		Mio Titolo
 	</text>
+	<combo_box name="active_title" tool_tip="Imposta il titolo nella tag del tuo avatar quando questo gruppo è attivo."/>
+	<check_box label="Ricevi notice dal gruppo" name="receive_notices" tool_tip="Imposta se vuoi ricevere Notice da questo. De-seleziona questa casella se il gruppo ti manda spam."/>
+	<check_box label="Mostra nel mio Profilo" name="list_groups_in_profile" tool_tip="Imposta se vuoi mostrare questo gruppo nel tuo profilo"/>
 	<panel name="preferences_container">
-		<check_box label="Mostra nella ricerca" name="show_in_group_list" tool_tip="Lascia che i residenti vedano questo gruppo nella ricerca."/>
-		<check_box label="Iscrizione libera" name="open_enrollement" tool_tip="Imposta se questo gruppo permette ai nuovi membri di unirsi senza essere invitati."/>
-		<check_box label="Tassa di iscrizione:" name="check_enrollment_fee" tool_tip="Imposta se richiedere una tassa di iscrizione per unirsi al gruppo."/>
-		<spinner width="60" left_delta="136" name="spin_enrollment_fee" tool_tip="I nuovi membri devono pagare questa tassa per unirsi al gruppo. La tassa di iscrizione è selezionata."/>
+		<check_box label="Iscrizione libera" name="open_enrollement" tool_tip="Imposta se questo gruppo permette ai nuovi membri di aderire senza essere invitati."/>
+		<check_box label="Tassa d&apos;iscrizione" name="check_enrollment_fee" tool_tip="Imposta se richiedere una tassa d&apos;iscrizione per aderire al gruppo"/>
+		<spinner label="L$" left_delta="136" name="spin_enrollment_fee" tool_tip="I nuovi membri devono pagare questa tassa d&apos;iscrizione quando tassa d&apos;iscrizione è selezionata." width="60"/>
 		<combo_box name="group_mature_check" tool_tip="Imposta se le informazioni sul tuo gruppo sono da considerarsi Mature.">
-			<combo_box.item name="select_mature" label="- Seleziona -"/>
-			<combo_box.item name="mature" label="Contenuto Mature"/>
-			<combo_box.item name="pg" label="Contenuto PG"/>
+			<combo_box.item label="Contenuto PG" name="pg"/>
+			<combo_box.item label="Contenuto Mature" name="mature"/>
 		</combo_box>
-		<panel name="title_container">
-			<text name="active_title_label">
-				Il mio titolo attivo
-			</text>
-			<combo_box name="active_title" tool_tip="Imposta il titolo che appare sulla testa del tuo avatar quando il gruppo è attivo."/>
-		</panel>
-		<check_box label="Ricevi avvisi dal gruppo" name="receive_notices" tool_tip="Imposta se vuoi ricevere avvisi da questo gruppo.   Togli la spunta da questa casella se questo gruppo ti sta spammando."/>
-		<check_box label="Elenca il gruppo nel mio profilo" name="list_groups_in_profile" tool_tip="Imposta se vuoi elencare questo gruppo nel tuo profilo"/>
+		<check_box initial_value="true" label="Mostra nella ricerca" name="show_in_group_list" tool_tip="Permetti alle persone di vedere questo gruppo nei risultati del Cerca"/>
 	</panel>
-	<string name="incomplete_member_data_str">
-		Rilevando i dati dei membri
-	</string>
-	<string name="confirm_group_create_str">
-		Creare questo gruppo ti costerà 100 L$. 
-Sei davvero, davvero, DAVVERO sicuro che vuoi spendere 100 L$ per creare questo gruppo?
-Fai attenzione che se nessun altro viene unito al gruppo entro 48 ore, questo gruppo verrà dismesso e il nome del gruppo non sarà più disponibile in futuro.
-	</string>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/it/panel_group_info_sidetray.xml
new file mode 100644
index 00000000000..26255943ed6
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_group_info_sidetray.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Informazioni sul gruppo" name="GroupInfo">
+	<panel.string name="default_needs_apply_text">
+		Ci sono variazioni non salvate nella tabella attuale
+	</panel.string>
+	<panel.string name="want_apply_text">
+		Vuoi salvare queste variazioni?
+	</panel.string>
+	<panel.string name="group_join_btn">
+		Aderisci (L$[AMOUNT])
+	</panel.string>
+	<panel.string name="group_join_free">
+		Gratis
+	</panel.string>
+	<text name="group_name" value="(Caricando...)"/>
+	<line_editor label="Scrivi qui il nuovo nome del tuo gruppo" name="group_name_editor"/>
+	<texture_picker label="" name="insignia" tool_tip="Clicca per scegliere uan fotografia"/>
+	<text name="prepend_founded_by">
+		Fondatore:
+	</text>
+	<name_box initial_value="(recuperando)" name="founder_name"/>
+	<text name="join_cost_text">
+		Gratis
+	</text>
+	<button label="ADERISCI ORA!" name="btn_join"/>
+	<accordion name="groups_accordion">
+		<accordion_tab name="group_general_tab" title="Generale"/>
+		<accordion_tab name="group_roles_tab" title="Ruoli"/>
+		<accordion_tab name="group_notices_tab" title="Notice"/>
+		<accordion_tab name="group_land_tab" title="Terra/Beni ?????"/>
+	</accordion>
+	<panel name="button_row">
+		<button label="Crea" label_selected="Nuovo gruppo" name="btn_create"/>
+		<button label="Salva" label_selected="Salva" name="btn_apply"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_group_invite.xml b/indra/newview/skins/default/xui/it/panel_group_invite.xml
index cc426f7cd24..643d6b05fd5 100644
--- a/indra/newview/skins/default/xui/it/panel_group_invite.xml
+++ b/indra/newview/skins/default/xui/it/panel_group_invite.xml
@@ -1,23 +1,29 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Invita una persona" name="invite_panel">
+	<panel.string name="confirm_invite_owner_str">
+		Sei sicuro di voler invitare nuovi capogruppo? Questa azione è irrevocabile!
+	</panel.string>
+	<panel.string name="loading">
+		(Attendi...)
+	</panel.string>
+	<panel.string name="already_in_group">
+		Alcuni avatars sono già nel gruppo e non erano stati invitati.
+	</panel.string>
 	<text name="help_text">
 		Puoi selezionare più di un residente 
 da invitare nel tuo gruppo. Clicca su
 &apos;Scelta residenti&apos; per iniziare.
 	</text>
 	<button label="Scelta residenti" name="add_button" tool_tip=""/>
-	<name_list name="invitee_list" tool_tip="Tieni premuto il tasto ctrl e clicca i nomi dei residenti per avere una selezione multipla."/>
-	<button label="Rimuovi i selezionati dall&apos;elenco" name="remove_button" tool_tip="Rimuove i residenti qui sopra selezionati, dall&apos;elenco degli inviti."/>
+	<name_list name="invitee_list" tool_tip="Tieni premuto il tasto Ctrl e clicca il nome dei residenti per una multi-selezione"/>
+	<button label="Rimuovi i selezionati dall&apos;elenco" name="remove_button" tool_tip="Rimuovi i residenti selezionati dalla lista invito"/>
 	<text name="role_text">
 		Scegli che ruolo assegnare loro:
 	</text>
-	<combo_box name="role_name" tool_tip="Scegli dall&apos;elenco dei ruoli che tu sei abilitato ad assegnare."/>
+	<combo_box name="role_name" tool_tip="Choose from the list of Roles you are allowed to assign members to"/>
 	<button label="Manda gli inviti" name="ok_button"/>
 	<button label="Annulla" name="cancel_button"/>
-	<string name="confirm_invite_owner_str">
-		Sei sicuro di voler invitare nuovi capogruppo? Questa azione è irrevocabile!
-	</string>
-	<string name="loading">
-		(Attendi...)
+	<string name="GroupInvitation">
+		Invito del Gruppo
 	</string>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_group_land_money.xml b/indra/newview/skins/default/xui/it/panel_group_land_money.xml
index 3e6684ed062..a532e7a5757 100644
--- a/indra/newview/skins/default/xui/it/panel_group_land_money.xml
+++ b/indra/newview/skins/default/xui/it/panel_group_land_money.xml
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Terra &amp; L$" name="land_money_tab">
 	<string name="help_text">
-		I terreni di proprietà del gruppo sono elencati insieme ai dettagli delle contribuzioni. Un avviso viene visualizzato se la superficie totale in uso è inferiore o pari al totale delle contribuzioni. Le schede: Pianificazione, Dettagli e Vendite forniscono informazioni sulle finanze del gruppo.
+		Appare un avviso fino a quando la Terra Totale in Uso è meno o = alla Contribuzione Totale.
 	</string>
 	<button label="?" name="help_button"/>
 	<string name="cant_view_group_land_text">
-		Non hai i permessi necessari per visualizzare la terra posseduta dal gruppo.
+		Non hai i permessi per vedere la terra posseduta dal gruppo
 	</string>
 	<string name="cant_view_group_accounting_text">
-		Non hai i permessi necessari per visualizzare i movimenti finanziari del gruppo.
+		Non hai i permessi per vedere le informazioni sulla contabilità del gruppo.
 	</string>
 	<string name="loading_txt">
 		Attendi...
@@ -17,14 +17,14 @@
 		Terra posseduta dal gruppo
 	</text>
 	<scroll_list name="group_parcel_list">
-		<column label="Nome dell&apos;appezzamento" name="name"/>
+		<column label="Parcel" name="name"/>
 		<column label="Regione" name="location"/>
 		<column label="Tipo" name="type"/>
 		<column label="Area" name="area"/>
 	</scroll_list>
-	<button label="Mostra sulla mappa" label_selected="Mostra sulla mappa" name="map_button" left="282" width="130"/>
+	<button label="Mappa" label_selected="Mappa" left="282" name="map_button" width="130"/>
 	<text name="total_contributed_land_label">
-		Total Contribution:
+		Contribuzione Totale:
 	</text>
 	<text name="total_contributed_land_value">
 		[AREA] m²
@@ -36,49 +36,48 @@
 		[AREA] m²
 	</text>
 	<text name="land_available_label">
-		Terra disponibile:
+		Terreno disponibile:
 	</text>
 	<text name="land_available_value">
 		[AREA] m²
 	</text>
 	<text name="your_contribution_label">
-		Il tuo contributo:
+		La tua contribuzione:
 	</text>
 	<string name="land_contrib_error">
-		Non è possibile impostare i tuoi contributi in terra.
+		Incapace di impostare la tua contribuzione di terreno
 	</string>
 	<text name="your_contribution_units">
-		( m² )
+		m²
 	</text>
 	<text name="your_contribution_max_value">
-		([AMOUNT] massimo)
+		([IMPORTO] max)
 	</text>
 	<text name="group_over_limit_text">
-		I membri del gruppo devono contribuire con più crediti per mantenere
-la quantità  di terra in uso.
+		Sono necessari maggiori crediti di terreno per mantenere la terra in uso
 	</text>
 	<text name="group_money_heading">
 		L$ del gruppo
 	</text>
 	<tab_container name="group_money_tab_container">
-		<panel label="Pianificazione" name="group_money_planning_tab">
+		<panel label="PIANIFICAZIONE" name="group_money_planning_tab">
 			<text_editor name="group_money_planning_text">
-				Conteggio...
+				Caricando...
 			</text_editor>
 		</panel>
-		<panel label="Dettagli" name="group_money_details_tab">
+		<panel label="DETTAGLI" name="group_money_details_tab">
 			<text_editor name="group_money_details_text">
-				Calcolo...
+				Caricando...
 			</text_editor>
-			<button width="90" label="&lt; Precedente" label_selected="&lt; Precedente" name="earlier_details_button" tool_tip="Vai ai dettagli precedenti"/>
-			<button left_delta="260" width="90" label="Successivo &gt;" label_selected="Successivo &gt;" name="later_details_button" tool_tip="Vai ai dettagli successivi"/>
+			<button label="&lt; Precedente" label_selected="&lt; Precedente" name="earlier_details_button" tool_tip="Indietro" width="90"/>
+			<button label="Successivo &gt;" label_selected="Successivo &gt;" left_delta="260" name="later_details_button" tool_tip="Prossimo" width="90"/>
 		</panel>
-		<panel label="Vendite" name="group_money_sales_tab">
+		<panel label="VENDITE" name="group_money_sales_tab">
 			<text_editor name="group_money_sales_text">
-				Calcolo...
+				Caricando...
 			</text_editor>
-			<button width="90" label="&lt; Precedente" label_selected="&lt; Precedente" name="earlier_sales_button" tool_tip="Vai ai dettagli precedenti"/>
-			<button left_delta="260" width="90" label="Successivo &gt;" label_selected="Successivo &gt;" name="later_sales_button" tool_tip="Vai ai dettagli successivi"/>
+			<button label="&lt; Precedente" label_selected="&lt; Precedente" name="earlier_sales_button" tool_tip="Indietro" width="90"/>
+			<button label="Successivo &gt;" label_selected="Successivo &gt;" left_delta="260" name="later_sales_button" tool_tip="Prossimo" width="90"/>
 		</panel>
 	</tab_container>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_group_list_item.xml b/indra/newview/skins/default/xui/it/panel_group_list_item.xml
new file mode 100644
index 00000000000..3e5419d1bbe
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_group_list_item.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="group_list_item">
+	<text name="group_name" value="Sconosciuto"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_group_notices.xml b/indra/newview/skins/default/xui/it/panel_group_notices.xml
index c6ef84e220d..dbeb9d56ffc 100644
--- a/indra/newview/skins/default/xui/it/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/it/panel_group_notices.xml
@@ -1,58 +1,55 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Notice" name="notices_tab">
-	<string name="help_text">
+	<panel.string name="help_text">
 		Le notice sono un modo veloce per comunicare in un gruppo diffondendo un messaggio e recapitando un eventuale oggetto allegato. Le notice arrivano solo ai membri del gruppo il cui ruolo è abilitato a riceverli.
 Puoi disattivare la ricezione delle notice nella finestra principale.
-	</string>
-	<string name="no_notices_text">
-		Non ci sono vecchie notice.
-	</string>
-	<button label="?" label_selected="?" name="help_button"/>
-	<text name="lbl">
-		Archivio delle notice del gruppo
-	</text>
+	</panel.string>
+	<panel.string name="no_notices_text">
+		Non ci sono vecchie Notice
+	</panel.string>
 	<text name="lbl2">
-		Le notice sono conservate per 14 giorni. Il numero delle notice è limitato a 200 notice per gruppo al giorno.
+		Le Notice sono conservate per 14 giorni.
+Massimo 200 per gruppo al giorno
 	</text>
 	<scroll_list name="notice_list">
-		<column label="Oggetto" name="subject"/>
-		<column label="Da" name="from"/>
-		<column label="Data" name="date"/>
+		<scroll_list.columns label="Oggetto" name="subject"/>
+		<scroll_list.columns label="Da" name="from"/>
+		<scroll_list.columns label="Data" name="date"/>
 	</scroll_list>
 	<text name="notice_list_none_found">
-		Nessuna notice trovata.
+		Nessuna trovata
 	</text>
-	<button label="Crea una nuova notice" label_selected="Crea una nuova notice" name="create_new_notice"/>
-	<button label="Aggiorna" label_selected="Aggiorna l&apos;elenco" name="refresh_notices"/>
+	<button label="Crea una nuova notice" label_selected="Crea una nuova notice" name="create_new_notice" tool_tip="Crea una nuova notice"/>
+	<button label="Aggiorna" label_selected="Aggiorna l&apos;elenco" name="refresh_notices" tool_tip="Aggiorna la lista delle notice"/>
 	<panel label="Crea una nuova notice" name="panel_create_new_notice">
 		<text name="lbl">
 			Crea una notice
 		</text>
-		<text name="lbl2">
-			Puoi aggiungere un solo allegato alla notice trascinandolo dal tuo inventario in questa finestra. L&apos;allegato deve essere copiabile e cedibile, e non puoi allegare una cartella.
-		</text>
-		<text name="lbl3" left="20">
+		<text left="20" name="lbl3">
 			Oggetto:
 		</text>
-		<line_editor name="create_subject" width="251" left_delta="61"/>
-		<text name="lbl4" left="15" width="60">
+		<line_editor left_delta="61" name="create_subject" width="251"/>
+		<text left="15" name="lbl4" width="60">
 			Messaggio:
 		</text>
-		<text_editor name="create_message" left_delta="66" width="330"/>
+		<text_editor left_delta="66" name="create_message" width="330"/>
 		<text name="lbl5" width="68">
 			Allega:
 		</text>
-		<line_editor name="create_inventory_name" width="190" left_delta="74"/>
-		<button label="Rimuovi allegato" label_selected="Rimuovi allegato" name="remove_attachment"/>
-		<button label="Invia" label_selected="Invia" name="send_notice"/>
-		<panel name="drop_target" tool_tip="Trascina un oggetto dall&apos;inventario sulla casella del messaggio per inviarlo con la notice. Devi avere il permesso di copia e trasferimento dell&apos;oggetto per poterlo inviare con la notice."/>
+		<line_editor left_delta="74" name="create_inventory_name" width="190"/>
+		<text name="string">
+			Trascina e rilascia qui l&apos;oggetto da allegare:
+		</text>
+		<button label="Rimuovi" label_selected="Rimuovi allegato" name="remove_attachment"/>
+		<button label="Spedisci" label_selected="Spedisci" name="send_notice"/>
+		<group_drop_target name="drop_target" tool_tip="Trascina un oggetto dall&apos;inventario nello spazio ALLEGA per spedirlo con la notice. Devi avere i permessi copy e transfer relativi all&apos;oggetto da allegare."/>
 	</panel>
 	<panel label="Vedi le notice precedenti" name="panel_view_past_notice">
 		<text name="lbl">
 			Notice archiviate
 		</text>
 		<text name="lbl2">
-			Per mandare una nuova notice, clicca &apos;Crea una nuova notice&apos; qui sopra.
+			Per spedire una nuova notice, clicca il bottone +
 		</text>
 		<text name="lbl3">
 			Oggetto:
@@ -60,6 +57,6 @@ Puoi disattivare la ricezione delle notice nella finestra principale.
 		<text name="lbl4">
 			Messaggio:
 		</text>
-		<button label="Apri l&apos;allegato" label_selected="Apri l&apos;allegato" name="open_attachment"/>
+		<button label="Apri allegato" label_selected="Apri l&apos;allegato" name="open_attachment"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_group_notify.xml b/indra/newview/skins/default/xui/it/panel_group_notify.xml
new file mode 100644
index 00000000000..de6b139793e
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_group_notify.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="instant_message" name="panel_group_notify">
+	<panel label="header" name="header">
+		<text name="title" value="Nome di chi spedisce / Nome del Gruppo"/>
+	</panel>
+	<text name="attachment" value="Attachment"/>
+	<button label="Ok" name="btn_ok"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_group_roles.xml b/indra/newview/skins/default/xui/it/panel_group_roles.xml
index 8dfdd5a46eb..bc98fdacaf9 100644
--- a/indra/newview/skins/default/xui/it/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/it/panel_group_roles.xml
@@ -1,103 +1,60 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Membri &amp; Ruoli" name="roles_tab">
-	<string name="default_needs_apply_text">
-		Ci sono modifiche non applicate nella scheda attuale.
-	</string>
-	<string name="want_apply_text">
-		Vuoi applicare questi cambiamenti?
-	</string>
-	<button label="?" name="help_button"/>
-	<panel name="members_header">
-		<text name="static">
-			Membri &amp; Ruoli
-		</text>
-		<text name="static2">
-			I membri del Gruppo hanno ricevuto ruoli con delle abilità. Queste
-impostazioni possono essere facilmente personalizzate, permettendo 
-una maggiore organizzazione e flessibilità.
-		</text>
-	</panel>
-	<panel name="roles_header">
-		<text name="static">
-			Ruoli
-		</text>
-		<text name="role_properties_modifiable">
-			Seleziona un ruolo qui sotto. È possibile modificarne il nome,
-la descrizione e il titolo.
-		</text>
-		<text name="role_properties_not_modifiable">
-			Seleziona un ruolo qui sotto per vederne le proprietà, i membri
-e i permessi abilitati.
-		</text>
-		<text bottom_delta="-28" name="role_actions_modifiable">
-			Puoi anche assegnare abilità al ruolo.
-		</text>
-		<text name="role_actions_not_modifiable">
-			Puoi vedere, ma non modificare, le abilità assegnate.
-		</text>
-	</panel>
-	<panel name="actions_header">
-		<text name="static">
-			Abilità
-		</text>
-		<text name="static2">
-			Puoi vedere la descrizione delle abilità e quali ruoli e membri possono
-eseguire tali abilità.
-		</text>
-	</panel>
+	<panel.string name="default_needs_apply_text">
+		Ci sono modifiche non salvate nella scheda attuale
+	</panel.string>
+	<panel.string name="want_apply_text">
+		Vuoi salvare queste modifiche?
+	</panel.string>
 	<tab_container height="164" name="roles_tab_container">
-		<panel height="148" label="Membri" name="members_sub_tab" tool_tip="Membri">
-			<line_editor bottom="127" name="search_text"/>
-			<button label="Cerca" name="search_button" width="75"/>
-			<button label="Mostra tutti" name="show_all_button" left_delta="80"/>
-			<name_list name="member_list" bottom_delta="-105" height="104" >
-				<column label="Nome del membro" name="name"/>
-				<column label="Contributo donato" name="donated"/>
-				<column label="Ultimo accesso" name="online"/>
-			</name_list>
-			<button label="Invita un nuovo membro..." name="member_invite" width="165"/>
-			<button label="Espellere dal gruppo" name="member_eject"/>
-			<string name="help_text">
+		<panel height="148" label="MEMBRI" name="members_sub_tab" tool_tip="Membri">
+			<panel.string name="help_text">
 				Puoi aggiungere o rimuovere i ruoli assegnati ai membri. 
 Seleziona più membri tenendo premuto il tasto Ctrl e 
 cliccando sui loro nomi.
-			</string>
+			</panel.string>
+			<filter_editor label="Filtra Membri" name="filter_input"/>
+			<name_list bottom_delta="-105" height="104" name="member_list">
+				<name_list.columns label="Nome del Membro" name="name"/>
+				<name_list.columns label="Donazioni" name="donated"/>
+				<name_list.columns label="Status" name="online"/>
+			</name_list>
+			<button label="Invita" name="member_invite" width="165"/>
+			<button label="Espelli" name="member_eject"/>
 		</panel>
-		<panel height="148" label="Ruoli" name="roles_sub_tab">
-			<line_editor bottom="127" name="search_text"/>
-			<button label="Cerca" name="search_button" width="75"/>
-			<button label="Mostra tutti" name="show_all_button" left_delta="80"/>
-			<scroll_list name="role_list" bottom_delta="-104" height="104">
-				<column label="Nome del ruolo" name="name"/>
-				<column label="Titolo" name="title"/>
-				<column label="Membri" name="members"/>
+		<panel height="148" label="RUOLI" name="roles_sub_tab">
+			<panel.string name="help_text">
+				I ruoli hanno un titolo con un elenco di abilità permesse che i membri possono eseguire.
+				I membri possono avere uno o più ruoli. Un gruppo può avere fino a 10 ruoli, inclusi il ruolo base o &quot;Membro&quot; e
+				il ruolo del Capogruppo.
+			</panel.string>
+			<panel.string name="cant_delete_role">
+				I Ruoli &apos;Everyone&apos; e &apos;Owners&apos; sono speciali e non possono essere cancellati.
+			</panel.string>
+			<panel.string name="power_folder_icon">
+				Cartella Inventario chiusa
+			</panel.string>
+			<filter_editor label="Filtra i ruoli" name="filter_input"/>
+			<scroll_list bottom_delta="-104" height="104" name="role_list">
+				<scroll_list.columns label="Ruolo" name="name"/>
+				<scroll_list.columns label="Titolo" name="title"/>
+				<scroll_list.columns label="#" name="members"/>
 			</scroll_list>
-			<button label="Crea un nuovo ruolo..." name="role_create"/>
+			<button label="Crea nuovo ruolo" name="role_create"/>
 			<button label="Elimina ruolo" name="role_delete"/>
-			<string name="help_text">
-				I ruoli hanno un titolo e un elenco di abilità permesse 
-che i membri possono eseguire. I membri possono appartenere a 
-uno o più ruoli. Un gruppo può avere fino a 10 ruoli, 
-compresi il ruolo base o &apos;Membro&apos; e il ruolo del Capogruppo.
-			</string>
-			<string name="cant_delete_role">
-				I ruoli &apos;Membro&apos; e &apos;Capogruppo&apos; sono ruoli speciali e non possono essere eliminati.
-			</string>
 		</panel>
-		<panel height="148" label="Abilità" name="actions_sub_tab">
-			<line_editor bottom="127" name="search_text"/>
-			<button label="Cerca" name="search_button" width="75"/>
-			<button label="Visualizza tutto" name="show_all_button" left_delta="80"/>
-			<scroll_list bottom_delta="-120" height="118" name="action_list" tool_tip="Seleziona una abilità per vederne maggiori dettagli."/>
-			<string name="help_text">
+		<panel height="148" label="ABILITA&apos;" name="actions_sub_tab" tool_tip="Puoi vedere la descrizione dell&apos;abilità e quali Ruoli o Membri possono eseguirla.">
+			<panel.string name="help_text">
 				Le abilità permettono ai membri nei ruoli di fare cose specifiche
 in questo gruppo. C&apos;è una vasta gamma di abilità.
-			</string>
+			</panel.string>
+			<filter_editor label="Filtra Abilità" name="filter_input"/>
+			<scroll_list bottom_delta="-120" height="118" name="action_list" tool_tip="Seleziona un&apos;abilità per vedere maggiori dettagli."/>
 		</panel>
 	</tab_container>
 	<panel name="members_footer">
 		<text name="static">
-			Ruoli assegnati
+			Membri assegnati
 		</text>
 		<text name="static2">
 			Abilità permesse
@@ -106,44 +63,44 @@ in questo gruppo. C&apos;è una vasta gamma di abilità.
 	</panel>
 	<panel name="roles_footer">
 		<text name="static">
-			Nome
-		</text>
-		<text name="static2">
-			Descrizione
+			Nome del Ruolo
 		</text>
 		<line_editor name="role_name">
 			Addetti
 		</line_editor>
 		<text name="static3">
-			Titolo
+			Titolo del Ruolo
 		</text>
 		<line_editor name="role_title">
 			(attendi)
 		</line_editor>
+		<text name="static2">
+			Descrizione
+		</text>
 		<text_editor name="role_description">
 			(attendi)
 		</text_editor>
 		<text name="static4">
-			Membri assegnati
+			Ruoli assegnati
 		</text>
+		<check_box label="Mostrare i membri" name="role_visible_in_list" tool_tip="Imposta nella tabella Generale per i membri con questo ruolo di poter essere visti dalle persone esterne a questo gruppo."/>
 		<text name="static5" tool_tip="Una lista delle abilità che il ruolo ora selezionato può eseguire.">
 			Abilità permesse
 		</text>
-		<check_box label="I membri sono visibili" name="role_visible_in_list" tool_tip="Serve ad impostare se i membri di questo ruolo sono visibili nel pannello generale ai residenti al di fuori del gruppo."/>
 		<scroll_list name="role_allowed_actions" tool_tip="Per i dettagli di ogni abilità consentita vedi il pannello abilità."/>
 	</panel>
 	<panel name="actions_footer">
 		<text name="static">
-			Descrizione
+			Descrizione abilità
 		</text>
 		<text_editor name="action_description">
 			Questa abilità è &apos;Espelli i membri dal gruppo&apos;. Solo un Capogruppo puo espellere un&apos;altro Capogruppo.
 		</text_editor>
 		<text name="static2">
-			Ruoli con abilità
+			Ruoli con questa abilità
 		</text>
 		<text name="static3">
-			Membri con abilità
+			Membri con questa abilità
 		</text>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_im_control_panel.xml b/indra/newview/skins/default/xui/it/panel_im_control_panel.xml
new file mode 100644
index 00000000000..f6c3fa9288a
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_im_control_panel.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+	<text name="avatar_name" value="Sconosciuto"/>
+	<button label="Profilo" name="view_profile_btn"/>
+	<button label="Aggiungi Amico" name="add_friend_btn"/>
+	<button label="Teleport" name="teleport_btn"/>
+	<button label="Condividi" name="share_btn"/>
+	<panel name="panel_call_buttons">
+		<button label="Chiama" name="call_btn"/>
+		<button label="Abbandona chiamata" name="end_call_btn"/>
+		<button label="Controllo Voice" name="voice_ctrls_btn"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_landmark_info.xml b/indra/newview/skins/default/xui/it/panel_landmark_info.xml
new file mode 100644
index 00000000000..5908a873ccc
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_landmark_info.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="landmark_info">
+	<string name="title_create_landmark" value="Crea Landmark"/>
+	<string name="title_edit_landmark" value="Modifica Landmark"/>
+	<string name="title_landmark" value="Landmark"/>
+	<string name="not_available" value="(N\A)"/>
+	<string name="unknown" value="(sconosciuto)"/>
+	<string name="public" value="(pubblico)"/>
+	<string name="server_update_text">
+		Info sul luogo non disponibili senza l&apos;aggiornamento del server.
+	</string>
+	<string name="server_error_text">
+		Info su questo luogo non disponibili ora, prova più tardi.
+	</string>
+	<string name="server_forbidden_text">
+		Info su questo luogo non disponibili a causa delle restrizioni di accesso. Controlla i tuoi permessi con il proprietario del terreno .
+	</string>
+	<string name="acquired_date">
+		[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+	</string>
+	<text name="title" value="Colloca Profilo"/>
+	<scroll_container name="place_scroll">
+		<panel name="scrolling_panel">
+			<text name="maturity_value" value="sconosciuto"/>
+			<panel name="landmark_info_panel">
+				<text name="owner_label" value="Proprietario:"/>
+				<text name="creator_label" value="Creatore:"/>
+				<text name="created_label" value="Creato:"/>
+			</panel>
+			<panel name="landmark_edit_panel">
+				<text name="title_label" value="Titolo:"/>
+				<text name="notes_label" value="Mie note:"/>
+				<text name="folder_label" value="Landmark del luogo:"/>
+			</panel>
+		</panel>
+	</scroll_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_landmarks.xml b/indra/newview/skins/default/xui/it/panel_landmarks.xml
new file mode 100644
index 00000000000..0efeaac97db
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_landmarks.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="Landmarks">
+	<accordion name="landmarks_accordion">
+		<accordion_tab name="tab_favorites" title="Barra dei Preferiti"/>
+		<accordion_tab name="tab_landmarks" title="Landmarks"/>
+		<accordion_tab name="tab_inventory" title="Mio Inventario"/>
+		<accordion_tab name="tab_library" title="Libreria"/>
+	</accordion>
+	<panel name="bottom_panel">
+		<button name="options_gear_btn" tool_tip="Mostra opzioni addizionali"/>
+		<button name="add_btn" tool_tip="Aggiungi nuovo landmark"/>
+		<dnd_button name="trash_btn" tool_tip="Rimuovi landmark selezionato"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_login.xml b/indra/newview/skins/default/xui/it/panel_login.xml
index e3cb7473fc4..7706a044faa 100644
--- a/indra/newview/skins/default/xui/it/panel_login.xml
+++ b/indra/newview/skins/default/xui/it/panel_login.xml
@@ -1,41 +1,34 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="panel_login">
 	<panel.string name="create_account_url">
-		http://join.secondlife.com/index.php?lang=it-IT
+		http://join.secondlife.com/
 	</panel.string>
 	<panel.string name="forgot_password_url">
 		http://secondlife.com/account/request.php?lang=it
 	</panel.string>
-<panel name="login_widgets">
-	<text name="first_name_text" left="20">
-		Nome:
-	</text>
-	<line_editor left="20" name="first_name_edit" width="126" />
-	<text name="last_name_text" left="158">
-		Cognome:
-	</text>
-	<line_editor left="158" name="last_name_edit" width="126" />
-	<text name="password_text">
-		Password:
-	</text>
-	<text name="start_location_text" left="20" width="105">
-		Punto di partenza:
-	</text>
-	<combo_box name="start_location_combo" left_delta="105" width="160">
-		<combo_box.item name="MyHome" label="Casa Mia" />
-		<combo_box.item name="MyLastLocation" label="Ultimo luogo visitato" />
-		<combo_box.item name="Typeregionname" label="&lt;Scrivi la regione&gt;" />
-	</combo_box>
-	<check_box label="Ricorda password" name="remember_check" left_delta="168"/>
-	<button label="Log In" label_selected="Log In" name="connect_btn"/>
-	<text name="create_new_account_text">
-		Registra un account
-	</text>
-	<text name="forgot_password_text" left="-240" width="230">
-		Hai dimenticato il tuo nome o la password?
-	</text>
-	<text name="channel_text">
-		[VERSION]
-	</text>
-</panel>
+	<layout_stack name="login_widgets">
+		<layout_panel name="login">
+			<text name="first_name_text">
+				Nome:
+			</text>
+			<line_editor label="Nome" name="first_name_edit" tool_tip="[SECOND_LIFE] First Name"/>
+			<line_editor label="Cognome" name="last_name_edit" tool_tip="[SECOND_LIFE] Last Name"/>
+			<check_box label="Ricordare" name="remember_check"/>
+			<text name="start_location_text">
+				Iniziare presso:
+			</text>
+			<combo_box name="start_location_combo">
+				<combo_box.item label="Casa mia" name="MyHome"/>
+			</combo_box>
+			<button label="Log In" name="connect_btn"/>
+		</layout_panel>
+		<layout_panel name="links">
+			<text name="create_new_account_text">
+				Aderire
+			</text>
+			<text name="login_help">
+				Aiuto quando log in?
+			</text>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_main_inventory.xml b/indra/newview/skins/default/xui/it/panel_main_inventory.xml
new file mode 100644
index 00000000000..edaab6e60ca
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_main_inventory.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Cose" name="main inventory panel">
+	<panel.string name="Title">
+		Cose
+	</panel.string>
+	<filter_editor label="Filtro" name="inventory search editor"/>
+	<tab_container name="inventory filter tabs">
+		<inventory_panel label="Tutti gli elementi" name="All Items"/>
+		<inventory_panel label="Elementi recenti" name="Recent Items"/>
+	</tab_container>
+	<panel name="bottom_panel">
+		<button name="options_gear_btn" tool_tip="Mostra ulteriori opzioni"/>
+		<button name="add_btn" tool_tip="Aggiungi nuovo elemento"/>
+		<dnd_button name="trash_btn" tool_tip="Rimuovi l&apos;elemento selezionato"/>
+	</panel>
+	<menu_bar name="Inventory Menu">
+		<menu label="File" name="File">
+			<menu_item_call label="Apri" name="Open"/>
+			<menu label="Carica nel server" name="upload">
+				<menu_item_call label="Immagine ([COST]L$)..." name="Upload Image"/>
+				<menu_item_call label="Suono ([COST]L$)..." name="Upload Sound"/>
+				<menu_item_call label="Animazione ([COST]L$)..." name="Upload Animation"/>
+				<menu_item_call label="In blocco ([COST]L$ per file)..." name="Bulk Upload"/>
+			</menu>
+			<menu_item_call label="Nuova Finestra" name="New Window"/>
+			<menu_item_call label="Mostra Filtri" name="Show Filters"/>
+			<menu_item_call label="Cancella Filtri" name="Reset Current"/>
+			<menu_item_call label="Chiudi tutte le Cartelle" name="Close All Folders"/>
+			<menu_item_call label="Svuota Cestino" name="Empty Trash"/>
+			<menu_item_call label="Svuota Oggetti Smarriti" name="Empty Lost And Found"/>
+		</menu>
+		<menu label="Crea" name="Create">
+			<menu_item_call label="Nuova Cartella" name="New Folder"/>
+			<menu_item_call label="Nuovo Script" name="New Script"/>
+			<menu_item_call label="Nuova Notecard" name="New Note"/>
+			<menu_item_call label="Nuova Gesture" name="New Gesture"/>
+			<menu label="Nuovi Abiti" name="New Clothes">
+				<menu_item_call label="Nuova Camicia" name="New Shirt"/>
+				<menu_item_call label="Nuovi Pantaloni" name="New Pants"/>
+				<menu_item_call label="Nuove Scarpe" name="New Shoes"/>
+				<menu_item_call label="Nuove Calze" name="New Socks"/>
+				<menu_item_call label="Nuova Giacca" name="New Jacket"/>
+				<menu_item_call label="Nuova Gonna" name="New Skirt"/>
+				<menu_item_call label="Nuovi Guanti" name="New Gloves"/>
+				<menu_item_call label="Nuova Maglietta Intima" name="New Undershirt"/>
+				<menu_item_call label="Nuovi Slip" name="New Underpants"/>
+				<menu_item_call label="Nuovo Alfa (Trasparenza)" name="New Alpha"/>
+				<menu_item_call label="Nuovo Tatuaggio" name="New Tattoo"/>
+			</menu>
+			<menu label="Nuove Parti del Corpo" name="New Body Parts">
+				<menu_item_call label="Nuova Shape" name="New Shape"/>
+				<menu_item_call label="Nuova Pelle" name="New Skin"/>
+				<menu_item_call label="Nuovi Capelli" name="New Hair"/>
+				<menu_item_call label="Nuovi Occhi" name="New Eyes"/>
+			</menu>
+		</menu>
+		<menu label="Ordina" name="Sort">
+			<menu_item_check label="Per Nome" name="By Name"/>
+			<menu_item_check label="Per Data" name="By Date"/>
+			<menu_item_check label="Cartelle sempre per Nome" name="Folders Always By Name"/>
+			<menu_item_check label="Cartelle di sistema all&apos;inizio" name="System Folders To Top"/>
+		</menu>
+	</menu_bar>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_me.xml b/indra/newview/skins/default/xui/it/panel_me.xml
new file mode 100644
index 00000000000..03678ecad50
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_me.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Mio Profilo" name="panel_me">
+	<tab_container name="tabs">
+		<panel label="PROFILO" name="panel_profile"/>
+		<panel label="PREFERITI" name="panel_picks"/>
+	</tab_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_media_settings_general.xml b/indra/newview/skins/default/xui/it/panel_media_settings_general.xml
new file mode 100644
index 00000000000..cb629e5cfb4
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_media_settings_general.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Generale" name="Media Settings General">
+	<text name="home_label">
+		Home Page:
+	</text>
+	<text name="home_fails_whitelist_label">
+		(Questa pagina non passa la lista bianca specifica)
+	</text>
+	<line_editor name="home_url" tool_tip="La home page per questa fonte media"/>
+	<text name="preview_label">
+		Anteprima
+	</text>
+	<text name="current_url_label">
+		Pagina attuale:
+	</text>
+	<text name="current_url" tool_tip="La pagina attuale per questa fonte media" value=""/>
+	<button label="Resetta" name="current_url_reset_btn"/>
+	<check_box initial_value="false" label="Auto Loop" name="auto_loop"/>
+	<check_box initial_value="false" label="Primo Click Interagisce" name="first_click_interact"/>
+	<check_box initial_value="false" label="Auto Zoom" name="auto_zoom"/>
+	<check_box initial_value="false" label="Auto Play Media" name="auto_play"/>
+	<text name="media_setting_note">
+		Nota: I Residenti possono annullare questa impostazione
+	</text>
+	<check_box initial_value="false" label="Auto Scale Media on Face of Object" name="auto_scale"/>
+	<text name="size_label">
+		Misura:
+	</text>
+	<text name="X_label">
+		X
+	</text>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/it/panel_media_settings_permissions.xml
new file mode 100644
index 00000000000..551d86864d9
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_media_settings_permissions.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Personalizza" name="Media settings for controls">
+	<text name="controls_label">
+		Controlli:
+	</text>
+	<combo_box name="controls">
+		<combo_item name="Standard">
+			Standard
+		</combo_item>
+		<combo_item name="Mini">
+			Mini
+		</combo_item>
+	</combo_box>
+	<check_box initial_value="false" label="Permetti Navigazione &amp; Interattività" name="perms_owner_interact"/>
+	<check_box initial_value="false" label="Mostra la barra di controllo" name="perms_owner_control"/>
+	<check_box initial_value="false" label="Permetti Navigazione &amp; Interattività" name="perms_group_interact"/>
+	<check_box initial_value="false" label="Mostra la barra di controllo" name="perms_group_control"/>
+	<check_box initial_value="false" label="Permetti Navigazione &amp; Interattività" name="perms_anyone_interact"/>
+	<check_box initial_value="false" label="Mostra la barra di controllo" name="perms_anyone_control"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_media_settings_security.xml b/indra/newview/skins/default/xui/it/panel_media_settings_security.xml
new file mode 100644
index 00000000000..0df0331198c
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_media_settings_security.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Sicurezza" name="Media Settings Security">
+	<check_box initial_value="false" label="Accesso permesso solo a URLs specificati (by prefix)" name="whitelist_enable"/>
+	<text name="home_url_fails_some_items_in_whitelist">
+		Annota che le home page mancate sono segnate:
+	</text>
+	<button label="Aggiungi" name="whitelist_add"/>
+	<button label="Cancella" name="whitelist_del"/>
+	<text name="home_url_fails_whitelist">
+		Attenzione: la home page specificata nella Tabella General non ha passato questa lista bianca. E&apos; stata disattivata fino a quando non sarà aggiunta un entrata valid.
+	</text>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_my_profile.xml b/indra/newview/skins/default/xui/it/panel_my_profile.xml
new file mode 100644
index 00000000000..60faf4e7c59
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_my_profile.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Profilo" name="panel_profile">
+	<string name="no_partner_text" value="Nessuno"/>
+	<string name="RegisterDateFormat">
+		[REG_DATE] ([AGE])
+	</string>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<panel name="second_life_image_panel">
+				<icon label="" name="2nd_life_edit_icon" tool_tip="Clicca il pulsante inferiore Modifica Profilo per cambiare immagine"/>
+			</panel>
+			<panel name="first_life_image_panel">
+				<icon label="" name="real_world_edit_icon" tool_tip="Clicca il pulsante inferiore Modifica Profilo per cambiare immagine"/>
+				<text name="title_rw_descr_text" value="Mondo Reale:"/>
+			</panel>
+			<text name="me_homepage_text">
+				Homepage:
+			</text>
+			<text name="title_member_text" value="Membro dal:"/>
+			<text name="title_acc_status_text" value="Stato dell&apos;account:"/>
+			<text name="acc_status_text" value="Residente. Nessuna info di pagamento."/>
+			<text name="title_partner_text" value="Partner:"/>
+			<text name="title_groups_text" value="Gruppi:"/>
+		</panel>
+	</scroll_container>
+	<panel name="profile_buttons_panel">
+		<button label="Aggiungi amico" name="add_friend"/>
+		<button label="IM" name="im"/>
+		<button label="Chiama" name="call"/>
+		<button label="Mappa" name="show_on_map_btn"/>
+		<button label="Teleport" name="teleport"/>
+	</panel>
+	<panel name="profile_me_buttons_panel">
+		<button label="Modifica Profilo" name="edit_profile_btn" tool_tip="Modifica le tue informazioni personali"/>
+		<button label="Modifica aspetto" name="edit_appearance_btn" tool_tip="Crea/modifica la tua apparenza: aspetto fisico, vestiti, etc."/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_navigation_bar.xml b/indra/newview/skins/default/xui/it/panel_navigation_bar.xml
new file mode 100644
index 00000000000..2e057c29836
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_navigation_bar.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="navigation_bar">
+	<panel name="navigation_panel">
+		<button name="back_btn" tool_tip="Ritorna al luogo precedente"/>
+		<button name="forward_btn" tool_tip="Vai ad un luogo"/>
+		<button name="home_btn" tool_tip="Teleport a casa mia"/>
+		<location_input label="Luogo" name="location_combo"/>
+		<search_combo_box label="Cerca" name="search_combo_box" tool_tip="Cerca">
+			<combo_editor label="Cerca [SECOND_LIFE]" name="search_combo_editor"/>
+		</search_combo_box>
+	</panel>
+	<favorites_bar name="favorite">
+		<chevron_button name="&gt;&gt;" tool_tip="Mostra più dei miei Preferiti"/>
+	</favorites_bar>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_nearby_chat.xml b/indra/newview/skins/default/xui/it/panel_nearby_chat.xml
new file mode 100644
index 00000000000..7ffe972181b
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_nearby_chat.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- All our XML is utf-8 encoded. -->
+<panel name="nearby_chat">
+	<panel name="chat_caption">
+		<text name="sender_name">
+			CHAT NEI DINTORNI
+		</text>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/it/panel_nearby_chat_bar.xml
new file mode 100644
index 00000000000..0361eb49ed8
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_nearby_chat_bar.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chat_bar">
+	<string name="min_width">
+		192
+	</string>
+	<string name="max_width">
+		320
+	</string>
+	<line_editor label="Clicca qui per la chat." name="chat_box" tool_tip="Premi Invio per dire, Ctrl+Invio per gridare"/>
+	<button name="show_nearby_chat" tool_tip="Mostra/Nasconde la chat log nei dintorni"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_notes.xml b/indra/newview/skins/default/xui/it/panel_notes.xml
new file mode 100644
index 00000000000..ff843c16845
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_notes.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Note &amp; Privacy" name="panel_notes">
+	<layout_stack name="layout">
+		<panel name="notes_stack">
+			<scroll_container name="profile_scroll">
+				<panel name="profile_scroll_panel">
+					<text name="status_message" value="Le mie note private:"/>
+					<text name="status_message2" value="Permetti a questa persona di:"/>
+					<check_box label="Vedermi On-line" name="status_check"/>
+					<check_box label="Vedermi sull mappa" name="map_check"/>
+					<check_box label="Modificare, cancellare o prendere i miei oggetti" name="objects_check"/>
+				</panel>
+			</scroll_container>
+		</panel>
+		<panel name="notes_buttons_panel">
+			<button label="Aggiungi" name="add_friend" tool_tip="Offrire amicizia ad un residente"/>
+			<button label="IM" name="im" tool_tip="Apri una sessione di messaggio istantaneo"/>
+			<button label="Chiama" name="call" tool_tip="Chiama questo residente"/>
+			<button label="Mappa" name="show_on_map_btn" tool_tip="Mostra il residente sulla mappa"/>
+			<button label="Teleport" name="teleport" tool_tip="Offri teleport"/>
+		</panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/it/panel_outfits_inventory.xml
new file mode 100644
index 00000000000..9332a3ef361
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_outfits_inventory.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="Outfits">
+	<accordion name="outfits_accordion">
+		<accordion_tab name="tab_cof" title="Vestiario attuale"/>
+		<accordion_tab name="tab_outfits" title="Mio Vestiario"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/it/panel_outfits_inventory_gear_default.xml
new file mode 100644
index 00000000000..c6be9423129
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_outfits_inventory_gear_default.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_gear_default">
+	<menu_item_call label="Sostituisci il Vestiario attuale" name="wear"/>
+	<menu_item_call label="Aggiungi al Vestiario attuale" name="add"/>
+	<menu_item_call label="Rimuovi dal Vestiario attuale" name="remove"/>
+	<menu_item_call label="Rinomina" name="rename"/>
+	<menu_item_call label="Rimuovi" name="remove_link"/>
+	<menu_item_call label="Cancella" name="delete"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/it/panel_people.xml b/indra/newview/skins/default/xui/it/panel_people.xml
new file mode 100644
index 00000000000..b20db0d565c
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_people.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Side tray panel -->
+<panel label="Persona" name="people_panel">
+	<string name="no_people" value="Nessuna persona"/>
+	<string name="no_one_near" value="Nessuno vicino"/>
+	<string name="no_friends_online" value="Nessun amico online"/>
+	<string name="no_friends" value="Nessun amico"/>
+	<string name="no_groups" value="Nessun gruppo"/>
+	<string name="people_filter_label" value="Filtro Persone"/>
+	<string name="groups_filter_label" value="Filtro Gruppi"/>
+	<filter_editor label="Filtro" name="filter_input"/>
+	<tab_container name="tabs">
+		<panel label="NELLE VICINANZE" name="nearby_panel">
+			<panel label="bottom_panel" name="bottom_panel">
+				<button name="nearby_view_sort_btn" tool_tip="Opzioni"/>
+				<button name="add_friend_btn" tool_tip="Aggiungi il residente selezionato alla tua lista di amici"/>
+			</panel>
+		</panel>
+		<panel label="AMICI" name="friends_panel">
+			<accordion name="friends_accordion">
+				<accordion_tab name="tab_online" title="Online"/>
+				<accordion_tab name="tab_all" title="Tutti"/>
+			</accordion>
+			<panel label="bottom_panel" name="bottom_panel">
+				<button name="friends_viewsort_btn" tool_tip="Opzioni"/>
+				<button name="add_btn" tool_tip="Offri amicizia ad un residente"/>
+				<button name="del_btn" tool_tip="Rimuovi la persona selezionata dalla tua lista di amici"/>
+			</panel>
+		</panel>
+		<panel label="GRUPPI" name="groups_panel">
+			<panel label="bottom_panel" name="bottom_panel">
+				<button name="groups_viewsort_btn" tool_tip="Opzioni"/>
+				<button name="plus_btn" tool_tip="Aderisci al gruppo/Crea nuovo gruppo"/>
+				<button name="activate_btn" tool_tip="Attiva il gruppo selezionato"/>
+			</panel>
+		</panel>
+		<panel label="RECENTE" name="recent_panel">
+			<panel label="bottom_panel" name="bottom_panel">
+				<button name="recent_viewsort_btn" tool_tip="Opzioni"/>
+				<button name="add_friend_btn" tool_tip="Aggiungi il residente selezionato alla tua lista di amici"/>
+			</panel>
+		</panel>
+	</tab_container>
+	<panel name="button_bar">
+		<button label="Profilo" name="view_profile_btn" tool_tip="Mostra foto, gruppi, e info di altri residenti"/>
+		<button label="IM" name="im_btn" tool_tip="Apri sessione instant message"/>
+		<button label="Chiama" name="call_btn" tool_tip="Chiama questo residente"/>
+		<button label="Condividi" name="share_btn"/>
+		<button label="Teleport" name="teleport_btn" tool_tip="Offri teleport"/>
+		<button label="Profilo del Gruppo" name="group_info_btn" tool_tip="Mostra info del gruppo"/>
+		<button label="Chat di gruppo" name="chat_btn" tool_tip="Apri sessione chat"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_pick_info.xml b/indra/newview/skins/default/xui/it/panel_pick_info.xml
new file mode 100644
index 00000000000..4771457825c
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_pick_info.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_pick_info">
+	<text name="title" value="Scegli Info ????"/>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<text name="pick_name" value="[nome]"/>
+			<text name="pick_location" value="[Caricando...]"/>
+			<text name="pick_desc" value="[descrizione]"/>
+		</panel>
+	</scroll_container>
+	<panel name="buttons">
+		<button label="Teleport" name="teleport_btn"/>
+		<button label="Mappa" name="show_on_map_btn"/>
+		<button label="Modifica" name="edit_btn"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_picks.xml b/indra/newview/skins/default/xui/it/panel_picks.xml
new file mode 100644
index 00000000000..bcc433708d3
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_picks.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Foto" name="panel_picks">
+	<string name="no_picks" value="Nessuna Foto"/>
+	<string name="no_classifieds" value="Nessun Annuncio"/>
+	<text name="empty_picks_panel_text">
+		Nessuna foto/annuncio qui
+	</text>
+	<accordion name="accordion">
+		<accordion_tab name="tab_picks" title="Foto"/>
+		<accordion_tab name="tab_classifieds" title="Annunci"/>
+	</accordion>
+	<panel label="bottom_panel" name="edit_panel">
+		<button name="new_btn" tool_tip="Crea una nuova foto o annuncio in questo luogo"/>
+	</panel>
+	<panel name="buttons_cucks">
+		<button label="Info" name="info_btn" tool_tip="Mostra info sulla foto"/>
+		<button label="Teleport" name="teleport_btn" tool_tip="Teleport all&apos;area corrispondente"/>
+		<button label="Mappa" name="show_on_map_btn" tool_tip="Mostra l&apos;area corrispondente nella Mappa del Mondo"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_place_profile.xml b/indra/newview/skins/default/xui/it/panel_place_profile.xml
new file mode 100644
index 00000000000..70e15771999
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_place_profile.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="place_profile">
+	<string name="on" value="On"/>
+	<string name="off" value="Off"/>
+	<string name="anyone" value="Chiunque"/>
+	<string name="available" value="disponibile"/>
+	<string name="allocated" value="assegnato"/>
+	<string name="title_place" value="Profilo del luogo"/>
+	<string name="title_teleport_history" value="Cronologia dei Teleport"/>
+	<string name="not_available" value="(N\D)"/>
+	<string name="unknown" value="(sconosciuto)"/>
+	<string name="public" value="(publico)"/>
+	<string name="none_text" value="(nessuno)"/>
+	<string name="sale_pending_text" value="(Vendita in attesa di)"/>
+	<string name="group_owned_text" value="(Gruppo posseduto)"/>
+	<string name="price_text" value="L$"/>
+	<string name="area_text" value="m²"/>
+	<string name="all_residents_text" value="Tutti i Residenti"/>
+	<string name="group_text" value="Gruppo"/>
+	<string name="can_resell">
+		La terra acquistata in questa regione può essere rivenduta.
+	</string>
+	<string name="can_not_resell">
+		La terra acquistata in questa regione non può essere rivenduta.
+	</string>
+	<string name="can_change">
+		La terra acquistata in questa regione può essere unita o suddivisa.
+	</string>
+	<string name="can_not_change">
+		La terra acquistata in questa regione non può essere unita o suddivisa.
+	</string>
+	<string name="server_update_text">
+		Informazioni su questo luogo non disponibili senza l&apos;aggiornamento del server.
+	</string>
+	<string name="server_error_text">
+		Informazioni su questo luogo non sono disponibili ora, per favore riprova più tardi.
+	</string>
+	<string name="server_forbidden_text">
+		Informazioni su questo luogo non sono disponibili a cause delle restrizioni sull&apos;accesso.  Per favore verifica i tuoi permessi con il proprietario del parcel.
+	</string>
+	<string name="acquired_date">
+		[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+	</string>
+	<text name="title" value="Profilo del luogo"/>
+	<scroll_container name="place_scroll">
+		<panel name="scrolling_panel">
+			<text name="owner_label" value="Proprietario:"/>
+			<text name="maturity_value" value="sconosciuto"/>
+			<accordion name="advanced_info_accordion">
+				<accordion_tab name="parcel_characteristics_tab" title="Parcel">
+					<panel>
+						<text name="rating_label" value="Valutazione:"/>
+						<text name="rating_value" value="sconosciuto"/>
+						<text name="voice_label" value="Voice:"/>
+						<text name="voice_value" value="On"/>
+						<text name="fly_label" value="Vola:"/>
+						<text name="fly_value" value="On"/>
+						<text name="push_label" value="Spingi:"/>
+						<text name="push_value" value="Off"/>
+						<text name="build_label" value="Costruisci:"/>
+						<text name="build_value" value="On"/>
+						<text name="scripts_label" value="Scripts:"/>
+						<text name="scripts_value" value="On"/>
+						<text name="damage_label" value="Danno:"/>
+						<text name="damage_value" value="Off"/>
+						<button label="Info sul terreno" name="about_land_btn"/>
+					</panel>
+				</accordion_tab>
+				<accordion_tab name="region_information_tab" title="Regione">
+					<panel>
+						<text name="region_name_label" value="Regione:"/>
+						<text name="region_type_label" value="Scrivi:"/>
+						<text name="region_rating_label" value="Valutazione:"/>
+						<text name="region_owner_label" value="Proprietario:"/>
+						<text name="region_group_label" value="Gruppo:"/>
+						<button label="Regione/Proprietà immobiliare" name="region_info_btn"/>
+					</panel>
+				</accordion_tab>
+				<accordion_tab name="estate_information_tab" title="Proprietà immobiliare">
+					<panel>
+						<text name="estate_name_label" value="Proprietà immobiliare:"/>
+						<text name="estate_rating_label" value="Valutazione:"/>
+						<text name="estate_owner_label" value="Proprietà:"/>
+						<text name="covenant_label" value="Regolamento:"/>
+					</panel>
+				</accordion_tab>
+				<accordion_tab name="sales_tab" title="In vendita">
+					<panel>
+						<text name="sales_price_label" value="Prezzo:"/>
+						<text name="area_label" value="Area:"/>
+						<text name="traffic_label" value="Traffico:"/>
+						<text name="primitives_label" value="Primitive:"/>
+						<text name="parcel_scripts_label" value="Scripts:"/>
+						<text name="terraform_limits_label" value="Limiti per Terraform:"/>
+						<text name="subdivide_label" value="Suddividi/Unisci abilità:"/>
+						<text name="resale_label" value="Rivendi abilità:"/>
+						<text name="sale_to_label" value="In vendita a:"/>
+					</panel>
+				</accordion_tab>
+			</accordion>
+		</panel>
+	</scroll_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_places.xml b/indra/newview/skins/default/xui/it/panel_places.xml
new file mode 100644
index 00000000000..8e50a8b9d96
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_places.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Luoghi" name="places panel">
+	<string name="landmarks_tab_title" value="MIEI LANDMARKS"/>
+	<string name="teleport_history_tab_title" value="TELEPORT PRECEDENTI"/>
+	<filter_editor label="Filtro Luoghi" name="Filter"/>
+	<panel name="button_panel">
+		<button label="Teleport" name="teleport_btn"/>
+		<button label="Mappa" name="map_btn"/>
+		<button label="Modifica" name="edit_btn"/>
+		<button label="Chiudi" name="close_btn"/>
+		<button label="Cancella" name="cancel_btn"/>
+		<button label="Salva" name="save_btn"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml
index 2355dc7f0a4..13ffabbebf7 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml
@@ -1,7 +1,16 @@
 <?xml version="1.0" encoding="utf-8"?>
 <panel name="advanced">
+	<panel.string name="resolution_format">
+		[RES_X] x [RES_Y]
+	</panel.string>
+	<panel.string name="aspect_ratio_text">
+		[NUM]:[DEN]
+	</panel.string>
+	<check_box label="Chat a Bolle" name="bubble_text_chat"/>
+	<color_swatch name="background" tool_tip="Scegli il colore delle vignette della Chat"/>
+	<slider label="Opacità" name="bubble_chat_opacity"/>
 	<text name="AspectRatioLabel1" tool_tip="larghezza/altezza">
-		Rapporto di visualizzazione:
+		Rapporto di visualizzazione
 	</text>
 	<combo_box name="aspect_ratio" tool_tip="larghezza/altezza">
 		<combo_box.item label="4:3 (Monitor Standard)" name="item1"/>
@@ -9,4 +18,31 @@
 		<combo_box.item label="8:5 (Widescreen)" name="item3"/>
 		<combo_box.item label="16:9 (Widescreen)" name="item4"/>
 	</combo_box>
+	<check_box label="Rilevamento automatico" name="aspect_auto_detect"/>
+	<text name="heading1">
+		Camera:
+	</text>
+	<slider label="Angolazione della visuale" name="camera_fov"/>
+	<slider label="Distanza" name="camera_offset_scale"/>
+	<text name="heading2">
+		Posizionamento Automatico per:
+	</text>
+	<check_box label="Costruire/Modificare" name="edit_camera_movement" tool_tip="Utilizza il posizionamento automatico della camera entrando e uscendo dalla modalità modifica"/>
+	<check_box label="Aspetto Fisico" name="appearance_camera_movement" tool_tip="Utilizza il posizionamento automatico della camera in modalità modifica"/>
+	<text name="heading3">
+		Avatar:
+	</text>
+	<check_box label="Mostra in modalità Mouselook" name="first_person_avatar_visible"/>
+	<check_box label="Cammino sempre con le frecce di movimento" name="arrow_keys_move_avatar_check"/>
+	<check_box label="Doppio Click-Tieni Premuto per correre" name="tap_tap_hold_to_run"/>
+	<check_box label="Consente il movimento delle labbra dell&apos;Avatar quando parla" name="enable_lip_sync"/>
+	<check_box label="Mostra errori degli script" name="show_script_errors"/>
+	<radio_group name="show_location">
+		<radio_item label="In chat" name="0"/>
+		<radio_item label="In una finestra" name="1"/>
+	</radio_group>
+	<check_box label="Modalità del microfono &quot;interruttore ON/OFF&quot; quando premo l&apos;interruttore PARLA:" name="push_to_talk_toggle_check" tool_tip="In modalità &quot;interruttore ON/OFF&quot; premi il tasto per attivare o disattivare il microfono. Quando non usi questa modalità, il microfono è attivo solo se tieni premuto il tasto."/>
+	<line_editor label="Premi il pulsante per parlare" name="modifier_combo"/>
+	<button label="Imposta" name="set_voice_hotkey_button"/>
+	<button label="Pulsante centrale del Mouse" name="set_voice_middlemouse_button"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/it/panel_preferences_alerts.xml
index 54517635fd5..02da9de4a47 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_alerts.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_alerts.xml
@@ -1,18 +1,14 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Pop-up" name="popups" title="Pop-up">
-	<text name="dont_show_label">
-		Non mostrare questi pop-up:
+	<text name="tell_me_label">
+		Dimmi:
 	</text>
-	<button label="Abilita questo pop-up" name="enable_popup"/>
-	<button  width="200" label="Abilita tutti i pop-up..." name="reset_dialogs_btn" tool_tip="Abilita tutti i pop-up opzionali e le notifiche da &apos;utilizzo per la prima volta&apos;."/>
+	<check_box label="Quando spendo o ottengo L$" name="notify_money_change_checkbox"/>
+	<check_box label="Quando i miei amici entrano o escono da SL" name="friends_online_notify_checkbox"/>
 	<text name="show_label">
-		Mostra questi pop-up:
+		Mostra sempre questi allarmi:
 	</text>
-	<button  width="200" label="Disabilita tutti questi pop-up..." name="skip_dialogs_btn" tool_tip="Disabilita tutti i pop-up opzionali e le notifiche da &apos;utilizzo per la prima volta&apos;."/>
-	<text name="text_box2">
-		Offerte di notecard, texture e landmark:
+	<text name="dont_show_label">
+		Non mostrare mai questi allarmi:
 	</text>
-	<check_box label="Accetta automaticamente" name="accept_new_inventory"/>
-	<check_box label="Apri automaticamente dopo aver accettato" name="show_new_inventory"/>
-	<check_box label="Mostra automaticamente nell&apos;inventario, gli oggetti appena accettati" name="show_in_inventory"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_chat.xml b/indra/newview/skins/default/xui/it/panel_preferences_chat.xml
index 7125832c7b6..9c064c27165 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_chat.xml
@@ -1,17 +1,13 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Text Chat" name="chat">
-	<text name="text_box">
-		Grandezza carattere
-chat:
-	</text>
 	<radio_group name="chat_font_size">
-		<radio_item name="radio" label="Piccolo" />
-		<radio_item name="radio2" label="Medio" />
-		<radio_item name="radio3" label="Grande" />
+		<radio_item label="Piccolo" name="radio"/>
+		<radio_item label="Medio" name="radio2"/>
+		<radio_item label="Grande" name="radio3"/>
 	</radio_group>
 	<color_swatch label="Tuo" name="user"/>
 	<text name="text_box1">
-		Tuo
+		Io
 	</text>
 	<color_swatch label="Altri" name="agent"/>
 	<text name="text_box2">
@@ -37,22 +33,14 @@ chat:
 	<text name="text_box7">
 		Proprietario
 	</text>
-	<color_swatch label="Vignetta" name="background"/>
-	<text name="text_box8">
-		Vignetta
-	</text>
 	<color_swatch label="URLs" name="links"/>
 	<text name="text_box9">
 		URLs
 	</text>
-	<check_box label="Mostra errori script ed avvertimenti nella chat principale" name="script_errors_as_chat"/>
-	<spinner label="Dissolvi la chat dopo" name="fade_chat_time" label_width="112" width="162"/>
-	<slider label="Opacità" name="console_opacity"/>
-	<check_box label="Utilzza la larghezza intera dello schermo  (Richiede riavvio)" name="chat_full_width_check"/>
-	<check_box label="Chiudi la barra chat dopo aver premuto invio" name="close_chat_on_return_check"/>
-	<check_box label="Le frecce muovono comunque l&apos;avatar quando si sta scrivendo" name="arrow_keys_move_avatar_check"/>
-	<check_box label="Mostra orario nella chat principale" name="show_timestamps_check"/>
-	<check_box label="Simula la battitura tasti quando scrivi" name="play_typing_animation"/>
-	<check_box label="Mostra vignette chat" name="bubble_text_chat"/>
-	<slider label="Opacità" name="bubble_chat_opacity"/>
+	<check_box initial_value="true" label="Simula la battitura tasti quando scrivi" name="play_typing_animation"/>
+	<check_box label="Spediscimi nella email gli IM quando sono OFF-LINE" name="send_im_to_email"/>
+	<radio_group name="chat_window" tool_tip="Mostra i tuoi Instant Messages in finestre separate, o in una finestra con diverse tabelle (Requires restart)">
+		<radio_item label="Finestre multiple" name="radio"/>
+		<radio_item label="Una finestra" name="radio2"/>
+	</radio_group>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_general.xml b/indra/newview/skins/default/xui/it/panel_preferences_general.xml
index e6cd6e67b2d..80b152752b3 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_general.xml
@@ -1,90 +1,64 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Generale" name="general_panel">
-	<combo_box name="start_location_combo">
-		<combo_box.item name="MyHome" tool_tip="Vai a casa di default quando fai login" label="Casa mia"/>
-		<combo_box.item name="MyLastLocation" tool_tip="Vai nell&apos;ultimo posto visitato di default quando fai login." label="Ultimo posto visitato"/>
-	</combo_box>
-	<check_box label="Mostra il punto di partenza nella schermata d&apos;inizio" name="show_location_checkbox"/>
-	<combo_box name="fade_out_combobox">
-		<combo_box.item name="Never" label="Mai"/>
-		<combo_box.item name="Show Temporarily" label="Mostra temporanemente"/>
-		<combo_box.item name="Always" label="Sempre"/>
-	</combo_box>
-	<check_box label="Nomi avatar in piccolo" name="small_avatar_names_checkbox"/>
-	<check_box label="Nascondi il mio nome sul mio schermo" name="show_my_name_checkbox"/>
-	<text name="group_titles_textbox">
-		Titoli di gruppo:
-	</text>
-	<check_box label="Nascondi i titoli di gruppo" name="show_all_title_checkbox"/>
-	<check_box label="Nascondi il mio titolo di gruppo" name="show_my_title_checkbox"/>
-	<color_swatch label="" name="effect_color_swatch" tool_tip="Clicca per aprire la tavolozza dei colori"/>
-	<text name="UI Size:">
-		Dimensione interfaccia:
+	<text name="language_textbox">
+		Lingua:
 	</text>
-	<check_box label="Usa ridimensionamento indipendente dalla risoluzione" name="ui_auto_scale"/>
-	<spinner label="Assente dopo:" name="afk_timeout_spinner"/>
-	<check_box label="Avvisami quando spendo o ricevo Linden Dollars (L$)" name="notify_money_change_checkbox"/>
-	<text name="maturity_desired_label">
-		Categoria di accesso:
+	<combo_box name="language_combobox">
+		<combo_box.item label="System default" name="System Default Language"/>
+		<combo_box.item label="English" name="English"/>
+		<combo_box.item label="Dansk (Danese) - Beta" name="Danish"/>
+		<combo_box.item label="Deutsch (Tedesco) - Beta" name="Deutsch(German)"/>
+		<combo_box.item label="Español (Spagnolo) - Beta" name="Spanish"/>
+		<combo_box.item label="Français (Francese) - Beta" name="French"/>
+		<combo_box.item label="Italiano - Beta" name="Italian"/>
+		<combo_box.item label="Nederlands (Olandese) - Beta" name="Dutch"/>
+		<combo_box.item label="Polski (Polacco) - Beta" name="Polish"/>
+		<combo_box.item label="Portugués (Portoghese) - Beta" name="Portugese"/>
+		<combo_box.item label="日本語 (Giapponese) - Beta" name="(Japanese)"/>
+	</combo_box>
+	<text name="language_textbox2">
+		(Richiede restart)
 	</text>
 	<text name="maturity_desired_prompt">
 		Voglio accedere al contenuto di tipo:
 	</text>
+	<text name="maturity_desired_textbox"/>
 	<combo_box name="maturity_desired_combobox">
-		<combo_box.item name="Desired_Adult" label="PG, Mature e Adult"/>
-		<combo_box.item name="Desired_Mature" label="PG e Mature"/>
-		<combo_box.item name="Desired_PG" label="PG"/>
+		<combo_box.item label="PG, Mature e Adult" name="Desired_Adult"/>
+		<combo_box.item label="PG e Mature" name="Desired_Mature"/>
+		<combo_box.item label="PG" name="Desired_PG"/>
 	</combo_box>
-	<text name="maturity_desired_textbox">
-		PG
-	</text>
 	<text name="start_location_textbox">
-		Punto di partenza:
+		Luogo d&apos;inizio:
 	</text>
-	<text name="show_names_textbox">
-		Mostra Nomi:
+	<combo_box name="start_location_combo">
+		<combo_box.item label="Ultimo posto visitato" name="MyLastLocation" tool_tip="Vai nell&apos;ultimo posto visitato di default quando fai login."/>
+		<combo_box.item label="Casa mia" name="MyHome" tool_tip="Vai a casa di default quando fai login"/>
+	</combo_box>
+	<check_box initial_value="true" label="Mostra su login" name="show_location_checkbox"/>
+	<text name="name_tags_textbox">
+		Nome sulle tags:
 	</text>
+	<radio_group name="Name_Tag_Preference">
+		<radio_item label="Off" name="radio"/>
+		<radio_item label="On" name="radio2"/>
+		<radio_item label="Mostra brevemente" name="radio3"/>
+	</radio_group>
+	<check_box label="Mostra il mio nome" name="show_my_name_checkbox1"/>
+	<check_box initial_value="true" label="Nome piccolo sulle tags" name="small_avatar_names_checkbox"/>
+	<check_box label="Mostra titoli del gruppo" name="show_all_title_checkbox1"/>
 	<text name="effects_color_textbox">
-		Colore per i miei effetti:
+		Miei effetti:
+	</text>
+	<color_swatch label="" name="effect_color_swatch" tool_tip="Clicca per aprire la tavolozza dei colori"/>
+	<text name="title_afk_text">
+		Pausa di Away:
 	</text>
+	<spinner label="Assente dopo:" name="afk_timeout_spinner"/>
 	<text name="seconds_textbox">
 		secondi
 	</text>
-	<text name="crash_report_textbox">
-		Rapporti crash:
-	</text>
-	<text name="language_textbox">
-		Lingua:
-	</text>
-	<text name="language_textbox2">
-		(Richiede il riavvio)
+	<text name="text_box3">
+		Risposta in modalità occupato:
 	</text>
-	<string name="region_name_prompt">
-		&lt;Scrivi il nome della regione&gt;
-	</string>
-	<combo_box name="crash_behavior_combobox">
-		<combo_box.item name="Askbeforesending" label="Chiedi prima di inviare"/>
-		<combo_box.item name="Alwayssend" label="Invia sempre"/>
-		<combo_box.item name="Neversend" label="Non inviare mai"/>
-	</combo_box>
-	<combo_box name="language_combobox">
-		<combo_box.item name="System Default Language" label="Default di sistema"/>
-		<combo_box.item name="English" label="English"/>
-		<combo_box.item name="Danish" label="Dansk (Danese) - Beta"/>
-		<combo_box.item name="Deutsch(German)" label="Deutsch (Tedesco) - Beta"/>
-		<combo_box.item name="Spanish" label="Español (Spagnolo) - Beta"/>
-		<combo_box.item name="French" label="Français (Francese) - Beta"/>
-		<combo_box.item name="Italian" label="Italiano - Beta"/>
-		<combo_box.item name="Hungarian" label="Magyar (Ungherese) - Beta"/>
-		<combo_box.item name="Dutch" label="Nederlands (Olandese) - Beta"/>
-		<combo_box.item name="Polish" label="Polski (Polacco) - Beta"/>
-		<combo_box.item name="Portugese" label="Portugués (Portoghese) - Beta"/>
-		<combo_box.item name="Russian" label="Русский (Russo) - Beta"/>
-		<combo_box.item name="Turkish" label="Türkçe (Turco) - Beta"/>
-		<combo_box.item name="Ukrainian" label="Українська (Ukraino) - Beta"/>
-		<combo_box.item name="Chinese" label="中文 (简体) (Cinese) - Beta"/>
-		<combo_box.item name="(Japanese)" label="日本語 (Giapponese) - Beta"/>
-		<combo_box.item name="(Korean)" label="한국어 (Coreano) - Beta"/>
-	</combo_box>
-	<check_box label="Condividi la tua lingua con gli oggetti" name="language_is_public" tool_tip="Questo fa in modo che gli oggetti inworld riconoscano la tua lingua."/>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml
index 6e1640334f8..647df276337 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml
@@ -1,42 +1,17 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Grafica" name="Display panel">
-	<button label="?" name="GraphicsPreferencesHelpButton"/>
-	<check_box label="Esegui Second Life in una finestra" name="windowed mode"/>
-	<text_editor name="FullScreenInfo" width="480">
-		Se deselezionato, all&apos;avvio il programma partirà a schermo intero.
-	</text_editor>
-	<text name="WindowSizeLabel">
-		Dimensione della finestra:
+	<text name="UI Size:">
+		misura UI:
 	</text>
-	<combo_box name="windowsize combo">
-		<combo_box.item name="640x480" label="640x480"/>
-		<combo_box.item name="800x600" label="800x600"/>
-		<combo_box.item name="720x480" label="720x480 (NTSC)"/>
-		<combo_box.item name="768x576" label="768x576 (PAL)"/>
-		<combo_box.item name="1024x768" label="1024x768"/>
-	</combo_box>
-	<text name="DisplayResLabel">
-		Risoluzione del monitor:
-	</text>
-	<text name="AspectRatioLabel1" tool_tip="larghezza/altezza">
-		Rapporto di visualizzazione:
-	</text>
-	<combo_box name="aspect_ratio" tool_tip="larghezza/altezza">
-		<combo_box.item name="4:3(StandardCRT)" label="4:3 (Monitor Standard)"/>
-		<combo_box.item name="5:4(1280x1024LCD)" label="5:4 (1280x1024 LCD)"/>
-		<combo_box.item name="8:5(Widescreen)" label="8:5 (Widescreen)"/>
-		<combo_box.item name="16:9(Widescreen)" label="16:9 (Widescreen)"/>
-	</combo_box>
-	<check_box label="Autoconfigurazione" name="aspect_auto_detect"/>
-	<text name="HigherText">
-		Qualità e
-	</text>
-	<text name="QualityText">
-		Performance:
+	<text name="QualitySpeed">
+		Qualità e velocità:
 	</text>
 	<text name="FasterText">
 		Più veloce
 	</text>
+	<text name="BetterText">
+		Migliore
+	</text>
 	<text name="ShadersPrefText">
 		Basso
 	</text>
@@ -49,96 +24,82 @@
 	<text name="ShadersPrefText4">
 		Ultra
 	</text>
-	<text name="HigherText2">
-		Più alto
-	</text>
-	<text name="QualityText2">
-		Qualità
-	</text>
-	<check_box label="Personalizzate" name="CustomSettings"/>
-	<panel name="CustomGraphics Panel">
-	<text name="ShadersText">
-		Effetti grafici:
-	</text>
-	<check_box label="Piccoli rilievi e scintillii" name="BumpShiny"/>
-	<check_box label="Effetti grafici base" name="BasicShaders" tool_tip="Disabilitare questa opzione può evitare che qualche scheda grafica vada in crash."/>
-	<check_box label="Effetti grafici atmosferici" name="WindLightUseAtmosShaders"/>
-	<check_box label="Riflessi dell&apos;acqua" name="Reflections"/>
-	<text name="ReflectionDetailText">
-		Dettaglio dei riflessi
-	</text>
-	<radio_group name="ReflectionDetailRadio">
-		<radio_item name="0" label="Terreno ed alberi" />
-		<radio_item name="1" label="Tutti gli aggetti statici" />
-		<radio_item name="2" label="Tutti gli avatar e gli oggetti" />
-		<radio_item name="3" label="Tutto" />
-	</radio_group>
-	<text name="AvatarRenderingText">
-		Rendering dell&apos;avatar:
-	</text>
-	<check_box label="Avatar bidimensionali (Impostor)" name="AvatarImpostors"/>
-	<check_box label="Hardware Skinning" name="AvatarVertexProgram"/>
-	<check_box label="Abiti dell&apos;avatar" name="AvatarCloth"/>
-	<text name="DrawDistanceMeterText1">
-		m
-	</text>
-	<text name="DrawDistanceMeterText2">
-		m
-	</text>
-	<slider label="Distanza di disegno:" name="DrawDistance" label_width="158" width="255"/>
-	<slider label="Conteggio massimo particelle:" name="MaxParticleCount" label_width="158" width="262" />
-	<slider label="Qualità in post-produzione:" name="RenderPostProcess" label_width="158" width="223"/>
-	<text name="MeshDetailText">
-		Dettagli reticolo:
-	</text>
-	<slider label="  Oggetti:" name="ObjectMeshDetail"/>
-	<slider label="  Prims flessibili:" name="FlexibleMeshDetail"/>
-	<slider label="  Alberi:" name="TreeMeshDetail"/>
-	<slider label="  Avatar:" name="AvatarMeshDetail"/>
-	<slider label="  Terreno:" name="TerrainMeshDetail"/>
-	<slider label="  Cielo:" name="SkyMeshDetail"/>
-	<text name="PostProcessText">
-		Basso
-	</text>
-	<text name="ObjectMeshDetailText">
-		Basso
-	</text>
-	<text name="FlexibleMeshDetailText">
-		Basso
-	</text>
-	<text name="TreeMeshDetailText">
-		Basso
-	</text>
-	<text name="AvatarMeshDetailText">
-		Basso
-	</text>
-	<text name="TerrainMeshDetailText">
-		Basso
-	</text>
-	<text name="SkyMeshDetailText">
-		Basso
-	</text>
-	<text name="LightingDetailText">
-		Dettagli illuminazione:
-	</text>
-	<radio_group name="LightingDetailRadio">
-		<radio_item name="SunMoon" label="Solo il sole e la luna" />
-		<radio_item name="LocalLights" label="Luci locali" />
-	</radio_group>
-	<text name="TerrainDetailText">
-		Dettagli terreno:
-	</text>
-	<radio_group name="TerrainDetailRadio">
-		<radio_item name="0" label="Bassi" />
-		<radio_item name="2" label="Alti" />
-	</radio_group>
+	<panel label="CustomGraphics" name="CustomGraphics Panel">
+		<text name="ShadersText">
+			Effetti grafici:
+		</text>
+		<check_box initial_value="true" label="Piccoli rilievi e scintillii" name="BumpShiny"/>
+		<check_box initial_value="true" label="Effetti grafici base" name="BasicShaders" tool_tip="Disabilitare questa opzione può evitare che qualche scheda grafica vada in crash."/>
+		<check_box initial_value="true" label="Effetti grafici atmosferici" name="WindLightUseAtmosShaders"/>
+		<check_box initial_value="true" label="Riflessi dell&apos;acqua" name="Reflections"/>
+		<text name="ReflectionDetailText">
+			Dettaglio dei riflessi
+		</text>
+		<radio_group name="ReflectionDetailRadio">
+			<radio_item label="Terreno e alberi" name="0"/>
+			<radio_item label="Tutti gli aggetti statici" name="1"/>
+			<radio_item label="Tutti gli avatar e gli oggetti" name="2"/>
+			<radio_item label="Tutto" name="3"/>
+		</radio_group>
+		<text name="AvatarRenderingText">
+			Rendering dell&apos;avatar:
+		</text>
+		<check_box initial_value="true" label="Avatar bidimensionali (Impostor)" name="AvatarImpostors"/>
+		<check_box initial_value="true" label="Hardware Skinning" name="AvatarVertexProgram"/>
+		<check_box initial_value="true" label="Abiti dell&apos;avatar" name="AvatarCloth"/>
+		<slider label="Distanza di disegno:" label_width="158" name="DrawDistance" width="255"/>
+		<text name="DrawDistanceMeterText2">
+			m
+		</text>
+		<slider label="Conteggio massimo particelle:" label_width="158" name="MaxParticleCount" width="262"/>
+		<slider label="Qualità in post-produzione:" label_width="158" name="RenderPostProcess" width="223"/>
+		<text name="MeshDetailText">
+			Dettagli reticolo:
+		</text>
+		<slider label="  Oggetti:" name="ObjectMeshDetail"/>
+		<slider label="  Prims flessibili:" name="FlexibleMeshDetail"/>
+		<slider label="  Alberi:" name="TreeMeshDetail"/>
+		<slider label="  Avatar:" name="AvatarMeshDetail"/>
+		<slider label="  Terreno:" name="TerrainMeshDetail"/>
+		<slider label="  Cielo:" name="SkyMeshDetail"/>
+		<text name="PostProcessText">
+			Basso
+		</text>
+		<text name="ObjectMeshDetailText">
+			Basso
+		</text>
+		<text name="FlexibleMeshDetailText">
+			Basso
+		</text>
+		<text name="TreeMeshDetailText">
+			Basso
+		</text>
+		<text name="AvatarMeshDetailText">
+			Basso
+		</text>
+		<text name="TerrainMeshDetailText">
+			Basso
+		</text>
+		<text name="SkyMeshDetailText">
+			Basso
+		</text>
+		<text name="LightingDetailText">
+			Dettagli illuminazione:
+		</text>
+		<radio_group name="LightingDetailRadio">
+			<radio_item label="Solo il sole e la luna" name="SunMoon"/>
+			<radio_item label="Luci locali" name="LocalLights"/>
+		</radio_group>
+		<text name="TerrainDetailText">
+			Dettagli terreno:
+		</text>
+		<radio_group name="TerrainDetailRadio">
+			<radio_item label="Basso" name="0"/>
+			<radio_item label="Alto" name="2"/>
+		</radio_group>
 	</panel>
-	<button label="Configurazione raccomandata" name="Defaults" left="110" width="190" />
-	<button label="Opzioni hardware" label_selected="Opzioni hardware" name="GraphicsHardwareButton"/>
-	<panel.string name="resolution_format">
-		[RES_X] x [RES_Y]
-	</panel.string>
-	<panel.string name="aspect_ratio_text">
-		[NUM]:[DEN]
-	</panel.string>
+	<button label="Applica" label_selected="Applica" name="Apply"/>
+	<button label="Resetta" left="110" name="Defaults" width="190"/>
+	<button label="Avanzato" name="Advanced"/>
+	<button label="Hardware" label_selected="Hardware" name="GraphicsHardwareButton"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/it/panel_preferences_privacy.xml
index 2249d946880..c84edbb47eb 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_privacy.xml
@@ -1,33 +1,27 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Comunicazioni" name="im">
-	<text name="text_box">
-		Il mio stato online:
+<panel label="Comunicazione" name="im">
+	<panel.string name="log_in_to_change">
+		log in per cambiare
+	</panel.string>
+	<button label="Pulisci la cronologia" name="clear_cache"/>
+	<text name="cache_size_label_l">
+		(Luoghi, immagini, web, cronologia del search)
 	</text>
-	<check_box label="Solo i miei amici e i miei gruppi possono vedermi online" name="online_visibility"/>
-	<text name="text_box2">
-		Opzioni IM:
+	<check_box label="Solo amici e gruppi mi vedono online" name="online_visibility"/>
+	<check_box label="Solo amici e gruppi possono chiamarmi o mandarmi IM" name="voice_call_friends_only_check"/>
+	<check_box label="Spegnere il microfono quando chiudi le chiamate" name="auto_disengage_mic_check"/>
+	<check_box label="Accetta cookies" name="cookies_enabled"/>
+	<check_box label="Permettere Media Autoplay" name="autoplay_enabled"/>
+	<text name="Logs:">
+		Logs:
 	</text>
-	<string name="log_in_to_change">
-		Effettua login per cambiare
-	</string>
-	<check_box label="Invia gli IM alla mia email ([EMAIL])" name="send_im_to_email"/>
-	<check_box label="Inserisci gli IM nella console della chat" name="include_im_in_chat_console"/>
-	<check_box label="Mostra l&apos;orario negli IM" name="show_timestamps_check"/>
-	<check_box label="Mostrami le notifiche degli amici online" name="friends_online_notify_checkbox"/>
-	<text name="text_box3">
-		Risposta agli IM quando
-sono in &apos;Occupato&apos;:
-	</text>
-	<text name="text_box4" width="136">
-		Opzioni salvataggio chat:
-	</text>
-	<check_box label="Salva una copia degli IM sul mio computer" name="log_instant_messages"/>
-	<check_box label="Mostra l&apos;orario nei registri IM" name="log_instant_messages_timestamp"/>
-	<check_box label="Mostra la parte finale della precedente conversazione IM" name="log_show_history"/>
-	<check_box label="Salva un registro della chat locale sul mio computer" name="log_chat"/>
-	<check_box label="Mostra l&apos;orario nei registri della chat locale" name="log_chat_timestamp"/>
-	<check_box label="Mostra gli IM entranti nel registro della chat locale" name="log_chat_IM"/>
-	<check_box label="Includi la data nell&apos;orario" name="log_date_timestamp"/>
-	<button label="Cambia percorso" label_selected="Cambia percorso" name="log_path_button" width="130"/>
+	<check_box label="Salvare le ultime chat logs nel mio computer" name="log_nearby_chat"/>
+	<check_box label="Salvare gli IM logs nel mio computer" name="log_instant_messages"/>
+	<check_box label="Aggiungere orario" name="show_timestamps_check_im"/>
 	<line_editor left="288" name="log_path_string" right="-20"/>
+	<text name="log_path_desc">
+		Luoghi delle logs
+	</text>
+	<button label="Browse" label_selected="Browse" name="log_path_button" width="130"/>
+	<button label="Bloccare lista" name="block_list"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_setup.xml b/indra/newview/skins/default/xui/it/panel_preferences_setup.xml
index e1239d58202..17257a7cb8c 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_setup.xml
@@ -1,36 +1,46 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Controlli &amp; Telecamera" name="Input panel">
-	<text name=" Mouselook Options:">
-		Opzioni visualizzazione
-in soggettiva:
-	</text>
-	<text name=" Mouse Sensitivity:">
-		Sensibilità del mouse:
-	</text>
-	<check_box label="Inverti i controlli del mouse" name="invert_mouse"/>
-	<text name=" Auto Fly Options:">
-		Opzioni di volo
-automatico:
-	</text>
-	<check_box label="Vola/atterra premendo su/giù" name="automatic_fly"/>
-	<text name=" Camera Options:">
-		Opzioni della
-telecamera:
-	</text>
-	<text name="camera_fov_label" width="218">
-		Angolo di visualizzazione della telecamera:
-	</text>
-	<slider bottom_delta="-6" width="128" left="366" name="camera_fov" />
-	<text name="Camera Follow Distance:" width="218">
-		Distanza della telecamera dall&apos;avatar:
-	</text>
-	<slider bottom_delta="-6" width="128" left="366" name="camera_offset_scale" />
-	<check_box label="Movimenti automatici della telecamera in &#10;modalità modifica oggetti" name="edit_camera_movement" tool_tip="Usa il posizionamento automatico della telecamera entrando e uscendo dalla modalità modifica oggetti"/>
-	<check_box bottom_delta="-34" label="Movimenti automatici della telecamera in &#10;modalità aspetto fisico" name="appearance_camera_movement" tool_tip="Usa il posizionamento automatico della telecamera durante la modalità modifica oggetti"/>
-	<text name="text2" bottom_delta="-42">
-		Opzione di visualizzazione
-dell&apos;avatar:
-	</text>
-	<check_box label="Mostra l&apos;avatar in prima persona" name="first_person_avatar_visible"/>
-	<button bottom_delta="-40" label="Installazione del joystick" name="joystick_setup_button" width="165"/>
+<panel label="Input &amp; Camera" name="Input panel">
+	<button bottom_delta="-40" label="Altri Dispositivi" name="joystick_setup_button" width="165"/>
+	<text name="Mouselook:">
+		Mouselook:
+	</text>
+	<text name=" Mouse Sensitivity">
+		Sensibilità del Mouse
+	</text>
+	<check_box label="Inverti" name="invert_mouse"/>
+	<text name="Network:">
+		Network:
+	</text>
+	<text name="Maximum bandwidth">
+		Banda Massima
+	</text>
+	<text name="text_box2">
+		kbps
+	</text>
+	<check_box label="Custom port" name="connection_port_enabled"/>
+	<spinner label="Port number:" name="web_proxy_port"/>
+	<text name="cache_size_label_l">
+		Cache size
+	</text>
+	<text name="text_box5">
+		MB
+	</text>
+	<button label="Browse" label_selected="Browse" name="set_cache"/>
+	<button label="Resetta" label_selected="Imposta" name="reset_cache"/>
+	<text name="Cache location">
+		Cache location
+	</text>
+	<text name="Web:">
+		Web:
+	</text>
+	<radio_group name="use_external_browser">
+		<radio_item label="Usa il built-in browser" name="internal" tool_tip="Usa il built-in web browser per aiuto, web links, etc. Questo browser apre come una nuova finestra all&apos;interno [APP_NAME]."/>
+		<radio_item label="Usa il mio browser (IE, Firefox)" name="external" tool_tip="Usa il default system web browser per aiuto, web links, etc. Non raccomandato se utilizzi lo schermo pieno(full screen)."/>
+	</radio_group>
+	<check_box initial_value="false" label="Web proxy" name="web_proxy_enabled"/>
+	<line_editor name="web_proxy_editor" tool_tip="Nome o indirizzo IP del proxy che vorresti usare"/>
+	<button label="Browse" label_selected="Browse" name="set_proxy"/>
+	<text name="Proxy location">
+		Proxy location
+	</text>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_sound.xml b/indra/newview/skins/default/xui/it/panel_preferences_sound.xml
index 41f67951c2a..c4d46291dd5 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_sound.xml
@@ -1,38 +1,38 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Audio &amp; Video" name="Preference Media panel">
-	<slider label="Master" name="System Volume"/>
+<panel label="Suoni" name="Preference Media panel">
+	<slider label="Principale" name="System Volume"/>
+	<check_box initial_value="true" label="Spegni suono se minimizzato" name="mute_when_minimized"/>
 	<slider label="Ambiente" name="Wind Volume"/>
-	<slider label="Suoni" name="SFX Volume"/>
-	<slider label="Media" name="Media Volume"/>
-	<slider label="Interfaccia utente" name="UI Volume"/>
+	<slider label="Pulsanti" name="UI Volume"/>
+	<slider label="MultiMedia" name="Media Volume"/>
+	<slider label="Effetto Suoni" name="SFX Volume"/>
 	<slider label="Musica" name="Music Volume"/>
+	<check_box label="Voce" name="enable_voice_check"/>
 	<slider label="Voice" name="Voice Volume"/>
-	<text_editor name="voice_unavailable">
-		Voice chat non disponibile
-	</text_editor>
-	<check_box label="Abilita voice chat" name="enable_voice_check"/>
+	<text name="Listen from">
+		Ascolta da:
+	</text>
 	<radio_group name="ear_location">
-		<radio_item name="0" label="Ascolta voice chat dalla posizione della telecamera" />
-		<radio_item name="1" label="Ascolta voice chat dalla posizione dell&apos;avatar" />
+		<radio_item label="Posizione della Camera" name="0"/>
+		<radio_item label="Posizione dell&apos;Avatar" name="1"/>
 	</radio_group>
-	<button label="Configurazione periferica" name="device_settings_btn" width="165"/>
-	<text name="muting_text">
-		Volume:
-	</text>
-	<text name="streaming_prefs_text" bottom="-195" >
-		Preferenze Streaming:
-	</text>
-	<text name="audio_prefs_text">
-		Preferenze Audio:
-	</text>
-	<panel label="Volume" name="Volume Panel"/>
-	<check_box label="Ascolta il canale della musica" name="streaming_music"/>
-	<check_box height="32" label="Guarda i video" name="streaming_video"/>
-	<check_box label="Attiva automaticamente i video" name="auto_streaming_video"/>
-	<check_box label="Muta l&apos;audio quando minimizzi la finestra" name="mute_when_minimized"/>
-	<slider label="Effetto Doppler" name="Doppler Effect" label_width="140" width="270" />
-	<slider label="Fattore di Distanza" name="Distance Factor" label_width="140" width="270"/>
-	<slider label="Fattore di Allontanamento" name="Rolloff Factor" label_width="140" width="270"/>
-	<spinner label="Suono di Avviso Transazioni &#8805; a L$" name="L$ Change Threshold" label_width="195" width="259"/>
-	<spinner label="Livello vitale dell&apos;avatar" name="Health Change Threshold" label_width="195" width="259"/>
+	<button label="Dispositivi di Input/Output" name="device_settings_btn" width="165"/>
+	<panel label="Impostazioni del dispositivo" name="device_settings_panel">
+		<panel.string name="default_text">
+			Predefinito
+		</panel.string>
+		<text name="Input">
+			Input
+		</text>
+		<text name="My volume label">
+			Mio volume:
+		</text>
+		<slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Cambia il volume utilizzando questa barra"/>
+		<text name="wait_text">
+			Attendi
+		</text>
+		<text name="Output">
+			Output
+		</text>
+	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/it/panel_prim_media_controls.xml
new file mode 100644
index 00000000000..dc7d59084e3
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_prim_media_controls.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="MediaControls">
+	<layout_stack name="media_controls">
+		<layout_panel name="media_address">
+			<line_editor name="media_address_url" tool_tip="Media URL"/>
+			<layout_stack name="media_address_url_icons">
+				<layout_panel>
+					<icon name="media_whitelist_flag" tool_tip="Lista Bianca attivata"/>
+				</layout_panel>
+				<layout_panel>
+					<icon name="media_secure_lock_flag" tool_tip="Secured Browsing"/>
+				</layout_panel>
+			</layout_stack>
+		</layout_panel>
+		<layout_panel name="media_play_position">
+			<slider_bar initial_value="0.5" name="media_play_slider" tool_tip="Avanzamento riproduzione Movie"/>
+		</layout_panel>
+		<layout_panel name="media_volume">
+			<button name="media_mute_button" tool_tip="Silenzia questo Media ????"/>
+			<slider name="volume_slider" tool_tip="Volume Media"/>
+		</layout_panel>
+	</layout_stack>
+	<layout_stack>
+		<panel name="media_progress_indicator">
+			<progress_bar name="media_progress_bar" tool_tip="Media stà caricando"/>
+		</panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_profile.xml b/indra/newview/skins/default/xui/it/panel_profile.xml
index 2aa8b7d0e4a..837aa4ac654 100644
--- a/indra/newview/skins/default/xui/it/panel_profile.xml
+++ b/indra/newview/skins/default/xui/it/panel_profile.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_profile">
+<panel label="Profilo" name="panel_profile">
 	<string name="CaptionTextAcctInfo">
 		[ACCTTYPE]
 [PAYMENTINFO] [AGEVERIFICATION]
@@ -11,4 +11,38 @@
 		http://www.secondlife.com/account/partners.php?lang=it
 	</string>
 	<string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=it-IT"/>
+	<string name="no_partner_text" value="Nessuno"/>
+	<string name="RegisterDateFormat">
+		[REG_DATE] ([AGE])
+	</string>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<panel name="second_life_image_panel">
+				<text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
+			</panel>
+			<panel name="first_life_image_panel">
+				<text name="title_rw_descr_text" value="Mondo Reale:"/>
+			</panel>
+			<text name="me_homepage_text">
+				Homepage:
+			</text>
+			<text name="title_member_text" value="Membro dal:"/>
+			<text name="title_acc_status_text" value="Stato dell&apos;Account:"/>
+			<text name="acc_status_text" value="Resident. No payment info on file."/>
+			<text name="title_partner_text" value="Partner:"/>
+			<text name="title_groups_text" value="Gruppi:"/>
+		</panel>
+	</scroll_container>
+	<panel name="profile_buttons_panel">
+		<button label="Aggiungi Amico" name="add_friend" tool_tip="Offri amicizia ad un residente"/>
+		<button label="IM" name="im" tool_tip="Apri una sessione instant message"/>
+		<button label="Chiama" name="call" tool_tip="Chiama questo residente"/>
+		<button label="Mappa" name="show_on_map_btn" tool_tip="Mostra il residente sulla mappa"/>
+		<button label="Teleport" name="teleport" tool_tip="Offri teleport"/>
+		<button label="â–¼" name="overflow_btn" tool_tip="Paga o condividi l&apos;inventario con il residente"/>
+	</panel>
+	<panel name="profile_me_buttons_panel">
+		<button label="Modifica Profilo" name="edit_profile_btn"/>
+		<button label="Modifica Aspetto" name="edit_appearance_btn"/>
+	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_profile_view.xml b/indra/newview/skins/default/xui/it/panel_profile_view.xml
new file mode 100644
index 00000000000..bf89a3e6f6b
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_profile_view.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_target_profile">
+	<string name="status_online">
+		Online
+	</string>
+	<string name="status_offline">
+		Offline
+	</string>
+	<text_editor name="user_name" value="(Caricando...)"/>
+	<text name="status" value="Online"/>
+	<tab_container name="tabs">
+		<panel label="PROFILO" name="panel_profile"/>
+		<panel label="PREFERITI" name="panel_picks"/>
+		<panel label="NOTE &amp; PRIVACY" name="panel_notes"/>
+	</tab_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_region_covenant.xml b/indra/newview/skins/default/xui/it/panel_region_covenant.xml
index 9dfecde317c..f35b451ac1f 100644
--- a/indra/newview/skins/default/xui/it/panel_region_covenant.xml
+++ b/indra/newview/skins/default/xui/it/panel_region_covenant.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Regolamento" name="Covenant">
 	<text name="estate_section_lbl">
-		Proprietà:
+		Proprietà immobiliare
 	</text>
 	<text name="estate_name_lbl">
 		Nome:
@@ -22,49 +22,48 @@
 		Ultima modifica Merc 31 Dic 1969 16:00:00
 	</text>
 	<button label="?" name="covenant_help"/>
-	<text_editor name="covenant_editor"  bottom="-247" height="162" >
+	<text_editor bottom="-247" height="162" name="covenant_editor">
 		Per questa proprietà non è stato emesso alcun regolamento.
 	</text_editor>
 	<button label="Ripristina" name="reset_covenant"/>
-	<text  bottom="-25" name="covenant_help_text">
+	<text bottom="-25" name="covenant_help_text">
 		Le modifiche nel regolamento saranno visibili su tutti i terreni
       della proprietà.
 	</text>
-	<text  bottom_delta="-36" name="covenant_instructions">
-		Trascina e rilascia una notecard per cambiare il regolamento di
-      questa proprietà.
+	<text bottom_delta="-36" name="covenant_instructions">
+		Trascina ed inserisci una notecard per cambiare i Covenant di questa proprietà immobiliare.
 	</text>
 	<text name="region_section_lbl">
-		Regione:
+		Regione
 	</text>
 	<text name="region_name_lbl">
 		Nome:
 	</text>
-	<text name="region_name_text" left="126">
+	<text left="126" name="region_name_text">
 		leyla
 	</text>
 	<text name="region_landtype_lbl">
 		Tipo:
 	</text>
-	<text name="region_landtype_text" left="126">
+	<text left="126" name="region_landtype_text">
 		Mainland / Homestead
 	</text>
 	<text name="region_maturity_lbl" width="115">
 		Categoria di accesso:
 	</text>
-	<text name="region_maturity_text" left="126">
+	<text left="126" name="region_maturity_text">
 		Adult
 	</text>
 	<text name="resellable_lbl">
 		Rivendita:
 	</text>
-	<text name="resellable_clause" left="126">
+	<text left="126" name="resellable_clause">
 		La terra in questa regione non può essere rivenduta.
 	</text>
 	<text name="changeable_lbl">
 		Suddividi:
 	</text>
-	<text name="changeable_clause" left="126">
+	<text left="126" name="changeable_clause">
 		La terra in questa regione non può essere unita/suddivisa.
 	</text>
 	<string name="can_resell">
diff --git a/indra/newview/skins/default/xui/it/panel_region_debug.xml b/indra/newview/skins/default/xui/it/panel_region_debug.xml
index 85fb968ab46..9e81d42410e 100644
--- a/indra/newview/skins/default/xui/it/panel_region_debug.xml
+++ b/indra/newview/skins/default/xui/it/panel_region_debug.xml
@@ -22,18 +22,18 @@
 	<line_editor name="target_avatar_name">
 		(nessuno)
 	</line_editor>
-	<button label="Scegli..." name="choose_avatar_btn"/>
+	<button label="Scegli" name="choose_avatar_btn"/>
 	<text name="options_text_lbl">
 		Opzioni:
 	</text>
-	<check_box label="Restituisci gli oggetti con script" name="return_scripts" tool_tip="Restituisci solo gli oggetti contenenti script."/>
-	<check_box label="Restituisci solo gli oggetti che sono sulle terre altrui" name="return_other_land" tool_tip="Restituisci solo gli oggetti che sono in terreni appartenenti a qualcun altro"/>
-	<check_box label="Restituisci gli oggetti in ogni regione di questi possedimenti" name="return_estate_wide" tool_tip="Restituisci tutti gli oggetti nelle varie regioni che costituiscono l&apos;insieme dei possedimenti terrieri"/>
+	<check_box label="Con scripts" name="return_scripts" tool_tip="Ritorna solo gli oggetti che hanno scripts"/>
+	<check_box label="Sulla terra di qualcun&apos;altro" name="return_other_land" tool_tip="Restituisci solo gli oggetti che sono in terreni appartenenti a qualcun altro"/>
+	<check_box label="In ogni regione di questa proprietà" name="return_estate_wide" tool_tip="Restituisci tutti gli oggetti nelle varie regioni che costituiscono l&apos;insieme dei possedimenti terrieri"/>
 	<button label="Restituisci" name="return_btn"/>
-	<button width="280" label="Visualizza l&apos;elenco dei maggiori collidenti..." name="top_colliders_btn" tool_tip="Elenco degli oggetti che stanno potenzialmente subendo le maggiori collisioni"/>
-	<button label="?" name="top_colliders_help" left="297"/>
-	<button width="280" label="Visualizza l&apos;elenco degli script più pesanti..." name="top_scripts_btn" tool_tip="Elenco degli oggetti che impiegano più tempo a far girare gli script"/>
-	<button label="?" name="top_scripts_help" left="297"/>
+	<button label="Visualizza l&apos;elenco dei maggiori collidenti..." name="top_colliders_btn" tool_tip="Elenco degli oggetti che stanno potenzialmente subendo le maggiori collisioni" width="280"/>
+	<button label="?" left="297" name="top_colliders_help"/>
+	<button label="Visualizza l&apos;elenco degli script più pesanti..." name="top_scripts_btn" tool_tip="Elenco degli oggetti che impiegano più tempo a far girare gli script" width="280"/>
+	<button label="?" left="297" name="top_scripts_help"/>
 	<button label="Riavvia la regione" name="restart_btn" tool_tip="Dai 2 minuti di tempo massimo e fai riavviare la regione"/>
 	<button label="?" name="restart_help"/>
 	<button label="Ritarda il riavvio" name="cancel_restart_btn" tool_tip="Ritarda il riavvio della regione di un&apos;ora"/>
diff --git a/indra/newview/skins/default/xui/it/panel_region_estate.xml b/indra/newview/skins/default/xui/it/panel_region_estate.xml
index 5b95b7378be..b6dc60a9c27 100644
--- a/indra/newview/skins/default/xui/it/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/it/panel_region_estate.xml
@@ -11,7 +11,7 @@ avranno effetto su tutte le regioni della proprietà.
 		(sconosciuto)
 	</text>
 	<text name="owner_text">
-		Proprietario:
+		Proprietario immobiliare:
 	</text>
 	<text name="estate_owner">
 		(sconosciuto)
@@ -24,10 +24,10 @@ avranno effetto su tutte le regioni della proprietà.
 	<check_box label="Permetti accesso pubblico" name="externally_visible_check"/>
 	<button label="?" name="externally_visible_help"/>
 	<text name="Only Allow">
-		Limita l&apos;accesso a residenti...
+		Accesso ristretto ai Residenti verificati con:
 	</text>
-	<check_box label="che hanno dato info. di pagamento" name="limit_payment" tool_tip="Blocca residenti non identificati."/>
-	<check_box label="Adulti con età verificata" name="limit_age_verified" tool_tip="Blocca residenti che non hanno verificato la loro età. Per maggiori informazioni vai a support.secondlife.com."/>
+	<check_box label="Informazioni di pagamento on File" name="limit_payment" tool_tip="Espelli residenti non identificati"/>
+	<check_box label="Verifica dell&apos;età" name="limit_age_verified" tool_tip="Espelli i residenti che non hanno verificato l&apos;età. Vedi [SUPPORT_SITE] per maggiori informazioni."/>
 	<check_box label="Permetti la chat voice" name="voice_chat_check"/>
 	<button label="?" name="voice_chat_help"/>
 	<check_box label="Permetti teleport diretto" name="allow_direct_teleport"/>
diff --git a/indra/newview/skins/default/xui/it/panel_region_texture.xml b/indra/newview/skins/default/xui/it/panel_region_texture.xml
index 254700e9f1f..23d6915a2fd 100644
--- a/indra/newview/skins/default/xui/it/panel_region_texture.xml
+++ b/indra/newview/skins/default/xui/it/panel_region_texture.xml
@@ -45,13 +45,13 @@
 	<spinner label="Alta" name="height_range_spin_2"/>
 	<spinner label="Alta" name="height_range_spin_3"/>
 	<text name="height_text_lbl10">
-		Questi valori rappresentano l&apos;intervallo di miscelazione delle texture qui sopra.
+		Questi valori riproducono l&apos;insieme della gamma delle textures superiori.
 	</text>
 	<text name="height_text_lbl11">
-		Misurato in metri, il valore più BASSO corrisponde all&apos;altezza MASSIMA della
+		Misurato in metri, il valore MINIMO è l&apos;altezza MASSIMA della Texture n°1, e il valore MASSIMO è l&apos;altezza MINIMA della Texture n°4.
 	</text>
 	<text name="height_text_lbl12">
-		  Texture #1, e il valore più ALTO all&apos;altezza MINIMA della Texture #4.
+		Texture #1, e il valore più ALTO all&apos;altezza MINIMA della Texture #4.
 	</text>
 	<button label="Applica" name="apply_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_script_ed.xml b/indra/newview/skins/default/xui/it/panel_script_ed.xml
new file mode 100644
index 00000000000..a98a88950c9
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_script_ed.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="script panel">
+	<panel.string name="loading">
+		Caricando...
+	</panel.string>
+	<panel.string name="can_not_view">
+		Non puoi vedere o modificare questo script, perchè è impostato come &quot;no copy&quot;. Necesiti tutti i permessi per vedere o modificare lo script dentro un oggetto..
+	</panel.string>
+	<panel.string name="public_objects_can_not_run">
+		Oggetti Pubblici non possono attivare scripts
+	</panel.string>
+	<panel.string name="script_running">
+		Attivando
+	</panel.string>
+	<panel.string name="Title">
+		Script: [NAME]
+	</panel.string>
+	<text_editor name="Script Editor">
+		Caricando...
+	</text_editor>
+	<button label="Salva" label_selected="Salva" name="Save_btn"/>
+	<combo_box label="Inserire..." name="Insert..."/>
+	<menu_bar name="script_menu">
+		<menu label="File" name="File">
+			<menu_item_call label="Salva" name="Save"/>
+			<menu_item_call label="Annulla tutti i cambiamenti" name="Revert All Changes"/>
+		</menu>
+		<menu label="Modifica" name="Edit">
+			<menu_item_call label="Slaccia" name="Undo"/>
+			<menu_item_call label="Rifai" name="Redo"/>
+			<menu_item_call label="Taglia" name="Cut"/>
+			<menu_item_call label="Copia" name="Copy"/>
+			<menu_item_call label="Incolla" name="Paste"/>
+			<menu_item_call label="Seleziona Tutto" name="Select All"/>
+			<menu_item_call label="Deseleziona" name="Deselect"/>
+			<menu_item_call label="Cerca / Sostituisci..." name="Search / Replace..."/>
+		</menu>
+		<menu label="Aiuto" name="Help">
+			<menu_item_call label="Aiuto..." name="Help..."/>
+			<menu_item_call label="Aiuto nella tastiera..." name="Keyword Help..."/>
+		</menu>
+	</menu_bar>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_side_tray.xml b/indra/newview/skins/default/xui/it/panel_side_tray.xml
new file mode 100644
index 00000000000..06bc51f5db3
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_side_tray.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Side tray cannot show background because it is always
+	partially on screen to hold tab buttons. -->
+<side_tray name="sidebar">
+	<sidetray_tab description="Casa." name="sidebar_home">
+		<panel label="casa" name="panel_home"/>
+	</sidetray_tab>
+	<sidetray_tab description="Trova i tuoi amici, contatti e persone nelle vicinanze." name="sidebar_people">
+		<panel_container name="panel_container">
+			<panel label="Info di Gruppo" name="panel_group_info_sidetray"/>
+			<panel label="Residenti bloccati &amp; Oggetti" name="panel_block_list_sidetray"/>
+		</panel_container>
+	</sidetray_tab>
+	<sidetray_tab description="Trova luoghi dove andare e luoghi già visitati." label="Luoghi" name="sidebar_places">
+		<panel label="Luoghi" name="panel_places"/>
+	</sidetray_tab>
+	<sidetray_tab description="Modifica il tuo profilo pubblico e le foto." name="sidebar_me">
+		<panel label="Io" name="panel_me"/>
+	</sidetray_tab>
+	<sidetray_tab description="Cambia il tuo aspetto ed il tuo look attuale." name="sidebar_appearance">
+		<panel label="Modifica Aspetto" name="sidepanel_appearance"/>
+	</sidetray_tab>
+	<sidetray_tab description="Curiosa nel tuo inventario." name="sidebar_inventory">
+		<panel label="Modifica Inventario" name="sidepanel_inventory"/>
+	</sidetray_tab>
+</side_tray>
diff --git a/indra/newview/skins/default/xui/it/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/it/panel_side_tray_tab_caption.xml
new file mode 100644
index 00000000000..5e5f229ce45
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_side_tray_tab_caption.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="sidetray_tab_panel">
+	<text name="sidetray_tab_title" value="Vaschetta laterale"/>
+	<button name="show_help" tool_tip="Mostra Aiuto"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/it/panel_stand_stop_flying.xml
new file mode 100644
index 00000000000..2fafc38ba17
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_stand_stop_flying.xml
@@ -0,0 +1,6 @@
+<?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 name="panel_stand_stop_flying">
+	<button label="Stare in piedi" name="stand_btn" tool_tip="Clicca qui per alzarti."/>
+	<button label="Ferma il volo" name="stop_fly_btn" tool_tip="Ferma il volo"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_status_bar.xml b/indra/newview/skins/default/xui/it/panel_status_bar.xml
index dfaacb659e3..9acbb34c790 100644
--- a/indra/newview/skins/default/xui/it/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/it/panel_status_bar.xml
@@ -1,38 +1,29 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="status">
-	<text name="ParcelNameText" tool_tip="Nome dell&apos;appezzamento di terreno su cui sei. Clicca &apos;Informazioni sul terreno&apos;.">
-		indica qui il nome del terreno
-	</text>
-	<text name="BalanceText" tool_tip="Saldo dell&apos;Account">
-		In caricamento ...
-	</text>
-	<button label="" label_selected="" name="buycurrency" tool_tip="Acquista valuta"/>
-	<text name="TimeText" tool_tip="Ora corrente (Pacifico)">
-		12:00 AM
-	</text>
-	<string name="StatBarDaysOfWeek">
+	<panel.string name="StatBarDaysOfWeek">
 		Domenica:Lunedì:Martedì:Mercoledì:Giovedì:Venerdì:Sabato
-	</string>
-	<string name="StatBarMonthsOfYear">
+	</panel.string>
+	<panel.string name="StatBarMonthsOfYear">
 		Gennaio:Febbraio:Marzo:Aprile:Maggio:Giugno:Luglio:Agosto:Settembre:Ottobre:Novembre:Dicembre
-	</string>
-	<button label="" label_selected="" name="scriptout" tool_tip="Avvisi ed Errori degli script"/>
-	<button label="" label_selected="" name="health" tool_tip="Salute"/>
-	<text name="HealthText" tool_tip="Salute">
-		100%
-	</text>
-	<button label="" label_selected="" name="no_fly" tool_tip="Volo non permesso"/>
-	<button label="" label_selected="" name="no_build" tool_tip="Costruzione non permessa"/>
-	<button label="" label_selected="" name="no_scripts" tool_tip="Script non permessi"/>
-	<button label="" label_selected="" name="restrictpush" tool_tip="Vietato spingere"/>
-	<button label="" label_selected="" name="status_no_voice" tool_tip="Voice non disponibile qui"/>
-	<button label="" label_selected="" name="buyland" tool_tip="Compra questo terreno"/>
-	<line_editor label="Cerca" name="search_editor" tool_tip="Cerca in [SECOND_LIFE]"/>
-	<button label="" label_selected="" name="search_btn" tool_tip="Cerca in [SECOND_LIFE]"/>
-	<string name="packet_loss_tooltip">
+	</panel.string>
+	<panel.string name="packet_loss_tooltip">
 		Perdita di pacchetti
-	</string>
-	<string name="bandwidth_tooltip">
+	</panel.string>
+	<panel.string name="bandwidth_tooltip">
 		Larghezza di banda
-	</string>
+	</panel.string>
+	<panel.string name="time">
+		[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
+	</panel.string>
+	<panel.string name="timeTooltip">
+		[weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
+	</panel.string>
+	<panel.string name="buycurrencylabel">
+		L$ [AMT]
+	</panel.string>
+	<button label="" label_selected="" name="buycurrency" tool_tip="Il mio saldo: Clicca per comprare più L$"/>
+	<text name="TimeText" tool_tip="Ora attuale (Pacific)">
+		12:00 AM
+	</text>
+	<button name="volume_btn" tool_tip="Controllo del volume globale"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_teleport_history.xml b/indra/newview/skins/default/xui/it/panel_teleport_history.xml
new file mode 100644
index 00000000000..3f02b1449a5
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_teleport_history.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="Teleport History">
+	<accordion name="history_accordion">
+		<accordion_tab name="today" title="Oggi"/>
+		<accordion_tab name="yesterday" title="Ieri"/>
+		<accordion_tab name="2_days_ago" title="2 giorni fà"/>
+		<accordion_tab name="3_days_ago" title="3 giorni fà"/>
+		<accordion_tab name="4_days_ago" title="4 giorni fà"/>
+		<accordion_tab name="5_days_ago" title="5 giorni fà"/>
+		<accordion_tab name="6_days_and_older" title="6 giorni fà o più vecchio"/>
+		<accordion_tab name="1_month_and_older" title="1 mese o più vecchio"/>
+		<accordion_tab name="6_months_and_older" title="6 mesi o più vecchio"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_world_map.xml b/indra/newview/skins/default/xui/it/panel_world_map.xml
index d00157a2973..1349b36e2c0 100644
--- a/indra/newview/skins/default/xui/it/panel_world_map.xml
+++ b/indra/newview/skins/default/xui/it/panel_world_map.xml
@@ -1,5 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="world_map">
+	<panel.string name="Loading">
+		Sto Caricando...
+	</panel.string>
+	<panel.string name="InvalidLocation">
+		Luogo non valido
+	</panel.string>
 	<panel.string name="world_map_north">
 		N
 	</panel.string>
diff --git a/indra/newview/skins/default/xui/it/role_actions.xml b/indra/newview/skins/default/xui/it/role_actions.xml
new file mode 100644
index 00000000000..eab8e6b4e3d
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/role_actions.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<role_actions>
+	<action_set description="Queste abilità permettono di aggiungere e rimuovere Membri dal gruppo, e permettono ai nuovi membri di aderire al gruppo senza invito." name="Membership">
+		<action description="Invitare persone in questo Gruppo" longdescription="Invita Persone in questo Gruppo usando il bottone &apos;Invita&apos; nella sezione Ruoli &gt; tabella Membri." name="member invite"/>
+		<action description="Espellere Membri da questo Gruppo" longdescription="Espelli Membri dal Gruppo usando il bottone &apos;Espelli&apos; nella sezione Ruoli &gt; tabella Membri. Un Proprietario può espellere chiunque eccetto un altro Proprietario. Se tu non sei un Proprietario, un Membro può essere espulso da un gruppo solo ed unicamente, se hanno il Ruolo Everyone, e nessun altro Ruolo. Per rimuovere Membri dai Ruoli, devi avere l&apos;Abilità &apos;Rimuovi Membri dai Ruoli&apos;." name="member eject"/>
+		<action description="Seleziona &apos;Iscrizione libera&apos; e modifica da &apos;Tassa d&apos;Iscrizione&apos;" longdescription="Seleziona &apos;Iscrizione libera&apos; per permettere ai nuovi Membri di aderire senza invito, e modifica da &apos;Tassa d&apos;Iscrizione&apos; nella sezione Generale." name="member options"/>
+	</action_set>
+	<action_set description="Queste Abilità permettono di aggiungere, rimuovere, cambiare i Ruoli del Gruppo, aggiungere e rimuovere Membri dai Ruoli, e assegnare Abilità ai Ruoli." name="Roles">
+		<action description="Creare nuovi Ruoli" longdescription="Crea nuovi Ruoli nella sezione Ruoli &gt; tabella Ruoli." name="role create"/>
+		<action description="Cancellare Ruoli" longdescription="Cancella Ruoli nella sezione Ruoli &gt; tabella Ruoli." name="role delete"/>
+		<action description="Cambia i nomi del Ruolo, titoli, descrizioni, se i membri in quel Ruolo sono resi pubblici" longdescription="Cambia i nomi del Ruolo, titoli, descrizioni, se i membri in quel Ruolo sono resi pubblici. Viene fatto nella parte bassa della sezione Ruoli &gt; tabella Ruoli dopo avere selezionato un Ruolo." name="role properties"/>
+		<action description="Incaricare Membri ad Assegnare Ruoli" longdescription="Assegna un Ruolo a Membri nella lista dei Ruoli assegnati (Roles section &gt; Members tab). Un Membro con questa Abilità può aggiungere Membri ad un Ruolo già presente nell&apos;elenco." name="role assign member limited"/>
+		<action description="Assegnare Membri a tutti i Ruoli" longdescription="Assegna Tutti i Ruoli a Membri nella lista dei Ruoli Assegnati (Roles section &gt; Members tab). *ATTENZIONE* Ogni Membro con questo Ruolo e Abilità può assegnarsi -- e assegnare ad altri Membri non Proprietari-- Ruoli con poteri maggiori di quelli normalmente concessi, potenzialmente elevandosi ai poteri concessi al Proprietario. Siate sicuri di quello che fate prima di assegnare questa Abilità." name="role assign member"/>
+		<action description="Rimuovere Membri dai Ruoli" longdescription="Rimuovi dai Ruoli i Membri nella lista dei Ruoli Assegnati (Roles section &gt; Members tab). Il Proprietario non può essere rimosso." name="role remove member"/>
+		<action description="Assegnare e Rimuovere Abilità nei Ruoli" longdescription="Assegna e Rimuovi Abilità per ogni Ruolo nella lista dei Ruoli Assegnati (Roles section &gt; Roles tab). *ATTENZIONE* Ogni Membro con questo Ruolo e Abilità può assegnarsi --ed assegnare ad altri Membri non Proprietà-- tutte le Abilità, che potenzialmente lo elevano ai poteri ai poteri concessi al Proprietario. Siate sicuri di quello che fate prima di assegnare questa Abilità ." name="role change actions"/>
+	</action_set>
+	<action_set description="Queste Abilità permettono di modificare l&apos;identità di questo Gruppo, come il cambiamento della visibilità pubblica, lo statuto, e lo stemma." name="Group Identity">
+		<action description="Cambiare lo Statuto, lo Stemma, e &apos;Mostra nel Cerca/Search&apos;" longdescription="Cambia Statuto, Immagine, e &apos;Mostra nel Cerca&apos;. Viene fatto nella sezione Generale." name="group change identity"/>
+	</action_set>
+	<action_set description="Queste Abilità includono il potere di intestare, modificare, e vendere terreni di proprietà del Gruppo. Per aprire la finestra Info sul Terreno, click destro sulla terra e seleziona &apos;Info sul Terreno&apos;, o clicca l&apos;icona &apos;i&apos; sulla Barra di Navigazione." name="Parcel Management">
+		<action description="Intestare terra e comprare terra per il gruppo" longdescription="Intesta terra e compra terra per il Gruppo. Viene fatto in Informazioni sul Terreno &gt; tabella Generale." name="land deed"/>
+		<action description="Abbandonare la terra in favore di Governor Linden" longdescription="Abbandona la terra in favore di Governor Linden. *ATTENZIONE* Ogni Membro con questo Ruolo e Abilità può abbandonare la terra posseduta dal Gruppo in Informazioni sul Terreno &gt; tabella Generale, restituendola alla proprietà Linden senza una vendita! Devi essere sicuro di quello che fai prima di assegnare questa Abilità." name="land release"/>
+		<action description="Impostare le info per la vendita della terra" longdescription="Imposta le info per la vendita della terra. *ATTENZIONE* Ogni Membro con questo Ruolo e Abilità può vendere la terra posseduta dal Gruppo in Info sul Terreno &gt; tabella Generale (al prezzo che vogliono)! Devi essere sicuro di quello che fai prima di assegnare questa Abilità." name="land set sale info"/>
+		<action description="Suddividere e unire appezzamenti" longdescription="Suddividi e unisci parcel. Viene fatto con click destro sul terra, &apos;Modifica Terreno&apos;, trascinando poi il mouse sulla terra per creare una selezione. Per suddividere, seleziona quale parte vuoi dividere e clicca &apos;Suddividere&apos;. Per unire, seleziona due o più two parcel confinanti e clicca &apos;Unisci&apos;." name="land divide join"/>
+	</action_set>
+	<action_set description="Queste Abilità permettono di cambiare il nome dell&apos;appezzamento, le impostazioni pre-definite, la visibilità nella mappatura, il punto di arrivo &amp; le coordinate del Teleport." name="Parcel Identity">
+		<action description="Premi &apos;Mostra Luogo nel Cerca&apos; e seleziona una categoria" longdescription="Premi &apos;Mostra Luogo nel Cerca&apos; e seleziona una categoria di parcel in Info sul Terreno &gt; tabella Opzioni." name="land find places"/>
+		<action description="Cambia il nome del parcel, descrizione, e impostazioni nel &apos;Mostra Luogo nel Cerca&apos;" longdescription="Cambia il nome del parcel, descrizione, e impostazioni nel &apos;Mostra Luogo nel Cerca&apos;. Viene fatto in Info sul Terreno &gt; tabella Opzioni." name="land change identity"/>
+		<action description="Impostare il punto di arrivo e le coordinate del Teleport" longdescription="In un appezzamento posseduto da un Gruppo, i Membri con questo Ruolo e Abilità possono impostare un punto di arrivo per i Teleport entranti, e impostare anche le coordinate del Teleport per ulteriore precisione. Viene fatto in Informazioni sul Terreno &gt; tabella Opzioni." name="land set landing point"/>
+	</action_set>
+	<action_set description="Queste Abilità permettono alcune permessi nell&apos;appezzamento, quali &apos;Creare Oggetti&apos;, &apos;Editare il Terreno&apos;, trasmettere musica &amp; tabella Media." name="Parcel Settings">
+		<action description="Cambiare musica &amp; tabella media" longdescription="Cambia le impostazioni per lo streaming della musica e dei video in Informazioni sul Terreno &gt; tabella Media." name="land change media"/>
+		<action description="Cliccare &apos;Edita il Terreno&apos;" longdescription="Clicca &apos;Edita il Terreno&apos;. *ATTENZIONE* Informazioni sul Terreno &gt; tabella Opzioni &gt; Edita il Terreno permette a tutti di modificare la forma del terreno, collocare e spostare le piante Linden. Devi essere sicuro di quello che fai prima di assignera questa Abilità. Edita il terreno in Informazioni sul Terreno &gt; tabella Opzioni." name="land edit"/>
+		<action description="Cliccare Informazioni sul Terreno &gt; Impostazione Opzioni" longdescription="Premi &apos;Salvo (nessun danno)&apos;, &apos;Vola&apos;, e permetti agli altri Residenti di: &apos;modifica Terreno&apos;, &apos;Crea&apos;, &apos;Crea Landmarks&apos;, e &apos;Scripts attivi&apos; nella terra posseduta da un Gruppo in Info sul Terreno &gt; tabella Opzioni." name="land options"/>
+	</action_set>
+	<action_set description="Queste Abilità permettono ai Membri di non avere restrizioni in un appezzamento posseduto da un Gruppo." name="Parcel Powers">
+		<action description="Permettere sempre &apos;Edita il Terreno&apos;" longdescription="I Membri con questo Ruolo e Abilità possono editare il terreno posseduto da un Gruppo, anche se non è selezionato in Informazioni sul Terreno &gt; tabella Opzioni." name="land allow edit land"/>
+		<action description="Permettere Vola Sempre&apos;" longdescription="I Membri con questo Ruolo e Abilità possono volare in un terreno posseduto da un Gruppo, anche se non è selezionato in Info sul Terreno &gt; tabella Opzioni." name="land allow fly"/>
+		<action description="Permettere &apos;Crea Oggetti&apos; sempre" longdescription="I Membri con questo Ruolo e Abilità possono creare oggetti in un appezzamento posseduto da un Gruppo, anche se non è selezionato in Informazioni sul Terreno &gt; tabella Opzioni." name="land allow create"/>
+		<action description="Permettere &apos;Crea Landmark&apos; sempre" longdescription="I Membri con questo Ruolo e Abilità possono creare Landmark in un appezzamento posseduto da un Gruppo , anche se non è evidenziato in Informazioni sul Terreno &gt; tabella Opzioni." name="land allow landmark"/>
+		<action description="Permettere &apos;Teleportami a Casa&apos; in un appezzamento di un Gruppo" longdescription="I Membri in un Ruolo con questa Abilità possono usare il menu Mondo &gt; Landmarks &gt; Imposta come Casa su un parcel intestato ad un Gruppo." name="land allow set home"/>
+	</action_set>
+	<action_set description="Queste Abilità permettono di concedere o limitare l&apos;accesso ad un appezzamento di un Gruppo, e includono Congela ed Espelli un Residente." name="Parcel Access">
+		<action description="Gestire la lista degli Accessi Consentiti" longdescription="Gestisci la lista degli Accessi Consentiti in Informazioni sul Terreno &gt; tabella Accesso." name="land manage allowed"/>
+		<action description="Gestire la lista degli Accessi Bloccati" longdescription="Gestisci la lista Espulsi dal parcel in Info sul Terreno &gt; tabella Accesso." name="land manage banned"/>
+		<action description="Cambia le impostazioni del parcel in &apos;Vendi Pass a&apos;" longdescription="Cambia le impostazioni &apos;Vendi Pass a&apos; in Info sul Terreno &gt; tabella Accesso." name="land manage passes"/>
+		<action description="Espellere e Congelare i Residenti in un appezzamento" longdescription="Membri in un Ruolo con questa Abilità possono occuparsi di un residente indesiderato in un parcel posseduto da un Gruppo, con click destro sul residente, selezionando &apos;Espelli&apos; o &apos;Immobilizza&apos;." name="land admin"/>
+	</action_set>
+	<action_set description="Queste Abilità permettono ai Membri di restituire oggetti, collocare e spostare piante Linden. Questo è utile ai Membri per ripulire da oggetti indesiderati e creare paesaggi, ma deve essere utilizzato con cura, perchè non si può annullare la restituzione degli Oggetti." name="Parcel Content">
+		<action description="Restituire oggetti posseduti da un Gruppo" longdescription="Restituisci gli oggetti posseduti da un Gruppo in un appezzamento di un Gruppo in Informazioni sul Terreno &gt; tabella Oggetti." name="land return group owned"/>
+		<action description="Restituire oggetti concessi ad un Gruppo" longdescription="Restituisci oggetti concessi ad un Gruppo in un appezzamento di un Gruppo in Informazioni sul Terreno &gt; tabella Oggetti." name="land return group set"/>
+		<action description="Restituire oggetti estranei al Gruppo" longdescription="Restituire oggetti estranei al Gruppo in un appezzamento di un Gruppo in Info sul Terreno &gt; tabella Oggetti." name="land return non group"/>
+		<action description="Creare un paesaggio utilizzando le piante Linden" longdescription="Abilità di creare paesaggi di posizionare e spostare alberi, piante, erba. Questi oggetti sono presenti nella Libreria del tuo Inventario &gt; Cartella Oggetti, o possono essere creati con il menu Crea." name="land gardening"/>
+	</action_set>
+	<action_set description="Queste Abilità includono il potere di intestare, modificare, vendere oggetti posseduti dal gruppo. Viene fatto in Build Tools &gt; tabella Generale. Click destro su un oggetto e Modifica per vedere le impostazioni." name="Object Management">
+		<action description="Intestare oggetti ad un Gruppo" longdescription="Intesta oggetti ad un Gruppo in Build Tools &gt; tabella Generale." name="object deed"/>
+		<action description="Modificare (sposta, copia, modifica) oggetti di un Gruppo" longdescription="Controlla (sposta, copia, modifica) gli oggetti posseduti da un Gruppo in Build Tools &gt; tabella Generale." name="object manipulate"/>
+		<action description="Mettere in vendita oggetti di un Gruppo" longdescription="Metti in vendita oggetti posseduti da un Gruppo in Build Tools &gt; tabelle Generale." name="object set sale"/>
+	</action_set>
+	<action_set description="Queste Abilità permettono di richiedere ai Membri di pagare le perdite del Gruppo e di ricevere i dividendi del Gruppo, e di limitare l&apos;accesso all&apos;account del Gruppo." name="Accounting">
+		<action description="Pagare le perdite del Gruppo e ricevere i dividendi del Gruppo" longdescription="I Membri con questo Ruolo e Abilità pagheranno automaticamente le perdite del Gruppo e riceveranno i dividendi del Gruppo. Questo significa che riceveranno una porzione delle vendite di terre possedute dal gruppo (che sono risolte giornalmente), e contribuiranno anche su cose come le tasse di iscrizione dell&apos;appezzament. " name="accounting accountable"/>
+	</action_set>
+	<action_set description="Queste Abilità permettono ai Membri di spedire, ricevere, e vedere le Notice del Gruppo." name="Notices">
+		<action description="Spedire Notice" longdescription="Membri in un Ruolo con questa Abilità possono spedire Notice nel Gruppo &gt; sezione Notice." name="notices send"/>
+		<action description="Ricevere Notice e vedere Notice precedenti" longdescription="Membri in un ruolo con questa Abilità possono ricevere Notice e vedere Notice vecchie nel Gruppo &gt; sezione Notice." name="notices receive"/>
+	</action_set>
+	<action_set description="Queste Abilità permettono di concedere o limitare l&apos;accesso alle sessioni di chat e di voice chat nel gruppo." name="Chat">
+		<action description="Aderire alla Chat di Gruppo" longdescription="I Membri con questo Ruolo e Abilità possono aderire alle sessioni di chat, sia scritte che in voice." name="join group chat"/>
+		<action description="Aderire alla Voice Chat di Gruppo" longdescription="I Membri con questo Ruolo e Abilità possono aderire alle sessioni di Voice Chat nel gruppo.  NOTA: Per poter partecipare alla Chat di Gruppo è necessario accedere alla sessione di voice chat." name="join voice chat"/>
+		<action description="Moderare la Chat di Gruppo" longdescription="I Membri con questo Ruolo e Abilità possono controllare l&apos;accesso e la partecipazione alle sessioni di chat scritta e di voice chat nel Gruppo." name="moderate group chat"/>
+	</action_set>
+</role_actions>
diff --git a/indra/newview/skins/default/xui/it/sidepanel_appearance.xml b/indra/newview/skins/default/xui/it/sidepanel_appearance.xml
new file mode 100644
index 00000000000..8dd7bfec420
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/sidepanel_appearance.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Vestiario" name="appearance panel">
+	<string name="No Outfit" value="Nessun vestiario"/>
+	<filter_editor label="Filtri per il vestiario" name="Filter"/>
+	<panel name="bottom_panel">
+		<button name="options_gear_btn" tool_tip="Mostra opzioni addizionali"/>
+		<button name="newlook_btn" tool_tip="Aggiungi nuovo vestiario"/>
+		<dnd_button name="trash_btn" tool_tip="Rimuovi l&apos;articolo selezionato"/>
+		<button label="Indossa" name="wear_btn"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/sidepanel_inventory.xml b/indra/newview/skins/default/xui/it/sidepanel_inventory.xml
new file mode 100644
index 00000000000..196eb75bd7e
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/sidepanel_inventory.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Cose" name="objects panel">
+	<panel label="" name="sidepanel__inventory_panel">
+		<panel name="button_panel">
+			<button label="Profilo" name="info_btn"/>
+			<button label="Indossa" name="wear_btn"/>
+			<button label="Riproduci" name="play_btn"/>
+			<button label="Teleport" name="teleport_btn"/>
+		</panel>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/sidepanel_item_info.xml b/indra/newview/skins/default/xui/it/sidepanel_item_info.xml
new file mode 100644
index 00000000000..23ca8b5ad8b
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/sidepanel_item_info.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="item properties" title="Caratteristiche dell&apos;articolo nell&apos;Inventario">
+	<panel.string name="unknown">
+		(Sconosciuto)
+	</panel.string>
+	<panel.string name="public">
+		(pubblico)
+	</panel.string>
+	<panel.string name="you_can">
+		Tu puoi:
+	</panel.string>
+	<panel.string name="owner_can">
+		Il Proprietario può:
+	</panel.string>
+	<panel.string name="acquiredDate">
+		[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+	</panel.string>
+	<text name="title" value="Caratteristiche dell&apos;articolo"/>
+	<panel label="">
+		<text name="LabelItemNameTitle">
+			Nome:
+		</text>
+		<text name="LabelItemDescTitle">
+			Descrizione:
+		</text>
+		<text name="LabelCreatorTitle">
+			Creatore:
+		</text>
+		<button label="Profilo..." name="BtnCreator"/>
+		<text name="LabelOwnerTitle">
+			Proprietario:
+		</text>
+		<button label="Profilo..." name="BtnOwner"/>
+		<text name="LabelAcquiredTitle">
+			Acquisito:
+		</text>
+		<text name="LabelAcquiredDate">
+			Wed May 24 12:50:46 2006
+		</text>
+		<text name="OwnerLabel">
+			Tu:
+		</text>
+		<check_box label="Modifica" name="CheckOwnerModify"/>
+		<check_box label="Copia" name="CheckOwnerCopy"/>
+		<check_box label="Rivendi" name="CheckOwnerTransfer"/>
+		<text name="AnyoneLabel">
+			Chiunque:
+		</text>
+		<check_box label="Copia" name="CheckEveryoneCopy"/>
+		<text name="GroupLabel">
+			Gruppo:
+		</text>
+		<check_box label="Condividi" name="CheckShareWithGroup"/>
+		<text name="NextOwnerLabel">
+			Prossimo Proprietario:
+		</text>
+		<check_box label="Modifica" name="CheckNextOwnerModify"/>
+		<check_box label="Copia" name="CheckNextOwnerCopy"/>
+		<check_box label="Rivendi" name="CheckNextOwnerTransfer"/>
+		<check_box label="In vendita" name="CheckPurchase"/>
+		<combo_box name="combobox sale copy">
+			<combo_box.item label="Copia" name="Copy"/>
+			<combo_box.item label="Originale" name="Original"/>
+		</combo_box>
+		<spinner label="Prezzo:" name="Edit Cost"/>
+		<text name="CurrencySymbol">
+			L$
+		</text>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/sidepanel_task_info.xml b/indra/newview/skins/default/xui/it/sidepanel_task_info.xml
new file mode 100644
index 00000000000..e5f27795bee
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/sidepanel_task_info.xml
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="object properties" title="Caratteristiche dell&apos;oggetto">
+	<panel.string name="text deed continued">
+		Intesta
+	</panel.string>
+	<panel.string name="text deed">
+		Intesta
+	</panel.string>
+	<panel.string name="text modify info 1">
+		Puoi modificare questo oggetto
+	</panel.string>
+	<panel.string name="text modify info 2">
+		Puoi modificare questi oggetti
+	</panel.string>
+	<panel.string name="text modify info 3">
+		Non puoi modificare questo oggetto
+	</panel.string>
+	<panel.string name="text modify info 4">
+		Non puoi modificare questi oggetti
+	</panel.string>
+	<panel.string name="text modify warning">
+		Questo oggetto ha parti unite
+	</panel.string>
+	<panel.string name="Cost Default">
+		Prezzo: L$
+	</panel.string>
+	<panel.string name="Cost Total">
+		Prezzo Totale: L$
+	</panel.string>
+	<panel.string name="Cost Per Unit">
+		Prezzo Per: L$
+	</panel.string>
+	<panel.string name="Cost Mixed">
+		Prezzo assortito
+	</panel.string>
+	<panel.string name="Sale Mixed">
+		Vendita assortita
+	</panel.string>
+	<panel label="">
+		<text name="Name:">
+			Nome:
+		</text>
+		<text name="Description:">
+			Descrizione:
+		</text>
+		<text name="Creator:">
+			Creatore:
+		</text>
+		<text name="Owner:">
+			Proprietario:
+		</text>
+		<text name="Group:">
+			Gruppo:
+		</text>
+		<button name="button set group" tool_tip="Scegli un gruppo per condividere i permessi di questo oggetto"/>
+		<name_box initial_value="Caricando..." name="Group Name Proxy"/>
+		<button label="Intesta" label_selected="Intesta" name="button deed" tool_tip="Intestando questo oggetto lo passa con i permessi del prossimo proprietario. Gli oggetti condivisi dal Gruppo possono essere intestati solo da un Officer del gruppo."/>
+		<check_box label="Condividi" name="checkbox share with group" tool_tip="Permetti a tutti i Membri del gruppo impostato di condividere la tua modifica ai permessi di questo oggetto. Tu devi Intestare per consentire le restrizioni al ruolo."/>
+		<text name="label click action">
+			Clicca per:
+		</text>
+		<combo_box name="clickaction">
+			<combo_box.item label="Tocca (default)" name="Touch/grab(default)"/>
+			<combo_box.item label="Siedi sull&apos;oggetto" name="Sitonobject"/>
+			<combo_box.item label="Compra l&apos;oggetto" name="Buyobject"/>
+			<combo_box.item label="Paga l&apos;ogggetto" name="Payobject"/>
+			<combo_box.item label="Apri" name="Open"/>
+		</combo_box>
+		<check_box label="In Vendita:" name="checkbox for sale"/>
+		<combo_box name="sale type">
+			<combo_box.item label="Copia" name="Copy"/>
+			<combo_box.item label="Contenuti" name="Contents"/>
+			<combo_box.item label="Originale" name="Original"/>
+		</combo_box>
+		<spinner label="Prezzo: L$" name="Edit Cost"/>
+		<check_box label="Mostra nella ricerca" name="search_check" tool_tip="Mostra questo oggetto nei risultati della ricerca"/>
+		<panel name="perms_build">
+			<text name="perm_modify">
+				Puoi modificare questo oggetto
+			</text>
+			<text name="Anyone can:">
+				Chiunque:
+			</text>
+			<check_box label="Sposta" name="checkbox allow everyone move"/>
+			<check_box label="Copia" name="checkbox allow everyone copy"/>
+			<text name="Next owner can:">
+				Prossimo Proprietario:
+			</text>
+			<check_box label="Modifica" name="checkbox next owner can modify"/>
+			<check_box label="Copia" name="checkbox next owner can copy"/>
+			<check_box label="Transfer" name="checkbox next owner can transfer" tool_tip="Prossimo proprietario può regalare o rivendere questo oggetto"/>
+			<text name="B:">
+				B:
+			</text>
+			<text name="O:">
+				O:
+			</text>
+			<text name="G:">
+				G:
+			</text>
+			<text name="E:">
+				E:
+			</text>
+			<text name="N:">
+				N:
+			</text>
+			<text name="F:">
+				F:
+			</text>
+		</panel>
+	</panel>
+	<panel name="button_panel">
+		<button label="Apri" name="open_btn"/>
+		<button label="Paga" name="pay_btn"/>
+		<button label="Compra" name="buy_btn"/>
+		<button label="Cancella" name="cancel_btn"/>
+		<button label="Salva" name="save_btn"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml
index 6e3301fdd91..910e6e0960f 100644
--- a/indra/newview/skins/default/xui/it/strings.xml
+++ b/indra/newview/skins/default/xui/it/strings.xml
@@ -4,10 +4,27 @@
      For example, the strings used in avatar chat bubbles, and strings 
      that are returned from one component and may appear in many places-->
 <strings>
-	<string name="create_account_url">http://join.secondlife.com/index.php?lang=it-IT</string>
+	<string name="SECOND_LIFE">
+		Second Life
+	</string>
+	<string name="APP_NAME">
+		Second Life
+	</string>
+	<string name="SUPPORT_SITE">
+		Portale di supporto di Second Life
+	</string>
+	<string name="StartupDetectingHardware">
+		Ricerca hardware...
+	</string>
+	<string name="StartupLoading">
+		In Caricamento
+	</string>
 	<string name="LoginInProgress">
 		In connessione. [APP_NAME] può sembrare rallentata.  Attendi.
 	</string>
+	<string name="LoginInProgressNoFrozen">
+		Logging in...
+	</string>
 	<string name="LoginAuthenticating">
 		In autenticazione
 	</string>
@@ -26,11 +43,14 @@
 	<string name="LoginInitializingMultimedia">
 		Inizializzazione dati multimediali...
 	</string>
+	<string name="LoginInitializingFonts">
+		Caricamento caratteri...
+	</string>
 	<string name="LoginVerifyingCache">
-		Verifica della cache corso (può impiegarci dai 60-90 secondi)...
+		Verifica file della cache (tempo previsto 60-90 secondi)...
 	</string>
 	<string name="LoginProcessingResponse">
-		Risposta in elaborazione...
+		Elaborazione risposta...
 	</string>
 	<string name="LoginInitializingWorld">
 		Inizializzazione...
@@ -56,6 +76,15 @@
 	<string name="LoginDownloadingClothing">
 		Sto caricando i vestiti...
 	</string>
+	<string name="LoginFailedNoNetwork">
+		Errore di rete: Non è stato possibile stabilire un collegamento, controlla la tua connessione.
+	</string>
+	<string name="Quit">
+		Termina
+	</string>
+	<string name="create_account_url">
+		http://join.secondlife.com/index.php?lang=it-IT
+	</string>
 	<string name="AgentLostConnection">
 		Questa regione sta avendo problemi.  Verifica la tua connessione a Internet.
 	</string>
@@ -74,39 +103,9 @@
 	<string name="TooltipIsGroup">
 		(Gruppo)
 	</string>
-	<string name="TooltipFlagScript">
-		Script
-	</string>
-	<string name="TooltipFlagPhysics">
-		Fisica
-	</string>
-	<string name="TooltipFlagTouch">
-		Tocca
-	</string>
-	<string name="TooltipFlagL$">
-		L$
-	</string>
-	<string name="TooltipFlagDropInventory">
-		Prendi dall&apos;inventario
-	</string>
-	<string name="TooltipFlagPhantom">
-		Fantasma
-	</string>
-	<string name="TooltipFlagTemporary">
-		Temporaneo
-	</string>
-	<string name="TooltipFlagRightClickMenu">
-		(Clicca con il tasto destro per il menù)
-	</string>
-	<string name="TooltipFreeToCopy">
-		Copia consentita
-	</string>
 	<string name="TooltipForSaleL$">
 		In Vendita: [AMOUNT]L$
 	</string>
-	<string name="TooltipForSaleMsg">
-		In Vendita: [MESSAGE]
-	</string>
 	<string name="TooltipFlagGroupBuild">
 		Costruzione solo con gruppo
 	</string>
@@ -134,6 +133,76 @@
 	<string name="TooltipMustSingleDrop">
 		Solo un singolo oggetto può essere creato qui
 	</string>
+	<string name="TooltipHttpUrl">
+		Clicca per visitare questa pagina web
+	</string>
+	<string name="TooltipSLURL">
+		Clicca per avere maggiori informazioni sul luogo
+	</string>
+	<string name="TooltipAgentUrl">
+		Clicca per vedere il profilo del residente
+	</string>
+	<string name="TooltipGroupUrl">
+		Clicca per vedere la descrizione del gruppo
+	</string>
+	<string name="TooltipEventUrl">
+		Clicca per vedere la descrizione dell&apos;evento
+	</string>
+	<string name="TooltipClassifiedUrl">
+		Clicca per vedere questa inserzione
+	</string>
+	<string name="TooltipParcelUrl">
+		Clicca per vedere la descrizione della parcel
+	</string>
+	<string name="TooltipTeleportUrl">
+		Clicca per teleportarti a questa destinazione
+	</string>
+	<string name="TooltipObjectIMUrl">
+		Clicca per vedere la descrizione dell&apos;oggetto
+	</string>
+	<string name="TooltipMapUrl">
+		Clicca per vedere questo posto sulla mappa
+	</string>
+	<string name="TooltipSLAPP">
+		Clicca per avviare il comando secondlife://
+	</string>
+	<string name="CurrentURL" value=" URL attuale: [CurrentURL]"/>
+	<string name="SLurlLabelTeleport">
+		Teleportati a
+	</string>
+	<string name="SLurlLabelShowOnMap">
+		Mostra la mappa per
+	</string>
+	<string name="BUTTON_CLOSE_DARWIN">
+		Chiudi (&#8984;W)
+	</string>
+	<string name="BUTTON_CLOSE_WIN">
+		Chiudi (Ctrl+W)
+	</string>
+	<string name="BUTTON_RESTORE">
+		Ripristina
+	</string>
+	<string name="BUTTON_MINIMIZE">
+		Minimizza
+	</string>
+	<string name="BUTTON_TEAR_OFF">
+		Distacca
+	</string>
+	<string name="BUTTON_DOCK">
+		Àncora
+	</string>
+	<string name="BUTTON_UNDOCK">
+		Disàncora
+	</string>
+	<string name="BUTTON_HELP">
+		Mostra gli aiuti
+	</string>
+	<string name="Searching">
+		In ricerca...
+	</string>
+	<string name="NoneFound">
+		Nessun risultato.
+	</string>
 	<string name="RetrievingData">
 		Recupero dati in corso...
 	</string>
@@ -188,8 +257,77 @@
 	<string name="AssetErrorUnknownStatus">
 		Stato sconosciuto
 	</string>
-	<string name="AvatarEditingApparance">
-		(In modifica dell&apos;aspetto fisico)
+	<string name="texture">
+		texture
+	</string>
+	<string name="sound">
+		suono
+	</string>
+	<string name="calling card">
+		biglietto da visita
+	</string>
+	<string name="landmark">
+		landmark
+	</string>
+	<string name="legacy script">
+		script (vecchia versione)
+	</string>
+	<string name="clothing">
+		abito
+	</string>
+	<string name="object">
+		oggetto
+	</string>
+	<string name="note card">
+		notecard
+	</string>
+	<string name="folder">
+		cartella
+	</string>
+	<string name="root">
+		cartella principale
+	</string>
+	<string name="lsl2 script">
+		script LSL2
+	</string>
+	<string name="lsl bytecode">
+		bytecode LSL
+	</string>
+	<string name="tga texture">
+		tga texture
+	</string>
+	<string name="body part">
+		parte del corpo
+	</string>
+	<string name="snapshot">
+		fotografia
+	</string>
+	<string name="lost and found">
+		oggetti smarriti
+	</string>
+	<string name="targa image">
+		immagine targa
+	</string>
+	<string name="trash">
+		cestino
+	</string>
+	<string name="jpeg image">
+		immagine jpeg
+	</string>
+	<string name="animation">
+		animazione
+	</string>
+	<string name="gesture">
+		gesture
+	</string>
+	<string name="simstate">
+		simstate
+	</string>
+	<string name="favorite">
+		preferiti
+	</string>
+	<string name="symbolic link">
+		link
 	</string>
 	<string name="AvatarAway">
 		Assente
@@ -408,17 +546,80 @@
 		Si
 	</string>
 	<string name="texture_loading">
-		Caricando...
+		In Caricamento...
 	</string>
 	<string name="worldmap_offline">
 		Offline
 	</string>
+	<string name="worldmap_results_none_found">
+		Nessun risultato.
+	</string>
+	<string name="Ok">
+		OK
+	</string>
+	<string name="Premature end of file">
+		Fine prematura del file
+	</string>
+	<string name="ST_NO_JOINT">
+		Impossibile trovare ROOT o JOINT.
+	</string>
 	<string name="whisper">
 		sussurra:
 	</string>
 	<string name="shout">
 		grida:
 	</string>
+	<string name="ringing">
+		In connessione alla Voice Chat in-world...
+	</string>
+	<string name="connected">
+		Connesso
+	</string>
+	<string name="unavailable">
+		Il voice non è disponibile nel posto dove ti trovi ora
+	</string>
+	<string name="hang_up">
+		Disconnesso dalla Voice Chat in-world
+	</string>
+	<string name="ScriptQuestionCautionChatGranted">
+		A &apos;[OBJECTNAME]&apos;, un oggetto di proprietà di &apos;[OWNERNAME]&apos;, situato in [REGIONNAME] [REGIONPOS], è stato concesso il permesso di: [PERMISSIONS].
+	</string>
+	<string name="ScriptQuestionCautionChatDenied">
+		A &apos;[OBJECTNAME]&apos;, un oggetto di proprietà di &apos;[OWNERNAME]&apos;, situato in [REGIONNAME] [REGIONPOS], è stato negato il permesso di: [PERMISSIONS].
+	</string>
+	<string name="ScriptTakeMoney">
+		Prendere dollari Linden (L$) da te
+	</string>
+	<string name="ActOnControlInputs">
+		Agire sul tuo controllo degli input
+	</string>
+	<string name="RemapControlInputs">
+		Rimappare il tuo controllo degli input
+	</string>
+	<string name="AnimateYourAvatar">
+		Animare il tuo avatar
+	</string>
+	<string name="AttachToYourAvatar">
+		Far indossare al tuo avatar
+	</string>
+	<string name="ReleaseOwnership">
+		Rilasciare la propietà è far diventare pubblico.
+	</string>
+	<string name="LinkAndDelink">
+		Collegare e scollegare dagli altri oggetti
+	</string>
+	<string name="AddAndRemoveJoints">
+		Aggiungere e rimuovere le giunzioni insieme con gli altri oggetti
+	</string>
+	<string name="ChangePermissions">
+		Cambiare i permessi
+	</string>
+	<string name="TrackYourCamera">
+		Tracciare la fotocamera
+	</string>
+	<string name="ControlYourCamera">
+		Controllare la tua fotocamera
+	</string>
 	<string name="SIM_ACCESS_PG">
 		PG
 	</string>
@@ -437,8 +638,6 @@
 	<string name="land_type_unknown">
 		(sconosciuto)
 	</string>
-	<string name="covenant_never_modified">Ultima modifica: (mai)</string>
-	<string name="covenant_modified">Ultima modifica: </string>
 	<string name="all_files">
 		Tutti i file
 	</string>
@@ -484,26 +683,122 @@
 	<string name="choose_the_directory">
 		Scegli la cartella
 	</string>
-	<string name="accel-mac-control">
-		&#8963;
+	<string name="AvatarSetNotAway">
+		Imposta non assente
 	</string>
-	<string name="accel-mac-command">
-		&#8984;
+	<string name="AvatarSetAway">
+		Imposta assente
 	</string>
-	<string name="accel-mac-option">
-		&#8997;
+	<string name="AvatarSetNotBusy">
+		Imposta non occupato
 	</string>
-	<string name="accel-mac-shift">
-		&#8679;
+	<string name="AvatarSetBusy">
+		Imposta occupato
 	</string>
-	<string name="accel-win-control">
-		Ctrl+
+	<string name="shape">
+		Shape
 	</string>
-	<string name="accel-win-alt">
-		Alt+
+	<string name="skin">
+		Skin
 	</string>
-	<string name="accel-win-shift">
-		Shift+
+	<string name="hair">
+		Capelli
+	</string>
+	<string name="eyes">
+		Occhi
+	</string>
+	<string name="shirt">
+		Camicia
+	</string>
+	<string name="pants">
+		Pantaloni
+	</string>
+	<string name="shoes">
+		Scarpe
+	</string>
+	<string name="socks">
+		Calze
+	</string>
+	<string name="jacket">
+		Giacca
+	</string>
+	<string name="gloves">
+		Guanti
+	</string>
+	<string name="undershirt">
+		Maglietta intima
+	</string>
+	<string name="underpants">
+		slip
+	</string>
+	<string name="skirt">
+		Gonna
+	</string>
+	<string name="alpha">
+		Alfa (Trasparenza)
+	</string>
+	<string name="tattoo">
+		Tatuaggio
+	</string>
+	<string name="invalid">
+		non valido
+	</string>
+	<string name="next">
+		Seguente
+	</string>
+	<string name="ok">
+		OK
+	</string>
+	<string name="GroupNotifyGroupNotice">
+		Notice di gruppo
+	</string>
+	<string name="GroupNotifyGroupNotices">
+		Notice di gruppo
+	</string>
+	<string name="GroupNotifySentBy">
+		Inviato da
+	</string>
+	<string name="GroupNotifyAttached">
+		Allegato:
+	</string>
+	<string name="GroupNotifyViewPastNotices">
+		Visualizza i notice passati o scegli qui di non riceverne.
+	</string>
+	<string name="GroupNotifyOpenAttachment">
+		Apri l&apos;allegato
+	</string>
+	<string name="GroupNotifySaveAttachment">
+		Salva l&apos;allegato
+	</string>
+	<string name="TeleportOffer">
+		Offerta di Teletrasporto
+	</string>
+	<string name="StartUpNotification">
+		[%d]  una nuova notifica è arrivata mentre eri assente...
+	</string>
+	<string name="StartUpNotifications">
+		[%d]  nuove notifice sono arrivate mentre eri assente...
+	</string>
+	<string name="OverflowInfoChannelString">
+		Hai ancora [%d] notifiche
+	</string>
+	<string name="BodyPartsRightArm">
+		Braccio destro
+	</string>
+	<string name="BodyPartsHead">
+		Testa
+	</string>
+	<string name="BodyPartsLeftArm">
+		Braccio sinistro
+	</string>
+	<string name="BodyPartsLeftLeg">
+		Gamba sinistra
+	</string>
+	<string name="BodyPartsTorso">
+		Torace
+	</string>
+	<string name="BodyPartsRightLeg">
+		Gamba destra
 	</string>
 	<string name="GraphicsQualityLow">
 		Basso
@@ -514,72 +809,2408 @@
 	<string name="GraphicsQualityHigh">
 		Alto
 	</string>
-	
-	<!-- PARCEL_CATEGORY_UI_STRING - TAKE FROM floater_about_land."land category with adult".item1-item12 -->
-	<string name="Linden Location">Luogo dei Linden</string>
-	<string name="Adult">Adult</string>
-	<string name="Arts&amp;Culture">Arte &amp; Cultura</string>
-	<string name="Business">Affari</string>
-	<string name="Educational">Educazione</string>
-	<string name="Gaming">Gioco</string>
-	<string name="Hangout">Divertimento</string>
-	<string name="Newcomer Friendly">Accoglienza nuovi residenti</string>
-	<string name="Parks&amp;Nature">Parchi &amp; Natura</string>
-	<string name="Residential">Residenziale</string>
-	<string name="Shopping">Shopping</string>
-	<string name="Other">Altro</string>
-	
-	<string name="ringing">
-		In connessione alla Voice Chat in-world...
+	<string name="LeaveMouselook">
+		Premi ESC per tornare in visulizzazione normale
+	</string>
+	<string name="InventoryNoMatchingItems">
+		Nessun oggetto corrispondente trovato in inventario.
+	</string>
+	<string name="InventoryNoTexture">
+		Non hai una copia
+di questa texture in inventario.
+	</string>
+	<string name="no_transfer" value=" (no transfer)"/>
+	<string name="no_modify" value=" (no modify)"/>
+	<string name="no_copy" value=" (no copy)"/>
+	<string name="worn" value=" (indossato)"/>
+	<string name="link" value=" (link)"/>
+	<string name="broken_link" value=" (broken_link)"/>
+	<string name="LoadingContents">
+		Contenuto in caricamento...
+	</string>
+	<string name="NoContents">
+		Nessun contenuto
+	</string>
+	<string name="WornOnAttachmentPoint" value=" (indossato su [ATTACHMENT_POINT])"/>
+	<string name="Chat" value=" Chat :"/>
+	<string name="Sound" value=" Suono :"/>
+	<string name="Wait" value=" --- Attendi :"/>
+	<string name="AnimFlagStop" value=" Ferma l&apos;Animazione :"/>
+	<string name="AnimFlagStart" value=" Inizia l&apos;Animazione :"/>
+	<string name="Wave" value=" Wave"/>
+	<string name="HelloAvatar" value=" Ciao, avatar!"/>
+	<string name="ViewAllGestures" value="  Visualizza tutte le gesture &gt;&gt;"/>
+	<string name="Animations" value=" Animazioni,"/>
+	<string name="Calling Cards" value=" Biglietti da visita,"/>
+	<string name="Clothing" value=" Vestiti,"/>
+	<string name="Gestures" value=" Gesture,"/>
+	<string name="Landmarks" value=" Landmark,"/>
+	<string name="Notecards" value=" Notecard,"/>
+	<string name="Objects" value=" Oggetti,"/>
+	<string name="Scripts" value=" Script,"/>
+	<string name="Sounds" value=" Suoni,"/>
+	<string name="Textures" value=" Texture,"/>
+	<string name="Snapshots" value=" Fotografie,"/>
+	<string name="No Filters" value="No "/>
+	<string name="Since Logoff" value=" - Dalla disconnessione"/>
+	<string name="InvFolder My Inventory">
+		Il mio inventario
+	</string>
+	<string name="InvFolder My Favorites">
+		I miei preferiti
+	</string>
+	<string name="InvFolder Library">
+		Libreria
+	</string>
+	<string name="InvFolder Textures">
+		Texture
+	</string>
+	<string name="InvFolder Sounds">
+		Suoni
 	</string>
-	<string name="connected">
-		Connesso
+	<string name="InvFolder Calling Cards">
+		Biglieti da visita
 	</string>
-	<string name="unavailable">
-		Il voice non è disponibile nel posto dove ti trovi ora
+	<string name="InvFolder Landmarks">
+		Landmark
 	</string>
-	<string name="hang_up">
-		Disconnesso dalla Voice Chat in-world
+	<string name="InvFolder Scripts">
+		Script
+	</string>
+	<string name="InvFolder Clothing">
+		Vestiti
+	</string>
+	<string name="InvFolder Objects">
+		Oggetti
+	</string>
+	<string name="InvFolder Notecards">
+		Notecard
+	</string>
+	<string name="InvFolder New Folder">
+		Nuova cartella
+	</string>
+	<string name="InvFolder Inventory">
+		Inventario
+	</string>
+	<string name="InvFolder Uncompressed Images">
+		Immagini non compresse
+	</string>
+	<string name="InvFolder Body Parts">
+		Parti del corpo
+	</string>
+	<string name="InvFolder Trash">
+		Cestino
+	</string>
+	<string name="InvFolder Photo Album">
+		Album fotografico
+	</string>
+	<string name="InvFolder Lost And Found">
+		Oggetti smarriti
+	</string>
+	<string name="InvFolder Uncompressed Sounds">
+		Suoni non compressi
+	</string>
+	<string name="InvFolder Animations">
+		Animazioni
+	</string>
+	<string name="InvFolder Gestures">
+		Gesture
+	</string>
+	<string name="InvFolder favorite">
+		Preferiti
+	</string>
+	<string name="InvFolder Current Outfit">
+		Outfit attuale
+	</string>
+	<string name="InvFolder My Outfits">
+		I miei Outfit
+	</string>
+	<string name="InvFolder Friends">
+		Amici
+	</string>
+	<string name="InvFolder All">
+		Tutti
+	</string>
+	<string name="Buy">
+		Compra
+	</string>
+	<string name="BuyforL$">
+		Compra per L$
+	</string>
+	<string name="Stone">
+		Pietra
+	</string>
+	<string name="Metal">
+		Metallo
+	</string>
+	<string name="Glass">
+		Vetro
+	</string>
+	<string name="Wood">
+		Legno
+	</string>
+	<string name="Flesh">
+		Carne
+	</string>
+	<string name="Plastic">
+		Plastica
+	</string>
+	<string name="Rubber">
+		Gomma
+	</string>
+	<string name="Light">
+		Luce
+	</string>
+	<string name="KBShift">
+		Shift
+	</string>
+	<string name="KBCtrl">
+		Ctrl
+	</string>
+	<string name="Chest">
+		Petto
+	</string>
+	<string name="Skull">
+		Cranio
+	</string>
+	<string name="Left Shoulder">
+		Spalla sinistra
+	</string>
+	<string name="Right Shoulder">
+		Spalla destra
+	</string>
+	<string name="Left Hand">
+		Mano sinistra
+	</string>
+	<string name="Right Hand">
+		Mano destra
+	</string>
+	<string name="Left Foot">
+		Piede sinisto
+	</string>
+	<string name="Right Foot">
+		Piede destro
+	</string>
+	<string name="Spine">
+		Spina dorsale
+	</string>
+	<string name="Pelvis">
+		Pelvi
+	</string>
+	<string name="Mouth">
+		Bocca
+	</string>
+	<string name="Chin">
+		Mento
+	</string>
+	<string name="Left Ear">
+		Orecchio sinistro
+	</string>
+	<string name="Right Ear">
+		Orecchio destro
+	</string>
+	<string name="Left Eyeball">
+		Bulbo sinistro
+	</string>
+	<string name="Right Eyeball">
+		Bulbo destro
+	</string>
+	<string name="Nose">
+		Naso
+	</string>
+	<string name="R Upper Arm">
+		Avambraccio destro
+	</string>
+	<string name="R Forearm">
+		Braccio destro
+	</string>
+	<string name="L Upper Arm">
+		Avambraccio sinistro
+	</string>
+	<string name="L Forearm">
+		Braccio sinistro
+	</string>
+	<string name="Right Hip">
+		Anca destra
+	</string>
+	<string name="R Upper Leg">
+		Coscia destra
+	</string>
+	<string name="R Lower Leg">
+		Gamba destra
+	</string>
+	<string name="Left Hip">
+		Anca sinista
+	</string>
+	<string name="L Upper Leg">
+		Coscia sinistra
+	</string>
+	<string name="L Lower Leg">
+		Gamba sinistra
+	</string>
+	<string name="Stomach">
+		Stomaco
+	</string>
+	<string name="Left Pec">
+		Petto sinistro
+	</string>
+	<string name="Right Pec">
+		Petto destro
+	</string>
+	<string name="YearsMonthsOld">
+		Nato da [AGEYEARS] [AGEMONTHS]
+	</string>
+	<string name="YearsOld">
+		Nato da [AGEYEARS]
+	</string>
+	<string name="MonthsOld">
+		Nato da [AGEMONTHS]
+	</string>
+	<string name="WeeksOld">
+		Nato da [AGEWEEKS]
+	</string>
+	<string name="DaysOld">
+		Nato da [AGEDAYS]
+	</string>
+	<string name="TodayOld">
+		Iscritto oggi
+	</string>
+	<string name="AgeYearsA">
+		[COUNT] anno
+	</string>
+	<string name="AgeYearsB">
+		[COUNT] anni
+	</string>
+	<string name="AgeYearsC">
+		[COUNT] anni
+	</string>
+	<string name="AgeMonthsA">
+		[COUNT] mese
+	</string>
+	<string name="AgeMonthsB">
+		[COUNT] mesi
+	</string>
+	<string name="AgeMonthsC">
+		[COUNT] mesi
+	</string>
+	<string name="AgeWeeksA">
+		[COUNT] settimana
+	</string>
+	<string name="AgeWeeksB">
+		[COUNT] settimane
+	</string>
+	<string name="AgeWeeksC">
+		[COUNT] settimane
+	</string>
+	<string name="AgeDaysA">
+		[COUNT] giorno
+	</string>
+	<string name="AgeDaysB">
+		[COUNT] giorni
+	</string>
+	<string name="AgeDaysC">
+		[COUNT] giorni
+	</string>
+	<string name="GroupMembersA">
+		[COUNT] membro
+	</string>
+	<string name="GroupMembersB">
+		[COUNT] membri
+	</string>
+	<string name="GroupMembersC">
+		[COUNT] membri
+	</string>
+	<string name="AcctTypeResident">
+		Residente
+	</string>
+	<string name="AcctTypeTrial">
+		In prova
+	</string>
+	<string name="AcctTypeCharterMember">
+		Membro onorario
+	</string>
+	<string name="AcctTypeEmployee">
+		Impiegato Linden Lab
+	</string>
+	<string name="PaymentInfoUsed">
+		Informazioni di pagamento usate
+	</string>
+	<string name="PaymentInfoOnFile">
+		Informazioni di pagamento registrate
+	</string>
+	<string name="NoPaymentInfoOnFile">
+		Nessuna informazione di pagamento
+	</string>
+	<string name="AgeVerified">
+		Età verificata
+	</string>
+	<string name="NotAgeVerified">
+		Età non verificata
+	</string>
+	<string name="Center 2">
+		Centro 2
+	</string>
+	<string name="Top Right">
+		In alto a destra
+	</string>
+	<string name="Top">
+		In  alto
+	</string>
+	<string name="Top Left">
+		In alto a sinistra
+	</string>
+	<string name="Center">
+		Al centro
+	</string>
+	<string name="Bottom Left">
+		In basso a sinistra
+	</string>
+	<string name="Bottom">
+		In basso
+	</string>
+	<string name="Bottom Right">
+		In basso a destra
+	</string>
+	<string name="CompileQueueDownloadedCompiling">
+		Scaricato, in compilazione
+	</string>
+	<string name="CompileQueueScriptNotFound">
+		Script non trovato sul server.
+	</string>
+	<string name="CompileQueueProblemDownloading">
+		Problema nel download
+	</string>
+	<string name="CompileQueueInsufficientPermDownload">
+		Permessi insufficenti per scaricare lo script.
+	</string>
+	<string name="CompileQueueInsufficientPermFor">
+		Permessi insufficenti per
+	</string>
+	<string name="CompileQueueUnknownFailure">
+		Errore di dowload sconosciuto
+	</string>
+	<string name="CompileQueueTitle">
+		Avanzamento ricompilazione
+	</string>
+	<string name="CompileQueueStart">
+		ricompila
+	</string>
+	<string name="ResetQueueTitle">
+		Avanzamento reset
+	</string>
+	<string name="ResetQueueStart">
+		reset
+	</string>
+	<string name="RunQueueTitle">
+		Avanzamento attivazione
+	</string>
+	<string name="RunQueueStart">
+		Attiva
+	</string>
+	<string name="NotRunQueueTitle">
+		Avanzamento disattivazione
+	</string>
+	<string name="NotRunQueueStart">
+		Disattivazione
+	</string>
+	<string name="CompileSuccessful">
+		Compilazione riuscita!
+	</string>
+	<string name="CompileSuccessfulSaving">
+		Compilazione riuscita, in salvataggio...
+	</string>
+	<string name="SaveComplete">
+		Salvataggio completato.
+	</string>
+	<string name="ObjectOutOfRange">
+		Script (oggetto fuori portata)
+	</string>
+	<string name="GodToolsObjectOwnedBy">
+		Oggetto [OBJECT] di proprietà di [OWNER]
+	</string>
+	<string name="GroupsNone">
+		nessuno
+	</string>
+	<string name="Group" value=" (gruppo)"/>
+	<string name="Unknown">
+		(Sconosciuto)
+	</string>
+	<string name="SummaryForTheWeek" value="Riassunto della settimana, partendo dal"/>
+	<string name="NextStipendDay" value="Il prossimo giorno di stipendio è "/>
+	<string name="GroupIndividualShare" value="                      Gruppo       Dividendi individuali"/>
+	<string name="Balance">
+		Saldo
+	</string>
+	<string name="Credits">
+		Crediti
+	</string>
+	<string name="Debits">
+		Debiti
+	</string>
+	<string name="Total">
+		Totale
+	</string>
+	<string name="NoGroupDataFound">
+		Nessun dato trovato per questo gruppo
+	</string>
+	<string name="IMParentEstate">
+		Proprietà principale
+	</string>
+	<string name="IMMainland">
+		mainland
+	</string>
+	<string name="IMTeen">
+		teen
+	</string>
+	<string name="RegionInfoError">
+		errore
+	</string>
+	<string name="RegionInfoAllEstatesOwnedBy">
+		la proprietà posseduta da [OWNER]
+	</string>
+	<string name="RegionInfoAllEstatesYouOwn">
+		Le proprietà che possiedi
+	</string>
+	<string name="RegionInfoAllEstatesYouManage">
+		Le proprietà di cui sei manager per conto di [OWNER]
+	</string>
+	<string name="RegionInfoAllowedResidents">
+		Residenti ammessi: ([ALLOWEDAGENTS], massimo [MAXACCESS])
+	</string>
+	<string name="RegionInfoAllowedGroups">
+		Gruppi ammessi: ([ALLOWEDGROUPS], massimo [MAXACCESS])
+	</string>
+	<string name="CursorPos">
+		Riga [LINE], Colonna [COLUMN]
+	</string>
+	<string name="PanelDirCountFound">
+		[COUNT] trovato/i
+	</string>
+	<string name="PanelContentsNewScript">
+		Nuovo Script
+	</string>
+	<string name="MuteByName">
+		(per nome)
+	</string>
+	<string name="MuteAgent">
+		(residente)
+	</string>
+	<string name="MuteObject">
+		(oggetto)
+	</string>
+	<string name="MuteGroup">
+		(gruppo)
+	</string>
+	<string name="RegionNoCovenant">
+		Non esiste nessun regolamento per questa proprietà.
+	</string>
+	<string name="RegionNoCovenantOtherOwner">
+		Non esiste nessun regolamento per questa proprietà. Il terreno di questa proprietà è messo in vendita dal proprietario, non dalla Linden Lab. Contatta il proprietario del terreno per i dettagli della vendita.
+	</string>
+	<string name="covenant_last_modified">
+		Ultima modifica:
+	</string>
+	<string name="none_text" value=" (nessuno) "/>
+	<string name="never_text" value=" (mai) "/>
+	<string name="GroupOwned">
+		Posseduta da un gruppo
+	</string>
+	<string name="Public">
+		Pubblica
+	</string>
+	<string name="ClassifiedClicksTxt">
+		Clicca: [TELEPORT] teleport, [MAP] mappa, [PROFILE] profilo
+	</string>
+	<string name="ClassifiedUpdateAfterPublish">
+		(si aggiornerà dopo la pubblicazione)
+	</string>
+	<string name="MultiPreviewTitle">
+		Anteprima
+	</string>
+	<string name="MultiPropertiesTitle">
+		Proprietà
+	</string>
+	<string name="InvOfferAnObjectNamed">
+		Un oggetto chiamato
+	</string>
+	<string name="InvOfferOwnedByGroup">
+		Posseduto dal gruppo
+	</string>
+	<string name="InvOfferOwnedByUnknownGroup">
+		Posseduto da un gruppo sconosciuto
+	</string>
+	<string name="InvOfferOwnedBy">
+		Posseduto da
+	</string>
+	<string name="InvOfferOwnedByUnknownUser">
+		Posseduto da un&apos;utente sconosciuto
+	</string>
+	<string name="InvOfferGaveYou">
+		Ti ha offerto
+	</string>
+	<string name="InvOfferYouDecline">
+		Rifiuta
+	</string>
+	<string name="InvOfferFrom">
+		da
+	</string>
+	<string name="GroupMoneyTotal">
+		Totale
+	</string>
+	<string name="GroupMoneyBought">
+		comprato
+	</string>
+	<string name="GroupMoneyPaidYou">
+		ti ha pagato
+	</string>
+	<string name="GroupMoneyPaidInto">
+		ha pagato
+	</string>
+	<string name="GroupMoneyBoughtPassTo">
+		ha comprato il pass
+	</string>
+	<string name="GroupMoneyPaidFeeForEvent">
+		pagato la tassa per l&apos;evento
+	</string>
+	<string name="GroupMoneyPaidPrizeForEvent">
+		pagato il premio per l&apos;evento
+	</string>
+	<string name="GroupMoneyBalance">
+		Saldo
+	</string>
+	<string name="GroupMoneyCredits">
+		Crediti
+	</string>
+	<string name="GroupMoneyDebits">
+		Debiti
+	</string>
+	<string name="ViewerObjectContents">
+		Contenuto
+	</string>
+	<string name="AcquiredItems">
+		Oggetti acquisiti
+	</string>
+	<string name="Cancel">
+		Cancella
+	</string>
+	<string name="UploadingCosts">
+		Costi di caricamento [%s]
+	</string>
+	<string name="UnknownFileExtension">
+		Estensione del file sconosciuta [.%s]
+Tipi conosciuti .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
+	</string>
+	<string name="AddLandmarkNavBarMenu">
+		Aggiungi landmark...
+	</string>
+	<string name="EditLandmarkNavBarMenu">
+		Modifica landmark...
+	</string>
+	<string name="accel-mac-control">
+		&#8963;
+	</string>
+	<string name="accel-mac-command">
+		&#8984;
+	</string>
+	<string name="accel-mac-option">
+		&#8997;
+	</string>
+	<string name="accel-mac-shift">
+		&#8679;
+	</string>
+	<string name="accel-win-control">
+		Ctrl+
+	</string>
+	<string name="accel-win-alt">
+		Alt+
+	</string>
+	<string name="accel-win-shift">
+		Shift+
+	</string>
+	<string name="FileSaved">
+		File Salvato
+	</string>
+	<string name="Receiving">
+		In ricezione
+	</string>
+	<string name="AM">
+		AM
+	</string>
+	<string name="PM">
+		PM
+	</string>
+	<string name="PST">
+		PST
+	</string>
+	<string name="PDT">
+		PDT
+	</string>
+	<string name="Forward">
+		Avanti
+	</string>
+	<string name="Left">
+		Sinistra
+	</string>
+	<string name="Right">
+		Destra
+	</string>
+	<string name="Back">
+		Dietro
+	</string>
+	<string name="North">
+		Nord
+	</string>
+	<string name="South">
+		Sud
+	</string>
+	<string name="West">
+		Ovest
+	</string>
+	<string name="East">
+		Est
+	</string>
+	<string name="Up">
+		Su
+	</string>
+	<string name="Down">
+		Giù
+	</string>
+	<string name="Any Category">
+		Tutte le categorie
+	</string>
+	<string name="Shopping">
+		Shopping
+	</string>
+	<string name="Land Rental">
+		Affitto terreni
+	</string>
+	<string name="Property Rental">
+		Affitto proprietà
+	</string>
+	<string name="Special Attraction">
+		Attrazioni speciali
+	</string>
+	<string name="New Products">
+		Nuovi prodotti
+	</string>
+	<string name="Employment">
+		Impiego
+	</string>
+	<string name="Wanted">
+		Richiesti
+	</string>
+	<string name="Service">
+		Servizi
+	</string>
+	<string name="Personal">
+		Personale
+	</string>
+	<string name="None">
+		Nessuno
+	</string>
+	<string name="Linden Location">
+		Luogo dei Linden
+	</string>
+	<string name="Adult">
+		Adult
+	</string>
+	<string name="Arts&amp;Culture">
+		Arte &amp; Cultura
+	</string>
+	<string name="Business">
+		Affari
+	</string>
+	<string name="Educational">
+		Educazione
+	</string>
+	<string name="Gaming">
+		Gioco
+	</string>
+	<string name="Hangout">
+		Divertimento
+	</string>
+	<string name="Newcomer Friendly">
+		Accoglienza nuovi residenti
+	</string>
+	<string name="Parks&amp;Nature">
+		Parchi &amp; Natura
+	</string>
+	<string name="Residential">
+		Residenziale
+	</string>
+	<string name="Stage">
+		Stage
+	</string>
+	<string name="Other">
+		Altro
+	</string>
+	<string name="Any">
+		Tutti
+	</string>
+	<string name="You">
+		Tu
+	</string>
+	<string name="Multiple Media">
+		Media Multipli
+	</string>
+	<string name="Play Media">
+		Media Play/Pausa
+	</string>
+	<string name="MBCmdLineError">
+		Un errore è stato riscontrato analizzando la linea di comando.
+Per informazioni: http://wiki.secondlife.com/wiki/Client_parameters
+Errore:
+	</string>
+	<string name="MBCmdLineUsg">
+		uso linea di comando del programma [APP_NAME] :
+	</string>
+	<string name="MBUnableToAccessFile">
+		Il programma [APP_NAME] non è in grado di accedere ad un file necessario.
+
+Potrebbe darsi che tu abbia copie multiple attivate, o il tuo sistema reputa erroneamente che il file sia già aperto.
+Se il problema persiste, riavvia il computer e riprova.
+Se il problema persiste ancora, dovresti completamente disinstallare l&apos;applicazione [APP_NAME] e reinstallarla.
+	</string>
+	<string name="MBFatalError">
+		Errore fatale
+	</string>
+	<string name="MBRequiresAltiVec">
+		Il programma [APP_NAME] richiede un processore con AltiVec (G4 o superiore).
+	</string>
+	<string name="MBAlreadyRunning">
+		Il programma [APP_NAME] è già attivo.
+Controlla che il programma non sia minimizzato nella tua barra degli strumenti.
+Se il messaggio persiste, riavvia il computer.
+	</string>
+	<string name="MBFrozenCrashed">
+		Sembra che [APP_NAME] si sia bloccata o interrotta nella sessione precedente.
+Vuoi mandare un crash report?
+	</string>
+	<string name="MBAlert">
+		Avviso
+	</string>
+	<string name="MBNoDirectX">
+		Il programmma [APP_NAME] non riesce a trovare una DirectX 9.0b o superiore.
+[APP_NAME] usa le DirectX per determinare hardware e/o i driver  non aggiornati che possono causare problemi di stabilità, scarsa performance e interruzioni. Sebbene tu possa avviare il programma [APP_NAME] senza di esse, raccomandiamo caldamente di installare le DirectX 9.0b.
+
+Vuoi continuare?
+	</string>
+	<string name="MBWarning">
+		Attenzione
+	</string>
+	<string name="MBNoAutoUpdate">
+		L&apos;aggiornamento automatico non è stato ancora implementato per Linux.
+Raccomandiamo di scaricare l&apos;utima versione da www.secondlife.com.
+	</string>
+	<string name="MBRegClassFailed">
+		RegisterClass non riuscito
+	</string>
+	<string name="MBError">
+		Errore
+	</string>
+	<string name="MBFullScreenErr">
+		Impossibile visualizzare a schermo intero a risoluzione [WIDTH] x [HEIGHT].
+Visualizzazione corrente ridotta a finestra.
+	</string>
+	<string name="MBDestroyWinFailed">
+		Errore di arresto durante il tentativo di chiusura della finestra (DestroyWindow() non riuscito)
+	</string>
+	<string name="MBShutdownErr">
+		Errore di arresto
+	</string>
+	<string name="MBDevContextErr">
+		Impossibile caricare i driver GL
+	</string>
+	<string name="MBPixelFmtErr">
+		Impossibile trovare un formato pixel adatto
+	</string>
+	<string name="MBPixelFmtDescErr">
+		Impossibile ottenere una descrizione del formato pixel
+	</string>
+	<string name="MBTrueColorWindow">
+		[APP_NAME] richiede True Color (32-bit) per funzionare.
+Vai alle impostazioni dello schermo del tuo computer e imposta il colore in modalità 32-bit.
+	</string>
+	<string name="MBAlpha">
+		[APP_NAME] non funziona poichè è impossibile trovare un canale alpha ad 8 Bit. Questo problema normalmente deriva dai driver della scheda video.
+Assicurati di avere installato i driver della scheda video più recenti.
+Assicurati anche che il monitor sia impostato a True Color (32-bit) nel pannello di controllo &gt; Display &gt; Settings.
+Se il messaggio persiste, contatta contatta [SUPPORT_SITE].
+	</string>
+	<string name="MBPixelFmtSetErr">
+		Impossibile impostare il formato pixel
+	</string>
+	<string name="MBGLContextErr">
+		Impossibile creare il GL rendering
+	</string>
+	<string name="MBGLContextActErr">
+		Impossibile attivare il GL rendering
+	</string>
+	<string name="MBVideoDrvErr">
+		[APP_NAME] Non riesce ad avviarsi perchè i driver della tua scheda video non sono stati installati correttamente, non sono aggiornati, o sono per un hardware non supportato. Assicurati di avere i driver della scheda video più recenti e anche se li hai installati, prova a reinstallarli di nuovo.
+
+Se il messaggio persiste, contatta [SUPPORT_SITE].
+	</string>
+	<string name="5 O&apos;Clock Shadow">
+		Barba leggera
+	</string>
+	<string name="All White">
+		Tutti bianchi
+	</string>
+	<string name="Anime Eyes">
+		Occhi grandi
+	</string>
+	<string name="Arced">
+		Arcuato
+	</string>
+	<string name="Arm Length">
+		Lunghezza braccia
+	</string>
+	<string name="Attached">
+		Attaccato
+	</string>
+	<string name="Attached Earlobes">
+		Lobi attaccati
+	</string>
+	<string name="Back Bangs">
+		#Back Bangs
+	</string>
+	<string name="Back Bangs Down">
+		#Back Bangs Down
+	</string>
+	<string name="Back Bangs Up">
+		#Back Bangs Up
+	</string>
+	<string name="Back Fringe">
+		Frangetta all&apos;indietro
+	</string>
+	<string name="Back Hair">
+		#Back Hair
+	</string>
+	<string name="Back Hair Down">
+		#Back Hair Down
+	</string>
+	<string name="Back Hair Up">
+		#Back Hair Up
+	</string>
+	<string name="Baggy">
+		Con le borse
+	</string>
+	<string name="Bangs">
+		Frange
+	</string>
+	<string name="Bangs Down">
+		#Bangs Down
+	</string>
+	<string name="Bangs Up">
+		#Bangs Up
+	</string>
+	<string name="Beady Eyes">
+		Occhi piccoli
+	</string>
+	<string name="Belly Size">
+		punto vita
+	</string>
+	<string name="Big">
+		Grande
+	</string>
+	<string name="Big Butt">
+		Sedere grande
+	</string>
+	<string name="Big Eyeball">
+		#Big Eyeball
+	</string>
+	<string name="Big Hair Back">
+		Gonfiore dei capelli: dietro
+	</string>
+	<string name="Big Hair Front">
+		Gonfiore dei capelli: davanti
+	</string>
+	<string name="Big Hair Top">
+		Gonfiore dei capelli: sopra
+	</string>
+	<string name="Big Head">
+		Grandezza testa
+	</string>
+	<string name="Big Pectorals">
+		Grandezza pettorali
+	</string>
+	<string name="Big Spikes">
+		Capelli con punte
+	</string>
+	<string name="Black">
+		Nero
+	</string>
+	<string name="Blonde">
+		Biondo
+	</string>
+	<string name="Blonde Hair">
+		Capelli biondi
+	</string>
+	<string name="Blush">
+		Fard
+	</string>
+	<string name="Blush Color">
+		Colore fard
+	</string>
+	<string name="Blush Opacity">
+		Opacità fard
+	</string>
+	<string name="Body Definition">
+		Definizione muscolare
+	</string>
+	<string name="Body Fat">
+		Grasso corporeo
+	</string>
+	<string name="Body Freckles">
+		Lentiggini e nei
+	</string>
+	<string name="Body Thick">
+		Corpo robusto
+	</string>
+	<string name="Body Thickness">
+		Robustezza del corpo
+	</string>
+	<string name="Body Thin">
+		Magrezza del corpo
+	</string>
+	<string name="Bow Legged">
+		Gambe arcuate
+	</string>
+	<string name="Breast Buoyancy">
+		Altezza del seno
+	</string>
+	<string name="Breast Cleavage">
+		Avvicinamento dei seni
+	</string>
+	<string name="Breast Size">
+		Grandezza del seno
+	</string>
+	<string name="Bridge Width">
+		Larghezza setto
+	</string>
+	<string name="Broad">
+		Largo
+	</string>
+	<string name="Brow Size">
+		Grandezza delle sopracciglia
+	</string>
+	<string name="Bug Eyes">
+		Sporgenza degli occhi
+	</string>
+	<string name="Bugged Eyes">
+		Occhi sporgenti
+	</string>
+	<string name="Bulbous">
+		Bulboso
+	</string>
+	<string name="Bulbous Nose">
+		Naso bulboso
+	</string>
+	<string name="Bushy Eyebrows">
+		Sopracciglia cespugliose
+	</string>
+	<string name="Bushy Hair">
+		Capelli a cespuglio
+	</string>
+	<string name="Butt Size">
+		Grandezza del sedere
+	</string>
+	<string name="bustle skirt">
+		Arricciatura posteriore
+	</string>
+	<string name="no bustle">
+		Meno arricciatura
+	</string>
+	<string name="more bustle">
+		Più arricciatura
+	</string>
+	<string name="Chaplin">
+		Baffetti
+	</string>
+	<string name="Cheek Bones">
+		Mascella
+	</string>
+	<string name="Chest Size">
+		Ampiezza del torace
+	</string>
+	<string name="Chin Angle">
+		Angolo del mento
+	</string>
+	<string name="Chin Cleft">
+		Fessura inf. del mento
+	</string>
+	<string name="Chin Curtains">
+		Barba sottomento
+	</string>
+	<string name="Chin Depth">
+		Profondità mento
+	</string>
+	<string name="Chin Heavy">
+		Appuntita verso l&apos;alto
+	</string>
+	<string name="Chin In">
+		Mento in dentro
+	</string>
+	<string name="Chin Out">
+		Mento in fuori
+	</string>
+	<string name="Chin-Neck">
+		Grandezza mento-collo
+	</string>
+	<string name="Clear">
+		Trasparente
+	</string>
+	<string name="Cleft">
+		Fossetta
+	</string>
+	<string name="Close Set Eyes">
+		Occhi ravvicinati
+	</string>
+	<string name="Closed">
+		Chiusa
+	</string>
+	<string name="Closed Back">
+		Spacco chiuso dietro
+	</string>
+	<string name="Closed Front">
+		Spacco chiuso davanti
+	</string>
+	<string name="Closed Left">
+		Spacco chiuso sx
+	</string>
+	<string name="Closed Right">
+		Spacco chiuso dx
+	</string>
+	<string name="Coin Purse">
+		Meno pronunciati
+	</string>
+	<string name="Collar Back">
+		Scollatura posteriore
+	</string>
+	<string name="Collar Front">
+		Scollatura anteriore
+	</string>
+	<string name="Corner Down">
+		Angolo all&apos;ingiù
+	</string>
+	<string name="Corner Normal">
+		Angolo Normale
+	</string>
+	<string name="Corner Up">
+		Angolo all&apos;insù
+	</string>
+	<string name="Creased">
+		Alzato
+	</string>
+	<string name="Crooked Nose">
+		Naso storto
+	</string>
+	<string name="Cropped Hair">
+		Capelli raccolti
+	</string>
+	<string name="Cuff Flare">
+		Fondo pantalone
+	</string>
+	<string name="Dark">
+		Scuro
+	</string>
+	<string name="Dark Green">
+		Verde scuro
+	</string>
+	<string name="Darker">
+		Più scuro
+	</string>
+	<string name="Deep">
+		Più pronunciato
+	</string>
+	<string name="Default Heels">
+		Tacchi standard
+	</string>
+	<string name="Default Toe">
+		Punta del piede standard
+	</string>
+	<string name="Dense">
+		Meno rade
+	</string>
+	<string name="Dense hair">
+		#Dense Hair
+	</string>
+	<string name="Double Chin">
+		Doppio mento
+	</string>
+	<string name="Downturned">
+		Naso all&apos;ingiù
+	</string>
+	<string name="Duffle Bag">
+		Più pronunciati
+	</string>
+	<string name="Ear Angle">
+		Orecchie a sventola
+	</string>
+	<string name="Ear Size">
+		Grandezza orecchie
+	</string>
+	<string name="Ear Tips">
+		Tipo di orecchio
+	</string>
+	<string name="Egg Head">
+		Ovalizzazione testa
+	</string>
+	<string name="Eye Bags">
+		Borse sotto agli occhi
+	</string>
+	<string name="Eye Color">
+		Colore degli occhi
+	</string>
+	<string name="Eye Depth">
+		Occhi incavati
+	</string>
+	<string name="Eye Lightness">
+		Luminosità degli occhi
+	</string>
+	<string name="Eye Opening">
+		Apertura degli occhi
+	</string>
+	<string name="Eye Pop">
+		Differenza apertura occhi
+	</string>
+	<string name="Eye Size">
+		Grandezza occhi
+	</string>
+	<string name="Eye Spacing">
+		Distanza occhi
+	</string>
+	<string name="Eyeball Size">
+		#Eyeball Size
+	</string>
+	<string name="Eyebrow Arc">
+		Arco delle sopracciglia
+	</string>
+	<string name="Eyebrow Density">
+		Densità delle sopracciglia
+	</string>
+	<string name="Eyebrow Height">
+		Altezza delle sopracciglia
+	</string>
+	<string name="Eyebrow Points">
+		Sopracciglia appuntite
+	</string>
+	<string name="Eyebrow Size">
+		Grandezza sopracciglia
+	</string>
+	<string name="Eyelash Length">
+		Lunghezza delle ciglia
+	</string>
+	<string name="Eyeliner">
+		Eyeliner
+	</string>
+	<string name="Eyeliner Color">
+		Colore dell&apos;eyeliner
+	</string>
+	<string name="Eyes Back">
+		#Eyes Back
+	</string>
+	<string name="Eyes Bugged">
+		Occhi sporgenti
+	</string>
+	<string name="Eyes Forward">
+		#Eyes Forward
+	</string>
+	<string name="Eyes Long Head">
+		#Eyes Long Head
+	</string>
+	<string name="Eyes Shear Left Up">
+		Distorsione occhi in alto a sx
+	</string>
+	<string name="Eyes Shear Right Up">
+		Distorsione occhi in alto a dx
+	</string>
+	<string name="Eyes Short Head">
+		#Eyes Short Head
+	</string>
+	<string name="Eyes Spread">
+		#Eyes Spread
+	</string>
+	<string name="Eyes Sunken">
+		#Eyes Sunken
+	</string>
+	<string name="Eyes Together">
+		#Eyes Together
+	</string>
+	<string name="Face Shear">
+		Distorsione del viso
+	</string>
+	<string name="Facial Definition">
+		Lineamenti del viso
+	</string>
+	<string name="Far Set Eyes">
+		Occhi distanti
+	</string>
+	<string name="Fat">
+		#Fat
+	</string>
+	<string name="Fat Head">
+		#Fat Head
+	</string>
+	<string name="Fat Lips">
+		Labbra carnose
+	</string>
+	<string name="Fat Lower">
+		#Fat Lower
+	</string>
+	<string name="Fat Lower Lip">
+		Labbro inferiore sporgente
+	</string>
+	<string name="Fat Torso">
+		#Fat Torso
+	</string>
+	<string name="Fat Upper">
+		#Fat Upper
+	</string>
+	<string name="Fat Upper Lip">
+		Labbro superiore sporgente
+	</string>
+	<string name="Female">
+		Femmina
+	</string>
+	<string name="Fingerless">
+		Senza dita
+	</string>
+	<string name="Fingers">
+		Dita
+	</string>
+	<string name="Flared Cuffs">
+		Fondo largo
+	</string>
+	<string name="Flat">
+		Piatto
+	</string>
+	<string name="Flat Butt">
+		Sedere piatto
+	</string>
+	<string name="Flat Head">
+		Viso piatto
+	</string>
+	<string name="Flat Toe">
+		Punta piatta
+	</string>
+	<string name="Foot Size">
+		Grandezza piede
+	</string>
+	<string name="Forehead Angle">
+		Angolo della fronte
+	</string>
+	<string name="Forehead Heavy">
+		Appuntita verso il basso
+	</string>
+	<string name="Freckles">
+		Lentiggini
+	</string>
+	<string name="Front Bangs Down">
+		#Front Bangs Down
+	</string>
+	<string name="Front Bangs Up">
+		#Front Bangs Up
+	</string>
+	<string name="Front Fringe">
+		Frangetta
+	</string>
+	<string name="Front Hair">
+		#Front Hair
+	</string>
+	<string name="Front Hair Down">
+		#Front Hair Down
+	</string>
+	<string name="Front Hair Up">
+		#Front Hair Up
+	</string>
+	<string name="Full Back">
+		Scostati
+	</string>
+	<string name="Full Eyeliner">
+		Con eyeliner
+	</string>
+	<string name="Full Front">
+		Anteriore pieno
+	</string>
+	<string name="Full Hair Sides">
+		Riempimento lati
+	</string>
+	<string name="Full Sides">
+		Pieni
+	</string>
+	<string name="Glossy">
+		Lucido
+	</string>
+	<string name="Glove Fingers">
+		Dita dei guanti
+	</string>
+	<string name="Glove Length">
+		Lunghezza guanti
+	</string>
+	<string name="Hair">
+		Capelli
+	</string>
+	<string name="Hair Back">
+		Capelli: dietro
+	</string>
+	<string name="Hair Front">
+		Capelli: davanti
+	</string>
+	<string name="Hair Sides">
+		Capelli: lati
+	</string>
+	<string name="Hair Sweep">
+		Traslazione
+	</string>
+	<string name="Hair Thickess">
+		Spessore
+	</string>
+	<string name="Hair Thickness">
+		Spessore barba
+	</string>
+	<string name="Hair Tilt">
+		Rotazione capelli
+	</string>
+	<string name="Hair Tilted Left">
+		Verso sinistra
+	</string>
+	<string name="Hair Tilted Right">
+		Verso destra
+	</string>
+	<string name="Hair Volume">
+		Capelli: volume
+	</string>
+	<string name="Hand Size">
+		Grandezza mani
+	</string>
+	<string name="Handlebars">
+		Baffi lunghi
+	</string>
+	<string name="Head Length">
+		Sporgenza del viso
+	</string>
+	<string name="Head Shape">
+		Forma della testa
+	</string>
+	<string name="Head Size">
+		Grandezza della testa
+	</string>
+	<string name="Head Stretch">
+		Compressione lat testa
+	</string>
+	<string name="Heel Height">
+		Altezza tacchi
+	</string>
+	<string name="Heel Shape">
+		Forma tacchi
+	</string>
+	<string name="Height">
+		Altezza
+	</string>
+	<string name="High">
+		Alto
+	</string>
+	<string name="High Heels">
+		Tacchi alti
+	</string>
+	<string name="High Jaw">
+		Mandibola alta
+	</string>
+	<string name="High Platforms">
+		Alta
+	</string>
+	<string name="High and Tight">
+		Cavallo alto
+	</string>
+	<string name="Higher">
+		Più alto
+	</string>
+	<string name="Hip Length">
+		Altezza bacino
+	</string>
+	<string name="Hip Width">
+		Larghezza bacino
+	</string>
+	<string name="In">
+		Dentro
+	</string>
+	<string name="In Shdw Color">
+		Colore ombretto interno
+	</string>
+	<string name="In Shdw Opacity">
+		Opacità ombretto interno
+	</string>
+	<string name="Inner Eye Corner">
+		Angolo interno
+	</string>
+	<string name="Inner Eye Shadow">
+		Ombretto interno
+	</string>
+	<string name="Inner Shadow">
+		Ombretto interno
+	</string>
+	<string name="Jacket Length">
+		Lunghezza giacca
+	</string>
+	<string name="Jacket Wrinkles">
+		Grinze della giacca
+	</string>
+	<string name="Jaw Angle">
+		Angolo mandibola
+	</string>
+	<string name="Jaw Jut">
+		Prognatismo mento
+	</string>
+	<string name="Jaw Shape">
+		Forma del mento
+	</string>
+	<string name="Join">
+		Avvicinati
+	</string>
+	<string name="Jowls">
+		Guance
+	</string>
+	<string name="Knee Angle">
+		Angolo ginocchia
+	</string>
+	<string name="Knock Kneed">
+		Gambe ad X
+	</string>
+	<string name="Large">
+		Grande
+	</string>
+	<string name="Large Hands">
+		Mani grandi
+	</string>
+	<string name="Left Part">
+		Riga a sinistra
+	</string>
+	<string name="Leg Length">
+		Lunghezza gambe
+	</string>
+	<string name="Leg Muscles">
+		Muscoli gambe
+	</string>
+	<string name="Less">
+		Meno
+	</string>
+	<string name="Less Body Fat">
+		Meno grasso
+	</string>
+	<string name="Less Curtains">
+		Meno
+	</string>
+	<string name="Less Freckles">
+		Meno lentiggini
+	</string>
+	<string name="Less Full">
+		Meno piene
+	</string>
+	<string name="Less Gravity">
+		Più alto
+	</string>
+	<string name="Less Love">
+		Meno maniglie
+	</string>
+	<string name="Less Muscles">
+		Meno muscoli
+	</string>
+	<string name="Less Muscular">
+		Meno muscolari
+	</string>
+	<string name="Less Rosy">
+		Meno rosato
+	</string>
+	<string name="Less Round">
+		Meno rotondo
+	</string>
+	<string name="Less Saddle">
+		Meno a sella
+	</string>
+	<string name="Less Square">
+		Meno quadrato
+	</string>
+	<string name="Less Volume">
+		Meno volume
+	</string>
+	<string name="Less soul">
+		Meno
+	</string>
+	<string name="Lighter">
+		Più chiaro
+	</string>
+	<string name="Lip Cleft">
+		Distanza divis. labbro sup.
+	</string>
+	<string name="Lip Cleft Depth">
+		Prof. spacco labbro sup.
+	</string>
+	<string name="Lip Fullness">
+		Riempimento delle labbra
+	</string>
+	<string name="Lip Pinkness">
+		Tonalità rosa labbra
+	</string>
+	<string name="Lip Ratio">
+		Proporzione labbra
+	</string>
+	<string name="Lip Thickness">
+		Carnosità labbra
+	</string>
+	<string name="Lip Width">
+		Larghezza labbra
+	</string>
+	<string name="Lipgloss">
+		Lipgloss
+	</string>
+	<string name="Lipstick">
+		Rossetto
+	</string>
+	<string name="Lipstick Color">
+		Colore rossetto
+	</string>
+	<string name="Long">
+		Lungo
+	</string>
+	<string name="Long Head">
+		Viso sporgente
+	</string>
+	<string name="Long Hips">
+		Bacino alto
+	</string>
+	<string name="Long Legs">
+		Gambe lunghe
+	</string>
+	<string name="Long Neck">
+		Collo lungo
+	</string>
+	<string name="Long Pigtails">
+		Ciuffi laterali lunghi
+	</string>
+	<string name="Long Ponytail">
+		Codino lungo
+	</string>
+	<string name="Long Torso">
+		Torace lungo
+	</string>
+	<string name="Long arms">
+		Braccia lunghe
+	</string>
+	<string name="Longcuffs">
+		Longcuffs
+	</string>
+	<string name="Loose Pants">
+		Non attillati
+	</string>
+	<string name="Loose Shirt">
+		Non attillata
+	</string>
+	<string name="Loose Sleeves">
+		Maniche lente
+	</string>
+	<string name="Love Handles">
+		Maniglie dell&apos;amore
+	</string>
+	<string name="Low">
+		Basso
+	</string>
+	<string name="Low Heels">
+		Tacchi bassi
+	</string>
+	<string name="Low Jaw">
+		Mandibola bassa
+	</string>
+	<string name="Low Platforms">
+		Bassa
+	</string>
+	<string name="Low and Loose">
+		Cavallo basso
+	</string>
+	<string name="Lower">
+		Più basso
+	</string>
+	<string name="Lower Bridge">
+		Parte bassa del setto
+	</string>
+	<string name="Lower Cheeks">
+		Guance
+	</string>
+	<string name="Male">
+		Maschio
+	</string>
+	<string name="Middle Part">
+		Riga nel mezzo
+	</string>
+	<string name="More">
+		Di più
+	</string>
+	<string name="More Blush">
+		Più fard
+	</string>
+	<string name="More Body Fat">
+		Più grasso
+	</string>
+	<string name="More Curtains">
+		Più
+	</string>
+	<string name="More Eyeshadow">
+		Più ombretto
+	</string>
+	<string name="More Freckles">
+		Più lentiggini
+	</string>
+	<string name="More Full">
+		Più piene
+	</string>
+	<string name="More Gravity">
+		Più calato
+	</string>
+	<string name="More Lipstick">
+		Più rossetto
+	</string>
+	<string name="More Love">
+		Più maniglie
+	</string>
+	<string name="More Lower Lip">
+		Labbro inf. pronunciato
+	</string>
+	<string name="More Muscles">
+		Più muscoli
+	</string>
+	<string name="More Muscular">
+		Più muscolatura
+	</string>
+	<string name="More Rosy">
+		Più rosato
+	</string>
+	<string name="More Round">
+		Più rotondo
+	</string>
+	<string name="More Saddle">
+		Più a sella
+	</string>
+	<string name="More Sloped">
+		Più orizzontale
+	</string>
+	<string name="More Square">
+		Più quadrato
+	</string>
+	<string name="More Upper Lip">
+		Labbro sup. pronunciato
+	</string>
+	<string name="More Vertical">
+		Più verticale
+	</string>
+	<string name="More Volume">
+		Più volume
+	</string>
+	<string name="More soul">
+		Più
+	</string>
+	<string name="Moustache">
+		Baffi
+	</string>
+	<string name="Mouth Corner">
+		Angolo della bocca
+	</string>
+	<string name="Mouth Position">
+		Posizione della bocca
+	</string>
+	<string name="Mowhawk">
+		Vuoti
+	</string>
+	<string name="Muscular">
+		Muscolatura
+	</string>
+	<string name="Mutton Chops">
+		Basette lunghe
+	</string>
+	<string name="Nail Polish">
+		Smalto
+	</string>
+	<string name="Nail Polish Color">
+		Colore smalto
+	</string>
+	<string name="Narrow">
+		Socchiusi
+	</string>
+	<string name="Narrow Back">
+		Laterali post. vicini
+	</string>
+	<string name="Narrow Front">
+		Laterali ant. vicini
+	</string>
+	<string name="Narrow Lips">
+		Labbra strette
+	</string>
+	<string name="Natural">
+		Naturale
+	</string>
+	<string name="Neck Length">
+		Lunghezza del collo
+	</string>
+	<string name="Neck Thickness">
+		Grandezza del collo
+	</string>
+	<string name="No Blush">
+		Senza fard
+	</string>
+	<string name="No Eyeliner">
+		Senza eyeliner
+	</string>
+	<string name="No Eyeshadow">
+		Senza ombretto
+	</string>
+	<string name="No Heels">
+		No Heels
+	</string>
+	<string name="No Lipgloss">
+		Senza lipgloss
+	</string>
+	<string name="No Lipstick">
+		Senza rossetto
+	</string>
+	<string name="No Part">
+		Senza riga
+	</string>
+	<string name="No Polish">
+		Senza smalto
+	</string>
+	<string name="No Red">
+		Senza rosso
+	</string>
+	<string name="No Spikes">
+		Senza punte
+	</string>
+	<string name="No White">
+		Senza bianco
+	</string>
+	<string name="No Wrinkles">
+		Senza pieghe
+	</string>
+	<string name="Normal Lower">
+		Inferiore normale
+	</string>
+	<string name="Normal Upper">
+		Superiore normale
+	</string>
+	<string name="Nose Left">
+		Storto a sinistra
+	</string>
+	<string name="Nose Right">
+		Storto a destra
+	</string>
+	<string name="Nose Size">
+		Grandezza naso
+	</string>
+	<string name="Nose Thickness">
+		Spessore naso
+	</string>
+	<string name="Nose Tip Angle">
+		Angolo punta naso
+	</string>
+	<string name="Nose Tip Shape">
+		Forma punta naso
+	</string>
+	<string name="Nose Width">
+		Larghezza naso
+	</string>
+	<string name="Nostril Division">
+		Divisione narici
+	</string>
+	<string name="Nostril Width">
+		Larghezza narici
+	</string>
+	<string name="Old">
+		Vecchio
+	</string>
+	<string name="Opaque">
+		Opaco
+	</string>
+	<string name="Open">
+		Aperto
+	</string>
+	<string name="Open Back">
+		Retro aperto
+	</string>
+	<string name="Open Front">
+		Aperto Frontale
+	</string>
+	<string name="Open Left">
+		Lato sin. aperto
+	</string>
+	<string name="Open Right">
+		Lato des. aperto
+	</string>
+	<string name="Orange">
+		Arancio
+	</string>
+	<string name="Out">
+		Fuori
+	</string>
+	<string name="Out Shdw Color">
+		Colore ombretto esterno
+	</string>
+	<string name="Out Shdw Opacity">
+		Opacità ombretto esterno
+	</string>
+	<string name="Outer Eye Corner">
+		Angolo esterno occhio
+	</string>
+	<string name="Outer Eye Shadow">
+		Ombretto esterno
+	</string>
+	<string name="Outer Shadow">
+		Ombreggiatura esterna
+	</string>
+	<string name="Overbite">
+		Denti sup. in fuori
+	</string>
+	<string name="Package">
+		Genitali
+	</string>
+	<string name="Painted Nails">
+		Unghie colorate
+	</string>
+	<string name="Pale">
+		Pallido
+	</string>
+	<string name="Pants Crotch">
+		Cavallo
+	</string>
+	<string name="Pants Fit">
+		Vestibilità pantaloni
+	</string>
+	<string name="Pants Length">
+		Lunghezza pantaloni
+	</string>
+	<string name="Pants Waist">
+		Altezza slip
+	</string>
+	<string name="Pants Wrinkles">
+		Pantaloni con le grinze
+	</string>
+	<string name="Part">
+		Con riga
+	</string>
+	<string name="Part Bangs">
+		Frangetta divisa
+	</string>
+	<string name="Pectorals">
+		Pettorali
+	</string>
+	<string name="Pigment">
+		Pigmento
+	</string>
+	<string name="Pigtails">
+		Ciuffi
+	</string>
+	<string name="Pink">
+		Rosa
+	</string>
+	<string name="Pinker">
+		Più rosato
+	</string>
+	<string name="Platform Height">
+		Altezza pianta
+	</string>
+	<string name="Platform Width">
+		Larghezza pianta
+	</string>
+	<string name="Pointy">
+		Appuntito
+	</string>
+	<string name="Pointy Heels">
+		Tacchi a spillo
+	</string>
+	<string name="Pointy Toe">
+		Punta appuntita
+	</string>
+	<string name="Ponytail">
+		Codino
+	</string>
+	<string name="Poofy Skirt">
+		Gonna gonfia
+	</string>
+	<string name="Pop Left Eye">
+		Sinistro più aperto
+	</string>
+	<string name="Pop Right Eye">
+		Destro più aperto
+	</string>
+	<string name="Puffy">
+		Paffute
+	</string>
+	<string name="Puffy Eyelids">
+		Palpebre gonfie
+	</string>
+	<string name="Rainbow Color">
+		Tonalità
+	</string>
+	<string name="Red Hair">
+		Presenza di rosso nei capelli
+	</string>
+	<string name="Red Skin">
+		Red Skin
+	</string>
+	<string name="Regular">
+		Normale
+	</string>
+	<string name="Regular Muscles">
+		Muscolatura normale
+	</string>
+	<string name="Right Part">
+		Riga a destra
+	</string>
+	<string name="Rosy Complexion">
+		Incarnato
+	</string>
+	<string name="Round">
+		Rotondo
+	</string>
+	<string name="Round Forehead">
+		Round Forehead
+	</string>
+	<string name="Ruddiness">
+		Rossore
+	</string>
+	<string name="Ruddy">
+		Rosse
+	</string>
+	<string name="Rumpled Hair">
+		Capelli mossi
+	</string>
+	<string name="Saddle Bags">
+		Rotondità fianchi
+	</string>
+	<string name="Saddlebags">
+		Rotondità fianchi
+	</string>
+	<string name="Scrawny">
+		Scrawny
+	</string>
+	<string name="Scrawny Leg">
+		Gambe magre
+	</string>
+	<string name="Separate">
+		Separati
+	</string>
+	<string name="Shading">
+		Shading
+	</string>
+	<string name="Shadow hair">
+		Shadow hair
+	</string>
+	<string name="Shallow">
+		Meno pronunciato
+	</string>
+	<string name="Shear Back">
+		Accostamento posteriore
+	</string>
+	<string name="Shear Face">
+		Distorsione viso
+	</string>
+	<string name="Shear Front">
+		Riempimento davanti
+	</string>
+	<string name="Shear Left">
+		A sinistra
+	</string>
+	<string name="Shear Left Up">
+		Distorto a sinistra
+	</string>
+	<string name="Shear Right">
+		A destra
+	</string>
+	<string name="Shear Right Up">
+		Distorto a destra
+	</string>
+	<string name="Sheared Back">
+		Accostati
+	</string>
+	<string name="Sheared Front">
+		Anteriormente vuoto
+	</string>
+	<string name="Shift Left">
+		A sinistra
+	</string>
+	<string name="Shift Mouth">
+		Spostamento bocca
+	</string>
+	<string name="Shift Right">
+		A destra
+	</string>
+	<string name="Shirt Bottom">
+		Parte inferiore camicia
+	</string>
+	<string name="Shirt Fit">
+		Vestibilità camicia
+	</string>
+	<string name="Shirt Wrinkles">
+		Camicia con le grinze
+	</string>
+	<string name="Shoe Height">
+		Altezza scarpe
+	</string>
+	<string name="Short">
+		Basso
+	</string>
+	<string name="Short Arms">
+		Braccia corte
+	</string>
+	<string name="Short Legs">
+		Gambe corte
+	</string>
+	<string name="Short Neck">
+		Collo corto
+	</string>
+	<string name="Short Pigtails">
+		Ciuffi laterali corti
+	</string>
+	<string name="Short Ponytail">
+		Codino Corto
+	</string>
+	<string name="Short Sideburns">
+		Basette corte
+	</string>
+	<string name="Short Torso">
+		Torace corto
+	</string>
+	<string name="Short hips">
+		Bacino corto
+	</string>
+	<string name="Shoulders">
+		Spalle
+	</string>
+	<string name="Side Bangs">
+		Side Bangs
+	</string>
+	<string name="Side Bangs Down">
+		Side Bangs Down
+	</string>
+	<string name="Side Bangs Up">
+		Side Bangs Up
+	</string>
+	<string name="Side Fringe">
+		Ciuffi laterali
+	</string>
+	<string name="Sideburns">
+		Basette
+	</string>
+	<string name="Sides Hair">
+		Capigliatura later.
+	</string>
+	<string name="Sides Hair Down">
+		Giù
+	</string>
+	<string name="Sides Hair Up">
+		Su
+	</string>
+	<string name="Skinny">
+		Skinny
+	</string>
+	<string name="Skinny Neck">
+		Collo fino
+	</string>
+	<string name="Skirt Fit">
+		Vestibilità gonna
+	</string>
+	<string name="Skirt Length">
+		Lunghezza gonna
+	</string>
+	<string name="Slanted Forehead">
+		Fronte inclinata
+	</string>
+	<string name="Sleeve Length">
+		Lunghezza maniche
+	</string>
+	<string name="Sleeve Looseness">
+		Morbidezza maniche
+	</string>
+	<string name="Slit Back">
+		Spacco: posteriore
+	</string>
+	<string name="Slit Front">
+		Spacco: anteriore
+	</string>
+	<string name="Slit Left">
+		Spacco: sinistro
+	</string>
+	<string name="Slit Right">
+		Spacco: destro
+	</string>
+	<string name="Small">
+		Piccolo
+	</string>
+	<string name="Small Hands">
+		Mani piccole
+	</string>
+	<string name="Small Head">
+		Testa piccola
+	</string>
+	<string name="Smooth">
+		Liscio
+	</string>
+	<string name="Smooth Hair">
+		Capelli lisci
+	</string>
+	<string name="Socks Length">
+		Lunghezza calze
+	</string>
+	<string name="Some">
+		Some
+	</string>
+	<string name="Soulpatch">
+		Pizzetto labbro inferiore
+	</string>
+	<string name="Sparse">
+		Piu rade
+	</string>
+	<string name="Spiked Hair">
+		Capelli a punta
+	</string>
+	<string name="Square">
+		Quadrato
+	</string>
+	<string name="Square Toe">
+		Punta quadrata
+	</string>
+	<string name="Squash Head">
+		Testa schiacciata
+	</string>
+	<string name="Squash/Stretch Head">
+		Testa Schiacciata/Allungata
+	</string>
+	<string name="Stretch Head">
+		Testa allungata
+	</string>
+	<string name="Sunken">
+		Scarne
+	</string>
+	<string name="Sunken Chest">
+		Senza pettorali
+	</string>
+	<string name="Sunken Eyes">
+		Occhi infossati
+	</string>
+	<string name="Sweep Back">
+		Indietro
+	</string>
+	<string name="Sweep Forward">
+		Avanti
+	</string>
+	<string name="Swept Back">
+		Swept Back
+	</string>
+	<string name="Swept Back Hair">
+		Swept Back Hair
+	</string>
+	<string name="Swept Forward">
+		Swept Forward
+	</string>
+	<string name="Swept Forward Hair">
+		Swept Forward Hair
+	</string>
+	<string name="Tall">
+		Alto
+	</string>
+	<string name="Taper Back">
+		Ravv. lat. posteriore
+	</string>
+	<string name="Taper Front">
+		Ravv. lat. frontale
+	</string>
+	<string name="Thick Heels">
+		Tacchi spessi
+	</string>
+	<string name="Thick Neck">
+		Collo grosso
+	</string>
+	<string name="Thick Toe">
+		Punta spessa
+	</string>
+	<string name="Thickness">
+		Thickness
+	</string>
+	<string name="Thin">
+		Ossute
+	</string>
+	<string name="Thin Eyebrows">
+		Sopracciglia fini
+	</string>
+	<string name="Thin Lips">
+		Labbra fini
+	</string>
+	<string name="Thin Nose">
+		Naso fino
+	</string>
+	<string name="Tight Chin">
+		Mento magro
+	</string>
+	<string name="Tight Cuffs">
+		Fondo stretto
+	</string>
+	<string name="Tight Pants">
+		Attillati
+	</string>
+	<string name="Tight Shirt">
+		Attilata
+	</string>
+	<string name="Tight Skirt">
+		Attillata
+	</string>
+	<string name="Tight Sleeves">
+		Attillate
+	</string>
+	<string name="Tilt Left">
+		Tilt Left
+	</string>
+	<string name="Tilt Right">
+		Tilt Right
+	</string>
+	<string name="Toe Shape">
+		Forma della punta
+	</string>
+	<string name="Toe Thickness">
+		Spessore della punta
+	</string>
+	<string name="Torso Length">
+		Lunghezza del torace
+	</string>
+	<string name="Torso Muscles">
+		Muscoli del torace
+	</string>
+	<string name="Torso Scrawny">
+		Torso Scrawny
+	</string>
+	<string name="Unattached">
+		Distaccato
+	</string>
+	<string name="Uncreased">
+		Abbassato
+	</string>
+	<string name="Underbite">
+		Denti inf. in fuori
+	</string>
+	<string name="Unnatural">
+		Innaturale
+	</string>
+	<string name="Upper Bridge">
+		Parte alta del setto
+	</string>
+	<string name="Upper Cheeks">
+		Parte alta degli zigomi
+	</string>
+	<string name="Upper Chin Cleft">
+		Fessura sup. del mento
+	</string>
+	<string name="Upper Eyelid Fold">
+		Piega palpebra sup.
+	</string>
+	<string name="Upturned">
+		Naso all&apos;insù
+	</string>
+	<string name="Very Red">
+		Molto rossi
+	</string>
+	<string name="Waist Height">
+		Vita alta
+	</string>
+	<string name="Well-Fed">
+		Pienotte
+	</string>
+	<string name="White Hair">
+		Capelli bianchi
+	</string>
+	<string name="Wide">
+		Spalancati
+	</string>
+	<string name="Wide Back">
+		Laterali post. larghi
+	</string>
+	<string name="Wide Front">
+		Laterali ant. larghi
+	</string>
+	<string name="Wide Lips">
+		Labbra larghe
+	</string>
+	<string name="Wild">
+		Colorati
+	</string>
+	<string name="Wrinkles">
+		Grinze
+	</string>
+	<string name="LocationCtrlAddLandmarkTooltip">
+		Aggiungi ai miei landmark
+	</string>
+	<string name="LocationCtrlEditLandmarkTooltip">
+		Modifica i miei landmark
+	</string>
+	<string name="LocationCtrlInfoBtnTooltip">
+		maggiori informazioni sulla posizione attuale
+	</string>
+	<string name="LocationCtrlComboBtnTooltip">
+		Lo storico delle mie posizioni
+	</string>
+	<string name="UpdaterWindowTitle">
+		Aggiornamento [APP_NAME]
+	</string>
+	<string name="UpdaterNowUpdating">
+		[APP_NAME] In aggiornamento...
+	</string>
+	<string name="UpdaterNowInstalling">
+		[APP_NAME] In installazione...
+	</string>
+	<string name="UpdaterUpdatingDescriptive">
+		Il Viewer del programma [APP_NAME] si sta aggiornando all&apos;ultima versione. Potrebbe volerci del tempo, attendi.
+	</string>
+	<string name="UpdaterProgressBarTextWithEllipses">
+		Aggiornamento in download...
+	</string>
+	<string name="UpdaterProgressBarText">
+		Download dell&apos;aggiornamento
+	</string>
+	<string name="UpdaterFailDownloadTitle">
+		Download dell&apos;aggiornamento non riuscito
+	</string>
+	<string name="UpdaterFailUpdateDescriptive">
+		Il programma [APP_NAME] ha riscontrato un&apos;errore nel tentativo di aggiornamento. Consigliamo di scaricare l&apos;ultima versione direttamente da www.secondlife.com.
+	</string>
+	<string name="UpdaterFailInstallTitle">
+		Tentativo di installazione aggiornamento non riuscito
+	</string>
+	<string name="UpdaterFailStartTitle">
+		Errore nell&apos;apertura del viewer
+	</string>
+	<string name="IM_logging_string">
+		-- Registrazione messaggi instantanei abilitata --
+	</string>
+	<string name="IM_typing_start_string">
+		[NAME] sta scrivendo...
+	</string>
+	<string name="Unnamed">
+		(anonimo)
+	</string>
+	<string name="IM_moderated_chat_label">
+		(Moderato: Voice spento di default)
+	</string>
+	<string name="IM_unavailable_text_label">
+		La chat di testo non è disponibile per questa chiamata.
+	</string>
+	<string name="IM_muted_text_label">
+		La chat di testo è stata disabilitata da un moderatore di gruppo.
+	</string>
+	<string name="IM_default_text_label">
+		Clicca qua per inviare un messaggio instantaneo.
+	</string>
+	<string name="IM_to_label">
+		A
+	</string>
+	<string name="IM_moderator_label">
+		(Moderatore)
 	</string>
-  <string name="ScriptQuestionCautionChatGranted">
-	A &apos;[OBJECTNAME]&apos;, un oggetto di proprietà di &apos;[OWNERNAME]&apos;, situato in [REGIONNAME] [REGIONPOS], è stato concesso il permesso di: [PERMISSIONS].
-  </string>
-  <string name="ScriptQuestionCautionChatDenied">
-	A &apos;[OBJECTNAME]&apos;, un oggetto di proprietà di &apos;[OWNERNAME]&apos;, situato in [REGIONNAME] [REGIONPOS], è stato negato il permesso di: [PERMISSIONS].
-  </string>
-  <string name="ScriptTakeMoney">
-	Prendere dollari Linden (L$) da te
-  </string>
-  <string name="ActOnControlInputs">
-	Agire sul tuo controllo degli input
-  </string>
-  <string name="RemapControlInputs">
-	Rimappare il tuo controllo degli input
-  </string>
-  <string name="AnimateYourAvatar">
-	Animare il tuo avatar
-  </string>
-  <string name="AttachToYourAvatar">
-	Far indossare al tuo avatar
-  </string>
-  <string name="ReleaseOwnership">
-	Rilasciare la propietà è far diventare pubblico.
-  </string>
-  <string name="LinkAndDelink">
-	Collegare e scollegare dagli altri oggetti
-  </string>
-  <string name="AddAndRemoveJoints">
-	Aggiungere e rimuovere le giunzioni insieme con gli altri oggetti
-  </string>
-  <string name="ChangePermissions">
-	Cambiare i permessi
-  </string>
-  <string name="TrackYourCamera">
-	Tracciare la fotocamera
-  </string>
-  <string name="ControlYourCamera">
-	Controllare la tua fotocamera
-  </string>
 	<string name="only_user_message">
 		Sei l&apos;unico utente di questa sessione.
 	</string>
@@ -622,31 +3253,4 @@
 	<string name="close_on_no_ability">
 		Non hai più le abilitazioni per rimanere nella sessione chat.
 	</string>
-			<string name="AcctTypeResident">
-				Residente
-			</string>
-			<string name="AcctTypeTrial">
-				Prova
-			</string>
-			<string name="AcctTypeCharterMember">
-				Membro privilegiato
-			</string>
-			<string name="AcctTypeEmployee">
-				Impiegato della Linden Lab
-			</string>
-			<string name="PaymentInfoUsed">
-				Info. di pagamento usate
-			</string>
-			<string name="PaymentInfoOnFile">
-				Info. di pagamento in archivio
-			</string>
-			<string name="NoPaymentInfoOnFile">
-				Nessuna info. di pagamento
-			</string>
-			<string name="AgeVerified">
-				Età verificata
-			</string>
-			<string name="NotAgeVerified">
-				Età non verificata
-			</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/it/teleport_strings.xml b/indra/newview/skins/default/xui/it/teleport_strings.xml
index 57e81bc41e8..eff7516050b 100644
--- a/indra/newview/skins/default/xui/it/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/it/teleport_strings.xml
@@ -2,12 +2,12 @@
 <teleport_messages>
 	<message_set name="errors">
 		<message name="invalid_tport">
-			C&apos;è stato un problema nell&apos;elaborare la tua richiesta di teletrasporto. Potresti aver bisogno di ricollegarti prima di poter usare il teletrasporto. Se continui ad avere problemi, controlla per favore le FAQ del Supporto Tecnico a:
-www.secondlife.com/support
+			C&apos;è stato un problema nell&apos;elaborare la tua richiesta di teleport. Potresti aver bisogno di ricollegarti prima di poter usare il teleport. Se continui ad avere problemi, controlla per favore le FAQ del Supporto Tecnico a:
+www.secondlife.com/support.
 		</message>
 		<message name="invalid_region_handoff">
 			C&apos;è stato un problema nell&apos;elaborare il cambio di regione. Potresti aver bisogno di ricollegarti prima di poterlo effetuare. Se continui ad avere problemi, controlla per favore le FAQ del Supporto Tecnico a:
-www.secondlife.com/support
+www.secondlife.com/support.
 		</message>
 		<message name="blocked_tport">
 			Spiacenti, il teletrasporto è bloccato al momento. Prova di nuovo tra pochi istanti. Se ancora non potrai teletrasportarti, per favore scollegati e ricollegati per risolvere il problema.
diff --git a/indra/newview/skins/default/xui/pl/floater_about.xml b/indra/newview/skins/default/xui/pl/floater_about.xml
index f59630edc70..29a5aca90d7 100755
--- a/indra/newview/skins/default/xui/pl/floater_about.xml
+++ b/indra/newview/skins/default/xui/pl/floater_about.xml
@@ -1,20 +1,60 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="floater_about" title="O [CAPITALIZED_APP_NAME]">
-<tab_container name="about_tab">
-	<panel name="credits_panel">
-	<text_editor name="credits_editor">
-		Second Life zostało stworzone dla Was przez: Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl i wielu innych.
+	<floater.string name="AboutHeader">
+		[APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL])
+[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]]
+	</floater.string>
+	<floater.string name="AboutCompiler">
+		Buduj z [COMPILER] wersjÄ… [COMPILER_VERSION]
+	</floater.string>
+	<floater.string name="AboutPosition">
+		Znajdujesz siÄ™ na pozycji [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] w [REGION] zlokalizowanym w [HOSTNAME] ([HOSTIP])
+[SERVER_VERSION]
+[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
+	</floater.string>
+	<floater.string name="AboutSystem">
+		Procesor: [CPU]
+Pamięć: [MEMORY_MB] MB
+Wersja OS: [OS_VERSION]
+Graphics Card Vendor: [GRAPHICS_CARD_VENDOR]
+Karta Graficzna: [GRAPHICS_CARD]
+	</floater.string>
+	<floater.string name="AboutDriver">
+		Windows Sterownik Karty Graficznej: [GRAPHICS_DRIVER_VERSION]
+	</floater.string>
+	<floater.string name="AboutLibs">
+		Wersja OpenGL: [OPENGL_VERSION]
+
+Wersja libcurl: [LIBCURL_VERSION]
+Wersja Dekodera J2C: [J2C_VERSION]
+Wersja Sterownika Audio: [AUDIO_DRIVER_VERSION]
+Wersja Qt Webkit: [QT_WEBKIT_VERSION]
+Wersja Vivox: [VIVOX_VERSION]
+	</floater.string>
+	<floater.string name="none">
+		(żadne)
+	</floater.string>
+	<floater.string name="AboutTraffic">
+		Stracone Pakiety: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
+	</floater.string>
+	<tab_container name="about_tab">
+		<panel label="Info" name="support_panel">
+			<button label="Kopiuj do Schowka" name="copy_btn"/>
+		</panel>
+		<panel label="Podziękowania" name="credits_panel">
+			<text_editor name="credits_editor">
+				Second Life zostało stworzone dla Was przez: Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl i wielu innych.
 
   Podziękowania dla następujących rezydentów za pomoc w pracy nad obecną wersją Second Life: able whitman, Adeon Writer, adonaira aabye, Aeron Kohime, Agathos Frascati, Aimee Trescothick, Aleric Inglewood, Alissa Sabre, Aminom Marvin, Angela Talamasca, Aralara Rajal, Armin Weatherwax, Ashrilyn Hayashida, Athanasius Skytower, Aura Dirval, Barney Boomslang, Biancaluce Robbiani, Biker Offcourse, Borg Capalini, Bulli Schumann, catherine pfeffer, Chalice Yao, Corre Porta, Court Goodman, Cummere Mayo, Dale Innis, Darien Caldwell, Darjeeling Schoonhoven, Daten Thielt, dimentox travanti, Dirk Talamasca, Drew Dwi, Duckless Vandyke, Elanthius Flagstaff, Electro Burnstein, emiley tomsen, Escort DeFarge, Eva Rau, Ezian Ecksol, Fire Centaur, Fluf Fredriksson, Francisco Koolhoven, Frontera Thor, Frungi Stastny, Gally Young, gearsawe stonecutter, Gigs Taggart, Gordon Wendt, Gudmund Shepherd, Gypsy Paz, Harleen Gretzky, Henri Beauchamp, Inma Rau, Irene Muni, Iskar Ariantho, Jacek Antonelli, JB Kraft, Jessicka Graves, Joeseph Albanese, Joshua Philgarlic, Khyota Wulluf, kirstenlee Cinquetti, Latif Khalifa, Lex Neva, Lilibeth Andree, Lisa Lowe, Lunita Savira, Loosey Demonia, lum pfohl, Marcos Fonzarelli, MartinRJ Fayray, Marusame Arai, Matthew Dowd, Maya Remblai, McCabe Maxsted, Meghan Dench, Melchoir Tokhes, Menos Short, Michelle2 Zenovka, Mimika Oh, Minerva Memel, Mm Alder, Ochi Wolfe, Omei Turnbull, Pesho Replacement, Phantom Ninetails, phoenixflames kukulcan, Polo Gufler, prez pessoa, princess niven, Prokofy Neva, Qie Niangao, Rem Beattie, RodneyLee Jessop, Saijanai Kuhn, Seg Baphomet, Sergen Davies, Shirley Marquez, SignpostMarv Martin, Sindy Tsure, Sira Arbizu, Skips Jigsaw, Sougent Harrop, Spritely Pixel, Squirrel Wood, StarSong Bright, Subversive Writer, Sugarcult Dagger, Sylumm Grigorovich, Tammy Nowotny, Tanooki Darkes, Tayra Dagostino, Theoretical Chemistry, Thickbrick Sleaford, valerie rosewood, Vex Streeter, Vixen Heron, Whoops Babii, Winter Ventura, Xiki Luik, Yann Dufaux, Yina Yao, Yukinoroh Kamachi, Zolute Infinity, Zwagoth Klaar
 
 
 
   I get by with a little help from my friends. --Richard Starkey
-	</text_editor>
-	</panel>
-	<panel name="licenses_panel">
-	<text_editor name="credits_editor">
-  3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion
+			</text_editor>
+		</panel>
+		<panel label="Licencje" name="licenses_panel">
+			<text_editor name="credits_editor">
+				3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion
   APR Copyright (C) 2000-2004 The Apache Software Foundation
   cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se)
   expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd.
@@ -34,10 +74,7 @@
   Wszystkie prawa zastrzeżone.  Szczegóły w pliku licenses.txt.
 
   Programowanie dźwięku czatu: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
-	</text_editor>
-	</panel>
-</tab_container>
-	<string name="you_are_at">
-		Położenie: [POSITION]
-	</string>
+			</text_editor>
+		</panel>
+	</tab_container>
 </floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_mute_object.xml b/indra/newview/skins/default/xui/pl/floater_mute_object.xml
index dd30f749e30..8055617371b 100755
--- a/indra/newview/skins/default/xui/pl/floater_mute_object.xml
+++ b/indra/newview/skins/default/xui/pl/floater_mute_object.xml
@@ -1,13 +1,14 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="mute by name" title="WYCISZ OBIEKT WEDŁUG NAZWY" height="160" min_height="160" >
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater height="160" min_height="160" name="mute by name" title="ZABLOKUJ OBIEKT WEDŁUG NAZWY">
 	<text name="message">
-		Wyciszenie obiektu jest skuteczne jedynie na czacie oraz w
-wiadomościach IM. Nie obejmuje natomiast dźwięków.
-By wyciszyć obiekt musisz wpisać dokładnie jego nazwę.
+		Zablokuj obiekt:
 	</text>
-	<line_editor name="object_name" bottom_delta="-60">
+	<line_editor bottom_delta="-60" name="object_name">
 		Nazwa Obiektu
 	</line_editor>
-	<button label="Ok" name="OK" />
-	<button label="Anuluj" name="Cancel" />
+	<text name="note">
+		* Zablokuj jedynie tekst obiektu, bez dźwięku
+	</text>
+	<button label="Ok" name="OK"/>
+	<button label="Anuluj" name="Cancel"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_report_abuse.xml b/indra/newview/skins/default/xui/pl/floater_report_abuse.xml
index c1efcffb1e3..18ce1b230f4 100755
--- a/indra/newview/skins/default/xui/pl/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/pl/floater_report_abuse.xml
@@ -1,12 +1,14 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="floater_report_abuse" title="RAPORT O NADUŻYCIU">
-	<texture_picker label="" name="screenshot"/>
-	<check_box label="Załącz zdjęcie ekranu" name="screen_check"/>
+	<floater.string name="Screenshot">
+		Zdjęcie Ekranu
+	</floater.string>
+	<check_box label="Załącz zdjęcie do raportu" name="screen_check"/>
 	<text name="reporter_title">
 		Reporter:
 	</text>
 	<text name="reporter_field">
-		Loremipsum Dolorsitamut
+		Loremipsum Dolorsitamut Longnamez
 	</text>
 	<text name="sim_title">
 		Region:
@@ -21,11 +23,11 @@
 		{128.1, 128.1, 15.4}
 	</text>
 	<text name="select_object_label">
-		Kliknij na przycisk, a później na obiekt:
+		Wybierz ten przycisk a następnie obiekt, który zgłaszasz do raportu:
 	</text>
 	<button label="" label_selected="" name="pick_btn" tool_tip="Wybór obiektu - wybierz obiekt, którego dotyczy raport"/>
 	<text name="object_name_label">
-		Nazwa:
+		Nazwa Obiektu:
 	</text>
 	<text name="object_name">
 		Consetetur Sadipscing
@@ -34,48 +36,48 @@
 		Właściciel:
 	</text>
 	<text name="owner_name">
-		Hendrerit Vulputate
+		Hendrerit Vulputate Kamawashi Longname
 	</text>
 	<combo_box name="category_combo" tool_tip="Wybór kategorii - wybierz kategorię, której dotyczy raport">
-		<combo_box.item name="Select_category" label="Wybierz KategoriÄ™:"/>
-		<combo_box.item name="Age__Age_play" label="Wiek &gt; Udawanie Nieletniej Osoby"/>
-		<combo_box.item name="Age__Adult_resident_on_Teen_Second_Life" label="Wiek &gt; Dorosły Rezydent w Teen Second Life"/>
-		<combo_box.item name="Age__Underage_resident_outside_of_Teen_Second_Life" label="Wiek &gt; Nieletni Rezydent poza Teen Second Life"/>
-		<combo_box.item name="Assault__Combat_sandbox___unsafe_area" label="Napaść &gt; Strefa Militarna / Niebezpieczny Obszar"/>
-		<combo_box.item name="Assault__Safe_area" label="Napaść &gt; Bezpieczny Obszar"/>
-		<combo_box.item name="Assault__Weapons_testing_sandbox" label="Napaść &gt; Obszar do Testowania Broni"/>
-		<combo_box.item name="Commerce__Failure_to_deliver_product_or_service" label="Handel &gt; Niedostarczenie Produktu lub Usługi"/>
-		<combo_box.item name="Disclosure__Real_world_information" label="Naruszenie Prywatności &gt; Dane Osobiste"/>
-		<combo_box.item name="Disclosure__Remotely_monitoring chat" label="Ujawnienie &gt; Monitorowanie Czatu"/>
-		<combo_box.item name="Disclosure__Second_Life_information_chat_IMs" label="Ujawnienie &gt; Dane z Second Life / Czatu / IM"/>
-		<combo_box.item name="Disturbing_the_peace__Unfair_use_of_region_resources" label="Zakłócanie Spokoju &gt; Nieuczciwe Używanie Zasobów Regionu"/>
-		<combo_box.item name="Disturbing_the_peace__Excessive_scripted_objects" label="Zakłócanie Spokoju &gt; Przesadnie Skryptowane Obiekty"/>
-		<combo_box.item name="Disturbing_the_peace__Object_littering" label="Zakłócanie Spokoju &gt; Śmiecenie Obiektami"/>
-		<combo_box.item name="Disturbing_the_peace__Repetitive_spam" label="Zakłócanie Spokoju &gt; Ciągły Spam"/>
-		<combo_box.item name="Disturbing_the_peace__Unwanted_advert_spam" label="Zakłócanie Spokoju &gt; Nieporządany Spam Reklamowy"/>
-		<combo_box.item name="Fraud__L$" label="Oszustwo &gt; L$"/>
-		<combo_box.item name="Fraud__Land" label="Oszustwo &gt; Posiadłości"/>
-		<combo_box.item name="Fraud__Pyramid_scheme_or_chain_letter" label="Oszustwo &gt; Piramidy albo Listy Łańcuchowe"/>
-		<combo_box.item name="Fraud__US$" label="Oszustwo &gt; US$"/>
-		<combo_box.item name="Harassment__Advert_farms___visual_spam" label="Prześladowanie &gt; Farmy Reklamowe / Wizualny Spam"/>
-		<combo_box.item name="Harassment__Defaming_individuals_or_groups" label="Prześladowanie &gt; Zniesławianie Jedostek lub Grup"/>
-		<combo_box.item name="Harassment__Impeding_movement" label="Prześladowanie &gt; Ograniczanie Ruchu"/>
-		<combo_box.item name="Harassment__Sexual_harassment" label="Prześladowanie &gt; Molestowanie Seksualne"/>
-		<combo_box.item name="Harassment__Solicting_inciting_others_to_violate_ToS" label="Prześladowanie &gt; Namawianie/Zachęcanie Innych do Łamania Warunków Umowy (ToS)"/>
-		<combo_box.item name="Harassment__Verbal_abuse" label="Prześladowanie &gt; Znieważanie Słowne"/>
-		<combo_box.item name="Indecency__Broadly_offensive_content_or_conduct" label="Nieprzyzwoitość &gt; Obraźliwa Treść lub Postępowanie"/>
-		<combo_box.item name="Indecency__Inappropriate_avatar_name" label="Nieprzyzwoitość &gt; Niestosowne Imię Awatara"/>
-		<combo_box.item name="Indecency__Mature_content_in_PG_region" label="Nieprzyzwoitość &gt; Obraźliwa treść i postępowanie w regionie &apos;PG&apos;"/>
-		<combo_box.item name="Indecency__Inappropriate_content_in_Mature_region" label="Nieprzyzwoitość &gt; Obraźliwa treść i postępowanie w regionie &apos;Mature&apos;"/>
-		<combo_box.item name="Intellectual_property_infringement_Content_Removal" label="Naruszenie Własności Intelektualnej &gt; Usunięcie Treści"/>
-		<combo_box.item name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit" label="Naruszenie Własności Intelektualnej &gt; CopyBot albo Nadużycie Przywilejów"/>
-		<combo_box.item name="Intolerance" label="Nietolerancja"/>
-		<combo_box.item name="Land__Abuse_of_sandbox_resources" label="Posiadłości &gt; Nadużywanie Piaskownicy"/>
-		<combo_box.item name="Land__Encroachment__Objects_textures" label="Posiadłości &gt; Naruszenie &gt; Obiekty/Tekstury"/>
-		<combo_box.item name="Land__Encroachment__Particles" label="Posiadłości &gt; Naruszenie &gt; Cząsteczki"/>
-		<combo_box.item name="Land__Encroachment__Trees_plants" label="Posiadłości &gt; Naruszenie &gt; Drzewa/Rośliny"/>
-		<combo_box.item name="Wagering_gambling" label="Zakłady/Hazard"/>
-		<combo_box.item name="Other" label="Inne"/>
+		<combo_box.item label="Wybierz KategoriÄ™:" name="Select_category"/>
+		<combo_box.item label="Wiek &gt; Udawanie Nieletniej Osoby" name="Age__Age_play"/>
+		<combo_box.item label="Wiek &gt; Dorosły Rezydent w Teen Second Life" name="Age__Adult_resident_on_Teen_Second_Life"/>
+		<combo_box.item label="Wiek &gt; Nieletni Rezydent poza Teen Second Life" name="Age__Underage_resident_outside_of_Teen_Second_Life"/>
+		<combo_box.item label="Napaść &gt; Strefa Militarna / Niebezpieczny Obszar" name="Assault__Combat_sandbox___unsafe_area"/>
+		<combo_box.item label="Napaść &gt; Bezpieczny Obszar" name="Assault__Safe_area"/>
+		<combo_box.item label="Napaść &gt; Obszar do Testowania Broni" name="Assault__Weapons_testing_sandbox"/>
+		<combo_box.item label="Handel &gt; Niedostarczenie Produktu lub Usługi" name="Commerce__Failure_to_deliver_product_or_service"/>
+		<combo_box.item label="Naruszenie Prywatności &gt; Dane Osobiste" name="Disclosure__Real_world_information"/>
+		<combo_box.item label="Ujawnienie &gt; Monitorowanie Czatu" name="Disclosure__Remotely_monitoring chat"/>
+		<combo_box.item label="Ujawnienie &gt; Dane z Second Life / Czatu / IM" name="Disclosure__Second_Life_information_chat_IMs"/>
+		<combo_box.item label="Zakłócanie Spokoju &gt; Nieuczciwe Używanie Zasobów Regionu" name="Disturbing_the_peace__Unfair_use_of_region_resources"/>
+		<combo_box.item label="Zakłócanie Spokoju &gt; Przesadnie Skryptowane Obiekty" name="Disturbing_the_peace__Excessive_scripted_objects"/>
+		<combo_box.item label="Zakłócanie Spokoju &gt; Śmiecenie Obiektami" name="Disturbing_the_peace__Object_littering"/>
+		<combo_box.item label="Zakłócanie Spokoju &gt; Ciągły Spam" name="Disturbing_the_peace__Repetitive_spam"/>
+		<combo_box.item label="Zakłócanie Spokoju &gt; Nieporządany Spam Reklamowy" name="Disturbing_the_peace__Unwanted_advert_spam"/>
+		<combo_box.item label="Oszustwo &gt; L$" name="Fraud__L$"/>
+		<combo_box.item label="Oszustwo &gt; Posiadłości" name="Fraud__Land"/>
+		<combo_box.item label="Oszustwo &gt; Piramidy albo Listy Łańcuchowe" name="Fraud__Pyramid_scheme_or_chain_letter"/>
+		<combo_box.item label="Oszustwo &gt; US$" name="Fraud__US$"/>
+		<combo_box.item label="Prześladowanie &gt; Farmy Reklamowe / Wizualny Spam" name="Harassment__Advert_farms___visual_spam"/>
+		<combo_box.item label="Prześladowanie &gt; Zniesławianie Jedostek lub Grup" name="Harassment__Defaming_individuals_or_groups"/>
+		<combo_box.item label="Prześladowanie &gt; Ograniczanie Ruchu" name="Harassment__Impeding_movement"/>
+		<combo_box.item label="Prześladowanie &gt; Molestowanie Seksualne" name="Harassment__Sexual_harassment"/>
+		<combo_box.item label="Prześladowanie &gt; Namawianie/Zachęcanie Innych do Łamania Warunków Umowy (ToS)" name="Harassment__Solicting_inciting_others_to_violate_ToS"/>
+		<combo_box.item label="Prześladowanie &gt; Znieważanie Słowne" name="Harassment__Verbal_abuse"/>
+		<combo_box.item label="Nieprzyzwoitość &gt; Obraźliwa Treść lub Postępowanie" name="Indecency__Broadly_offensive_content_or_conduct"/>
+		<combo_box.item label="Nieprzyzwoitość &gt; Niestosowne Imię Awatara" name="Indecency__Inappropriate_avatar_name"/>
+		<combo_box.item label="Nieprzyzwoitość &gt; Obraźliwa treść i postępowanie w regionie &apos;PG&apos;" name="Indecency__Mature_content_in_PG_region"/>
+		<combo_box.item label="Nieprzyzwoitość &gt; Obraźliwa treść i postępowanie w regionie &apos;Mature&apos;" name="Indecency__Inappropriate_content_in_Mature_region"/>
+		<combo_box.item label="Naruszenie Własności Intelektualnej &gt; Usunięcie Treści" name="Intellectual_property_infringement_Content_Removal"/>
+		<combo_box.item label="Naruszenie Własności Intelektualnej &gt; CopyBot albo Nadużycie Przywilejów" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/>
+		<combo_box.item label="Nietolerancja" name="Intolerance"/>
+		<combo_box.item label="Posiadłości &gt; Nadużywanie Piaskownicy" name="Land__Abuse_of_sandbox_resources"/>
+		<combo_box.item label="Posiadłości &gt; Naruszenie &gt; Obiekty/Tekstury" name="Land__Encroachment__Objects_textures"/>
+		<combo_box.item label="Posiadłości &gt; Naruszenie &gt; Cząsteczki" name="Land__Encroachment__Particles"/>
+		<combo_box.item label="Posiadłości &gt; Naruszenie &gt; Drzewa/Rośliny" name="Land__Encroachment__Trees_plants"/>
+		<combo_box.item label="Zakłady/Hazard" name="Wagering_gambling"/>
+		<combo_box.item label="Inne" name="Other"/>
 	</combo_box>
 	<text name="abuser_name_title">
 		Dane osobowe:
@@ -94,13 +96,12 @@
 		Szczegóły:
 	</text>
 	<text name="bug_aviso">
-		Podaj datę, miejsce, kategorię nadużycia, fragmenty
-czatu/IM, dane obiektów.
+		Podaj jak najwięcej możliwych szczegółów dotyczących nadużycia
 	</text>
 	<text_editor name="details_edit"/>
 	<text name="incomplete_title">
-		Pamiętaj: Niedokończone raporty nie będą rozpatrywane!
+		* Pamiętaj: Niedokończone raporty nie będą rozpatrywane
 	</text>
-	<button label="Anuluj" label_selected="Anuluj" name="cancel_btn"/>
 	<button label="Wyślij" label_selected="Wyślij" name="send_btn"/>
+	<button label="Anuluj" label_selected="Anuluj" name="cancel_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_stats.xml b/indra/newview/skins/default/xui/pl/floater_stats.xml
new file mode 100644
index 00000000000..acd3df0585f
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/floater_stats.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Statistics" title="STATYSTYKI">
+	<scroll_container name="statistics_scroll">
+		<container_view name="statistics_view">
+			<stat_view label="Podstawowe" name="basic">
+				<stat_bar label="Ilość Obrazów/Sec (FPS)" name="fps"/>
+				<stat_bar label="Przepustowość" name="bandwidth"/>
+				<stat_bar label="Stracone Pakiety" name="packet_loss"/>
+				<stat_bar label="Ping Sim" name="ping"/>
+			</stat_view>
+			<stat_view label="Zaawansowane" name="advanced">
+				<stat_view label="Renderuj" name="render">
+					<stat_bar label="KTris Drawn" name="ktrisframe"/>
+					<stat_bar label="KTris Drawn" name="ktrissec"/>
+					<stat_bar label="Wszystkie Obiekty" name="objs"/>
+					<stat_bar label="Nowe Obiekty" name="newobjs"/>
+				</stat_view>
+				<stat_view label="Tekstura" name="texture">
+					<stat_bar label="Suma" name="numimagesstat"/>
+					<stat_bar label="Suma Raw" name="numrawimagesstat"/>
+					<stat_bar label="GL Mem" name="gltexmemstat"/>
+					<stat_bar label="Sformatowane Mem" name="formattedmemstat"/>
+					<stat_bar label="Raw Mem" name="rawmemstat"/>
+					<stat_bar label="Bound Mem" name="glboundmemstat"/>
+				</stat_view>
+				<stat_view label="Sieć" name="network">
+					<stat_bar label="Pakiety Wewnętrzne" name="packetsinstat"/>
+					<stat_bar label="Pakiety Zewnętrzne" name="packetsoutstat"/>
+					<stat_bar label="Obiekty" name="objectkbitstat"/>
+					<stat_bar label="Tesktura" name="texturekbitstat"/>
+					<stat_bar label="Asset" name="assetkbitstat"/>
+					<stat_bar label="Podkład" name="layerskbitstat"/>
+					<stat_bar label="Aktualna Ilość Wewnętrzna" name="actualinkbitstat"/>
+					<stat_bar label="Aktualna Ilość Zewnętrzna" name="actualoutkbitstat"/>
+					<stat_bar label="VFS Pending Ops" name="vfspendingoperations"/>
+				</stat_view>
+			</stat_view>
+			<stat_view label="Symulator" name="sim">
+				<stat_bar label="Czas Rozszerzenia" name="simtimedilation"/>
+				<stat_bar label="Ilość Obrazów/Sec na Symulatorze (Sim FPS)" name="simfps"/>
+				<stat_bar label="Fizyka Obrazów/Sec" name="simphysicsfps"/>
+				<stat_view label="Szczegóły Fizyki" name="physicsdetail">
+					<stat_bar label="Pinned Objects" name="physicspinnedtasks"/>
+					<stat_bar label="Niskie LOD Obiektów" name="physicslodtasks"/>
+					<stat_bar label="Alokacja Pamięci" name="physicsmemoryallocated"/>
+					<stat_bar label="Aktualizacja Agentów/Sec" name="simagentups"/>
+					<stat_bar label="Główni Agenci" name="simmainagents"/>
+					<stat_bar label="Child Agents" name="simchildagents"/>
+					<stat_bar label="Obiekty" name="simobjects"/>
+					<stat_bar label="Aktywne Obiekty" name="simactiveobjects"/>
+					<stat_bar label="Aktywne Skrypty" name="simactivescripts"/>
+					<stat_bar label="Wydarzenie Skryptowe" name="simscripteps"/>
+					<stat_bar label="Pakiety Wewnętrzne" name="siminpps"/>
+					<stat_bar label="Pakiety Zewnętrzne" name="simoutpps"/>
+					<stat_bar label="Oczekiwane na Pobranie" name="simpendingdownloads"/>
+					<stat_bar label="Oczekiwane na Załadowanie" name="simpendinguploads"/>
+					<stat_bar label="Wszystkie Niepotwierdzone Bity" name="simtotalunackedbytes"/>
+				</stat_view>
+				<stat_view label="Czas (ms)" name="simperf">
+					<stat_bar label="Całkowity Czas Obrazu" name="simframemsec"/>
+					<stat_bar label="Czas Sieciowy" name="simnetmsec"/>
+					<stat_bar label="Czas Fizyki" name="simsimphysicsmsec"/>
+					<stat_bar label="Czas Symulatora" name="simsimothermsec"/>
+					<stat_bar label="Czas Agenta" name="simagentmsec"/>
+					<stat_bar label="Czas Obrazu" name="simimagesmsec"/>
+					<stat_bar label="Czas Skryptu" name="simscriptmsec"/>
+				</stat_view>
+			</stat_view>
+		</container_view>
+	</scroll_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/pl/menu_attachment_other.xml b/indra/newview/skins/default/xui/pl/menu_attachment_other.xml
new file mode 100644
index 00000000000..4872956cc28
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_attachment_other.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- *NOTE: See also menu_avatar_other.xml -->
+<context_menu name="Avatar Pie">
+	<menu_item_call label="Zobacz Profil" name="Profile..."/>
+	<menu_item_call label="Dodaj Znajomość" name="Add Friend"/>
+	<menu_item_call label="IM" name="Send IM..."/>
+	<menu_item_call label="Zadzwoń" name="Call"/>
+	<menu_item_call label="ZaproÅ› do Grupy" name="Invite..."/>
+	<menu_item_call label="Zablokuj" name="Avatar Mute"/>
+	<menu_item_call label="Raport" name="abuse"/>
+	<menu_item_call label="Unieruchom" name="Freeze..."/>
+	<menu_item_call label="Wyrzuć" name="Eject..."/>
+	<menu_item_call label="Debugowanie" name="Debug..."/>
+	<menu_item_call label="Przybliż" name="Zoom In"/>
+	<menu_item_call label="Zapłać" name="Pay..."/>
+	<menu_item_call label="Sprawdź" name="Object Inspect"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_attachment_self.xml b/indra/newview/skins/default/xui/pl/menu_attachment_self.xml
new file mode 100644
index 00000000000..1107a5d9d1c
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_attachment_self.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Attachment Pie">
+	<menu_item_call label="Dotnij" name="Attachment Object Touch"/>
+	<menu_item_call label="Edytuj" name="Edit..."/>
+	<menu_item_call label="Odłącz" name="Detach"/>
+	<menu_item_call label="Opuść" name="Drop"/>
+	<menu_item_call label="Wstań" name="Stand Up"/>
+	<menu_item_call label="Mój Wygląd" name="Appearance..."/>
+	<menu_item_call label="Moi Znajomi" name="Friends..."/>
+	<menu_item_call label="Moje Grupy" name="Groups..."/>
+	<menu_item_call label="Mój Profil" name="Profile..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_avatar_icon.xml b/indra/newview/skins/default/xui/pl/menu_avatar_icon.xml
new file mode 100644
index 00000000000..c9ad275a267
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_avatar_icon.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Avatar Icon Menu">
+	<menu_item_call label="Profil" name="Show Profile"/>
+	<menu_item_call label="Czat/IM..." name="Send IM"/>
+	<menu_item_call label="Dodaj Znajomość..." name="Add Friend"/>
+	<menu_item_call label="Usuń..." name="Remove Friend"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_avatar_other.xml b/indra/newview/skins/default/xui/pl/menu_avatar_other.xml
new file mode 100644
index 00000000000..832c2f9c96e
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_avatar_other.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- *NOTE: See also menu_attachment_other.xml -->
+<context_menu name="Avatar Pie">
+	<menu_item_call label="Zobacz Profil" name="Profile..."/>
+	<menu_item_call label="Dodaj Znajomość" name="Add Friend"/>
+	<menu_item_call label="IM" name="Send IM..."/>
+	<menu_item_call label="Zadzwoń" name="Call"/>
+	<menu_item_call label="ZaproÅ› do Grupy" name="Invite..."/>
+	<menu_item_call label="Zablokuj" name="Avatar Mute"/>
+	<menu_item_call label="Raport" name="abuse"/>
+	<menu_item_call label="Unieruchom" name="Freeze..."/>
+	<menu_item_call label="Wyrzuć" name="Eject..."/>
+	<menu_item_call label="Debug" name="Debug..."/>
+	<menu_item_call label="Przybliż" name="Zoom In"/>
+	<menu_item_call label="Zapłać" name="Pay..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_avatar_self.xml b/indra/newview/skins/default/xui/pl/menu_avatar_self.xml
new file mode 100644
index 00000000000..427c0d464ba
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_avatar_self.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Self Pie">
+	<menu_item_call label="Wstań" name="Stand Up"/>
+	<context_menu label="Zdejmij &gt;" name="Take Off &gt;">
+		<context_menu label="Ubranie &gt;" name="Clothes &gt;">
+			<menu_item_call label="KoszulkÄ™" name="Shirt"/>
+			<menu_item_call label="Spodnie" name="Pants"/>
+			<menu_item_call label="Spódnicę" name="Skirt"/>
+			<menu_item_call label="Buty" name="Shoes"/>
+			<menu_item_call label="Skarpetki" name="Socks"/>
+			<menu_item_call label="KurtkÄ™" name="Jacket"/>
+			<menu_item_call label="Rękawiczki" name="Gloves"/>
+			<menu_item_call label="Podkoszulek" name="Self Undershirt"/>
+			<menu_item_call label="BieliznÄ™" name="Self Underpants"/>
+			<menu_item_call label="Tatuaż" name="Self Tattoo"/>
+			<menu_item_call label="Ubranie Przezroczyste" name="Self Alpha"/>
+			<menu_item_call label="Wszystko" name="All Clothes"/>
+		</context_menu>
+		<context_menu label="HUD &gt;" name="Object Detach HUD"/>
+		<context_menu label="Odłącz &gt;" name="Object Detach"/>
+		<menu_item_call label="Odłącz Wszystko" name="Detach All"/>
+	</context_menu>
+	<menu_item_call label="Mój Wygląd" name="Appearance..."/>
+	<menu_item_call label="Moi Znajomi" name="Friends..."/>
+	<menu_item_call label="Moje Grupy" name="Groups..."/>
+	<menu_item_call label="Mój Profil" name="Profile..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_bottomtray.xml b/indra/newview/skins/default/xui/pl/menu_bottomtray.xml
new file mode 100644
index 00000000000..818dfc08aeb
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_bottomtray.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="hide_camera_move_controls_menu">
+	<menu_item_check label="Przycisk Gesturek" name="ShowGestureButton"/>
+	<menu_item_check label="Przycisk Ruchu" name="ShowMoveButton"/>
+	<menu_item_check label="Przycisk Widoku" name="ShowCameraButton"/>
+	<menu_item_check label="Przycisk Zdjęć" name="ShowSnapshotButton"/>
+	<menu_item_call label="Wytnij" name="NearbyChatBar_Cut"/>
+	<menu_item_call label="Kopiuj" name="NearbyChatBar_Copy"/>
+	<menu_item_call label="Wklej" name="NearbyChatBar_Paste"/>
+	<menu_item_call label="Usuń" name="NearbyChatBar_Delete"/>
+	<menu_item_call label="Zaznacz Wszystko" name="NearbyChatBar_Select_All"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_favorites.xml b/indra/newview/skins/default/xui/pl/menu_favorites.xml
new file mode 100644
index 00000000000..0a0b54a5481
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_favorites.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+	<menu_item_call label="Teleportuj" name="Teleport To Landmark"/>
+	<menu_item_call label="Zobacz/Edytuj Ulubione Miejsce" name="Landmark Open"/>
+	<menu_item_call label="Kopiuj SLurl" name="Copy slurl"/>
+	<menu_item_call label="Pokaż na Mapie" name="Show On Map"/>
+	<menu_item_call label="Kopiuj" name="Landmark Copy"/>
+	<menu_item_call label="Wklej" name="Landmark Paste"/>
+	<menu_item_call label="Usuń" name="Delete"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_gesture_gear.xml b/indra/newview/skins/default/xui/pl/menu_gesture_gear.xml
new file mode 100644
index 00000000000..a72dec22fc1
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_gesture_gear.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_gesture_gear">
+	<menu_item_call label="Dodaj/Usuń z Ulubionych" name="activate"/>
+	<menu_item_call label="Kopiuj" name="copy_gesture"/>
+	<menu_item_call label="Wklej" name="paste"/>
+	<menu_item_call label="Kopiuj UUID" name="copy_uuid"/>
+	<menu_item_call label="Zapisz do obecnego zestawu ubrania" name="save_to_outfit"/>
+	<menu_item_call label="Edytuj" name="edit_gesture"/>
+	<menu_item_call label="Sprawdź" name="inspect"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_group_plus.xml b/indra/newview/skins/default/xui/pl/menu_group_plus.xml
new file mode 100644
index 00000000000..9d3859081e7
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_group_plus.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_group_plus">
+	<menu_item_call label="Dołącz do Grupy..." name="item_join"/>
+	<menu_item_call label="Nowa Grupa..." name="item_new"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_hide_navbar.xml b/indra/newview/skins/default/xui/pl/menu_hide_navbar.xml
new file mode 100644
index 00000000000..1c2687338d3
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_hide_navbar.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="hide_navbar_menu">
+	<menu_item_check label="Pokaż Pasek Nawigacji" name="ShowNavbarNavigationPanel"/>
+	<menu_item_check label="Pokaż Pasek Ulubionych" name="ShowNavbarFavoritesPanel"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/pl/menu_imchiclet_adhoc.xml
new file mode 100644
index 00000000000..925272d5ee0
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_imchiclet_adhoc.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="IMChiclet AdHoc Menu">
+	<menu_item_call label="Zakończ Rozmowę" name="End Session"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/pl/menu_imchiclet_group.xml
new file mode 100644
index 00000000000..dc232c096d1
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_imchiclet_group.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="IMChiclet Group Menu">
+	<menu_item_call label="O Grupie" name="Show Profile"/>
+	<menu_item_call label="Pokaż Sesję" name="Chat"/>
+	<menu_item_call label="Zakończ Rozmowę" name="End Session"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/pl/menu_imchiclet_p2p.xml
new file mode 100644
index 00000000000..df991cbc36f
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_imchiclet_p2p.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="IMChiclet P2P Menu">
+	<menu_item_call label="Zobacz Profil" name="Show Profile"/>
+	<menu_item_call label="Dodaj Znajomość" name="Add Friend"/>
+	<menu_item_call label="Pokaż Sesję" name="Send IM"/>
+	<menu_item_call label="Zakończ Rozmowę" name="End Session"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/pl/menu_inspect_avatar_gear.xml
new file mode 100644
index 00000000000..22d81cb8234
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_inspect_avatar_gear.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu name="Gear Menu">
+	<menu_item_call label="Zobacz Profil" name="view_profile"/>
+	<menu_item_call label="Dodaj Znajomość" name="add_friend"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="Zadzwoń" name="call"/>
+	<menu_item_call label="Teleportuj" name="teleport"/>
+	<menu_item_call label="ZaproÅ› do Grupy" name="invite_to_group"/>
+	<menu_item_call label="Zablokuj" name="block"/>
+	<menu_item_call label="Raport" name="report"/>
+	<menu_item_call label="Unieruchom" name="freeze"/>
+	<menu_item_call label="Wyrzuć" name="eject"/>
+	<menu_item_call label="Debug" name="debug"/>
+	<menu_item_call label="Znajdź na Mapie" name="find_on_map"/>
+	<menu_item_call label="Przybliż" name="zoom_in"/>
+	<menu_item_call label="Zapłać" name="pay"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/pl/menu_inspect_object_gear.xml
new file mode 100644
index 00000000000..988c31a6e49
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_inspect_object_gear.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu name="Gear Menu">
+	<menu_item_call label="Dotknij" name="touch"/>
+	<menu_item_call label="Usiądź" name="sit"/>
+	<menu_item_call label="Zapłać" name="pay"/>
+	<menu_item_call label="Kup" name="buy"/>
+	<menu_item_call label="Weź" name="take"/>
+	<menu_item_call label="Weź Kopię" name="take_copy"/>
+	<menu_item_call label="Otwórz" name="open"/>
+	<menu_item_call label="Edytuj" name="edit"/>
+	<menu_item_call label="Ubierz" name="wear"/>
+	<menu_item_call label="Raport" name="report"/>
+	<menu_item_call label="Zablokuj" name="block"/>
+	<menu_item_call label="Przybliż" name="zoom_in"/>
+	<menu_item_call label="Usuń" name="remove"/>
+	<menu_item_call label="Więcej Informacji" name="more_info"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/pl/menu_inspect_self_gear.xml
new file mode 100644
index 00000000000..ee2f202ee95
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_inspect_self_gear.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu name="Gear Menu">
+	<menu_item_call label="Wstań" name="stand_up"/>
+	<menu_item_call label="Mój Wygląd" name="my_appearance"/>
+	<menu_item_call label="Mój Profil" name="my_profile"/>
+	<menu_item_call label="Moi Znajomi" name="my_friends"/>
+	<menu_item_call label="Moje Grupy" name="my_groups"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_inventory.xml b/indra/newview/skins/default/xui/pl/menu_inventory.xml
index 7f89f783248..75c84c275db 100755
--- a/indra/newview/skins/default/xui/pl/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/pl/menu_inventory.xml
@@ -12,7 +12,7 @@
 	<menu_item_call label="Nowy Skrypt" name="New Script"/>
 	<menu_item_call label="Nowa Nota" name="New Note"/>
 	<menu_item_call label="Nowy Gest" name="New Gesture"/>
-	<menu name="New Clothes">
+	<menu label="Nowe Ubranie" name="New Clothes">
 		<menu_item_call label="Nowa Koszulka" name="New Shirt"/>
 		<menu_item_call label="Nowe Spodnie" name="New Pants"/>
 		<menu_item_call label="Nowe Buty" name="New Shoes"/>
@@ -22,31 +22,47 @@
 		<menu_item_call label="Nowe Rękawiczki" name="New Gloves"/>
 		<menu_item_call label="Nowy Podkoszulek" name="New Undershirt"/>
 		<menu_item_call label="Nowa Bielizna" name="New Underpants"/>
+		<menu_item_call label="Nowa Maska Przezroczysta" name="New Alpha Mask"/>
+		<menu_item_call label="Nowy Tatuaż" name="New Tattoo"/>
 	</menu>
-	<menu name="New Body Parts">
+	<menu label="Nowa Część Ciała" name="New Body Parts">
 		<menu_item_call label="Nowy Kształt" name="New Shape"/>
 		<menu_item_call label="Nowa Skórka" name="New Skin"/>
 		<menu_item_call label="Nowe Włosy" name="New Hair"/>
 		<menu_item_call label="Nowe Oczy" name="New Eyes"/>
 	</menu>
+	<menu label="Zmień Czcionkę" name="Change Type">
+		<menu_item_call label="Domyślna" name="Default"/>
+		<menu_item_call label="Rękawiczki" name="Gloves"/>
+		<menu_item_call label="Kurtka" name="Jacket"/>
+		<menu_item_call label="Spodnie" name="Pants"/>
+		<menu_item_call label="Kształt" name="Shape"/>
+		<menu_item_call label="Buty" name="Shoes"/>
+		<menu_item_call label="Koszulka" name="Shirt"/>
+		<menu_item_call label="Spódnica" name="Skirt"/>
+		<menu_item_call label="Bielizna" name="Underpants"/>
+		<menu_item_call label="Podkoszulek" name="Undershirt"/>
+	</menu>
 	<menu_item_call label="Teleportuj" name="Landmark Open"/>
 	<menu_item_call label="Otwórz" name="Animation Open"/>
 	<menu_item_call label="Otwórz" name="Sound Open"/>
 	<menu_item_call label="Usuń Obiekt" name="Purge Item"/>
 	<menu_item_call label="Przywróć Obiekt" name="Restore Item"/>
+	<menu_item_call label="Otwórz Link" name="Goto Link"/>
 	<menu_item_call label="Otwórz" name="Open"/>
 	<menu_item_call label="Właściwości" name="Properties"/>
 	<menu_item_call label="Zmień Nazwę" name="Rename"/>
 	<menu_item_call label="Kopiuj Dane UUID" name="Copy Asset UUID"/>
 	<menu_item_call label="Kopiuj" name="Copy"/>
 	<menu_item_call label="Wklej" name="Paste"/>
+	<menu_item_call label="Wklej jako Link" name="Paste As Link"/>
 	<menu_item_call label="Usuń" name="Delete"/>
 	<menu_item_call label="Zdejmij Obiekt" name="Take Off Items"/>
 	<menu_item_call label="Dodaj do Stroju" name="Add To Outfit"/>
 	<menu_item_call label="Zmień Strój" name="Replace Outfit"/>
 	<menu_item_call label="Rozpocznij KonferencjÄ™ CzatowÄ…" name="Conference Chat Folder"/>
 	<menu_item_call label="Odtwarzaj" name="Sound Play"/>
-	<menu_item_call label="O Miejscu" name="Teleport To Landmark"/>
+	<menu_item_call label="O Miejscu" name="About Landmark"/>
 	<menu_item_call label="Odtwarzaj w Åšwiecie" name="Animation Play"/>
 	<menu_item_call label="Odtwarzaj Lokalnie" name="Animation Audition"/>
 	<menu_item_call label="Wyślij IM" name="Send Instant Message"/>
@@ -54,8 +70,8 @@
 	<menu_item_call label="Rozpocznij KonferencjÄ™ CzatowÄ…" name="Conference Chat"/>
 	<menu_item_call label="Aktywuj" name="Activate"/>
 	<menu_item_call label="Deaktywuj" name="Deactivate"/>
+	<menu_item_call label="Zapisz jako" name="Save As"/>
 	<menu_item_call label="Odłącz od Siebie" name="Detach From Yourself"/>
-	<menu_item_call label="Przywróć ostatnią pozycję" name="Restore to Last Position"/>
 	<menu_item_call label="Ubierz" name="Object Wear"/>
 	<menu label="Dołącz do" name="Attach To"/>
 	<menu label="Dołącz do Załączników HUD" name="Attach To HUD"/>
diff --git a/indra/newview/skins/default/xui/pl/menu_inventory_add.xml b/indra/newview/skins/default/xui/pl/menu_inventory_add.xml
new file mode 100644
index 00000000000..5b8c5426dd7
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_inventory_add.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_inventory_add">
+	<menu label="Załaduj" name="upload">
+		<menu_item_call label="Obraz (L$[COST])..." name="Upload Image"/>
+		<menu_item_call label="Dźwięk (L$[COST])..." name="Upload Sound"/>
+		<menu_item_call label="AnimacjÄ™ (L$[COST])..." name="Upload Animation"/>
+		<menu_item_call label="Zbiór Plików (L$[COST] za jeden plik)..." name="Bulk Upload"/>
+	</menu>
+	<menu_item_call label="Nowy Folder" name="New Folder"/>
+	<menu_item_call label="Nowy Skrypt" name="New Script"/>
+	<menu_item_call label="Nowa Nota" name="New Note"/>
+	<menu_item_call label="Nowa Gesturka" name="New Gesture"/>
+	<menu label="Nowe Ubranie" name="New Clothes">
+		<menu_item_call label="Nowa Koszulka" name="New Shirt"/>
+		<menu_item_call label="Nowe Spodnie" name="New Pants"/>
+		<menu_item_call label="Nowe Buty" name="New Shoes"/>
+		<menu_item_call label="Nowe Skarpetki" name="New Socks"/>
+		<menu_item_call label="Nowa Kurtka" name="New Jacket"/>
+		<menu_item_call label="Nowa Spódnica" name="New Skirt"/>
+		<menu_item_call label="Nowe Rękawiczki" name="New Gloves"/>
+		<menu_item_call label="Nowy Podkoszulek" name="New Undershirt"/>
+		<menu_item_call label="Nowa Bielizna" name="New Underpants"/>
+		<menu_item_call label="Nowe Ubranie Przezroczyste" name="New Alpha"/>
+		<menu_item_call label="Nowy Tatuaż" name="New Tattoo"/>
+	</menu>
+	<menu label="Nowa Część Ciała" name="New Body Parts">
+		<menu_item_call label="Nowy Kształt" name="New Shape"/>
+		<menu_item_call label="Nowa Skórka" name="New Skin"/>
+		<menu_item_call label="Nowe Włosy" name="New Hair"/>
+		<menu_item_call label="Nowe Oczy" name="New Eyes"/>
+	</menu>
+</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/pl/menu_inventory_gear_default.xml
new file mode 100644
index 00000000000..8f5f94a02f9
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_inventory_gear_default.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_gear_default">
+	<menu_item_call label="Nowe Okno Szafy" name="new_window"/>
+	<menu_item_call label="Porządkuj Według Nazwy" name="sort_by_name"/>
+	<menu_item_call label="Porządkuj Według Daty" name="sort_by_recent"/>
+	<menu_item_call label="Pokaż Filtry" name="show_filters"/>
+	<menu_item_call label="Zresetuj Filtry" name="reset_filters"/>
+	<menu_item_call label="Zamknij Wszystkie Foldery" name="close_folders"/>
+	<menu_item_call label="Opróżnij Kosz" name="empty_trash"/>
+	<menu_item_call label="Opróżnij Zagubione i Odnalezione" name="empty_lostnfound"/>
+	<menu_item_call label="Zapisz TeksturÄ™ Jako" name="Save Texture As"/>
+	<menu_item_call label="Znajdź Oryginał" name="Find Original"/>
+	<menu_item_call label="Znajdź Wszystkie Linki" name="Find All Links"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_land.xml b/indra/newview/skins/default/xui/pl/menu_land.xml
new file mode 100644
index 00000000000..2c89b43525a
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_land.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Land Pie">
+	<menu_item_call label="O Posiadłości" name="Place Information..."/>
+	<menu_item_call label="Usiądź Tutaj" name="Sit Here"/>
+	<menu_item_call label="Kup Posiadłość" name="Land Buy"/>
+	<menu_item_call label="Kup Wstęp" name="Land Buy Pass"/>
+	<menu_item_call label="Buduj" name="Create"/>
+	<menu_item_call label="Edytuj Teren" name="Edit Terrain"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_landmark.xml b/indra/newview/skins/default/xui/pl/menu_landmark.xml
new file mode 100644
index 00000000000..8cd7e03bf1b
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_landmark.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="landmark_overflow_menu">
+	<menu_item_call label="Kopiuj SLurl" name="copy"/>
+	<menu_item_call label="Usuń" name="delete"/>
+	<menu_item_call label="Utwórz" name="pick"/>
+	<menu_item_call label="Dodaj do Paska Ulubionych" name="add_to_favbar"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_login.xml b/indra/newview/skins/default/xui/pl/menu_login.xml
index 2445d69ac0c..5084b59397d 100755
--- a/indra/newview/skins/default/xui/pl/menu_login.xml
+++ b/indra/newview/skins/default/xui/pl/menu_login.xml
@@ -1,13 +1,30 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar name="Login Menu">
-	<menu label="Plik" name="File">
-		<menu_item_call label="Wyłącz Program" name="Quit" />
-	</menu>
-	<menu label="Edycja" name="Edit">
-		<menu_item_call label="Ustawienia..." name="Preferences..." />
+	<menu label="Ja" name="File">
+		<menu_item_call label="Ustawienia" name="Preferences..."/>
+		<menu_item_call label="Wyłącz Program" name="Quit"/>
 	</menu>
 	<menu label="Pomoc" name="Help">
-		<menu_item_call label="[SECOND_LIFE]: Pomoc" name="Second Life Help" />
-		<menu_item_call label="O [APP_NAME]..." name="About Second Life..." />
+		<menu_item_call label="[SECOND_LIFE]: Pomoc" name="Second Life Help"/>
+	</menu>
+	<menu label="Debug" name="Debug">
+		<menu label="Edytuj" name="Edit">
+			<menu_item_call label="Cofnij" name="Undo"/>
+			<menu_item_call label="Powtórz" name="Redo"/>
+			<menu_item_call label="Wytnij" name="Cut"/>
+			<menu_item_call label="Kopiuj" name="Copy"/>
+			<menu_item_call label="Wklej" name="Paste"/>
+			<menu_item_call label="Usuń" name="Delete"/>
+			<menu_item_call label="Powiel" name="Duplicate"/>
+			<menu_item_call label="Zaznacz Wszystko" name="Select All"/>
+			<menu_item_call label="Odznacz" name="Deselect"/>
+		</menu>
+		<menu_item_call label="Ustawienia Debugowania" name="Debug Settings"/>
+		<menu_item_call label="Ustawienia UI/Kolor" name="UI/Color Settings"/>
+		<menu_item_call label="Pokaż schowek" name="Show Side Tray"/>
+		<menu label="UI Testy" name="UI Tests"/>
+		<menu_item_call label="Wyświetl TOS" name="TOS"/>
+		<menu_item_call label="Wyświetl Wiadomość Krytyczną" name="Critical"/>
+		<menu_item_call label="Test PrzeglÄ…darki Internetowej" name="Web Browser Test"/>
 	</menu>
 </menu_bar>
diff --git a/indra/newview/skins/default/xui/pl/menu_mini_map.xml b/indra/newview/skins/default/xui/pl/menu_mini_map.xml
index da2eba07a0b..4152fb41c87 100644
--- a/indra/newview/skins/default/xui/pl/menu_mini_map.xml
+++ b/indra/newview/skins/default/xui/pl/menu_mini_map.xml
@@ -3,6 +3,7 @@
 	<menu_item_call label="Zoom Blisko" name="Zoom Close"/>
 	<menu_item_call label="Zoom Åšrednio" name="Zoom Medium"/>
 	<menu_item_call label="Zoom Daleko" name="Zoom Far"/>
+	<menu_item_check label="Obróć Mapę" name="Rotate Map"/>
 	<menu_item_call label="Zatrzymaj" name="Stop Tracking"/>
-	<menu_item_call label="Profil..." name="Profile"/>
+	<menu_item_call label="Mapa Åšwiata" name="World Map"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_navbar.xml b/indra/newview/skins/default/xui/pl/menu_navbar.xml
new file mode 100644
index 00000000000..8d84f3e7645
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_navbar.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Navbar Menu">
+	<menu_item_check label="Pokaż Współrzędne" name="Show Coordinates"/>
+	<menu_item_check label="Pokaż Właściwości Posiadłości" name="Show Parcel Properties"/>
+	<menu_item_call label="Ulubione Miejsce" name="Landmark"/>
+	<menu_item_call label="Wytnij" name="Cut"/>
+	<menu_item_call label="Kopiuj" name="Copy"/>
+	<menu_item_call label="Wklej" name="Paste"/>
+	<menu_item_call label="Usuń" name="Delete"/>
+	<menu_item_call label="Zaznacz Wszystko" name="Select All"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_nearby_chat.xml b/indra/newview/skins/default/xui/pl/menu_nearby_chat.xml
new file mode 100644
index 00000000000..78b8c0a4fca
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_nearby_chat.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="NearBy Chat Menu">
+	<menu_item_call label="Pokaż Osoby w Pobliżu..." name="nearby_people"/>
+	<menu_item_check label="Pokaż Zablokowany Tekst" name="muted_text"/>
+	<menu_item_check label="Wyświetlaj Ikonki Znajomych" name="show_buddy_icons"/>
+	<menu_item_check label="Wyświetlaj Imiona" name="show_names"/>
+	<menu_item_check label="Wyświetlaj Ikonki i Imiona" name="show_icons_and_names"/>
+	<menu_item_call label="Rozmiar Czcionki" name="font_size"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_object.xml b/indra/newview/skins/default/xui/pl/menu_object.xml
new file mode 100644
index 00000000000..bdeeb61bf48
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_object.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Object Pie">
+	<menu_item_call label="Dotknij" name="Object Touch"/>
+	<menu_item_call label="Edytuj" name="Edit..."/>
+	<menu_item_call label="Buduj" name="Build"/>
+	<menu_item_call label="Otwórz" name="Open"/>
+	<menu_item_call label="Usiądź Tutaj" name="Object Sit"/>
+	<menu_item_call label="Sprawdź" name="Object Inspect"/>
+	<context_menu label="Połóż &gt;" name="Put On">
+		<menu_item_call label="Załóż" name="Wear"/>
+		<context_menu label="Dołącz do &gt;" name="Object Attach"/>
+		<context_menu label="Dołącz do HUD &gt;" name="Object Attach HUD"/>
+	</context_menu>
+	<context_menu label="Usuń &gt;" name="Remove">
+		<menu_item_call label="Weź" name="Pie Object Take"/>
+		<menu_item_call label="Raport" name="Report Abuse..."/>
+		<menu_item_call label="Zablokuj" name="Object Mute"/>
+		<menu_item_call label="Zwróć" name="Return..."/>
+		<menu_item_call label="Usuń" name="Delete"/>
+	</context_menu>
+	<menu_item_call label="Weź Kopię" name="Take Copy"/>
+	<menu_item_call label="Zapłać" name="Pay..."/>
+	<menu_item_call label="Kup" name="Buy..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_object_icon.xml b/indra/newview/skins/default/xui/pl/menu_object_icon.xml
new file mode 100644
index 00000000000..b499bca2dbf
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_object_icon.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Object Icon Menu">
+	<menu_item_call label="Sprawdź..." name="Object Profile"/>
+	<menu_item_call label="Zablokuj..." name="Block"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_participant_list.xml b/indra/newview/skins/default/xui/pl/menu_participant_list.xml
new file mode 100644
index 00000000000..604ee2d104d
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_participant_list.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Participant List Context Menu">
+	<menu_item_call label="Zobacz Profil" name="View Profile"/>
+	<menu_item_call label="Dodaj Znajomość" name="Add Friend"/>
+	<menu_item_call label="IM" name="IM"/>
+	<menu_item_call label="Zadzwoń" name="Call"/>
+	<menu_item_call label="Udostępnij" name="Share"/>
+	<menu_item_call label="Zapłać" name="Pay"/>
+	<menu_item_check label="Zablokuj/Odblokuj" name="Block/Unblock"/>
+	<menu_item_check label="Zablokuj Tekst" name="MuteText"/>
+	<menu_item_check label="Odblokuj Tekst" name="AllowTextChat"/>
+	<menu_item_call label="Zablokuj tego uczestnika" name="ModerateVoiceMuteSelected"/>
+	<menu_item_call label="Zablokuj wszystkich pozostałych" name="ModerateVoiceMuteOthers"/>
+	<menu_item_call label="Oblokuj tego uczestnika" name="ModerateVoiceUnMuteSelected"/>
+	<menu_item_call label="Odblokuj wszystkich pozostałych" name="ModerateVoiceUnMuteOthers"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/pl/menu_people_friends_view_sort.xml
new file mode 100644
index 00000000000..0043030035c
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_people_friends_view_sort.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_group_plus">
+	<menu_item_check label="Porządkuj Według Nazwy" name="sort_name"/>
+	<menu_item_check label="Porządkuj Według Statusu" name="sort_status"/>
+	<menu_item_check label="Wyświetlaj Ikonki" name="view_icons"/>
+	<menu_item_call label="Pokaż Zablokowanych Rezydentów &amp; Obiekty" name="show_blocked_list"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/pl/menu_people_groups_view_sort.xml
new file mode 100644
index 00000000000..f661cfeba0a
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_people_groups_view_sort.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_group_plus">
+	<menu_item_check label="Wyświetlaj Ikonki Grupy" name="Display Group Icons"/>
+	<menu_item_call label="Opuść Zaznaczone Grupy" name="Leave Selected Group"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_people_nearby.xml b/indra/newview/skins/default/xui/pl/menu_people_nearby.xml
new file mode 100644
index 00000000000..0f80b56c163
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_people_nearby.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Avatar Context Menu">
+	<menu_item_call label="Zobacz Profil" name="View Profile"/>
+	<menu_item_call label="Dodaj Znajomość" name="Add Friend"/>
+	<menu_item_call label="IM" name="IM"/>
+	<menu_item_call label="Zadzwoń" name="Call"/>
+	<menu_item_call label="Udostępnij" name="Share"/>
+	<menu_item_call label="Zapłać" name="Pay"/>
+	<menu_item_check label="Zablokuj/Odblokuj" name="Block/Unblock"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/pl/menu_people_nearby_multiselect.xml
new file mode 100644
index 00000000000..156c10e3f3a
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_people_nearby_multiselect.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Multi-Selected People Context Menu">
+	<menu_item_call label="Dodaj Znajomych" name="Add Friends"/>
+	<menu_item_call label="IM" name="IM"/>
+	<menu_item_call label="Zadzwoń" name="Call"/>
+	<menu_item_call label="Udostępnij" name="Share"/>
+	<menu_item_call label="Zapłać" name="Pay"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/pl/menu_people_nearby_view_sort.xml
new file mode 100644
index 00000000000..9e5f1a5917d
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_people_nearby_view_sort.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_group_plus">
+	<menu_item_check label="Porządkuj Według Ostatnich Rozmówców" name="sort_by_recent_speakers"/>
+	<menu_item_check label="Porządkuj Według Nazwy" name="sort_name"/>
+	<menu_item_check label="Porządkuj Według Odległości" name="sort_distance"/>
+	<menu_item_check label="Wyświetlaj Ikonki" name="view_icons"/>
+	<menu_item_call label="Pokaż Zablokowanych Rezydentów &amp; Obiekty" name="show_blocked_list"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/pl/menu_people_recent_view_sort.xml
new file mode 100644
index 00000000000..418b67bce8b
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_people_recent_view_sort.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_group_plus">
+	<menu_item_check label="Porządkuj Według Daty" name="sort_most"/>
+	<menu_item_check label="Porządkuj Według Nazwy" name="sort_name"/>
+	<menu_item_check label="Wyświetlaj Ikonki" name="view_icons"/>
+	<menu_item_call label="Pokaż Zablokowanych Rezydentów &amp; Obiekty" name="show_blocked_list"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_picks.xml b/indra/newview/skins/default/xui/pl/menu_picks.xml
new file mode 100644
index 00000000000..6f6e4b7fa80
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_picks.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Picks">
+	<menu_item_call label="Info" name="pick_info"/>
+	<menu_item_call label="Edytuj" name="pick_edit"/>
+	<menu_item_call label="Teleportuj" name="pick_teleport"/>
+	<menu_item_call label="Mapa" name="pick_map"/>
+	<menu_item_call label="Usuń" name="pick_delete"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_picks_plus.xml b/indra/newview/skins/default/xui/pl/menu_picks_plus.xml
new file mode 100644
index 00000000000..14ab9c2978c
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_picks_plus.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="picks_plus_menu">
+	<menu_item_call label="Utwórz" name="create_pick"/>
+	<menu_item_call label="Nowa Reklama" name="create_classified"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_place.xml b/indra/newview/skins/default/xui/pl/menu_place.xml
new file mode 100644
index 00000000000..72f4b1265f8
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_place.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="place_overflow_menu">
+	<menu_item_call label="Zapisz Ulubione Miejsce" name="landmark"/>
+	<menu_item_call label="Utwórz" name="pick"/>
+	<menu_item_call label="Kup Wstęp" name="pass"/>
+	<menu_item_call label="Edytuj" name="edit"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_place_add_button.xml b/indra/newview/skins/default/xui/pl/menu_place_add_button.xml
new file mode 100644
index 00000000000..a737fc49cea
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_place_add_button.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_folder_gear">
+	<menu_item_call label="Dodaj Folder" name="add_folder"/>
+	<menu_item_call label="Dodaj do Ulubionych Miejsc" name="add_landmark"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/pl/menu_places_gear_folder.xml
new file mode 100644
index 00000000000..f5ece87b282
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_places_gear_folder.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_folder_gear">
+	<menu_item_call label="Dodaj do Ulubionych Miejsc" name="add_landmark"/>
+	<menu_item_call label="Dodaj Folder" name="add_folder"/>
+	<menu_item_call label="Wytnij" name="cut"/>
+	<menu_item_call label="Kopiuj" name="copy_folder"/>
+	<menu_item_call label="Wklej" name="paste"/>
+	<menu_item_call label="Zmień Nazwę" name="rename"/>
+	<menu_item_call label="Usuń" name="delete"/>
+	<menu_item_call label="Rozwiń" name="expand"/>
+	<menu_item_call label="Schowaj" name="collapse"/>
+	<menu_item_call label="Rozwiń Wszystkie Foldery" name="expand_all"/>
+	<menu_item_call label="Schowaj Wszystkie Foldery" name="collapse_all"/>
+	<menu_item_check label="Sortuj według daty" name="sort_by_date"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/pl/menu_places_gear_landmark.xml
new file mode 100644
index 00000000000..e88f650ed06
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_places_gear_landmark.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_ladmark_gear">
+	<menu_item_call label="Teleportuj" name="teleport"/>
+	<menu_item_call label="Więcej Informacji" name="more_info"/>
+	<menu_item_call label="Pokaż na Mapie" name="show_on_map"/>
+	<menu_item_call label="Dodaj do Ulubionych Miejsc" name="add_landmark"/>
+	<menu_item_call label="Dodaj Folder" name="add_folder"/>
+	<menu_item_call label="Wytnij" name="cut"/>
+	<menu_item_call label="Kopiuj Ulubione Miejsce" name="copy_landmark"/>
+	<menu_item_call label="Kopiuj SLurl" name="copy_slurl"/>
+	<menu_item_call label="Wklej" name="paste"/>
+	<menu_item_call label="Zmień Nazwę" name="rename"/>
+	<menu_item_call label="Usuń" name="delete"/>
+	<menu_item_call label="Rozwiń Wszystkie Foldery" name="expand_all"/>
+	<menu_item_call label="Schowaj Wszystkie Foldery" name="collapse_all"/>
+	<menu_item_check label="Sortuj według daty" name="sort_by_date"/>
+	<menu_item_call label="Stwórz Ulubione" name="create_pick"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_profile_overflow.xml b/indra/newview/skins/default/xui/pl/menu_profile_overflow.xml
new file mode 100644
index 00000000000..8405d48e492
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_profile_overflow.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="profile_overflow_menu">
+	<menu_item_call label="Zapłać" name="pay"/>
+	<menu_item_call label="Udostępnij" name="share"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_slurl.xml b/indra/newview/skins/default/xui/pl/menu_slurl.xml
index ca5e2b09650..719959df6a0 100755
--- a/indra/newview/skins/default/xui/pl/menu_slurl.xml
+++ b/indra/newview/skins/default/xui/pl/menu_slurl.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="Popup">
-	<menu_item_call label="O Miejscu" name="about_url" />
-	<menu_item_call label="Teleportuj do Miejsca" name="teleport_to_url" />
-	<menu_item_call label="Pokaż Miejsce na Mapie" name="show_on_map" />
+	<menu_item_call label="O Miejscu" name="about_url"/>
+	<menu_item_call label="Teleportuj do Miejsca" name="teleport_to_url"/>
+	<menu_item_call label="Mapa" name="show_on_map"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/pl/menu_teleport_history_gear.xml
new file mode 100644
index 00000000000..2161963a615
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_teleport_history_gear.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Teleport History Gear Context Menu">
+	<menu_item_call label="Rozwiń wszystkie foldery" name="Expand all folders"/>
+	<menu_item_call label="Schowaj wszystkie foldery" name="Collapse all folders"/>
+	<menu_item_call label="Wyczyść Historię Teleportacji" name="Clear Teleport History"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/pl/menu_teleport_history_item.xml
new file mode 100644
index 00000000000..7e58747267d
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_teleport_history_item.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Teleport History Item Context Menu">
+	<menu_item_call label="Teleportuj" name="Teleport"/>
+	<menu_item_call label="Więcej Szczegółów" name="More Information"/>
+	<menu_item_call label="Kopiuj do schowka" name="CopyToClipboard"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/pl/menu_teleport_history_tab.xml
new file mode 100644
index 00000000000..b12df08d6ae
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_teleport_history_tab.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Teleport History Item Context Menu">
+	<menu_item_call label="Otwórz" name="TabOpen"/>
+	<menu_item_call label="Zamknij" name="TabClose"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_text_editor.xml b/indra/newview/skins/default/xui/pl/menu_text_editor.xml
new file mode 100644
index 00000000000..4529246b561
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_text_editor.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Text editor context menu">
+	<menu_item_call label="Wytnij" name="Cut"/>
+	<menu_item_call label="Kopiuj" name="Copy"/>
+	<menu_item_call label="Wklej" name="Paste"/>
+	<menu_item_call label="Usuń" name="Delete"/>
+	<menu_item_call label="Zaznacz Wszystko" name="Select All"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_url_agent.xml b/indra/newview/skins/default/xui/pl/menu_url_agent.xml
new file mode 100644
index 00000000000..0f210b140bb
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_url_agent.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Pokaż Profil Rezydenta" name="show_agent"/>
+	<menu_item_call label="Kopiuj NazwÄ™ do Schowka" name="url_copy_label"/>
+	<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_url_group.xml b/indra/newview/skins/default/xui/pl/menu_url_group.xml
new file mode 100644
index 00000000000..38e4360691e
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_url_group.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Pokaż Szczegóły o Grupie" name="show_group"/>
+	<menu_item_call label="Kopiuj GrupÄ™ do Schowka" name="url_copy_label"/>
+	<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_url_http.xml b/indra/newview/skins/default/xui/pl/menu_url_http.xml
new file mode 100644
index 00000000000..0d8793d41e7
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_url_http.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Otwórz Przeglądarkę Internetową" name="url_open"/>
+	<menu_item_call label="Otwórz w Wewnętrzenej Przeglądarce" name="url_open_internal"/>
+	<menu_item_call label="Otwórz w Zewnętrznej Przeglądarce" name="url_open_external"/>
+	<menu_item_call label="Kopiuj URL do schowka" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_url_inventory.xml b/indra/newview/skins/default/xui/pl/menu_url_inventory.xml
new file mode 100644
index 00000000000..c11860d6fe1
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_url_inventory.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Pokaż Obiekt w Szafie" name="show_item"/>
+	<menu_item_call label="Kopiuj NazwÄ™ do Schowka" name="url_copy_label"/>
+	<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_url_map.xml b/indra/newview/skins/default/xui/pl/menu_url_map.xml
new file mode 100644
index 00000000000..becbd8276fc
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_url_map.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Pokaż na Mapie" name="show_on_map"/>
+	<menu_item_call label="Teleportuj do Miejsca" name="teleport_to_location"/>
+	<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_url_objectim.xml b/indra/newview/skins/default/xui/pl/menu_url_objectim.xml
new file mode 100644
index 00000000000..0bdf1da2a40
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_url_objectim.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Pokaż Szczegóły o Obiekcie" name="show_object"/>
+	<menu_item_call label="Pokaż na Mapie" name="show_on_map"/>
+	<menu_item_call label="Teleportuj to Miejsca Obiektu" name="teleport_to_object"/>
+	<menu_item_call label="Kopiuj NazwÄ™ Obiektu do Schowka" name="url_copy_label"/>
+	<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_url_parcel.xml b/indra/newview/skins/default/xui/pl/menu_url_parcel.xml
new file mode 100644
index 00000000000..881c010bc12
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_url_parcel.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Pokaż Szczegóły o Miejscu" name="show_parcel"/>
+	<menu_item_call label="Pokaż na Mapie" name="show_on_map"/>
+	<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_url_slapp.xml b/indra/newview/skins/default/xui/pl/menu_url_slapp.xml
new file mode 100644
index 00000000000..eb83245c48c
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_url_slapp.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Uruchom tÄ™ komendÄ™" name="run_slapp"/>
+	<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_url_slurl.xml b/indra/newview/skins/default/xui/pl/menu_url_slurl.xml
new file mode 100644
index 00000000000..b9fa692365c
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_url_slurl.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Pokaż Szczegóły o Miejscu" name="show_place"/>
+	<menu_item_call label="Pokaż na Mapie" name="show_on_map"/>
+	<menu_item_call label="Teleportuj do miejsca" name="teleport_to_location"/>
+	<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_url_teleport.xml b/indra/newview/skins/default/xui/pl/menu_url_teleport.xml
new file mode 100644
index 00000000000..7376fb3afc4
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/menu_url_teleport.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Teleportuj do tego miejsca" name="teleport"/>
+	<menu_item_call label="Pokaż na Mapie" name="show_on_map"/>
+	<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_viewer.xml b/indra/newview/skins/default/xui/pl/menu_viewer.xml
index 1898906d9ff..2a5842e553f 100755
--- a/indra/newview/skins/default/xui/pl/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/pl/menu_viewer.xml
@@ -1,207 +1,324 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar name="Main Menu">
-	<menu label="Plik" name="File">
-		<tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/>
-		<menu label="Załaduj" name="upload">
-			<menu_item_call label="Obraz (L$[COST])..." name="Upload Image"/>
-			<menu_item_call label="Dźwięk (L$[COST])..." name="Upload Sound"/>
-			<menu_item_call label="Animacja (L$[COST])..." name="Upload Animation"/>
-			<menu_item_call label="Zbiór plików (L$[COST] za plik)..." name="Bulk Upload"/>
-			<menu_item_separator label="-----------" name="separator"/>
-			<menu_item_call label="Wybierz ustawienia domyślne..." name="perm prefs"/>
-		</menu>
-		<menu_item_separator label="-----------" name="separator"/>
-		<menu_item_call label="Zamknij Bieżące Okno" name="Close Window"/>
-		<menu_item_call label="Zamknij Wszystkie Okna" name="Close All Windows"/>
-		<menu_item_separator label="-----------" name="separator2"/>
-		<menu_item_call label="Zapisz Obraz Jako..." name="Save Texture As..."/>
-		<menu_item_separator label="-----------" name="separator3"/>
-		<menu_item_call label="Zrób Zdjęcie" name="Take Snapshot"/>
-		<menu_item_call label="Zapisz Zdjęcie na Dysk" name="Snapshot to Disk"/>
-		<menu_item_separator label="-----------" name="separator4"/>
-		<menu_item_call label="Wyłącz Program" name="Quit"/>
+	<menu label="Ja" name="Me">
+		<menu_item_call label="Ustawienia" name="Preferences"/>
+		<menu_item_call label="Moja Tablica" name="Manage My Account"/>
+		<menu_item_call label="Kup L$" name="Buy and Sell L$"/>
+		<menu_item_call label="Mój Profil" name="Profile"/>
+		<menu_item_call label="Mój Wygląd" name="Appearance"/>
+		<menu_item_check label="Moja Szafa" name="Inventory"/>
+		<menu_item_call label="Pokaż Szafę w Schowku" name="ShowSidetrayInventory"/>
+		<menu_item_call label="Moje Gesturki" name="Gestures"/>
+		<menu label="Mój Status" name="Status">
+			<menu_item_call label="Tryb Oddalenia" name="Set Away"/>
+			<menu_item_call label="Tryb Pracy" name="Set Busy"/>
+		</menu>
+		<menu_item_call label="ZarzÄ…daj Statusu Administratora" name="Request Admin Options"/>
+		<menu_item_call label="Wyłącz Status Administratora" name="Leave Admin Options"/>
+		<menu_item_call label="Wyłącz [APP_NAME]" name="Quit"/>
 	</menu>
-	<menu label="Edycja" name="Edit">
-		<menu_item_call label="Cofnij" name="Undo"/>
-		<menu_item_call label="Powtórz" name="Redo"/>
-		<menu_item_separator label="-----------" name="separator"/>
-		<menu_item_call label="Wytnij" name="Cut"/>
-		<menu_item_call label="Kopiuj" name="Copy"/>
-		<menu_item_call label="Wklej" name="Paste"/>
-		<menu_item_call label="Usuń" name="Delete"/>
-		<menu_item_separator label="-----------" name="separator2"/>
-		<menu_item_call label="Szukaj..." name="Search..."/>
-		<menu_item_separator label="-----------" name="separator3"/>
-		<menu_item_call label="Zaznacz Wszystko" name="Select All"/>
-		<menu_item_call label="Cofnij Zaznaczenie" name="Deselect"/>
-		<menu_item_separator label="-----------" name="separator4"/>
-		<menu_item_call label="Duplikat" name="Duplicate"/>
-		<menu_item_separator label="-----------" name="separator5"/>
-		<menu label="Dołącz Obiekt" name="Attach Object"/>
-		<menu label="Odłącz Obiekt" name="Detach Object"/>
-		<menu label="Zdejmij Ubranie" name="Take Off Clothing">
-			<menu_item_call label="KoszulÄ™" name="Shirt"/>
-			<menu_item_call label="Spodnie" name="Pants"/>
-			<menu_item_call label="Buty" name="Shoes"/>
-			<menu_item_call label="Skarpety" name="Socks"/>
-			<menu_item_call label="KurtkÄ™" name="Jacket"/>
-			<menu_item_call label="Rękawiczki" name="Gloves"/>
-			<menu_item_call label="Podkoszulek" name="Menu Undershirt"/>
-			<menu_item_call label="BieliznÄ™" name="Menu Underpants"/>
-			<menu_item_call label="Spódnicę" name="Skirt"/>
-			<menu_item_call label="Całe Ubranie" name="All Clothes"/>
-		</menu>
-		<menu_item_separator label="-----------" name="separator6"/>
-		<menu_item_call label="Gesty..." name="Gestures..."/>
-		<menu_item_call label="Profil..." name="Profile..."/>
-		<menu_item_call label="WyglÄ…d..." name="Appearance..."/>
-		<menu_item_separator label="-----------" name="separator7"/>
-		<menu_item_check label="Znajomi..." name="Friends..."/>
-		<menu_item_call label="Grupy..." name="Groups..."/>
-		<menu_item_separator label="-----------" name="separator8"/>
-		<menu_item_call label="Ustawienia..." name="Preferences..."/>
+	<menu label="Kommunikacja" name="Communicate">
+		<menu_item_call label="Znajomi" name="My Friends"/>
+		<menu_item_call label="Grupy" name="My Groups"/>
+		<menu_item_check label="Czat Lokalny" name="Nearby Chat"/>
+		<menu_item_call label="Osoby w Pobliżu" name="Active Speakers"/>
+		<menu_item_check label="Media w Pobliżu" name="Nearby Media"/>
 	</menu>
-	<menu label="Widok" name="View">
-		<tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/>
-		<menu_item_call label="Widok Panoramiczny" name="Mouselook"/>
-		<menu_item_check label="Budowanie" name="Build"/>
-		<menu_item_check label="Wolna Kamera" name="Joystick Flycam"/>
-		<menu_item_call label="Normalny Widok" name="Reset View"/>
-		<menu_item_call label="Historia Rozmów" name="Look at Last Chatter"/>
-		<menu_item_separator label="-----------" name="separator"/>
-		<menu_item_check label="Narzędzia" name="Toolbar"/>
-		<menu_item_check label="Rozmowa Lokalna" name="Chat History"/>
-		<menu_item_check label="Rozmowa Prywatna (IM)" name="Instant Message"/>
-		<menu_item_check label="Moja Szafa" name="Inventory"/>
-		<menu_item_check label="RozmawiajÄ…ce Osoby" name="Active Speakers"/>
-		<menu_item_check label="Wyciszone Osoby" name="Mute List"/>
-		<menu_item_separator label="-----------" name="separator2"/>
-		<menu_item_check label="Ustawienia Kamery" name="Camera Controls"/>
+	<menu label="Åšwiat" name="World">
 		<menu_item_check label="Ustawienia Ruchu" name="Movement Controls"/>
-		<menu_item_check label="Mapa Åšwiata" name="World Map"/>
+		<menu_item_check label="Widok" name="Camera Controls"/>
+		<menu_item_call label="O Posiadłości" name="About Land"/>
+		<menu_item_call label="Region/MajÄ…tek" name="Region/Estate"/>
+		<menu_item_call label="Kup Posiadłość" name="Buy Land"/>
+		<menu_item_call label="Moje Posiadłości" name="My Land"/>
+		<menu label="Pokaż" name="Land">
+			<menu_item_check label="Linie Banu" name="Ban Lines"/>
+			<menu_item_check label="Emitery" name="beacons"/>
+			<menu_item_check label="Granice Posiadłości" name="Property Lines"/>
+			<menu_item_check label="Właściciele Posiadłości" name="Land Owners"/>
+		</menu>
+		<menu label="Ulubione Miejsca" name="Landmarks">
+			<menu_item_call label="Zapisz Ulubione Miejsce" name="Create Landmark Here"/>
+			<menu_item_call label="Ustaw Miejsce Startu" name="Set Home to Here"/>
+		</menu>
+		<menu_item_call label="Miejsce Startu" name="Teleport Home"/>
 		<menu_item_check label="Mini-Mapa" name="Mini-Map"/>
-		<menu_item_separator label="-----------" name="separator3"/>
-		<menu_item_check label="Statystyki" name="Statistics Bar"/>
-		<menu_item_check label="Granice Posiadłości" name="Property Lines"/>
-		<menu_item_check label="Linie banu" name="Banlines"/>
-		<menu_item_check label="Właściciele Posiadłości" name="Land Owners"/>
-		<menu_item_separator label="-----------" name="separator4"/>
-		<menu label="Podpowiedzi" name="Hover Tips">
-			<menu_item_check label="Pokaż Podpowiedzi" name="Show Tips"/>
-			<menu_item_separator label="-----------" name="separator"/>
-			<menu_item_check label="Posiadłość: wskazówki" name="Land Tips"/>
-			<menu_item_check label="Obiekty: wskazówki" name="Tips On All Objects"/>
-		</menu>
-		<menu_item_check label="Pokaż Przezroczyste Obiekty" name="Highlight Transparent"/>
-		<menu_item_check label="Emitery" name="beacons"/>
-		<menu_item_check label="Ukryj CzÄ…steczki" name="Hide Particles"/>
-		<menu_item_check label="Pokaż Załączniki HUD" name="Show HUD Attachments"/>
-		<menu_item_separator label="-----------" name="separator5"/>
-		<menu_item_call label="Zbliżenie" name="Zoom In"/>
-		<menu_item_call label="Domyślny Tryb Widoku" name="Zoom Default"/>
-		<menu_item_call label="Oddalenie" name="Zoom Out"/>
-		<menu_item_separator label="-----------" name="separator6"/>
-		<menu_item_call label="Tryb Widoku Pełnoekranowego" name="Toggle Fullscreen"/>
-		<menu_item_call label="Ustaw Domyślny Rozmiar Interfejsu Użytkownika" name="Set UI Size to Default"/>
-	</menu>
-	<menu label="Åšwiat" name="World">
-		<menu_item_call label="Rozmowa/Czat" name="Chat"/>
-		<menu_item_check label="Biegnij" name="Always Run"/>
-		<menu_item_check label="Leć" name="Fly"/>
-		<menu_item_separator label="-----------" name="separator"/>
-		<menu_item_call label="Zapamiętaj Miejsce (LM)" name="Create Landmark Here"/>
-		<menu_item_call label="Ustaw Miejsce Startu" name="Set Home to Here"/>
-		<menu_item_separator label="-----------" name="separator2"/>
-		<menu_item_call label="Teleportuj do Miejsca Startu" name="Teleport Home"/>
-		<menu_item_separator label="-----------" name="separator3"/>
-		<menu_item_call label="Åšpij" name="Set Away"/>
-		<menu_item_call label="Pracuj" name="Set Busy"/>
-		<menu_item_call label="Zatrzymaj Wszystkie Animacje" name="Stop Animating My Avatar"/>
-		<menu_item_call label="Zwolnij Klawisze" name="Release Keys"/>
-		<menu_item_separator label="-----------" name="separator4"/>
-		<menu_item_call label="Historia Konta..." name="Account History..."/>
-		<menu_item_call label="ZarzÄ…dzaj Kontem..." name="Manage My Account..."/>
-		<menu_item_call label="Kup L$..." name="Buy and Sell L$..."/>
-		<menu_item_separator label="-----------" name="separator5"/>
-		<menu_item_call label="Moje Posiadłości..." name="My Land..."/>
-		<menu_item_call label="O Posiadłości..." name="About Land..."/>
-		<menu_item_call label="Kup Posiadłość..." name="Buy Land..."/>
-		<menu_item_call label="Region/MajÄ…tek..." name="Region/Estate..."/>
-		<menu_item_separator label="-----------" name="separator6"/>
-		<menu label="Ustawienia Åšrodowiska" name="Environment Settings">
+		<menu_item_check label="Mapa Åšwiata" name="World Map"/>
+		<menu_item_call label="Zrób Zdjęcie" name="Take Snapshot"/>
+		<menu label="Słońce" name="Environment Settings">
 			<menu_item_call label="Wschód Słońca" name="Sunrise"/>
 			<menu_item_call label="Południe" name="Noon"/>
 			<menu_item_call label="Zachód Słońca" name="Sunset"/>
 			<menu_item_call label="Północ" name="Midnight"/>
-			<menu_item_call label="Przywróć Domyślne Ustawienia Regionu" name="Revert to Region Default"/>
-			<menu_item_separator label="-----------" name="separator"/>
+			<menu_item_call label="Używaj Czasu Regionu" name="Revert to Region Default"/>
 			<menu_item_call label="Edytor Åšrodowiska" name="Environment Editor"/>
 		</menu>
 	</menu>
-	<menu label="Narzędzia" name="Tools">
-		<menu label="Wybierz Narzędzie " name="Select Tool">
-			<menu_item_call label="Przybliżenie" name="Focus"/>
-			<menu_item_call label="Przesuń" name="Move"/>
-			<menu_item_call label="Edytuj" name="Edit"/>
-			<menu_item_call label="Stwórz" name="Create"/>
-			<menu_item_call label="Posiadłość" name="Land"/>
-		</menu>
-		<menu_item_separator label="-----------" name="separator"/>
-		<menu_item_check label="Wybierz Tylko Moje Obiekty" name="Select Only My Objects"/>
-		<menu_item_check label="Wybierz Tylko Obiekty Przesuwalne" name="Select Only Movable Objects"/>
-		<menu_item_check label="Wybierz Przez Zaznaczenie" name="Select By Surrounding"/>
-		<menu_item_check label="Pokaż Ukrytą Selekcję" name="Show Hidden Selection"/>
-		<menu_item_check label="Pokaż Zasięg Światła dla Selekcji" name="Show Light Radius for Selection"/>
-		<menu_item_check label="Pokaż Źródło Selekcji" name="Show Selection Beam"/>
-		<menu_item_separator label="-----------" name="separator2"/>
-		<menu_item_check label="PrzeciÄ…gnij Obiekt" name="Snap to Grid"/>
-		<menu_item_call label="PrzeciÄ…gnij Obiekt Do Siatki" name="Snap Object XY to Grid"/>
-		<menu_item_call label="Zastosuj Zaznaczenie Dla Siatki" name="Use Selection for Grid"/>
-		<menu_item_call label="Opcje Siatki..." name="Grid Options..."/>
-		<menu_item_separator label="-----------" name="separator3"/>
-		<menu_item_check label="Edytuj Zgrupowane Obiekty" name="Edit Linked Parts"/>
+	<menu label="Buduj" name="BuildTools">
+		<menu_item_check label="Buduj" name="Show Build Tools"/>
+		<menu label="Wybierz Narzędzie Budowania" name="Select Tool">
+			<menu_item_call label="Narzędzie Ogniskowej" name="Focus"/>
+			<menu_item_call label="Narzędzie Ruchu" name="Move"/>
+			<menu_item_call label="Narzędzie Edycji" name="Edit"/>
+			<menu_item_call label="Stwórz Narzędzie" name="Create"/>
+			<menu_item_call label="Narzędzie Posiadłości" name="Land"/>
+		</menu>
+		<menu label="Edytuj" name="Edit">
+			<menu_item_call label="Cofnij" name="Undo"/>
+			<menu_item_call label="Cofnij" name="Redo"/>
+			<menu_item_call label="Wytnij" name="Cut"/>
+			<menu_item_call label="Kopiuj" name="Copy"/>
+			<menu_item_call label="Wklej" name="Paste"/>
+			<menu_item_call label="Usuń" name="Delete"/>
+			<menu_item_call label="Zduplikuj" name="Duplicate"/>
+			<menu_item_call label="Zaznacz Wszystko" name="Select All"/>
+			<menu_item_call label="Cofnij Zaznaczenie" name="Deselect"/>
+		</menu>
 		<menu_item_call label="Grupuj" name="Link"/>
-		<menu_item_call label="Rozgrupuj" name="Unlink"/>
-		<menu_item_separator label="-----------" name="separator4"/>
-		<menu_item_call label="OglÄ…daj SelekcjÄ™" name="Focus on Selection"/>
+		<menu_item_call label="Rozlinkuj" name="Unlink"/>
+		<menu_item_call label="Ogniskowa Selekcji" name="Focus on Selection"/>
 		<menu_item_call label="Przybliż do Selekcji" name="Zoom to Selection"/>
-		<menu_item_call label="Kup Obiekt" name="Menu Object Take">
-			<on_enable userdata="Kup,Weź" name="EnableBuyOrTake"/>
-		</menu_item_call>
-		<menu_item_call label="Weź Kopię" name="Take Copy"/>
-		<menu_item_call label="Zapisz Obiekt z Poprawkami" name="Save Object Back to Object Contents"/>
-		<menu_item_separator label="-----------" name="separator6"/>
-		<menu_item_call label="Pokaż Okno Ostrzeżenia/Błędu Skryptu" name="Show Script Warning/Error Window"/>
-		<menu label="Zrekompiluj Skrypt w Selekcji" name="Recompile Scripts in Selection">
-			<menu_item_call label="Mono" name="Mono"/>
-			<menu_item_call label="LSL" name="LSL"/>
-		</menu>
-		<menu_item_call label="Zresetuj Skrypt w Selekcji" name="Reset Scripts in Selection"/>
-		<menu_item_call label="Uruchom Działanie Skryptów w Selekcji" name="Set Scripts to Running in Selection"/>
-		<menu_item_call label="Wstrzymaj Działanie Skryptów w Selekcji" name="Set Scripts to Not Running in Selection"/>
+		<menu label="Obiekt" name="Object">
+			<menu_item_call label="Kup" name="Menu Object Take"/>
+			<menu_item_call label="Weź Kopię" name="Take Copy"/>
+			<menu_item_call label="Zapisz Obiekt do Szafy" name="Save Object Back to My Inventory"/>
+			<menu_item_call label="Zapisz do Treści Obiektu" name="Save Object Back to Object Contents"/>
+		</menu>
+		<menu label="Skrypty" name="Scripts">
+			<menu_item_call label="Zrekompiluj Skrypt w Selekcji (Mono)" name="Mono"/>
+			<menu_item_call label="Zrekompiluj Skrypty" name="LSL"/>
+			<menu_item_call label="Reset Skryptów" name="Reset Scripts"/>
+			<menu_item_call label="Ustaw Uruchamienie Skryptów" name="Set Scripts to Running"/>
+			<menu_item_call label="Wstrzymaj Działanie Skryptów w Selekcji" name="Set Scripts to Not Running"/>
+		</menu>
+		<menu label="Opcje" name="Options">
+			<menu_item_check label="Edytuj Części Zlinkowane" name="Edit Linked Parts"/>
+			<menu_item_call label="Ustaw Domyślne Pozwolenia Ładowania" name="perm prefs"/>
+			<menu_item_check label="Pokaż Zaawansowane Pozwolenia" name="DebugPermissions"/>
+			<menu label="Selekcja" name="Selection">
+				<menu_item_check label="Wybierz Tylko Moje Obiekty" name="Select Only My Objects"/>
+				<menu_item_check label="Zaznacz Tylko PoruszajÄ…ce siÄ™ Obiekty" name="Select Only Movable Objects"/>
+				<menu_item_check label="Wybierz Przez Zaznaczenie" name="Select By Surrounding"/>
+			</menu>
+			<menu label="Pokaż" name="Show">
+				<menu_item_check label="Pokaż Ukrytą Selekcję" name="Show Hidden Selection"/>
+				<menu_item_check label="Pokaż Promień Światła dla Selekcji" name="Show Light Radius for Selection"/>
+				<menu_item_check label="Pokaż Emitery Selekcji" name="Show Selection Beam"/>
+			</menu>
+			<menu label="Siatka" name="Grid">
+				<menu_item_check label="PrzeciÄ…gnij Obiekt" name="Snap to Grid"/>
+				<menu_item_call label="PrzeciÄ…gnij Obiekt XY do Siatki" name="Snap Object XY to Grid"/>
+				<menu_item_call label="Zastosuj Zaznaczenie dla Siatki" name="Use Selection for Grid"/>
+				<menu_item_call label="Ustawienia Siatki" name="Grid Options"/>
+			</menu>
+		</menu>
+		<menu label="Wybierz Zlinkowane Części" name="Select Linked Parts">
+			<menu_item_call label="Wybierz Następną Część" name="Select Next Part"/>
+			<menu_item_call label="Zaznacz Poprzednią Część" name="Select Previous Part"/>
+			<menu_item_call label="Uwzględnij Następną Część" name="Include Next Part"/>
+			<menu_item_call label="Uwzględnij Poprzednią Część" name="Include Previous Part"/>
+		</menu>
 	</menu>
 	<menu label="Pomoc" name="Help">
-		<menu_item_call label="[SECOND_LIFE]: Pomoc" name="Second Life Help"/>
+		<menu_item_call label="[SECOND_LIFE] Portal Pomocy" name="Second Life Help"/>
 		<menu_item_call label="Samouczek" name="Tutorial"/>
-		<menu_item_separator label="-----------" name="separator"/>
-		<menu_item_call label="Oficjalny Blog [SECOND_LIFE]..." name="Official Linden Blog..."/>
-		<menu_item_separator label="-----------" name="separator2"/>
-		<menu_item_call label="Portal dla Skrypterów..." name="Scripting Portal..."/>
-		<menu_item_separator label="-----------" name="separator3"/>
-		<menu_item_call label="Złóż Raport o Nadużyciu..." name="Report Abuse..."/>
-		<menu_item_call label="Zderzenia, Popchnięcia, Uderzenia..." name="Bumps, Pushes &amp;amp; Hits..."/>
-		<menu_item_call label="Pomiar Lagów" name="Lag Meter"/>
-		<menu_item_separator label="-----------" name="separator7"/>
-		<menu label="Zgłoś Błędy Klienta" name="Bug Reporting">
-			<menu_item_call label="Publiczna Baza Błędów (JIRA)..." name="Public Issue Tracker..."/>
-			<menu_item_call label="Co to jest JIRA?..." name="Publc Issue Tracker Help..."/>
-			<menu_item_separator label="-----------" name="separator7"/>
-			<menu_item_call label="Instrukcje: Jak Zgłosić Błąd?..." name="Bug Reporing 101..."/>
-			<menu_item_call label="Zabezpieczenia..." name="Security Issues..."/>
-			<menu_item_call label="Pytania i Odpowiedzi: Wikipedia..." name="QA Wiki..."/>
-			<menu_item_separator label="-----------" name="separator9"/>
-			<menu_item_call label="Wyślij Raport Błędu..." name="Report Bug..."/>
-		</menu>
-		<menu_item_call label="O [APP_NAME]..." name="About Second Life..."/>
+		<menu_item_call label="Złóż Raport o Nadużyciu" name="Report Abuse"/>
+		<menu_item_call label="Zgłoś Błędy Klienta" name="Report Bug"/>
+	</menu>
+	<menu label="Zaawansowane" name="Advanced">
+		<menu_item_check label="Uruchom Tryb Oddalenia po 30 Minutach" name="Go Away/AFK When Idle"/>
+		<menu_item_call label="Zatrzymaj Wszystkie Animacje" name="Stop Animating My Avatar"/>
+		<menu_item_call label="Odswież Wyświetlanie Tekstur" name="Rebake Texture"/>
+		<menu_item_call label="Domyślne Ustawienia Rozmiaru Interfejsu" name="Set UI Size to Default"/>
+		<menu_item_check label="Ogranicz Dystans Selekcji" name="Limit Select Distance"/>
+		<menu_item_check label="Wyłącz Ograniczenia Zasięgu Kamery" name="Disable Camera Distance"/>
+		<menu_item_check label="Wysoka Rozdzielczość Zdjęć" name="HighResSnapshot"/>
+		<menu_item_check label="Zapisuj Zdjęcia na Dysk Twardy bez Efektu Dźwiękowego" name="QuietSnapshotsToDisk"/>
+		<menu_item_check label="Skompresuj Zdjęcie na Dysk Twardy" name="CompressSnapshotsToDisk"/>
+		<menu label="Narzędzia" name="Performance Tools">
+			<menu_item_call label="Pomiar Lagów" name="Lag Meter"/>
+			<menu_item_check label="Statystyki" name="Statistics Bar"/>
+			<menu_item_check label="Pokaż Wartość Renderowania Awatara" name="Avatar Rendering Cost"/>
+		</menu>
+		<menu label="Podkreślanie i Widoczność" name="Highlighting and Visibility">
+			<menu_item_check label="Efekt Emiterów" name="Cheesy Beacon"/>
+			<menu_item_check label="Ukryj CzÄ…steczki" name="Hide Particles"/>
+			<menu_item_check label="Ukryj Zaznaczone" name="Hide Selected"/>
+			<menu_item_check label="Pokaż Przeźroczyste Obiekty" name="Highlight Transparent"/>
+			<menu_item_check label="Pokaż Załączniki HUD" name="Show HUD Attachments"/>
+			<menu_item_check label="Pokaż Celownik Myszki" name="ShowCrosshairs"/>
+			<menu_item_check label="Pokaż Podpowiedzi Posiadłości" name="Land Tips"/>
+		</menu>
+		<menu label="Rodzaje Renderowania" name="Rendering Types">
+			<menu_item_check label="Podstawowe" name="Simple"/>
+			<menu_item_check label="Maska Przezroczysta" name="Alpha"/>
+			<menu_item_check label="Drzewo" name="Tree"/>
+			<menu_item_check label="Awatary" name="Character"/>
+			<menu_item_check label="Płaszczyzna Powierzchni" name="SurfacePath"/>
+			<menu_item_check label="Niebo" name="Sky"/>
+			<menu_item_check label="Woda" name="Water"/>
+			<menu_item_check label="Ziemia" name="Ground"/>
+			<menu_item_check label="Głośność" name="Volume"/>
+			<menu_item_check label="Trawa" name="Grass"/>
+			<menu_item_check label="Chmury" name="Clouds"/>
+			<menu_item_check label="CzÄ…steczki" name="Particles"/>
+			<menu_item_check label="Zderzenie" name="Bump"/>
+		</menu>
+		<menu label="Opcje Renderowania" name="Rendering Features">
+			<menu_item_check label="UI" name="UI"/>
+			<menu_item_check label="Zaznaczone" name="Selected"/>
+			<menu_item_check label="Podświetlenie" name="Highlighted"/>
+			<menu_item_check label="Tekstury Dynamiczne" name="Dynamic Textures"/>
+			<menu_item_check label="Cień Stopy" name="Foot Shadows"/>
+			<menu_item_check label="Mgła" name="Fog"/>
+			<menu_item_check label="Obiekty Elastyczne" name="Flexible Objects"/>
+		</menu>
+		<menu_item_check label="Uruchom Wiele Wątków" name="Run Multiple Threads"/>
+		<menu_item_call label="Wyczyść Bufor Danych Grupy" name="ClearGroupCache"/>
+		<menu_item_check label="Wygładzanie Ruchu Myszki" name="Mouse Smoothing"/>
+		<menu_item_check label="Pokaż Wiadomości w Pobliżu" name="IMInChat"/>
+		<menu label="Skróty" name="Shortcuts">
+			<menu_item_check label="Szukaj" name="Search"/>
+			<menu_item_call label="Zwolnij Klawisze" name="Release Keys"/>
+			<menu_item_call label="Domyślne Ustawienia Rozmiaru Interfejsu" name="Set UI Size to Default"/>
+			<menu_item_check label="Biegnij" name="Always Run"/>
+			<menu_item_check label="Zacznij Latać" name="Fly"/>
+			<menu_item_call label="Zamknij Okno" name="Close Window"/>
+			<menu_item_call label="Zamknij Wszystkie Okna" name="Close All Windows"/>
+			<menu_item_call label="Zapisz Zdjęcie na Dysk Twardy" name="Snapshot to Disk"/>
+			<menu_item_call label="Widok Panoramiczny" name="Mouselook"/>
+			<menu_item_check label="Wolna Kamera" name="Joystick Flycam"/>
+			<menu_item_call label="Reset Widoku" name="Reset View"/>
+			<menu_item_call label="Zobacz Ostatniego Rozmówce" name="Look at Last Chatter"/>
+			<menu label="Wybierz Narzędzie Budowania" name="Select Tool">
+				<menu_item_call label="Narzędzie Ogniskowej" name="Focus"/>
+				<menu_item_call label="Narzędzie Ruchu" name="Move"/>
+				<menu_item_call label="Narzędzie Edycji" name="Edit"/>
+				<menu_item_call label="Stwórz Narzędzie" name="Create"/>
+				<menu_item_call label="Narzędzia Posiadłości" name="Land"/>
+			</menu>
+			<menu_item_call label="Przybliż" name="Zoom In"/>
+			<menu_item_call label="Domyślne Przybliżenie" name="Zoom Default"/>
+			<menu_item_call label="Oddal" name="Zoom Out"/>
+			<menu_item_call label="Rozwiń Widok Pełnoekranowy" name="Toggle Fullscreen"/>
+		</menu>
+		<menu_item_call label="Pokaż Ustawienia Debugowania" name="Debug Settings"/>
+		<menu_item_check label="Pokaż Menu Progresu" name="Debug Mode"/>
+	</menu>
+	<menu label="Postęp" name="Develop">
+		<menu label="Konsola" name="Consoles">
+			<menu_item_check label="Konsola Tekstur" name="Texture Console"/>
+			<menu_item_check label="Debugowanie Zdarzeń Konsoli" name="Debug Console"/>
+			<menu_item_call label="Konsola Powiadomień" name="Notifications"/>
+			<menu_item_check label="Konsola Rozmiaru Tekstury" name="Texture Size"/>
+			<menu_item_check label="Konsola Kategorii Tekstur" name="Texture Category"/>
+			<menu_item_check label="Szybkie Timery" name="Fast Timers"/>
+			<menu_item_check label="Pamięć" name="Memory"/>
+			<menu_item_call label="Info Regionu do Debugowania Konsoli" name="Region Info to Debug Console"/>
+			<menu_item_check label="Kamera" name="Camera"/>
+			<menu_item_check label="Wiatr" name="Wind"/>
+		</menu>
+		<menu label="Pokaż Informacje" name="Display Info">
+			<menu_item_check label="Pokaż Czas" name="Show Time"/>
+			<menu_item_check label="Pokaż Informacje o Renderowaniu" name="Show Render Info"/>
+			<menu_item_check label="Pokaż Kolor pod Kursorem" name="Show Color Under Cursor"/>
+			<menu_item_check label="Pokaż Aktualizacje Obiektów" name="Show Updates"/>
+		</menu>
+		<menu label="Reset Błędu" name="Force Errors">
+			<menu_item_call label="Aktywacja Punktu Załamania" name="Force Breakpoint"/>
+			<menu_item_call label="Reset Błędów LL" name="Force LLError And Crash"/>
+			<menu_item_call label="Reset Błędów Pamięci" name="Force Bad Memory Access"/>
+			<menu_item_call label="Reset Pętli" name="Force Infinite Loop"/>
+			<menu_item_call label="Reset Sterowników" name="Force Driver Carsh"/>
+			<menu_item_call label="WyjÄ…tek Programu" name="Force Software Exception"/>
+			<menu_item_call label="Uruchom Rozłączenie" name="Force Disconnect Viewer"/>
+			<menu_item_call label="Symulacja Wycieku Pamięci" name="Memory Leaking Simulation"/>
+		</menu>
+		<menu label="Test Renderowania" name="Render Tests">
+			<menu_item_check label="Kamera Poza Zasiegiem" name="Camera Offset"/>
+			<menu_item_check label="Losowa Ilość Klatek" name="Randomize Framerate"/>
+			<menu_item_check label="Test Klatki Obrazu" name="Frame Test"/>
+		</menu>
+		<menu label="Renderowanie" name="Rendering">
+			<menu_item_check label="Osie" name="Axes"/>
+			<menu_item_check label="Tryb Obrazu Szkieletowego" name="Wireframe"/>
+			<menu_item_check label="Globalne Oświetlenie" name="Global Illumination"/>
+			<menu_item_check label="Tekstury Animacji" name="Animation Textures"/>
+			<menu_item_check label="Wyłącz Tekstury" name="Disable Textures"/>
+			<menu_item_check label="Renderowania Załączonego Światła" name="Render Attached Lights"/>
+			<menu_item_check label="Renderowanie Załączonych Cząsteczek" name="Render Attached Particles"/>
+			<menu_item_check label="Wyświetlaj Obiekty Odblaskowe" name="Hover Glow Objects"/>
+		</menu>
+		<menu label="Sieć" name="Network">
+			<menu_item_check label="Zatrzymaj Awatara" name="AgentPause"/>
+			<menu_item_call label="Upuść Pakiet Pamięci" name="Drop a Packet"/>
+		</menu>
+		<menu_item_call label="Zderzenia, Popchnięcia &amp;  Uderzenia" name="Bumps, Pushes &amp;amp; Hits"/>
+		<menu label="Åšwiat" name="World">
+			<menu_item_check label="Domyślne Ustawienia Środowiska Regionu" name="Sim Sun Override"/>
+			<menu_item_check label="Efekty Emiterów" name="Cheesy Beacon"/>
+			<menu_item_check label="Ustalona Pogoda" name="Fixed Weather"/>
+			<menu_item_call label="Zachowaj Bufor Pamięci Obiektów Regionu" name="Dump Region Object Cache"/>
+		</menu>
+		<menu label="UI" name="UI">
+			<menu_item_call label="Test PrzeglÄ…darki Internetowej" name="Web Browser Test"/>
+			<menu_item_call label="Drukuj Zaznaczone Informacje o Obiekcie" name="Print Selected Object Info"/>
+			<menu_item_call label="Statystyki Pamięci" name="Memory Stats"/>
+			<menu_item_check label="Kliknij Podójnie by Uruchomić Auto-Pilota" name="Double-ClickAuto-Pilot"/>
+			<menu_item_check label="Debugowanie Zdarzeń Klikania" name="Debug Clicks"/>
+			<menu_item_check label="Debugowanie Zdarzeń Myszy" name="Debug Mouse Events"/>
+		</menu>
+		<menu label="XUI" name="XUI">
+			<menu_item_call label="Załaduj Ustawienia Koloru" name="Reload Color Settings"/>
+			<menu_item_call label="Pokaż Test Czcionki" name="Show Font Test"/>
+			<menu_item_call label="Załaduj z XML" name="Load from XML"/>
+			<menu_item_call label="Zapisz jako XML" name="Save to XML"/>
+			<menu_item_check label="Pokaż Nazwy XUI" name="Show XUI Names"/>
+			<menu_item_call label="Wyślij Wiadomość (IM) Testową" name="Send Test IMs"/>
+		</menu>
+		<menu label="Awatar" name="Character">
+			<menu label="Grab Baked Texture" name="Grab Baked Texture">
+				<menu_item_call label="Tęczówka Oka" name="Iris"/>
+				<menu_item_call label="Głowa" name="Head"/>
+				<menu_item_call label="Górna Część Ciała" name="Upper Body"/>
+				<menu_item_call label="Dolna Część Ciała" name="Lower Body"/>
+				<menu_item_call label="Spódnica" name="Skirt"/>
+			</menu>
+			<menu label="Testy Postaci" name="Character Tests">
+				<menu_item_call label="Przesuń Geometrię Postaci" name="Toggle Character Geometry"/>
+				<menu_item_check label="Pozwól na Zaznaczanie Awatarów" name="Allow Select Avatar"/>
+			</menu>
+			<menu_item_call label="Powrót do Domyślnych Parametrów" name="Force Params to Default"/>
+			<menu_item_check label="Info o Animacji" name="Animation Info"/>
+			<menu_item_check label="Wolne Animacje" name="Slow Motion Animations"/>
+			<menu_item_check label="Wyłącz Poziom Detalu" name="Disable LOD"/>
+			<menu_item_check label="Pokaż Szczegóły Kolizji" name="Show Collision Skeleton"/>
+			<menu_item_check label="Wyświetl Cel Aganta" name="Display Agent Target"/>
+			<menu_item_call label="Debugowanie Tekstur Awatara" name="Debug Avatar Textures"/>
+		</menu>
+		<menu_item_check label="Tekstury HTTP" name="HTTP Textures"/>
+		<menu_item_check label="Aktywacja okna konsoli podczas następnego uruchomienia" name="Console Window"/>
+		<menu_item_check label="Pokaż Menu Administratora" name="View Admin Options"/>
+		<menu_item_call label="Uzyskaj Status Administratora" name="Request Admin Options"/>
+		<menu_item_call label="Opuść Status Administratora" name="Leave Admin Options"/>
+	</menu>
+	<menu label="Administrator" name="Admin">
+		<menu label="Object">
+			<menu_item_call label="Weź Kopię" name="Take Copy"/>
+			<menu_item_call label="Reset Właściciela" name="Force Owner To Me"/>
+			<menu_item_call label="Reset Przyzwolenia Właściciela" name="Force Owner Permissive"/>
+			<menu_item_call label="Usuń" name="Delete"/>
+			<menu_item_call label="Zablokuj" name="Lock"/>
+		</menu>
+		<menu label="Posiadłość" name="Parcel">
+			<menu_item_call label="Reset Właściciela" name="Owner To Me"/>
+			<menu_item_call label="Ustawienia Treści Lindenów" name="Set to Linden Content"/>
+			<menu_item_call label="Odzyskaj Posiadłość Publiczną" name="Claim Public Land"/>
+		</menu>
+		<menu label="Region" name="Region">
+			<menu_item_call label="Zachowaj Tymczasowo BazÄ™ Asset" name="Dump Temp Asset Data"/>
+			<menu_item_call label="Zachowaj Ustawienie Regionu" name="Save Region State"/>
+		</menu>
+		<menu_item_call label="Boskie Nadzędzia" name="God Tools"/>
 	</menu>
 </menu_bar>
diff --git a/indra/newview/skins/default/xui/pl/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/pl/panel_block_list_sidetray.xml
new file mode 100644
index 00000000000..d7fcb8c966b
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/panel_block_list_sidetray.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="block_list_panel">
+	<text name="title_text">
+		Lista Blokad
+	</text>
+	<scroll_list name="blocked" tool_tip="Lista zablokowanych obecnie rezydentów"/>
+	<button label="Zablokuj Rezydenta..." label_selected="Zablokuj Rezydenta..." name="Block resident..." tool_tip="Wybierz rezydenta, którego chcesz zablokować"/>
+	<button label="Zablokuj obiekt według nazwy..." label_selected="Zablokuj obiekt według nazwy..." name="Block object by name..."/>
+	<button label="Odblokuj" label_selected="Odblokuj" name="Unblock" tool_tip="Usuń rezydenta lub obiekt z listy blokad"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_group_roles.xml b/indra/newview/skins/default/xui/pl/panel_group_roles.xml
index ccef8870d23..dd46b4aeaa4 100755
--- a/indra/newview/skins/default/xui/pl/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/pl/panel_group_roles.xml
@@ -1,118 +1,80 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Członkowie" name="roles_tab">
-	<string name="default_needs_apply_text">
-		Panel zawiera nie zapisane zmiany.
-	</string>
-	<string name="want_apply_text">
-		Chcesz zapisać zmiany?
-	</string>
-	<button label="?" name="help_button" />
-	<panel name="members_header">
-		<text name="static">
-			Funkcje Członków
-		</text>
-		<text name="static2">
-			Członkowie Grupy mają przydzielone Funkcje z Przywilejami. Ustawienia te 
-można łatwo zmienić, umożliwiając grupie lepszą organizację i działaność. 
-		</text>
-	</panel>
-	<panel name="roles_header">
-		<text name="static">
-			Funkcje
-		</text>
-		<text name="role_properties_modifiable">
-			Wybierz Funkcję. Możesz zmienić Nazwę, Opis i Tytuł Członka.
-		</text>
-		<text name="role_properties_not_modifiable">
-			Wybierz Funkcję żeby zobaczyć jej atrybuty, Członków i Przywileje.
-		</text>
-		<text name="role_actions_modifiable">
-			Możesz również przypisać Przywileje do Funkcji.
-		</text>
-		<text name="role_actions_not_modifiable">
-			Możesz zobaczyć ale nie możesz modyfikować Przywilejów.
-		</text>
-	</panel>
-	<panel name="actions_header">
-		<text name="static">
-			Przywileje
-		</text>
-		<text name="static2">
-			Możesz zobaczyć opis Przywileju oraz Funkcje i Członków z przypisanym
-Przywilejem.
-		</text>
-	</panel>
+	<panel.string name="default_needs_apply_text">
+		Zakładka zawiera niezapisane zmiany
+	</panel.string>
+	<panel.string name="want_apply_text">
+		Czy chcesz zapisać zmiany?
+	</panel.string>
 	<tab_container name="roles_tab_container">
-		<panel label="Członkowie" name="members_sub_tab" tool_tip="Członkowie">
-			<button label="Szukaj" name="search_button" />
-			<button label="Wszystko" name="show_all_button" />
-			<name_list name="member_list">
-				<column label="ImiÄ™" name="name" />
-				<column label="Kontrybucje" name="donated" />
-				<column label="Ostatnio w SL" name="online" />
-			</name_list>
-			<button label="ZaproÅ› NowÄ… OsobÄ™..." name="member_invite"/>
-			<button label="Usuń z Grupy" name="member_eject" />
-			<string name="help_text">
+		<panel label="CZŁONKOWIE" name="members_sub_tab" tool_tip="Członkowie">
+			<panel.string name="help_text">
 				Możesz dodawać i usuwać Funkcje przypisane do Członków.
 Możesz wybrać wielu Członków naciskając Ctrl i klikając na ich imionach.
-			</string>
+			</panel.string>
+			<filter_editor label="Filtruj Członków" name="filter_input"/>
+			<name_list name="member_list">
+				<name_list.columns label="Członek" name="name"/>
+				<name_list.columns label="Dotacje" name="donated"/>
+				<name_list.columns label="Ostatnio w SL" name="online"/>
+			</name_list>
+			<button label="ZaproÅ› do Grupy" name="member_invite"/>
+			<button label="Usuń z Grupy" name="member_eject"/>
 		</panel>
-		<panel label="Funkcje" name="roles_sub_tab">
-			<button label="Szukaj" name="search_button" />
-			<button label="Wszystko" name="show_all_button" />
+		<panel label="FUNKCJE" name="roles_sub_tab">
+			<panel.string name="help_text">
+				Wszystkie funkcje mają tytuł oraz przypisane do niego przywileje
+które umożliwiają wykonywanie danej funckji. Każdy członek może pełnić
+jedną lub wiele funkcji. Każda grupa może posiadać maksymalnie 10 funkcji,
+łącznie z funkcją Każdy i Właściciel.
+			</panel.string>
+			<panel.string name="cant_delete_role">
+				Specjalne Funkcje Każdy i Właściciel nie mogą zostać usunięte.
+			</panel.string>
+			<panel.string name="power_folder_icon">
+				Inv_FolderClosed
+			</panel.string>
+			<filter_editor label="Filtruj Funkcje" name="filter_input"/>
 			<scroll_list name="role_list">
-				<column label="Funkcja" name="name" />
-				<column label="Tytuł" name="title" />
-				<column label="Liczba" name="members" />
+				<scroll_list.columns label="Funkcja" name="name"/>
+				<scroll_list.columns label="Tytuł" name="title"/>
+				<scroll_list.columns label="Liczba" name="members"/>
 			</scroll_list>
-			<button label="Dodaj NowÄ… FunkcjÄ™..." name="role_create" />
-			<button label="Usuń Funkcję" name="role_delete" />
-			<string name="help_text">
-				Funkcje mają Tytuł i przypisane Przywileje. Członkowie mogą mieć jedną lub więcej Funkcji.
-				Grupa może zawierać maksymalnie 10 Funkcji uwzględniając Funkcje Każdy i Właściciel.
-			</string>
-			<string name="cant_delete_role">
-				Specjalne Funkcje Każdy i Właściciel nie mogą zostać usunięte.
-			</string>
+			<button label="Stwórz Nową Funkcję" name="role_create"/>
+			<button label="Usuń Funkcję" name="role_delete"/>
 		</panel>
-		<panel label="Przywileje" name="actions_sub_tab">
-			<button label="Szukaj" name="search_button" />
-			<button label="Wszystko" name="show_all_button" />
-			<scroll_list name="action_list" tool_tip="Zaznacz aby zobaczyć więcej informacji.">
-				<column label="" name="icon" />
-				<column label="" name="action" />
-			</scroll_list>
-			<string name="help_text">
+		<panel label="PRZYWILEJE" name="actions_sub_tab" tool_tip="Możesz sprawdzić szczegóły dotyczące dangego przywileju oraz jakie funkcje oraz jacy członkowie posiadają prawo korzystania z niego.">
+			<panel.string name="help_text">
 				Przywileje pozwalają Członkom przypisanym do Funkcji na wykonywanie różnych zadań.
 Istnieje wiele Przywilei.
-			</string>
+			</panel.string>
+			<filter_editor label="Filtruj Przywileje" name="filter_input"/>
+			<scroll_list name="action_list" tool_tip="Wybierz przywilej by zobaczyć szczegóły">
+				<scroll_list.columns label="" name="icon"/>
+				<scroll_list.columns label="" name="action"/>
+			</scroll_list>
 		</panel>
 	</tab_container>
 	<panel name="members_footer">
 		<text name="static">
 			Funkcje
 		</text>
+		<scroll_list name="member_assigned_roles">
+			<scroll_list.columns label="" name="checkbox"/>
+			<scroll_list.columns label="" name="role"/>
+		</scroll_list>
 		<text name="static2">
 			Przywileje
 		</text>
-		<scroll_list name="member_assigned_roles">
-			<column label="" name="checkbox" />
-			<column label="" name="role" />
-		</scroll_list>
-		<scroll_list name="member_allowed_actions"
-		     tool_tip="Opisy Przywilejów są dostępne w zakładce Przywileje.">
-			<column label="" name="icon" />
-			<column label="" name="action" />
+		<scroll_list name="member_allowed_actions" tool_tip="By zobaczyć szczegóły, wybierz zakładkę Przywileje">
+			<scroll_list.columns label="" name="icon"/>
+			<scroll_list.columns label="" name="action"/>
 		</scroll_list>
 	</panel>
 	<panel name="roles_footer">
 		<text name="static">
 			Nazwa
 		</text>
-		<text name="static2">
-			Opis
-		</text>
 		<line_editor name="role_name">
 			Liczba
 		</line_editor>
@@ -122,36 +84,37 @@ Istnieje wiele Przywilei.
 		<line_editor name="role_title">
 			(proszę czekać)
 		</line_editor>
+		<text name="static2">
+			Opis
+		</text>
 		<text_editor name="role_description">
 			(proszę czekać)
 		</text_editor>
 		<text name="static4">
-			Przypisani Członkowie
+			Przypisane Funkcje
 		</text>
+		<check_box label="Opcja widoczności jest aktywna" name="role_visible_in_list" tool_tip="Opcja ta pozwala określić widoczność członków pełniących tę funkcję dla ludzi spoza Grupy."/>
 		<text name="static5" tool_tip="Przywileje przypisane do wybranej Funkcji.">
 			Przypisane Przywileje
 		</text>
-		<check_box label="Członkowie są Widoczni" name="role_visible_in_list"
-		     tool_tip="Określa czy Członkowie w tej Funkcji są widoczni dla ludzi spoza Grupy." />
-		<scroll_list name="role_allowed_actions"
-		     tool_tip="Opisy Przywilejów są dostępne w zakładce Przywileje.">
-			<column label="" name="icon" />
-			<column label="" name="checkbox" />
-			<column label="" name="action" />
+		<scroll_list name="role_allowed_actions" tool_tip="By zobaczyć szczegóły dozwolonych przywilejów wybierz zakładkę Przywileje">
+			<scroll_list.columns label="" name="icon"/>
+			<scroll_list.columns label="" name="checkbox"/>
+			<scroll_list.columns label="" name="action"/>
 		</scroll_list>
 	</panel>
 	<panel name="actions_footer">
 		<text name="static">
-			Opis
+			Opis Przywileju
 		</text>
 		<text_editor name="action_description">
 			Przywilej &apos;Usuń Członka z Grupy&apos;. Tylko Właściciel może usunąć innego Właściciela.
 		</text_editor>
 		<text name="static2">
-			Funkcje z Przywilejem
+			Funkcje z tym przywilejem
 		</text>
 		<text name="static3">
-			Członkowie z Przywilejem
+			Członkowie z tym przywilejem
 		</text>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_login.xml b/indra/newview/skins/default/xui/pl/panel_login.xml
index 3caf9338a23..cec7e34da54 100755
--- a/indra/newview/skins/default/xui/pl/panel_login.xml
+++ b/indra/newview/skins/default/xui/pl/panel_login.xml
@@ -1,37 +1,38 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="panel_login">
-  <string name="real_url">
+	<panel.string name="real_url">
 		http://secondlife.com/app/login/
-	</string>
-  <string name="forgot_password_url">
+	</panel.string>
+	<panel.string name="forgot_password_url">
 		http://secondlife.com/account/request.php
-	</string>
-  <text name="first_name_text">
-		ImiÄ™:
-	</text>
-  <text name="last_name_text">
-		Nazwisko:
-	</text>
-  <text name="password_text">
-		Hasło:
-	</text>
-  <text name="start_location_text">
-		Miejsce Startu:
-	</text>
-	<combo_box name="start_location_combo">
-		<combo_box.item name="MyHome" label="Mój Start" />
-		<combo_box.item name="MyLastLocation" label="Ostatnie Miejsce" />
-		<combo_box.item name="Typeregionname" label="&lt;Wpisz Region&gt;" />
-  </combo_box>
-  <check_box label="Zapamiętaj Hasło" name="remember_check" />
-  <button label="Połącz" label_selected="Połącz" name="connect_btn" />
-  <text name="create_new_account_text">
-		Utwórz nowe konto
-	</text>
-  <text name="forgot_password_text">
-		Nie pamiętasz hasła?
-	</text>
-  <text name="channel_text">
-		[VERSION]
-	</text>
+	</panel.string>
+	<panel name="login_widgets">
+		<text name="first_name_text">
+			ImiÄ™:
+		</text>
+		<line_editor name="first_name_edit" tool_tip="[SECOND_LIFE] ImiÄ™"/>
+		<text name="last_name_text">
+			Nazwisko
+		</text>
+		<line_editor name="last_name_edit" tool_tip="[SECOND_LIFE] Nazwisko"/>
+		<text name="password_text">
+			Hasło:
+		</text>
+		<button label="Zaloguj" label_selected="Zaloguj" name="connect_btn"/>
+		<text name="start_location_text">
+			Miejsce Startu:
+		</text>
+		<combo_box name="start_location_combo">
+			<combo_box.item label="Moje Ostatnie Miejsce" name="MyLastLocation"/>
+			<combo_box.item label="Moje Miejsce Startu" name="MyHome"/>
+			<combo_box.item label="&lt;Wpisz nazwÄ™ regionu&gt;" name="Typeregionname"/>
+		</combo_box>
+		<check_box label="Zapamiętaj Hasło" name="remember_check"/>
+		<text name="create_new_account_text">
+			Załóż Nowe Konto
+		</text>
+		<text name="forgot_password_text">
+			Nie pamiętasz swojego imienia lub hasła?
+		</text>
+	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_main_inventory.xml b/indra/newview/skins/default/xui/pl/panel_main_inventory.xml
new file mode 100644
index 00000000000..e34fd696712
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/panel_main_inventory.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Rzeczy" name="main inventory panel">
+	<panel.string name="Title">
+		Rzeczy
+	</panel.string>
+	<filter_editor label="Filtr" name="inventory search editor"/>
+	<tab_container name="inventory filter tabs">
+		<inventory_panel label="Wszystkie Obiekty" name="All Items"/>
+		<inventory_panel label="Ostatnio Dodane Obiekty" name="Recent Items"/>
+	</tab_container>
+	<panel name="bottom_panel">
+		<button name="options_gear_btn" tool_tip="Pokaż dodatkowe opcje"/>
+		<button name="add_btn" tool_tip="Dodaj nowy obiekt"/>
+		<dnd_button name="trash_btn" tool_tip="Usuń wybrany obiekt"/>
+	</panel>
+	<menu_bar name="Inventory Menu">
+		<menu label="Plik" name="File">
+			<menu_item_call label="Otwórz" name="Open"/>
+			<menu label="Załaduj" name="upload">
+				<menu_item_call label="Obraz (L$[COST])..." name="Upload Image"/>
+				<menu_item_call label="Dźwięk (L$[COST])..." name="Upload Sound"/>
+				<menu_item_call label="AnimacjÄ™ (L$[COST])..." name="Upload Animation"/>
+				<menu_item_call label="Zbiór Plików (L$[COST] za jeden plik)..." name="Bulk Upload"/>
+			</menu>
+			<menu_item_call label="Nowe Okno" name="New Window"/>
+			<menu_item_call label="Pokaż Filtry" name="Show Filters"/>
+			<menu_item_call label="Zresetuj Filtry" name="Reset Current"/>
+			<menu_item_call label="Zamknij Wszystkie Foldery" name="Close All Folders"/>
+			<menu_item_call label="Opróżnij Kosz" name="Empty Trash"/>
+			<menu_item_call label="Opróżnij Folder Zgubione i Znalezione" name="Empty Lost And Found"/>
+		</menu>
+		<menu label="Stwórz" name="Create">
+			<menu_item_call label="Nowy Folder" name="New Folder"/>
+			<menu_item_call label="Nowy Skrypt" name="New Script"/>
+			<menu_item_call label="NowÄ… NotÄ™" name="New Note"/>
+			<menu_item_call label="NowÄ… GesturkÄ™" name="New Gesture"/>
+			<menu label="Nowe Ubranie" name="New Clothes">
+				<menu_item_call label="NowÄ… KoszulkÄ™" name="New Shirt"/>
+				<menu_item_call label="Nowe Spodnie" name="New Pants"/>
+				<menu_item_call label="Nowe Buty" name="New Shoes"/>
+				<menu_item_call label="Nowe Skarpetki" name="New Socks"/>
+				<menu_item_call label="NowÄ… KurtkÄ™" name="New Jacket"/>
+				<menu_item_call label="Nową Spódnicę" name="New Skirt"/>
+				<menu_item_call label="Nowe Rękawiczki" name="New Gloves"/>
+				<menu_item_call label="Nowy Podkoszulek" name="New Undershirt"/>
+				<menu_item_call label="NowÄ… BieliznÄ™" name="New Underpants"/>
+				<menu_item_call label="Nowe Ubranie Przezroczyste" name="New Alpha"/>
+				<menu_item_call label="Nowy Tatuaż" name="New Tattoo"/>
+			</menu>
+			<menu label="Nową Część Ciała" name="New Body Parts">
+				<menu_item_call label="Nowy Kształt" name="New Shape"/>
+				<menu_item_call label="Nową Skórkę" name="New Skin"/>
+				<menu_item_call label="Nowe Włosy" name="New Hair"/>
+				<menu_item_call label="Nowe Oczy" name="New Eyes"/>
+			</menu>
+		</menu>
+		<menu label="UporzÄ…dkuj" name="Sort">
+			<menu_item_check label="Wegług Nazwy" name="By Name"/>
+			<menu_item_check label="Według Daty" name="By Date"/>
+			<menu_item_check label="Foldery zawsze według nazwy" name="Folders Always By Name"/>
+			<menu_item_check label="Foldery Systemowe od Góry" name="System Folders To Top"/>
+		</menu>
+	</menu_bar>
+</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/pl/panel_preferences_advanced.xml
index 2b70a728fa3..c3bd66274b9 100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_advanced.xml
@@ -1,7 +1,16 @@
 <?xml version="1.0" encoding="utf-8"?>
 <panel name="advanced">
+	<panel.string name="resolution_format">
+		[RES_X] x [RES_Y]
+	</panel.string>
+	<panel.string name="aspect_ratio_text">
+		[NUM]:[DEN]
+	</panel.string>
+	<check_box label="Czat Chmurkowy" name="bubble_text_chat"/>
+	<color_swatch name="background" tool_tip="Wybierz kolor czatu w chmurce"/>
+	<slider label="Intensywność" name="bubble_chat_opacity"/>
 	<text name="AspectRatioLabel1" tool_tip="width / height">
-		Proporcje:
+		Proporcje
 	</text>
 	<combo_box name="aspect_ratio" tool_tip="width / height">
 		<combo_box.item label="4:3 (Standardowy CRT)" name="item1"/>
@@ -9,4 +18,31 @@
 		<combo_box.item label="8:5 (Panoramiczny)" name="item3"/>
 		<combo_box.item label="16:9 (Panoramiczny)" name="item4"/>
 	</combo_box>
+	<check_box label="Automatyczne Wykrywanie" name="aspect_auto_detect"/>
+	<text name="heading1">
+		Kamery:
+	</text>
+	<slider label="KÄ…t Widoku" name="camera_fov"/>
+	<slider label="Odległość" name="camera_offset_scale"/>
+	<text name="heading2">
+		Automatyczne pozycjonowanie dla:
+	</text>
+	<check_box label="Buduj/Edytuj" name="edit_camera_movement" tool_tip="Używaj automatycznego pozycjonowania kamery aktywując i deaktywując tryb edycji"/>
+	<check_box label="Wygląd" name="appearance_camera_movement" tool_tip="Używaj automatycznego pozycjonowania kamery podczas trybu edycji"/>
+	<text name="heading3">
+		Awatary:
+	</text>
+	<check_box label="Pokaż w trybie widoku panoramicznego" name="first_person_avatar_visible"/>
+	<check_box label="Aktywacja klawiszy strzałek do poruszania awatarem" name="arrow_keys_move_avatar_check"/>
+	<check_box label="kliknij-kliknij-przytrzymaj, aby uruchomić" name="tap_tap_hold_to_run"/>
+	<check_box label="Poruszaj ustami awatara kiedy używana jest komunikacja głosowa" name="enable_lip_sync"/>
+	<check_box label="Pokaż błędy skryptów" name="show_script_errors"/>
+	<radio_group name="show_location">
+		<radio_item label="W czacie" name="0"/>
+		<radio_item label="W oknie" name="1"/>
+	</radio_group>
+	<check_box label="Uruchom tryb mówienia przez mikrofon podczas nasiśnięcia przycisku Mów:" name="push_to_talk_toggle_check" tool_tip="Jeżeli jesteś w trybie mówienia, w celu aktywacji lub deaktywacji swojego mikrofonu wybierz i wyłącz przycisk Mów tylko raz. Jeżeli nie jesteś w trybie mówienia, mikrofon przesyła Twój głos tylko w momencie aktywacji pełnej przycisku Mów."/>
+	<line_editor label="Naciśnij Mów by rozpocząć komunikację głosową" name="modifier_combo"/>
+	<button label="wybierz Klawisz" name="set_voice_hotkey_button"/>
+	<button label="Åšrodkowy Przycisk Myszki" name="set_voice_middlemouse_button"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml
index 7826af8b03d..7195c30f20f 100755
--- a/indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml
@@ -1,21 +1,14 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Informacje" name="popups" title="Popups">
-	<text name="dont_show_label">
-		Ukryj te informacje:
+	<text name="tell_me_label">
+		Powiadom mnie:
 	</text>
-	<button label="Pokazuj TÄ™ InformacjÄ™" name="enable_popup" />
-	<button label="Pokazuj Wszystko..." name="reset_dialogs_btn"
-	     tool_tip="Wyświetlaj wszystkie opcjonalne i &apos;Użyte pierwszy raz&apos; informacje." />
+	<check_box label="Kiedy wydajÄ™ lub otrzymujÄ™ L$" name="notify_money_change_checkbox"/>
+	<check_box label="Kiedy moi znajomi siÄ™ logujÄ… lub wylogowujÄ…" name="friends_online_notify_checkbox"/>
 	<text name="show_label">
-		Pokazuj te informacje:
+		Zawsze pokazuj te powiadomienia:
 	</text>
-	<button label="Ukryj TÄ™ InformacjÄ™..." name="skip_dialogs_btn"
-	     tool_tip="Nie wyświetlaj żadnych opcjonalnych i &apos;Użyte pierwszy raz&apos; informacji" />
-	<text name="text_box2">
-		Oferty notek, obrazów i miejsc (LM):
+	<text name="dont_show_label">
+		Nigdy nie pokazuj tych powiadomień:
 	</text>
-	<check_box label="Akceptuj automatycznie" name="accept_new_inventory" />
-	<check_box label="Wyświetlaj automatycznie po akceptacji" name="show_new_inventory" />
-	<check_box label="Automatycznie pokazuj nowe obiekty w szafie po akceptacji"
-	     name="show_in_inventory" />
 </panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml b/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml
index 13b66ed242a..5599c216860 100755
--- a/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml
@@ -1,16 +1,13 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Czat/IM" name="chat">
-  <text name="text_box">
-		Rozmiar Czcionki Czatu:
-	</text>
-  <radio_group name="chat_font_size">
-    <radio_item name="radio" label="Mała" />
-    <radio_item name="radio2" label="Åšrednia" />
-    <radio_item name="radio3" label="Duża" />
-  </radio_group>
+	<radio_group name="chat_font_size">
+		<radio_item label="Mała" name="radio"/>
+		<radio_item label="Åšrednia" name="radio2"/>
+		<radio_item label="Duża" name="radio3"/>
+	</radio_group>
 	<color_swatch label="Ty" name="user"/>
 	<text name="text_box1">
-		Ty
+		Ja
 	</text>
 	<color_swatch label="Inni" name="agent"/>
 	<text name="text_box2">
@@ -36,22 +33,10 @@
 	<text name="text_box7">
 		Właściciel
 	</text>
-	<color_swatch label="Chmurka" name="background"/>
-	<text name="text_box8">
-		Chmurka
-	</text>
 	<color_swatch label="Linki" name="links"/>
 	<text name="text_box9">
 		Linki
 	</text>
-  <check_box label="Pokazuj ostrzeżenia i błędy skryptu w czacie" name="script_errors_as_chat" />
-  <spinner label="Zamykaj czat w" name="fade_chat_time" />
-  <slider label="Przeźroczystość" name="console_opacity" />
-  <check_box label="Używaj pełnej szerokość ekranu (restart wymagany)" name="chat_full_width_check" />
-  <check_box label="Zamknij panel czatu po naciśnięciu Wróć" name="close_chat_on_return_check" />
-  <check_box label="Strzałki sterują awatarem podczas czatu" name="arrow_keys_move_avatar_check" />
-  <check_box label="Pokazuj czas w czacie" name="show_timestamps_check" />
-  <check_box label="Używaj animacji podczas pisania" name="play_typing_animation" />
-  <check_box label="Pokazuj chmurki w czacie" name="bubble_text_chat" />
-  <slider label="Przeźroczystość" name="bubble_chat_opacity" />
+	<check_box initial_value="true" label="Używaj animacji podczas pisania" name="play_typing_animation"/>
+	<check_box label="Wysyłaj wszystkie wiadomości (IM) na moją skrzynkę pocztową kiedy jestem niedostępny" name="send_im_to_email"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml b/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml
index 64e3acfcde7..f9b5d221a54 100755
--- a/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml
@@ -1,40 +1,38 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel label="Audio i Video" name="Preference Media panel">
-	<slider label="Master" name="System Volume"/>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Dźwięki" name="Preference Media panel">
+	<slider label="Główny" name="System Volume"/>
+	<check_box initial_value="true" label="Wycisz podczas minimalizacji" name="mute_when_minimized"/>
 	<slider label="Otoczenie" name="Wind Volume"/>
-	<slider label="Dźwięki" name="SFX Volume"/>
+	<slider label="Interfejs" name="UI Volume"/>
 	<slider label="Media" name="Media Volume"/>
-	<slider label="UI" name="UI Volume"/>
-	<slider label="Muzyka" name="Music Volume"/>
+	<slider label="Efekty Dźwiękowe" name="SFX Volume"/>
+	<slider label="Muzyka Strumieniowa" name="Music Volume"/>
+	<check_box label="Głos" name="enable_voice_check"/>
 	<slider label="Głos" name="Voice Volume"/>
-	<text_editor name="voice_unavailable">
-		Rozmowy są Niedostępne
-	</text_editor>
-	<check_box label="Pozwól na Rozmowy" name="enable_voice_check"/>
+	<text name="Listen from">
+		Odtwarzaj z:
+	</text>
 	<radio_group name="ear_location">
-		<radio_item name="0" label="Odtwarzaj głos z pozycji kamery" />
-		<radio_item name="1" label="Odtwarzaj głos z pozycji awatara" />
+		<radio_item label="Pozycji kamery" name="0"/>
+		<radio_item label="Pozycji Awatara" name="1"/>
 	</radio_group>
-	<button label="Ustawienia Sprzętowe" name="device_settings_btn"/>
-	<text name="muting_text">
-		Głośność:
-	</text>
-	<text name="streaming_prefs_text">
-		Ustawienia Strumieni:
-	</text>
-	<text name="audio_prefs_text">
-		Ustawienia Audio:
-	</text>
-	<panel label="Głośność" name="Volume Panel" />
-	<check_box label="Odtwarzaj Strumienie Muzyki"
-	     name="streaming_music" />
-	<check_box label="Odtwarzaj Strumienie Video"
-	     name="streaming_video" />
-	<check_box label="Automatycznie Odtwarzaj Media" name="auto_streaming_video" />
-	<check_box label="Wyciszaj Audio Podczas Minimalizacji Okna" name="mute_when_minimized" />
-	<slider label="Efekt Dopplera" name="Doppler Effect" />
-	<slider label="Wpływ Dystansu" name="Distance Factor" />
-	<slider label="Wyciszanie" name="Rolloff Factor" />
-	<spinner label="Próg Zmiany L$" name="L$ Change Threshold" />
-	<spinner label="Próg Zmiany Statusu" name="Health Change Threshold" />
+	<button label="Wejściowe/Wyjściowe Urządzenia" name="device_settings_btn"/>
+	<panel label="Ustawienia Sprzętowe" name="device_settings_panel">
+		<panel.string name="default_text">
+			Domyślne
+		</panel.string>
+		<text name="Input">
+			Wejściowe
+		</text>
+		<text name="My volume label">
+			Moja głośność:
+		</text>
+		<slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Zmień próg głośności korzystając z tego suwaka"/>
+		<text name="wait_text">
+			Proszę czekać
+		</text>
+		<text name="Output">
+			Wyjściowe
+		</text>
+	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_world_map.xml b/indra/newview/skins/default/xui/pl/panel_world_map.xml
index 608f102dc90..70479fe2090 100644
--- a/indra/newview/skins/default/xui/pl/panel_world_map.xml
+++ b/indra/newview/skins/default/xui/pl/panel_world_map.xml
@@ -1,5 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="world_map">
+	<panel.string name="Loading">
+		Ładowanie...
+	</panel.string>
+	<panel.string name="InvalidLocation">
+		Niewłaściwa Lokalizacja
+	</panel.string>
 	<panel.string name="world_map_north">
 		N
 	</panel.string>
diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml
index 1f67944f86b..e8dcfac02d0 100755
--- a/indra/newview/skins/default/xui/pl/strings.xml
+++ b/indra/newview/skins/default/xui/pl/strings.xml
@@ -4,9 +4,21 @@
      For example, the strings used in avatar chat bubbles, and strings 
      that are returned from one component and may appear in many places-->
 <strings>
+	<string name="SUPPORT_SITE">
+		Portal Pomocy Second Life
+	</string>
+	<string name="StartupDetectingHardware">
+		Wykrywanie dysku twardego...
+	</string>
+	<string name="StartupLoading">
+		Ładowanie
+	</string>
 	<string name="LoginInProgress">
 		Trwa logowanie. [APP_NAME] Proszę czekać.
 	</string>
+	<string name="LoginInProgressNoFrozen">
+		Logowanie...
+	</string>
 	<string name="LoginAuthenticating">
 		Autoryzacja
 	</string>
@@ -25,8 +37,11 @@
 	<string name="LoginInitializingMultimedia">
 		Inicjalizacja multimediów...
 	</string>
+	<string name="LoginInitializingFonts">
+		Ładowanie czcionek...
+	</string>
 	<string name="LoginVerifyingCache">
-		Weryfikacja plików z bazy danych (może zająć 60-90 sekund)...
+		Weryfikacja bufora danych na dysku (może trwać od 60 do 90 sekund)...
 	</string>
 	<string name="LoginProcessingResponse">
 		Przetwarzanie Odpowiedzi...
@@ -55,8 +70,11 @@
 	<string name="LoginDownloadingClothing">
 		Ładowanie ubrania...
 	</string>
+	<string name="LoginFailedNoNetwork">
+		Błąd sieci: Brak połączenia z siecią, sprawdź status swojego połączenia internetowego.
+	</string>
 	<string name="Quit">
-		Wyjdź
+		Wyłącz Program
 	</string>
 	<string name="AgentLostConnection">
 		Ten region może mieć problemy. Sprawdź podłączenie do Internetu.
@@ -76,39 +94,9 @@
 	<string name="TooltipIsGroup">
 		(Grupa)
 	</string>
-	<string name="TooltipFlagScript">
-		Skrypt
-	</string>
-	<string name="TooltipFlagPhysics">
-		Fizyka
-	</string>
-	<string name="TooltipFlagTouch">
-		Dotyk
-	</string>
-	<string name="TooltipFlagL$">
-		L$
-	</string>
-	<string name="TooltipFlagDropInventory">
-		Usuń z Szafy
-	</string>
-	<string name="TooltipFlagPhantom">
-		Fantom
-	</string>
-	<string name="TooltipFlagTemporary">
-		Tymczasowy
-	</string>
-	<string name="TooltipFlagRightClickMenu">
-		(Menu - wciśnij prawy klawisz)
-	</string>
-	<string name="TooltipFreeToCopy">
-		Za darmo
-	</string>
 	<string name="TooltipForSaleL$">
 		Na Sprzedaż: L$[AMOUNT]
 	</string>
-	<string name="TooltipForSaleMsg">
-		Na Sprzedaż: [MESSAGE]
-	</string>
 	<string name="TooltipFlagGroupBuild">
 		Budowanie Grupowe
 	</string>
@@ -136,6 +124,76 @@
 	<string name="TooltipMustSingleDrop">
 		Tylko pojedynczy obiekt może być tutaj przeciągnięty
 	</string>
+	<string name="TooltipHttpUrl">
+		Kliknij by zobaczyć zawartość tej strony internetowej
+	</string>
+	<string name="TooltipSLURL">
+		Kliknij by zobaczyć szczegóły tego miejsca
+	</string>
+	<string name="TooltipAgentUrl">
+		Kliknij by zobaczyć profil tego rezydenta
+	</string>
+	<string name="TooltipGroupUrl">
+		Kliknij by zobaczyć opis tej grupy
+	</string>
+	<string name="TooltipEventUrl">
+		Klinij by zobaczyć szczegóły tego wydarzenia
+	</string>
+	<string name="TooltipClassifiedUrl">
+		Kliknij by zobaczyć tę reklamę
+	</string>
+	<string name="TooltipParcelUrl">
+		Kliknij by zobaczyć opis tej posiadłości
+	</string>
+	<string name="TooltipTeleportUrl">
+		Kliknij by teleportować się do tego miejsca
+	</string>
+	<string name="TooltipObjectIMUrl">
+		Kliknij by zobaczyć opis tego obiektu
+	</string>
+	<string name="TooltipMapUrl">
+		Kliknij by zobaczyć to miejsce na mapie
+	</string>
+	<string name="TooltipSLAPP">
+		Kliknij by uruchomić secondlife:// command
+	</string>
+	<string name="CurrentURL" value=" Obecny Adres: [CurrentURL]"/>
+	<string name="SLurlLabelTeleport">
+		Teleportuj do
+	</string>
+	<string name="SLurlLabelShowOnMap">
+		Pokaż na Mapie
+	</string>
+	<string name="BUTTON_CLOSE_DARWIN">
+		Zamknij (&#8984;W)
+	</string>
+	<string name="BUTTON_CLOSE_WIN">
+		Zamknij (Ctrl+W)
+	</string>
+	<string name="BUTTON_RESTORE">
+		Odzyskaj
+	</string>
+	<string name="BUTTON_MINIMIZE">
+		Minimalizuj
+	</string>
+	<string name="BUTTON_TEAR_OFF">
+		Oderwij
+	</string>
+	<string name="BUTTON_DOCK">
+		Przyłącz
+	</string>
+	<string name="BUTTON_UNDOCK">
+		Odłącz
+	</string>
+	<string name="BUTTON_HELP">
+		Pokaż Pomoc
+	</string>
+	<string name="Searching">
+		Wyszukiwanie...
+	</string>
+	<string name="NoneFound">
+		Nieodnaleziono.
+	</string>
 	<string name="RetrievingData">
 		Odzyskiwanie danych...
 	</string>
@@ -190,8 +248,77 @@
 	<string name="AssetErrorUnknownStatus">
 		Status nieznany
 	</string>
-	<string name="AvatarEditingApparance">
-		(Edycja WyglÄ…du)
+	<string name="texture">
+		tekstury
+	</string>
+	<string name="sound">
+		dźwięku
+	</string>
+	<string name="calling card">
+		wizytówki
+	</string>
+	<string name="landmark">
+		ulubionego miejsca
+	</string>
+	<string name="legacy script">
+		skryptu
+	</string>
+	<string name="clothing">
+		ubrania
+	</string>
+	<string name="object">
+		obieku
+	</string>
+	<string name="note card">
+		notatki
+	</string>
+	<string name="folder">
+		folderu
+	</string>
+	<string name="root">
+		podstawy
+	</string>
+	<string name="lsl2 script">
+		skryptu LSL2
+	</string>
+	<string name="lsl bytecode">
+		kodu LSL
+	</string>
+	<string name="tga texture">
+		tekstury typu tga
+	</string>
+	<string name="body part">
+		części ciała
+	</string>
+	<string name="snapshot">
+		zdjęcia
+	</string>
+	<string name="lost and found">
+		Zgubione i Odnalezione
+	</string>
+	<string name="targa image">
+		obrau typu targa
+	</string>
+	<string name="trash">
+		Kosz
+	</string>
+	<string name="jpeg image">
+		obrazu typu jpeg
+	</string>
+	<string name="animation">
+		animacji
+	</string>
+	<string name="gesture">
+		gesturki
+	</string>
+	<string name="simstate">
+		simstate
+	</string>
+	<string name="favorite">
+		ulubione
+	</string>
+	<string name="symbolic link">
+		link
 	</string>
 	<string name="AvatarAway">
 		Åšpi
@@ -413,7 +540,19 @@
 		Ładowanie...
 	</string>
 	<string name="worldmap_offline">
-		Niedostępna
+		Mapa Świata jest Niedostępna
+	</string>
+	<string name="worldmap_results_none_found">
+		Miejsce Nieodnalezione.
+	</string>
+	<string name="Ok">
+		OK
+	</string>
+	<string name="Premature end of file">
+		Przedwczesna końcówka pliku
+	</string>
+	<string name="ST_NO_JOINT">
+		PODSTAWA lub ŁĄCZNIK nieodnaleziona/y
 	</string>
 	<string name="whisper">
 		szepcze:
@@ -421,6 +560,57 @@
 	<string name="shout">
 		krzyczy:
 	</string>
+	<string name="ringing">
+		Łączenie z rozmowami głosem w świecie...
+	</string>
+	<string name="connected">
+		Połączenie uzyskane.
+	</string>
+	<string name="unavailable">
+		Niestety, rozmowy głosem są niedozwolone w tym miejscu.
+	</string>
+	<string name="hang_up">
+		Połączenie rozmowy utracone.
+	</string>
+	<string name="ScriptQuestionCautionChatGranted">
+		&apos;[OBJECTNAME]&apos;, właściciel: &apos;[OWNERNAME]&apos;, położenie: [REGIONNAME] [REGIONPOS], pozwala Ci na: [PERMISSIONS].
+	</string>
+	<string name="ScriptQuestionCautionChatDenied">
+		&apos;[OBJECTNAME]&apos;, właściciel: &apos;[OWNERNAME]&apos;, położenie: [REGIONNAME] [REGIONPOS], nie pozwala Ci na: [PERMISSIONS].
+	</string>
+	<string name="ScriptTakeMoney">
+		Zabiera Lindeny (L$) od Ciebie
+	</string>
+	<string name="ActOnControlInputs">
+		Używaj klawiszy sterowania
+	</string>
+	<string name="RemapControlInputs">
+		Zmień klawisze sterowania
+	</string>
+	<string name="AnimateYourAvatar">
+		Animuj Awatara
+	</string>
+	<string name="AttachToYourAvatar">
+		Dołącz do Awatara
+	</string>
+	<string name="ReleaseOwnership">
+		Usuń prawo własności (zmień na publiczne)
+	</string>
+	<string name="LinkAndDelink">
+		Łącz / odłącz z innymi obiektów
+	</string>
+	<string name="AddAndRemoveJoints">
+		Dodaj / usuń połączenia z innymi obiektami
+	</string>
+	<string name="ChangePermissions">
+		Ustaw zezwolenia
+	</string>
+	<string name="TrackYourCamera">
+		Chodź za kamerą
+	</string>
+	<string name="ControlYourCamera">
+		Kontroluj kamerÄ™
+	</string>
 	<string name="SIM_ACCESS_PG">
 		&apos;PG&apos;
 	</string>
@@ -439,8 +629,6 @@
 	<string name="land_type_unknown">
 		(nieznane)
 	</string>
-	<string name="covenant_never_modified">Ostatnia Modyfikacja: (nigdy)</string>
-	<string name="covenant_modified">Ostatnia Modyfikacja: </string>
 	<string name="all_files">
 		Wszystkie Pliki
 	</string>
@@ -486,26 +674,122 @@
 	<string name="choose_the_directory">
 		Wybierz Katalog
 	</string>
-	<string name="accel-mac-control">
-		&#8963;
+	<string name="AvatarSetNotAway">
+		Ustaw Nie Åšpij
 	</string>
-	<string name="accel-mac-command">
-		&#8984;
+	<string name="AvatarSetAway">
+		Åšpij
 	</string>
-	<string name="accel-mac-option">
-		&#8997;
+	<string name="AvatarSetNotBusy">
+		Ustawiaj Nie Pracuj
 	</string>
-	<string name="accel-mac-shift">
-		&#8679;
+	<string name="AvatarSetBusy">
+		Pracuj
 	</string>
-	<string name="accel-win-control">
-		Ctrl+
+	<string name="shape">
+		Kształt
 	</string>
-	<string name="accel-win-alt">
-		Alt+
+	<string name="skin">
+		Skórka
 	</string>
-	<string name="accel-win-shift">
-		Shift+
+	<string name="hair">
+		Włosy
+	</string>
+	<string name="eyes">
+		Oczy
+	</string>
+	<string name="shirt">
+		Koszulka
+	</string>
+	<string name="pants">
+		Spodnie
+	</string>
+	<string name="shoes">
+		Buty
+	</string>
+	<string name="socks">
+		Skarpetki
+	</string>
+	<string name="jacket">
+		Kurtka
+	</string>
+	<string name="gloves">
+		Rękawiczki
+	</string>
+	<string name="undershirt">
+		Podkoszulka
+	</string>
+	<string name="underpants">
+		Bielizna
+	</string>
+	<string name="skirt">
+		Spódnica
+	</string>
+	<string name="alpha">
+		Ubranie Przezroczyste
+	</string>
+	<string name="tattoo">
+		Tatuaż
+	</string>
+	<string name="invalid">
+		niewłaściwa funkcja
+	</string>
+	<string name="next">
+		Następne
+	</string>
+	<string name="ok">
+		OK
+	</string>
+	<string name="GroupNotifyGroupNotice">
+		Ogłoszenie Grupowe
+	</string>
+	<string name="GroupNotifyGroupNotices">
+		Ogłoszenia Grupowe
+	</string>
+	<string name="GroupNotifySentBy">
+		Wysłane przez
+	</string>
+	<string name="GroupNotifyAttached">
+		Załączone:
+	</string>
+	<string name="GroupNotifyViewPastNotices">
+		Zobacz poprzednie zawiadomienia lub otrzymanen wiadomości tutaj.
+	</string>
+	<string name="GroupNotifyOpenAttachment">
+		Otwórz Załącznik
+	</string>
+	<string name="GroupNotifySaveAttachment">
+		Zapisz Załącznik
+	</string>
+	<string name="TeleportOffer">
+		Oferta teleportacji
+	</string>
+	<string name="StartUpNotification">
+		[%d] nowe zawiadomienie zostało wysłane kiedy byłeś w trybie oddalenia...
+	</string>
+	<string name="StartUpNotifications">
+		[%d] nowe zawiadomienia zostały wysłane kiedy byłeś w trybie oddalenia...
+	</string>
+	<string name="OverflowInfoChannelString">
+		Masz jeszcze [%d] powiadomień
+	</string>
+	<string name="BodyPartsRightArm">
+		Prawe RamiÄ™
+	</string>
+	<string name="BodyPartsHead">
+		Głowa
+	</string>
+	<string name="BodyPartsLeftArm">
+		Lewe RamiÄ™
+	</string>
+	<string name="BodyPartsLeftLeg">
+		Lewa Noga
+	</string>
+	<string name="BodyPartsTorso">
+		Tułów
+	</string>
+	<string name="BodyPartsRightLeg">
+		Prawa Noga
 	</string>
 	<string name="GraphicsQualityLow">
 		Niska
@@ -516,72 +800,2400 @@
 	<string name="GraphicsQualityHigh">
 		Wysoka
 	</string>
-	
-	<!-- PARCEL_CATEGORY_UI_STRING -->
-	<string name="Linden Location">Linden Lokacja</string>
-	<string name="Adult">&apos;Adult&apos;</string>
-	<string name="Arts&amp;Culture">Sztuka i Kultura</string>
-	<string name="Business">Biznes</string>
-	<string name="Educational">Edukacyjna</string>
-	<string name="Gaming">Gra</string>
-	<string name="Hangout">Poznawanie ludzi</string>
-	<string name="Newcomer Friendly">Przyjazne dla nowych</string>
-	<string name="Parks&amp;Nature">Park i Natura</string>
-	<string name="Residential">Mieszkalna</string>
-	<string name="Shopping">Zakupy</string>
-	<string name="Other">Inna</string>
-	
-	<string name="ringing">
-		Łączenie z rozmowami głosem w świecie...
+	<string name="LeaveMouselook">
+		Wybierz ESC by powrócić do trybu widoku normalne
+	</string>
+	<string name="InventoryNoMatchingItems">
+		Brak wyników w szafie dla wpisanego słowa.
+	</string>
+	<string name="InventoryNoTexture">
+		Nie posiadasz kopi
+tej tekstury w swojej szafie
+	</string>
+	<string name="no_transfer" value=" (brak oddawania)"/>
+	<string name="no_modify" value=" (brak modyfikowania)"/>
+	<string name="no_copy" value=" (brak kopiowania)"/>
+	<string name="worn" value=" (załóż)"/>
+	<string name="link" value=" (link)"/>
+	<string name="broken_link" value=" (broken_link)"/>
+	<string name="LoadingContents">
+		Ładowanie zawartości...
+	</string>
+	<string name="NoContents">
+		Brak zawartości
+	</string>
+	<string name="WornOnAttachmentPoint" value=" (założony na [ATTACHMENT_POINT])"/>
+	<string name="Chat" value=" Czat :"/>
+	<string name="Sound" value=" Dźwięk :"/>
+	<string name="Wait" value=" --- Zaczekaj :"/>
+	<string name="AnimFlagStop" value=" Zatrzymaj AnimacjÄ™ :"/>
+	<string name="AnimFlagStart" value=" Rozpocznij AnimacjÄ™ :"/>
+	<string name="Wave" value=" Wave"/>
+	<string name="HelloAvatar" value=" Witaj, Awatarze!"/>
+	<string name="ViewAllGestures" value="  Zobacz Wszystkie &gt;&gt;"/>
+	<string name="Animations" value=" Animacje,"/>
+	<string name="Calling Cards" value=" Wizytówki,"/>
+	<string name="Clothing" value=" Ubrania,"/>
+	<string name="Gestures" value=" Gesturki,"/>
+	<string name="Landmarks" value=" Ulubione Miejsca,"/>
+	<string name="Notecards" value=" Notki,"/>
+	<string name="Objects" value=" Obiekty,"/>
+	<string name="Scripts" value=" Skrypty,"/>
+	<string name="Sounds" value=" Dźwięki,"/>
+	<string name="Textures" value=" Tekstury,"/>
+	<string name="Snapshots" value=" Zdjęcia,"/>
+	<string name="No Filters" value="Nie "/>
+	<string name="Since Logoff" value=" - od wylogowania siÄ™"/>
+	<string name="InvFolder My Inventory">
+		Moja Szafa
+	</string>
+	<string name="InvFolder My Favorites">
+		Moje Ulubione
+	</string>
+	<string name="InvFolder Library">
+		Biblioteka
+	</string>
+	<string name="InvFolder Textures">
+		Tekstury
+	</string>
+	<string name="InvFolder Sounds">
+		Dźwięki
 	</string>
-	<string name="connected">
-		Połączenie uzyskane.
+	<string name="InvFolder Calling Cards">
+		Wizytówki
 	</string>
-	<string name="unavailable">
-		Niestety, rozmowy głosem są niedozwolone w tym miejscu.
+	<string name="InvFolder Landmarks">
+		Ulubione Miejsca
 	</string>
-	<string name="hang_up">
-		Połączenie rozmowy utracone.
+	<string name="InvFolder Scripts">
+		Skrypty
+	</string>
+	<string name="InvFolder Clothing">
+		Ubrania
+	</string>
+	<string name="InvFolder Objects">
+		Obiekty
+	</string>
+	<string name="InvFolder Notecards">
+		Noty
+	</string>
+	<string name="InvFolder New Folder">
+		Nowy Folder
+	</string>
+	<string name="InvFolder Inventory">
+		Szafa
+	</string>
+	<string name="InvFolder Uncompressed Images">
+		Nieskompresowane Obrazy
+	</string>
+	<string name="InvFolder Body Parts">
+		Części Ciała
+	</string>
+	<string name="InvFolder Trash">
+		Kosz
+	</string>
+	<string name="InvFolder Photo Album">
+		Album ze Zdjęciami
+	</string>
+	<string name="InvFolder Lost And Found">
+		Zagubione i Odnalezione
+	</string>
+	<string name="InvFolder Uncompressed Sounds">
+		Nieskompresowane Dźwięki
+	</string>
+	<string name="InvFolder Animations">
+		Animacje
+	</string>
+	<string name="InvFolder Gestures">
+		Gesturki
+	</string>
+	<string name="InvFolder favorite">
+		Ulubione
+	</string>
+	<string name="InvFolder Current Outfit">
+		Obecne Ubranie
+	</string>
+	<string name="InvFolder My Outfits">
+		Moje Ubranie
+	</string>
+	<string name="InvFolder Friends">
+		Znajomi
+	</string>
+	<string name="InvFolder All">
+		Wszystkie
+	</string>
+	<string name="Buy">
+		Kup
+	</string>
+	<string name="BuyforL$">
+		Kup za L$
+	</string>
+	<string name="Stone">
+		Kamień
+	</string>
+	<string name="Metal">
+		Metal
+	</string>
+	<string name="Glass">
+		Szkło
+	</string>
+	<string name="Wood">
+		Drewno
+	</string>
+	<string name="Flesh">
+		Tkanka
+	</string>
+	<string name="Plastic">
+		Plastik
+	</string>
+	<string name="Rubber">
+		Guma
+	</string>
+	<string name="Light">
+		Lekkie
+	</string>
+	<string name="KBShift">
+		Shift
+	</string>
+	<string name="KBCtrl">
+		Ctrl
+	</string>
+	<string name="Chest">
+		Klatka Piersiowa
+	</string>
+	<string name="Skull">
+		Czaszka
+	</string>
+	<string name="Left Shoulder">
+		Lewe RamiÄ™
+	</string>
+	<string name="Right Shoulder">
+		Prawe RamiÄ™
+	</string>
+	<string name="Left Hand">
+		Lewa Dłoń
+	</string>
+	<string name="Right Hand">
+		Prawa Dłoń
+	</string>
+	<string name="Left Foot">
+		Lewa Stopa
+	</string>
+	<string name="Right Foot">
+		Prawa Stopa
+	</string>
+	<string name="Spine">
+		Kręgosłup
+	</string>
+	<string name="Pelvis">
+		Mednica
+	</string>
+	<string name="Mouth">
+		Usta
+	</string>
+	<string name="Chin">
+		Szczęka
+	</string>
+	<string name="Left Ear">
+		Lewe Ucho
+	</string>
+	<string name="Right Ear">
+		Prawe Ucho
+	</string>
+	<string name="Left Eyeball">
+		Lewe Oko
+	</string>
+	<string name="Right Eyeball">
+		Prawe Oko
+	</string>
+	<string name="Nose">
+		Nos
+	</string>
+	<string name="R Upper Arm">
+		P RamiÄ™
+	</string>
+	<string name="R Forearm">
+		P PrzedramiÄ™
+	</string>
+	<string name="L Upper Arm">
+		L RamiÄ™
+	</string>
+	<string name="L Forearm">
+		L PrzedramiÄ™
+	</string>
+	<string name="Right Hip">
+		Prawe Biodro
+	</string>
+	<string name="R Upper Leg">
+		P Udo
+	</string>
+	<string name="R Lower Leg">
+		P Dolna Noga
+	</string>
+	<string name="Left Hip">
+		Lewe Biodro
+	</string>
+	<string name="L Upper Leg">
+		L Udo
+	</string>
+	<string name="L Lower Leg">
+		L Dolna Noga
+	</string>
+	<string name="Stomach">
+		Brzuch
+	</string>
+	<string name="Left Pec">
+		Left Pec
+	</string>
+	<string name="Right Pec">
+		Right Pec
+	</string>
+	<string name="YearsMonthsOld">
+		[AGEYEARS] [AGEMONTHS]
+	</string>
+	<string name="YearsOld">
+		[AGEYEARS]
+	</string>
+	<string name="MonthsOld">
+		[AGEMONTHS]
+	</string>
+	<string name="WeeksOld">
+		[AGEWEEKS]
+	</string>
+	<string name="DaysOld">
+		[AGEDAYS]
+	</string>
+	<string name="TodayOld">
+		Dołączył dzisiaj
+	</string>
+	<string name="AgeYearsA">
+		[COUNT] rok
+	</string>
+	<string name="AgeYearsB">
+		[COUNT] lat
+	</string>
+	<string name="AgeYearsC">
+		[COUNT] lat
+	</string>
+	<string name="AgeMonthsA">
+		[COUNT] miesiÄ…c
+	</string>
+	<string name="AgeMonthsB">
+		[COUNT] miesięcy
+	</string>
+	<string name="AgeMonthsC">
+		[COUNT] miesięcy
+	</string>
+	<string name="AgeWeeksA">
+		[COUNT] tydzień
+	</string>
+	<string name="AgeWeeksB">
+		[COUNT] tygodni
+	</string>
+	<string name="AgeWeeksC">
+		[COUNT] tygodni
+	</string>
+	<string name="AgeDaysA">
+		[COUNT] dzień
+	</string>
+	<string name="AgeDaysB">
+		[COUNT] dni
+	</string>
+	<string name="AgeDaysC">
+		[COUNT] dni
+	</string>
+	<string name="GroupMembersA">
+		[COUNT] członek
+	</string>
+	<string name="GroupMembersB">
+		[COUNT] członków
+	</string>
+	<string name="GroupMembersC">
+		[COUNT] członków
+	</string>
+	<string name="AcctTypeResident">
+		Rezydent
+	</string>
+	<string name="AcctTypeTrial">
+		Proces
+	</string>
+	<string name="AcctTypeCharterMember">
+		Wyróżniony Członek
+	</string>
+	<string name="AcctTypeEmployee">
+		Pracownik Linden Lab
+	</string>
+	<string name="PaymentInfoUsed">
+		Dane Konta Używane
+	</string>
+	<string name="PaymentInfoOnFile">
+		Dane Płatnicze na Koncie
+	</string>
+	<string name="NoPaymentInfoOnFile">
+		Brak Danych na Koncie
+	</string>
+	<string name="AgeVerified">
+		Weryfikacja Wieku Przeprowadzona
+	</string>
+	<string name="NotAgeVerified">
+		Brak Weryfikacji Wieku
+	</string>
+	<string name="Center 2">
+		Åšrodek 2
+	</string>
+	<string name="Top Right">
+		Prawa Góra
+	</string>
+	<string name="Top">
+		Góra
+	</string>
+	<string name="Top Left">
+		Lewa Góra
+	</string>
+	<string name="Center">
+		Åšrodek
+	</string>
+	<string name="Bottom Left">
+		Lewy Dół
+	</string>
+	<string name="Bottom">
+		Dół
+	</string>
+	<string name="Bottom Right">
+		Prawy Dół
+	</string>
+	<string name="CompileQueueDownloadedCompiling">
+		Pobieranie zakończone, rozpoczęcie kompilacji
+	</string>
+	<string name="CompileQueueScriptNotFound">
+		Skrypt nie został odnaleziony na serwerze.
+	</string>
+	<string name="CompileQueueProblemDownloading">
+		Problem z pobieraniem
+	</string>
+	<string name="CompileQueueInsufficientPermDownload">
+		Brak odpowiedniej zgody do pobrania skryptu.
+	</string>
+	<string name="CompileQueueInsufficientPermFor">
+		Brak odpowiedniej zgody dla
+	</string>
+	<string name="CompileQueueUnknownFailure">
+		Nieznany błąd podczas próby pobierania
+	</string>
+	<string name="CompileQueueTitle">
+		Postęp Rekompilacji
+	</string>
+	<string name="CompileQueueStart">
+		rekompiluj
+	</string>
+	<string name="ResetQueueTitle">
+		Zresetuj
+	</string>
+	<string name="ResetQueueStart">
+		zresetuj
+	</string>
+	<string name="RunQueueTitle">
+		Ustaw Uruchomiaj Progres
+	</string>
+	<string name="RunQueueStart">
+		ustaw uruchom
+	</string>
+	<string name="NotRunQueueTitle">
+		Ustaw Nie Uruchamiaj Progres
+	</string>
+	<string name="NotRunQueueStart">
+		ustaw nie uruchamiaj
+	</string>
+	<string name="CompileSuccessful">
+		Kompliacja zakończona pomyślnie!
+	</string>
+	<string name="CompileSuccessfulSaving">
+		Komplilacja zakończona pomyślnie, zapisywanie...
+	</string>
+	<string name="SaveComplete">
+		Zapisywanie zakończone.
+	</string>
+	<string name="ObjectOutOfRange">
+		Skrypt (obiekt poza zasięgiem)
+	</string>
+	<string name="GodToolsObjectOwnedBy">
+		Obiekt [OBJECT] należący [OWNER]
+	</string>
+	<string name="GroupsNone">
+		żadne
+	</string>
+	<string name="Group" value=" (groupa)"/>
+	<string name="Unknown">
+		(nieznane)
+	</string>
+	<string name="SummaryForTheWeek" value="Podsumowanie dla tego tygodnia, poczÄ…wszy od "/>
+	<string name="NextStipendDay" value="Następna wypłata będzie w "/>
+	<string name="GroupIndividualShare" value="                      Groupa       Udziały Indywidualne"/>
+	<string name="Balance">
+		Stan
+	</string>
+	<string name="Credits">
+		Kredyty
+	</string>
+	<string name="Debits">
+		Debet
+	</string>
+	<string name="Total">
+		Suma
+	</string>
+	<string name="NoGroupDataFound">
+		Brak informacji na temat podanej grupy
+	</string>
+	<string name="IMParentEstate">
+		parent estate
+	</string>
+	<string name="IMMainland">
+		główny
+	</string>
+	<string name="IMTeen">
+		dla niepełnoletnich
+	</string>
+	<string name="RegionInfoError">
+		błąd
+	</string>
+	<string name="RegionInfoAllEstatesOwnedBy">
+		wszystkie majątki, które są własnością [OWNER]
+	</string>
+	<string name="RegionInfoAllEstatesYouOwn">
+		wszystkie majątki, które posiadasz
+	</string>
+	<string name="RegionInfoAllEstatesYouManage">
+		wszystkie majątki, które nadzorujesz dla [OWNER]
+	</string>
+	<string name="RegionInfoAllowedResidents">
+		Rezydenci mający dostęp: ([ALLOWEDAGENTS], max [MAXACCESS])
+	</string>
+	<string name="RegionInfoAllowedGroups">
+		Grupy mające dostęp: ([ALLOWEDGROUPS], max [MAXACCESS])
+	</string>
+	<string name="CursorPos">
+		Linia [LINE], Kolumna [COLUMN]
+	</string>
+	<string name="PanelDirCountFound">
+		[COUNT] odnalezionych
+	</string>
+	<string name="PanelContentsNewScript">
+		Nowy Skrypt
+	</string>
+	<string name="MuteByName">
+		(według nazwy)
+	</string>
+	<string name="MuteAgent">
+		(rezydenta)
+	</string>
+	<string name="MuteObject">
+		(obiekt)
+	</string>
+	<string name="MuteGroup">
+		(grupÄ™)
+	</string>
+	<string name="RegionNoCovenant">
+		Brak umowy dla tego majÄ…tku.
+	</string>
+	<string name="RegionNoCovenantOtherOwner">
+		Brak umowy dla tego majątku. Każda posiadłość w tym majątku została sprzedana przez Właściciela majątku nie Linden Lab. Skontaktuj się z właścicielem majątku w celu uzuskania szczegółów sprzedaży.
+	</string>
+	<string name="covenant_last_modified">
+		Ostatnia Modyfikacja:
+	</string>
+	<string name="none_text" value=" (żadne) "/>
+	<string name="never_text" value=" (nigdy) "/>
+	<string name="GroupOwned">
+		Własność Grupy
+	</string>
+	<string name="Public">
+		Publiczny
+	</string>
+	<string name="ClassifiedClicksTxt">
+		Kliknij: [TELEPORT] teleportuj, [MAP] mapa, [PROFILE] profil
+	</string>
+	<string name="ClassifiedUpdateAfterPublish">
+		(zostanie zaktualizowane po publikacji)
+	</string>
+	<string name="MultiPreviewTitle">
+		PodglÄ…d
+	</string>
+	<string name="MultiPropertiesTitle">
+		Właściwości
+	</string>
+	<string name="InvOfferAnObjectNamed">
+		Obiekt o nazwie
+	</string>
+	<string name="InvOfferOwnedByGroup">
+		należacy do grupy
+	</string>
+	<string name="InvOfferOwnedByUnknownGroup">
+		należący do nieznanej grupy
+	</string>
+	<string name="InvOfferOwnedBy">
+		należy do
+	</string>
+	<string name="InvOfferOwnedByUnknownUser">
+		należący do nieznanego właściciela
+	</string>
+	<string name="InvOfferGaveYou">
+		oddany Tobie
+	</string>
+	<string name="InvOfferYouDecline">
+		Odrzucony przez Ciebie
+	</string>
+	<string name="InvOfferFrom">
+		od
+	</string>
+	<string name="GroupMoneyTotal">
+		Suma
+	</string>
+	<string name="GroupMoneyBought">
+		zakupione
+	</string>
+	<string name="GroupMoneyPaidYou">
+		zapłać sobie
+	</string>
+	<string name="GroupMoneyPaidInto">
+		zapłać do
+	</string>
+	<string name="GroupMoneyBoughtPassTo">
+		kup dostęp do
+	</string>
+	<string name="GroupMoneyPaidFeeForEvent">
+		zapłać opłatę za wydarzenie
+	</string>
+	<string name="GroupMoneyPaidPrizeForEvent">
+		zapłać za wydarzenia
+	</string>
+	<string name="GroupMoneyBalance">
+		Stan
+	</string>
+	<string name="GroupMoneyCredits">
+		Kredyty
+	</string>
+	<string name="GroupMoneyDebits">
+		Debet
+	</string>
+	<string name="ViewerObjectContents">
+		Zawartość
+	</string>
+	<string name="AcquiredItems">
+		Zdobyte Obiekty
+	</string>
+	<string name="Cancel">
+		Anuluj
+	</string>
+	<string name="UploadingCosts">
+		Koszty załadowania [%s]
+	</string>
+	<string name="UnknownFileExtension">
+		Nieznane rozszerzenie dla pliku [.%s]
+Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
+	</string>
+	<string name="AddLandmarkNavBarMenu">
+		Dodaj Ulubione Miejsce...
+	</string>
+	<string name="EditLandmarkNavBarMenu">
+		Edytuj Ulubione Miejce...
+	</string>
+	<string name="accel-mac-control">&#8963;</string>
+	<string name="accel-mac-command">&#8984;</string>
+	<string name="accel-mac-option">&#8997;</string>
+	<string name="accel-mac-shift">&#8679;</string>
+	<string name="accel-win-control">
+		Ctrl+
+	</string>
+	<string name="accel-win-alt">
+		Alt+
+	</string>
+	<string name="accel-win-shift">
+		Shift+
+	</string>
+	<string name="FileSaved">
+		Zapisane Pliki
+	</string>
+	<string name="Receiving">
+		Otrzymane
+	</string>
+	<string name="AM">
+		AM
+	</string>
+	<string name="PM">
+		PM
+	</string>
+	<string name="PST">
+		PST
+	</string>
+	<string name="PDT">
+		PDT
+	</string>
+	<string name="Forward">
+		Do Przodu
+	</string>
+	<string name="Left">
+		W Lewo
+	</string>
+	<string name="Right">
+		W Prawo
+	</string>
+	<string name="Back">
+		Wróć
+	</string>
+	<string name="North">
+		Północ
+	</string>
+	<string name="South">
+		Południe
+	</string>
+	<string name="West">
+		Zachód
+	</string>
+	<string name="East">
+		Wschód
+	</string>
+	<string name="Up">
+		W Górę
+	</string>
+	<string name="Down">
+		W Dół
+	</string>
+	<string name="Any Category">
+		Każda Kategoria
+	</string>
+	<string name="Shopping">
+		Zakupy
+	</string>
+	<string name="Land Rental">
+		Wynajem Ziemi
+	</string>
+	<string name="Property Rental">
+		Wynajem Posiadłości
+	</string>
+	<string name="Special Attraction">
+		Specjalne Oferty
+	</string>
+	<string name="New Products">
+		Nowe Produkty
+	</string>
+	<string name="Employment">
+		Praca
+	</string>
+	<string name="Wanted">
+		Poszukiwane
+	</string>
+	<string name="Service">
+		Serwis
+	</string>
+	<string name="Personal">
+		Personalne
+	</string>
+	<string name="None">
+		Żadne
+	</string>
+	<string name="Linden Location">
+		Linden Lokacja
+	</string>
+	<string name="Adult">
+		&apos;Adult&apos;
+	</string>
+	<string name="Arts&amp;Culture">
+		Sztuka i Kultura
+	</string>
+	<string name="Business">
+		Biznes
+	</string>
+	<string name="Educational">
+		Edukacyjna
+	</string>
+	<string name="Gaming">
+		Gra
+	</string>
+	<string name="Hangout">
+		Poznawanie ludzi
+	</string>
+	<string name="Newcomer Friendly">
+		Przyjazne dla nowych
+	</string>
+	<string name="Parks&amp;Nature">
+		Park i Natura
+	</string>
+	<string name="Residential">
+		Mieszkalna
+	</string>
+	<string name="Stage">
+		Scena
+	</string>
+	<string name="Other">
+		Inna
+	</string>
+	<string name="Any">
+		Jakiekolwiek
+	</string>
+	<string name="You">
+		Ty
+	</string>
+	<string name="Multiple Media">
+		Multi Media
+	</string>
+	<string name="Play Media">
+		Uruchom/Zatrzymaj Media
+	</string>
+	<string name="MBCmdLineError">
+		Podczas realizacji podanej komendy, wystąpił błąd.
+Prosimy odwiedzić stronę internetową: http://wiki.secondlife.com/wiki/Client_parameters
+Błąd:
+	</string>
+	<string name="MBCmdLineUsg">
+		[APP_NAME] zastosowana komenda:
+	</string>
+	<string name="MBUnableToAccessFile">
+		Aplikacja [APP_NAME] nie odnalazła poszukiwanego pliku.
+
+Może być to spowodowane aktywnością kilku kopii oprogramowania w tej samej chwili lub Twój system błędnie odczytuje proces zakończenia dla uruchomionuch aplikacji.
+Jeżeli nadal otrzymujesz ten komunikat, uruchom swój komputer ponownie.
+Jeżeli problem nadal występuje, proponujemy całkowite odinstalowanie aplikacji [APP_NAME] oraz ponowną jej instalację.
+	</string>
+	<string name="MBFatalError">
+		Błąd Krytyczny
+	</string>
+	<string name="MBRequiresAltiVec">
+		Aplikacja [APP_NAME] wymaga procesora z AltiVec (wersja G4 lub starsza).
+	</string>
+	<string name="MBAlreadyRunning">
+		Aplikacja [APP_NAME] została już uruchomiona.
+Sprawdź czy Twój pasek aplikacji nie ma zminimaliwoanych okien programu.
+Jeżeli nadal otrzymujesz ten komunikat, uruchom swój komputer ponownie.
+	</string>
+	<string name="MBFrozenCrashed">
+		Aplikacja [APP_NAME] znajduje się w trybie zatrzymania lub zawieszenia po poprzedniej próbie uruchomienia.
+Czy chcesz wysłać raport na temat zawieszenia?
+	</string>
+	<string name="MBAlert">
+		Powiadomienie
+	</string>
+	<string name="MBNoDirectX">
+		Aplikacja [APP_NAME] nie wykryła oprogramowania DirectX 9.0b lub wersji nowszej.
+[APP_NAME] używa oprogramowaniau DirectX w celu detekcji dysku twardego i/lub nieaktualizowanych dysków twardych, które mogą przyczynić się do obniżenia stabilności, wydajności systemoweu oraz zawieszeń. Jeżeli chcesz uruchomić aplikację [APP_NAME] bez problemów, doradzamy korzystanie z uruchomionym oprogramowaniem min. DirectX 9.0b.
+
+Czy chcesz kontynuować?
+	</string>
+	<string name="MBWarning">
+		Ostrzeżenie
+	</string>
+	<string name="MBNoAutoUpdate">
+		Automatyczna aktualizacja nie została jeszcze zaimplementowana dla platformy Linux.
+Prosimy o pobranie najnowszej wersji ze strony internetowej: www.secondlife.com.
+	</string>
+	<string name="MBRegClassFailed">
+		błąd rejestru
+	</string>
+	<string name="MBError">
+		Błąd
+	</string>
+	<string name="MBFullScreenErr">
+		Niemożliwość uruchomienia trybu pełnoekranowego w proporcji [WIDTH] x [HEIGHT].
+Uruchomione w oknie.
+	</string>
+	<string name="MBDestroyWinFailed">
+		Błąd w próbie wyłączenia podczas zamykania okna (DestroyWindow() failed)
+	</string>
+	<string name="MBShutdownErr">
+		Błąd w próbie wyłączenia
+	</string>
+	<string name="MBDevContextErr">
+		Brak możliwości stworzenia zawartości GL dla sterownika
+	</string>
+	<string name="MBPixelFmtErr">
+		Brak odnalezienia właściwego formatu pikselowego
+	</string>
+	<string name="MBPixelFmtDescErr">
+		Brak otrzymania formatu pikselowego opisu
+	</string>
+	<string name="MBTrueColorWindow">
+		Aplikacja [APP_NAME] wymaga ustawienia Koloru na (32-bit) do uruchomienia.
+Sprawdź swoje ustawienia dla wyświetlacza i ustaw tryb koloru na 32-bity.
+	</string>
+	<string name="MBAlpha">
+		Aplikacja [APP_NAME] nie może zostać uruchomiona z powodu niemożliwości dostania się na kanał 8 bitowy alpha. Najcześciej jest to spowodowane błędami sterowników karty video.
+Upewnij się, że posiadasz najnowsze aktualizacje sterowników karty video.
+Dodatkowo, sprawdź czy Twój monitor posiada poprawną konfigurację koloru (32-bity) w Panelu Kontroli &gt; Display &gt; Ustawienia.
+Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
+	</string>
+	<string name="MBPixelFmtSetErr">
+		Brak ustawienie formatu pikselowego
+	</string>
+	<string name="MBGLContextErr">
+		Brak możliwości stworzenia renderowania zawartości GL
+	</string>
+	<string name="MBGLContextActErr">
+		Brak aktywacji renderowania zawartości GL
+	</string>
+	<string name="MBVideoDrvErr">
+		Aplikacja [APP_NAME] nie może zostać uruchomiona, ponieważ Twoja karta video jest niepoprawnie zainstalowana, nieaktualizowana lub przeznaczona jest dla innego rodzaju dysków twardych. Upewnij się, że Twoja karta video została zaktualizowana poprawnie lub spróbuj zainstalować ponownie.
+
+Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
+	</string>
+	<string name="5 O&apos;Clock Shadow">
+		Cień o godzinie 5
+	</string>
+	<string name="All White">
+		Wszystko Białe
+	</string>
+	<string name="Anime Eyes">
+		Animuj Oczy
+	</string>
+	<string name="Arced">
+		Obrócony
+	</string>
+	<string name="Arm Length">
+		Długość Ramienia
+	</string>
+	<string name="Attached">
+		Dołączone
+	</string>
+	<string name="Attached Earlobes">
+		Płatki Uszu Dołączone
+	</string>
+	<string name="Back Bangs">
+		Tylnie Pasemka
+	</string>
+	<string name="Back Bangs Down">
+		Tylnie Pasemka w Dół
+	</string>
+	<string name="Back Bangs Up">
+		Tylnie Pasemka do Góry
+	</string>
+	<string name="Back Fringe">
+		Tylnia Grzywka
+	</string>
+	<string name="Back Hair">
+		Back Hair
+	</string>
+	<string name="Back Hair Down">
+		Back Hair Down
+	</string>
+	<string name="Back Hair Up">
+		Back Hair Up
+	</string>
+	<string name="Baggy">
+		Wypchane
+	</string>
+	<string name="Bangs">
+		Pasemka
+	</string>
+	<string name="Bangs Down">
+		Pasemka w Dół
+	</string>
+	<string name="Bangs Up">
+		Pasemka do Góry
+	</string>
+	<string name="Beady Eyes">
+		Oczy Załzawione
+	</string>
+	<string name="Belly Size">
+		Rozmiar Brzucha
+	</string>
+	<string name="Big">
+		Duży
+	</string>
+	<string name="Big Butt">
+		Duży Pośladek
+	</string>
+	<string name="Big Eyeball">
+		Duża Gałka Oczna
+	</string>
+	<string name="Big Hair Back">
+		Duże Włosy: z Tyłu
+	</string>
+	<string name="Big Hair Front">
+		Duże Włosy: z Przodu
+	</string>
+	<string name="Big Hair Top">
+		Duże Włosy: z Góry
+	</string>
+	<string name="Big Head">
+		Duża Głowa
+	</string>
+	<string name="Big Pectorals">
+		Duże Mięśnie Piersiowe
+	</string>
+	<string name="Big Spikes">
+		Duże Kolce
+	</string>
+	<string name="Black">
+		Czarne
+	</string>
+	<string name="Blonde">
+		Blond
+	</string>
+	<string name="Blonde Hair">
+		Włosy Koloru Blond
+	</string>
+	<string name="Blush">
+		Rumieniec
+	</string>
+	<string name="Blush Color">
+		Kolor Rumieńca
+	</string>
+	<string name="Blush Opacity">
+		Intensywność Rumieńca
+	</string>
+	<string name="Body Definition">
+		Detale Ciała
+	</string>
+	<string name="Body Fat">
+		Zawartość Tkanki Tłuszczowej
+	</string>
+	<string name="Body Freckles">
+		Piegi
+	</string>
+	<string name="Body Thick">
+		Zagęszczenie Ciała
+	</string>
+	<string name="Body Thickness">
+		Grubość Ciała
+	</string>
+	<string name="Body Thin">
+		Szczupłość
+	</string>
+	<string name="Bow Legged">
+		Bow Legged
+	</string>
+	<string name="Breast Buoyancy">
+		Jędrność Piersi
+	</string>
+	<string name="Breast Cleavage">
+		Odstęp Między Piersiami
+	</string>
+	<string name="Breast Size">
+		Rozmiar Piersi
+	</string>
+	<string name="Bridge Width">
+		Szerokość
+	</string>
+	<string name="Broad">
+		Szerokie
+	</string>
+	<string name="Brow Size">
+		Rozmiar Czoła
+	</string>
+	<string name="Bug Eyes">
+		Bug Eyes
+	</string>
+	<string name="Bugged Eyes">
+		Bugged Eyes
+	</string>
+	<string name="Bulbous">
+		Bulwiasty
+	</string>
+	<string name="Bulbous Nose">
+		Bulwiasty Nos
+	</string>
+	<string name="Bushy Eyebrows">
+		Bujne Brwi
+	</string>
+	<string name="Bushy Hair">
+		Bujne Włosy
+	</string>
+	<string name="Butt Size">
+		Rozmiar Pośladków
+	</string>
+	<string name="bustle skirt">
+		Bustle Skirt
+	</string>
+	<string name="no bustle">
+		No Bustle
+	</string>
+	<string name="more bustle">
+		More Bustle
+	</string>
+	<string name="Chaplin">
+		Chaplin
+	</string>
+	<string name="Cheek Bones">
+		Kości Policzkowe
+	</string>
+	<string name="Chest Size">
+		Rozmiar Klatki Piersiowej
+	</string>
+	<string name="Chin Angle">
+		Kąt Podbródka
+	</string>
+	<string name="Chin Cleft">
+		Dołek w Podbródku
+	</string>
+	<string name="Chin Curtains">
+		Zasłonięcie Podbródka
+	</string>
+	<string name="Chin Depth">
+		Długość Podbródka
+	</string>
+	<string name="Chin Heavy">
+		Ciężar Podbródka
+	</string>
+	<string name="Chin In">
+		Podbródek Wewnątrz
+	</string>
+	<string name="Chin Out">
+		Podbródek Zewnętrzny
+	</string>
+	<string name="Chin-Neck">
+		Podwójny Podbródek
+	</string>
+	<string name="Clear">
+		Wyczyść
+	</string>
+	<string name="Cleft">
+		Rozszczepienie
+	</string>
+	<string name="Close Set Eyes">
+		Close Set Eyes
+	</string>
+	<string name="Closed">
+		Zamknięte
+	</string>
+	<string name="Closed Back">
+		Zamknięte z Tyłu
+	</string>
+	<string name="Closed Front">
+		Zamknięte z Przodu
+	</string>
+	<string name="Closed Left">
+		Lewe Oko Zamknięte
+	</string>
+	<string name="Closed Right">
+		Prawe Oko Zamknięte
+	</string>
+	<string name="Coin Purse">
+		Coin Purse
+	</string>
+	<string name="Collar Back">
+		Kołnierz z Tyłu
+	</string>
+	<string name="Collar Front">
+		Kołnierz z Przodu
+	</string>
+	<string name="Corner Down">
+		Corner Down
+	</string>
+	<string name="Corner Normal">
+		Corner Normal
+	</string>
+	<string name="Corner Up">
+		Corner Up
+	</string>
+	<string name="Creased">
+		Pognieciony
+	</string>
+	<string name="Crooked Nose">
+		Skrzywienie Nosa
+	</string>
+	<string name="Cropped Hair">
+		Przycięte Włosy
+	</string>
+	<string name="Cuff Flare">
+		Cuff Flare
+	</string>
+	<string name="Dark">
+		Ciemne
+	</string>
+	<string name="Dark Green">
+		Ciemne Zielone
+	</string>
+	<string name="Darker">
+		Ciemniejsze
+	</string>
+	<string name="Deep">
+		Glębokie
+	</string>
+	<string name="Default Heels">
+		Domyślne Buty na Obcasie
+	</string>
+	<string name="Default Toe">
+		Domyślny Palec
+	</string>
+	<string name="Dense">
+		Gęstość
+	</string>
+	<string name="Dense hair">
+		Gęste Włosy
+	</string>
+	<string name="Double Chin">
+		Podwójny Podbródek
+	</string>
+	<string name="Downturned">
+		Downturned
+	</string>
+	<string name="Duffle Bag">
+		Duffle Bag
+	</string>
+	<string name="Ear Angle">
+		Odstawanie Uszu
+	</string>
+	<string name="Ear Size">
+		Rozmiar Uszu
+	</string>
+	<string name="Ear Tips">
+		Wierzchołki Uszu
+	</string>
+	<string name="Egg Head">
+		Jajowata Głowa
+	</string>
+	<string name="Eye Bags">
+		Woreczek Łzowy
+	</string>
+	<string name="Eye Color">
+		Kolor Oczu
+	</string>
+	<string name="Eye Depth">
+		Głębokość Osadzenia Oczu
+	</string>
+	<string name="Eye Lightness">
+		Ustawienie Jasności Oczu
+	</string>
+	<string name="Eye Opening">
+		Oczy Otwarte
+	</string>
+	<string name="Eye Pop">
+		Różnica w Wielkości Oczu
+	</string>
+	<string name="Eye Size">
+		Rozmiar Oczu
+	</string>
+	<string name="Eye Spacing">
+		Rozstaw Oczu
+	</string>
+	<string name="Eyeball Size">
+		Wielkość Gałki Ocznej
+	</string>
+	<string name="Eyebrow Arc">
+		Łuk Brwiowy
+	</string>
+	<string name="Eyebrow Density">
+		Gęstość Brwi
+	</string>
+	<string name="Eyebrow Height">
+		Wysokość Brwi
+	</string>
+	<string name="Eyebrow Points">
+		Kształt Brwi
+	</string>
+	<string name="Eyebrow Size">
+		Rozmiar Brwi
+	</string>
+	<string name="Eyelash Length">
+		Długość Rzęs
+	</string>
+	<string name="Eyeliner">
+		Eyeliner
+	</string>
+	<string name="Eyeliner Color">
+		Kolor Eyeliner&apos;a
+	</string>
+	<string name="Eyes Back">
+		Eyes Back
+	</string>
+	<string name="Eyes Bugged">
+		Eyes Bugged
+	</string>
+	<string name="Eyes Forward">
+		Eyes Forward
+	</string>
+	<string name="Eyes Long Head">
+		Eyes Long Head
+	</string>
+	<string name="Eyes Shear Left Up">
+		Eyes Shear Left Up
+	</string>
+	<string name="Eyes Shear Right Up">
+		Eyes Shear Right Up
+	</string>
+	<string name="Eyes Short Head">
+		Eyes Short Head
+	</string>
+	<string name="Eyes Spread">
+		Rozmieszczenie Oczu
+	</string>
+	<string name="Eyes Sunken">
+		Eyes Sunken
+	</string>
+	<string name="Eyes Together">
+		Oczy Razem
+	</string>
+	<string name="Face Shear">
+		Usunięcie Twarzy
+	</string>
+	<string name="Facial Definition">
+		Detale Twarzy
+	</string>
+	<string name="Far Set Eyes">
+		Far Set Eyes
+	</string>
+	<string name="Fat">
+		Grubość
+	</string>
+	<string name="Fat Head">
+		Gruba Głowa
+	</string>
+	<string name="Fat Lips">
+		Grube Usta
+	</string>
+	<string name="Fat Lower">
+		Fat Lower
+	</string>
+	<string name="Fat Lower Lip">
+		Fat Lower Lip
+	</string>
+	<string name="Fat Torso">
+		Gruby Tułów
+	</string>
+	<string name="Fat Upper">
+		Fat Upper
+	</string>
+	<string name="Fat Upper Lip">
+		Fat Upper Lip
+	</string>
+	<string name="Female">
+		Kobieta
+	</string>
+	<string name="Fingerless">
+		Fingerless
+	</string>
+	<string name="Fingers">
+		Palce
+	</string>
+	<string name="Flared Cuffs">
+		Flared Cuffs
+	</string>
+	<string name="Flat">
+		Płaskość
+	</string>
+	<string name="Flat Butt">
+		Płaskie Pośladki
+	</string>
+	<string name="Flat Head">
+		Płaska Głowa
+	</string>
+	<string name="Flat Toe">
+		Płaski Palec
+	</string>
+	<string name="Foot Size">
+		Rozmiar Stopy
+	</string>
+	<string name="Forehead Angle">
+		Kształt Czoła
+	</string>
+	<string name="Forehead Heavy">
+		Ciężar Czoła
+	</string>
+	<string name="Freckles">
+		Piegi
+	</string>
+	<string name="Front Bangs Down">
+		Przednie Pasemka w Dół
+	</string>
+	<string name="Front Bangs Up">
+		Przednie Pasemka do Góry
+	</string>
+	<string name="Front Fringe">
+		Przednia Grzywka
+	</string>
+	<string name="Front Hair">
+		Front Hair
+	</string>
+	<string name="Front Hair Down">
+		Front Hair Down
+	</string>
+	<string name="Front Hair Up">
+		Przednie Włosy do Góry
+	</string>
+	<string name="Full Back">
+		Gęstość Włosów po Bokach
+	</string>
+	<string name="Full Eyeliner">
+		Gęsty Eyeliner
+	</string>
+	<string name="Full Front">
+		Gęsty Przód
+	</string>
+	<string name="Full Hair Sides">
+		Gęste Włosy po Bokach
+	</string>
+	<string name="Full Sides">
+		Gęste Boki
+	</string>
+	<string name="Glossy">
+		Błyszczące
+	</string>
+	<string name="Glove Fingers">
+		Rękawiczki
+	</string>
+	<string name="Glove Length">
+		Długość Rękawiczek
+	</string>
+	<string name="Hair">
+		Włosy
+	</string>
+	<string name="Hair Back">
+		Włosy: z Tyłu
+	</string>
+	<string name="Hair Front">
+		Włosy: z Przodu
+	</string>
+	<string name="Hair Sides">
+		Hair: Boki
+	</string>
+	<string name="Hair Sweep">
+		Kierunek Zaczesania
+	</string>
+	<string name="Hair Thickess">
+		Grubość Włosów
+	</string>
+	<string name="Hair Thickness">
+		Grubość Włosów
+	</string>
+	<string name="Hair Tilt">
+		Przesunięcie Fryzury
+	</string>
+	<string name="Hair Tilted Left">
+		Przesunięcie Fryzury w Lewo
+	</string>
+	<string name="Hair Tilted Right">
+		Przesunięcie Fryzury w Prawo
+	</string>
+	<string name="Hair Volume">
+		Włosy: Objętość
+	</string>
+	<string name="Hand Size">
+		Rozmiar Dłoni
+	</string>
+	<string name="Handlebars">
+		Handlebars
+	</string>
+	<string name="Head Length">
+		Długość Głowy
+	</string>
+	<string name="Head Shape">
+		Kształt Głowy
+	</string>
+	<string name="Head Size">
+		Rozmiar Głowy
+	</string>
+	<string name="Head Stretch">
+		Rozciągnięcie Głowy
+	</string>
+	<string name="Heel Height">
+		Wysokość Obcasa
+	</string>
+	<string name="Heel Shape">
+		Ksztalt Obcasa
+	</string>
+	<string name="Height">
+		Wysokość
+	</string>
+	<string name="High">
+		Wysoka
+	</string>
+	<string name="High Heels">
+		Wysokie Obcasy
+	</string>
+	<string name="High Jaw">
+		High Jaw
+	</string>
+	<string name="High Platforms">
+		High Platforms
+	</string>
+	<string name="High and Tight">
+		High and Tight
+	</string>
+	<string name="Higher">
+		Wyżej
+	</string>
+	<string name="Hip Length">
+		Długość Bioder
+	</string>
+	<string name="Hip Width">
+		Szerokość Bioder
+	</string>
+	<string name="In">
+		W
+	</string>
+	<string name="In Shdw Color">
+		Wewnętrzny Kolor Cienia
+	</string>
+	<string name="In Shdw Opacity">
+		Wewnętrzna Intensywność Cienia
+	</string>
+	<string name="Inner Eye Corner">
+		Wenwętrzny Bok Oka
+	</string>
+	<string name="Inner Eye Shadow">
+		Wewnętrzny Cień Oka
+	</string>
+	<string name="Inner Shadow">
+		Wewnętrzny Cień
+	</string>
+	<string name="Jacket Length">
+		Długość Kurtki
+	</string>
+	<string name="Jacket Wrinkles">
+		Zmarszczki na Kurtce
+	</string>
+	<string name="Jaw Angle">
+		Jaw Angle
+	</string>
+	<string name="Jaw Jut">
+		Jaw Jut
+	</string>
+	<string name="Jaw Shape">
+		Jaw Shape
+	</string>
+	<string name="Join">
+		Złącz
+	</string>
+	<string name="Jowls">
+		Jowls
+	</string>
+	<string name="Knee Angle">
+		KÄ…t Kolana
+	</string>
+	<string name="Knock Kneed">
+		Knock Kneed
+	</string>
+	<string name="Large">
+		Duże
+	</string>
+	<string name="Large Hands">
+		Duże Dłonie
+	</string>
+	<string name="Left Part">
+		Left Part
+	</string>
+	<string name="Leg Length">
+		Długość Nogi
+	</string>
+	<string name="Leg Muscles">
+		Umięśnione Nogi
+	</string>
+	<string name="Less">
+		Mniej
+	</string>
+	<string name="Less Body Fat">
+		Mniejsza Zawartości Tkanki Tłuszczowej
+	</string>
+	<string name="Less Curtains">
+		Less Curtains
+	</string>
+	<string name="Less Freckles">
+		Mniej Piegów
+	</string>
+	<string name="Less Full">
+		Less Full
+	</string>
+	<string name="Less Gravity">
+		Mniej Ciężaru
+	</string>
+	<string name="Less Love">
+		Less Love
+	</string>
+	<string name="Less Muscles">
+		Mniej Mięśni
+	</string>
+	<string name="Less Muscular">
+		Mniej Umięśnienia
+	</string>
+	<string name="Less Rosy">
+		Less Rosy
+	</string>
+	<string name="Less Round">
+		Mniej ZaaokrÄ…glone
+	</string>
+	<string name="Less Saddle">
+		Less Saddle
+	</string>
+	<string name="Less Square">
+		Mniej Kwadratowe
+	</string>
+	<string name="Less Volume">
+		Mniej Objętości
+	</string>
+	<string name="Less soul">
+		Less soul
+	</string>
+	<string name="Lighter">
+		Lżejsze
+	</string>
+	<string name="Lip Cleft">
+		Szerokość Rozszczepienia Górnej Wargi
+	</string>
+	<string name="Lip Cleft Depth">
+		Głębokość Rozszczepienia Górnej Wargi
+	</string>
+	<string name="Lip Fullness">
+		Pełność Ust
+	</string>
+	<string name="Lip Pinkness">
+		Róż Ust
+	</string>
+	<string name="Lip Ratio">
+		Proporcje Ust
+	</string>
+	<string name="Lip Thickness">
+		Grubość Ust
+	</string>
+	<string name="Lip Width">
+		Szerokość Ust
+	</string>
+	<string name="Lipgloss">
+		Połysk
+	</string>
+	<string name="Lipstick">
+		Szminka
+	</string>
+	<string name="Lipstick Color">
+		Kolor Szminki
+	</string>
+	<string name="Long">
+		Dlugość
+	</string>
+	<string name="Long Head">
+		Długa Głowa
+	</string>
+	<string name="Long Hips">
+		Długie Biodra
+	</string>
+	<string name="Long Legs">
+		Długie Nogi
+	</string>
+	<string name="Long Neck">
+		Długi Kark
+	</string>
+	<string name="Long Pigtails">
+		Długi Warkocz
+	</string>
+	<string name="Long Ponytail">
+		Długi Kucyk
+	</string>
+	<string name="Long Torso">
+		Długi Tułów
+	</string>
+	<string name="Long arms">
+		Dlugie Ramiona
+	</string>
+	<string name="Longcuffs">
+		Długie Rękawy
+	</string>
+	<string name="Loose Pants">
+		Luźne Spodnie
+	</string>
+	<string name="Loose Shirt">
+		Luźna Koszulka
+	</string>
+	<string name="Loose Sleeves">
+		Luźne Rękawy
+	</string>
+	<string name="Love Handles">
+		Love Handles
+	</string>
+	<string name="Low">
+		Nisko
+	</string>
+	<string name="Low Heels">
+		Niskie Obcasy
+	</string>
+	<string name="Low Jaw">
+		Niska Szczęka
+	</string>
+	<string name="Low Platforms">
+		Low Platforms
+	</string>
+	<string name="Low and Loose">
+		Niskie i Luźne
+	</string>
+	<string name="Lower">
+		Niżej
+	</string>
+	<string name="Lower Bridge">
+		Lower Bridge
+	</string>
+	<string name="Lower Cheeks">
+		Lower Cheeks
+	</string>
+	<string name="Male">
+		Mężczyzna
+	</string>
+	<string name="Middle Part">
+		Część Środkowa
+	</string>
+	<string name="More">
+		Więcej
+	</string>
+	<string name="More Blush">
+		More Blush
+	</string>
+	<string name="More Body Fat">
+		Więcej Zawartości Tkanki Tłuszczowej
+	</string>
+	<string name="More Curtains">
+		More Curtains
+	</string>
+	<string name="More Eyeshadow">
+		More Eyeshadow
+	</string>
+	<string name="More Freckles">
+		Więcej Piegów
+	</string>
+	<string name="More Full">
+		More Full
+	</string>
+	<string name="More Gravity">
+		Więcej Ciężaru
+	</string>
+	<string name="More Lipstick">
+		Więcej Szminki
+	</string>
+	<string name="More Love">
+		More Love
+	</string>
+	<string name="More Lower Lip">
+		Więcej Dolnej Wargi
+	</string>
+	<string name="More Muscles">
+		Więcej Mięśni
+	</string>
+	<string name="More Muscular">
+		Więcej Umięśnienia
+	</string>
+	<string name="More Rosy">
+		More Rosy
+	</string>
+	<string name="More Round">
+		Więcej Zaokrąglenia
+	</string>
+	<string name="More Saddle">
+		More Saddle
+	</string>
+	<string name="More Sloped">
+		More Sloped
+	</string>
+	<string name="More Square">
+		Więcej Kwadratowy
+	</string>
+	<string name="More Upper Lip">
+		Więcej Górnej Wargi
+	</string>
+	<string name="More Vertical">
+		More Vertical
+	</string>
+	<string name="More Volume">
+		Więcej Objętości
+	</string>
+	<string name="More soul">
+		More soul
+	</string>
+	<string name="Moustache">
+		WÄ…sy
+	</string>
+	<string name="Mouth Corner">
+		KÄ…ciki Ust
+	</string>
+	<string name="Mouth Position">
+		Pozycja Ust
+	</string>
+	<string name="Mowhawk">
+		Mowhawk
+	</string>
+	<string name="Muscular">
+		Umięśnienie
+	</string>
+	<string name="Mutton Chops">
+		Mutton Chops
+	</string>
+	<string name="Nail Polish">
+		Lakier na Paznokciach
+	</string>
+	<string name="Nail Polish Color">
+		Kolor Lakieru na Paznokciach
+	</string>
+	<string name="Narrow">
+		WÄ…skie
+	</string>
+	<string name="Narrow Back">
+		Wąski Tył
+	</string>
+	<string name="Narrow Front">
+		Wąski Przód
+	</string>
+	<string name="Narrow Lips">
+		WÄ…skie Usta
+	</string>
+	<string name="Natural">
+		Naturalne
+	</string>
+	<string name="Neck Length">
+		Długość Karku
+	</string>
+	<string name="Neck Thickness">
+		Grubość Karku
+	</string>
+	<string name="No Blush">
+		No Blush
+	</string>
+	<string name="No Eyeliner">
+		Brak Eyeliner&apos;s
+	</string>
+	<string name="No Eyeshadow">
+		Brak Cienia pod PowiekÄ…
+	</string>
+	<string name="No Heels">
+		Brak Obcasów
+	</string>
+	<string name="No Lipgloss">
+		Brak Połysku
+	</string>
+	<string name="No Lipstick">
+		Brak Szminki
+	</string>
+	<string name="No Part">
+		No Part
+	</string>
+	<string name="No Polish">
+		Brak Lakieru
+	</string>
+	<string name="No Red">
+		Brak Czerwieni
+	</string>
+	<string name="No Spikes">
+		Brak Szpiców
+	</string>
+	<string name="No White">
+		Brak Białego
+	</string>
+	<string name="No Wrinkles">
+		Brak Zmarszczek
+	</string>
+	<string name="Normal Lower">
+		Dół Normalny
+	</string>
+	<string name="Normal Upper">
+		Góra Normalna
+	</string>
+	<string name="Nose Left">
+		Nos w StronÄ™ LewÄ…
+	</string>
+	<string name="Nose Right">
+		Nos w StronÄ™ PrawÄ…
+	</string>
+	<string name="Nose Size">
+		Rozmiar Nosa
+	</string>
+	<string name="Nose Thickness">
+		Grubość Nosa
+	</string>
+	<string name="Nose Tip Angle">
+		KÄ…t Czubka Nosa
+	</string>
+	<string name="Nose Tip Shape">
+		Kształt Czubka Nosa
+	</string>
+	<string name="Nose Width">
+		Szerokość Nosa
+	</string>
+	<string name="Nostril Division">
+		Przegroda Nosa
+	</string>
+	<string name="Nostril Width">
+		Wielkość Dziurek w Nosie
+	</string>
+	<string name="Old">
+		Stare
+	</string>
+	<string name="Opaque">
+		Intensywność
+	</string>
+	<string name="Open">
+		Otwarte
+	</string>
+	<string name="Open Back">
+		Otwarte z Tyłu
+	</string>
+	<string name="Open Front">
+		Otwarte z Przodu
+	</string>
+	<string name="Open Left">
+		Otwarte z Lewej
+	</string>
+	<string name="Open Right">
+		Otwarte z Prawej
+	</string>
+	<string name="Orange">
+		Pomarańczowe
+	</string>
+	<string name="Out">
+		Zewnętrznie
+	</string>
+	<string name="Out Shdw Color">
+		Zewnętrzny Kolor Cienia
+	</string>
+	<string name="Out Shdw Opacity">
+		Zewnętrzna Grubość Cienia
+	</string>
+	<string name="Outer Eye Corner">
+		Zewnętrzny Bok Oka
+	</string>
+	<string name="Outer Eye Shadow">
+		Zewnętrzny Cień Oka
+	</string>
+	<string name="Outer Shadow">
+		Zewnętrzny Cień
+	</string>
+	<string name="Overbite">
+		Overbite
+	</string>
+	<string name="Package">
+		Package
+	</string>
+	<string name="Painted Nails">
+		Pomalowane Paznokcie
+	</string>
+	<string name="Pale">
+		Pale
+	</string>
+	<string name="Pants Crotch">
+		Krocze Spodni
+	</string>
+	<string name="Pants Fit">
+		Pants Fit
+	</string>
+	<string name="Pants Length">
+		Długość Spodni
+	</string>
+	<string name="Pants Waist">
+		Talia Spodni
+	</string>
+	<string name="Pants Wrinkles">
+		Zmarszczki Spodni
+	</string>
+	<string name="Part">
+		Część
+	</string>
+	<string name="Part Bangs">
+		Part Bangs
+	</string>
+	<string name="Pectorals">
+		Mięśnie Klatki Piersiowej
+	</string>
+	<string name="Pigment">
+		Pigment
+	</string>
+	<string name="Pigtails">
+		Pigtails
+	</string>
+	<string name="Pink">
+		Różowe
+	</string>
+	<string name="Pinker">
+		Róż
+	</string>
+	<string name="Platform Height">
+		Platform Height
+	</string>
+	<string name="Platform Width">
+		Platform Width
+	</string>
+	<string name="Pointy">
+		Pointy
+	</string>
+	<string name="Pointy Heels">
+		Pointy Heels
+	</string>
+	<string name="Pointy Toe">
+		Pointy Toe
+	</string>
+	<string name="Ponytail">
+		Kucyk
+	</string>
+	<string name="Poofy Skirt">
+		Poofy Skirt
+	</string>
+	<string name="Pop Left Eye">
+		Pop Left Eye
+	</string>
+	<string name="Pop Right Eye">
+		Pop Right Eye
+	</string>
+	<string name="Puffy">
+		Puffy
+	</string>
+	<string name="Puffy Eyelids">
+		Spuchnięte Powieki
+	</string>
+	<string name="Rainbow Color">
+		Kolor Tęczy
+	</string>
+	<string name="Red Hair">
+		Czerwone Włosy
+	</string>
+	<string name="Red Skin">
+		Czerwona Skóra
+	</string>
+	<string name="Regular">
+		Regularne
+	</string>
+	<string name="Regular Muscles">
+		Regularne Mięśnie
+	</string>
+	<string name="Right Part">
+		Prawa Cześć
+	</string>
+	<string name="Rosy Complexion">
+		Kompleksowość Różu
+	</string>
+	<string name="Round">
+		ZaokrÄ…glenie
+	</string>
+	<string name="Round Forehead">
+		ZaokrÄ…glenie na Czole
+	</string>
+	<string name="Ruddiness">
+		Rudowatość
+	</string>
+	<string name="Ruddy">
+		Rudy
+	</string>
+	<string name="Rumpled Hair">
+		Włosy w Nieładzie
+	</string>
+	<string name="Saddle Bags">
+		Saddle Bags
+	</string>
+	<string name="Saddlebags">
+		Saddlebags
+	</string>
+	<string name="Scrawny">
+		Scrawny
+	</string>
+	<string name="Scrawny Leg">
+		Scrawny Leg
+	</string>
+	<string name="Separate">
+		Odzielne
+	</string>
+	<string name="Shading">
+		Cieniowanie
+	</string>
+	<string name="Shadow hair">
+		Cieniowane Włosy
+	</string>
+	<string name="Shallow">
+		Płytkie
+	</string>
+	<string name="Shear Back">
+		Tylne Usunięcie Włosów
+	</string>
+	<string name="Shear Face">
+		Usunięcie Twarzy
+	</string>
+	<string name="Shear Front">
+		Przednie Usunięcie Włosów
+	</string>
+	<string name="Shear Left">
+		Usunięcie z Lewej Strony
+	</string>
+	<string name="Shear Left Up">
+		Usunięcie od Lewej Strony do Góry
+	</string>
+	<string name="Shear Right">
+		Usunięcie z Prawej Strony
+	</string>
+	<string name="Shear Right Up">
+		Usunięcie od Prawej Strony do Góry
+	</string>
+	<string name="Sheared Back">
+		Tylnie Usunięcie Włosów
+	</string>
+	<string name="Sheared Front">
+		Przednie Usunięcie Włosów
+	</string>
+	<string name="Shift Left">
+		Przesuń w Lewo
+	</string>
+	<string name="Shift Mouth">
+		Przesuń Usta
+	</string>
+	<string name="Shift Right">
+		Przesuń w Prawo
+	</string>
+	<string name="Shirt Bottom">
+		Dolna Część Koszulki
+	</string>
+	<string name="Shirt Fit">
+		Shirt Fit
+	</string>
+	<string name="Shirt Wrinkles">
+		Zmarszczki na Koszulce
+	</string>
+	<string name="Shoe Height">
+		Wysokość Buta
+	</string>
+	<string name="Short">
+		Krótkie
+	</string>
+	<string name="Short Arms">
+		Krótkie Ramiona
+	</string>
+	<string name="Short Legs">
+		Krótkie Nogi
+	</string>
+	<string name="Short Neck">
+		Krótki Kark
+	</string>
+	<string name="Short Pigtails">
+		Short Pigtails
+	</string>
+	<string name="Short Ponytail">
+		Krótki Kucyk
+	</string>
+	<string name="Short Sideburns">
+		Krótkie Baczki
+	</string>
+	<string name="Short Torso">
+		Krótki Tułów
+	</string>
+	<string name="Short hips">
+		Krótkie Biodra
+	</string>
+	<string name="Shoulders">
+		Ramiona
+	</string>
+	<string name="Side Bangs">
+		Boczne Pasemka
+	</string>
+	<string name="Side Bangs Down">
+		Boczne Pasemka w Dół
+	</string>
+	<string name="Side Bangs Up">
+		Boczne Pasemka do Góry
+	</string>
+	<string name="Side Fringe">
+		Boczna Grzywka
+	</string>
+	<string name="Sideburns">
+		Baczki
+	</string>
+	<string name="Sides Hair">
+		Boczne Włosy
+	</string>
+	<string name="Sides Hair Down">
+		Boczne Włosy w Dół
+	</string>
+	<string name="Sides Hair Up">
+		Boczne Włosy do Góry
+	</string>
+	<string name="Skinny">
+		Smukłość
+	</string>
+	<string name="Skinny Neck">
+		Smukły Kark
+	</string>
+	<string name="Skirt Fit">
+		Skirt Fit
+	</string>
+	<string name="Skirt Length">
+		Długość Spódnicy
+	</string>
+	<string name="Slanted Forehead">
+		Ukośne Czoło
+	</string>
+	<string name="Sleeve Length">
+		Długość Rękawów
+	</string>
+	<string name="Sleeve Looseness">
+		Luźność Rękawów
+	</string>
+	<string name="Slit Back">
+		Slit: Back
+	</string>
+	<string name="Slit Front">
+		Slit: Front
+	</string>
+	<string name="Slit Left">
+		Slit: Left
+	</string>
+	<string name="Slit Right">
+		Slit: Right
+	</string>
+	<string name="Small">
+		Małe
+	</string>
+	<string name="Small Hands">
+		Małe Dłonie
+	</string>
+	<string name="Small Head">
+		Mała Głowa
+	</string>
+	<string name="Smooth">
+		Gładkie
+	</string>
+	<string name="Smooth Hair">
+		Gładkie Włosy
+	</string>
+	<string name="Socks Length">
+		Długość Skarpetek
+	</string>
+	<string name="Some">
+		Some
+	</string>
+	<string name="Soulpatch">
+		Soulpatch
+	</string>
+	<string name="Sparse">
+		Sparse
+	</string>
+	<string name="Spiked Hair">
+		Kolczaste Włosy
+	</string>
+	<string name="Square">
+		Kwadratowe
+	</string>
+	<string name="Square Toe">
+		Kwadratowy Palec
+	</string>
+	<string name="Squash Head">
+		Ściśnięta Głowa
+	</string>
+	<string name="Squash/Stretch Head">
+		Ściśnięta/Rozciągnięta Głowa
+	</string>
+	<string name="Stretch Head">
+		Rozciągnięta Głowa
+	</string>
+	<string name="Sunken">
+		Sunken
+	</string>
+	<string name="Sunken Chest">
+		Sunken Chest
+	</string>
+	<string name="Sunken Eyes">
+		Sunken Eyes
+	</string>
+	<string name="Sweep Back">
+		Sweep Back
+	</string>
+	<string name="Sweep Forward">
+		Sweep Forward
+	</string>
+	<string name="Swept Back">
+		Swept Back
+	</string>
+	<string name="Swept Back Hair">
+		Swept Back Hair
+	</string>
+	<string name="Swept Forward">
+		Swept Forward
+	</string>
+	<string name="Swept Forward Hair">
+		Swept Forward Hair
+	</string>
+	<string name="Tall">
+		Wysokość
+	</string>
+	<string name="Taper Back">
+		Taper Back
+	</string>
+	<string name="Taper Front">
+		Taper Front
+	</string>
+	<string name="Thick Heels">
+		Grube Obcasy
+	</string>
+	<string name="Thick Neck">
+		Gruby Kark
+	</string>
+	<string name="Thick Toe">
+		Gruby Palec
+	</string>
+	<string name="Thickness">
+		Grubość
+	</string>
+	<string name="Thin">
+		WÄ…ski
+	</string>
+	<string name="Thin Eyebrows">
+		WÄ…skie Brwi
+	</string>
+	<string name="Thin Lips">
+		WÄ…skie Usta
+	</string>
+	<string name="Thin Nose">
+		WÄ…ski Nos
+	</string>
+	<string name="Tight Chin">
+		Obcisły Podbródek
+	</string>
+	<string name="Tight Cuffs">
+		Obcisłe Rękawy
+	</string>
+	<string name="Tight Pants">
+		Obciesłe Spodnie
+	</string>
+	<string name="Tight Shirt">
+		Obcisły Podkoszulek
+	</string>
+	<string name="Tight Skirt">
+		Tight Skirt
+	</string>
+	<string name="Tight Sleeves">
+		Obcisłe Rękawy
+	</string>
+	<string name="Tilt Left">
+		Przesuń w Lewo
+	</string>
+	<string name="Tilt Right">
+		Przesuń w Prawo
+	</string>
+	<string name="Toe Shape">
+		Kształt Palca
+	</string>
+	<string name="Toe Thickness">
+		Grubość Palca
+	</string>
+	<string name="Torso Length">
+		Długość Tułowia
+	</string>
+	<string name="Torso Muscles">
+		Mięśnie Tułowia
+	</string>
+	<string name="Torso Scrawny">
+		Wychudzony Tułów
+	</string>
+	<string name="Unattached">
+		Nieprzyłączone
+	</string>
+	<string name="Uncreased">
+		Uncreased
+	</string>
+	<string name="Underbite">
+		Underbite
+	</string>
+	<string name="Unnatural">
+		Nienaturalne
+	</string>
+	<string name="Upper Bridge">
+		Górny Mostek
+	</string>
+	<string name="Upper Cheeks">
+		Górne Policzki
+	</string>
+	<string name="Upper Chin Cleft">
+		Roszczepienie Górnego Podbródka
+	</string>
+	<string name="Upper Eyelid Fold">
+		Górna Powieka
+	</string>
+	<string name="Upturned">
+		Zadarta
+	</string>
+	<string name="Very Red">
+		Bardzo Czerwona
+	</string>
+	<string name="Waist Height">
+		Wysokość Tali
+	</string>
+	<string name="Well-Fed">
+		Well-Fed
+	</string>
+	<string name="White Hair">
+		Białe Włosy
+	</string>
+	<string name="Wide">
+		Szerokie
+	</string>
+	<string name="Wide Back">
+		Szeroki Tył
+	</string>
+	<string name="Wide Front">
+		Szeroki Przód
+	</string>
+	<string name="Wide Lips">
+		Szerokie Usta
+	</string>
+	<string name="Wild">
+		Dzikość
+	</string>
+	<string name="Wrinkles">
+		Zmarszczki
+	</string>
+	<string name="LocationCtrlAddLandmarkTooltip">
+		Dodaj do Zapisanych Miejsc
+	</string>
+	<string name="LocationCtrlEditLandmarkTooltip">
+		Edytuj Zapisane Miejsca
+	</string>
+	<string name="LocationCtrlInfoBtnTooltip">
+		Zobacz więcej szczegółów na temat obecnej lokalizacji
+	</string>
+	<string name="LocationCtrlComboBtnTooltip">
+		Historia odwiedzonych miejsc
+	</string>
+	<string name="UpdaterWindowTitle">
+		[APP_NAME] Aktualizacja
+	</string>
+	<string name="UpdaterNowUpdating">
+		Pobieranie [APP_NAME]...
+	</string>
+	<string name="UpdaterNowInstalling">
+		Instalizacja [APP_NAME]...
+	</string>
+	<string name="UpdaterUpdatingDescriptive">
+		Twoja [APP_NAME] wersja klienta jest aktualizowana do najnowszej wersji. Prosimy o cierpliwość.
+	</string>
+	<string name="UpdaterProgressBarTextWithEllipses">
+		Pobieranie aktualizacji...
+	</string>
+	<string name="UpdaterProgressBarText">
+		Pobieranie aktualizacji
+	</string>
+	<string name="UpdaterFailDownloadTitle">
+		Pobieranie aktualizacji nie powiodło się
+	</string>
+	<string name="UpdaterFailUpdateDescriptive">
+		Podczas aktualizacji [APP_NAME] wystąpił błąd. Prosimy o pobranie najnowszej wersji klienta ze strony internetowej: www.secondlife.com.
+	</string>
+	<string name="UpdaterFailInstallTitle">
+		Instalacja aktualizacji nie powiodła się
+	</string>
+	<string name="UpdaterFailStartTitle">
+		Uruchomienie klienta nie powiodło się
+	</string>
+	<string name="IM_logging_string">
+		-- Zapisywanie logów rozmowy aktywowane --
+	</string>
+	<string name="IM_typing_start_string">
+		[NAME] pisze...
+	</string>
+	<string name="Unnamed">
+		(Brak nazwy)
+	</string>
+	<string name="IM_moderated_chat_label">
+		(Moderacja: Komunikacja głosowa wyłączona domyślnie)
+	</string>
+	<string name="IM_unavailable_text_label">
+		Czat tekstowy jest nieaktywny dla tej rozmowy.
+	</string>
+	<string name="IM_muted_text_label">
+		Twój tekst w czacie grupowym został wyłączony przez Moderatora Grupy.
+	</string>
+	<string name="IM_default_text_label">
+		Klknij tutaj by wysłać wiadomość prywatną (IM).
+	</string>
+	<string name="IM_to_label">
+		Do
+	</string>
+	<string name="IM_moderator_label">
+		(Moderator)
 	</string>
-  <string name="ScriptQuestionCautionChatGranted">
-	&apos;[OBJECTNAME]&apos;, właściciel: &apos;[OWNERNAME]&apos;, położenie: [REGIONNAME] [REGIONPOS], pozwala Ci na: [PERMISSIONS].
-  </string>
-  <string name="ScriptQuestionCautionChatDenied">
-	&apos;[OBJECTNAME]&apos;, właściciel: &apos;[OWNERNAME]&apos;, położenie: [REGIONNAME] [REGIONPOS], nie pozwala Ci na: [PERMISSIONS].
-  </string>
-  <string name="ScriptTakeMoney">
-	Zabiera Lindeny (L$) od Ciebie
-  </string>
-  <string name="ActOnControlInputs">
-	Używaj klawiszy sterowania
-  </string>
-  <string name="RemapControlInputs">
-	Zmień klawisze sterowania
-  </string>
-  <string name="AnimateYourAvatar">
-	Animuj Awatara
-  </string>
-  <string name="AttachToYourAvatar">
-	Dołącz do Awatara
-  </string>
-  <string name="ReleaseOwnership">
-	Usuń prawo własności (zmień na publiczne)
-  </string>
-  <string name="LinkAndDelink">
-	Łącz / odłącz z innymi obiektów
-  </string>
-  <string name="AddAndRemoveJoints">
-	Dodaj / usuń połączenia z innymi obiektami
-  </string>
-  <string name="ChangePermissions">
-	Ustaw zezwolenia
-  </string>
-  <string name="TrackYourCamera">
-	Chodź za kamerą
-  </string>
-  <string name="ControlYourCamera">
-	Kontroluj kamerÄ™
-  </string>
 	<string name="only_user_message">
 		JesteÅ› jedynÄ… osobÄ… w tej konferencji.
 	</string>
@@ -624,31 +3236,4 @@
 	<string name="close_on_no_ability">
 		Nie posiadasz praw by uczestniczyć w tej konferencji.
 	</string>
-			<string name="AcctTypeResident">
-				Rezydent
-			</string>
-			<string name="AcctTypeTrial">
-				Próbne
-			</string>
-			<string name="AcctTypeCharterMember">
-				Członek-zalożyciel
-			</string>
-			<string name="AcctTypeEmployee">
-				Pracownik Linden Lab
-			</string>
-			<string name="PaymentInfoUsed">
-				Dane Konta Używane
-			</string>
-			<string name="PaymentInfoOnFile">
-				Dane Konta Dostępne
-			</string>
-			<string name="NoPaymentInfoOnFile">
-				Brak Danych Konta
-			</string>
-			<string name="AgeVerified">
-				Wiek Zweryfikowany
-			</string>
-			<string name="NotAgeVerified">
-				Brak Weryfikacji Wieku
-			</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/pl/teleport_strings.xml b/indra/newview/skins/default/xui/pl/teleport_strings.xml
index 3384ae30b77..906978effec 100755
--- a/indra/newview/skins/default/xui/pl/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/pl/teleport_strings.xml
@@ -1,15 +1,13 @@
-<?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">
-			Wystąpił problem z teleportacją. Wyloguj się i zaloguj ponownie.
-Jeśli nadal otrzymujesz ten komunikat sprawdź Pomoc Techniczną na stronie:
-www.secondlife.com/support.
+			Przepraszamy, ale pojawił się błąd podczas Twojej próby teleportacji. By ponowić teleportację, wyloguj się i zaloguj ponownie.
+Jeżeli nadal otrzymujesz komunikat błędu teleportacji, sprawdź [SUPPORT_SITE].
 		</message>
 		<message name="invalid_region_handoff">
-			Wystąpił problem ze zmianą regionu. Wyloguj się i zaloguj ponownie.
-Jeśli nadal otrzymujesz ten komunikat sprawdź Pomoc Techniczną na stronie:
-www.secondlife.com/support.
+			Przepraszamy, ale pojawił się błąd podczas próby zmiany regionu. By ponowić próbę przejścia na drugi region, wyloguj się i zaloguj ponownie.
+Jeżeli nadal otrzymujesz komunikat błędu podczas przejścia na drugi region, sprawdź [SUPPORT_SITE].
 		</message>
 		<message name="blocked_tport">
 			Przepraszamy, teleportacja jest chwilowo niedostępna. Spróbuj jeszcze raz.
-- 
GitLab


From 5b53eb9ab1b04d7febe6fe9b01516ef725c4d2d7 Mon Sep 17 00:00:00 2001
From: Chuck Linden <chuck@lindenlab.com>
Date: Sat, 30 Jan 2010 18:06:54 -0500
Subject: [PATCH 374/521] Fixed reference to "first_tab" graphics.
 http://jira.secondlife.com/browse/EXT-4225

---
 indra/newview/skins/default/xui/en/widgets/tab_container.xml | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

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 3f5a4b8379d..32bfc505a19 100644
--- a/indra/newview/skins/default/xui/en/widgets/tab_container.xml
+++ b/indra/newview/skins/default/xui/en/widgets/tab_container.xml
@@ -14,8 +14,8 @@ label_pad_left - padding to the left of tab button labels
                tab_top_image_selected="TabTop_Left_Selected"
                tab_bottom_image_unselected="Toolbar_Left_Off"
                tab_bottom_image_selected="Toolbar_Left_Selected"
-               tab_left_image_unselected="TabTop_Middle_Off"
-               tab_left_image_selected="TabTop_Middle_Selected"/>
+               tab_left_image_unselected="SegmentedBtn_Left_Disabled"
+               tab_left_image_selected="SegmentedBtn_Left_Off"/>
   <middle_tab tab_top_image_unselected="TabTop_Middle_Off"
                tab_top_image_selected="TabTop_Middle_Selected"
                tab_bottom_image_unselected="Toolbar_Middle_Off"
@@ -29,3 +29,4 @@ label_pad_left - padding to the left of tab button labels
                tab_left_image_unselected="SegmentedBtn_Left_Disabled"
                tab_left_image_selected="SegmentedBtn_Left_Off"/>
 </tab_container>
+-->
-- 
GitLab


From 6554708c1e16619d1a336260a85719bc6962c0cf Mon Sep 17 00:00:00 2001
From: Chuck Linden <chuck@lindenlab.com>
Date: Sat, 30 Jan 2010 18:08:18 -0500
Subject: [PATCH 375/521] Removed extra closing comment tag.

---
 indra/newview/skins/default/xui/en/widgets/tab_container.xml | 1 -
 1 file changed, 1 deletion(-)

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 32bfc505a19..597c4e83b60 100644
--- a/indra/newview/skins/default/xui/en/widgets/tab_container.xml
+++ b/indra/newview/skins/default/xui/en/widgets/tab_container.xml
@@ -29,4 +29,3 @@ label_pad_left - padding to the left of tab button labels
                tab_left_image_unselected="SegmentedBtn_Left_Disabled"
                tab_left_image_selected="SegmentedBtn_Left_Off"/>
 </tab_container>
--->
-- 
GitLab


From c6d78de21abaa4dca92bb36e8173a13915680692 Mon Sep 17 00:00:00 2001
From: Ramzi Linden <ramzi@lindenlab.com>
Date: Sat, 30 Jan 2010 15:17:33 -0800
Subject: [PATCH 376/521] TEMPORARILY remove a bunch of untranslatable strings
 from the code, in order to create a Localization point that will not extract
 such strings. I will revert this commit momentarily. This is a workaround to
 the bug DEV- 38858.

---
 .../skins/default/xui/en/floater_aaa.xml      |   57 -
 .../default/xui/en/floater_test_button.xml    |  111 --
 .../default/xui/en/floater_test_checkbox.xml  |  154 --
 .../default/xui/en/floater_test_combobox.xml  |  158 --
 .../xui/en/floater_test_inspectors.xml        |  138 --
 .../default/xui/en/floater_test_layout.xml    |   91 --
 .../xui/en/floater_test_line_editor.xml       |  106 --
 .../default/xui/en/floater_test_list_view.xml |   12 -
 .../xui/en/floater_test_navigation_bar.xml    |   20 -
 .../xui/en/floater_test_radiogroup.xml        |   84 -
 .../default/xui/en/floater_test_slider.xml    |  101 --
 .../default/xui/en/floater_test_spinner.xml   |   97 --
 .../xui/en/floater_test_text_editor.xml       |   31 -
 .../default/xui/en/floater_test_textbox.xml   |  254 ---
 .../default/xui/en/floater_test_widgets.xml   |  451 -----
 .../default/xui/en/floater_ui_preview.xml     |  408 -----
 .../newview/skins/default/xui/en/strings.xml  | 1447 -----------------
 17 files changed, 3720 deletions(-)
 delete mode 100644 indra/newview/skins/default/xui/en/floater_aaa.xml
 delete mode 100644 indra/newview/skins/default/xui/en/floater_test_button.xml
 delete mode 100644 indra/newview/skins/default/xui/en/floater_test_checkbox.xml
 delete mode 100644 indra/newview/skins/default/xui/en/floater_test_combobox.xml
 delete mode 100644 indra/newview/skins/default/xui/en/floater_test_inspectors.xml
 delete mode 100644 indra/newview/skins/default/xui/en/floater_test_layout.xml
 delete mode 100644 indra/newview/skins/default/xui/en/floater_test_line_editor.xml
 delete mode 100644 indra/newview/skins/default/xui/en/floater_test_list_view.xml
 delete mode 100644 indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml
 delete mode 100644 indra/newview/skins/default/xui/en/floater_test_radiogroup.xml
 delete mode 100644 indra/newview/skins/default/xui/en/floater_test_slider.xml
 delete mode 100644 indra/newview/skins/default/xui/en/floater_test_spinner.xml
 delete mode 100644 indra/newview/skins/default/xui/en/floater_test_text_editor.xml
 delete mode 100644 indra/newview/skins/default/xui/en/floater_test_textbox.xml
 delete mode 100644 indra/newview/skins/default/xui/en/floater_test_widgets.xml
 delete mode 100644 indra/newview/skins/default/xui/en/floater_ui_preview.xml

diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml
deleted file mode 100644
index 7236351f2e0..00000000000
--- a/indra/newview/skins/default/xui/en/floater_aaa.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- can_minimize="false"
- can_tear_off="false"
- can_resize="true"
- can_drag_on_left="false"
- can_close="true"
- can_dock="true"
- bevel_style="in"
- height="300"
- layout="topleft"
- name="Test Floater"
- save_rect="true"
- title="TEST FLOATER"
- save_dock_state="true"
- save_visibility="true"
- single_instance="true" 
- width="320">
-  <string name="nudge_parabuild" translate="false">Nudge 1</string>
-  <string name="test_the_vlt">This string CHANGE2 is extracted.</string>
-  <string name="testing_eli">Just a test. change here. more change.</string>
-  <chat_history
-   allow_html="true"
-   bg_readonly_color="ChatHistoryBgColor"
-   bg_writeable_color="ChatHistoryBgColor" 
-   border_visible="false"
-   follows="all"
-   font="SansSerif" 
-	 left="1"
-   top="20"
-   layout="topleft"
-	 height="260"
-   name="chat_history"
-   parse_highlights="true"
-   text_color="ChatHistoryTextColor"
-   text_readonly_color="ChatHistoryTextColor"
-   translate="false"
-   width="320">
-Really long line that is long enough to wrap once with jyg descenders.
-Really long line that is long enough to wrap once with jyg descenders.
-Really long line that is long enough to wrap once with jyg descenders.
-Really long line that is long enough to wrap once with jyg descenders.
-Really long line that is long enough to wrap once with jyg descenders.
-Really long line that is long enough to wrap once with jyg descenders.
-Really long line that is long enough to wrap once with jyg descenders.
-Really long line that is long enough to wrap once with jyg descenders.
-Really long line that is long enough to wrap once with jyg descenders.
-Really long line that is long enough to wrap once with jyg descenders.
-Really long line that is long enough to wrap once with jyg descenders.
-Really long line that is long enough to wrap once with jyg descenders.
-Really long line that is long enough to wrap once with jyg descenders.
-Really long line that is long enough to wrap once with jyg descenders.
-Really long line that is long enough to wrap once with jyg descenders.
-Really long line that is long enough to wrap once with jyg descenders.
-  </chat_history>
-</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_test_button.xml b/indra/newview/skins/default/xui/en/floater_test_button.xml
deleted file mode 100644
index bf0a774e766..00000000000
--- a/indra/newview/skins/default/xui/en/floater_test_button.xml
+++ /dev/null
@@ -1,111 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- can_resize="true"
- height="500"
- layout="topleft"
- name="floater_test_button"
- help_topic="floater_test_button"
- translate="false"
- width="500">
-    <button
-     height="23"
-     label="Generic Button"
-     layout="topleft"
-     left="10"
-     name="generic_button"
-     top="20"
-     width="150" />
-    <button
-     bottom_delta="30"
-     height="23"
-     label="Bottom delta"
-     layout="topleft"
-     name="bottom_delta_button" />
-    <button
-     bottom_delta="30"
-     height="23"
-     label="SansSerifSmall"
-     layout="topleft"
-     name="sans_serif_small_button" />
-    <button
-     auto_resize="true"
-     bottom_delta="30"
-     height="23"
-     label="Auto Resize"
-     layout="topleft"
-     name="auto_resize_button" />
-    <button
-     bottom_delta="30"
-     height="23"
-     is_toggle="true"
-     label="Click Change Label"
-     label_selected="New Label"
-     layout="topleft"
-     name="label_selected_button" />
-    <button
-     bottom_delta="30"
-     height="23"
-     label="No Label Shadow"
-     label_shadow="false"
-     layout="topleft"
-     name="label_shadow_button" />
-    <button
-     bottom_delta="30"
-     height="23"
-     label="EmphasisColor Label"
-     label_color="EmphasisColor"
-     layout="topleft"
-     name="label_color_button" />
-    <button
-     bottom_delta="30"
-     height="23"
-     is_toggle="true"
-     label="Toggle"
-     label_color_selected="EmphasisColor"
-     label_selected="Toggle on"
-     layout="topleft"
-     name="label_color_selected_button" />
-    <button
-     bottom_delta="30"
-     enabled="false"
-     height="23"
-     label="Disabled"
-     label_color_disabled="EmphasisColor"
-     label_selected="Selected"
-     layout="topleft"
-     name="label_color_disabled_button" />
-    <button
-     bottom_delta="30"
-     height="23"
-     highlight_color="EmphasisColor"
-     label="Highlight"
-     layout="topleft"
-     name="highlight_color_button" />
-    <button
-     bottom_delta="30"
-     height="23"
-     hover_glow_amount="0"
-     label="No Hover Glow"
-     layout="topleft"
-     name="hover_glow_amount_button" />
-    <button
-     height="16"
-     image_selected="Move_Run_Off"
-     image_unselected="Move_Run_Off"
-     layout="topleft"
-     left="200"
-     name="image_button"
-     top="20"
-     width="16" />
-    <button
-     height="16"
-     image_color="EmphasisColor"
-     image_selected="Move_Run_Off"
-     image_unselected="Move_Run_Off"
-     layout="topleft"
-     left_delta="0"
-     name="image_color_button"
-     top_pad="10"
-     width="16" />
-</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_test_checkbox.xml b/indra/newview/skins/default/xui/en/floater_test_checkbox.xml
deleted file mode 100644
index c828f6b284f..00000000000
--- a/indra/newview/skins/default/xui/en/floater_test_checkbox.xml
+++ /dev/null
@@ -1,154 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- can_resize="true"
- height="400"
- layout="topleft"
- name="floater_test_checkbox"
- help_topic="floater_test_checkbox"
- translate="false"
- width="400">
-    <check_box
-     control_name="ShowStartLocation"
-     height="15"
-     initial_value="true"
-     label="Oh look it's a checkbox!"
-     layout="topleft"
-     left="10"
-     name="show_location_checkbox"
-     top="28"
-     width="256" />
-    <check_box
-     height="15"
-     label="Minimal Checkbox"
-     layout="topleft"
-     left_delta="0"
-     name="minimal_checkbox"
-     top_pad="14"
-     width="150" />
-    <check_box
-     enabled="false"
-     height="15"
-     label="Disabled Checkbox"
-     layout="topleft"
-     left_delta="0"
-     name="disabled_checkbox"
-     top_pad="14"
-     width="150" />
-    <check_box
-     height="15"
-     label="Text Enabled Color"
-     layout="topleft"
-     left_delta="0"
-     name="text_enabled_color_checkbox"
-     text_enabled_color="EmphasisColor"
-     top_pad="14"
-     width="150" />
-    <check_box
-     enabled="false"
-     height="15"
-     label="Text Disabled Color"
-     layout="topleft"
-     left_delta="0"
-     name="text_disabled_color_checkbox"
-     text_disabled_color="EmphasisColor_35"
-     top_pad="14"
-     width="150" />
-    <check_box
-     height="15"
-     initial_value="true"
-     label="Initial Value Checked"
-     layout="topleft"
-     left_delta="0"
-     name="initial_value_checkbox"
-     top_pad="14"
-     width="150" />
-    <check_box
-     font="Monospace"
-     height="15"
-     label="Font Monospace"
-     layout="topleft"
-     left_delta="0"
-     name="font_checkbox"
-     top_pad="14"
-     width="150" />
-
-<chiclet_im_p2p
- height="25"
- name="im_p2p_chiclet"
- show_speaker="false"
- width="25">
-    <chiclet_im_p2p.chiclet_button
-     height="25"
-     image_selected="PushButton_Selected"
-     image_unselected="PushButton_Off"
-     name="chiclet_button"
-     tab_stop="false"
-     width="25"/>
-    <chiclet_im_p2p.speaker
-     auto_update="true"
-     draw_border="false"
-     height="25"
-     left="25"
-     name="speaker"
-     visible="false"
-     width="20" />
-    <chiclet_im_p2p.avatar_icon
-     bottom="3"
-     follows="left|top|bottom"
-     height="20"
-     left="2"
-     mouse_opaque="false"
-     name="avatar_icon"
-     width="21" />
-    <chiclet_im_p2p.unread_notifications
-     height="25"
-     font_halign="center"
-     left="25"
-     mouse_opaque="false"
-     name="unread"
-     text_color="white"
-     v_pad="5"
-     visible="false"
-     width="20"/>
-    <chiclet_im_p2p.new_message_icon
-  bottom="11"
-  height="14"
-  image_name="Unread_Chiclet"
-  left="12"
-  name="new_message_icon"
-  visible="false"
-  width="14" />
-</chiclet_im_p2p>
-
-
-<chiclet_offer
- height="25"
- name="offer_chiclet"
- width="25">
- <chiclet_offer.chiclet_button
-  height="25"
-  image_selected="PushButton_Selected"
-  image_unselected="PushButton_Off"
-  name="chiclet_button"
-  tab_stop="false"
-  width="25"/>
- <chiclet_offer.icon
-  bottom="3"
-  default_icon="Generic_Object_Small"
-  follows="all"
-  height="19"
-  left="3"
-  mouse_opaque="false"
-  name="chiclet_icon"
-  width="19" />
- <chiclet_offer.new_message_icon
-  bottom="11"
-  height="14"
-  image_name="Unread_Chiclet"
-  left="12"
-  name="new_message_icon"
-  visible="false"
-  width="14" />
-</chiclet_offer>
-</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_test_combobox.xml b/indra/newview/skins/default/xui/en/floater_test_combobox.xml
deleted file mode 100644
index 45e2e34da76..00000000000
--- a/indra/newview/skins/default/xui/en/floater_test_combobox.xml
+++ /dev/null
@@ -1,158 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- can_resize="true"
- height="400"
- layout="topleft"
- name="floater_test_combobox"
- help_topic="floater_test_combobox"
- translate="false"
- width="400">
-    <text
-     type="string"
-     length="1"
-     height="16"
-     layout="topleft"
-     left="10"
-     top="24"
-     width="200">
-        Real world usage (login location):
-    </text>
-    <combo_box
-     allow_text_entry="true"
-     control_name="LoginLocation"
-     follows="left|bottom"
-     height="18"
-     layout="topleft"
-     left_delta="0"
-     max_chars="128"
-     name="start_location_combo"
-     top_pad="2"
-     width="155">
-        <combo_box.item
-         label="My Last Location"
-         name="MyLastLocation"
-         value="last" />
-        <combo_box.item
-         label="My Home"
-         name="MyHome"
-         value="home" />
-        <combo_box.item
-         label="&lt;Type region name&gt;"
-         name="Typeregionname"
-         value="" />
-    </combo_box>
-    <text
-     type="string"
-     length="1"
-     height="16"
-     layout="topleft"
-     left_delta="0"
-     top_pad="24"
-     width="200">
-        Minimal combobox:
-    </text>
-    <combo_box
-     height="18"
-     layout="topleft"
-     left_delta="0"
-     name="minimal_combo"
-     top_pad="2"
-     width="150">
-        <combo_box.item
-         label="First Item"
-         name="item1"
-         value="first" />
-        <combo_box.item
-         label="Second Item"
-         name="item2"
-         value="second" />
-    </combo_box>
-    <text
-     type="string"
-     length="1"
-     height="16"
-     layout="topleft"
-     left_delta="0"
-     top_pad="24"
-     width="200">
-        Allow text input:
-    </text>
-    <combo_box
-     allow_text_entry="true"
-     height="18"
-     layout="topleft"
-     left_delta="0"
-     name="text_entry_combo"
-     top_pad="2"
-     width="150">
-        <combo_box.item
-         label="First Item"
-         name="item1"
-         value="first" />
-        <combo_box.item
-         label="Second Item"
-         name="item2"
-         value="second" />
-    </combo_box>
-    <text
-     type="string"
-     length="1"
-     height="16"
-     layout="topleft"
-     left_delta="0"
-     top_pad="24"
-     width="200">
-        Allow text input, default to second item:
-    </text>
-    <combo_box
-     allow_text_entry="true"
-     height="18"
-     initial_value="second"
-     layout="topleft"
-     left_delta="0"
-     name="text_entry_combo2"
-     top_pad="2"
-     width="150">
-        <combo_box.item
-         label="First Item"
-         name="item1"
-         value="first" />
-        <combo_box.item
-         label="Second Item"
-         name="item2"
-         value="second" />
-    </combo_box>
-    <text
-     type="string"
-     length="1"
-     height="16"
-     layout="topleft"
-     left_delta="0"
-     top_pad="24"
-     width="200">
-        Two character max input:
-    </text>
-    <combo_box
-     allow_text_entry="true"
-     height="16"
-     layout="topleft"
-     left_delta="0"
-     max_chars="2"
-     name="state_combo"
-     top_pad="4"
-     width="150">
-        <combo_box.item
-         label="CA"
-         name="item1"
-         value="ca" />
-        <combo_box.item
-         label="NY"
-         name="item2"
-         value="ny" />
-        <combo_box.item
-         label="TX"
-         name="item3"
-         value="tx" />
-    </combo_box>
-</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_test_inspectors.xml b/indra/newview/skins/default/xui/en/floater_test_inspectors.xml
deleted file mode 100644
index 0f5c5f2be07..00000000000
--- a/indra/newview/skins/default/xui/en/floater_test_inspectors.xml
+++ /dev/null
@@ -1,138 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- can_resize="false"
- height="400"
- layout="topleft"
- name="floater_test_inspectors"
- help_topic="floater_test_inspectors"
- title="TEST INSPECTORS" 
- translate="false"
- width="400">
-  <text
-   height="20"
-   left="10"
-   name="test_inspectors"
-   top="30"
-   width="300">
-    Click to spawn an inspector:
-  </text>
-  <button
-    name="avatar_2d_btn1"
-    label="Avatar 2D"
-    top="50"
-    left="10"
-    height="20"
-    width="100"
-	commit_callback.function="ShowAvatarInspector"
-	commit_callback.parameter="22df1dcb-810a-4975-aab9-0159958fe155" />
-	<!-- InspectorA Tester -->
-  <button
-    name="avatar_2d_btn5"
-    label="Avatar 2D"
-    top_pad="10"
-    left="10"
-    height="20"
-    width="100"
-	commit_callback.function="ShowAvatarInspector"
-	commit_callback.parameter="927e68e0-e52d-4bb8-b1a9-add97a57c86a" />
-	<!-- InspectorB Tester -->
-  <button
-    name="avatar_2d_btn2"
-    label="Avatar 2D"
-    top_pad="10"
-    left="10"
-    height="20"
-    width="100"
-	commit_callback.function="ShowAvatarInspector"
-	commit_callback.parameter="9a2300ca-e251-45dd-bb61-e33139f6e4eb" />
-	<!-- InspectorC Tester -->
-  <button
-    name="avatar_2d_btn3"
-    label="Avatar 2D"
-    top_pad="10"
-    left="10"
-    height="20"
-    width="100"
-	commit_callback.function="ShowAvatarInspector"
-	commit_callback.parameter="8024f082-34cc-48a3-a42e-c42f345efd74" />
-	<!-- jarvtest Bombastic 2009-10-3 -->
-  <button
-    name="avatar_2d_btn4"
-    label="Avatar 2D"
-    top_pad="10"
-    left="10"
-    height="20"
-    width="100"
-	commit_callback.function="ShowAvatarInspector"
-	commit_callback.parameter="e7dc3c83-1e11-4fa7-beeb-4b18adfb4efa" />
-  <button
-    name="avatar_3d_btn"
-    label="Avatar 3D"
-    top="50"
-    left="150"
-    height="20"
-    width="100"/>
-  <button
-    name="object_2d_btn"
-    label="Object 2D"
-    top_pad="10"
-    left_delta="0"
-    height="20"
-    width="100"/>
-  <button
-    name="object_3d_btn"
-    label="Object 3D"
-    top_pad="10"
-    left_delta="0"
-    height="20"
-    width="100"
-	  commit_callback.function="ShowObjectInspector"
-	  commit_callback.parameter="" />
-  <button
-    name="group_btn"
-    label="Group"
-    top_pad="10"
-    left_delta="0"
-    height="20"
-    width="100"
- 	  commit_callback.function="ShowGroupInspector"
-	  commit_callback.parameter="" />
-  <button
-    name="place_btn"
-    label="Place"
-    top_pad="10"
-    left_delta="0"
-    height="20"
-    width="100"/>
-  <button
-    name="event_btn"
-    label="Event"
-    top_pad="10"
-    left_delta="0"
-    height="20"
-    width="100"/>
-  <text
-  follows="left|top"
-  font="SansSerif"
-  height="20"
-  left="0"
-  max_length="65536"
-  name="slurl"
-  top_pad="4"
-  width="150">
-    secondlife:///app/agent/00000000-0000-0000-0000-000000000000/inspect
-  </text>
-  <text
-  follows="left|top"
-  font="SansSerif"
-  height="20"
-  left="0"
-  max_length="65536"
-  name="slurl_group"
-  top_pad="4"
-  width="150">
-    secondlife:///app/group/00000000-0000-0000-0000-000000000000/inspect
-  </text>
-
-</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_test_layout.xml b/indra/newview/skins/default/xui/en/floater_test_layout.xml
deleted file mode 100644
index 94f7e0b7980..00000000000
--- a/indra/newview/skins/default/xui/en/floater_test_layout.xml
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- can_resize="true"
- height="500"
- layout="topleft"
- name="floater_test_layout"
- help_topic="floater_test_layout"
- translate="false"
- width="500">
-    <text
-     type="string"
-     length="1"
-     height="16"
-     layout="topleft"
-     left="10"
-     top="84"
-     width="200">
-        bottom 400 left 10
-    </text>
-    <text
-     type="string"
-     length="1"
-     height="16"
-     layout="topleft"
-     left_delta="0"
-     top_pad="4"
-     width="200">
-        Bottom delta -20
-    </text>
-    <text
-     type="string"
-     length="1"
-     height="16"
-     layout="topleft"
-     left_delta="0"
-     top_pad="64"
-     width="200">
-        bottom 300 left 10, should delta_bottom
-    </text>
-    <text
-     type="string"
-     length="1"
-     height="16"
-     layout="topleft"
-     left_pad="40"
-     top_delta="0"
-     width="200">
-        bottom 300 left 250, should delta_left
-    </text>
-    <text
-     type="string"
-     length="1"
-     height="16"
-     layout="topleft"
-     left="10"
-     top="204"
-     width="200">
-        bottom 280 left 10, should absolute position
-    </text>
-    <text
-     type="string"
-     length="1"
-     height="16"
-     layout="topleft"
-     left_pad="40"
-     top_delta="-2"
-     width="200">
-        bottom 282 left 250, should delta_left and delta_bottom
-    </text>
-    <text
-     type="string"
-     length="1"
-     height="16"
-     layout="topleft"
-     left="10"
-     top="234"
-     width="200">
-        bottom 250 left 10, should absolute position
-    </text>
-    <text
-     type="string"
-     length="1"
-     height="16"
-     layout="topleft"
-     left="250"
-     top="244"
-     width="200">
-        bottom 240 left 250, should absolute position
-    </text>
-</floater>
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
deleted file mode 100644
index 2894ad2a325..00000000000
--- a/indra/newview/skins/default/xui/en/floater_test_line_editor.xml
+++ /dev/null
@@ -1,106 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- can_resize="true"
- height="500"
- layout="topleft"
- name="floater_test_line_editor"
- help_topic="floater_test_line_editor"
- translate="false"
- width="400">
-  <line_editor
-   height="20"
-   layout="topleft"
-   left="10"
-   name="enabled_line_editor"
-   top="40"
-   tool_tip="enabled line editor"
-   width="200">
-    Enabled line editor
-  </line_editor>
-  <line_editor
-   height="20"
-   layout="topleft"
-   left_delta="0"
-   name="ascii_line_editor"
-   prevalidate_callback="ascii"
-   tool_tip="ascii line editor"
-   top_pad="10" 
-   width="200">
-    ASCII only line editor
-  </line_editor>
-  <line_editor
-   enabled="false"
-   height="20"
-   layout="topleft"
-   left_delta="0"
-   name="disabled_line_editor"
-   top_pad="10"
-   tool_tip="disabled line editor"
-   width="200">
-    Disabled line editor
-  </line_editor>
-  <line_editor
-   height="20"
-   layout="topleft"
-   left_delta="0"
-   name="enabled_colored_line_editor"
-   text_color="1 0 0 1" 
-   top_pad="10"
-   tool_tip="enabled colored line editor"
-   width="200">
-    Enabled red-text line editor
-  </line_editor>
-  <line_editor
-    enabled="false"
-   height="20"
-   layout="topleft"
-   left_delta="0"
-   name="disabled_colored_line_editor"
-    text_readonly_color="1 0 0 1" 
-   top_pad="10"
-   tool_tip="disabled colored line editor"
-   width="200">
-    Disabled red-text line editor
-  </line_editor>
-  <line_editor
-   height="20"
-   left_delta="0"
-   name="left_pad_editor"
-   text_pad_left="25"
-   top_pad="10"
-   width="200">
-    25 px left text padding
-  </line_editor>
-  <line_editor
-   height="20"
-   left_delta="0"
-   name="left_pad_editor"
-   text_pad_right="75"
-   top_pad="10"
-   width="200">
-    75 px right text padding
-  </line_editor>
-  <line_editor
-   height="20"
-   left_delta="0"
-   name="left_pad_editor"
-   text_pad_left="25"
-   text_pad_right="75"
-   top_pad="10"
-   width="200">
-    25 px left 75 px right text padding
-  </line_editor>
-  <!-- "search_editor" is a specialized line_editor that shows read-only
-       help text until the user clicks in the widget. -->
-  <search_editor
-   follows="left|top|right"
-   height="20"
-   label="Type here to search"
-   layout="topleft"
-   left_delta="0"
-   name="search editor"
-   tool_tip="search editor"
-   top_pad="10"
-   width="200" />
-</floater>
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
deleted file mode 100644
index 32ccc31dfd4..00000000000
--- a/indra/newview/skins/default/xui/en/floater_test_list_view.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- can_resize="true"
- height="400"
- layout="topleft"
- name="floater_test_list_view"
- help_topic="floater_test_list_view"
- translate="false"
- width="400">
- <!-- intentionally empty -->
-</floater>
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
deleted file mode 100644
index f4a50ecc962..00000000000
--- a/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- can_resize="true"
- height="200"
- layout="topleft"
- name="floater_test_navigation_bar"
- help_topic="floater_test_navigation_bar"
- translate="false"
- width="900">
-  <panel
-    name="navigation_bar"
-    filename="panel_navigation_bar.xml"
-    left="10"
-    right="-10" 
-    top="30"
-    height="100"
-    border="true"
-      />           
-</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml b/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml
deleted file mode 100644
index db14ecae831..00000000000
--- a/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- can_resize="true"
- height="400"
- layout="topleft"
- name="floater_test_radiogroup"
- help_topic="floater_test_radiogroup"
- translate="false"
- width="400">
-    <radio_group
-     height="54"
-     layout="topleft"
-     left="10"
-     name="parcel_voice_channel"
-     top="46"
-     width="219">
-        <radio_item
-         height="16"
-         label="Use the Estate spatial channel"
-         layout="topleft"
-         left="3"
-         name="Estate"
-         top="3"
-         width="463" />
-        <radio_item
-         height="16"
-         label="Use a private spatial channel"
-         layout="topleft"
-         left_delta="0"
-         name="Private"
-         top_delta="16"
-         width="463" />
-        <radio_item
-         height="16"
-         label="Disable spatial audio on this parcel"
-         layout="topleft"
-         left_delta="0"
-         name="Disabled"
-         top_delta="16"
-         width="463" />
-    </radio_group>
-    <radio_group
-     height="50"
-     layout="topleft"
-     left_delta="0"
-     name="simple_radio_group"
-     top_pad="50"
-     width="150">
-        <radio_item
-         bottom="20"
-         height="16"
-         label="Label in label attribute"
-         layout="topleft"
-         name="label_radio_item" />
-        <radio_item
-         bottom_delta="20"
-         height="16"
-         label="Label in text contents"
-         layout="topleft"
-         name="contents_radio_item" />
-    </radio_group>
-    <radio_group
-     draw_border="false"
-     height="50"
-     layout="topleft"
-     left_delta="0"
-     name="no_border_radio_group"
-     top_pad="50"
-     width="150">
-        <radio_item
-         bottom="20"
-         height="16"
-         label="No Border Foo"
-         layout="topleft"
-         name="foo_radio_item" />
-        <radio_item
-         bottom_delta="20"
-         height="16"
-         label="No Border Bar"
-         layout="topleft"
-         name="bar_item" />
-    </radio_group>
-</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_test_slider.xml b/indra/newview/skins/default/xui/en/floater_test_slider.xml
deleted file mode 100644
index 20bd555a032..00000000000
--- a/indra/newview/skins/default/xui/en/floater_test_slider.xml
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- can_resize="true"
- height="500"
- layout="topleft"
- name="floater_test_slider"
- help_topic="floater_test_slider"
- translate="false"
- width="450">
-    <slider
-     height="20"
-     label="Generic Slider"
-     layout="topleft"
-     left="10"
-     name="generic_slider"
-     top="40"
-     width="250" />
-    <slider
-     height="20"
-     label="Callback Slider"
-     layout="topleft"
-     left_delta="0"
-     name="callback_slider"
-     top_pad="20"
-     width="400">
-        <slider.mouse_up_callback
-         function="Test.TestCallback"
-         parameter="test" />
-    </slider>
-    <slider
-     height="20"
-     increment="1"
-     initial_value="2.0"
-     label="Value Slider"
-     layout="topleft"
-     left_delta="0"
-     max_val="5"
-     min_val="1"
-     name="value_slider"
-     top_pad="20"
-     width="250" />
-    <slider
-     height="20"
-     label="Mini Slider 1"
-     layout="topleft"
-     left_delta="0"
-     name="mini_slider_1"
-     top_pad="20"
-     width="200" />
-    <slider
-     height="20"
-     label="Mini Slider 2"
-     layout="topleft"
-     left_pad="20"
-     name="mini_slider_2"
-     top_delta="0"
-     width="200" />
-    <slider_bar
-     bottom="320"
-     height="100"
-     left="20"
-     name="slider_bar_vertical"
-     orientation="vertical"
-     width="20" />
-    <slider_bar
-     bottom="300"
-     height="20"
-     increment="1"
-     initial_value="2.0"
-     label="Slider Bar"
-     layout="topleft"
-     max_val="5"
-     min_val="1"
-     left_pad="20"
-     name="slider_bar"
-     width="300" />
-    <slider
-     bottom="360"
-     decimal_digits="1"
-     height="20"
-     label="Red Slider"
-     label_width="100"
-     layout="topleft"
-     name="red_slider"
-     text_color="red"
-     text_width="40" />
-	<slider
-	 width ="140"
-     bottom="490"
-     decimal_digits="1"
-     height="100"
-	 left="20"
-     label="Red Slider Vertical"
-     label_width="100"
-     layout="topleft"
-     name="red_slider_vertical"
-     text_color="red"
-	 orientation="vertical"
-     text_width="20" /> 
-</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_test_spinner.xml b/indra/newview/skins/default/xui/en/floater_test_spinner.xml
deleted file mode 100644
index acd49aa492e..00000000000
--- a/indra/newview/skins/default/xui/en/floater_test_spinner.xml
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- can_resize="true"
- height="400"
- layout="topleft"
- name="floater_test_spinner"
- help_topic="floater_test_spinner"
- translate="false"
- width="450">
-    <spinner
-     height="32"
-     label="Generic Spinner"
-     layout="topleft"
-     left="10"
-     label_width="100"
-     name="generic_spinner"
-     top="40"
-     width="350" />
-    <spinner
-     height="20"
-     label="Callback Spinner"
-     label_width="100"
-     layout="topleft"
-     left_delta="0"
-     name="callback_spinner"
-     top_pad="20"
-     width="400" />
-    <spinner
-     height="20"
-     label="Colorful Spinner"
-     layout="topleft"
-     left_delta="0"
-     name="colorful_spinner"
-     top_pad="20"
-     width="250" />
-    <spinner
-     height="20"
-     increment="1"
-     initial_value="2.0"
-     label="Value Spinner"
-     layout="topleft"
-     left_delta="0"
-     max_val="5"
-     min_val="1"
-     name="value_spinner"
-     top_pad="20"
-     width="250" />
-    <spinner
-     height="20"
-     label="Mini Spinner 1"
-     layout="topleft"
-     left_delta="0"
-     name="mini_spinner_1"
-     top_pad="20"
-     width="200" />
-    <spinner
-     height="20"
-     label="Mini Spinner 2"
-     layout="topleft"
-     left_pad="20"
-     name="mini_spinner_2"
-     top_delta="0"
-     width="200" />
-    <spinner
-     control_name="RenderFogRatio"
-     decimal_digits="1"
-     height="20"
-     label="Control Spinner"
-     layout="topleft"
-     left="10"
-     max_val="20"
-     min_val="10"
-     name="control_spinner"
-     top="260"
-     width="250" />
-    <spinner
-     follows="left"
-     height="20"
-     label="Follows Left"
-     label_width="85"
-     layout="topleft"
-     left_delta="0"
-     name="follows_left"
-     top_pad="20"
-     width="250" />
-    <spinner
-     follows="right"
-     height="20"
-     label="Follows Right"
-     label_width="85"
-     layout="topleft"
-     left_delta="0"
-     name="follows_right"
-     top_pad="20"
-     width="250" />
-</floater>
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
deleted file mode 100644
index dc8f00d5f36..00000000000
--- a/indra/newview/skins/default/xui/en/floater_test_text_editor.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- can_resize="true"
- height="600"
- layout="topleft"
- name="floater_test_text_editor"
- translate="false"
- width="800">
-  <text_editor
-   height="50"
-   follows="top|left|bottom"
-   left="10"
-   name="test_text_editor"
-   tool_tip="text editor"
-   top="25"
-   width="200">
-    Text Editor
-  </text_editor>
-  <text_editor
-   height="50"
-   follows="top|left|bottom"
-   font="SansSerif" 
-   left="10"
-   name="test_text_editor"
-   tool_tip="text editor"
-   top_pad="10"
-   width="200">
-    This contains long text and should scroll horizontally to the right
-  </text_editor>
-</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_test_textbox.xml b/indra/newview/skins/default/xui/en/floater_test_textbox.xml
deleted file mode 100644
index 2df9bb35fe8..00000000000
--- a/indra/newview/skins/default/xui/en/floater_test_textbox.xml
+++ /dev/null
@@ -1,254 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- can_resize="true"
- height="600"
- layout="topleft"
- name="floater_test_textbox"
- help_topic="floater_test_textbox"
- translate="false"
- width="800">
-    <text
-     type="string"
-     length="1"
-     height="90"
-     layout="topleft"
-     left="10"
-     top_pad="30"
-     width="300">
-        First line of multiple lines
-Second line of multiple lines
-Third line of multiple lines
-Fourth line of multiple lines
-Fifth line of multiple lines
-    </text>
-  <text
-    clip_partial="true"
-    top_pad="10"
-    left="10"
-    width="267"
-    height="28"
-    layout="topleft"
-    follows="right|left"
-    text_color="white"
-    use_ellipses="true"
-    word_wrap="true"
-    mouse_opaque="false"
-    name="title" >
-    This text has word_wrap set true, use_ellipses set true, and clip_partial set true, so it should wrap around, spilling over to the last line, then clip the last partial line and show ellipses to indicate there is more text
-  </text>
-
-  <text
-   font="SansSerif"
-   font.style="BOLD"
-   height="10"
-   layout="topleft"
-   left_delta="0"
-   top_pad="10"
-   width="300">
-    SansSerif BOLD
-  </text>
-  <text
-   font="SansSerif"
-   font.style="BOLD|UNDERLINE"
-   height="10"
-   layout="topleft"
-   left_delta="0"
-   top_pad="10"
-   width="300">
-    SansSerif BOLD UNDERLINE
-  </text>
-  <text
- bottom="390"
- left="10"
- name="right_aligned_text"
- width="300"
- halign="right"
- top_pad="10">
-    Right aligned text
-  </text>
-  <text
- bottom="390"
- left="10"
- name="centered_text"
- width="300"
- halign="center"
- top_pad="10">
-    Centered text
-  </text>
-  <text
- left="10"
- name="left_aligned_text"
- width="300"
- halign="left"
- top_pad="10">
-    Left aligned text
-  </text>
-  <text
- left="10"
- name="v_pad_text"
- height="40"
- width="300"
- halign="left"
- top_pad="10"
- v_pad="10">
-    v_pad = 10, height = 40
-  </text>
-  <text
- left="10"
- name="v_pad_text"
- height="40"
- width="300"
- halign="left"
- top_pad="10"
- h_pad="30">
-    h_pad = 30, height = 40
-  </text>
-  <text
- top_pad="10"
- left="10"
- right="-10"
- height="20"
- follows="top|left"
- font.name="SansSerifSmall"
- name="test_text10"
- tool_tip="text">
-    SansSerifSmall
-    The 华文细黑 brown fox ヒラキjumped over the lazy dog.
-  </text>
-  <text
-   top_pad="10"
-   left="10"
-   right="-10"
-   height="25"
-   follows="top|left"
-   font.name="SansSerifMedium"
-   name="test_text11"
-   tool_tip="text">
-    SansSerif
-    The 华文细黑 brown fox ヒラキjumped over the lazy dog.
-  </text>
-  <text
-   top_pad="10"
-   left="10"
-   right="-10"
-   follows="top|left"
-   height="26"
-   font.name="SansSerifLarge"
-   name="test_text12"
-   tool_tip="text">
-    SansSerifLarge
-    The 华文细黑 brown fox ヒラキjumped over the lazy dog.
-  </text>
-  <text
-   top_pad="10"
-   left="10"
-   height="35"
-   right="-10"
-   follows="top|left"
-   font.name="SansSerifHuge"
-   name="test_text13"
-   tool_tip="text">
-    SansSerifHuge
-    The 华文细黑 brown fox ヒラキjumped over the lazy dog.
-  </text>
-  
-<!-- next column -->
-  <text_editor
- height="50"
- follows="top|left|bottom"
- left="400"
- name="test_text_editor"
- tool_tip="text editor"
- top="25"
- width="200">
-    Text Editor
-  </text_editor>
-  <text_editor
- height="50"
- follows="top|left|bottom"
- left_delta="0"
- name="long_text_editor"
- tool_tip="text editor"
- top_pad="10"
- width="200">
-Text Editor
-with multiple
-lines of text
-and hence a
-scroll bar
-  </text_editor>
-  <text_editor
- height="50"
- follows="top|left|bottom"
- left_delta="0"
- max_length="65536" 
- name="blob_text_editor"
- tool_tip="text editor"
- top_pad="10"
- width="200"
- word_wrap="true">
-Second Life is brought to you by Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les and many others.
-  </text_editor>
-    <text_editor
- height="50"
- follows="top|left|bottom"
- font="Monospace"
- left_delta="0"
- name="monospace_text_editor"
- tool_tip="text editor"
- top_pad="10"
- width="200">
-Text Editor
-with multiple
-lines of text
-and hence a
-scroll bar gjyrrr
-  </text_editor>
-    <text_editor
-      border_visible="true"
-      height="50"
-      follows="top|left|bottom"
-      font="Monospace"
- left_delta="0"
- name="monospace_text_editor"
- tool_tip="text editor"
- top_pad="10"
- width="200">
-Text Editor
-with multiple
-lines of text
-and hence a
-scroll bar gjyrrr
-  </text_editor>
-    <text_editor
- height="50"
- follows="top|left|bottom"
- font="SansSerif"
- left_delta="0"
- name="sansserif_text_editor"
- tool_tip="text editor"
- top_pad="10"
- width="200">
-Text Editor
-with multiple
-lines of text
-and hence a
-scroll bar gjyrrr
-  </text_editor>
-
-  <text
-   height="40"
-   follows="top|left|bottom"
-   layout="topleft"
-   name="test_text_box"
-   tool_tip="text box"
-   top_pad="5"
-   width="200">
-Text box
-with
-multiple lines
-and too many lines
-to actually fit
-  </text>
-</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_test_widgets.xml b/indra/newview/skins/default/xui/en/floater_test_widgets.xml
deleted file mode 100644
index 447bd7f599b..00000000000
--- a/indra/newview/skins/default/xui/en/floater_test_widgets.xml
+++ /dev/null
@@ -1,451 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<!-- Sample "floater" window with examples of common widgets.
-
-    Notes:
-    XML UI (XUI) files use spaces for indentation, not tabs.
-    All position values are in pixels.
-    For now, each widget must contain attribute layout="topleft".
-    0,0 is the top-left corner of the floater.
-    Each widget must have a unique name attribute.
-    If a widget is aligned with the one before it, use relative positioning:
-      top_pad
-      top_delta
-      left_pad
-      left_delta
-    Otherwise specify location with left and top attributes.
--->
-<floater
- legacy_header_height="18"
- can_dock="true"
- can_resize="true"
- title="TEST FLOATER"
- height="500"
- min_width="850"
- min_height="500"
- layout="topleft"
- name="floater_test_widgets"
- help_topic="floater_test_widgets"
- translate="false"
- width="850">
-
-  <!-- Strings are used by C++ code for localization.  They are not visible
-       unless the C++ code uses them to fill in another widget. -->
-  <floater.string
-   name="sample_string"
-   value="Sample String" />
-  <floater.string
-   name="other_string"
-   value="Other String" />
-
-  <!-- Floaters can contain drop-down menus.
-       The menu_bar widget contains the inividual menus.
-       The width is automatically computed to fit the labels. -->
-  <menu_bar
-   height="18"
-   layout="topleft"
-   follows="top|left"
-   tool_tip="menu"
-   left="2"
-   name="test_menu_bar"
-   top="16">
-    <menu
-     height="16"
-     label="Menu"
-     layout="topleft"
-     tear_off="true"
-     left="0"
-     name="Menu"
-     top="-32"
-     width="128">
-      <!-- menu_item_call will trigger a function call in the C++ code -->
-      <menu_item_call
-       label="Menu Item 1"
-       layout="topleft"
-       name="test_menu_item_1" />
-      <!-- menu_item_separator is a horizontal line used to separate sections
-           of a menu.  In general, menus should be divided into chunks of
-           no more than 7 items separated by menu_item_separators. -->
-      <menu_item_separator/>
-      <menu_item_call
-       label="Menu Item 2"
-       layout="topleft"
-       name="test_menu_item_2" />
-    </menu>
-  </menu_bar>
-
-  <!-- "text" is one or more read-only lines of text.
-       It can be made clickable but this requires C++ code
-       support.  URLs are not automatically underlined. -->
-  <text
-   bottom="55"
-   layout="topleft"
-   follows="top|left"
-   left="10"
-   height="16">
-    For widget list see https://wiki.lindenlab.com/wiki/Viewer:UI/Widgets
-  </text>
-
-  <!-- First column -->
-
-  <button
-   height="20"
-   follows="top|left"
-   label="Button"
-   layout="topleft"
-   left_delta="0"
-   name="test_button"
-   tool_tip="button"
-   top="80"
-   width="100" />
-  <!-- "flyout_button" is a button that can spawn a menu -->
-  <flyout_button
-   follows="top|left"
-   height="20"
-   label="Flyout"
-   layout="topleft"
-   left_delta="0"
-   name="fly_btn"
-   top_pad="15"
-   tool_tip="flyout button"
-   width="100">
-    <flyout_button.item
-     label="Item 1"
-     value="shout" />
-    <flyout_button.item
-     label="Item 2"
-     value="say" />
-    <flyout_button.item
-     label="Item 3"
-     value="whisper" />
-  </flyout_button>
-  <check_box
-   bottom_delta="35"
-   label="Checkbox"
-   layout="topleft"
-   tool_tip="checkbox"
-   name="test_checkbox" />
-  <check_box
-   top_pad="5"
-   enabled="false" 
-   label="Checkbox Disabled"
-   tool_tip="checkbox disabled"
-   name="test_checkbox_disabled" />
-  <!-- "combo_box" is a pop-menu of items.  Optionally the box itself can
-       contain a general purpose line input editor, allowing the user to
-       provide input that is not a list item. -->
-  <combo_box
-   bottom_delta="35"
-   follows="top|left"
-   height="16"
-   width="150"
-   label="Combobox"
-   layout="topleft"
-   tool_tip="combo box"
-   name="test_combo_box">
-    <combo_box.item
-     name="item1"
-     label="Combobox Item 1" />
-    <combo_box.item
-     name="item2"
-     label="Combobox Item 2" />
-  </combo_box>
-  <!-- "icon" is a read-only image.  The image_name must match an entry
-        in textures.xml.  We support TGA and PNG for UI images. -->
-  <icon
-   height="16"
-   image_name="icon_avatar_online.tga"
-   layout="topleft"
-   left_delta="0"
-   tool_tip="icon"
-   name="test_icon"
-   top_pad="40"
-   width="16" />
-  <!-- "line_editor" allows a single line of editable text input.
-        The contents of this XML node are used as the initial value for
-        the text. -->
-  <line_editor
-   height="20"
-   follows="top|left"
-   layout="topleft"
-   left_delta="0"
-   name="test_line_editor"
-   top_pad="20"
-   tool_tip="line editor"
-   width="200">
-    Line Editor Sample Text
-  </line_editor>
-  <!-- "filter_editor" is a specialized line_editor that shows read-only
-       help text until the user clicks in the widget. -->
-  <filter_editor
-   follows="left|top"
-   height="20"
-   label="Type here to search"
-   layout="topleft"
-   left_delta="0"
-   name="search editor"
-   tool_tip="search editor"
-   top_pad="30"
-   width="200" />
-  <!-- "progress_bar" percent completed gets set in C++ code -->
-  <progress_bar
-   height="16"
-   follows="top|left"
-   layout="topleft"
-   left_delta="0"
-   name="test_progress_bar"
-   top_pad="30"
-   tool_tip="progress bar"
-   width="200" />
-  <!-- "stat_view" is a container for statistics graphs.  It is only used
-       for debugging/diagnostic displays. -->
-  <stat_view
-   height="250"
-   label="Statistics View"
-   layout="topleft"
-   left_delta="0"
-   name="axis_view"
-   show_label="true"
-   top_pad="30"
-   tool_tip="stat view"
-   width="200">
-    <stat_bar
-     width="100"
-     bar_max="100"
-     bottom_delta="30"
-     label="Test Stat"
-     layout="topleft"
-     stat="stat"
-     bar_min="20"
-     name="test_stat_bar" />
-  </stat_view>
-
-  <!-- New column -->
-
-  <!-- "radio_group" is a set of mutually exclusive choices, like the buttons
-       on a car radio that allow a single radio station to be chosen. -->
-  <radio_group
-   height="40"
-   layout="topleft"
-   left_pad="90"
-   name="size_radio_group"
-   tool_tip="radio group"
-   top="80"
-   width="200">
-    <radio_item
-     bottom="20"
-     label="Radio 1"
-     layout="topleft"
-     name="small_radio_item" />
-    <radio_item
-     label="Radio 2"
-     layout="topleft"
-     name="large_radio_item" />
-  </radio_group>
-  <!-- "scroll_list" is a scrolling list of columnar data. -->
-  <scroll_list
-   bottom_delta="100"
-   follows="top|left"
-   height="80"
-   draw_heading="true"
-   tool_tip="scroll list"
-   layout="topleft">
-    <scroll_list.columns
-     dynamic_width="true"
-     name="first_column"
-     label="Column A"/>
-    <scroll_list.columns
-     dynamic_width="true"
-     name="second_column"
-     label="Column B"/>
-    <row>
-      <column column="first_column">short text</column>
-      <column column="second_column">more short text</column>
-    </row>
-    <row>
-      <column column="first_column">this is some longer text</column>
-      <column column="second_column">and here is some more long text</column>
-    </row>
-  </scroll_list>
-  <!-- "slider" is a horizontal input widget for numerical data. -->
-  <slider
-   bottom_delta="45"
-   follows="top|left"
-   layout="topleft"
-   min_val="0"
-   max_val="100"
-   initial_value="20"
-   label="Slider"
-   name="test_slider"
-   tool_tip="slider"
-   width="200" />
-  <!-- "spinner" is a numerical input widget with an up and down arrow to
-       change the value. -->
-  <spinner
-   bottom_delta="35"
-   follows="top|left"
-   label="Spinner"
-   layout="topleft"
-   label_width="45"
-   name="test_spinner"
-   tool_tip="spinner"/>
-  <text
-   bottom_delta="50"
-   follows="top|left"
-   font.name="SansSerifSmall"
-   font.style = "UNDERLINE"
-   layout="topleft"
-   name="test_text"
-   tool_tip="text">
-    Text (underlined)
-  </text>
-  <text
-   top_pad="10"
-   follows="top|left"
-   layout="topleft"
-   width="60"
-   use_ellipses="true"
-   name="test_text"
-   tool_tip="text">
-    Truncated text here
-  </text>
-  <!-- "text_editor" is a multi-line text input widget, similar to
-       textarea in HTML. -->
-  <text_editor
-   height="40"
-   follows="top|left|bottom"
-   layout="topleft"
-   left_delta="0"
-   name="test_text_editor"
-   tool_tip="text editor"
-   top_pad="25"
-   width="200">
-    Text Editor
-  </text_editor>
-  <text
-   height="40"
-   follows="top|left|bottom"
-   layout="topleft"
-   name="test_text_box"
-   tool_tip="text box"
-   top_pad="5"
-   width="200">
-      Text box
-with
-multiple lines
-and too
-many
-line to actually fit
-  </text>
-  <!-- And a third column -->
-
-  <!-- "tab_container" is a holder for multiple panels of UI widgets.
-       Tabs can appear at the top, bottom, or left of the container. -->
-  <tab_container
-   follows="all"
-   height="400"
-   halign="center"
-   layout="topleft"
-   left="525"
-   name="group_tab_container"
-   tab_position="top"
-   tab_height="20"
-   tool_tip="tab container"
-   top="80"
-   width="300">
-    <!-- "panel" is a container for widgets.  It is automatically resized to
-         fit the parent tab_container. -->
-    <panel
-	 border="true"
-     label="Tab 1 - Color"
-     layout="topleft"
-     name="panel2">
-      <!-- "color_swatch" displays a color and spawns a color picker when
-           clicked. -->
-      <color_swatch
-       can_apply_immediately="true"
-       color="0.3 0.6 0.9 1"
-       follows="left|top"
-       height="90"
-       layout="topleft"
-       left="10"
-       label="Color Swatch 1"
-       name="swatch1"
-       tool_tip="Color Swatch: Click to open Color Picker"
-       top="10"
-       width="80" />
-      <color_swatch
-       can_apply_immediately="true"
-       color="1 0 1 1"
-       follows="left|top"
-       height="90"
-       label="Color Swatch 2"
-       layout="topleft"
-       left_pad="10"
-       name="swatch2"
-       tool_tip="Color Swatch: Click to open Color Picker"
-       top_delta="0"
-       width="80" />
-      <text
-       top_pad="10"
-       left="10"
-       width="250" 
-       follows="top|left"
-       font.name="Monospace"
-       name="test_text10"
-       tool_tip="text">
-        Monospace Button Flyout Checkbox
-      </text>
-      <text
-       top_pad="10"
-       left="10"
-       width="250" 
-       follows="top|left"
-       font.name="SansSerifSmall"
-       name="test_text10"
-       tool_tip="text">
-        SansSerifSmall.  Русский 中文 (简体)
-      </text>
-      <text
-       top_pad="10"
-       left="10"
-       width="250"
-       follows="top|left"
-       font.name="SansSerif"
-       name="test_text11"
-       tool_tip="text">
-        SansSerif.  Русский 中文 (简体)
-      </text>
-      <text
-       top_pad="10"
-       left="10"
-       width="250" 
-       follows="top|left"
-       font.name="SansSerifLarge"
-       name="test_text12"
-       tool_tip="text">
-        SansSerifLarge.  Русский 中文 (简体)
-      </text>
-      <text
-       top_pad="10"
-       left="10"
-       width="250"
-       follows="top|left"
-       font.name="SansSerifHuge"
-       name="test_text13"
-       tool_tip="text">
-        SansSerifHuge.  Русский 中文 (简体)
-      </text>
-    </panel>
-    <!-- panels can also refer to other floaters or panels -->
-    <panel
-	  border="true"
-     filename="floater_test_checkbox.xml"
-     height="225"
-     label="Tab 2 - Checkbox"
-     layout="topleft"
-     left_delta="0"
-     name="tab2"
-     top_delta="159"
-     width="250" />
-  </tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_ui_preview.xml b/indra/newview/skins/default/xui/en/floater_ui_preview.xml
deleted file mode 100644
index e86cb23c1eb..00000000000
--- a/indra/newview/skins/default/xui/en/floater_ui_preview.xml
+++ /dev/null
@@ -1,408 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- can_resize="true"
- height="640"
- layout="topleft"
- min_height="230"
- min_width="650"
- name="gui_preview_tool"
- help_topic="gui_preview_tool"
- single_instance="true"
- title="XUI PREVIEW TOOL"
- translate="false"
- width="750">
-    <panel
-     bottom="640"
-     follows="left|top|right|bottom"
-     layout="topleft"
-     left="0"
-     mouse_opaque="false"
-     name="main_panel"
-     right="750"
-     top="0">
-        <text
-         type="string"
-         length="1"
-         follows="top|left"
-         font="SansSerif"
-         height="30"
-         layout="topleft"
-         left="10"
-         name="select_language_label"
-         top="25"
-         width="130">
-            Primary Language:
-        </text>
-        <combo_box
-         follows="top|left"
-         height="20"
-         layout="topleft"
-         left_pad="5"
-         name="language_select_combo"
-         top_delta="0"
-         width="55">
-            <combo_box.item
-             label="en"
-             name="item1"
-             value="en" />
-        </combo_box>
-        <button
-         follows="left|top"
-         height="25"
-         label="Show"
-         label_selected="Show"
-         layout="topleft"
-         left_pad="10"
-         name="display_floater"
-         tool_tip="Display the XUI floater defined by the selected XML file"
-         top_delta="-2"
-         width="95" />
-        <button
-         enabled="false"
-         follows="left|top"
-         height="25"
-         label="Hide"
-         label_selected="Hide"
-         layout="topleft"
-         left_pad="10"
-         name="close_displayed_floater"
-         tool_tip="Closes the currently-displayed floater, if one exists"
-         top_delta="0"
-         width="85" />
-        <button
-         follows="left|top"
-         height="25"
-         label="Edit..."
-         label_selected="Edit..."
-         layout="topleft"
-         left_pad="10"
-         name="edit_floater"
-         tool_tip="Edit the XUI floater defined by the selected XML file (opens external editor).  Opens en version if no localized version exists."
-         top_delta="0"
-         width="95" />
-        <button
-         follows="left|top"
-         height="25"
-         label="Save"
-         label_selected="Save"
-         layout="topleft"
-         left_pad="5"
-         name="save_floater"
-         tool_tip="Save the XUI floater defined by the selected XML file"
-         top_delta="0"
-         width="85" />
-        <button
-         follows="left|top"
-         height="25"
-         label="Save All"
-         label_selected="Save All"
-         layout="topleft"
-         left_pad="10"
-         name="save_all_floaters"
-         tool_tip="Save all XUI floaters defined by the selected language"
-         top_delta="0"
-         width="85" />
-        <button
-         follows="right|top"
-         height="25"
-         is_toggle="true"
-         label="&gt; &gt;"
-         label_selected="&lt; &lt;"
-         layout="topleft"
-         left_pad="15"
-         name="toggle_overlap_panel"
-         tool_tip="Toggle highlighting and display panel for overlapping elements; right click an element to select it for this feature.  The selected element is marked by a red rectangle."
-         top_delta="0"
-         width="30" />
-        <text
-         type="string"
-         length="1"
-         follows="top|left"
-         font="SansSerif"
-         height="30"
-         layout="topleft"
-         left="10"
-         name="select_language_label_2"
-         right="-50"
-         top="53"
-         width="105">
-            Secondary Language:
-        </text>
-        <combo_box
-         follows="top|left"
-         height="20"
-         layout="topleft"
-         left_delta="135"
-         name="language_select_combo_2"
-         top_delta="0"
-         width="55">
-            <combo_box.item
-             label="en"
-             name="item1"
-             value="en" />
-        </combo_box>
-        <button
-         follows="left|top"
-         height="25"
-         label="Show"
-         layout="topleft"
-         left_pad="10"
-         name="display_floater_2"
-         tool_tip="Display the XUI floater defined by the selected XML file"
-         top_delta="-2"
-         width="95" />
-        <button
-         enabled="false"
-         follows="left|top"
-         height="25"
-         label="Hide"
-         layout="topleft"
-         left_pad="10"
-         name="close_displayed_floater_2"
-         tool_tip="Closes the currently-displayed floater, if one exists"
-         top_delta="0"
-         width="85" />
-        <button
-         follows="left|top"
-         height="25"
-         label="Export Schema"
-         layout="topleft"
-         left_pad="10"
-         name="export_schema"
-         top_delta="0"
-         width="120" />
-        <check_box
-          follows="left|top"
-          label="Show Rectangles"
-          name="show_rectangles"
-          left_pad="10"
-          top_delta="0"
-          height="25"
-          width="120" />
-      
-        <scroll_list
-         bottom="525"
-         column_padding="0"
-         draw_heading="true"
-         draw_stripes="false"
-         follows="left|top|bottom|right"
-         label="Name"
-         layout="topleft"
-         left="10"
-         name="name_list"
-         right="-10"
-         search_column="1"
-         top="80">
-            <scroll_list.columns
-             label="Title"
-             name="title_column"
-             width="150" />
-            <scroll_list.columns
-             label="File"
-             name="file_column"
-             width="150" />
-            <scroll_list.columns
-             dynamic_width="true"
-             label="Top-Level Node"
-             name="top_level_node_column" />
-        </scroll_list>
-        <panel
-         bevel_style="in"
-         bg_alpha_color="0 0 0 0"
-         bg_opaque_color="0 0 0 0.3"
-         border="true"
-         bottom_delta="65"
-         follows="left|right|bottom"
-         height="60"
-         layout="topleft"
-         left="10"
-         name="editor_panel"
-         right="-10">
-            <text
-             type="string"
-             length="1"
-             follows="left|bottom"
-             font="SansSerif"
-             height="30"
-             layout="topleft"
-             left="10"
-             left_delta="10"
-             name="editor_path_label"
-             top="10"
-             width="100">
-                Editor Path:
-            </text>
-            <line_editor
-             border_style="line"
-             border_thickness="1"
-             follows="left|bottom"
-             font="SansSerif"
-             handle_edit_keys_directly="true"
-             height="20"
-             layout="topleft"
-             left_delta="100"
-             max_length="300"
-             name="executable_path_field"
-             select_on_focus="true"
-             tool_tip="The full path to an editor (executable) to edit floater XML files (quotes not necessary)"
-             top_delta="-2"
-             width="315" />
-            <button
-             follows="left|bottom"
-             height="25"
-             label="Browse..."
-             label_selected="Browse..."
-             layout="topleft"
-             left_pad="5"
-             name="browse_for_executable"
-             tool_tip="Browse for an editor (executable) to edit floater XML files"
-             top_delta="-2"
-             width="75" />
-            <text
-             type="string"
-             length="1"
-             follows="left|bottom"
-             font="SansSerif"
-             height="30"
-             layout="topleft"
-             left="10"
-             left_delta="-420"
-             name="executable_args_label"
-             top="36"
-             width="100">
-                Editor Arguments:
-            </text>
-            <line_editor
-             border_style="line"
-             border_thickness="1"
-             follows="left|bottom"
-             font="SansSerif"
-             handle_edit_keys_directly="true"
-             height="20"
-             layout="topleft"
-             left_delta="100"
-             max_length="300"
-             name="executable_args_field"
-             select_on_focus="true"
-             tool_tip="Command-line arguments to the editor; use &apos;%FILE%&apos; to refer to the target file; &apos;YourProgram.exe FileName.xml&apos; will be run if this field is empty"
-             top_delta="-2"
-             width="315" />
-        </panel>
-        <panel
-         bevel_style="in"
-         bg_alpha_color="0 0 0 0"
-         bg_opaque_color="0 0 0 0.3"
-         border="true"
-         bottom_delta="40"
-         follows="left|right|bottom"
-         height="35"
-         layout="topleft"
-         left="10"
-         name="vlt_panel"
-         right="-10">
-            <text
-             type="string"
-             length="1"
-             follows="left|bottom"
-             font="SansSerif"
-             height="30"
-             layout="topleft"
-             left="10"
-             left_delta="10"
-             name="diff_file_label"
-             top="10"
-             width="200">
-                Delta File:
-            </text>
-            <line_editor
-             border_style="line"
-             border_thickness="1"
-             follows="left|bottom"
-             font="SansSerif"
-             handle_edit_keys_directly="true"
-             height="20"
-             layout="topleft"
-             left_delta="65"
-             max_length="300"
-             name="vlt_diff_path_field"
-             select_on_focus="true"
-             tool_tip="The full path to an XML D0 or D1 localization difference file generated by the Viewer Localization Toolkit"
-             top_delta="-2"
-             width="235" />
-            <button
-             follows="left|bottom"
-             height="25"
-             label="Browse..."
-             label_selected="Browse..."
-             layout="topleft"
-             left_pad="5"
-             name="browse_for_vlt_diffs"
-             tool_tip="Browse for a VLT-generated D0 or D1 difference file to highlight changed files and elements"
-             top_delta="-2"
-             width="75" />
-            <button
-             follows="left|bottom"
-             height="25"
-             is_toggle="true"
-             label="Highlight Diffs"
-             label_selected="Unhighlight Diffs"
-             layout="topleft"
-             left_pad="5"
-             name="toggle_vlt_diff_highlight"
-             tool_tip="Toggle highlighting of files and elements containing changed localization data"
-             top_delta="0"
-             width="110" />
-        </panel>
-    </panel>
-    <scroll_container
-     follows="top|right|bottom"
-     height="600"
-     layout="topleft"
-     left="750"
-     name="overlap_scroll"
-     reserve_scroll_corner="true"
-     top="20"
-     width="300">
-      <panel
-        border="true"
-        name="overlap_dummy_panel"
-        top="0"
-        left="0"
-        width="300"
-        height="600"
-        >
-        <overlap_panel
-         background_opaque="true"
-         background_visible="true"
-         bevel_style="in"
-         bg_alpha_color="0 0 0 1"
-         bg_opaque_color="1 1 1 1"
-         border="true"
-         follows="top|right|bottom"
-         height="600"
-         label="Overlap Panel"
-         layout="topleft"
-         left="0"
-         min_width="300"
-         name="overlap_panel"
-         tool_tip="This panel displays the currently-selected element and all of the elements that overlap it, separated by horizontal lines"
-         top="0"
-         visible="false"
-         width="300" />
-        <text
-         type="string"
-         length="1"
-         follows="top|right"
-         font="SansSerif"
-         height="30"
-         layout="topleft"
-         left="10"
-         name="overlap_panel_label"
-         top="10"
-         width="150">
-            Overlapping Elements:
-        </text>
-      </panel>
-    </scroll_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index b378944e48a..ada702cffef 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -299,1453 +299,6 @@
 	<!-- LSL Usage Hover Tips -->
 	<!-- NOTE: For now these are set as translate="false", until DEV-40761 is implemented (to internationalize the rest of tooltips in the same window).
              This has no effect on viewer code, but prevents Linden Lab internal localization tool from scraping these strings.  -->
-	<string name="LSLTipSleepTime" translate="false">
-Sleeps script for [SLEEP_TIME] seconds.
-	</string>
-
-	<string name="LSLTipText_llSin" translate="false">
-float llSin(float theta)
-Returns the sine of theta (theta in radians)
-	</string>
-	<string name="LSLTipText_llCos" translate="false">
-float llCos(float theta)
-Returns the cosine of theta (theta in radians)
-	</string>
-	<string name="LSLTipText_llTan" translate="false">
-float llTan(float theta)
-Returns the tangent of theta (theta in radians)
-	</string>
-	<string name="LSLTipText_llAtan2" translate="false">
-float llAtan2(float y, float x)
-Returns the arctangent2 of y, x
-	</string>
-	<string name="LSLTipText_llSqrt" translate="false">
-float llSqrt(float val)
-Returns the square root of val, or returns 0 and triggers a Math Error for imaginary results
-	</string>
-	<string name="LSLTipText_llPow" translate="false">
-float llPow(float base, float exponent)
-Returns the base raised to the power exponent, or returns 0 and triggers Math Error for imaginary results
-	</string>
-	<string name="LSLTipText_llAbs" translate="false">
-integer llAbs(integer val)
-Returns the positive version of val
-	</string>
-	<string name="LSLTipText_llFabs" translate="false">
-float llFabs(float val)
-Returns the positive version of val
-	</string>
-	<string name="LSLTipText_llFrand" translate="false">
-float llFrand(float mag)
-Returns a pseudo random number in the range [0,mag) or (mag,0]
-	</string>
-	<string name="LSLTipText_llFloor" translate="false">
-integer llFloor(float val)
-Returns largest integer value &lt;= val
-	</string>
-	<string name="LSLTipText_llCeil" translate="false">
-integer llCeil(float val)
-Returns smallest integer value &gt;= val
-	</string>
-	<string name="LSLTipText_llRound" translate="false">
-integer llRound(float val)
-Returns val rounded to the nearest integer
-	</string>
-	<string name="LSLTipText_llVecMag" translate="false">
-float llVecMag(vector v)
-Returns the magnitude of v
-	</string>
-	<string name="LSLTipText_llVecNorm" translate="false">
-vector llVecNorm(vector v)
-Returns the v normalized
-	</string>
-	<string name="LSLTipText_llVecDist" translate="false">
-float llVecDist(vector v1, vector v2)
-Returns the 3D distance between v1 and v2
-	</string>
-	<string name="LSLTipText_llRot2Euler" translate="false">
-vector llRot2Euler(rotation q)
-Returns the Euler representation (roll, pitch, yaw) of q
-	</string>
-	<string name="LSLTipText_llEuler2Rot" translate="false">
-rotation llEuler2Rot(vector v)
-Returns the rotation representation of Euler Angles v
-	</string>
-	<string name="LSLTipText_llAxes2Rot" translate="false">
-rotation llAxes2Rot(vector fwd, vector left, vector up)
-Returns the rotation defined by the coordinate axes
-	</string>
-	<string name="LSLTipText_llRot2Fwd" translate="false">
-vector llRot2Fwd(rotation q)
-Returns the forward vector defined by q
-	</string>
-	<string name="LSLTipText_llRot2Left" translate="false">
-vector llRot2Left(rotation q)
-Returns the left vector defined by q
-	</string>
-	<string name="LSLTipText_llRot2Up" translate="false">
-vector llRot2Up(rotation q)
-Returns the up vector defined by q
-	</string>
-	<string name="LSLTipText_llRotBetween" translate="false">
-rotation llRotBetween(vector v1, vector v2)
-Returns the rotation to rotate v1 to v2
-	</string>
-	<string name="LSLTipText_llWhisper" translate="false">
-llWhisper(integer channel, string msg)
-Whispers the text of msg on channel
-	</string>
-	<string name="LSLTipText_llSay" translate="false">
-llSay(integer channel, string msg)
-Says the text of msg on channel
-	</string>
-	<string name="LSLTipText_llShout" translate="false">
-llShout(integer channel, string msg)
-Shouts the text of msg on channel
-	</string>
-	<string name="LSLTipText_llListen" translate="false">
-integer llListen(integer channel, string name, key id, string msg)
-Sets a callback for msg on channel from name and id (name, id, and/or msg can be empty) and returns an identifier that can be used to deactivate or remove the listen
-	</string>
-	<string name="LSLTipText_llListenControl" translate="false">
-llListenControl(integer number, integer active)
-Makes a listen event callback active or inactive
-	</string>
-	<string name="LSLTipText_llListenRemove" translate="false">
-llListenRemove(integer number)
-Removes listen event callback number
-	</string>
-	<string name="LSLTipText_llSensor" translate="false">
-llSensor(string name, key id, integer type, float range, float arc)
-Performs a single scan for name and id with type (AGENT, ACTIVE, PASSIVE, and/or SCRIPTED) within range meters and arc radians of forward vector (name, id, and/or keytype can be empty or 0)
-	</string>
-	<string name="LSLTipText_llSensorRepeat" translate="false">
-llSensorRepeat(string name, key id, integer type, float range, float arc, float rate)
-Sets a callback for name and id with type (AGENT, ACTIVE, PASSIVE, and/or SCRIPTED) within range meters and arc radians of forward vector (name, id, and/or keytype can be empty or 0) and repeats every rate seconds
-	</string>
-	<string name="LSLTipText_llSensorRemove" translate="false">
-llSensorRemove()
-Removes the sensor setup by llSensorRepeat
-	</string>
-	<string name="LSLTipText_llDetectedName" translate="false">
-string llDetectedName(integer number)
-Returns the name of detected object number (returns empty string if number is not a valid sensed object)
-	</string>
-	<string name="LSLTipText_llDetectedKey" translate="false">
-key llDetectedKey(integer number)
-Returns the key of detected object number (returns empty key if number is not a valid sensed object)
-	</string>
-	<string name="LSLTipText_llDetectedOwner" translate="false">
-key llDetectedOwner(integer number)
-Returns the key of detected object&apos;s owner (returns empty key if number is not a valid sensed object)
-	</string>
-	<string name="LSLTipText_llDetectedType" translate="false">
-integer llDetectedType(integer number)
-Returns the type (AGENT, ACTIVE, PASSIVE, SCRIPTED) of detected object (returns 0 if number is not a valid sensed object)
-	</string>
-	<string name="LSLTipText_llDetectedPos" translate="false">
-vector llDetectedPos(integer number)
-Returns the position of detected object number (returns &lt;0,0,0&gt; if number is not a valid sensed object)
-	</string>
-	<string name="LSLTipText_llDetectedVel" translate="false">
-vector llDetectedVel(integer number)
-Returns the velocity of detected object number (returns &lt;0,0,0&gt; if number is not a valid sensed object)
-	</string>
-	<string name="LSLTipText_llDetectedGrab" translate="false">
-vector llDetectedGrab(integer number)
-Returns the grab offset of the user touching object (returns &lt;0,0,0&gt; if number is not a valid sensed object)
-	</string>
-	<string name="LSLTipText_llDetectedRot" translate="false">
-rotation llDetectedRot(integer number)
-Returns the rotation of detected object number (returns &lt;0,0,0,1&gt; if number is not a valid sensed object)
-	</string>
-	<string name="LSLTipText_llDetectedGroup" translate="false">
-integer llDetectedGroup(integer number)
-Returns TRUE if detected object is part of same group as owner
-	</string>
-	<string name="LSLTipText_llDetectedLinkNumber" translate="false">
-integer llDetectedLinkNumber(integer number)
-Returns the link position of the triggered event for touches and collisions only
-	</string>
-	<string name="LSLTipText_llDie" translate="false">
-llDie()
-Deletes the object
-	</string>
-	<string name="LSLTipText_llGround" translate="false">
-float llGround(vector offset)
-Returns the ground height below the object position + offset
-	</string>
-	<string name="LSLTipText_llCloud" translate="false">
-float llCloud(vector offset)
-Returns the cloud density at the object position + offset
-	</string>
-	<string name="LSLTipText_llWind" translate="false">
-vector llWind(vector offset)
-Returns the wind velocity at the object position + offset
-	</string>
-	<string name="LSLTipText_llSetStatus" translate="false">
-llSetStatus(integer status, integer value)
-Sets status (STATUS_PHYSICS, STATUS_PHANTOM, STATUS_BLOCK_GRAB, STATUS_ROTATE_X, STATUS_ROTATE_Y, and/or STATUS_ROTATE_Z) to value
-	</string>
-	<string name="LSLTipText_llGetStatus" translate="false">
-integer llGetStatus(integer status)
-Returns value of status (STATUS_PHYSICS, STATUS_PHANTOM, STATUS_BLOCK_GRAB, STATUS_ROTATE_X, STATUS_ROTATE_Y, and/or STATUS_ROTATE_Z)
-	</string>
-	<string name="LSLTipText_llSetScale" translate="false">
-llSetScale(vector scale)
-Sets the scale of the prim
-	</string>
-	<string name="LSLTipText_llGetScale" translate="false">
-vector llGetScale()
-Returns the scale of the prim
-	</string>
-	<string name="LSLTipText_llSetColor" translate="false">
-llSetColor(vector color, integer face)
-Sets the color on face of the prim
-	</string>
-	<string name="LSLTipText_llGetAlpha" translate="false">
-float llGetAlpha(integer face)
-Returns the alpha of face
-	</string>
-	<string name="LSLTipText_llSetAlpha" translate="false">
-llSetAlpha(float alpha, integer face)
-Sets the alpha on face
-	</string>
-	<string name="LSLTipText_llGetColor" translate="false">
-vector llGetColor(integer face)
-Returns the color on face
-	</string>
-	<string name="LSLTipText_llSetTexture" translate="false">
-llSetTexture(string texture, integer face)
-Sets the texture of face or ALL_SIDES
-	</string>
-	<string name="LSLTipText_llScaleTexture" translate="false">
-llScaleTexture(float u, float v, integer face)
-Sets the texture u &amp; v scales for the chosen face or ALL_SIDES
-	</string>
-	<string name="LSLTipText_llOffsetTexture" translate="false">
-llOffsetTexture(float u, float v, integer face)
-Sets the texture u &amp; v offsets for the chosen face or ALL_SIDES
-	</string>
-	<string name="LSLTipText_llRotateTexture" translate="false">
-llRotateTexture(float rotation, integer face)
-Sets the texture rotation for the chosen face
-	</string>
-	<string name="LSLTipText_llGetTexture" translate="false">
-string llGetTexture(integer face)
-Returns a string that is the texture on face (the inventory name if it is a texture in the prim&apos;s inventory, otherwise the key)
-	</string>
-	<string name="LSLTipText_llSetPos" translate="false">
-llSetPos(vector pos)
-Moves the object or prim towards pos without using physics (if the script isn&apos;t physical)
-	</string>
-	<string name="LSLTipText_llGetPos" translate="false">
-vector llGetPos()
-Returns the position of the task in region coordinates
-	</string>
-	<string name="LSLTipText_llGetLocalPos" translate="false">
-vector llGetLocalPos()
-Returns the position relative to the root
-	</string>
-	<string name="LSLTipText_llSetRot" translate="false">
-llSetRot(rotation rot)
-Sets the rotation
-	</string>
-	<string name="LSLTipText_llGetRot" translate="false">
-rotation llGetRot()
-Returns the rotation relative to the region&apos;s axes
-	</string>
-	<string name="LSLTipText_llGetLocalRot" translate="false">
-rotation llGetLocalRot()
-Returns the rotation local to the root
-	</string>
-	<string name="LSLTipText_llSetForce" translate="false">
-llSetForce(vector force, integer local)
-Applies force to the object (if the script is physical), in local coords if local == TRUE
-	</string>
-	<string name="LSLTipText_llGetForce" translate="false">
-vector llGetForce()
-Returns the force (if the script is physical)
-	</string>
-	<string name="LSLTipText_llTarget" translate="false">
-integer llTarget(vector position, float range)
-Sets positions within range of position as a target and return an ID for the target
-	</string>
-	<string name="LSLTipText_llTargetRemove" translate="false">
-llTargetRemove(integer number)
-Removes positional target number registered with llTarget
-	</string>
-	<string name="LSLTipText_llRotTarget" translate="false">
-integer llRotTarget(rotation rot, float error)
-Set rotations with error of rot as a rotational target and return an ID for the rotational target
-	</string>
-	<string name="LSLTipText_llRotTargetRemove" translate="false">
-llRotTargetRemove(integer number)
-Removes rotational target number registered with llRotTarget
-	</string>
-	<string name="LSLTipText_llMoveToTarget" translate="false">
-llMoveToTarget(vector target, float tau)
-Critically damps to target in tau seconds (if the script is physical)
-	</string>
-	<string name="LSLTipText_llStopMoveToTarget" translate="false">
-llStopMoveToTarget()
-Stops critically damped motion
-	</string>
-	<string name="LSLTipText_llApplyImpulse" translate="false">
-llApplyImpulse(vector force, integer local)
-Applies impulse to object (if the script is physical), in local coords if local == TRUE
-	</string>
-	<string name="LSLTipText_llApplyRotationalImpulse" translate="false">
-llApplyRotationalImpulse(vector force, integer local)
-Applies rotational impulse to object (if the script is physical), in local coords if local == TRUE
-	</string>
-	<string name="LSLTipText_llSetTorque" translate="false">
-llSetTorque(vector torque, integer local)
-Sets the torque of object (if the script is physical), in local coords if local == TRUE
-	</string>
-	<string name="LSLTipText_llGetTorque" translate="false">
-vector llGetTorque()
-Returns the torque (if the script is physical)
-	</string>
-	<string name="LSLTipText_llSetForceAndTorque" translate="false">
-llSetForceAndTorque(vector force, vector torque, integer local)
-Sets the force and torque of object (if the script is physical), in local coords if local == TRUE
-	</string>
-	<string name="LSLTipText_llGetVel" translate="false">
-vector llGetVel()
-Returns the velocity of the object
-	</string>
-	<string name="LSLTipText_llGetAccel" translate="false">
-vector llGetAccel()
-Returns the acceleration of the object relative to the region&apos;s axes
-	</string>
-	<string name="LSLTipText_llGetOmega" translate="false">
-vector llGetOmega()
-Returns the rotation velocity in radians per second
-	</string>
-	<string name="LSLTipText_llGetTimeOfDay" translate="false">
-float llGetTimeOfDay()
-Returns the time in seconds since [SECOND_LIFE] server midnight or since region up-time, whichever is smaller
-	</string>
-	<string name="LSLTipText_llGetWallclock" translate="false">
-float llGetWallclock()
-Returns the time in seconds since midnight California Pacific time (PST/PDT)
-	</string>
-	<string name="LSLTipText_llGetTime" translate="false">
-float llGetTime()
-Returns the time in seconds since the last region reset, script reset, or call to either llResetTime or llGetAndResetTime
-	</string>
-	<string name="LSLTipText_llResetTime" translate="false">
-llResetTime()
-Sets the script timer to zero
-	</string>
-	<string name="LSLTipText_llGetAndResetTime" translate="false">
-float llGetAndResetTime()
-Returns the script time in seconds and then resets the script timer to zero
-	</string>
-	<string name="LSLTipText_llSoplayund" translate="false">
-llSound(string sound, float volume, integer queue, integer loop)
-Plays sound at volume and whether it should loop or not
-	</string>
-	<string name="LSLTipText_llPlaySound" translate="false">
-llPlaySound(string sound, float volume)
-Plays attached sound once at volume (0.0 - 1.0)
-	</string>
-	<string name="LSLTipText_llLoopSound" translate="false">
-llLoopSound(string sound, float volume)
-Plays attached sound looping indefinitely at volume (0.0 - 1.0)
-	</string>
-	<string name="LSLTipText_llLoopSoundMaster" translate="false">
-llLoopSoundMaster(string sound, float volume)
-Plays attached sound looping at volume (0.0 - 1.0), declares it a sync master
-	</string>
-	<string name="LSLTipText_llLoopSoundSlave" translate="false">
-llLoopSoundSlave(string sound, float volume)
-Plays attached sound looping at volume (0.0 - 1.0), synced to most audible sync master
-	</string>
-	<string name="LSLTipText_llPlaySoundSlave" translate="false">
-llPlaySoundSlave(string sound, float volume)
-Plays attached sound once at volume (0.0 - 1.0), synced to next loop of most audible sync master
-	</string>
-	<string name="LSLTipText_llTriggerSound" translate="false">
-llTriggerSound(string sound, float volume)
-Plays sound at volume (0.0 - 1.0), centered at but not attached to object
-	</string>
-	<string name="LSLTipText_llStopSound" translate="false">
-llStopSound()
-Stops currently attached sound
-	</string>
-	<string name="LSLTipText_llPreloadSound" translate="false">
-llPreloadSound(string sound)
-Preloads a sound on viewers within range
-	</string>
-	<string name="LSLTipText_llGetSubString" translate="false">
-string llGetSubString(string src, integer start, integer end)
-Returns the indicated substring
-	</string>
-	<string name="LSLTipText_llDeleteSubString" translate="false">
-string llDeleteSubString(string src, integer start, integer end)
-Removes the indicated substring and returns the result
-	</string>
-	<string name="LSLTipText_llInsertString" translate="false">
-string llInsertString(string dst, integer position, string src)
-Returns a destination string dst with the string src inserted starting at position pos
-	</string>
-	<string name="LSLTipText_llToUpper" translate="false">
-string llToUpper(string src)
-Returns a string that is src with all upper-case characters
-	</string>
-	<string name="LSLTipText_llToLower" translate="false">
-string llToLower(string src)
-Returns a string that is src with all lower-case characters
-	</string>
-	<string name="LSLTipText_llGiveMoney" translate="false">
-llGiveMoney(key destination, integer amount)
-Transfers amount of L$ from script owner to destination
-	</string>
-	<string name="LSLTipText_llMakeExplosion" translate="false">
-llMakeExplosion(integer particles, float scale, float vel, float lifetime, float arc, string texture, vector offset)
-Makes a round explosion of particles
-	</string>
-	<string name="LSLTipText_llMakeFountain" translate="false">
-llMakeFountain(integer particles, float scale, float vel, float lifetime, float arc, integer bounce, string texture, vector offset, float bounce_offset)
-Makes a fountain of particles
-	</string>
-	<string name="LSLTipText_llMakeSmoke" translate="false">
-llMakeSmoke(integer particles, float scale, float vel, float lifetime, float arc, string texture, vector offset)
-Makes smoke like particles
-	</string>
-	<string name="LSLTipText_llMakeFire" translate="false">
-llMakeFire(integer particles, float scale, float vel, float lifetime, float arc, string texture, vector offset)
-Makes fire like particles
-	</string>
-	<string name="LSLTipText_llRezObject" translate="false">
-llRezObject(string inventory, vector pos, vector vel, rotation rot, integer param)
-Instantiates owner&apos;s inventory object at pos with velocity vel and rotation rot with start parameter param
-	</string>
-	<string name="LSLTipText_llLookAt" translate="false">
-llLookAt(vector target, float strength, float damping)
-Causes object to point its up axis (positive z) towards target, while keeping its forward axis (positive x) below the horizon
-	</string>
-	<string name="LSLTipText_llStopLookAt" translate="false">
-llStopLookAt()
-Stops causing object to point at a target
-	</string>
-	<string name="LSLTipText_llSetTimerEvent" translate="false">
-llSetTimerEvent(float sec)
-Causes the timer event to be triggered a maximum of once every sec seconds
-	</string>
-	<string name="LSLTipText_llSleep" translate="false">
-llSleep(float sec)
-Puts the script to sleep for sec seconds
-	</string>
-	<string name="LSLTipText_llGetMass" translate="false">
-float llGetMass()
-Returns the mass of object that the script is attached to
-	</string>
-	<string name="LSLTipText_llCollisionFilter" translate="false">
-llCollisionFilter(string name, key id, integer accept)
-Sets the collision filter, exclusively or inclusively. If accept == TRUE, only accept collisions with objects name and id (either is optional), otherwise with objects not name or id
-	</string>
-	<string name="LSLTipText_llTakeControls" translate="false">
-llTakeControls(integer controls, integer accept, integer pass_on)
-Allows for intercepting keyboard and mouse clicks from the agent the script has permissions for
-	</string>
-	<string name="LSLTipText_llReleaseControls" translate="false">
-llReleaseControls()
-Stops taking inputs that were taken with llTakeControls
-	</string>
-	<string name="LSLTipText_llAttachToAvatar" translate="false">
-llAttachToAvatar(integer attach_point)
-Attaches the object to the avatar who has granted permission to the script
-	</string>
-	<string name="LSLTipText_llDetachFromAvatar" translate="false">
-llDetachFromAvatar()
-Detaches object from avatar
-	</string>
-	<string name="LSLTipText_llTakeCamera" translate="false">
-llTakeCamera(key avatar)
-Moves avatar&apos;s viewpoint to task
-	</string>
-	<string name="LSLTipText_llReleaseCamera" translate="false">
-llReleaseCamera(key avatar)
-Returns camera to agent avatar
-	</string>
-	<string name="LSLTipText_llGetOwner" translate="false">
-key llGetOwner()
-Returns the object owner&apos;s UUID
-	</string>
-	<string name="LSLTipText_llInstantMessage" translate="false">
-llInstantMessage(key user, string message)
-Sends the specified string as an Instant Message to the user
-	</string>
-	<string name="LSLTipText_llEmail" translate="false">
-llEmail(string address, string subject, string message)
-Sends an email to address with the subject and message
-	</string>
-	<string name="LSLTipText_llGetNextEmail" translate="false">
-llGetNextEmail(string address, string subject)
-Gets the next waiting email that comes from address, with specified subject
-	</string>
-	<string name="LSLTipText_llGetKey" translate="false">
-key llGetKey()
-Returns the key of the prim the script is attached to
-	</string>
-	<string name="LSLTipText_llSetBuoyancy" translate="false">
-llSetBuoyancy(float buoyancy)
-Sets the buoyancy of the task or object (0 is disabled, &lt; 1.0 sinks, 1.0 floats, &gt; 1.0 rises)
-	</string>
-	<string name="LSLTipText_llSetHoverHeight" translate="false">
-llSetHoverHeight(float height, integer water, float tau)
-Critically damps to a height above the ground (or water) in tau seconds
-	</string>
-	<string name="LSLTipText_llStopHover" translate="false">
-llStopHover()
-Stops hovering to a height
-	</string>
-	<string name="LSLTipText_llMinEventDelay" translate="false">
-llMinEventDelay(float delay)
-Sets the minimum time between events being handled
-	</string>
-	<string name="LSLTipText_llSoundPreload" translate="false">
-llSoundPreload(string sound)
-Preloads a sound on viewers within range
-	</string>
-	<string name="LSLTipText_llRotLookAt" translate="false">
-llRotLookAt(rotation target, float strength, float damping)
-Causes object to point its forward axis towards target
-	</string>
-	<string name="LSLTipText_llStringLength" translate="false">
-integer llStringLength(string str)
-Returns the length of string
-	</string>
-	<string name="LSLTipText_llStartAnimation" translate="false">
-llStartAnimation(string anim)
-Starts animation anim for agent that granted PERMISSION_TRIGGER_ANIMATION if the permission has not been revoked
-	</string>
-	<string name="LSLTipText_llStopAnimation" translate="false">
-llStopAnimation(string anim)
-Stops animation anim for agent that granted permission
-	</string>
-	<string name="LSLTipText_llPointAt" translate="false">
-llPointAt(vector pos)
-Makes agent that owns object point at pos
-	</string>
-	<string name="LSLTipText_llStopPointAt" translate="false">
-llStopPointAt()
-Stops pointing agent that owns object
-	</string>
-	<string name="LSLTipText_llTargetOmega" translate="false">
-llTargetOmega(vector axis, float spinrate, float gain)
-Rotates the object around axis at spinrate with strength gain
-	</string>
-	<string name="LSLTipText_llGetStartParameter" translate="false">
-integer llGetStartParameter()
-Returns an integer that is the script start/rez parameter
-	</string>
-	<string name="LSLTipText_llGodLikeRezObject" translate="false">
-llGodLikeRezObject(key inventory, vector pos)
-Rezzes directly off of UUID if owner is in God Mode
-	</string>
-	<string name="LSLTipText_llRequestPermissions" translate="false">
-llRequestPermissions(key agent, integer perm)
-Asks the agent for permission to run certain classes of functions
-	</string>
-	<string name="LSLTipText_llGetPermissionsKey" translate="false">
-key llGetPermissionsKey()
-Returns the key of the avatar that last granted permissions to the script
-	</string>
-	<string name="LSLTipText_llGetPermissions" translate="false">
-integer llGetPermissions()
-Returns an integer bitfield with the permissions that have been granted
-	</string>
-	<string name="LSLTipText_llGetLinkNumber" translate="false">
-integer llGetLinkNumber()
-Returns the link number of the prim containing the script (0 means not linked, 1 the prim is the root, 2 the prim is the first child, etc)
-	</string>
-	<string name="LSLTipText_llSetLinkColor" translate="false">
-llSetLinkColor(integer linknumber, vector color, integer face)
-Sets face to color if a task exists in the link chain at linknumber
-	</string>
-	<string name="LSLTipText_llCreateLink" translate="false">
-llCreateLink(key target, integer parent)
-Attempts to link the script&apos;s object with the target (requires that PERMISSION_CHANGE_LINKS be granted). If parent == TRUE, then the script&apos;s object becomes the root
-	</string>
-	<string name="LSLTipText_llBreakLink" translate="false">
-llBreakLink(integer linknum)
-Delinks the prim with the given link number in a linked object set (requires that PERMISSION_CHANGE_LINKS be granted)
-	</string>
-	<string name="LSLTipText_llBreakAllLinks" translate="false">
-llBreakAllLinks()
-Delinks all prims in the link set (requires that PERMISSION_CHANGE_LINKS be granted)
-	</string>
-	<string name="LSLTipText_llGetLinkKey" translate="false">
-key llGetLinkKey(integer linknumber)
-Returns the key of the linked prim linknumber
-	</string>
-	<string name="LSLTipText_llGetLinkName" translate="false">
-string llGetLinkName(integer linknumber)
-Returns the name of linknumber in a link set
-	</string>
-	<string name="LSLTipText_llGetInventoryNumber" translate="false">
-integer llGetInventoryNumber(integer type)
-Returns the number of items of a given type (INVENTORY_* flag) in the prim&apos;s inventory
-	</string>
-	<string name="LSLTipText_llGetInventoryName" translate="false">
-string llGetInventoryName(integer type, integer number)
-Returns the name of the inventory item number of a given type
-	</string>
-	<string name="LSLTipText_llSetScriptState" translate="false">
-llSetScriptState(string name, integer run)
-Sets the running state of the specified script
-	</string>
-	<string name="LSLTipText_llGetEnergy" translate="false">
-float llGetEnergy()
-Returns how much energy is in the object as a percentage of maximum
-	</string>
-	<string name="LSLTipText_llGiveInventory" translate="false">
-llGiveInventory(key destination, string inventory)
-Gives inventory to destination
-	</string>
-	<string name="LSLTipText_llRemoveInventory" translate="false">
-llRemoveInventory(string item)
-Removes the named inventory item
-	</string>
-	<string name="LSLTipText_llSetText" translate="false">
-llSetText(string text, vector color, float alpha)
-Displays text that hovers over the prim with specific color and translucency specified with alpha
-	</string>
-	<string name="LSLTipText_llWater" translate="false">
-float llWater(vector offset)
-Returns the water height below the object position + offset
-	</string>
-	<string name="LSLTipText_llPassTouches" translate="false">
-llPassTouches(integer pass)
-If pass == TRUE, touches are passed from children on to parents
-	</string>
-	<string name="LSLTipText_llRequestAgentData" translate="false">
-key llRequestAgentData(key id, integer data)
-Requests data about agent id. When data is available the dataserver event will be raised.
-	</string>
-	<string name="LSLTipText_llRequestInventoryData" translate="false">
-key llRequestInventoryData(string name)
-Requests data from object&apos;s inventory object. When data is available the dataserver event will be raised.
-	</string>
-	<string name="LSLTipText_llSetDamage" translate="false">
-llSetDamage(float damage)
-Sets the amount of damage that will be done when this object hits an avatar.
-	</string>
-	<string name="LSLTipText_llTeleportAgentHome" translate="false">
-llTeleportAgentHome(key id)
-Teleports avatar on the owner&apos;s land to their home location without any warning
-	</string>
-	<string name="LSLTipText_llModifyLand" translate="false">
-llModifyLand(integer action, integer brush)
-Modifies land using the specified action on the specified brush size of land
-	</string>
-	<string name="LSLTipText_llCollisionSound" translate="false">
-llCollisionSound(string impact_sound, float impact_volume)
-Suppresses default collision sounds, replaces default impact sounds with impact_sound at the volume impact_volume
-	</string>
-	<string name="LSLTipText_llCollisionSprite" translate="false">
-llCollisionSprite(string impact_sprite)
-Suppresses default collision sprites, replaces default impact sprite with impact_sprite (use an empty string to just suppress)
-	</string>
-	<string name="LSLTipText_llGetAnimation" translate="false">
-string llGetAnimation(key id)
-Returns the name of the currently playing locomotion animation for avatar id
-	</string>
-	<string name="LSLTipText_llResetScript" translate="false">
-llResetScript()
-Resets the script
-	</string>
-	<string name="LSLTipText_llMessageLinked" translate="false">
-llMessageLinked(integer linknum, integer num, string str, key id)
-Allows scripts in the same object to communicate. Triggers a link_message event with the same parameters num, str, and id in all scripts in the prim(s) described by linknum.
-	</string>
-	<string name="LSLTipText_llPushObject" translate="false">
-llPushObject(key id, vector impulse, vector ang_impulse, integer local)
-Applies impulse and ang_impulse to object id
-	</string>
-	<string name="LSLTipText_llPassCollisions" translate="false">
-llPassCollisions(integer pass)
-If pass == TRUE, collisions are passed from children on to parents (default is FALSE)
-	</string>
-	<string name="LSLTipText_llGetScriptName" translate="false">
-string llGetScriptName()
-Returns the name of the script that this function is used in
-	</string>
-	<string name="LSLTipText_llGetNumberOfSides" translate="false">
-integer llGetNumberOfSides()
-Returns the number of faces (or sides) of the prim
-	</string>
-	<string name="LSLTipText_llAxisAngle2Rot" translate="false">
-rotation llAxisAngle2Rot(vector axis, float angle)
-Returns the rotation that is a generated angle about axis
-	</string>
-	<string name="LSLTipText_llRot2Axis" translate="false">
-vector llRot2Axis(rotation rot)
-Returns the rotation axis represented by rot
-	</string>
-	<string name="LSLTipText_llRot2Angle" translate="false">
-float llRot2Angle(rotation rot)
-Returns the rotation angle represented by rot
-	</string>
-	<string name="LSLTipText_llAcos" translate="false">
-float llAcos(float val)
-Returns the arccosine in radians of val
-	</string>
-	<string name="LSLTipText_llAsin" translate="false">
-float llAsin(float val)
-Returns the arcsine in radians of val
-	</string>
-	<string name="LSLTipText_llAngleBetween" translate="false">
-float llAngleBetween(rotation a, rotation b)
-Returns angle between rotation a and b
-	</string>
-	<string name="LSLTipText_llGetInventoryKey" translate="false">
-key llGetInventoryKey(string name)
-Returns the key that is the UUID of the inventory name
-	</string>
-	<string name="LSLTipText_llAllowInventoryDrop" translate="false">
-llAllowInventoryDrop(integer add)
-If add == TRUE, users without modify permissions can still drop inventory items onto a prim
-	</string>
-	<string name="LSLTipText_llGetSunDirection" translate="false">
-vector llGetSunDirection()
-Returns a normalized vector of the direction of the sun in the region
-	</string>
-	<string name="LSLTipText_llGetTextureOffset" translate="false">
-vector llGetTextureOffset(integer face)
-Returns the texture offset of face in the x and y components of a vector
-	</string>
-	<string name="LSLTipText_llGetTextureScale" translate="false">
-vector llGetTextureScale(integer side)
-Returns the texture scale of side in the x and y components of a vector
-	</string>
-	<string name="LSLTipText_llGetTextureRot" translate="false">
-float llGetTextureRot(integer side)
-Returns the texture rotation of side
-	</string>
-	<string name="LSLTipText_llSubStringIndex" translate="false">
-integer llSubStringIndex(string source, string pattern)
-Returns an integer that is the index in source where pattern first appears.
-(Returns -1 if not found)
-	</string>
-	<string name="LSLTipText_llGetOwnerKey" translate="false">
-key llGetOwnerKey(key id)
-Returns the owner of object id
-	</string>
-	<string name="LSLTipText_llGetCenterOfMass" translate="false">
-vector llGetCenterOfMass()
-Returns the prim&apos;s center of mass (unless called from the root prim, where it returns the object&apos;s center of mass)
-	</string>
-	<string name="LSLTipText_llListSort" translate="false">
-list llListSort(list src, integer stride, integer ascending)
-Sorts the list into blocks of stride, in ascending order if ascending == TRUE.
-The sort order is affected by type.
-	</string>
-	<string name="LSLTipText_llGetListLength" translate="false">
-integer llGetListLength(list src)
-Returns the number of elements in the list
-	</string>
-	<string name="LSLTipText_llList2Integer" translate="false">
-integer llList2Integer(list src, integer index)
-Copies the integer at index in the list
-	</string>
-	<string name="LSLTipText_llList2Float" translate="false">
-float llList2Float(list src, integer index)
-Copies the float at index in the list
-	</string>
-	<string name="LSLTipText_llList2String" translate="false">
-string llList2String(list src, integer index)
-Copies the string at index in the list
-	</string>
-	<string name="LSLTipText_llList2Key" translate="false">
-key llList2Key(list src, integer index)
-Copies the key at index in the list
-	</string>
-	<string name="LSLTipText_llList2Vector" translate="false">
-vector llList2Vector(list src, integer index)
-Copies the vector at index in the list
-	</string>
-	<string name="LSLTipText_llList2Rot" translate="false">
-rotation llList2Rot(list src, integer index)
-Copies the rotation at index in the list
-	</string>
-	<string name="LSLTipText_llList2List" translate="false">
-list llList2List(list src, integer start, integer end)
-Copies the slice of the list from start to end
-	</string>
-	<string name="LSLTipText_llDeleteSubList" translate="false">
-list llDeleteSubList(list src, integer start, integer end)
-Removes the slice from start to end and returns the remainder of the list
-	</string>
-	<string name="LSLTipText_llGetListEntryType" translate="false">
-integer llGetListEntryType(list src, integer index)
-Returns the type of the index entry in the list
-(TYPE_INTEGER, TYPE_FLOAT, TYPE_STRING, TYPE_KEY, TYPE_VECTOR, TYPE_ROTATION, or TYPE_INVALID if index is off list)
-	</string>
-	<string name="LSLTipText_llList2CSV" translate="false">
-string llList2CSV(list src)
-Creates a string of comma separated values from list
-	</string>
-	<string name="LSLTipText_llCSV2List" translate="false">
-list llCSV2List(string src)
-Creates a list from a string of comma separated values
-	</string>
-	<string name="LSLTipText_llListRandomize" translate="false">
-list llListRandomize(list src, integer stride)
-Returns a randomized list of blocks of size stride
-	</string>
-	<string name="LSLTipText_llList2ListStrided" translate="false">
-list llList2ListStrided(list src, integer start, integer end, integer stride)
-Copies the strided slice of the list from start to end
-	</string>
-	<string name="LSLTipText_llGetRegionCorner" translate="false">
-vector llGetRegionCorner()
-Returns a vector in meters that is the global location of the south-west corner of the region which the object is in
-	</string>
-	<string name="LSLTipText_llListInsertList" translate="false">
-list llListInsertList(list dest, list src, integer start)
-Returns a list that contains all the elements from dest but with the elements from src inserted at position start
-	</string>
-	<string name="LSLTipText_llListFindList" translate="false">
-integer llListFindList(list src, list test)
-Returns the index of the first instance of test in src.
-(Returns -1 if not found)
-	</string>
-	<string name="LSLTipText_llGetObjectName" translate="false">
-string llGetObjectName()
-Returns the name of the prim which the script is attached to
-	</string>
-	<string name="LSLTipText_llSetObjectName" translate="false">
-llSetObjectName(string name)
-Sets the prim&apos;s name to the name parameter
-	</string>
-	<string name="LSLTipText_llGetDate" translate="false">
-string llGetDate()
-Returns the current date in the UTC time zone in the format YYYY-MM-DD
-	</string>
-	<string name="LSLTipText_llEdgeOfWorld" translate="false">
-integer llEdgeOfWorld(vector pos, vector dir)
-Checks to see whether the border hit by dir from pos is the edge of the world (has no neighboring region)
-	</string>
-	<string name="LSLTipText_llGetAgentInfo" translate="false">
-integer llGetAgentInfo(key id)
-Returns an integer bitfield containing the agent information about id.
-Returns AGENT_FLYING, AGENT_ATTACHMENTS, AGENT_SCRIPTED, AGENT_SITTING, AGENT_ON_OBJECT, AGENT_MOUSELOOK, AGENT_AWAY, AGENT_BUSY, AGENT_TYPING, AGENT_CROUCHING, AGENT_ALWAYS_RUN, AGENT_WALKING and/or AGENT_IN_AIR.
-	</string>
-	<string name="LSLTipText_llAdjustSoundVolume" translate="false">
-llAdjustSoundVolume(float volume)
-Adjusts volume of attached sound (0.0 - 1.0)
-	</string>
-	<string name="LSLTipText_llSetSoundQueueing" translate="false">
-llSetSoundQueueing(integer queue)
-Sets whether attached sounds wait for the current sound to finish (If queue == TRUE then queuing is enabled, if FALSE queuing is disabled [default])
-	</string>
-	<string name="LSLTipText_llSetSoundRadius" translate="false">
-llSetSoundRadius(float radius)
-Establishes a hard cut-off radius for audibility of scripted sounds (both attached and triggered)
-	</string>
-	<string name="LSLTipText_llKey2Name" translate="false">
-string llKey2Name(key id)
-Returns the name of the prim or avatar specified by id.
-(The id must be a valid rezzed prim or avatar key in the current simulator, otherwise an empty string is returned.)
-	</string>
-	<string name="LSLTipText_llSetTextureAnim" translate="false">
-llSetTextureAnim(integer mode, integer face, integer sizex, integer sizey, float start, float length, float rate)
-Animates the texture on the specified face/faces
-	</string>
-	<string name="LSLTipText_llTriggerSoundLimited" translate="false">
-llTriggerSoundLimited(string sound, float volume, vector top_north_east, vector bottom_south_west)
-Plays sound at volume (0.0 - 1.0), centered at but not attached to object, limited to the box defined by vectors top_north_east and bottom_south_west
-	</string>
-	<string name="LSLTipText_llEjectFromLand" translate="false">
-llEjectFromLand(key avatar)
-Ejects avatar from the parcel
-	</string>
-	<string name="LSLTipText_llParseString2List" translate="false">
-list llParseString2List(string src, list separators, list spacers)
-Breaks src into a list, discarding separators, keeping spacers
-(separators and spacers must be lists of strings, maximum of 8 each)
-	</string>
-	<string name="LSLTipText_llOverMyLand" translate="false">
-integer llOverMyLand(key id)
-Returns TRUE if id is over land owned by the script owner, otherwise FALSE
-	</string>
-	<string name="LSLTipText_llGetLandOwnerAt" translate="false">
-key llGetLandOwnerAt(vector pos)
-Returns the key of the land owner, returns NULL_KEY if public
-	</string>
-	<string name="LSLTipText_llGetNotecardLine" translate="false">
-key llGetNotecardLine(string name, integer line)
-Returns line line of notecard name via the dataserver event
-	</string>
-	<string name="LSLTipText_llGetAgentSize" translate="false">
-vector llGetAgentSize(key id)
-If the avatar is in the same region, returns the size of the bounding box of the requested avatar by id, otherwise returns ZERO_VECTOR
-	</string>
-	<string name="LSLTipText_llSameGroup" translate="false">
-integer llSameGroup(key id)
-Returns TRUE if avatar id is in the same region and has the same active group, otherwise FALSE
-	</string>
-	<string name="LSLTipText_llUnSit" translate="false">
-key llUnSit(key id)
-If avatar identified by id is sitting on the object the script is attached to or is over land owned by the object&apos;s owner, the avatar is forced to stand up
-	</string>
-	<string name="LSLTipText_llGroundSlope" translate="false">
-vector llGroundSlope(vector offset)
-Returns the ground slope below the object position + offset
-	</string>
-	<string name="LSLTipText_llGroundNormal" translate="false">
-vector llGroundNormal(vector offset)
-Returns the ground normal below the object position + offset
-	</string>
-	<string name="LSLTipText_llGroundContour" translate="false">
-vector llGroundCountour(vector offset)
-Returns the ground contour direction below the object position + offset
-	</string>
-	<string name="LSLTipText_llGetAttached" translate="false">
-integer llGetAttached()
-Returns the object&apos;s attachment point, or 0 if not attached
-	</string>
-	<string name="LSLTipText_llGetFreeMemory" translate="false">
-integer llGetFreeMemory()
-Returns the number of free bytes of memory the script can use
-	</string>
-	<string name="LSLTipText_llGetRegionName" translate="false">
-string llGetRegionName()
-Returns the current region name
-	</string>
-	<string name="LSLTipText_llGetRegionTimeDilation" translate="false">
-float llGetRegionTimeDilation()
-Returns the current time dilation as a float between 0.0 (full dilation) and 1.0 (no dilation)
-	</string>
-	<string name="LSLTipText_llGetRegionFPS" translate="false">
-float llGetRegionFPS()
-Returns the mean region frames per second
-	</string>
-	<string name="LSLTipText_llParticleSystem" translate="false">
-llParticleSystem(list rules)
-Creates a particle system based on rules.  An empty list removes the particle system.
-List format is [ rule1, data1, rule2, data2 . . . rulen, datan ]
-	</string>
-	<string name="LSLTipText_llGroundRepel" translate="false">
-llGroundRepel(float height, integer water, float tau)
-Critically damps to height if within height*0.5 of level (either above ground level, or above the higher of land and water if water == TRUE)
-	</string>
-	<string name="LSLTipText_llGiveInventoryList" translate="false">
-llGiveInventoryList(key target, string folder, list inventory)
-Gives inventory items to target, creating a new folder to put them in
-	</string>
-	<string name="LSLTipText_llSetVehicleType" translate="false">
-llSetVehicleType(integer type)
-Sets the vehicle to one of the default types
-	</string>
-	<string name="LSLTipText_llSetVehicleFloatParam" translate="false">
-llSetVehicleFloatParam(integer param, float value)
-Sets the specified vehicle float parameter
-	</string>
-	<string name="LSLTipText_llSetVehicleVectorParam" translate="false">
-llSetVehicleVectorParam(integer param, vector vec)
-Sets the specified vehicle vector parameter
-	</string>
-	<string name="LSLTipText_llSetVehicleRotationParam" translate="false">
-llSetVehicleVectorParam(integer param, rotation rot)
-Sets the specified vehicle rotation parameter
-	</string>
-	<string name="LSLTipText_llSetVehicleFlags" translate="false">
-llSetVehicleFlags(integer flags)
-Sets the enabled bits in &apos;flags&apos;
-	</string>
-	<string name="LSLTipText_llRemoveVehicleFlags" translate="false">
-llRemoveVehicleFlags(integer flags)
-Removes the enabled bits in &apos;flags&apos;
-	</string>
-	<string name="LSLTipText_llSitTarget" translate="false">
-llSitTarget(vector offset, rotation rot)
-Sets the sit location for the prim.  If offset == &lt;0,0,0&gt; then the sit target is removed.
-	</string>
-	<string name="LSLTipText_llAvatarOnSitTarget" translate="false">
-key llAvatarOnSitTarget()
-If an avatar is seated on the sit target, returns the avatar&apos;s key, otherwise NULL_KEY
-	</string>
-	<string name="LSLTipText_llAddToLandPassList" translate="false">
-llAddToLandPassList(key avatar, float hours)
-Adds avatar to the land pass list for hours, or indefinitely if hours is 0
-	</string>
-	<string name="LSLTipText_llSetTouchText" translate="false">
-llSetTouchText(string text)
-Displays text rather than the default &apos;Touch&apos; in the pie menu
-	</string>
-	<string name="LSLTipText_llSetSitText" translate="false">
-llSetSitText(string text)
-Displays text rather than the default &apos;Sit Here&apos; in the pie menu
-	</string>
-	<string name="LSLTipText_llSetCameraEyeOffset" translate="false">
-llSetCameraEyeOffset(vector offset)
-Sets the camera eye offset for avatars that sit on the object
-	</string>
-	<string name="LSLTipText_llSetCameraAtOffset" translate="false">
-llSetCameraAtOffset(vector offset)
-Sets the point the camera is looking at to offset for avatars that sit on the object
-	</string>
-	<string name="LSLTipText_llDumpList2String" translate="false">
-string llDumpList2String(list src, string separator)
-Returns the list in a single string, using separator between the entries
-	</string>
-	<string name="LSLTipText_llScriptDanger" translate="false">
-integer llScriptDanger(vector pos)
-Returns TRUE if pos is over public land, sandbox land, land that doesn&apos;t allow everyone to edit and build, or land that doesn&apos;t allow outside scripts
-	</string>
-	<string name="LSLTipText_llDialog" translate="false">
-llDialog(key avatar, string message, list buttons, integer chat_channel
-Shows a dialog box on the avatar&apos;s screen with a message and up to 12 buttons.
-If a button is pressed, the avatar says the text of the button label on chat_channel.
-	</string>
-	<string name="LSLTipText_llVolumeDetect" translate="false">
-llVolumeDetect(integer detect)
-If detect = TRUE, object works much like Phantom, but triggers collision_start and collision_end events when other objects start and stop interpenetrating.
-Must be applied to the root prim.
-	</string>
-	<string name="LSLTipText_llResetOtherScript" translate="false">
-llResetOtherScript(string name)
-Resets script name
-	</string>
-	<string name="LSLTipText_llGetScriptState" translate="false">
-integer llGetScriptState(string name)
-Returns TRUE if the script name is running
-	</string>
-	<string name="LSLTipText_llRemoteLoadScript" translate="false">
-DEPRECATED!  Please use llRemoteLoadScriptPin instead.
-	</string>
-	<string name="LSLTipText_llSetRemoteScriptAccessPin" translate="false">
-llSetRemoteScriptAccessPin(integer pin)
-If pin is set to a non-zero number, allows a prim to have scripts remotely loaded via llRemoteLoadScriptPin when it passes in the correct pin. Otherwise, llRemoteLoadScriptPin is ignored.
-	</string>
-	<string name="LSLTipText_llRemoteLoadScriptPin" translate="false">
-llRemoteLoadScriptPin(key target, string name, integer pin, integer running, integer start_param)
-Copies script name onto target, if the owner of this scripted object can modify target and is in the same region, and the matching pin is used.
-If running == TRUE, starts the script with start_param
-	</string>
-	<string name="LSLTipText_llOpenRemoteDataChannel" translate="false">
-llOpenRemoteDataChannel()
-Creates a channel to listen for XML-RPC calls, and will trigger a remote_data event with channel id once it is available
-	</string>
-	<string name="LSLTipText_llSendRemoteData" translate="false">
-key llSendRemoteData(key channel, string dest, integer idata, string sdata)
-Sends an XML-RPC request to dest through channel with payload of channel (in a string), integer idata and string sdata.
-Returns a key that is the message_id for the resulting remote_data events.
-	</string>
-	<string name="LSLTipText_llRemoteDataReply" translate="false">
-llRemoteDataReply(key channel, key message_id, string sdata, integer idata)
-Sends an XML-RPC reply to message_id on channel with payload of string sdata and integer idata
-	</string>
-	<string name="LSLTipText_llCloseRemoteDataChannel" translate="false">
-llCloseRemoteDataChannel(key channel)
-Closes XML-RPC channel
-	</string>
-	<string name="LSLTipText_llMD5String" translate="false">
-string llMD5String(string src, integer nonce)
-Returns a string of 32 hex characters that is a RSA Data Security, Inc. MD5 Message-Digest Algorithm of src with nonce
-	</string>
-	<string name="LSLTipText_llSetPrimitiveParams" translate="false">
-llSetPrimitiveParams(list rules)
-Sets the prim&apos;s parameters according to rules
-	</string>
-	<string name="LSLTipText_llStringToBase64" translate="false">
-string llStringToBase64(string str)
-Converts a string to the Base64 representation of the string
-	</string>
-	<string name="LSLTipText_llBase64ToString" translate="false">
-string llBase64ToString(string str)
-Converts a Base64 string to a conventional string.
-If the conversion creates any unprintable characters, they are converted to spaces.
-	</string>
-	<string name="LSLTipText_llXorBase64Strings" translate="false">
-string llXorBase64Strings(string s1, string s2)
-DEPRECATED!  Please use llXorBase64StringsCorrect instead.
-Incorrectly performs an exclusive or on two Base64 strings and returns a Base64 string.  s2 repeats if it is shorter than s1.  Retained for backwards compatability.
-	</string>
-	<string name="LSLTipText_llRemoteDataSetRegion" translate="false">
-llRemoteDataSetRegion()
-DEPRECATED!  Please use llOpenRemoteDataChannel instead.
-If an object using remote data channels changes regions, you must call this function to reregister the remote data channels. This call is not needed if the prim does not change regions.
-	</string>
-	<string name="LSLTipText_llLog10" translate="false">
-float llLog10(float val)
-Returns the base 10 logarithm of val.  Returns zero if val &lt;= 0.
-	</string>
-	<string name="LSLTipText_llLog" translate="false">
-float llLog(float val)
-Returns the natural logarithm of val.  Returns zero if val &lt;= 0.
-	</string>
-	<string name="LSLTipText_llGetAnimationList" translate="false">
-list llGetAnimationList(key id)
-Returns a list of keys of playing animations for avatar described by id
-	</string>
-	<string name="LSLTipText_llSetParcelMusicURL" translate="false">
-llSetParcelMusicURL(string url)
-Sets the streaming audio URL for the parcel which the object is on
-	</string>
-	<string name="LSLTipText_llGetRootPosition" translate="false">
-vector llGetRootPosition()
-Returns the position (in region coordinates) of the root prim of the object which the script is attached to
-	</string>
-	<string name="LSLTipText_llGetRootRotation" translate="false">
-rotation llGetRootRotation()
-Returns the rotation (relative to the region) of the root prim of the object which the script is attached to
-	</string>
-	<string name="LSLTipText_llGetObjectDesc" translate="false">
-string llGetObjectDesc()
-Returns the description of the prim the script is attached to
-	</string>
-	<string name="LSLTipText_llSetObjectDesc" translate="false">
-llSetObjectDesc(string name)
-Sets the prim&apos;s description
-	</string>
-	<string name="LSLTipText_llGetCreator" translate="false">
-key llGetCreator()
-Returns a key for the creator of the prim
-	</string>
-	<string name="LSLTipText_llGetTimestamp" translate="false">
-string llGetTimestamp()
-Returns the timestamp in the UTC time zone in the format: YYYY-MM-DDThh:mm:ss.ff..fZ
-	</string>
-	<string name="LSLTipText_llSetLinkAlpha" translate="false">
-llSetLinkAlpha(integer linknumber, float alpha, integer face)
-If a prim exists in the link chain at linknumber, sets face to alpha
-	</string>
-	<string name="LSLTipText_llGetNumberOfPrims" translate="false">
-integer llGetNumberOfPrims()
-Returns the number of prims in a link set the script is attached to
-	</string>
-	<string name="LSLTipText_llGetNumberOfNotecardLines" translate="false">
-key llGetNumberOfNotecardLines(string name)
-Returns number of lines in notecard name via the dataserver event (cast return value to integer)
-	</string>
-	<string name="LSLTipText_llGetBoundingBox" translate="false">
-list llGetBoundingBox(key object)
-Returns the bounding box around the object (including any linked prims) relative to its root prim, in a list in the format [ (vector) min_corner, (vector) max_corner ]
-	</string>
-	<string name="LSLTipText_llGetGeometricCenter" translate="false">
-vector llGetGeometricCenter()
-Returns the geometric center of the linked set the script is attached to.
-	</string>
-	<string name="LSLTipText_llGetPrimitiveParams" translate="false">
-list llGetPrimitiveParams(list params)
-Returns the primitive parameters specified in the params list.
-	</string>
-	<string name="LSLTipText_llIntegerToBase64" translate="false">
-string llIntegerToBase64(integer number)
-Returns a string that is a Base64 big endian encode of number
-	</string>
-	<string name="LSLTipText_llBase64ToInteger" translate="false">
-integer llBase64ToInteger(string str)
-Returns an integer that is the str Base64 decoded as a big endian integer
-	</string>
-	<string name="LSLTipText_llGetGMTclock" translate="false">
-float llGetGMTclock()
-Returns the time in seconds since midnight GMT
-	</string>
-	<string name="LSLTipText_llGetSimulatorHostname" translate="false">
-string llGetSimulatorHostname()
-Returns the hostname of the machine which the script is running on (same as string in viewer Help dialog)
-	</string>
-	<string name="LSLTipText_llSetLocalRot" translate="false">
-llSetLocalRot(rotation rot)
-Sets the rotation of a child prim relative to the root prim
-	</string>
-	<string name="LSLTipText_llParseStringKeepNulls" translate="false">
-list llParseStringKeepNulls(string src, list separators, list spacers)
-Breaks src into a list, discarding separators, keeping spacers, keeping any null values generated.
-(separators and spacers must be lists of strings, maximum of 8 each)
-	</string>
-	<string name="LSLTipText_llRezAtRoot" translate="false">
-llRezAtRoot(string inventory, vector pos, vector vel, rotation rot, integer param)
-Instantiates owner&apos;s inventory object rotated to rot with its root at pos, moving at vel, using param as the start parameter
-	</string>
-	<string name="LSLTipText_llGetObjectPermMask" translate="false">
-integer llGetObjectPermMask(integer mask)
-Returns the requested permission mask for the root object the task is attached to
-	</string>
-	<string name="LSLTipText_llSetObjectPermMask" translate="false">
-llSetObjectPermMask(integer mask, integer value)
-Sets the given permission mask to the new value on the root object the task is attached to (requires God Mode)
-	</string>
-	<string name="LSLTipText_llGetInventoryPermMask" translate="false">
-integer llGetInventoryPermMask(string item, integer mask)
-Returns the requested permission mask for the inventory item
-	</string>
-	<string name="LSLTipText_llSetInventoryPermMask" translate="false">
-llSetInventoryPermMask(string item, integer mask, integer value)
-Sets the given permission mask to the new value on the inventory item (requires God Mode)
-	</string>
-	<string name="LSLTipText_llGetInventoryCreator" translate="false">
-key llGetInventoryCreator(string item)
-Returns a key for the creator of the inventory item
-	</string>
-	<string name="LSLTipText_llOwnerSay" translate="false">
-llOwnerSay(string msg)
-Says msg to owner only.  (Owner must be in the same region.)
-	</string>
-	<string name="LSLTipText_llRequestSimulatorData" translate="false">
-key llRequestSimulatorData(string simulator, integer data)
-Requests data about simulator.  When data is available the dataserver event will be raised.
-	</string>
-	<string name="LSLTipText_llForceMouselook" translate="false">
-llForceMouselook(integer mouselook)
-If mouselook is TRUE, any avatar that sits upon the prim will be forced into mouselook mode
-	</string>
-	<string name="LSLTipText_llGetObjectMass" translate="false">
-float llGetObjectMass(key id)
-Returns the mass of the avatar or object in the region
-	</string>
-	<string name="LSLTipText_llListReplaceList" translate="false">
-list llListReplaceList(list dest, list src, integer start, integer end)
-Returns a list that is dest with start through end removed and src inserted at start
-	</string>
-	<string name="LSLTipText_llLoadURL" translate="false">
-llLoadURL(key avatar, string message, string url)
-Shows a dialog to avatar offering to load the web page at url with a message.
-If user clicks yes, launches the page in their web browser.
-	</string>
-	<string name="LSLTipText_llParcelMediaCommandList" translate="false">
-llParcelMediaCommandList(list command)
-Sends a list of commands, some with arguments, to a parcel to control the playback of movies and other media
-	</string>
-	<string name="LSLTipText_llParcelMediaQuery" translate="false">
-list llParcelMediaQuery(list query)
-Returns a list containing results of the sent query
-	</string>
-	<string name="LSLTipText_llModPow" translate="false">
-integer llModPow(integer a, integer b, integer c)
-Returns a raised to the b power, mod c. ( (a**b)%c )
-b is capped at 0xFFFF (16 bits).
-	</string>
-	<string name="LSLTipText_llGetInventoryType" translate="false">
-integer llGetInventoryType(string name)
-Returns the type of the inventory item name
-	</string>
-	<string name="LSLTipText_llSetPayPrice" translate="false">
-llSetPayPrice(integer price, list quick_pay_buttons)
-Sets the default amount on the dialog that appears when someone chooses to pay this prim
-	</string>
-	<string name="LSLTipText_llGetCameraPos" translate="false">
-vector llGetCameraPos()
-Returns the current camera position for the agent the task has permissions for
-	</string>
-	<string name="LSLTipText_llGetCameraRot" translate="false">
-rotation llGetCameraRot()
-Returns the current camera orientation for the agent the task has permissions for
-	</string>
-	<string name="LSLTipText_llSetPrimURL" translate="false">
-llSetPrimURL(string url)
-Updates the URL for the web page shown on the sides of the object
-	</string>
-	<string name="LSLTipText_llRefreshPrimURL" translate="false">
-llRefreshPrimURL()
-Reloads the web page shown on the sides of the object
-	</string>
-	<string name="LSLTipText_llEscapeURL" translate="false">
-string llEscapeURL(string url)
-Returns an escaped/encoded version of url, replacing spaces with %20 etc.
-	</string>
-	<string name="LSLTipText_llUnescapeURL" translate="false">
-string llUnescapeURL(string url)
-Returns an unescaped/ unencoded version of url, replacing %20 with spaces etc.
-	</string>
-	<string name="LSLTipText_llMapDestination" translate="false">
-llMapDestination(string simname, vector pos, vector look_at)
-Opens the World Map centered on the region simname with pos highlighted. (NOTE: look_at currently does nothing.)
-Only works for scripts attached to avatar, or during touch events.
-	</string>
-	<string name="LSLTipText_llAddToLandBanList" translate="false">
-llAddToLandBanList(key avatar, float hours)
-Adds avatar to the land ban list for hours, or indefinitely if hours is 0
-	</string>
-	<string name="LSLTipText_llRemoveFromLandPassList" translate="false">
-llRemoveFromLandPassList(key avatar)
-Removes avatar from the land pass list
-	</string>
-	<string name="LSLTipText_llRemoveFromLandBanList" translate="false">
-llRemoveFromLandBanList(key avatar)
-Removes avatar from the land ban list
-	</string>
-	<string name="LSLTipText_llSetCameraParams" translate="false">
-llSetCameraParams(list rules)
-Sets multiple camera parameters at once.
-List format is [ rule1, data1, rule2, data2 . . . rulen, datan ]
-	</string>
-	<string name="LSLTipText_llClearCameraParams" translate="false">
-llClearCameraParams()
-Resets all camera parameters to default values and turns off scripted camera control
-	</string>
-	<string name="LSLTipText_llListStatistics" translate="false">
-float llListStatistics(integer operation, list src)
-Performs statistical aggregate functions on list src using LIST_STAT_* operations
-	</string>
-	<string name="LSLTipText_llGetUnixTime" translate="false">
-integer llGetUnixTime()
-Returns the number of seconds elapsed since 00:00 hours, Jan 1, 1970 UTC from the system clock
-	</string>
-	<string name="LSLTipText_llGetParcelFlags" translate="false">
-integer llGetParcelFlags(vector pos)
-Returns a mask of the parcel flags (PARCEL_FLAG_*) for the parcel that includes the point pos
-	</string>
-	<string name="LSLTipText_llGetRegionFlags" translate="false">
-integer llGetRegionFlags()
-Returns the region flags (REGION_FLAG_*) for the region the object is in
-	</string>
-	<string name="LSLTipText_llXorBase64StringsCorrect" translate="false">
-string llXorBase64StringsCorrect(string s1, string s2)
-Correctly performs an exclusive or on two Base64 strings and returns a Base64 string.
-s2 repeats if it is shorter than s1.
-	</string>
-	<string name="LSLTipText_llHTTPRequest" translate="false">
-llHTTPRequest(string url, list parameters, string body)
-Sends an HTTP request to the specified url with the body of the request and parameters
-	</string>
-	<string name="LSLTipText_llResetLandBanList" translate="false">
-llResetLandBanList()
-Removes all Residents from the land ban list
-	</string>
-	<string name="LSLTipText_llResetLandPassList" translate="false">
-llResetLandPassList()
-Removes all Residents from the land access/pass list
-	</string>
-	<string name="LSLTipText_llGetObjectPrimCount" translate="false">
-integer llGetObjectPrimCount(key object_id)
-Returns the total number of prims for an object in the region
-	</string>
-	<string name="LSLTipText_llGetParcelPrimOwners" translate="false">
-list llGetParcelPrimOwners(vector pos)
-Returns a list of all Residents who own objects on the parcel at pos and with individual prim counts.
-Requires owner-like permissions for the parcel.
-	</string>
-	<string name="LSLTipText_llGetParcelPrimCount" translate="false">
-integer llGetParcelPrimCount(vector pos, integer category, integer sim_wide)
-Returns the number of prims on the parcel at pos of the given category.
-Categories: PARCEL_COUNT_TOTAL, _OWNER, _GROUP, _OTHER, _SELECTED, _TEMP
-	</string>
-	<string name="LSLTipText_llGetParcelMaxPrims" translate="false">
-integer llGetParcelMaxPrims(vector pos, integer sim_wide)
-Returns the maximum number of prims allowed on the parcel at pos
-	</string>
-	<string name="LSLTipText_llGetParcelDetails" translate="false">
-list llGetParcelDetails(vector pos, list params)
-Returns the parcel details specified in params for the parcel at pos.
-Params is one or more of: PARCEL_DETAILS_NAME, _DESC, _OWNER, _GROUP, _AREA
-	</string>
-	<string name="LSLTipText_llSetLinkPrimitiveParams" translate="false">
-llSetLinkPrimitiveParams(integer linknumber, list rules)
-Sets primitive parameters for linknumber based on rules
-	</string>
-	<string name="LSLTipText_llSetLinkTexture" translate="false">
-llSetLinkTexture(integer linknumber, string texture, integer face)
-Sets the texture of face for a task that exists in the link chain at linknumber
-	</string>
-	<string name="LSLTipText_llStringTrim" translate="false">
-string llStringTrim(string src, integer trim_type)
-Trims the leading and/or trailing white spaces from a string.
-trim_type can be STRING_TRIM, STRING_TRIM_HEAD or STRING_TRIM_TAIL.
-	</string>
-	<string name="LSLTipText_llRegionSay" translate="false">
-llRegionSay(integer channel, string msg)
-Broadcasts msg on channel (not 0) that can be heard anywhere in the region by a script listening on channel
-	</string>
-	<string name="LSLTipText_llGetObjectDetails" translate="false">
-list llGetObjectDetails(key id, list params)
-Returns the object details specified in params for the object with key id.
-Params are OBJECT_NAME, _DESC, _POS, _ROT, _VELOCITY, _OWNER, _GROUP, _CREATOR
-	</string>
-	<string name="LSLTipText_llSetClickAction" translate="false">
-llSetClickAction(integer action)
-Sets the action performed when a prim is clicked upon
-	</string>
-	<string name="LSLTipText_llGetRegionAgentCount" translate="false">
-integer llGetRegionAgentCount()
-Returns the number of avatars in the region
-	</string>
-	<string name="LSLTipText_llTextBox" translate="false">
-llTextBox(key avatar, string message, integer chat_channel
-Shows a dialog box on the avatar&apos;s screen with the message.
-It contains a text box for input, and if entered that text is chatted on chat_channel.
-	</string>
-	<string name="LSLTipText_llGetAgentLanguage" translate="false">
-string llGetAgentLanguage(key avatar)
-Returns the language code of the preferred interface language of the avatar
-	</string>
-	<string name="LSLTipText_llDetectedTouchUV" translate="false">
-vector llDetectedTouchUV(integer index)
-Returns the u and v coordinates in the first two components of a vector, for the texture coordinates where the prim was touched in a triggered touch event
-	</string>
-	<string name="LSLTipText_llDetectedTouchFace" translate="false">
-integer llDetectedTouchFace(integer index)
-Returns the index of the face where the avatar clicked in a triggered touch event
-	</string>
-	<string name="LSLTipText_llDetectedTouchPos" translate="false">
-vector llDetectedTouchPos(integer index)
-Returns the position where the object was touched in a triggered touch event
-	</string>
-	<string name="LSLTipText_llDetectedTouchNormal" translate="false">
-vector llDetectedTouchNormal(integer index)
-Returns the surface normal for a triggered touch event
-	</string>
-	<string name="LSLTipText_llDetectedTouchBinormal" translate="false">
-vector llDetectedTouchBinormal(integer index)
-Returns the surface binormal for a triggered touch event
-	</string>
-	<string name="LSLTipText_llDetectedTouchST" translate="false">
-vector llDetectedTouchST(integer index)
-Returns the s and t coordinates in the first two components of a vector, for the surface coordinates where the prim was touched in a triggered touch event
-	</string>
-	<string name="LSLTipText_llSHA1String" translate="false">
-string llSHA1String(string src)
-Returns a string of 40 hex characters that is the SHA1 security Hash of src
-	</string>
-	<string name="LSLTipText_llGetFreeURLs" translate="false">
-integer llGetFreeURLs()
-Returns the number of available URLs for the current script
-	</string>
-	<string name="LSLTipText_llRequestURL" translate="false">
-key llRequestURL()
-Requests one HTTP:// url for use by this object.
-An http_request event is triggered with the results.
-	</string>
-	<string name="LSLTipText_llRequestSecureURL" translate="false">
-key llRequestSecureURL()
-Requests one HTTPS:// (SSL) url for use by this object.
-An http_request event is triggered with the results.
-	</string>
-	<string name="LSLTipText_llReleaseURL" translate="false">
-llReleaseURL(string url)
-Releases the specified URL, it will no longer be usable
-	</string>
-	<string name="LSLTipText_llHTTPResponse" translate="false">
-llHTTPResponse(key request_id, integer status, string body)
-Responds to request_id with status and body
-  </string>
-	<string name="LSLTipText_llGetHTTPHeader" translate="false">
-string llGetHTTPHeader(key request_id, string header)
-Returns the value for header for request_id
-	</string>
-  <string name="LSLTipText_llSetPrimMediaParams" translate="false">
-llSetPrimMediaParams(integer face, list params)
-Sets the media params for a particular face on an object. If media is not already on this object, add it.
-List is a set of name/value pairs in no particular order.  Params not specified are unchanged, or if new media is added then set to the default specified.
-The possible names are below, along with the types of values and what they mean.
-  </string>
-  <string name="LSLTipText_llGetPrimMediaParams" translate="false">
-list llGetPrimMediaParams(integer face, list params)
-Returns the media params for a particular face on an object, given the desired list of names, in the order requested.
-(Returns an empty list if no media exists on the face.)
-  </string>
-  <string name="LSLTipText_llClearPrimMedia" translate="false">
-llClearPrimMedia(integer face)
-Clears (deletes) the media and all params from the given face.
-  </string>
 
   <!-- Avatar busy/away mode -->
 	<string name="AvatarSetNotAway">Not Away</string>
-- 
GitLab


From 78f22028100a05d2b8c6cdf82b096fa83ef33cec Mon Sep 17 00:00:00 2001
From: Ramzi Linden <ramzi@lindenlab.com>
Date: Sat, 30 Jan 2010 15:19:19 -0800
Subject: [PATCH 377/521] Backed out changeset: 6b8015e921da

---
 .../skins/default/xui/en/floater_aaa.xml      |   57 +
 .../default/xui/en/floater_test_button.xml    |  111 ++
 .../default/xui/en/floater_test_checkbox.xml  |  154 ++
 .../default/xui/en/floater_test_combobox.xml  |  158 ++
 .../xui/en/floater_test_inspectors.xml        |  138 ++
 .../default/xui/en/floater_test_layout.xml    |   91 ++
 .../xui/en/floater_test_line_editor.xml       |  106 ++
 .../default/xui/en/floater_test_list_view.xml |   12 +
 .../xui/en/floater_test_navigation_bar.xml    |   20 +
 .../xui/en/floater_test_radiogroup.xml        |   84 +
 .../default/xui/en/floater_test_slider.xml    |  101 ++
 .../default/xui/en/floater_test_spinner.xml   |   97 ++
 .../xui/en/floater_test_text_editor.xml       |   31 +
 .../default/xui/en/floater_test_textbox.xml   |  254 +++
 .../default/xui/en/floater_test_widgets.xml   |  451 +++++
 .../default/xui/en/floater_ui_preview.xml     |  408 +++++
 .../newview/skins/default/xui/en/strings.xml  | 1447 +++++++++++++++++
 17 files changed, 3720 insertions(+)
 create mode 100644 indra/newview/skins/default/xui/en/floater_aaa.xml
 create mode 100644 indra/newview/skins/default/xui/en/floater_test_button.xml
 create mode 100644 indra/newview/skins/default/xui/en/floater_test_checkbox.xml
 create mode 100644 indra/newview/skins/default/xui/en/floater_test_combobox.xml
 create mode 100644 indra/newview/skins/default/xui/en/floater_test_inspectors.xml
 create mode 100644 indra/newview/skins/default/xui/en/floater_test_layout.xml
 create mode 100644 indra/newview/skins/default/xui/en/floater_test_line_editor.xml
 create mode 100644 indra/newview/skins/default/xui/en/floater_test_list_view.xml
 create mode 100644 indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml
 create mode 100644 indra/newview/skins/default/xui/en/floater_test_radiogroup.xml
 create mode 100644 indra/newview/skins/default/xui/en/floater_test_slider.xml
 create mode 100644 indra/newview/skins/default/xui/en/floater_test_spinner.xml
 create mode 100644 indra/newview/skins/default/xui/en/floater_test_text_editor.xml
 create mode 100644 indra/newview/skins/default/xui/en/floater_test_textbox.xml
 create mode 100644 indra/newview/skins/default/xui/en/floater_test_widgets.xml
 create mode 100644 indra/newview/skins/default/xui/en/floater_ui_preview.xml

diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml
new file mode 100644
index 00000000000..7236351f2e0
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_aaa.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ can_minimize="false"
+ can_tear_off="false"
+ can_resize="true"
+ can_drag_on_left="false"
+ can_close="true"
+ can_dock="true"
+ bevel_style="in"
+ height="300"
+ layout="topleft"
+ name="Test Floater"
+ save_rect="true"
+ title="TEST FLOATER"
+ save_dock_state="true"
+ save_visibility="true"
+ single_instance="true" 
+ width="320">
+  <string name="nudge_parabuild" translate="false">Nudge 1</string>
+  <string name="test_the_vlt">This string CHANGE2 is extracted.</string>
+  <string name="testing_eli">Just a test. change here. more change.</string>
+  <chat_history
+   allow_html="true"
+   bg_readonly_color="ChatHistoryBgColor"
+   bg_writeable_color="ChatHistoryBgColor" 
+   border_visible="false"
+   follows="all"
+   font="SansSerif" 
+	 left="1"
+   top="20"
+   layout="topleft"
+	 height="260"
+   name="chat_history"
+   parse_highlights="true"
+   text_color="ChatHistoryTextColor"
+   text_readonly_color="ChatHistoryTextColor"
+   translate="false"
+   width="320">
+Really long line that is long enough to wrap once with jyg descenders.
+Really long line that is long enough to wrap once with jyg descenders.
+Really long line that is long enough to wrap once with jyg descenders.
+Really long line that is long enough to wrap once with jyg descenders.
+Really long line that is long enough to wrap once with jyg descenders.
+Really long line that is long enough to wrap once with jyg descenders.
+Really long line that is long enough to wrap once with jyg descenders.
+Really long line that is long enough to wrap once with jyg descenders.
+Really long line that is long enough to wrap once with jyg descenders.
+Really long line that is long enough to wrap once with jyg descenders.
+Really long line that is long enough to wrap once with jyg descenders.
+Really long line that is long enough to wrap once with jyg descenders.
+Really long line that is long enough to wrap once with jyg descenders.
+Really long line that is long enough to wrap once with jyg descenders.
+Really long line that is long enough to wrap once with jyg descenders.
+Really long line that is long enough to wrap once with jyg descenders.
+  </chat_history>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_test_button.xml b/indra/newview/skins/default/xui/en/floater_test_button.xml
new file mode 100644
index 00000000000..bf0a774e766
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_test_button.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ can_resize="true"
+ height="500"
+ layout="topleft"
+ name="floater_test_button"
+ help_topic="floater_test_button"
+ translate="false"
+ width="500">
+    <button
+     height="23"
+     label="Generic Button"
+     layout="topleft"
+     left="10"
+     name="generic_button"
+     top="20"
+     width="150" />
+    <button
+     bottom_delta="30"
+     height="23"
+     label="Bottom delta"
+     layout="topleft"
+     name="bottom_delta_button" />
+    <button
+     bottom_delta="30"
+     height="23"
+     label="SansSerifSmall"
+     layout="topleft"
+     name="sans_serif_small_button" />
+    <button
+     auto_resize="true"
+     bottom_delta="30"
+     height="23"
+     label="Auto Resize"
+     layout="topleft"
+     name="auto_resize_button" />
+    <button
+     bottom_delta="30"
+     height="23"
+     is_toggle="true"
+     label="Click Change Label"
+     label_selected="New Label"
+     layout="topleft"
+     name="label_selected_button" />
+    <button
+     bottom_delta="30"
+     height="23"
+     label="No Label Shadow"
+     label_shadow="false"
+     layout="topleft"
+     name="label_shadow_button" />
+    <button
+     bottom_delta="30"
+     height="23"
+     label="EmphasisColor Label"
+     label_color="EmphasisColor"
+     layout="topleft"
+     name="label_color_button" />
+    <button
+     bottom_delta="30"
+     height="23"
+     is_toggle="true"
+     label="Toggle"
+     label_color_selected="EmphasisColor"
+     label_selected="Toggle on"
+     layout="topleft"
+     name="label_color_selected_button" />
+    <button
+     bottom_delta="30"
+     enabled="false"
+     height="23"
+     label="Disabled"
+     label_color_disabled="EmphasisColor"
+     label_selected="Selected"
+     layout="topleft"
+     name="label_color_disabled_button" />
+    <button
+     bottom_delta="30"
+     height="23"
+     highlight_color="EmphasisColor"
+     label="Highlight"
+     layout="topleft"
+     name="highlight_color_button" />
+    <button
+     bottom_delta="30"
+     height="23"
+     hover_glow_amount="0"
+     label="No Hover Glow"
+     layout="topleft"
+     name="hover_glow_amount_button" />
+    <button
+     height="16"
+     image_selected="Move_Run_Off"
+     image_unselected="Move_Run_Off"
+     layout="topleft"
+     left="200"
+     name="image_button"
+     top="20"
+     width="16" />
+    <button
+     height="16"
+     image_color="EmphasisColor"
+     image_selected="Move_Run_Off"
+     image_unselected="Move_Run_Off"
+     layout="topleft"
+     left_delta="0"
+     name="image_color_button"
+     top_pad="10"
+     width="16" />
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_test_checkbox.xml b/indra/newview/skins/default/xui/en/floater_test_checkbox.xml
new file mode 100644
index 00000000000..c828f6b284f
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_test_checkbox.xml
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ can_resize="true"
+ height="400"
+ layout="topleft"
+ name="floater_test_checkbox"
+ help_topic="floater_test_checkbox"
+ translate="false"
+ width="400">
+    <check_box
+     control_name="ShowStartLocation"
+     height="15"
+     initial_value="true"
+     label="Oh look it's a checkbox!"
+     layout="topleft"
+     left="10"
+     name="show_location_checkbox"
+     top="28"
+     width="256" />
+    <check_box
+     height="15"
+     label="Minimal Checkbox"
+     layout="topleft"
+     left_delta="0"
+     name="minimal_checkbox"
+     top_pad="14"
+     width="150" />
+    <check_box
+     enabled="false"
+     height="15"
+     label="Disabled Checkbox"
+     layout="topleft"
+     left_delta="0"
+     name="disabled_checkbox"
+     top_pad="14"
+     width="150" />
+    <check_box
+     height="15"
+     label="Text Enabled Color"
+     layout="topleft"
+     left_delta="0"
+     name="text_enabled_color_checkbox"
+     text_enabled_color="EmphasisColor"
+     top_pad="14"
+     width="150" />
+    <check_box
+     enabled="false"
+     height="15"
+     label="Text Disabled Color"
+     layout="topleft"
+     left_delta="0"
+     name="text_disabled_color_checkbox"
+     text_disabled_color="EmphasisColor_35"
+     top_pad="14"
+     width="150" />
+    <check_box
+     height="15"
+     initial_value="true"
+     label="Initial Value Checked"
+     layout="topleft"
+     left_delta="0"
+     name="initial_value_checkbox"
+     top_pad="14"
+     width="150" />
+    <check_box
+     font="Monospace"
+     height="15"
+     label="Font Monospace"
+     layout="topleft"
+     left_delta="0"
+     name="font_checkbox"
+     top_pad="14"
+     width="150" />
+
+<chiclet_im_p2p
+ height="25"
+ name="im_p2p_chiclet"
+ show_speaker="false"
+ width="25">
+    <chiclet_im_p2p.chiclet_button
+     height="25"
+     image_selected="PushButton_Selected"
+     image_unselected="PushButton_Off"
+     name="chiclet_button"
+     tab_stop="false"
+     width="25"/>
+    <chiclet_im_p2p.speaker
+     auto_update="true"
+     draw_border="false"
+     height="25"
+     left="25"
+     name="speaker"
+     visible="false"
+     width="20" />
+    <chiclet_im_p2p.avatar_icon
+     bottom="3"
+     follows="left|top|bottom"
+     height="20"
+     left="2"
+     mouse_opaque="false"
+     name="avatar_icon"
+     width="21" />
+    <chiclet_im_p2p.unread_notifications
+     height="25"
+     font_halign="center"
+     left="25"
+     mouse_opaque="false"
+     name="unread"
+     text_color="white"
+     v_pad="5"
+     visible="false"
+     width="20"/>
+    <chiclet_im_p2p.new_message_icon
+  bottom="11"
+  height="14"
+  image_name="Unread_Chiclet"
+  left="12"
+  name="new_message_icon"
+  visible="false"
+  width="14" />
+</chiclet_im_p2p>
+
+
+<chiclet_offer
+ height="25"
+ name="offer_chiclet"
+ width="25">
+ <chiclet_offer.chiclet_button
+  height="25"
+  image_selected="PushButton_Selected"
+  image_unselected="PushButton_Off"
+  name="chiclet_button"
+  tab_stop="false"
+  width="25"/>
+ <chiclet_offer.icon
+  bottom="3"
+  default_icon="Generic_Object_Small"
+  follows="all"
+  height="19"
+  left="3"
+  mouse_opaque="false"
+  name="chiclet_icon"
+  width="19" />
+ <chiclet_offer.new_message_icon
+  bottom="11"
+  height="14"
+  image_name="Unread_Chiclet"
+  left="12"
+  name="new_message_icon"
+  visible="false"
+  width="14" />
+</chiclet_offer>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_test_combobox.xml b/indra/newview/skins/default/xui/en/floater_test_combobox.xml
new file mode 100644
index 00000000000..45e2e34da76
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_test_combobox.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ can_resize="true"
+ height="400"
+ layout="topleft"
+ name="floater_test_combobox"
+ help_topic="floater_test_combobox"
+ translate="false"
+ width="400">
+    <text
+     type="string"
+     length="1"
+     height="16"
+     layout="topleft"
+     left="10"
+     top="24"
+     width="200">
+        Real world usage (login location):
+    </text>
+    <combo_box
+     allow_text_entry="true"
+     control_name="LoginLocation"
+     follows="left|bottom"
+     height="18"
+     layout="topleft"
+     left_delta="0"
+     max_chars="128"
+     name="start_location_combo"
+     top_pad="2"
+     width="155">
+        <combo_box.item
+         label="My Last Location"
+         name="MyLastLocation"
+         value="last" />
+        <combo_box.item
+         label="My Home"
+         name="MyHome"
+         value="home" />
+        <combo_box.item
+         label="&lt;Type region name&gt;"
+         name="Typeregionname"
+         value="" />
+    </combo_box>
+    <text
+     type="string"
+     length="1"
+     height="16"
+     layout="topleft"
+     left_delta="0"
+     top_pad="24"
+     width="200">
+        Minimal combobox:
+    </text>
+    <combo_box
+     height="18"
+     layout="topleft"
+     left_delta="0"
+     name="minimal_combo"
+     top_pad="2"
+     width="150">
+        <combo_box.item
+         label="First Item"
+         name="item1"
+         value="first" />
+        <combo_box.item
+         label="Second Item"
+         name="item2"
+         value="second" />
+    </combo_box>
+    <text
+     type="string"
+     length="1"
+     height="16"
+     layout="topleft"
+     left_delta="0"
+     top_pad="24"
+     width="200">
+        Allow text input:
+    </text>
+    <combo_box
+     allow_text_entry="true"
+     height="18"
+     layout="topleft"
+     left_delta="0"
+     name="text_entry_combo"
+     top_pad="2"
+     width="150">
+        <combo_box.item
+         label="First Item"
+         name="item1"
+         value="first" />
+        <combo_box.item
+         label="Second Item"
+         name="item2"
+         value="second" />
+    </combo_box>
+    <text
+     type="string"
+     length="1"
+     height="16"
+     layout="topleft"
+     left_delta="0"
+     top_pad="24"
+     width="200">
+        Allow text input, default to second item:
+    </text>
+    <combo_box
+     allow_text_entry="true"
+     height="18"
+     initial_value="second"
+     layout="topleft"
+     left_delta="0"
+     name="text_entry_combo2"
+     top_pad="2"
+     width="150">
+        <combo_box.item
+         label="First Item"
+         name="item1"
+         value="first" />
+        <combo_box.item
+         label="Second Item"
+         name="item2"
+         value="second" />
+    </combo_box>
+    <text
+     type="string"
+     length="1"
+     height="16"
+     layout="topleft"
+     left_delta="0"
+     top_pad="24"
+     width="200">
+        Two character max input:
+    </text>
+    <combo_box
+     allow_text_entry="true"
+     height="16"
+     layout="topleft"
+     left_delta="0"
+     max_chars="2"
+     name="state_combo"
+     top_pad="4"
+     width="150">
+        <combo_box.item
+         label="CA"
+         name="item1"
+         value="ca" />
+        <combo_box.item
+         label="NY"
+         name="item2"
+         value="ny" />
+        <combo_box.item
+         label="TX"
+         name="item3"
+         value="tx" />
+    </combo_box>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_test_inspectors.xml b/indra/newview/skins/default/xui/en/floater_test_inspectors.xml
new file mode 100644
index 00000000000..0f5c5f2be07
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_test_inspectors.xml
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ can_resize="false"
+ height="400"
+ layout="topleft"
+ name="floater_test_inspectors"
+ help_topic="floater_test_inspectors"
+ title="TEST INSPECTORS" 
+ translate="false"
+ width="400">
+  <text
+   height="20"
+   left="10"
+   name="test_inspectors"
+   top="30"
+   width="300">
+    Click to spawn an inspector:
+  </text>
+  <button
+    name="avatar_2d_btn1"
+    label="Avatar 2D"
+    top="50"
+    left="10"
+    height="20"
+    width="100"
+	commit_callback.function="ShowAvatarInspector"
+	commit_callback.parameter="22df1dcb-810a-4975-aab9-0159958fe155" />
+	<!-- InspectorA Tester -->
+  <button
+    name="avatar_2d_btn5"
+    label="Avatar 2D"
+    top_pad="10"
+    left="10"
+    height="20"
+    width="100"
+	commit_callback.function="ShowAvatarInspector"
+	commit_callback.parameter="927e68e0-e52d-4bb8-b1a9-add97a57c86a" />
+	<!-- InspectorB Tester -->
+  <button
+    name="avatar_2d_btn2"
+    label="Avatar 2D"
+    top_pad="10"
+    left="10"
+    height="20"
+    width="100"
+	commit_callback.function="ShowAvatarInspector"
+	commit_callback.parameter="9a2300ca-e251-45dd-bb61-e33139f6e4eb" />
+	<!-- InspectorC Tester -->
+  <button
+    name="avatar_2d_btn3"
+    label="Avatar 2D"
+    top_pad="10"
+    left="10"
+    height="20"
+    width="100"
+	commit_callback.function="ShowAvatarInspector"
+	commit_callback.parameter="8024f082-34cc-48a3-a42e-c42f345efd74" />
+	<!-- jarvtest Bombastic 2009-10-3 -->
+  <button
+    name="avatar_2d_btn4"
+    label="Avatar 2D"
+    top_pad="10"
+    left="10"
+    height="20"
+    width="100"
+	commit_callback.function="ShowAvatarInspector"
+	commit_callback.parameter="e7dc3c83-1e11-4fa7-beeb-4b18adfb4efa" />
+  <button
+    name="avatar_3d_btn"
+    label="Avatar 3D"
+    top="50"
+    left="150"
+    height="20"
+    width="100"/>
+  <button
+    name="object_2d_btn"
+    label="Object 2D"
+    top_pad="10"
+    left_delta="0"
+    height="20"
+    width="100"/>
+  <button
+    name="object_3d_btn"
+    label="Object 3D"
+    top_pad="10"
+    left_delta="0"
+    height="20"
+    width="100"
+	  commit_callback.function="ShowObjectInspector"
+	  commit_callback.parameter="" />
+  <button
+    name="group_btn"
+    label="Group"
+    top_pad="10"
+    left_delta="0"
+    height="20"
+    width="100"
+ 	  commit_callback.function="ShowGroupInspector"
+	  commit_callback.parameter="" />
+  <button
+    name="place_btn"
+    label="Place"
+    top_pad="10"
+    left_delta="0"
+    height="20"
+    width="100"/>
+  <button
+    name="event_btn"
+    label="Event"
+    top_pad="10"
+    left_delta="0"
+    height="20"
+    width="100"/>
+  <text
+  follows="left|top"
+  font="SansSerif"
+  height="20"
+  left="0"
+  max_length="65536"
+  name="slurl"
+  top_pad="4"
+  width="150">
+    secondlife:///app/agent/00000000-0000-0000-0000-000000000000/inspect
+  </text>
+  <text
+  follows="left|top"
+  font="SansSerif"
+  height="20"
+  left="0"
+  max_length="65536"
+  name="slurl_group"
+  top_pad="4"
+  width="150">
+    secondlife:///app/group/00000000-0000-0000-0000-000000000000/inspect
+  </text>
+
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_test_layout.xml b/indra/newview/skins/default/xui/en/floater_test_layout.xml
new file mode 100644
index 00000000000..94f7e0b7980
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_test_layout.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ can_resize="true"
+ height="500"
+ layout="topleft"
+ name="floater_test_layout"
+ help_topic="floater_test_layout"
+ translate="false"
+ width="500">
+    <text
+     type="string"
+     length="1"
+     height="16"
+     layout="topleft"
+     left="10"
+     top="84"
+     width="200">
+        bottom 400 left 10
+    </text>
+    <text
+     type="string"
+     length="1"
+     height="16"
+     layout="topleft"
+     left_delta="0"
+     top_pad="4"
+     width="200">
+        Bottom delta -20
+    </text>
+    <text
+     type="string"
+     length="1"
+     height="16"
+     layout="topleft"
+     left_delta="0"
+     top_pad="64"
+     width="200">
+        bottom 300 left 10, should delta_bottom
+    </text>
+    <text
+     type="string"
+     length="1"
+     height="16"
+     layout="topleft"
+     left_pad="40"
+     top_delta="0"
+     width="200">
+        bottom 300 left 250, should delta_left
+    </text>
+    <text
+     type="string"
+     length="1"
+     height="16"
+     layout="topleft"
+     left="10"
+     top="204"
+     width="200">
+        bottom 280 left 10, should absolute position
+    </text>
+    <text
+     type="string"
+     length="1"
+     height="16"
+     layout="topleft"
+     left_pad="40"
+     top_delta="-2"
+     width="200">
+        bottom 282 left 250, should delta_left and delta_bottom
+    </text>
+    <text
+     type="string"
+     length="1"
+     height="16"
+     layout="topleft"
+     left="10"
+     top="234"
+     width="200">
+        bottom 250 left 10, should absolute position
+    </text>
+    <text
+     type="string"
+     length="1"
+     height="16"
+     layout="topleft"
+     left="250"
+     top="244"
+     width="200">
+        bottom 240 left 250, should absolute position
+    </text>
+</floater>
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
new file mode 100644
index 00000000000..2894ad2a325
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_test_line_editor.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ can_resize="true"
+ height="500"
+ layout="topleft"
+ name="floater_test_line_editor"
+ help_topic="floater_test_line_editor"
+ translate="false"
+ width="400">
+  <line_editor
+   height="20"
+   layout="topleft"
+   left="10"
+   name="enabled_line_editor"
+   top="40"
+   tool_tip="enabled line editor"
+   width="200">
+    Enabled line editor
+  </line_editor>
+  <line_editor
+   height="20"
+   layout="topleft"
+   left_delta="0"
+   name="ascii_line_editor"
+   prevalidate_callback="ascii"
+   tool_tip="ascii line editor"
+   top_pad="10" 
+   width="200">
+    ASCII only line editor
+  </line_editor>
+  <line_editor
+   enabled="false"
+   height="20"
+   layout="topleft"
+   left_delta="0"
+   name="disabled_line_editor"
+   top_pad="10"
+   tool_tip="disabled line editor"
+   width="200">
+    Disabled line editor
+  </line_editor>
+  <line_editor
+   height="20"
+   layout="topleft"
+   left_delta="0"
+   name="enabled_colored_line_editor"
+   text_color="1 0 0 1" 
+   top_pad="10"
+   tool_tip="enabled colored line editor"
+   width="200">
+    Enabled red-text line editor
+  </line_editor>
+  <line_editor
+    enabled="false"
+   height="20"
+   layout="topleft"
+   left_delta="0"
+   name="disabled_colored_line_editor"
+    text_readonly_color="1 0 0 1" 
+   top_pad="10"
+   tool_tip="disabled colored line editor"
+   width="200">
+    Disabled red-text line editor
+  </line_editor>
+  <line_editor
+   height="20"
+   left_delta="0"
+   name="left_pad_editor"
+   text_pad_left="25"
+   top_pad="10"
+   width="200">
+    25 px left text padding
+  </line_editor>
+  <line_editor
+   height="20"
+   left_delta="0"
+   name="left_pad_editor"
+   text_pad_right="75"
+   top_pad="10"
+   width="200">
+    75 px right text padding
+  </line_editor>
+  <line_editor
+   height="20"
+   left_delta="0"
+   name="left_pad_editor"
+   text_pad_left="25"
+   text_pad_right="75"
+   top_pad="10"
+   width="200">
+    25 px left 75 px right text padding
+  </line_editor>
+  <!-- "search_editor" is a specialized line_editor that shows read-only
+       help text until the user clicks in the widget. -->
+  <search_editor
+   follows="left|top|right"
+   height="20"
+   label="Type here to search"
+   layout="topleft"
+   left_delta="0"
+   name="search editor"
+   tool_tip="search editor"
+   top_pad="10"
+   width="200" />
+</floater>
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
new file mode 100644
index 00000000000..32ccc31dfd4
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_test_list_view.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ can_resize="true"
+ height="400"
+ layout="topleft"
+ name="floater_test_list_view"
+ help_topic="floater_test_list_view"
+ translate="false"
+ width="400">
+ <!-- intentionally empty -->
+</floater>
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
new file mode 100644
index 00000000000..f4a50ecc962
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ can_resize="true"
+ height="200"
+ layout="topleft"
+ name="floater_test_navigation_bar"
+ help_topic="floater_test_navigation_bar"
+ translate="false"
+ width="900">
+  <panel
+    name="navigation_bar"
+    filename="panel_navigation_bar.xml"
+    left="10"
+    right="-10" 
+    top="30"
+    height="100"
+    border="true"
+      />           
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml b/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml
new file mode 100644
index 00000000000..db14ecae831
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ can_resize="true"
+ height="400"
+ layout="topleft"
+ name="floater_test_radiogroup"
+ help_topic="floater_test_radiogroup"
+ translate="false"
+ width="400">
+    <radio_group
+     height="54"
+     layout="topleft"
+     left="10"
+     name="parcel_voice_channel"
+     top="46"
+     width="219">
+        <radio_item
+         height="16"
+         label="Use the Estate spatial channel"
+         layout="topleft"
+         left="3"
+         name="Estate"
+         top="3"
+         width="463" />
+        <radio_item
+         height="16"
+         label="Use a private spatial channel"
+         layout="topleft"
+         left_delta="0"
+         name="Private"
+         top_delta="16"
+         width="463" />
+        <radio_item
+         height="16"
+         label="Disable spatial audio on this parcel"
+         layout="topleft"
+         left_delta="0"
+         name="Disabled"
+         top_delta="16"
+         width="463" />
+    </radio_group>
+    <radio_group
+     height="50"
+     layout="topleft"
+     left_delta="0"
+     name="simple_radio_group"
+     top_pad="50"
+     width="150">
+        <radio_item
+         bottom="20"
+         height="16"
+         label="Label in label attribute"
+         layout="topleft"
+         name="label_radio_item" />
+        <radio_item
+         bottom_delta="20"
+         height="16"
+         label="Label in text contents"
+         layout="topleft"
+         name="contents_radio_item" />
+    </radio_group>
+    <radio_group
+     draw_border="false"
+     height="50"
+     layout="topleft"
+     left_delta="0"
+     name="no_border_radio_group"
+     top_pad="50"
+     width="150">
+        <radio_item
+         bottom="20"
+         height="16"
+         label="No Border Foo"
+         layout="topleft"
+         name="foo_radio_item" />
+        <radio_item
+         bottom_delta="20"
+         height="16"
+         label="No Border Bar"
+         layout="topleft"
+         name="bar_item" />
+    </radio_group>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_test_slider.xml b/indra/newview/skins/default/xui/en/floater_test_slider.xml
new file mode 100644
index 00000000000..20bd555a032
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_test_slider.xml
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ can_resize="true"
+ height="500"
+ layout="topleft"
+ name="floater_test_slider"
+ help_topic="floater_test_slider"
+ translate="false"
+ width="450">
+    <slider
+     height="20"
+     label="Generic Slider"
+     layout="topleft"
+     left="10"
+     name="generic_slider"
+     top="40"
+     width="250" />
+    <slider
+     height="20"
+     label="Callback Slider"
+     layout="topleft"
+     left_delta="0"
+     name="callback_slider"
+     top_pad="20"
+     width="400">
+        <slider.mouse_up_callback
+         function="Test.TestCallback"
+         parameter="test" />
+    </slider>
+    <slider
+     height="20"
+     increment="1"
+     initial_value="2.0"
+     label="Value Slider"
+     layout="topleft"
+     left_delta="0"
+     max_val="5"
+     min_val="1"
+     name="value_slider"
+     top_pad="20"
+     width="250" />
+    <slider
+     height="20"
+     label="Mini Slider 1"
+     layout="topleft"
+     left_delta="0"
+     name="mini_slider_1"
+     top_pad="20"
+     width="200" />
+    <slider
+     height="20"
+     label="Mini Slider 2"
+     layout="topleft"
+     left_pad="20"
+     name="mini_slider_2"
+     top_delta="0"
+     width="200" />
+    <slider_bar
+     bottom="320"
+     height="100"
+     left="20"
+     name="slider_bar_vertical"
+     orientation="vertical"
+     width="20" />
+    <slider_bar
+     bottom="300"
+     height="20"
+     increment="1"
+     initial_value="2.0"
+     label="Slider Bar"
+     layout="topleft"
+     max_val="5"
+     min_val="1"
+     left_pad="20"
+     name="slider_bar"
+     width="300" />
+    <slider
+     bottom="360"
+     decimal_digits="1"
+     height="20"
+     label="Red Slider"
+     label_width="100"
+     layout="topleft"
+     name="red_slider"
+     text_color="red"
+     text_width="40" />
+	<slider
+	 width ="140"
+     bottom="490"
+     decimal_digits="1"
+     height="100"
+	 left="20"
+     label="Red Slider Vertical"
+     label_width="100"
+     layout="topleft"
+     name="red_slider_vertical"
+     text_color="red"
+	 orientation="vertical"
+     text_width="20" /> 
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_test_spinner.xml b/indra/newview/skins/default/xui/en/floater_test_spinner.xml
new file mode 100644
index 00000000000..acd49aa492e
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_test_spinner.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ can_resize="true"
+ height="400"
+ layout="topleft"
+ name="floater_test_spinner"
+ help_topic="floater_test_spinner"
+ translate="false"
+ width="450">
+    <spinner
+     height="32"
+     label="Generic Spinner"
+     layout="topleft"
+     left="10"
+     label_width="100"
+     name="generic_spinner"
+     top="40"
+     width="350" />
+    <spinner
+     height="20"
+     label="Callback Spinner"
+     label_width="100"
+     layout="topleft"
+     left_delta="0"
+     name="callback_spinner"
+     top_pad="20"
+     width="400" />
+    <spinner
+     height="20"
+     label="Colorful Spinner"
+     layout="topleft"
+     left_delta="0"
+     name="colorful_spinner"
+     top_pad="20"
+     width="250" />
+    <spinner
+     height="20"
+     increment="1"
+     initial_value="2.0"
+     label="Value Spinner"
+     layout="topleft"
+     left_delta="0"
+     max_val="5"
+     min_val="1"
+     name="value_spinner"
+     top_pad="20"
+     width="250" />
+    <spinner
+     height="20"
+     label="Mini Spinner 1"
+     layout="topleft"
+     left_delta="0"
+     name="mini_spinner_1"
+     top_pad="20"
+     width="200" />
+    <spinner
+     height="20"
+     label="Mini Spinner 2"
+     layout="topleft"
+     left_pad="20"
+     name="mini_spinner_2"
+     top_delta="0"
+     width="200" />
+    <spinner
+     control_name="RenderFogRatio"
+     decimal_digits="1"
+     height="20"
+     label="Control Spinner"
+     layout="topleft"
+     left="10"
+     max_val="20"
+     min_val="10"
+     name="control_spinner"
+     top="260"
+     width="250" />
+    <spinner
+     follows="left"
+     height="20"
+     label="Follows Left"
+     label_width="85"
+     layout="topleft"
+     left_delta="0"
+     name="follows_left"
+     top_pad="20"
+     width="250" />
+    <spinner
+     follows="right"
+     height="20"
+     label="Follows Right"
+     label_width="85"
+     layout="topleft"
+     left_delta="0"
+     name="follows_right"
+     top_pad="20"
+     width="250" />
+</floater>
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
new file mode 100644
index 00000000000..dc8f00d5f36
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_test_text_editor.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ can_resize="true"
+ height="600"
+ layout="topleft"
+ name="floater_test_text_editor"
+ translate="false"
+ width="800">
+  <text_editor
+   height="50"
+   follows="top|left|bottom"
+   left="10"
+   name="test_text_editor"
+   tool_tip="text editor"
+   top="25"
+   width="200">
+    Text Editor
+  </text_editor>
+  <text_editor
+   height="50"
+   follows="top|left|bottom"
+   font="SansSerif" 
+   left="10"
+   name="test_text_editor"
+   tool_tip="text editor"
+   top_pad="10"
+   width="200">
+    This contains long text and should scroll horizontally to the right
+  </text_editor>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_test_textbox.xml b/indra/newview/skins/default/xui/en/floater_test_textbox.xml
new file mode 100644
index 00000000000..2df9bb35fe8
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_test_textbox.xml
@@ -0,0 +1,254 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ can_resize="true"
+ height="600"
+ layout="topleft"
+ name="floater_test_textbox"
+ help_topic="floater_test_textbox"
+ translate="false"
+ width="800">
+    <text
+     type="string"
+     length="1"
+     height="90"
+     layout="topleft"
+     left="10"
+     top_pad="30"
+     width="300">
+        First line of multiple lines
+Second line of multiple lines
+Third line of multiple lines
+Fourth line of multiple lines
+Fifth line of multiple lines
+    </text>
+  <text
+    clip_partial="true"
+    top_pad="10"
+    left="10"
+    width="267"
+    height="28"
+    layout="topleft"
+    follows="right|left"
+    text_color="white"
+    use_ellipses="true"
+    word_wrap="true"
+    mouse_opaque="false"
+    name="title" >
+    This text has word_wrap set true, use_ellipses set true, and clip_partial set true, so it should wrap around, spilling over to the last line, then clip the last partial line and show ellipses to indicate there is more text
+  </text>
+
+  <text
+   font="SansSerif"
+   font.style="BOLD"
+   height="10"
+   layout="topleft"
+   left_delta="0"
+   top_pad="10"
+   width="300">
+    SansSerif BOLD
+  </text>
+  <text
+   font="SansSerif"
+   font.style="BOLD|UNDERLINE"
+   height="10"
+   layout="topleft"
+   left_delta="0"
+   top_pad="10"
+   width="300">
+    SansSerif BOLD UNDERLINE
+  </text>
+  <text
+ bottom="390"
+ left="10"
+ name="right_aligned_text"
+ width="300"
+ halign="right"
+ top_pad="10">
+    Right aligned text
+  </text>
+  <text
+ bottom="390"
+ left="10"
+ name="centered_text"
+ width="300"
+ halign="center"
+ top_pad="10">
+    Centered text
+  </text>
+  <text
+ left="10"
+ name="left_aligned_text"
+ width="300"
+ halign="left"
+ top_pad="10">
+    Left aligned text
+  </text>
+  <text
+ left="10"
+ name="v_pad_text"
+ height="40"
+ width="300"
+ halign="left"
+ top_pad="10"
+ v_pad="10">
+    v_pad = 10, height = 40
+  </text>
+  <text
+ left="10"
+ name="v_pad_text"
+ height="40"
+ width="300"
+ halign="left"
+ top_pad="10"
+ h_pad="30">
+    h_pad = 30, height = 40
+  </text>
+  <text
+ top_pad="10"
+ left="10"
+ right="-10"
+ height="20"
+ follows="top|left"
+ font.name="SansSerifSmall"
+ name="test_text10"
+ tool_tip="text">
+    SansSerifSmall
+    The 华文细黑 brown fox ヒラキjumped over the lazy dog.
+  </text>
+  <text
+   top_pad="10"
+   left="10"
+   right="-10"
+   height="25"
+   follows="top|left"
+   font.name="SansSerifMedium"
+   name="test_text11"
+   tool_tip="text">
+    SansSerif
+    The 华文细黑 brown fox ヒラキjumped over the lazy dog.
+  </text>
+  <text
+   top_pad="10"
+   left="10"
+   right="-10"
+   follows="top|left"
+   height="26"
+   font.name="SansSerifLarge"
+   name="test_text12"
+   tool_tip="text">
+    SansSerifLarge
+    The 华文细黑 brown fox ヒラキjumped over the lazy dog.
+  </text>
+  <text
+   top_pad="10"
+   left="10"
+   height="35"
+   right="-10"
+   follows="top|left"
+   font.name="SansSerifHuge"
+   name="test_text13"
+   tool_tip="text">
+    SansSerifHuge
+    The 华文细黑 brown fox ヒラキjumped over the lazy dog.
+  </text>
+  
+<!-- next column -->
+  <text_editor
+ height="50"
+ follows="top|left|bottom"
+ left="400"
+ name="test_text_editor"
+ tool_tip="text editor"
+ top="25"
+ width="200">
+    Text Editor
+  </text_editor>
+  <text_editor
+ height="50"
+ follows="top|left|bottom"
+ left_delta="0"
+ name="long_text_editor"
+ tool_tip="text editor"
+ top_pad="10"
+ width="200">
+Text Editor
+with multiple
+lines of text
+and hence a
+scroll bar
+  </text_editor>
+  <text_editor
+ height="50"
+ follows="top|left|bottom"
+ left_delta="0"
+ max_length="65536" 
+ name="blob_text_editor"
+ tool_tip="text editor"
+ top_pad="10"
+ width="200"
+ word_wrap="true">
+Second Life is brought to you by Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les and many others.
+  </text_editor>
+    <text_editor
+ height="50"
+ follows="top|left|bottom"
+ font="Monospace"
+ left_delta="0"
+ name="monospace_text_editor"
+ tool_tip="text editor"
+ top_pad="10"
+ width="200">
+Text Editor
+with multiple
+lines of text
+and hence a
+scroll bar gjyrrr
+  </text_editor>
+    <text_editor
+      border_visible="true"
+      height="50"
+      follows="top|left|bottom"
+      font="Monospace"
+ left_delta="0"
+ name="monospace_text_editor"
+ tool_tip="text editor"
+ top_pad="10"
+ width="200">
+Text Editor
+with multiple
+lines of text
+and hence a
+scroll bar gjyrrr
+  </text_editor>
+    <text_editor
+ height="50"
+ follows="top|left|bottom"
+ font="SansSerif"
+ left_delta="0"
+ name="sansserif_text_editor"
+ tool_tip="text editor"
+ top_pad="10"
+ width="200">
+Text Editor
+with multiple
+lines of text
+and hence a
+scroll bar gjyrrr
+  </text_editor>
+
+  <text
+   height="40"
+   follows="top|left|bottom"
+   layout="topleft"
+   name="test_text_box"
+   tool_tip="text box"
+   top_pad="5"
+   width="200">
+Text box
+with
+multiple lines
+and too many lines
+to actually fit
+  </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_test_widgets.xml b/indra/newview/skins/default/xui/en/floater_test_widgets.xml
new file mode 100644
index 00000000000..447bd7f599b
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_test_widgets.xml
@@ -0,0 +1,451 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<!-- Sample "floater" window with examples of common widgets.
+
+    Notes:
+    XML UI (XUI) files use spaces for indentation, not tabs.
+    All position values are in pixels.
+    For now, each widget must contain attribute layout="topleft".
+    0,0 is the top-left corner of the floater.
+    Each widget must have a unique name attribute.
+    If a widget is aligned with the one before it, use relative positioning:
+      top_pad
+      top_delta
+      left_pad
+      left_delta
+    Otherwise specify location with left and top attributes.
+-->
+<floater
+ legacy_header_height="18"
+ can_dock="true"
+ can_resize="true"
+ title="TEST FLOATER"
+ height="500"
+ min_width="850"
+ min_height="500"
+ layout="topleft"
+ name="floater_test_widgets"
+ help_topic="floater_test_widgets"
+ translate="false"
+ width="850">
+
+  <!-- Strings are used by C++ code for localization.  They are not visible
+       unless the C++ code uses them to fill in another widget. -->
+  <floater.string
+   name="sample_string"
+   value="Sample String" />
+  <floater.string
+   name="other_string"
+   value="Other String" />
+
+  <!-- Floaters can contain drop-down menus.
+       The menu_bar widget contains the inividual menus.
+       The width is automatically computed to fit the labels. -->
+  <menu_bar
+   height="18"
+   layout="topleft"
+   follows="top|left"
+   tool_tip="menu"
+   left="2"
+   name="test_menu_bar"
+   top="16">
+    <menu
+     height="16"
+     label="Menu"
+     layout="topleft"
+     tear_off="true"
+     left="0"
+     name="Menu"
+     top="-32"
+     width="128">
+      <!-- menu_item_call will trigger a function call in the C++ code -->
+      <menu_item_call
+       label="Menu Item 1"
+       layout="topleft"
+       name="test_menu_item_1" />
+      <!-- menu_item_separator is a horizontal line used to separate sections
+           of a menu.  In general, menus should be divided into chunks of
+           no more than 7 items separated by menu_item_separators. -->
+      <menu_item_separator/>
+      <menu_item_call
+       label="Menu Item 2"
+       layout="topleft"
+       name="test_menu_item_2" />
+    </menu>
+  </menu_bar>
+
+  <!-- "text" is one or more read-only lines of text.
+       It can be made clickable but this requires C++ code
+       support.  URLs are not automatically underlined. -->
+  <text
+   bottom="55"
+   layout="topleft"
+   follows="top|left"
+   left="10"
+   height="16">
+    For widget list see https://wiki.lindenlab.com/wiki/Viewer:UI/Widgets
+  </text>
+
+  <!-- First column -->
+
+  <button
+   height="20"
+   follows="top|left"
+   label="Button"
+   layout="topleft"
+   left_delta="0"
+   name="test_button"
+   tool_tip="button"
+   top="80"
+   width="100" />
+  <!-- "flyout_button" is a button that can spawn a menu -->
+  <flyout_button
+   follows="top|left"
+   height="20"
+   label="Flyout"
+   layout="topleft"
+   left_delta="0"
+   name="fly_btn"
+   top_pad="15"
+   tool_tip="flyout button"
+   width="100">
+    <flyout_button.item
+     label="Item 1"
+     value="shout" />
+    <flyout_button.item
+     label="Item 2"
+     value="say" />
+    <flyout_button.item
+     label="Item 3"
+     value="whisper" />
+  </flyout_button>
+  <check_box
+   bottom_delta="35"
+   label="Checkbox"
+   layout="topleft"
+   tool_tip="checkbox"
+   name="test_checkbox" />
+  <check_box
+   top_pad="5"
+   enabled="false" 
+   label="Checkbox Disabled"
+   tool_tip="checkbox disabled"
+   name="test_checkbox_disabled" />
+  <!-- "combo_box" is a pop-menu of items.  Optionally the box itself can
+       contain a general purpose line input editor, allowing the user to
+       provide input that is not a list item. -->
+  <combo_box
+   bottom_delta="35"
+   follows="top|left"
+   height="16"
+   width="150"
+   label="Combobox"
+   layout="topleft"
+   tool_tip="combo box"
+   name="test_combo_box">
+    <combo_box.item
+     name="item1"
+     label="Combobox Item 1" />
+    <combo_box.item
+     name="item2"
+     label="Combobox Item 2" />
+  </combo_box>
+  <!-- "icon" is a read-only image.  The image_name must match an entry
+        in textures.xml.  We support TGA and PNG for UI images. -->
+  <icon
+   height="16"
+   image_name="icon_avatar_online.tga"
+   layout="topleft"
+   left_delta="0"
+   tool_tip="icon"
+   name="test_icon"
+   top_pad="40"
+   width="16" />
+  <!-- "line_editor" allows a single line of editable text input.
+        The contents of this XML node are used as the initial value for
+        the text. -->
+  <line_editor
+   height="20"
+   follows="top|left"
+   layout="topleft"
+   left_delta="0"
+   name="test_line_editor"
+   top_pad="20"
+   tool_tip="line editor"
+   width="200">
+    Line Editor Sample Text
+  </line_editor>
+  <!-- "filter_editor" is a specialized line_editor that shows read-only
+       help text until the user clicks in the widget. -->
+  <filter_editor
+   follows="left|top"
+   height="20"
+   label="Type here to search"
+   layout="topleft"
+   left_delta="0"
+   name="search editor"
+   tool_tip="search editor"
+   top_pad="30"
+   width="200" />
+  <!-- "progress_bar" percent completed gets set in C++ code -->
+  <progress_bar
+   height="16"
+   follows="top|left"
+   layout="topleft"
+   left_delta="0"
+   name="test_progress_bar"
+   top_pad="30"
+   tool_tip="progress bar"
+   width="200" />
+  <!-- "stat_view" is a container for statistics graphs.  It is only used
+       for debugging/diagnostic displays. -->
+  <stat_view
+   height="250"
+   label="Statistics View"
+   layout="topleft"
+   left_delta="0"
+   name="axis_view"
+   show_label="true"
+   top_pad="30"
+   tool_tip="stat view"
+   width="200">
+    <stat_bar
+     width="100"
+     bar_max="100"
+     bottom_delta="30"
+     label="Test Stat"
+     layout="topleft"
+     stat="stat"
+     bar_min="20"
+     name="test_stat_bar" />
+  </stat_view>
+
+  <!-- New column -->
+
+  <!-- "radio_group" is a set of mutually exclusive choices, like the buttons
+       on a car radio that allow a single radio station to be chosen. -->
+  <radio_group
+   height="40"
+   layout="topleft"
+   left_pad="90"
+   name="size_radio_group"
+   tool_tip="radio group"
+   top="80"
+   width="200">
+    <radio_item
+     bottom="20"
+     label="Radio 1"
+     layout="topleft"
+     name="small_radio_item" />
+    <radio_item
+     label="Radio 2"
+     layout="topleft"
+     name="large_radio_item" />
+  </radio_group>
+  <!-- "scroll_list" is a scrolling list of columnar data. -->
+  <scroll_list
+   bottom_delta="100"
+   follows="top|left"
+   height="80"
+   draw_heading="true"
+   tool_tip="scroll list"
+   layout="topleft">
+    <scroll_list.columns
+     dynamic_width="true"
+     name="first_column"
+     label="Column A"/>
+    <scroll_list.columns
+     dynamic_width="true"
+     name="second_column"
+     label="Column B"/>
+    <row>
+      <column column="first_column">short text</column>
+      <column column="second_column">more short text</column>
+    </row>
+    <row>
+      <column column="first_column">this is some longer text</column>
+      <column column="second_column">and here is some more long text</column>
+    </row>
+  </scroll_list>
+  <!-- "slider" is a horizontal input widget for numerical data. -->
+  <slider
+   bottom_delta="45"
+   follows="top|left"
+   layout="topleft"
+   min_val="0"
+   max_val="100"
+   initial_value="20"
+   label="Slider"
+   name="test_slider"
+   tool_tip="slider"
+   width="200" />
+  <!-- "spinner" is a numerical input widget with an up and down arrow to
+       change the value. -->
+  <spinner
+   bottom_delta="35"
+   follows="top|left"
+   label="Spinner"
+   layout="topleft"
+   label_width="45"
+   name="test_spinner"
+   tool_tip="spinner"/>
+  <text
+   bottom_delta="50"
+   follows="top|left"
+   font.name="SansSerifSmall"
+   font.style = "UNDERLINE"
+   layout="topleft"
+   name="test_text"
+   tool_tip="text">
+    Text (underlined)
+  </text>
+  <text
+   top_pad="10"
+   follows="top|left"
+   layout="topleft"
+   width="60"
+   use_ellipses="true"
+   name="test_text"
+   tool_tip="text">
+    Truncated text here
+  </text>
+  <!-- "text_editor" is a multi-line text input widget, similar to
+       textarea in HTML. -->
+  <text_editor
+   height="40"
+   follows="top|left|bottom"
+   layout="topleft"
+   left_delta="0"
+   name="test_text_editor"
+   tool_tip="text editor"
+   top_pad="25"
+   width="200">
+    Text Editor
+  </text_editor>
+  <text
+   height="40"
+   follows="top|left|bottom"
+   layout="topleft"
+   name="test_text_box"
+   tool_tip="text box"
+   top_pad="5"
+   width="200">
+      Text box
+with
+multiple lines
+and too
+many
+line to actually fit
+  </text>
+  <!-- And a third column -->
+
+  <!-- "tab_container" is a holder for multiple panels of UI widgets.
+       Tabs can appear at the top, bottom, or left of the container. -->
+  <tab_container
+   follows="all"
+   height="400"
+   halign="center"
+   layout="topleft"
+   left="525"
+   name="group_tab_container"
+   tab_position="top"
+   tab_height="20"
+   tool_tip="tab container"
+   top="80"
+   width="300">
+    <!-- "panel" is a container for widgets.  It is automatically resized to
+         fit the parent tab_container. -->
+    <panel
+	 border="true"
+     label="Tab 1 - Color"
+     layout="topleft"
+     name="panel2">
+      <!-- "color_swatch" displays a color and spawns a color picker when
+           clicked. -->
+      <color_swatch
+       can_apply_immediately="true"
+       color="0.3 0.6 0.9 1"
+       follows="left|top"
+       height="90"
+       layout="topleft"
+       left="10"
+       label="Color Swatch 1"
+       name="swatch1"
+       tool_tip="Color Swatch: Click to open Color Picker"
+       top="10"
+       width="80" />
+      <color_swatch
+       can_apply_immediately="true"
+       color="1 0 1 1"
+       follows="left|top"
+       height="90"
+       label="Color Swatch 2"
+       layout="topleft"
+       left_pad="10"
+       name="swatch2"
+       tool_tip="Color Swatch: Click to open Color Picker"
+       top_delta="0"
+       width="80" />
+      <text
+       top_pad="10"
+       left="10"
+       width="250" 
+       follows="top|left"
+       font.name="Monospace"
+       name="test_text10"
+       tool_tip="text">
+        Monospace Button Flyout Checkbox
+      </text>
+      <text
+       top_pad="10"
+       left="10"
+       width="250" 
+       follows="top|left"
+       font.name="SansSerifSmall"
+       name="test_text10"
+       tool_tip="text">
+        SansSerifSmall.  Русский 中文 (简体)
+      </text>
+      <text
+       top_pad="10"
+       left="10"
+       width="250"
+       follows="top|left"
+       font.name="SansSerif"
+       name="test_text11"
+       tool_tip="text">
+        SansSerif.  Русский 中文 (简体)
+      </text>
+      <text
+       top_pad="10"
+       left="10"
+       width="250" 
+       follows="top|left"
+       font.name="SansSerifLarge"
+       name="test_text12"
+       tool_tip="text">
+        SansSerifLarge.  Русский 中文 (简体)
+      </text>
+      <text
+       top_pad="10"
+       left="10"
+       width="250"
+       follows="top|left"
+       font.name="SansSerifHuge"
+       name="test_text13"
+       tool_tip="text">
+        SansSerifHuge.  Русский 中文 (简体)
+      </text>
+    </panel>
+    <!-- panels can also refer to other floaters or panels -->
+    <panel
+	  border="true"
+     filename="floater_test_checkbox.xml"
+     height="225"
+     label="Tab 2 - Checkbox"
+     layout="topleft"
+     left_delta="0"
+     name="tab2"
+     top_delta="159"
+     width="250" />
+  </tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_ui_preview.xml b/indra/newview/skins/default/xui/en/floater_ui_preview.xml
new file mode 100644
index 00000000000..e86cb23c1eb
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_ui_preview.xml
@@ -0,0 +1,408 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ can_resize="true"
+ height="640"
+ layout="topleft"
+ min_height="230"
+ min_width="650"
+ name="gui_preview_tool"
+ help_topic="gui_preview_tool"
+ single_instance="true"
+ title="XUI PREVIEW TOOL"
+ translate="false"
+ width="750">
+    <panel
+     bottom="640"
+     follows="left|top|right|bottom"
+     layout="topleft"
+     left="0"
+     mouse_opaque="false"
+     name="main_panel"
+     right="750"
+     top="0">
+        <text
+         type="string"
+         length="1"
+         follows="top|left"
+         font="SansSerif"
+         height="30"
+         layout="topleft"
+         left="10"
+         name="select_language_label"
+         top="25"
+         width="130">
+            Primary Language:
+        </text>
+        <combo_box
+         follows="top|left"
+         height="20"
+         layout="topleft"
+         left_pad="5"
+         name="language_select_combo"
+         top_delta="0"
+         width="55">
+            <combo_box.item
+             label="en"
+             name="item1"
+             value="en" />
+        </combo_box>
+        <button
+         follows="left|top"
+         height="25"
+         label="Show"
+         label_selected="Show"
+         layout="topleft"
+         left_pad="10"
+         name="display_floater"
+         tool_tip="Display the XUI floater defined by the selected XML file"
+         top_delta="-2"
+         width="95" />
+        <button
+         enabled="false"
+         follows="left|top"
+         height="25"
+         label="Hide"
+         label_selected="Hide"
+         layout="topleft"
+         left_pad="10"
+         name="close_displayed_floater"
+         tool_tip="Closes the currently-displayed floater, if one exists"
+         top_delta="0"
+         width="85" />
+        <button
+         follows="left|top"
+         height="25"
+         label="Edit..."
+         label_selected="Edit..."
+         layout="topleft"
+         left_pad="10"
+         name="edit_floater"
+         tool_tip="Edit the XUI floater defined by the selected XML file (opens external editor).  Opens en version if no localized version exists."
+         top_delta="0"
+         width="95" />
+        <button
+         follows="left|top"
+         height="25"
+         label="Save"
+         label_selected="Save"
+         layout="topleft"
+         left_pad="5"
+         name="save_floater"
+         tool_tip="Save the XUI floater defined by the selected XML file"
+         top_delta="0"
+         width="85" />
+        <button
+         follows="left|top"
+         height="25"
+         label="Save All"
+         label_selected="Save All"
+         layout="topleft"
+         left_pad="10"
+         name="save_all_floaters"
+         tool_tip="Save all XUI floaters defined by the selected language"
+         top_delta="0"
+         width="85" />
+        <button
+         follows="right|top"
+         height="25"
+         is_toggle="true"
+         label="&gt; &gt;"
+         label_selected="&lt; &lt;"
+         layout="topleft"
+         left_pad="15"
+         name="toggle_overlap_panel"
+         tool_tip="Toggle highlighting and display panel for overlapping elements; right click an element to select it for this feature.  The selected element is marked by a red rectangle."
+         top_delta="0"
+         width="30" />
+        <text
+         type="string"
+         length="1"
+         follows="top|left"
+         font="SansSerif"
+         height="30"
+         layout="topleft"
+         left="10"
+         name="select_language_label_2"
+         right="-50"
+         top="53"
+         width="105">
+            Secondary Language:
+        </text>
+        <combo_box
+         follows="top|left"
+         height="20"
+         layout="topleft"
+         left_delta="135"
+         name="language_select_combo_2"
+         top_delta="0"
+         width="55">
+            <combo_box.item
+             label="en"
+             name="item1"
+             value="en" />
+        </combo_box>
+        <button
+         follows="left|top"
+         height="25"
+         label="Show"
+         layout="topleft"
+         left_pad="10"
+         name="display_floater_2"
+         tool_tip="Display the XUI floater defined by the selected XML file"
+         top_delta="-2"
+         width="95" />
+        <button
+         enabled="false"
+         follows="left|top"
+         height="25"
+         label="Hide"
+         layout="topleft"
+         left_pad="10"
+         name="close_displayed_floater_2"
+         tool_tip="Closes the currently-displayed floater, if one exists"
+         top_delta="0"
+         width="85" />
+        <button
+         follows="left|top"
+         height="25"
+         label="Export Schema"
+         layout="topleft"
+         left_pad="10"
+         name="export_schema"
+         top_delta="0"
+         width="120" />
+        <check_box
+          follows="left|top"
+          label="Show Rectangles"
+          name="show_rectangles"
+          left_pad="10"
+          top_delta="0"
+          height="25"
+          width="120" />
+      
+        <scroll_list
+         bottom="525"
+         column_padding="0"
+         draw_heading="true"
+         draw_stripes="false"
+         follows="left|top|bottom|right"
+         label="Name"
+         layout="topleft"
+         left="10"
+         name="name_list"
+         right="-10"
+         search_column="1"
+         top="80">
+            <scroll_list.columns
+             label="Title"
+             name="title_column"
+             width="150" />
+            <scroll_list.columns
+             label="File"
+             name="file_column"
+             width="150" />
+            <scroll_list.columns
+             dynamic_width="true"
+             label="Top-Level Node"
+             name="top_level_node_column" />
+        </scroll_list>
+        <panel
+         bevel_style="in"
+         bg_alpha_color="0 0 0 0"
+         bg_opaque_color="0 0 0 0.3"
+         border="true"
+         bottom_delta="65"
+         follows="left|right|bottom"
+         height="60"
+         layout="topleft"
+         left="10"
+         name="editor_panel"
+         right="-10">
+            <text
+             type="string"
+             length="1"
+             follows="left|bottom"
+             font="SansSerif"
+             height="30"
+             layout="topleft"
+             left="10"
+             left_delta="10"
+             name="editor_path_label"
+             top="10"
+             width="100">
+                Editor Path:
+            </text>
+            <line_editor
+             border_style="line"
+             border_thickness="1"
+             follows="left|bottom"
+             font="SansSerif"
+             handle_edit_keys_directly="true"
+             height="20"
+             layout="topleft"
+             left_delta="100"
+             max_length="300"
+             name="executable_path_field"
+             select_on_focus="true"
+             tool_tip="The full path to an editor (executable) to edit floater XML files (quotes not necessary)"
+             top_delta="-2"
+             width="315" />
+            <button
+             follows="left|bottom"
+             height="25"
+             label="Browse..."
+             label_selected="Browse..."
+             layout="topleft"
+             left_pad="5"
+             name="browse_for_executable"
+             tool_tip="Browse for an editor (executable) to edit floater XML files"
+             top_delta="-2"
+             width="75" />
+            <text
+             type="string"
+             length="1"
+             follows="left|bottom"
+             font="SansSerif"
+             height="30"
+             layout="topleft"
+             left="10"
+             left_delta="-420"
+             name="executable_args_label"
+             top="36"
+             width="100">
+                Editor Arguments:
+            </text>
+            <line_editor
+             border_style="line"
+             border_thickness="1"
+             follows="left|bottom"
+             font="SansSerif"
+             handle_edit_keys_directly="true"
+             height="20"
+             layout="topleft"
+             left_delta="100"
+             max_length="300"
+             name="executable_args_field"
+             select_on_focus="true"
+             tool_tip="Command-line arguments to the editor; use &apos;%FILE%&apos; to refer to the target file; &apos;YourProgram.exe FileName.xml&apos; will be run if this field is empty"
+             top_delta="-2"
+             width="315" />
+        </panel>
+        <panel
+         bevel_style="in"
+         bg_alpha_color="0 0 0 0"
+         bg_opaque_color="0 0 0 0.3"
+         border="true"
+         bottom_delta="40"
+         follows="left|right|bottom"
+         height="35"
+         layout="topleft"
+         left="10"
+         name="vlt_panel"
+         right="-10">
+            <text
+             type="string"
+             length="1"
+             follows="left|bottom"
+             font="SansSerif"
+             height="30"
+             layout="topleft"
+             left="10"
+             left_delta="10"
+             name="diff_file_label"
+             top="10"
+             width="200">
+                Delta File:
+            </text>
+            <line_editor
+             border_style="line"
+             border_thickness="1"
+             follows="left|bottom"
+             font="SansSerif"
+             handle_edit_keys_directly="true"
+             height="20"
+             layout="topleft"
+             left_delta="65"
+             max_length="300"
+             name="vlt_diff_path_field"
+             select_on_focus="true"
+             tool_tip="The full path to an XML D0 or D1 localization difference file generated by the Viewer Localization Toolkit"
+             top_delta="-2"
+             width="235" />
+            <button
+             follows="left|bottom"
+             height="25"
+             label="Browse..."
+             label_selected="Browse..."
+             layout="topleft"
+             left_pad="5"
+             name="browse_for_vlt_diffs"
+             tool_tip="Browse for a VLT-generated D0 or D1 difference file to highlight changed files and elements"
+             top_delta="-2"
+             width="75" />
+            <button
+             follows="left|bottom"
+             height="25"
+             is_toggle="true"
+             label="Highlight Diffs"
+             label_selected="Unhighlight Diffs"
+             layout="topleft"
+             left_pad="5"
+             name="toggle_vlt_diff_highlight"
+             tool_tip="Toggle highlighting of files and elements containing changed localization data"
+             top_delta="0"
+             width="110" />
+        </panel>
+    </panel>
+    <scroll_container
+     follows="top|right|bottom"
+     height="600"
+     layout="topleft"
+     left="750"
+     name="overlap_scroll"
+     reserve_scroll_corner="true"
+     top="20"
+     width="300">
+      <panel
+        border="true"
+        name="overlap_dummy_panel"
+        top="0"
+        left="0"
+        width="300"
+        height="600"
+        >
+        <overlap_panel
+         background_opaque="true"
+         background_visible="true"
+         bevel_style="in"
+         bg_alpha_color="0 0 0 1"
+         bg_opaque_color="1 1 1 1"
+         border="true"
+         follows="top|right|bottom"
+         height="600"
+         label="Overlap Panel"
+         layout="topleft"
+         left="0"
+         min_width="300"
+         name="overlap_panel"
+         tool_tip="This panel displays the currently-selected element and all of the elements that overlap it, separated by horizontal lines"
+         top="0"
+         visible="false"
+         width="300" />
+        <text
+         type="string"
+         length="1"
+         follows="top|right"
+         font="SansSerif"
+         height="30"
+         layout="topleft"
+         left="10"
+         name="overlap_panel_label"
+         top="10"
+         width="150">
+            Overlapping Elements:
+        </text>
+      </panel>
+    </scroll_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index ada702cffef..b378944e48a 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -299,6 +299,1453 @@
 	<!-- LSL Usage Hover Tips -->
 	<!-- NOTE: For now these are set as translate="false", until DEV-40761 is implemented (to internationalize the rest of tooltips in the same window).
              This has no effect on viewer code, but prevents Linden Lab internal localization tool from scraping these strings.  -->
+	<string name="LSLTipSleepTime" translate="false">
+Sleeps script for [SLEEP_TIME] seconds.
+	</string>
+
+	<string name="LSLTipText_llSin" translate="false">
+float llSin(float theta)
+Returns the sine of theta (theta in radians)
+	</string>
+	<string name="LSLTipText_llCos" translate="false">
+float llCos(float theta)
+Returns the cosine of theta (theta in radians)
+	</string>
+	<string name="LSLTipText_llTan" translate="false">
+float llTan(float theta)
+Returns the tangent of theta (theta in radians)
+	</string>
+	<string name="LSLTipText_llAtan2" translate="false">
+float llAtan2(float y, float x)
+Returns the arctangent2 of y, x
+	</string>
+	<string name="LSLTipText_llSqrt" translate="false">
+float llSqrt(float val)
+Returns the square root of val, or returns 0 and triggers a Math Error for imaginary results
+	</string>
+	<string name="LSLTipText_llPow" translate="false">
+float llPow(float base, float exponent)
+Returns the base raised to the power exponent, or returns 0 and triggers Math Error for imaginary results
+	</string>
+	<string name="LSLTipText_llAbs" translate="false">
+integer llAbs(integer val)
+Returns the positive version of val
+	</string>
+	<string name="LSLTipText_llFabs" translate="false">
+float llFabs(float val)
+Returns the positive version of val
+	</string>
+	<string name="LSLTipText_llFrand" translate="false">
+float llFrand(float mag)
+Returns a pseudo random number in the range [0,mag) or (mag,0]
+	</string>
+	<string name="LSLTipText_llFloor" translate="false">
+integer llFloor(float val)
+Returns largest integer value &lt;= val
+	</string>
+	<string name="LSLTipText_llCeil" translate="false">
+integer llCeil(float val)
+Returns smallest integer value &gt;= val
+	</string>
+	<string name="LSLTipText_llRound" translate="false">
+integer llRound(float val)
+Returns val rounded to the nearest integer
+	</string>
+	<string name="LSLTipText_llVecMag" translate="false">
+float llVecMag(vector v)
+Returns the magnitude of v
+	</string>
+	<string name="LSLTipText_llVecNorm" translate="false">
+vector llVecNorm(vector v)
+Returns the v normalized
+	</string>
+	<string name="LSLTipText_llVecDist" translate="false">
+float llVecDist(vector v1, vector v2)
+Returns the 3D distance between v1 and v2
+	</string>
+	<string name="LSLTipText_llRot2Euler" translate="false">
+vector llRot2Euler(rotation q)
+Returns the Euler representation (roll, pitch, yaw) of q
+	</string>
+	<string name="LSLTipText_llEuler2Rot" translate="false">
+rotation llEuler2Rot(vector v)
+Returns the rotation representation of Euler Angles v
+	</string>
+	<string name="LSLTipText_llAxes2Rot" translate="false">
+rotation llAxes2Rot(vector fwd, vector left, vector up)
+Returns the rotation defined by the coordinate axes
+	</string>
+	<string name="LSLTipText_llRot2Fwd" translate="false">
+vector llRot2Fwd(rotation q)
+Returns the forward vector defined by q
+	</string>
+	<string name="LSLTipText_llRot2Left" translate="false">
+vector llRot2Left(rotation q)
+Returns the left vector defined by q
+	</string>
+	<string name="LSLTipText_llRot2Up" translate="false">
+vector llRot2Up(rotation q)
+Returns the up vector defined by q
+	</string>
+	<string name="LSLTipText_llRotBetween" translate="false">
+rotation llRotBetween(vector v1, vector v2)
+Returns the rotation to rotate v1 to v2
+	</string>
+	<string name="LSLTipText_llWhisper" translate="false">
+llWhisper(integer channel, string msg)
+Whispers the text of msg on channel
+	</string>
+	<string name="LSLTipText_llSay" translate="false">
+llSay(integer channel, string msg)
+Says the text of msg on channel
+	</string>
+	<string name="LSLTipText_llShout" translate="false">
+llShout(integer channel, string msg)
+Shouts the text of msg on channel
+	</string>
+	<string name="LSLTipText_llListen" translate="false">
+integer llListen(integer channel, string name, key id, string msg)
+Sets a callback for msg on channel from name and id (name, id, and/or msg can be empty) and returns an identifier that can be used to deactivate or remove the listen
+	</string>
+	<string name="LSLTipText_llListenControl" translate="false">
+llListenControl(integer number, integer active)
+Makes a listen event callback active or inactive
+	</string>
+	<string name="LSLTipText_llListenRemove" translate="false">
+llListenRemove(integer number)
+Removes listen event callback number
+	</string>
+	<string name="LSLTipText_llSensor" translate="false">
+llSensor(string name, key id, integer type, float range, float arc)
+Performs a single scan for name and id with type (AGENT, ACTIVE, PASSIVE, and/or SCRIPTED) within range meters and arc radians of forward vector (name, id, and/or keytype can be empty or 0)
+	</string>
+	<string name="LSLTipText_llSensorRepeat" translate="false">
+llSensorRepeat(string name, key id, integer type, float range, float arc, float rate)
+Sets a callback for name and id with type (AGENT, ACTIVE, PASSIVE, and/or SCRIPTED) within range meters and arc radians of forward vector (name, id, and/or keytype can be empty or 0) and repeats every rate seconds
+	</string>
+	<string name="LSLTipText_llSensorRemove" translate="false">
+llSensorRemove()
+Removes the sensor setup by llSensorRepeat
+	</string>
+	<string name="LSLTipText_llDetectedName" translate="false">
+string llDetectedName(integer number)
+Returns the name of detected object number (returns empty string if number is not a valid sensed object)
+	</string>
+	<string name="LSLTipText_llDetectedKey" translate="false">
+key llDetectedKey(integer number)
+Returns the key of detected object number (returns empty key if number is not a valid sensed object)
+	</string>
+	<string name="LSLTipText_llDetectedOwner" translate="false">
+key llDetectedOwner(integer number)
+Returns the key of detected object&apos;s owner (returns empty key if number is not a valid sensed object)
+	</string>
+	<string name="LSLTipText_llDetectedType" translate="false">
+integer llDetectedType(integer number)
+Returns the type (AGENT, ACTIVE, PASSIVE, SCRIPTED) of detected object (returns 0 if number is not a valid sensed object)
+	</string>
+	<string name="LSLTipText_llDetectedPos" translate="false">
+vector llDetectedPos(integer number)
+Returns the position of detected object number (returns &lt;0,0,0&gt; if number is not a valid sensed object)
+	</string>
+	<string name="LSLTipText_llDetectedVel" translate="false">
+vector llDetectedVel(integer number)
+Returns the velocity of detected object number (returns &lt;0,0,0&gt; if number is not a valid sensed object)
+	</string>
+	<string name="LSLTipText_llDetectedGrab" translate="false">
+vector llDetectedGrab(integer number)
+Returns the grab offset of the user touching object (returns &lt;0,0,0&gt; if number is not a valid sensed object)
+	</string>
+	<string name="LSLTipText_llDetectedRot" translate="false">
+rotation llDetectedRot(integer number)
+Returns the rotation of detected object number (returns &lt;0,0,0,1&gt; if number is not a valid sensed object)
+	</string>
+	<string name="LSLTipText_llDetectedGroup" translate="false">
+integer llDetectedGroup(integer number)
+Returns TRUE if detected object is part of same group as owner
+	</string>
+	<string name="LSLTipText_llDetectedLinkNumber" translate="false">
+integer llDetectedLinkNumber(integer number)
+Returns the link position of the triggered event for touches and collisions only
+	</string>
+	<string name="LSLTipText_llDie" translate="false">
+llDie()
+Deletes the object
+	</string>
+	<string name="LSLTipText_llGround" translate="false">
+float llGround(vector offset)
+Returns the ground height below the object position + offset
+	</string>
+	<string name="LSLTipText_llCloud" translate="false">
+float llCloud(vector offset)
+Returns the cloud density at the object position + offset
+	</string>
+	<string name="LSLTipText_llWind" translate="false">
+vector llWind(vector offset)
+Returns the wind velocity at the object position + offset
+	</string>
+	<string name="LSLTipText_llSetStatus" translate="false">
+llSetStatus(integer status, integer value)
+Sets status (STATUS_PHYSICS, STATUS_PHANTOM, STATUS_BLOCK_GRAB, STATUS_ROTATE_X, STATUS_ROTATE_Y, and/or STATUS_ROTATE_Z) to value
+	</string>
+	<string name="LSLTipText_llGetStatus" translate="false">
+integer llGetStatus(integer status)
+Returns value of status (STATUS_PHYSICS, STATUS_PHANTOM, STATUS_BLOCK_GRAB, STATUS_ROTATE_X, STATUS_ROTATE_Y, and/or STATUS_ROTATE_Z)
+	</string>
+	<string name="LSLTipText_llSetScale" translate="false">
+llSetScale(vector scale)
+Sets the scale of the prim
+	</string>
+	<string name="LSLTipText_llGetScale" translate="false">
+vector llGetScale()
+Returns the scale of the prim
+	</string>
+	<string name="LSLTipText_llSetColor" translate="false">
+llSetColor(vector color, integer face)
+Sets the color on face of the prim
+	</string>
+	<string name="LSLTipText_llGetAlpha" translate="false">
+float llGetAlpha(integer face)
+Returns the alpha of face
+	</string>
+	<string name="LSLTipText_llSetAlpha" translate="false">
+llSetAlpha(float alpha, integer face)
+Sets the alpha on face
+	</string>
+	<string name="LSLTipText_llGetColor" translate="false">
+vector llGetColor(integer face)
+Returns the color on face
+	</string>
+	<string name="LSLTipText_llSetTexture" translate="false">
+llSetTexture(string texture, integer face)
+Sets the texture of face or ALL_SIDES
+	</string>
+	<string name="LSLTipText_llScaleTexture" translate="false">
+llScaleTexture(float u, float v, integer face)
+Sets the texture u &amp; v scales for the chosen face or ALL_SIDES
+	</string>
+	<string name="LSLTipText_llOffsetTexture" translate="false">
+llOffsetTexture(float u, float v, integer face)
+Sets the texture u &amp; v offsets for the chosen face or ALL_SIDES
+	</string>
+	<string name="LSLTipText_llRotateTexture" translate="false">
+llRotateTexture(float rotation, integer face)
+Sets the texture rotation for the chosen face
+	</string>
+	<string name="LSLTipText_llGetTexture" translate="false">
+string llGetTexture(integer face)
+Returns a string that is the texture on face (the inventory name if it is a texture in the prim&apos;s inventory, otherwise the key)
+	</string>
+	<string name="LSLTipText_llSetPos" translate="false">
+llSetPos(vector pos)
+Moves the object or prim towards pos without using physics (if the script isn&apos;t physical)
+	</string>
+	<string name="LSLTipText_llGetPos" translate="false">
+vector llGetPos()
+Returns the position of the task in region coordinates
+	</string>
+	<string name="LSLTipText_llGetLocalPos" translate="false">
+vector llGetLocalPos()
+Returns the position relative to the root
+	</string>
+	<string name="LSLTipText_llSetRot" translate="false">
+llSetRot(rotation rot)
+Sets the rotation
+	</string>
+	<string name="LSLTipText_llGetRot" translate="false">
+rotation llGetRot()
+Returns the rotation relative to the region&apos;s axes
+	</string>
+	<string name="LSLTipText_llGetLocalRot" translate="false">
+rotation llGetLocalRot()
+Returns the rotation local to the root
+	</string>
+	<string name="LSLTipText_llSetForce" translate="false">
+llSetForce(vector force, integer local)
+Applies force to the object (if the script is physical), in local coords if local == TRUE
+	</string>
+	<string name="LSLTipText_llGetForce" translate="false">
+vector llGetForce()
+Returns the force (if the script is physical)
+	</string>
+	<string name="LSLTipText_llTarget" translate="false">
+integer llTarget(vector position, float range)
+Sets positions within range of position as a target and return an ID for the target
+	</string>
+	<string name="LSLTipText_llTargetRemove" translate="false">
+llTargetRemove(integer number)
+Removes positional target number registered with llTarget
+	</string>
+	<string name="LSLTipText_llRotTarget" translate="false">
+integer llRotTarget(rotation rot, float error)
+Set rotations with error of rot as a rotational target and return an ID for the rotational target
+	</string>
+	<string name="LSLTipText_llRotTargetRemove" translate="false">
+llRotTargetRemove(integer number)
+Removes rotational target number registered with llRotTarget
+	</string>
+	<string name="LSLTipText_llMoveToTarget" translate="false">
+llMoveToTarget(vector target, float tau)
+Critically damps to target in tau seconds (if the script is physical)
+	</string>
+	<string name="LSLTipText_llStopMoveToTarget" translate="false">
+llStopMoveToTarget()
+Stops critically damped motion
+	</string>
+	<string name="LSLTipText_llApplyImpulse" translate="false">
+llApplyImpulse(vector force, integer local)
+Applies impulse to object (if the script is physical), in local coords if local == TRUE
+	</string>
+	<string name="LSLTipText_llApplyRotationalImpulse" translate="false">
+llApplyRotationalImpulse(vector force, integer local)
+Applies rotational impulse to object (if the script is physical), in local coords if local == TRUE
+	</string>
+	<string name="LSLTipText_llSetTorque" translate="false">
+llSetTorque(vector torque, integer local)
+Sets the torque of object (if the script is physical), in local coords if local == TRUE
+	</string>
+	<string name="LSLTipText_llGetTorque" translate="false">
+vector llGetTorque()
+Returns the torque (if the script is physical)
+	</string>
+	<string name="LSLTipText_llSetForceAndTorque" translate="false">
+llSetForceAndTorque(vector force, vector torque, integer local)
+Sets the force and torque of object (if the script is physical), in local coords if local == TRUE
+	</string>
+	<string name="LSLTipText_llGetVel" translate="false">
+vector llGetVel()
+Returns the velocity of the object
+	</string>
+	<string name="LSLTipText_llGetAccel" translate="false">
+vector llGetAccel()
+Returns the acceleration of the object relative to the region&apos;s axes
+	</string>
+	<string name="LSLTipText_llGetOmega" translate="false">
+vector llGetOmega()
+Returns the rotation velocity in radians per second
+	</string>
+	<string name="LSLTipText_llGetTimeOfDay" translate="false">
+float llGetTimeOfDay()
+Returns the time in seconds since [SECOND_LIFE] server midnight or since region up-time, whichever is smaller
+	</string>
+	<string name="LSLTipText_llGetWallclock" translate="false">
+float llGetWallclock()
+Returns the time in seconds since midnight California Pacific time (PST/PDT)
+	</string>
+	<string name="LSLTipText_llGetTime" translate="false">
+float llGetTime()
+Returns the time in seconds since the last region reset, script reset, or call to either llResetTime or llGetAndResetTime
+	</string>
+	<string name="LSLTipText_llResetTime" translate="false">
+llResetTime()
+Sets the script timer to zero
+	</string>
+	<string name="LSLTipText_llGetAndResetTime" translate="false">
+float llGetAndResetTime()
+Returns the script time in seconds and then resets the script timer to zero
+	</string>
+	<string name="LSLTipText_llSoplayund" translate="false">
+llSound(string sound, float volume, integer queue, integer loop)
+Plays sound at volume and whether it should loop or not
+	</string>
+	<string name="LSLTipText_llPlaySound" translate="false">
+llPlaySound(string sound, float volume)
+Plays attached sound once at volume (0.0 - 1.0)
+	</string>
+	<string name="LSLTipText_llLoopSound" translate="false">
+llLoopSound(string sound, float volume)
+Plays attached sound looping indefinitely at volume (0.0 - 1.0)
+	</string>
+	<string name="LSLTipText_llLoopSoundMaster" translate="false">
+llLoopSoundMaster(string sound, float volume)
+Plays attached sound looping at volume (0.0 - 1.0), declares it a sync master
+	</string>
+	<string name="LSLTipText_llLoopSoundSlave" translate="false">
+llLoopSoundSlave(string sound, float volume)
+Plays attached sound looping at volume (0.0 - 1.0), synced to most audible sync master
+	</string>
+	<string name="LSLTipText_llPlaySoundSlave" translate="false">
+llPlaySoundSlave(string sound, float volume)
+Plays attached sound once at volume (0.0 - 1.0), synced to next loop of most audible sync master
+	</string>
+	<string name="LSLTipText_llTriggerSound" translate="false">
+llTriggerSound(string sound, float volume)
+Plays sound at volume (0.0 - 1.0), centered at but not attached to object
+	</string>
+	<string name="LSLTipText_llStopSound" translate="false">
+llStopSound()
+Stops currently attached sound
+	</string>
+	<string name="LSLTipText_llPreloadSound" translate="false">
+llPreloadSound(string sound)
+Preloads a sound on viewers within range
+	</string>
+	<string name="LSLTipText_llGetSubString" translate="false">
+string llGetSubString(string src, integer start, integer end)
+Returns the indicated substring
+	</string>
+	<string name="LSLTipText_llDeleteSubString" translate="false">
+string llDeleteSubString(string src, integer start, integer end)
+Removes the indicated substring and returns the result
+	</string>
+	<string name="LSLTipText_llInsertString" translate="false">
+string llInsertString(string dst, integer position, string src)
+Returns a destination string dst with the string src inserted starting at position pos
+	</string>
+	<string name="LSLTipText_llToUpper" translate="false">
+string llToUpper(string src)
+Returns a string that is src with all upper-case characters
+	</string>
+	<string name="LSLTipText_llToLower" translate="false">
+string llToLower(string src)
+Returns a string that is src with all lower-case characters
+	</string>
+	<string name="LSLTipText_llGiveMoney" translate="false">
+llGiveMoney(key destination, integer amount)
+Transfers amount of L$ from script owner to destination
+	</string>
+	<string name="LSLTipText_llMakeExplosion" translate="false">
+llMakeExplosion(integer particles, float scale, float vel, float lifetime, float arc, string texture, vector offset)
+Makes a round explosion of particles
+	</string>
+	<string name="LSLTipText_llMakeFountain" translate="false">
+llMakeFountain(integer particles, float scale, float vel, float lifetime, float arc, integer bounce, string texture, vector offset, float bounce_offset)
+Makes a fountain of particles
+	</string>
+	<string name="LSLTipText_llMakeSmoke" translate="false">
+llMakeSmoke(integer particles, float scale, float vel, float lifetime, float arc, string texture, vector offset)
+Makes smoke like particles
+	</string>
+	<string name="LSLTipText_llMakeFire" translate="false">
+llMakeFire(integer particles, float scale, float vel, float lifetime, float arc, string texture, vector offset)
+Makes fire like particles
+	</string>
+	<string name="LSLTipText_llRezObject" translate="false">
+llRezObject(string inventory, vector pos, vector vel, rotation rot, integer param)
+Instantiates owner&apos;s inventory object at pos with velocity vel and rotation rot with start parameter param
+	</string>
+	<string name="LSLTipText_llLookAt" translate="false">
+llLookAt(vector target, float strength, float damping)
+Causes object to point its up axis (positive z) towards target, while keeping its forward axis (positive x) below the horizon
+	</string>
+	<string name="LSLTipText_llStopLookAt" translate="false">
+llStopLookAt()
+Stops causing object to point at a target
+	</string>
+	<string name="LSLTipText_llSetTimerEvent" translate="false">
+llSetTimerEvent(float sec)
+Causes the timer event to be triggered a maximum of once every sec seconds
+	</string>
+	<string name="LSLTipText_llSleep" translate="false">
+llSleep(float sec)
+Puts the script to sleep for sec seconds
+	</string>
+	<string name="LSLTipText_llGetMass" translate="false">
+float llGetMass()
+Returns the mass of object that the script is attached to
+	</string>
+	<string name="LSLTipText_llCollisionFilter" translate="false">
+llCollisionFilter(string name, key id, integer accept)
+Sets the collision filter, exclusively or inclusively. If accept == TRUE, only accept collisions with objects name and id (either is optional), otherwise with objects not name or id
+	</string>
+	<string name="LSLTipText_llTakeControls" translate="false">
+llTakeControls(integer controls, integer accept, integer pass_on)
+Allows for intercepting keyboard and mouse clicks from the agent the script has permissions for
+	</string>
+	<string name="LSLTipText_llReleaseControls" translate="false">
+llReleaseControls()
+Stops taking inputs that were taken with llTakeControls
+	</string>
+	<string name="LSLTipText_llAttachToAvatar" translate="false">
+llAttachToAvatar(integer attach_point)
+Attaches the object to the avatar who has granted permission to the script
+	</string>
+	<string name="LSLTipText_llDetachFromAvatar" translate="false">
+llDetachFromAvatar()
+Detaches object from avatar
+	</string>
+	<string name="LSLTipText_llTakeCamera" translate="false">
+llTakeCamera(key avatar)
+Moves avatar&apos;s viewpoint to task
+	</string>
+	<string name="LSLTipText_llReleaseCamera" translate="false">
+llReleaseCamera(key avatar)
+Returns camera to agent avatar
+	</string>
+	<string name="LSLTipText_llGetOwner" translate="false">
+key llGetOwner()
+Returns the object owner&apos;s UUID
+	</string>
+	<string name="LSLTipText_llInstantMessage" translate="false">
+llInstantMessage(key user, string message)
+Sends the specified string as an Instant Message to the user
+	</string>
+	<string name="LSLTipText_llEmail" translate="false">
+llEmail(string address, string subject, string message)
+Sends an email to address with the subject and message
+	</string>
+	<string name="LSLTipText_llGetNextEmail" translate="false">
+llGetNextEmail(string address, string subject)
+Gets the next waiting email that comes from address, with specified subject
+	</string>
+	<string name="LSLTipText_llGetKey" translate="false">
+key llGetKey()
+Returns the key of the prim the script is attached to
+	</string>
+	<string name="LSLTipText_llSetBuoyancy" translate="false">
+llSetBuoyancy(float buoyancy)
+Sets the buoyancy of the task or object (0 is disabled, &lt; 1.0 sinks, 1.0 floats, &gt; 1.0 rises)
+	</string>
+	<string name="LSLTipText_llSetHoverHeight" translate="false">
+llSetHoverHeight(float height, integer water, float tau)
+Critically damps to a height above the ground (or water) in tau seconds
+	</string>
+	<string name="LSLTipText_llStopHover" translate="false">
+llStopHover()
+Stops hovering to a height
+	</string>
+	<string name="LSLTipText_llMinEventDelay" translate="false">
+llMinEventDelay(float delay)
+Sets the minimum time between events being handled
+	</string>
+	<string name="LSLTipText_llSoundPreload" translate="false">
+llSoundPreload(string sound)
+Preloads a sound on viewers within range
+	</string>
+	<string name="LSLTipText_llRotLookAt" translate="false">
+llRotLookAt(rotation target, float strength, float damping)
+Causes object to point its forward axis towards target
+	</string>
+	<string name="LSLTipText_llStringLength" translate="false">
+integer llStringLength(string str)
+Returns the length of string
+	</string>
+	<string name="LSLTipText_llStartAnimation" translate="false">
+llStartAnimation(string anim)
+Starts animation anim for agent that granted PERMISSION_TRIGGER_ANIMATION if the permission has not been revoked
+	</string>
+	<string name="LSLTipText_llStopAnimation" translate="false">
+llStopAnimation(string anim)
+Stops animation anim for agent that granted permission
+	</string>
+	<string name="LSLTipText_llPointAt" translate="false">
+llPointAt(vector pos)
+Makes agent that owns object point at pos
+	</string>
+	<string name="LSLTipText_llStopPointAt" translate="false">
+llStopPointAt()
+Stops pointing agent that owns object
+	</string>
+	<string name="LSLTipText_llTargetOmega" translate="false">
+llTargetOmega(vector axis, float spinrate, float gain)
+Rotates the object around axis at spinrate with strength gain
+	</string>
+	<string name="LSLTipText_llGetStartParameter" translate="false">
+integer llGetStartParameter()
+Returns an integer that is the script start/rez parameter
+	</string>
+	<string name="LSLTipText_llGodLikeRezObject" translate="false">
+llGodLikeRezObject(key inventory, vector pos)
+Rezzes directly off of UUID if owner is in God Mode
+	</string>
+	<string name="LSLTipText_llRequestPermissions" translate="false">
+llRequestPermissions(key agent, integer perm)
+Asks the agent for permission to run certain classes of functions
+	</string>
+	<string name="LSLTipText_llGetPermissionsKey" translate="false">
+key llGetPermissionsKey()
+Returns the key of the avatar that last granted permissions to the script
+	</string>
+	<string name="LSLTipText_llGetPermissions" translate="false">
+integer llGetPermissions()
+Returns an integer bitfield with the permissions that have been granted
+	</string>
+	<string name="LSLTipText_llGetLinkNumber" translate="false">
+integer llGetLinkNumber()
+Returns the link number of the prim containing the script (0 means not linked, 1 the prim is the root, 2 the prim is the first child, etc)
+	</string>
+	<string name="LSLTipText_llSetLinkColor" translate="false">
+llSetLinkColor(integer linknumber, vector color, integer face)
+Sets face to color if a task exists in the link chain at linknumber
+	</string>
+	<string name="LSLTipText_llCreateLink" translate="false">
+llCreateLink(key target, integer parent)
+Attempts to link the script&apos;s object with the target (requires that PERMISSION_CHANGE_LINKS be granted). If parent == TRUE, then the script&apos;s object becomes the root
+	</string>
+	<string name="LSLTipText_llBreakLink" translate="false">
+llBreakLink(integer linknum)
+Delinks the prim with the given link number in a linked object set (requires that PERMISSION_CHANGE_LINKS be granted)
+	</string>
+	<string name="LSLTipText_llBreakAllLinks" translate="false">
+llBreakAllLinks()
+Delinks all prims in the link set (requires that PERMISSION_CHANGE_LINKS be granted)
+	</string>
+	<string name="LSLTipText_llGetLinkKey" translate="false">
+key llGetLinkKey(integer linknumber)
+Returns the key of the linked prim linknumber
+	</string>
+	<string name="LSLTipText_llGetLinkName" translate="false">
+string llGetLinkName(integer linknumber)
+Returns the name of linknumber in a link set
+	</string>
+	<string name="LSLTipText_llGetInventoryNumber" translate="false">
+integer llGetInventoryNumber(integer type)
+Returns the number of items of a given type (INVENTORY_* flag) in the prim&apos;s inventory
+	</string>
+	<string name="LSLTipText_llGetInventoryName" translate="false">
+string llGetInventoryName(integer type, integer number)
+Returns the name of the inventory item number of a given type
+	</string>
+	<string name="LSLTipText_llSetScriptState" translate="false">
+llSetScriptState(string name, integer run)
+Sets the running state of the specified script
+	</string>
+	<string name="LSLTipText_llGetEnergy" translate="false">
+float llGetEnergy()
+Returns how much energy is in the object as a percentage of maximum
+	</string>
+	<string name="LSLTipText_llGiveInventory" translate="false">
+llGiveInventory(key destination, string inventory)
+Gives inventory to destination
+	</string>
+	<string name="LSLTipText_llRemoveInventory" translate="false">
+llRemoveInventory(string item)
+Removes the named inventory item
+	</string>
+	<string name="LSLTipText_llSetText" translate="false">
+llSetText(string text, vector color, float alpha)
+Displays text that hovers over the prim with specific color and translucency specified with alpha
+	</string>
+	<string name="LSLTipText_llWater" translate="false">
+float llWater(vector offset)
+Returns the water height below the object position + offset
+	</string>
+	<string name="LSLTipText_llPassTouches" translate="false">
+llPassTouches(integer pass)
+If pass == TRUE, touches are passed from children on to parents
+	</string>
+	<string name="LSLTipText_llRequestAgentData" translate="false">
+key llRequestAgentData(key id, integer data)
+Requests data about agent id. When data is available the dataserver event will be raised.
+	</string>
+	<string name="LSLTipText_llRequestInventoryData" translate="false">
+key llRequestInventoryData(string name)
+Requests data from object&apos;s inventory object. When data is available the dataserver event will be raised.
+	</string>
+	<string name="LSLTipText_llSetDamage" translate="false">
+llSetDamage(float damage)
+Sets the amount of damage that will be done when this object hits an avatar.
+	</string>
+	<string name="LSLTipText_llTeleportAgentHome" translate="false">
+llTeleportAgentHome(key id)
+Teleports avatar on the owner&apos;s land to their home location without any warning
+	</string>
+	<string name="LSLTipText_llModifyLand" translate="false">
+llModifyLand(integer action, integer brush)
+Modifies land using the specified action on the specified brush size of land
+	</string>
+	<string name="LSLTipText_llCollisionSound" translate="false">
+llCollisionSound(string impact_sound, float impact_volume)
+Suppresses default collision sounds, replaces default impact sounds with impact_sound at the volume impact_volume
+	</string>
+	<string name="LSLTipText_llCollisionSprite" translate="false">
+llCollisionSprite(string impact_sprite)
+Suppresses default collision sprites, replaces default impact sprite with impact_sprite (use an empty string to just suppress)
+	</string>
+	<string name="LSLTipText_llGetAnimation" translate="false">
+string llGetAnimation(key id)
+Returns the name of the currently playing locomotion animation for avatar id
+	</string>
+	<string name="LSLTipText_llResetScript" translate="false">
+llResetScript()
+Resets the script
+	</string>
+	<string name="LSLTipText_llMessageLinked" translate="false">
+llMessageLinked(integer linknum, integer num, string str, key id)
+Allows scripts in the same object to communicate. Triggers a link_message event with the same parameters num, str, and id in all scripts in the prim(s) described by linknum.
+	</string>
+	<string name="LSLTipText_llPushObject" translate="false">
+llPushObject(key id, vector impulse, vector ang_impulse, integer local)
+Applies impulse and ang_impulse to object id
+	</string>
+	<string name="LSLTipText_llPassCollisions" translate="false">
+llPassCollisions(integer pass)
+If pass == TRUE, collisions are passed from children on to parents (default is FALSE)
+	</string>
+	<string name="LSLTipText_llGetScriptName" translate="false">
+string llGetScriptName()
+Returns the name of the script that this function is used in
+	</string>
+	<string name="LSLTipText_llGetNumberOfSides" translate="false">
+integer llGetNumberOfSides()
+Returns the number of faces (or sides) of the prim
+	</string>
+	<string name="LSLTipText_llAxisAngle2Rot" translate="false">
+rotation llAxisAngle2Rot(vector axis, float angle)
+Returns the rotation that is a generated angle about axis
+	</string>
+	<string name="LSLTipText_llRot2Axis" translate="false">
+vector llRot2Axis(rotation rot)
+Returns the rotation axis represented by rot
+	</string>
+	<string name="LSLTipText_llRot2Angle" translate="false">
+float llRot2Angle(rotation rot)
+Returns the rotation angle represented by rot
+	</string>
+	<string name="LSLTipText_llAcos" translate="false">
+float llAcos(float val)
+Returns the arccosine in radians of val
+	</string>
+	<string name="LSLTipText_llAsin" translate="false">
+float llAsin(float val)
+Returns the arcsine in radians of val
+	</string>
+	<string name="LSLTipText_llAngleBetween" translate="false">
+float llAngleBetween(rotation a, rotation b)
+Returns angle between rotation a and b
+	</string>
+	<string name="LSLTipText_llGetInventoryKey" translate="false">
+key llGetInventoryKey(string name)
+Returns the key that is the UUID of the inventory name
+	</string>
+	<string name="LSLTipText_llAllowInventoryDrop" translate="false">
+llAllowInventoryDrop(integer add)
+If add == TRUE, users without modify permissions can still drop inventory items onto a prim
+	</string>
+	<string name="LSLTipText_llGetSunDirection" translate="false">
+vector llGetSunDirection()
+Returns a normalized vector of the direction of the sun in the region
+	</string>
+	<string name="LSLTipText_llGetTextureOffset" translate="false">
+vector llGetTextureOffset(integer face)
+Returns the texture offset of face in the x and y components of a vector
+	</string>
+	<string name="LSLTipText_llGetTextureScale" translate="false">
+vector llGetTextureScale(integer side)
+Returns the texture scale of side in the x and y components of a vector
+	</string>
+	<string name="LSLTipText_llGetTextureRot" translate="false">
+float llGetTextureRot(integer side)
+Returns the texture rotation of side
+	</string>
+	<string name="LSLTipText_llSubStringIndex" translate="false">
+integer llSubStringIndex(string source, string pattern)
+Returns an integer that is the index in source where pattern first appears.
+(Returns -1 if not found)
+	</string>
+	<string name="LSLTipText_llGetOwnerKey" translate="false">
+key llGetOwnerKey(key id)
+Returns the owner of object id
+	</string>
+	<string name="LSLTipText_llGetCenterOfMass" translate="false">
+vector llGetCenterOfMass()
+Returns the prim&apos;s center of mass (unless called from the root prim, where it returns the object&apos;s center of mass)
+	</string>
+	<string name="LSLTipText_llListSort" translate="false">
+list llListSort(list src, integer stride, integer ascending)
+Sorts the list into blocks of stride, in ascending order if ascending == TRUE.
+The sort order is affected by type.
+	</string>
+	<string name="LSLTipText_llGetListLength" translate="false">
+integer llGetListLength(list src)
+Returns the number of elements in the list
+	</string>
+	<string name="LSLTipText_llList2Integer" translate="false">
+integer llList2Integer(list src, integer index)
+Copies the integer at index in the list
+	</string>
+	<string name="LSLTipText_llList2Float" translate="false">
+float llList2Float(list src, integer index)
+Copies the float at index in the list
+	</string>
+	<string name="LSLTipText_llList2String" translate="false">
+string llList2String(list src, integer index)
+Copies the string at index in the list
+	</string>
+	<string name="LSLTipText_llList2Key" translate="false">
+key llList2Key(list src, integer index)
+Copies the key at index in the list
+	</string>
+	<string name="LSLTipText_llList2Vector" translate="false">
+vector llList2Vector(list src, integer index)
+Copies the vector at index in the list
+	</string>
+	<string name="LSLTipText_llList2Rot" translate="false">
+rotation llList2Rot(list src, integer index)
+Copies the rotation at index in the list
+	</string>
+	<string name="LSLTipText_llList2List" translate="false">
+list llList2List(list src, integer start, integer end)
+Copies the slice of the list from start to end
+	</string>
+	<string name="LSLTipText_llDeleteSubList" translate="false">
+list llDeleteSubList(list src, integer start, integer end)
+Removes the slice from start to end and returns the remainder of the list
+	</string>
+	<string name="LSLTipText_llGetListEntryType" translate="false">
+integer llGetListEntryType(list src, integer index)
+Returns the type of the index entry in the list
+(TYPE_INTEGER, TYPE_FLOAT, TYPE_STRING, TYPE_KEY, TYPE_VECTOR, TYPE_ROTATION, or TYPE_INVALID if index is off list)
+	</string>
+	<string name="LSLTipText_llList2CSV" translate="false">
+string llList2CSV(list src)
+Creates a string of comma separated values from list
+	</string>
+	<string name="LSLTipText_llCSV2List" translate="false">
+list llCSV2List(string src)
+Creates a list from a string of comma separated values
+	</string>
+	<string name="LSLTipText_llListRandomize" translate="false">
+list llListRandomize(list src, integer stride)
+Returns a randomized list of blocks of size stride
+	</string>
+	<string name="LSLTipText_llList2ListStrided" translate="false">
+list llList2ListStrided(list src, integer start, integer end, integer stride)
+Copies the strided slice of the list from start to end
+	</string>
+	<string name="LSLTipText_llGetRegionCorner" translate="false">
+vector llGetRegionCorner()
+Returns a vector in meters that is the global location of the south-west corner of the region which the object is in
+	</string>
+	<string name="LSLTipText_llListInsertList" translate="false">
+list llListInsertList(list dest, list src, integer start)
+Returns a list that contains all the elements from dest but with the elements from src inserted at position start
+	</string>
+	<string name="LSLTipText_llListFindList" translate="false">
+integer llListFindList(list src, list test)
+Returns the index of the first instance of test in src.
+(Returns -1 if not found)
+	</string>
+	<string name="LSLTipText_llGetObjectName" translate="false">
+string llGetObjectName()
+Returns the name of the prim which the script is attached to
+	</string>
+	<string name="LSLTipText_llSetObjectName" translate="false">
+llSetObjectName(string name)
+Sets the prim&apos;s name to the name parameter
+	</string>
+	<string name="LSLTipText_llGetDate" translate="false">
+string llGetDate()
+Returns the current date in the UTC time zone in the format YYYY-MM-DD
+	</string>
+	<string name="LSLTipText_llEdgeOfWorld" translate="false">
+integer llEdgeOfWorld(vector pos, vector dir)
+Checks to see whether the border hit by dir from pos is the edge of the world (has no neighboring region)
+	</string>
+	<string name="LSLTipText_llGetAgentInfo" translate="false">
+integer llGetAgentInfo(key id)
+Returns an integer bitfield containing the agent information about id.
+Returns AGENT_FLYING, AGENT_ATTACHMENTS, AGENT_SCRIPTED, AGENT_SITTING, AGENT_ON_OBJECT, AGENT_MOUSELOOK, AGENT_AWAY, AGENT_BUSY, AGENT_TYPING, AGENT_CROUCHING, AGENT_ALWAYS_RUN, AGENT_WALKING and/or AGENT_IN_AIR.
+	</string>
+	<string name="LSLTipText_llAdjustSoundVolume" translate="false">
+llAdjustSoundVolume(float volume)
+Adjusts volume of attached sound (0.0 - 1.0)
+	</string>
+	<string name="LSLTipText_llSetSoundQueueing" translate="false">
+llSetSoundQueueing(integer queue)
+Sets whether attached sounds wait for the current sound to finish (If queue == TRUE then queuing is enabled, if FALSE queuing is disabled [default])
+	</string>
+	<string name="LSLTipText_llSetSoundRadius" translate="false">
+llSetSoundRadius(float radius)
+Establishes a hard cut-off radius for audibility of scripted sounds (both attached and triggered)
+	</string>
+	<string name="LSLTipText_llKey2Name" translate="false">
+string llKey2Name(key id)
+Returns the name of the prim or avatar specified by id.
+(The id must be a valid rezzed prim or avatar key in the current simulator, otherwise an empty string is returned.)
+	</string>
+	<string name="LSLTipText_llSetTextureAnim" translate="false">
+llSetTextureAnim(integer mode, integer face, integer sizex, integer sizey, float start, float length, float rate)
+Animates the texture on the specified face/faces
+	</string>
+	<string name="LSLTipText_llTriggerSoundLimited" translate="false">
+llTriggerSoundLimited(string sound, float volume, vector top_north_east, vector bottom_south_west)
+Plays sound at volume (0.0 - 1.0), centered at but not attached to object, limited to the box defined by vectors top_north_east and bottom_south_west
+	</string>
+	<string name="LSLTipText_llEjectFromLand" translate="false">
+llEjectFromLand(key avatar)
+Ejects avatar from the parcel
+	</string>
+	<string name="LSLTipText_llParseString2List" translate="false">
+list llParseString2List(string src, list separators, list spacers)
+Breaks src into a list, discarding separators, keeping spacers
+(separators and spacers must be lists of strings, maximum of 8 each)
+	</string>
+	<string name="LSLTipText_llOverMyLand" translate="false">
+integer llOverMyLand(key id)
+Returns TRUE if id is over land owned by the script owner, otherwise FALSE
+	</string>
+	<string name="LSLTipText_llGetLandOwnerAt" translate="false">
+key llGetLandOwnerAt(vector pos)
+Returns the key of the land owner, returns NULL_KEY if public
+	</string>
+	<string name="LSLTipText_llGetNotecardLine" translate="false">
+key llGetNotecardLine(string name, integer line)
+Returns line line of notecard name via the dataserver event
+	</string>
+	<string name="LSLTipText_llGetAgentSize" translate="false">
+vector llGetAgentSize(key id)
+If the avatar is in the same region, returns the size of the bounding box of the requested avatar by id, otherwise returns ZERO_VECTOR
+	</string>
+	<string name="LSLTipText_llSameGroup" translate="false">
+integer llSameGroup(key id)
+Returns TRUE if avatar id is in the same region and has the same active group, otherwise FALSE
+	</string>
+	<string name="LSLTipText_llUnSit" translate="false">
+key llUnSit(key id)
+If avatar identified by id is sitting on the object the script is attached to or is over land owned by the object&apos;s owner, the avatar is forced to stand up
+	</string>
+	<string name="LSLTipText_llGroundSlope" translate="false">
+vector llGroundSlope(vector offset)
+Returns the ground slope below the object position + offset
+	</string>
+	<string name="LSLTipText_llGroundNormal" translate="false">
+vector llGroundNormal(vector offset)
+Returns the ground normal below the object position + offset
+	</string>
+	<string name="LSLTipText_llGroundContour" translate="false">
+vector llGroundCountour(vector offset)
+Returns the ground contour direction below the object position + offset
+	</string>
+	<string name="LSLTipText_llGetAttached" translate="false">
+integer llGetAttached()
+Returns the object&apos;s attachment point, or 0 if not attached
+	</string>
+	<string name="LSLTipText_llGetFreeMemory" translate="false">
+integer llGetFreeMemory()
+Returns the number of free bytes of memory the script can use
+	</string>
+	<string name="LSLTipText_llGetRegionName" translate="false">
+string llGetRegionName()
+Returns the current region name
+	</string>
+	<string name="LSLTipText_llGetRegionTimeDilation" translate="false">
+float llGetRegionTimeDilation()
+Returns the current time dilation as a float between 0.0 (full dilation) and 1.0 (no dilation)
+	</string>
+	<string name="LSLTipText_llGetRegionFPS" translate="false">
+float llGetRegionFPS()
+Returns the mean region frames per second
+	</string>
+	<string name="LSLTipText_llParticleSystem" translate="false">
+llParticleSystem(list rules)
+Creates a particle system based on rules.  An empty list removes the particle system.
+List format is [ rule1, data1, rule2, data2 . . . rulen, datan ]
+	</string>
+	<string name="LSLTipText_llGroundRepel" translate="false">
+llGroundRepel(float height, integer water, float tau)
+Critically damps to height if within height*0.5 of level (either above ground level, or above the higher of land and water if water == TRUE)
+	</string>
+	<string name="LSLTipText_llGiveInventoryList" translate="false">
+llGiveInventoryList(key target, string folder, list inventory)
+Gives inventory items to target, creating a new folder to put them in
+	</string>
+	<string name="LSLTipText_llSetVehicleType" translate="false">
+llSetVehicleType(integer type)
+Sets the vehicle to one of the default types
+	</string>
+	<string name="LSLTipText_llSetVehicleFloatParam" translate="false">
+llSetVehicleFloatParam(integer param, float value)
+Sets the specified vehicle float parameter
+	</string>
+	<string name="LSLTipText_llSetVehicleVectorParam" translate="false">
+llSetVehicleVectorParam(integer param, vector vec)
+Sets the specified vehicle vector parameter
+	</string>
+	<string name="LSLTipText_llSetVehicleRotationParam" translate="false">
+llSetVehicleVectorParam(integer param, rotation rot)
+Sets the specified vehicle rotation parameter
+	</string>
+	<string name="LSLTipText_llSetVehicleFlags" translate="false">
+llSetVehicleFlags(integer flags)
+Sets the enabled bits in &apos;flags&apos;
+	</string>
+	<string name="LSLTipText_llRemoveVehicleFlags" translate="false">
+llRemoveVehicleFlags(integer flags)
+Removes the enabled bits in &apos;flags&apos;
+	</string>
+	<string name="LSLTipText_llSitTarget" translate="false">
+llSitTarget(vector offset, rotation rot)
+Sets the sit location for the prim.  If offset == &lt;0,0,0&gt; then the sit target is removed.
+	</string>
+	<string name="LSLTipText_llAvatarOnSitTarget" translate="false">
+key llAvatarOnSitTarget()
+If an avatar is seated on the sit target, returns the avatar&apos;s key, otherwise NULL_KEY
+	</string>
+	<string name="LSLTipText_llAddToLandPassList" translate="false">
+llAddToLandPassList(key avatar, float hours)
+Adds avatar to the land pass list for hours, or indefinitely if hours is 0
+	</string>
+	<string name="LSLTipText_llSetTouchText" translate="false">
+llSetTouchText(string text)
+Displays text rather than the default &apos;Touch&apos; in the pie menu
+	</string>
+	<string name="LSLTipText_llSetSitText" translate="false">
+llSetSitText(string text)
+Displays text rather than the default &apos;Sit Here&apos; in the pie menu
+	</string>
+	<string name="LSLTipText_llSetCameraEyeOffset" translate="false">
+llSetCameraEyeOffset(vector offset)
+Sets the camera eye offset for avatars that sit on the object
+	</string>
+	<string name="LSLTipText_llSetCameraAtOffset" translate="false">
+llSetCameraAtOffset(vector offset)
+Sets the point the camera is looking at to offset for avatars that sit on the object
+	</string>
+	<string name="LSLTipText_llDumpList2String" translate="false">
+string llDumpList2String(list src, string separator)
+Returns the list in a single string, using separator between the entries
+	</string>
+	<string name="LSLTipText_llScriptDanger" translate="false">
+integer llScriptDanger(vector pos)
+Returns TRUE if pos is over public land, sandbox land, land that doesn&apos;t allow everyone to edit and build, or land that doesn&apos;t allow outside scripts
+	</string>
+	<string name="LSLTipText_llDialog" translate="false">
+llDialog(key avatar, string message, list buttons, integer chat_channel
+Shows a dialog box on the avatar&apos;s screen with a message and up to 12 buttons.
+If a button is pressed, the avatar says the text of the button label on chat_channel.
+	</string>
+	<string name="LSLTipText_llVolumeDetect" translate="false">
+llVolumeDetect(integer detect)
+If detect = TRUE, object works much like Phantom, but triggers collision_start and collision_end events when other objects start and stop interpenetrating.
+Must be applied to the root prim.
+	</string>
+	<string name="LSLTipText_llResetOtherScript" translate="false">
+llResetOtherScript(string name)
+Resets script name
+	</string>
+	<string name="LSLTipText_llGetScriptState" translate="false">
+integer llGetScriptState(string name)
+Returns TRUE if the script name is running
+	</string>
+	<string name="LSLTipText_llRemoteLoadScript" translate="false">
+DEPRECATED!  Please use llRemoteLoadScriptPin instead.
+	</string>
+	<string name="LSLTipText_llSetRemoteScriptAccessPin" translate="false">
+llSetRemoteScriptAccessPin(integer pin)
+If pin is set to a non-zero number, allows a prim to have scripts remotely loaded via llRemoteLoadScriptPin when it passes in the correct pin. Otherwise, llRemoteLoadScriptPin is ignored.
+	</string>
+	<string name="LSLTipText_llRemoteLoadScriptPin" translate="false">
+llRemoteLoadScriptPin(key target, string name, integer pin, integer running, integer start_param)
+Copies script name onto target, if the owner of this scripted object can modify target and is in the same region, and the matching pin is used.
+If running == TRUE, starts the script with start_param
+	</string>
+	<string name="LSLTipText_llOpenRemoteDataChannel" translate="false">
+llOpenRemoteDataChannel()
+Creates a channel to listen for XML-RPC calls, and will trigger a remote_data event with channel id once it is available
+	</string>
+	<string name="LSLTipText_llSendRemoteData" translate="false">
+key llSendRemoteData(key channel, string dest, integer idata, string sdata)
+Sends an XML-RPC request to dest through channel with payload of channel (in a string), integer idata and string sdata.
+Returns a key that is the message_id for the resulting remote_data events.
+	</string>
+	<string name="LSLTipText_llRemoteDataReply" translate="false">
+llRemoteDataReply(key channel, key message_id, string sdata, integer idata)
+Sends an XML-RPC reply to message_id on channel with payload of string sdata and integer idata
+	</string>
+	<string name="LSLTipText_llCloseRemoteDataChannel" translate="false">
+llCloseRemoteDataChannel(key channel)
+Closes XML-RPC channel
+	</string>
+	<string name="LSLTipText_llMD5String" translate="false">
+string llMD5String(string src, integer nonce)
+Returns a string of 32 hex characters that is a RSA Data Security, Inc. MD5 Message-Digest Algorithm of src with nonce
+	</string>
+	<string name="LSLTipText_llSetPrimitiveParams" translate="false">
+llSetPrimitiveParams(list rules)
+Sets the prim&apos;s parameters according to rules
+	</string>
+	<string name="LSLTipText_llStringToBase64" translate="false">
+string llStringToBase64(string str)
+Converts a string to the Base64 representation of the string
+	</string>
+	<string name="LSLTipText_llBase64ToString" translate="false">
+string llBase64ToString(string str)
+Converts a Base64 string to a conventional string.
+If the conversion creates any unprintable characters, they are converted to spaces.
+	</string>
+	<string name="LSLTipText_llXorBase64Strings" translate="false">
+string llXorBase64Strings(string s1, string s2)
+DEPRECATED!  Please use llXorBase64StringsCorrect instead.
+Incorrectly performs an exclusive or on two Base64 strings and returns a Base64 string.  s2 repeats if it is shorter than s1.  Retained for backwards compatability.
+	</string>
+	<string name="LSLTipText_llRemoteDataSetRegion" translate="false">
+llRemoteDataSetRegion()
+DEPRECATED!  Please use llOpenRemoteDataChannel instead.
+If an object using remote data channels changes regions, you must call this function to reregister the remote data channels. This call is not needed if the prim does not change regions.
+	</string>
+	<string name="LSLTipText_llLog10" translate="false">
+float llLog10(float val)
+Returns the base 10 logarithm of val.  Returns zero if val &lt;= 0.
+	</string>
+	<string name="LSLTipText_llLog" translate="false">
+float llLog(float val)
+Returns the natural logarithm of val.  Returns zero if val &lt;= 0.
+	</string>
+	<string name="LSLTipText_llGetAnimationList" translate="false">
+list llGetAnimationList(key id)
+Returns a list of keys of playing animations for avatar described by id
+	</string>
+	<string name="LSLTipText_llSetParcelMusicURL" translate="false">
+llSetParcelMusicURL(string url)
+Sets the streaming audio URL for the parcel which the object is on
+	</string>
+	<string name="LSLTipText_llGetRootPosition" translate="false">
+vector llGetRootPosition()
+Returns the position (in region coordinates) of the root prim of the object which the script is attached to
+	</string>
+	<string name="LSLTipText_llGetRootRotation" translate="false">
+rotation llGetRootRotation()
+Returns the rotation (relative to the region) of the root prim of the object which the script is attached to
+	</string>
+	<string name="LSLTipText_llGetObjectDesc" translate="false">
+string llGetObjectDesc()
+Returns the description of the prim the script is attached to
+	</string>
+	<string name="LSLTipText_llSetObjectDesc" translate="false">
+llSetObjectDesc(string name)
+Sets the prim&apos;s description
+	</string>
+	<string name="LSLTipText_llGetCreator" translate="false">
+key llGetCreator()
+Returns a key for the creator of the prim
+	</string>
+	<string name="LSLTipText_llGetTimestamp" translate="false">
+string llGetTimestamp()
+Returns the timestamp in the UTC time zone in the format: YYYY-MM-DDThh:mm:ss.ff..fZ
+	</string>
+	<string name="LSLTipText_llSetLinkAlpha" translate="false">
+llSetLinkAlpha(integer linknumber, float alpha, integer face)
+If a prim exists in the link chain at linknumber, sets face to alpha
+	</string>
+	<string name="LSLTipText_llGetNumberOfPrims" translate="false">
+integer llGetNumberOfPrims()
+Returns the number of prims in a link set the script is attached to
+	</string>
+	<string name="LSLTipText_llGetNumberOfNotecardLines" translate="false">
+key llGetNumberOfNotecardLines(string name)
+Returns number of lines in notecard name via the dataserver event (cast return value to integer)
+	</string>
+	<string name="LSLTipText_llGetBoundingBox" translate="false">
+list llGetBoundingBox(key object)
+Returns the bounding box around the object (including any linked prims) relative to its root prim, in a list in the format [ (vector) min_corner, (vector) max_corner ]
+	</string>
+	<string name="LSLTipText_llGetGeometricCenter" translate="false">
+vector llGetGeometricCenter()
+Returns the geometric center of the linked set the script is attached to.
+	</string>
+	<string name="LSLTipText_llGetPrimitiveParams" translate="false">
+list llGetPrimitiveParams(list params)
+Returns the primitive parameters specified in the params list.
+	</string>
+	<string name="LSLTipText_llIntegerToBase64" translate="false">
+string llIntegerToBase64(integer number)
+Returns a string that is a Base64 big endian encode of number
+	</string>
+	<string name="LSLTipText_llBase64ToInteger" translate="false">
+integer llBase64ToInteger(string str)
+Returns an integer that is the str Base64 decoded as a big endian integer
+	</string>
+	<string name="LSLTipText_llGetGMTclock" translate="false">
+float llGetGMTclock()
+Returns the time in seconds since midnight GMT
+	</string>
+	<string name="LSLTipText_llGetSimulatorHostname" translate="false">
+string llGetSimulatorHostname()
+Returns the hostname of the machine which the script is running on (same as string in viewer Help dialog)
+	</string>
+	<string name="LSLTipText_llSetLocalRot" translate="false">
+llSetLocalRot(rotation rot)
+Sets the rotation of a child prim relative to the root prim
+	</string>
+	<string name="LSLTipText_llParseStringKeepNulls" translate="false">
+list llParseStringKeepNulls(string src, list separators, list spacers)
+Breaks src into a list, discarding separators, keeping spacers, keeping any null values generated.
+(separators and spacers must be lists of strings, maximum of 8 each)
+	</string>
+	<string name="LSLTipText_llRezAtRoot" translate="false">
+llRezAtRoot(string inventory, vector pos, vector vel, rotation rot, integer param)
+Instantiates owner&apos;s inventory object rotated to rot with its root at pos, moving at vel, using param as the start parameter
+	</string>
+	<string name="LSLTipText_llGetObjectPermMask" translate="false">
+integer llGetObjectPermMask(integer mask)
+Returns the requested permission mask for the root object the task is attached to
+	</string>
+	<string name="LSLTipText_llSetObjectPermMask" translate="false">
+llSetObjectPermMask(integer mask, integer value)
+Sets the given permission mask to the new value on the root object the task is attached to (requires God Mode)
+	</string>
+	<string name="LSLTipText_llGetInventoryPermMask" translate="false">
+integer llGetInventoryPermMask(string item, integer mask)
+Returns the requested permission mask for the inventory item
+	</string>
+	<string name="LSLTipText_llSetInventoryPermMask" translate="false">
+llSetInventoryPermMask(string item, integer mask, integer value)
+Sets the given permission mask to the new value on the inventory item (requires God Mode)
+	</string>
+	<string name="LSLTipText_llGetInventoryCreator" translate="false">
+key llGetInventoryCreator(string item)
+Returns a key for the creator of the inventory item
+	</string>
+	<string name="LSLTipText_llOwnerSay" translate="false">
+llOwnerSay(string msg)
+Says msg to owner only.  (Owner must be in the same region.)
+	</string>
+	<string name="LSLTipText_llRequestSimulatorData" translate="false">
+key llRequestSimulatorData(string simulator, integer data)
+Requests data about simulator.  When data is available the dataserver event will be raised.
+	</string>
+	<string name="LSLTipText_llForceMouselook" translate="false">
+llForceMouselook(integer mouselook)
+If mouselook is TRUE, any avatar that sits upon the prim will be forced into mouselook mode
+	</string>
+	<string name="LSLTipText_llGetObjectMass" translate="false">
+float llGetObjectMass(key id)
+Returns the mass of the avatar or object in the region
+	</string>
+	<string name="LSLTipText_llListReplaceList" translate="false">
+list llListReplaceList(list dest, list src, integer start, integer end)
+Returns a list that is dest with start through end removed and src inserted at start
+	</string>
+	<string name="LSLTipText_llLoadURL" translate="false">
+llLoadURL(key avatar, string message, string url)
+Shows a dialog to avatar offering to load the web page at url with a message.
+If user clicks yes, launches the page in their web browser.
+	</string>
+	<string name="LSLTipText_llParcelMediaCommandList" translate="false">
+llParcelMediaCommandList(list command)
+Sends a list of commands, some with arguments, to a parcel to control the playback of movies and other media
+	</string>
+	<string name="LSLTipText_llParcelMediaQuery" translate="false">
+list llParcelMediaQuery(list query)
+Returns a list containing results of the sent query
+	</string>
+	<string name="LSLTipText_llModPow" translate="false">
+integer llModPow(integer a, integer b, integer c)
+Returns a raised to the b power, mod c. ( (a**b)%c )
+b is capped at 0xFFFF (16 bits).
+	</string>
+	<string name="LSLTipText_llGetInventoryType" translate="false">
+integer llGetInventoryType(string name)
+Returns the type of the inventory item name
+	</string>
+	<string name="LSLTipText_llSetPayPrice" translate="false">
+llSetPayPrice(integer price, list quick_pay_buttons)
+Sets the default amount on the dialog that appears when someone chooses to pay this prim
+	</string>
+	<string name="LSLTipText_llGetCameraPos" translate="false">
+vector llGetCameraPos()
+Returns the current camera position for the agent the task has permissions for
+	</string>
+	<string name="LSLTipText_llGetCameraRot" translate="false">
+rotation llGetCameraRot()
+Returns the current camera orientation for the agent the task has permissions for
+	</string>
+	<string name="LSLTipText_llSetPrimURL" translate="false">
+llSetPrimURL(string url)
+Updates the URL for the web page shown on the sides of the object
+	</string>
+	<string name="LSLTipText_llRefreshPrimURL" translate="false">
+llRefreshPrimURL()
+Reloads the web page shown on the sides of the object
+	</string>
+	<string name="LSLTipText_llEscapeURL" translate="false">
+string llEscapeURL(string url)
+Returns an escaped/encoded version of url, replacing spaces with %20 etc.
+	</string>
+	<string name="LSLTipText_llUnescapeURL" translate="false">
+string llUnescapeURL(string url)
+Returns an unescaped/ unencoded version of url, replacing %20 with spaces etc.
+	</string>
+	<string name="LSLTipText_llMapDestination" translate="false">
+llMapDestination(string simname, vector pos, vector look_at)
+Opens the World Map centered on the region simname with pos highlighted. (NOTE: look_at currently does nothing.)
+Only works for scripts attached to avatar, or during touch events.
+	</string>
+	<string name="LSLTipText_llAddToLandBanList" translate="false">
+llAddToLandBanList(key avatar, float hours)
+Adds avatar to the land ban list for hours, or indefinitely if hours is 0
+	</string>
+	<string name="LSLTipText_llRemoveFromLandPassList" translate="false">
+llRemoveFromLandPassList(key avatar)
+Removes avatar from the land pass list
+	</string>
+	<string name="LSLTipText_llRemoveFromLandBanList" translate="false">
+llRemoveFromLandBanList(key avatar)
+Removes avatar from the land ban list
+	</string>
+	<string name="LSLTipText_llSetCameraParams" translate="false">
+llSetCameraParams(list rules)
+Sets multiple camera parameters at once.
+List format is [ rule1, data1, rule2, data2 . . . rulen, datan ]
+	</string>
+	<string name="LSLTipText_llClearCameraParams" translate="false">
+llClearCameraParams()
+Resets all camera parameters to default values and turns off scripted camera control
+	</string>
+	<string name="LSLTipText_llListStatistics" translate="false">
+float llListStatistics(integer operation, list src)
+Performs statistical aggregate functions on list src using LIST_STAT_* operations
+	</string>
+	<string name="LSLTipText_llGetUnixTime" translate="false">
+integer llGetUnixTime()
+Returns the number of seconds elapsed since 00:00 hours, Jan 1, 1970 UTC from the system clock
+	</string>
+	<string name="LSLTipText_llGetParcelFlags" translate="false">
+integer llGetParcelFlags(vector pos)
+Returns a mask of the parcel flags (PARCEL_FLAG_*) for the parcel that includes the point pos
+	</string>
+	<string name="LSLTipText_llGetRegionFlags" translate="false">
+integer llGetRegionFlags()
+Returns the region flags (REGION_FLAG_*) for the region the object is in
+	</string>
+	<string name="LSLTipText_llXorBase64StringsCorrect" translate="false">
+string llXorBase64StringsCorrect(string s1, string s2)
+Correctly performs an exclusive or on two Base64 strings and returns a Base64 string.
+s2 repeats if it is shorter than s1.
+	</string>
+	<string name="LSLTipText_llHTTPRequest" translate="false">
+llHTTPRequest(string url, list parameters, string body)
+Sends an HTTP request to the specified url with the body of the request and parameters
+	</string>
+	<string name="LSLTipText_llResetLandBanList" translate="false">
+llResetLandBanList()
+Removes all Residents from the land ban list
+	</string>
+	<string name="LSLTipText_llResetLandPassList" translate="false">
+llResetLandPassList()
+Removes all Residents from the land access/pass list
+	</string>
+	<string name="LSLTipText_llGetObjectPrimCount" translate="false">
+integer llGetObjectPrimCount(key object_id)
+Returns the total number of prims for an object in the region
+	</string>
+	<string name="LSLTipText_llGetParcelPrimOwners" translate="false">
+list llGetParcelPrimOwners(vector pos)
+Returns a list of all Residents who own objects on the parcel at pos and with individual prim counts.
+Requires owner-like permissions for the parcel.
+	</string>
+	<string name="LSLTipText_llGetParcelPrimCount" translate="false">
+integer llGetParcelPrimCount(vector pos, integer category, integer sim_wide)
+Returns the number of prims on the parcel at pos of the given category.
+Categories: PARCEL_COUNT_TOTAL, _OWNER, _GROUP, _OTHER, _SELECTED, _TEMP
+	</string>
+	<string name="LSLTipText_llGetParcelMaxPrims" translate="false">
+integer llGetParcelMaxPrims(vector pos, integer sim_wide)
+Returns the maximum number of prims allowed on the parcel at pos
+	</string>
+	<string name="LSLTipText_llGetParcelDetails" translate="false">
+list llGetParcelDetails(vector pos, list params)
+Returns the parcel details specified in params for the parcel at pos.
+Params is one or more of: PARCEL_DETAILS_NAME, _DESC, _OWNER, _GROUP, _AREA
+	</string>
+	<string name="LSLTipText_llSetLinkPrimitiveParams" translate="false">
+llSetLinkPrimitiveParams(integer linknumber, list rules)
+Sets primitive parameters for linknumber based on rules
+	</string>
+	<string name="LSLTipText_llSetLinkTexture" translate="false">
+llSetLinkTexture(integer linknumber, string texture, integer face)
+Sets the texture of face for a task that exists in the link chain at linknumber
+	</string>
+	<string name="LSLTipText_llStringTrim" translate="false">
+string llStringTrim(string src, integer trim_type)
+Trims the leading and/or trailing white spaces from a string.
+trim_type can be STRING_TRIM, STRING_TRIM_HEAD or STRING_TRIM_TAIL.
+	</string>
+	<string name="LSLTipText_llRegionSay" translate="false">
+llRegionSay(integer channel, string msg)
+Broadcasts msg on channel (not 0) that can be heard anywhere in the region by a script listening on channel
+	</string>
+	<string name="LSLTipText_llGetObjectDetails" translate="false">
+list llGetObjectDetails(key id, list params)
+Returns the object details specified in params for the object with key id.
+Params are OBJECT_NAME, _DESC, _POS, _ROT, _VELOCITY, _OWNER, _GROUP, _CREATOR
+	</string>
+	<string name="LSLTipText_llSetClickAction" translate="false">
+llSetClickAction(integer action)
+Sets the action performed when a prim is clicked upon
+	</string>
+	<string name="LSLTipText_llGetRegionAgentCount" translate="false">
+integer llGetRegionAgentCount()
+Returns the number of avatars in the region
+	</string>
+	<string name="LSLTipText_llTextBox" translate="false">
+llTextBox(key avatar, string message, integer chat_channel
+Shows a dialog box on the avatar&apos;s screen with the message.
+It contains a text box for input, and if entered that text is chatted on chat_channel.
+	</string>
+	<string name="LSLTipText_llGetAgentLanguage" translate="false">
+string llGetAgentLanguage(key avatar)
+Returns the language code of the preferred interface language of the avatar
+	</string>
+	<string name="LSLTipText_llDetectedTouchUV" translate="false">
+vector llDetectedTouchUV(integer index)
+Returns the u and v coordinates in the first two components of a vector, for the texture coordinates where the prim was touched in a triggered touch event
+	</string>
+	<string name="LSLTipText_llDetectedTouchFace" translate="false">
+integer llDetectedTouchFace(integer index)
+Returns the index of the face where the avatar clicked in a triggered touch event
+	</string>
+	<string name="LSLTipText_llDetectedTouchPos" translate="false">
+vector llDetectedTouchPos(integer index)
+Returns the position where the object was touched in a triggered touch event
+	</string>
+	<string name="LSLTipText_llDetectedTouchNormal" translate="false">
+vector llDetectedTouchNormal(integer index)
+Returns the surface normal for a triggered touch event
+	</string>
+	<string name="LSLTipText_llDetectedTouchBinormal" translate="false">
+vector llDetectedTouchBinormal(integer index)
+Returns the surface binormal for a triggered touch event
+	</string>
+	<string name="LSLTipText_llDetectedTouchST" translate="false">
+vector llDetectedTouchST(integer index)
+Returns the s and t coordinates in the first two components of a vector, for the surface coordinates where the prim was touched in a triggered touch event
+	</string>
+	<string name="LSLTipText_llSHA1String" translate="false">
+string llSHA1String(string src)
+Returns a string of 40 hex characters that is the SHA1 security Hash of src
+	</string>
+	<string name="LSLTipText_llGetFreeURLs" translate="false">
+integer llGetFreeURLs()
+Returns the number of available URLs for the current script
+	</string>
+	<string name="LSLTipText_llRequestURL" translate="false">
+key llRequestURL()
+Requests one HTTP:// url for use by this object.
+An http_request event is triggered with the results.
+	</string>
+	<string name="LSLTipText_llRequestSecureURL" translate="false">
+key llRequestSecureURL()
+Requests one HTTPS:// (SSL) url for use by this object.
+An http_request event is triggered with the results.
+	</string>
+	<string name="LSLTipText_llReleaseURL" translate="false">
+llReleaseURL(string url)
+Releases the specified URL, it will no longer be usable
+	</string>
+	<string name="LSLTipText_llHTTPResponse" translate="false">
+llHTTPResponse(key request_id, integer status, string body)
+Responds to request_id with status and body
+  </string>
+	<string name="LSLTipText_llGetHTTPHeader" translate="false">
+string llGetHTTPHeader(key request_id, string header)
+Returns the value for header for request_id
+	</string>
+  <string name="LSLTipText_llSetPrimMediaParams" translate="false">
+llSetPrimMediaParams(integer face, list params)
+Sets the media params for a particular face on an object. If media is not already on this object, add it.
+List is a set of name/value pairs in no particular order.  Params not specified are unchanged, or if new media is added then set to the default specified.
+The possible names are below, along with the types of values and what they mean.
+  </string>
+  <string name="LSLTipText_llGetPrimMediaParams" translate="false">
+list llGetPrimMediaParams(integer face, list params)
+Returns the media params for a particular face on an object, given the desired list of names, in the order requested.
+(Returns an empty list if no media exists on the face.)
+  </string>
+  <string name="LSLTipText_llClearPrimMedia" translate="false">
+llClearPrimMedia(integer face)
+Clears (deletes) the media and all params from the given face.
+  </string>
 
   <!-- Avatar busy/away mode -->
 	<string name="AvatarSetNotAway">Not Away</string>
-- 
GitLab


From 16f9ba66e46fd056e3b6ea68202e59a9b84cb27b Mon Sep 17 00:00:00 2001
From: Kent Quirk <q@lindenlab.com>
Date: Sun, 31 Jan 2010 00:11:25 -0500
Subject: [PATCH 378/521] Fix for XUI previewer on Windows - DEV-45525

---
 indra/newview/llfloateruipreview.cpp | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp
index 1e92ac0b8e5..645f8ef054e 100644
--- a/indra/newview/llfloateruipreview.cpp
+++ b/indra/newview/llfloateruipreview.cpp
@@ -1051,6 +1051,7 @@ void LLFloaterUIPreview::onClickEditFloater()
 	if(!LLFile::stat(exe_path.c_str(), &s)) // If the executable exists
 	{
 		// build paths and arguments
+		std::string quote = std::string("\"");
 		std::string args;
 		std::string custom_args = mEditorArgsTextBox->getText();
 		int position_of_file = custom_args.find(std::string("%FILE%"), 0);	// prepare to replace %FILE% with actual file path
@@ -1058,7 +1059,7 @@ void LLFloaterUIPreview::onClickEditFloater()
 		std::string second_part_of_args = "";
 		if(-1 == position_of_file)	// default: Executable.exe File.xml
 		{
-			args = std::string("\"") + path + std::string("\"");			// execute the command Program.exe "File.xml"
+			args = quote + path + quote;			// execute the command Program.exe "File.xml"
 		}
 		else						// use advanced command-line arguments, e.g. "Program.exe -safe File.xml" -windowed for "-safe %FILE% -windowed"
 		{
@@ -1085,7 +1086,7 @@ void LLFloaterUIPreview::onClickEditFloater()
 		memset(&pinfo, 0, sizeof(pinfo));
 
 		std::string exe_name = exe_path.substr(last_slash_position+1);
-		args = exe_name + std::string(" ") + args;				// and prepend the executable name, so we get 'Program.exe "Arg1"'
+		args = quote + exe_name + quote + std::string(" ") + args;				// and prepend the executable name, so we get 'Program.exe "Arg1"'
 
 		char *args2 = new char[args.size() + 1];	// Windows requires that the second parameter to CreateProcessA be a writable (non-const) string...
 		strcpy(args2, args.c_str());
-- 
GitLab


From b73debe609d09d0944dab44710ead46d1bc3c733 Mon Sep 17 00:00:00 2001
From: Chuck Linden <chuck@lindenlab.com>
Date: Sun, 31 Jan 2010 11:19:26 -0500
Subject: [PATCH 379/521] Changed title of inventory floater.
 http://jira.secondlife.com/browse/EXT-4600

---
 indra/newview/skins/default/xui/en/floater_inventory.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/indra/newview/skins/default/xui/en/floater_inventory.xml b/indra/newview/skins/default/xui/en/floater_inventory.xml
index ff9f0daee69..e187eabd3a2 100644
--- a/indra/newview/skins/default/xui/en/floater_inventory.xml
+++ b/indra/newview/skins/default/xui/en/floater_inventory.xml
@@ -12,11 +12,11 @@
  save_rect="true"
  save_visibility="true"
  single_instance="false"
- title="INVENTORY"
+ title="MY INVENTORY"
  width="467">
     <floater.string
      name="Title">
-        Inventory
+        MY INVENTORY
     </floater.string>
     <floater.string
      name="TitleFetching">
-- 
GitLab


From 2c2324565236323ba7d6bb70159460793971ce3d Mon Sep 17 00:00:00 2001
From: Chuck Linden <chuck@lindenlab.com>
Date: Sun, 31 Jan 2010 16:39:39 -0500
Subject: [PATCH 380/521] Made all avatar pictures square and cleaned up
 layouts on panels. http://jira.secondlife.com/browse/EXT-3998

---
 .../default/xui/en/panel_edit_profile.xml     | 132 +++++++++---------
 .../default/xui/en/panel_im_control_panel.xml |  16 +--
 .../newview/skins/default/xui/en/panel_me.xml |   6 +-
 .../skins/default/xui/en/panel_my_profile.xml |  40 +++---
 .../skins/default/xui/en/panel_people.xml     |   2 +-
 .../skins/default/xui/en/panel_profile.xml    |  44 +++---
 .../default/xui/en/panel_profile_view.xml     |   4 +-
 7 files changed, 122 insertions(+), 122 deletions(-)

diff --git a/indra/newview/skins/default/xui/en/panel_edit_profile.xml b/indra/newview/skins/default/xui/en/panel_edit_profile.xml
index 8268937e7f1..8f7750628ed 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_profile.xml
@@ -60,32 +60,33 @@
  <scroll_container
      color="DkGray2"
      follows="all"
-     height="505"
+     height="493"
      min_height="300"
      layout="topleft"
-     left="0"
+     left="9"
+     width="290"
      name="profile_scroll"
      reserve_scroll_corner="true"
      opaque="true"
-     top="0">
+     top="10">
       <panel
          name="scroll_content_panel"
          follows="left|top|right"
          layout="topleft"
          top="0"
-     height="505"
+     height="493"
      min_height="300"
          left="0"
-         width="313">
+         width="290">
     <panel
      name="data_panel"
      follows="left|top|right"
          layout="topleft"
          top="0"
-     height="505"
+     height="493"
      min_height="300"
          left="0"
-         width="313">
+         width="290">
      <panel
        name="lifes_images_panel"
          follows="left|top|right"
@@ -93,7 +94,7 @@
          layout="topleft"
          top="0"
          left="0"
-         width="285">
+         width="290">
 	 <panel
          follows="left|top"
          height="117"
@@ -101,25 +102,26 @@
          left="10"
          name="second_life_image_panel"
          top="0"
-         width="285">
+         width="280">
           <text
              follows="left|top|right"
 	     font.style="BOLD"
              height="15"
              layout="topleft"
              left="0"
+             top="10"
             name="second_life_photo_title_text"
              text_color="white"
              value="[SECOND_LIFE]:"
-             width="170" />
+             width="100" />
             <texture_picker
              allow_no_texture="true"
              default_image_name="None"
              enabled="false"
              follows="top|left"
-             height="117"
+             height="124"
              layout="topleft"
-             left="0"
+             left="1"
              name="2nd_life_pic"
              top_pad="0"
              width="102" />
@@ -140,13 +142,13 @@
        length="1"
        follows="left|top|right"
        font="SansSerifSmall"
-       height="100"
+       height="102"
        layout="topleft"
-       left="120"
-       top="18"
+       left="123"
+       top="25"
        max_length="512"
        name="sl_description_edit"
-       width="173"
+       width="157"
        word_wrap="true">
       </text_editor>
       <panel
@@ -163,18 +165,19 @@
              height="15"
              layout="topleft"
              left="0"
+             top_pad="10"
             name="real_world_photo_title_text"
              text_color="white"
              value="Real World:"
-             width="173" />
+             width="100" />
             <texture_picker
              allow_no_texture="true"
              default_image_name="None"
              enabled="false"
              follows="top|left"
-             height="117"
+             height="124"
              layout="topleft"
-             left="0"
+             left="1"
              name="real_world_pic"
              top_pad="0"
              width="102" />
@@ -194,13 +197,13 @@
        length="1"
        follows="left|top|right"
        font="SansSerifSmall"
-       height="100"
+       height="102"
        layout="topleft"
-       left="120"
+       left="123"
        max_length="512"
-       top="142"
+       top="157"
        name="fl_description_edit"
-       width="173"
+       width="157"
        word_wrap="true">
       </text_editor>
       <text
@@ -215,7 +218,7 @@
        name="title_homepage_text"
        text_color="white"
        top_pad="10"
-       width="285">
+       width="100">
           Homepage:
       </text>
       <line_editor
@@ -227,19 +230,19 @@
        top_pad="0"
        value="http://"
        name="homepage_edit"
-       width="285">
+       width="270">
       </line_editor>
       <check_box
        follows="left|top"
        font="SansSerifSmall"
        label="Show me in Search results"
        layout="topleft"
-       left="10"
+       left="8"
        name="show_in_search_checkbox"
        height="15"
        text_enabled_color="white"
-       top_pad="10"
-       width="240" />
+       top_pad="12"
+       width="100" />
       <text
          follows="left|top"
          font="SansSerifSmall"
@@ -249,9 +252,19 @@
          left="10"
          name="title_acc_status_text"
          text_color="white"
-         top_pad="5"
+         top_pad="10"
          value="My Account:"
-         width="285" />
+         width="100" />
+        <text
+         follows="left|top|right"
+         height="15"
+         layout="topleft"
+         left="10"
+         name="acc_status_text"
+         top_pad="5"
+         value="Resident. No payment info on file."
+         width="200"
+         word_wrap="true" />
         <text
          type="string"
          follows="left|top"
@@ -261,17 +274,7 @@
          left="10"
          name="my_account_link"
          value="[[URL] Go to My Dashboard]"
-         width="285" />
-        <text
-         follows="left|top|right"
-         height="20"
-         layout="topleft"
-         left="10"
-         name="acc_status_text"
-         top_pad="5"
-         value="Resident. No payment info on file."
-         width="285"
-         word_wrap="true" />
+         width="200" />
         <text
          follows="left|top"
          font="SansSerifSmall"
@@ -281,26 +284,16 @@
          left="10"
          name="title_partner_text"
          text_color="white"
-         top_pad="0"
+         top_pad="10"
          value="My Partner:"
          width="150" />
-        <text
-         follows="left|top"
-         height="15"
-         halign="right"
-         layout="topleft"
-         left_pad="10"
-         right="-10"
-         name="partner_edit_link"
-         value="[[URL] Edit]"
-         width="50" />
         <panel
          follows="left|top|right"
          height="15"
          layout="topleft"
          left="10"
          name="partner_data_panel"
-         width="285">
+         width="200">
             <name_box
              follows="left|top|right"
              height="30"
@@ -310,36 +303,43 @@
              link="true"
              name="partner_text"
              top="0"
-             width="285"
+             width="200"
              word_wrap="true" />
          </panel>
+        <text
+         follows="left|top"
+         height="15"
+         layout="topleft"
+         left="10"
+         name="partner_edit_link"
+         value="[[URL] Edit]"
+         width="50" />
     </panel>
     </panel>
     </scroll_container>
     <panel
        follows="bottom|left"
-       height="20"
-       left="10"
+       height="28"
+       left="0"
        name="profile_me_buttons_panel"
-       top_pad="5"
-       width="303">
+       top_pad="0"
+       width="313">
         <button
          follows="bottom|left"
-         height="19"
+         height="23"
          label="Save Changes"
          layout="topleft"
-         left="0"
+         left="9"
          name="save_btn"
-         top="0"
-         width="130" />
+         top="5"
+         width="152" />
         <button
          follows="bottom|left"
-         height="19"
+         height="23"
          label="Cancel"
          layout="topleft"
-         left_pad="10"
+         left_pad="4"
          name="cancel_btn"
-         right="-1"
-         width="130" />
+         width="152" />
     </panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
index 2e3d5a73202..9279d1e686a 100644
--- a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
+++ b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
@@ -30,7 +30,7 @@
      left="5"
      name="button_stack"
      orientation="vertical"
-     top_pad="0"
+     top_pad="-5"
      width="105">
         <layout_panel
          mouse_opaque="false"
@@ -55,7 +55,7 @@
          user_resize="false">
             <button
              follows="left|top|right"
-             height="20"
+             height="23"
              label="Profile"
              name="view_profile_btn"
              top="0"
@@ -72,7 +72,7 @@
          user_resize="false">
             <button
              follows="left|top|right"
-             height="20"
+             height="23"
              label="Add Friend"
              name="add_friend_btn"
              top="5"
@@ -90,7 +90,7 @@
         <button
              auto_resize="false"
              follows="left|top|right"
-             height="20"
+             height="23"
              label="Teleport"
              name="teleport_btn"
              width="100" />
@@ -107,7 +107,7 @@
            <button
              auto_resize="true"
              follows="left|top|right"
-             height="20"
+             height="23"
              label="Share"
              name="share_btn"
              width="100" />
@@ -123,7 +123,7 @@
          user_resize="false">
             <button
              follows="left|top|right"
-             height="20"
+             height="23"
              label="Call"
              name="call_btn"
              width="100" />
@@ -140,7 +140,7 @@
          visible="false">
             <button
              follows="left|top|right"
-             height="20"
+             height="23"
              label="Leave Call"
              name="end_call_btn"
              width="100" />
@@ -157,7 +157,7 @@
          visible="false">
             <button
              follows="left|top|right"
-             height="20"
+             height="23"
              label="Voice Controls"
              name="voice_ctrls_btn"
              width="100" />
diff --git a/indra/newview/skins/default/xui/en/panel_me.xml b/indra/newview/skins/default/xui/en/panel_me.xml
index 2814fb071b5..a30d80f1019 100644
--- a/indra/newview/skins/default/xui/en/panel_me.xml
+++ b/indra/newview/skins/default/xui/en/panel_me.xml
@@ -4,7 +4,7 @@
  border="false"
  follows="all"
  height="570"
- label="My Profile"
+ label="My Profile!!!!!"
  layout="topleft"
  left="0"
  name="panel_me"
@@ -29,13 +29,13 @@
      height="570"
      halign="center"
      layout="topleft"
-     left="10"
+     left="6"
      name="tabs"
      tab_min_width="95"
      tab_height="30"
      tab_position="top"
      top_pad="10"
-     width="313">
+     width="315">
       <panel
          class="panel_my_profile"
          filename="panel_my_profile.xml"
diff --git a/indra/newview/skins/default/xui/en/panel_my_profile.xml b/indra/newview/skins/default/xui/en/panel_my_profile.xml
index 34cde61252c..aea3d186063 100644
--- a/indra/newview/skins/default/xui/en/panel_my_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_my_profile.xml
@@ -7,7 +7,7 @@
  left="0"
  name="panel_profile"
  top="0"
- width="313">
+ width="315">
     <string
      name="CaptionTextAcctInfo">
         [ACCTTYPE]
@@ -41,8 +41,8 @@
      layout="topleft"
      left="0"
      top="0"
-     height="535"
-     width="313"
+     height="522"
+     width="315"
      border_size="0">
       <layout_panel
          name="profile_stack"
@@ -50,9 +50,9 @@
          layout="topleft"
          top="0"
          left="0"
-         height="505"
+         height="492"
          user_resize="false"
-         width="313">
+         width="315">
         <scroll_container
          color="DkGray2"
          follows="all"
@@ -60,13 +60,13 @@
          left="0"
          name="profile_scroll"
          opaque="true"
-         height="505"
-         width="313"
+         height="492"
+         width="315"
          top="0">
           <panel
                 layout="topleft"
           follows="left|top|right"
-                height="505"
+                height="492"
                name="scroll_content_panel"
                 top="0"
                 left="0"
@@ -84,9 +84,9 @@
                default_image_name="None"
                enabled="false"
                follows="top|left"
-               height="117"
+               height="124"
                layout="topleft"
-               left="0"
+               left="3"
                name="2nd_life_pic"
                top="10"
                width="102" />
@@ -96,7 +96,7 @@
               layout="topleft"
               name="2nd_life_edit_icon"
               label=""
-              left="0"
+              left="3"
               tool_tip="Click the Edit Profile button below to change image"
               top="10"
               width="102" />
@@ -129,7 +129,7 @@
              follows="left|top|right"
              height="117"
              layout="topleft"
-       top_pad="10"
+       top_pad="0"
              left="10"
              name="first_life_image_panel"
              width="297">
@@ -138,9 +138,9 @@
                default_image_name="None"
                enabled="false"
                follows="top|left"
-               height="117"
+               height="124"
                layout="topleft"
-               left="0"
+               left="3"
                name="real_world_pic"
                width="102" />
               <icon
@@ -149,7 +149,7 @@
               layout="topleft"
               name="real_world_edit_icon"
               label=""
-              left="0"
+              left="3"
               tool_tip="Click the Edit Profile button below to change image"
               top="4"
               width="102" />
@@ -373,20 +373,20 @@
         <button
          follows="bottom|right"
          height="23"
-         left="20"
-	 top="0"
+         left="4"
+	 top="5"
          label="Edit Profile"
          name="edit_profile_btn"
          tool_tip="Edit your personal information"
-         width="130" />
+         width="152" />
         <button
          follows="bottom|right"
          height="23"
          label="Edit Appearance"
-         left_pad="10"
+         left_pad="4"
          name="edit_appearance_btn"
          tool_tip="Create/edit your appearance: physical data, clothes and etc."
-         width="130" />
+         width="152" />
  </layout_panel>
 </layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml
index 69643c243be..ac98bb9bd91 100644
--- a/indra/newview/skins/default/xui/en/panel_people.xml
+++ b/indra/newview/skins/default/xui/en/panel_people.xml
@@ -47,7 +47,7 @@ background_visible="true"
      follows="all"
      height="500"
      layout="topleft"
-     left="10"
+     left="6"
      name="tabs"
      tab_min_width="70"
      tab_height="30"
diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml
index 7c584ba2c87..11cefa02245 100644
--- a/indra/newview/skins/default/xui/en/panel_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile.xml
@@ -7,7 +7,7 @@
  left="0"
  name="panel_profile"
  top="0"
- width="313">
+ width="317">
     <string
      name="CaptionTextAcctInfo">
         [ACCTTYPE]
@@ -41,8 +41,8 @@
      layout="topleft"
      left="0"
      top="0"
-     height="517"
-     width="313"
+     height="524"
+     width="317"
      border_size="0">
       <layout_panel
          name="profile_stack"
@@ -50,8 +50,8 @@
          layout="topleft"
          top="0"
          left="0"
-         height="505"
-         width="313">
+         height="524"
+         width="317">
         <scroll_container
          color="DkGray2"
          follows="all"
@@ -59,8 +59,8 @@
          left="0"
          name="profile_scroll"
          opaque="true"
-         height="505"
-         width="313"
+         height="524"
+         width="317"
          top="0">
           <panel
                 layout="topleft"
@@ -73,9 +73,9 @@
                 width="297">
             <panel
                   follows="left|top|right"
-                  height="117"
+                  height="124"
                   layout="topleft"
-                  left="10"
+                  left="13"
                   name="second_life_image_panel"
                   top="0"
                   width="297">
@@ -84,7 +84,7 @@
                default_image_name="None"
                enabled="false"
                follows="top|left"
-               height="117"
+               height="124"
                layout="topleft"
                left="0"
                name="2nd_life_pic"
@@ -103,7 +103,7 @@
                width="180" />
               <expandable_text
                follows="left|top|right"
-               height="95"
+               height="97"
                layout="topleft"
                left="107"
                textbox.max_length="512"
@@ -117,10 +117,10 @@
             </panel>
             <panel
              follows="left|top|right"
-             height="117"
+             height="124"
              layout="topleft"
-       top_pad="10"
-             left="10"
+       top_pad="0"
+             left="13"
              name="first_life_image_panel"
              width="297">
               <texture_picker
@@ -128,7 +128,7 @@
                default_image_name="None"
                enabled="false"
                follows="top|left"
-               height="117"
+               height="124"
                layout="topleft"
                left="0"
                name="real_world_pic"
@@ -146,7 +146,7 @@
                width="180" />
               <expandable_text
                follows="left|top|right"
-               height="95"
+               height="97"
                layout="topleft"
                left="107"
                textbox.max_length="512"
@@ -289,18 +289,18 @@
          layout="topleft"
          name="profile_buttons_panel"
          auto_resize="false"
-         width="313">
+         width="317">
         <button
          follows="bottom|left"
          height="23"
          label="Add Friend"
          layout="topleft"
-         left="0"
+         left="2"
          mouse_opaque="false"
          name="add_friend"
          tool_tip="Offer friendship to the Resident"
          top="5"
-         width="80" />
+         width="81" />
         <button
          follows="bottom|left"
          height="23"
@@ -320,7 +320,7 @@
          tool_tip="Call this Resident"
          left_pad="3"
          top="5"
-         width="45" />
+         width="46" />
         <button
          enabled="false"
          follows="bottom|left"
@@ -331,7 +331,7 @@
          tool_tip="Show the Resident on the map"
          top="5"
          left_pad="3"
-         width="45" />
+         width="46" />
         <button
          follows="bottom|left"
          height="23"
@@ -341,7 +341,7 @@
          tool_tip="Offer teleport"
          left_pad="3"
          top="5"
-         width="85" />
+         width="78" />
        <!-- <button
          follows="bottom|right"
          height="23"
diff --git a/indra/newview/skins/default/xui/en/panel_profile_view.xml b/indra/newview/skins/default/xui/en/panel_profile_view.xml
index d46e1f98525..f5396951ca0 100644
--- a/indra/newview/skins/default/xui/en/panel_profile_view.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile_view.xml
@@ -54,14 +54,14 @@
      height="535"
      halign="center"
      layout="topleft"
-     left="10"
+     left="5"
      min_width="333"
      name="tabs"
      tab_min_width="80"
      tab_height="30"
      tab_position="top"
      top_pad="5"
-     width="313">
+     width="317">
         <panel
          class="panel_profile"
          filename="panel_profile.xml"
-- 
GitLab


From f99a7b23ae0cee0d3e96b0b89d82e5c35bb07433 Mon Sep 17 00:00:00 2001
From: Chuck Linden <chuck@lindenlab.com>
Date: Sun, 31 Jan 2010 17:18:52 -0500
Subject: [PATCH 381/521] Cleaned up layout of inventory script editor.
 http://jira.secondlife.com/browse/EXT-999

---
 .../skins/default/xui/en/floater_script_preview.xml  | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

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 bb0702c3531..d0cd00d1471 100644
--- a/indra/newview/skins/default/xui/en/floater_script_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_script_preview.xml
@@ -3,26 +3,24 @@
  legacy_header_height="18"
  auto_tile="true"
  can_resize="true"
- height="550"
+ height="570"
  layout="topleft"
- left_delta="343"
  min_height="271"
  min_width="290"
  name="preview lsl text"
  help_topic="preview_lsl_text"
  save_rect="true"
  title="SCRIPT: ROTATION SCRIPT"
- top_delta="0"
- width="500">
+ width="508">
     <floater.string
      name="Title">
-        Script: [NAME]
+        SCRIPT: [NAME]
     </floater.string>
     <panel
      follows="left|top|right|bottom"
-     height="508"
+     height="522"
      layout="topleft"
-     left="0"
+     left="10"
      name="script panel"
      top="42"
      width="497" />
-- 
GitLab


From 50f29e0bc20afb5b44bf9824f5f7c3362d4e4f16 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Mon, 1 Feb 2010 12:01:44 +0000
Subject: [PATCH 382/521] Use floorf() instead of floor() when we know the
 param is an F32.  Which here, it always is.

---
 indra/llmath/llmath.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llmath/llmath.h b/indra/llmath/llmath.h
index 7a5d51ff768..209b506c304 100644
--- a/indra/llmath/llmath.h
+++ b/indra/llmath/llmath.h
@@ -203,7 +203,7 @@ inline S32 llfloor( F32 f )
 		}
 		return result;
 #else
-		return (S32)floor(f);
+		return (S32)floorf(f);
 #endif
 }
 
-- 
GitLab


From 9b410e89c3257d5ab648afef221864ac0a0b4fe7 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Mon, 1 Feb 2010 12:02:11 +0000
Subject: [PATCH 383/521] EXT-4388 Crash in octree line segment intersection
 code

Yet more sanitization - whew.
---
 indra/llrender/llimagegl.cpp | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp
index 8bcc4723ae2..36ac3ff119a 100644
--- a/indra/llrender/llimagegl.cpp
+++ b/indra/llrender/llimagegl.cpp
@@ -1693,11 +1693,11 @@ void LLImageGL::updatePickMask(S32 width, S32 height, const U8* data_in)
 		return;
 	}
 
-	U32 pick_width = width/2;
-	U32 pick_height = height/2;
+	U32 pick_width = width/2 + 1;
+	U32 pick_height = height/2 + 1;
 
-	U32 size = llmax(pick_width, (U32) 1) * llmax(pick_height, (U32) 1);
-	size = size/8 + 1;
+	U32 size = pick_width * pick_height;
+	size = (size + 7) / 8; // pixelcount-to-bits
 	mPickMask = new U8[size];
 	mPickMaskWidth = pick_width;
 	mPickMaskHeight = pick_height;
@@ -1745,8 +1745,8 @@ BOOL LLImageGL::getMask(const LLVector2 &tc)
 
 		llassert(mPickMaskWidth > 0 && mPickMaskHeight > 0);
 		
-		S32 x = (S32)(u * mPickMaskWidth);
-		S32 y = (S32)(v * mPickMaskHeight);
+		S32 x = llfloor(u * mPickMaskWidth);
+		S32 y = llfloor(v * mPickMaskHeight);
 
 		if (LL_UNLIKELY(x >= mPickMaskWidth))
 		{
-- 
GitLab


From 5eee046bb7d62e24df6c35018b3c5383f87ab587 Mon Sep 17 00:00:00 2001
From: Aimee Linden <aimee@lindenlab.com>
Date: Mon, 1 Feb 2010 12:03:15 +0000
Subject: [PATCH 384/521] Fix EXT-4770 : Voice muting not working properly due
 to a change in the Vivox API Added <Scope>Audio</Scope> to the
 SetParticipantMuteForMe message.

Reviewed by Lynx
---
 indra/newview/llvoiceclient.cpp | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index 560c2ab469e..c062dd1732d 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -3439,12 +3439,17 @@ void LLVoiceClient::sendPositionalUpdate(void)
 						<< "<Volume>" << volume << "</Volume>"
 						<< "</Request>\n\n\n";
 
-					// Send a "mute for me" command for the user
-					stream << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Session.SetParticipantMuteForMe.1\">"
-						<< "<SessionHandle>" << getAudioSessionHandle() << "</SessionHandle>"
-						<< "<ParticipantURI>" << p->mURI << "</ParticipantURI>"
-						<< "<Mute>" << (mute?"1":"0") << "</Mute>"
-						<< "</Request>\n\n\n";
+					if(!mAudioSession->mIsP2P)
+					{
+						// Send a "mute for me" command for the user
+						// Doesn't work in P2P sessions
+						stream << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Session.SetParticipantMuteForMe.1\">"
+							<< "<SessionHandle>" << getAudioSessionHandle() << "</SessionHandle>"
+							<< "<ParticipantURI>" << p->mURI << "</ParticipantURI>"
+							<< "<Mute>" << (mute?"1":"0") << "</Mute>"
+							<< "<Scope>Audio</Scope>"
+							<< "</Request>\n\n\n";
+					}
 				}
 				
 				p->mVolumeDirty = false;
-- 
GitLab


From c6fb7a0b1a65009b254af6ac02fc9284c498ed32 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Mon, 1 Feb 2010 12:13:12 +0000
Subject: [PATCH 385/521] Hint to compiler that logging is never *expected* on
 the fast-path.

---
 indra/llcommon/llerror.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llcommon/llerror.h b/indra/llcommon/llerror.h
index 5a4c6448594..09812de2b80 100644
--- a/indra/llcommon/llerror.h
+++ b/indra/llcommon/llerror.h
@@ -242,7 +242,7 @@ typedef LLError::NoClassInfo _LL_CLASS_TO_LOG;
 	do { \
 		static LLError::CallSite _site( \
 			level, __FILE__, __LINE__, typeid(_LL_CLASS_TO_LOG), __FUNCTION__, broadTag, narrowTag, once);\
-		if (_site.shouldLog()) \
+		if (LL_UNLIKELY(_site.shouldLog()))			\
 		{ \
 			std::ostringstream* _out = LLError::Log::out(); \
 			(*_out)
-- 
GitLab


From 484cbc524fd6c182fff6b0f5089b542be3a0174b Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Mon, 1 Feb 2010 15:37:24 +0200
Subject: [PATCH 386/521] fixed EXT-4775 Plain text mode broken in IM windows

--HG--
branch : product-engine
---
 indra/newview/llimfloater.cpp | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 9e52d4c6c24..1839a1ef864 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -585,6 +585,9 @@ void LLIMFloater::updateMessages()
 	{
 //		LLUIColor chat_color = LLUIColorTable::instance().getColor("IMChatColor");
 
+		LLSD chat_args;
+		chat_args["use_plain_text_chat_history"] = use_plain_text_chat_history;
+
 		std::ostringstream message;
 		std::list<LLSD>::const_reverse_iterator iter = messages.rbegin();
 		std::list<LLSD>::const_reverse_iterator iter_end = messages.rend();
@@ -614,7 +617,7 @@ void LLIMFloater::updateMessages()
 				chat.mText = message;
 			}
 			
-			mChatHistory->appendMessage(chat, use_plain_text_chat_history);
+			mChatHistory->appendMessage(chat, chat_args);
 			mLastMessageIndex = msg["index"].asInteger();
 		}
 	}
-- 
GitLab


From 379762d2c1dd4e0804dd6ab1b930f525e1a60189 Mon Sep 17 00:00:00 2001
From: Dmitry Zaporozhan <dzaporozhan@productengine.com>
Date: Mon, 1 Feb 2010 15:37:03 +0200
Subject: [PATCH 387/521] Fixed normal bug EXT-4772 - No new IM notification
 when in tabbed IM mode.

--HG--
branch : product-engine
---
 indra/newview/llimfloater.cpp | 14 ++++++++++++++
 indra/newview/llimfloater.h   |  1 +
 2 files changed, 15 insertions(+)

diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 1839a1ef864..4a18c8640f4 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -510,6 +510,20 @@ void LLIMFloater::setVisible(BOOL visible)
 	}
 }
 
+BOOL LLIMFloater::getVisible()
+{
+	if(isChatMultiTab())
+	{
+		LLIMFloaterContainer* im_container = LLIMFloaterContainer::getInstance();
+		// Tabbed IM window is "visible" when we minimize it.
+		return !im_container->isMinimized() && im_container->getVisible();
+	}
+	else
+	{
+		return LLTransientDockableFloater::getVisible();
+	}
+}
+
 //static
 bool LLIMFloater::toggle(const LLUUID& session_id)
 {
diff --git a/indra/newview/llimfloater.h b/indra/newview/llimfloater.h
index 9552b307379..2f034d02b88 100644
--- a/indra/newview/llimfloater.h
+++ b/indra/newview/llimfloater.h
@@ -58,6 +58,7 @@ class LLIMFloater : public LLTransientDockableFloater
 	// LLView overrides
 	/*virtual*/ BOOL postBuild();
 	/*virtual*/ void setVisible(BOOL visible);
+	/*virtual*/ BOOL getVisible();
 	// Check typing timeout timer.
 	/*virtual*/ void draw();
 
-- 
GitLab


From 17b7d606b12aac7b18fe9013e6d8de1c827ac690 Mon Sep 17 00:00:00 2001
From: Lynx Linden <lynx@lindenlab.com>
Date: Mon, 1 Feb 2010 14:21:05 +0000
Subject: [PATCH 388/521] EXT-4774: Fixed the position of the snapshot preview
 thumbnail.

The preview thumbnail no longer floats above the snapshot window when
the window is in its small (less) mode.
---
 indra/newview/llfloatersnapshot.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp
index a0031f01932..b6e9fb3f6ce 100644
--- a/indra/newview/llfloatersnapshot.cpp
+++ b/indra/newview/llfloatersnapshot.cpp
@@ -2084,6 +2084,10 @@ void LLFloaterSnapshot::draw()
 
 			S32 offset_x = (getRect().getWidth() - previewp->getThumbnailWidth()) / 2 ;
 			S32 offset_y = thumbnail_rect.mBottom + (thumbnail_rect.getHeight() - previewp->getThumbnailHeight()) / 2 ;
+			if (! gSavedSettings.getBOOL("AdvanceSnapshot"))
+			{
+				offset_y += getUIWinHeightShort() - getUIWinHeightLong();
+			}
 
 			glMatrixMode(GL_MODELVIEW);
 			gl_draw_scaled_image(offset_x, offset_y, 
-- 
GitLab


From 3650ef0d9ff937aeb1081817158021adb3f081d2 Mon Sep 17 00:00:00 2001
From: Ychebotarev ProductEngine <ychebotarev@productengine.com>
Date: Mon, 1 Feb 2010 16:30:48 +0200
Subject: [PATCH 389/521] fix for normal EXT-4512 [BSI] Can't minimize Mini-Map
 actually this has nothing with original bug description so...fix map and text
 pos on map resize

--HG--
branch : product-engine
---
 indra/newview/llfloatermap.cpp                |  4 +-
 .../skins/default/xui/en/floater_map.xml      | 40 +++++++++----------
 2 files changed, 22 insertions(+), 22 deletions(-)

diff --git a/indra/newview/llfloatermap.cpp b/indra/newview/llfloatermap.cpp
index 568f4b254e1..051ab585e22 100644
--- a/indra/newview/llfloatermap.cpp
+++ b/indra/newview/llfloatermap.cpp
@@ -142,8 +142,8 @@ void LLFloaterMap::setDirectionPos( LLTextBox* text_box, F32 rotation )
 	// Rotation is in radians.
 	// Rotation of 0 means x = 1, y = 0 on the unit circle.
 
-	F32 map_half_height = (F32)(getRect().getHeight() / 2);
-	F32 map_half_width = (F32)(getRect().getWidth() / 2);
+	F32 map_half_height = (F32)(getRect().getHeight() / 2) - getHeaderHeight()/2;
+	F32 map_half_width = (F32)(getRect().getWidth() / 2) ;
 	F32 text_half_height = (F32)(text_box->getRect().getHeight() / 2);
 	F32 text_half_width = (F32)(text_box->getRect().getWidth() / 2);
 	F32 radius = llmin( map_half_height - text_half_height, map_half_width - text_half_width );
diff --git a/indra/newview/skins/default/xui/en/floater_map.xml b/indra/newview/skins/default/xui/en/floater_map.xml
index 3ddb7bc3494..1903e7c714f 100644
--- a/indra/newview/skins/default/xui/en/floater_map.xml
+++ b/indra/newview/skins/default/xui/en/floater_map.xml
@@ -6,7 +6,7 @@
  center_horiz="true"
  center_vert="true"
  follows="top|right"
- height="225"
+ height="218"
  layout="topleft"
  min_height="60"
  min_width="174"
@@ -55,116 +55,116 @@
     </floater.string>
     <net_map
      bg_color="NetMapBackgroundColor"
-     bottom="225"
      follows="top|left|bottom|right"
      layout="topleft"
      left="0"
      mouse_opaque="false"
      name="Net Map"
-     right="198"
-     top="2" />
+     width="200"
+     height="200"
+     top="18"/>
     <text
      type="string"
      length="1"
-     bottom="225"
+     bottom="218"
      label="N"
      layout="topleft"
      left="0"
      name="floater_map_north"
      right="10"
      text_color="1 1 1 0.7"
-     top="215">
+     top="209">
         N
     </text>
     <text
      type="string"
      length="1"
-     bottom="225"
+     bottom="218"
      label="E"
      layout="topleft"
      left="0"
      name="floater_map_east"
      right="10"
      text_color="1 1 1 0.7"
-     top="215">
+     top="209">
         E
     </text>
     <text
      type="string"
      length="1"
-     bottom="225"
+     bottom="205"
      label="W"
      layout="topleft"
      left="0"
      name="floater_map_west"
      right="11"
      text_color="1 1 1 0.7"
-     top="215">
+     top="195">
         W
     </text>
     <text
      type="string"
      length="1"
-     bottom="225"
+     bottom="218"
      label="S"
      layout="topleft"
      left="0"
      name="floater_map_south"
      right="10"
      text_color="1 1 1 0.7"
-     top="215">
+     top="209">
         S
     </text>
     <text
      type="string"
      length="1"
-     bottom="225"
+     bottom="218"
      label="SE"
      layout="topleft"
      left="0"
      name="floater_map_southeast"
      right="20"
      text_color="1 1 1 0.7"
-     top="215">
+     top="209">
         SE
     </text>
     <text
      type="string"
      length="1"
-     bottom="225"
+     bottom="218"
      label="NE"
      layout="topleft"
      left="0"
      name="floater_map_northeast"
      right="20"
      text_color="1 1 1 0.7"
-     top="215">
+     top="209">
         NE
     </text>
     <text
      type="string"
      length="1"
-     bottom="225"
+     bottom="218"
      label="SW"
      layout="topleft"
      left="0"
      name="floater_map_southwest"
      right="20"
      text_color="1 1 1 0.7"
-     top="215">
+     top="209">
         SW
     </text>
     <text
      type="string"
      length="1"
-     bottom="225"
+     bottom="218"
      label="NW"
      layout="topleft"
      left="0"
      name="floater_map_northwest"
      right="20"
      text_color="1 1 1 0.7"
-     top="215">
+     top="209">
         NW
     </text>
 </floater>
-- 
GitLab


From e43d0f18150ee2fae4c1533e643ace5d7e5813f2 Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Mon, 1 Feb 2010 16:51:34 +0200
Subject: [PATCH 390/521] fixed EXT-4779 Notifications about objects are saved
 into ".txt" or "{nobody}.txt" instead of "chat.txt" file

--HG--
branch : product-engine
---
 indra/newview/llnotificationhandlerutil.cpp | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp
index 16218f6d535..e2a748a1c50 100644
--- a/indra/newview/llnotificationhandlerutil.cpp
+++ b/indra/newview/llnotificationhandlerutil.cpp
@@ -153,7 +153,7 @@ void LLHandlerUtil::logToIMP2P(const LLNotificationPtr& notification, bool to_fi
 {
 	const std::string name = LLHandlerUtil::getSubstitutionName(notification);
 
-	const std::string session_name = notification->getPayload().has(
+	std::string session_name = notification->getPayload().has(
 			"SESSION_NAME") ? notification->getPayload()["SESSION_NAME"].asString() : name;
 
 	// don't create IM p2p session with objects, it's necessary condition to log
@@ -162,6 +162,12 @@ void LLHandlerUtil::logToIMP2P(const LLNotificationPtr& notification, bool to_fi
 	{
 		LLUUID from_id = notification->getPayload()["from_id"];
 
+		//*HACK for ServerObjectMessage the sesson name is really weird, see EXT-4779
+		if (SERVER_OBJECT_MESSAGE == notification->getName())
+		{
+			session_name = "chat";
+		}
+
 		if(to_file_only)
 		{
 			logToIM(IM_NOTHING_SPECIAL, session_name, name, notification->getMessage(),
-- 
GitLab


From fca58b27507c653127bc7063dc5955070e4e297d Mon Sep 17 00:00:00 2001
From: Lynx Linden <lynx@lindenlab.com>
Date: Mon, 1 Feb 2010 14:52:06 +0000
Subject: [PATCH 391/521] EXT-4681: Fixed alignment of checkboxes on Beacons
 floater.

---
 indra/newview/skins/default/xui/en/floater_beacons.xml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/indra/newview/skins/default/xui/en/floater_beacons.xml b/indra/newview/skins/default/xui/en/floater_beacons.xml
index c8f6c613af2..4fc2b698d80 100644
--- a/indra/newview/skins/default/xui/en/floater_beacons.xml
+++ b/indra/newview/skins/default/xui/en/floater_beacons.xml
@@ -25,7 +25,7 @@
          name="label_show"
          text_color="White"
          type="string">
-            Show:
+            Show :
          </text>
         <check_box
          control_name="renderbeacons"
@@ -117,6 +117,7 @@
         <check_box
          control_name="soundsbeacon"
          height="16"
+         left="0"
          label="Sound sources"
          layout="topleft"
          name="sounds" >
-- 
GitLab


From a359db96eb0273bf67fe48bae2665ea65831cf67 Mon Sep 17 00:00:00 2001
From: Sergei Litovchuk <slitovchuk@productengine.com>
Date: Mon, 1 Feb 2010 16:57:34 +0200
Subject: [PATCH 392/521] (EXT-2987) Parcel Characteristics icons aren't
 refreshed after changing restrictions - LLViewerParcelMgr refactoring.
 Changed parcel characteristics accessors to get selected parcel properties.

--HG--
branch : product-engine
---
 indra/newview/lllocationinputctrl.cpp | 14 ++++------
 indra/newview/llpanelplaceprofile.cpp | 40 ++++++++++++---------------
 indra/newview/llviewerparcelmgr.cpp   | 36 ++++++++++++++----------
 indra/newview/llviewerparcelmgr.h     | 12 ++++----
 4 files changed, 52 insertions(+), 50 deletions(-)

diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp
index 0e93e28f2da..4f40a0a5322 100644
--- a/indra/newview/lllocationinputctrl.cpp
+++ b/indra/newview/lllocationinputctrl.cpp
@@ -722,14 +722,12 @@ void LLLocationInputCtrl::refreshParcelIcons()
 		}
 
 		bool allow_buy      = vpm->canAgentBuyParcel(current_parcel, false);
-		bool allow_voice	= agent_region->isVoiceEnabled() && current_parcel->getParcelFlagAllowVoice();
-		bool allow_fly		= !agent_region->getBlockFly() && current_parcel->getAllowFly();
-		bool allow_push		= !agent_region->getRestrictPushObject() && !current_parcel->getRestrictPushObject();
-		bool allow_build	= current_parcel->getAllowModify(); // true when anyone is allowed to build. See EXT-4610.
-		bool allow_scripts	= !(agent_region->getRegionFlags() & REGION_FLAGS_SKIP_SCRIPTS) &&
-							  !(agent_region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS) &&
-							  current_parcel->getAllowOtherScripts();
-		bool allow_damage	= agent_region->getAllowDamage() || current_parcel->getAllowDamage();
+		bool allow_voice	= vpm->allowAgentVoice(agent_region, current_parcel);
+		bool allow_fly		= vpm->allowAgentFly(agent_region, current_parcel);
+		bool allow_push		= vpm->allowAgentPush(agent_region, current_parcel);
+		bool allow_build	= vpm->allowAgentBuild(current_parcel); // true when anyone is allowed to build. See EXT-4610.
+		bool allow_scripts	= vpm->allowAgentScripts(agent_region, current_parcel);
+		bool allow_damage	= vpm->allowAgentDamage(agent_region, current_parcel);
 
 		// Most icons are "block this ability"
 		mForSaleBtn->setVisible(allow_buy);
diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp
index 9b31ef23a26..9e5f9da0ea6 100644
--- a/indra/newview/llpanelplaceprofile.cpp
+++ b/indra/newview/llpanelplaceprofile.cpp
@@ -340,8 +340,10 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
 	std::string on = getString("on");
 	std::string off = getString("off");
 
+	LLViewerParcelMgr* vpm = LLViewerParcelMgr::getInstance();
+
 	// Processing parcel characteristics
-	if (region->isVoiceEnabled() && parcel->getParcelFlagAllowVoice())
+	if (vpm->allowAgentVoice(region, parcel))
 	{
 		mVoiceIcon->setValue(icon_voice);
 		mVoiceText->setText(on);
@@ -352,7 +354,7 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
 		mVoiceText->setText(off);
 	}
 
-	if (!region->getBlockFly() && parcel->getAllowFly())
+	if (vpm->allowAgentFly(region, parcel))
 	{
 		mFlyIcon->setValue(icon_fly);
 		mFlyText->setText(on);
@@ -363,18 +365,18 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
 		mFlyText->setText(off);
 	}
 
-	if (region->getRestrictPushObject() || parcel->getRestrictPushObject())
+	if (vpm->allowAgentPush(region, parcel))
 	{
-		mPushIcon->setValue(icon_push_no);
-		mPushText->setText(off);
+		mPushIcon->setValue(icon_push);
+		mPushText->setText(on);
 	}
 	else
 	{
-		mPushIcon->setValue(icon_push);
-		mPushText->setText(on);
+		mPushIcon->setValue(icon_push_no);
+		mPushText->setText(off);
 	}
 
-	if (parcel->getAllowModify())
+	if (vpm->allowAgentBuild(parcel))
 	{
 		mBuildIcon->setValue(icon_build);
 		mBuildText->setText(on);
@@ -385,20 +387,18 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
 		mBuildText->setText(off);
 	}
 
-	if ((region->getRegionFlags() & REGION_FLAGS_SKIP_SCRIPTS) ||
-	    (region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS) ||
-	    !parcel->getAllowOtherScripts())
+	if (vpm->allowAgentScripts(region, parcel))
 	{
-		mScriptsIcon->setValue(icon_scripts_no);
-		mScriptsText->setText(off);
+		mScriptsIcon->setValue(icon_scripts);
+		mScriptsText->setText(on);
 	}
 	else
 	{
-		mScriptsIcon->setValue(icon_scripts);
-		mScriptsText->setText(on);
+		mScriptsIcon->setValue(icon_scripts_no);
+		mScriptsText->setText(off);
 	}
 
-	if (region->getAllowDamage() || parcel->getAllowDamage())
+	if (vpm->allowAgentDamage(region, parcel))
 	{
 		mDamageIcon->setValue(icon_damage);
 		mDamageText->setText(on);
@@ -461,12 +461,8 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
 	S32 claim_price;
 	S32 rent_price;
 	F32 dwell;
-	BOOL for_sale = parcel->getForSale();
-	LLViewerParcelMgr::getInstance()->getDisplayInfo(&area,
-													 &claim_price,
-													 &rent_price,
-													 &for_sale,
-													 &dwell);
+	BOOL for_sale;
+	vpm->getDisplayInfo(&area, &claim_price, &rent_price, &for_sale, &dwell);
 	if (for_sale)
 	{
 		const LLUUID& auth_buyer_id = parcel->getAuthorizedBuyerID();
diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp
index b85b42c7100..7ec650629dd 100644
--- a/indra/newview/llviewerparcelmgr.cpp
+++ b/indra/newview/llviewerparcelmgr.cpp
@@ -666,31 +666,38 @@ bool LLViewerParcelMgr::allowAgentBuild() const
 	}
 }
 
+// Return whether anyone can build on the given parcel
+bool LLViewerParcelMgr::allowAgentBuild(const LLParcel* parcel) const
+{
+	return parcel->getAllowModify();
+}
+
 bool LLViewerParcelMgr::allowAgentVoice() const
 {
-	LLViewerRegion* region = gAgent.getRegion();
+	return allowAgentVoice(gAgent.getRegion(), mAgentParcel);
+}
+
+bool LLViewerParcelMgr::allowAgentVoice(const LLViewerRegion* region, const LLParcel* parcel) const
+{
 	return region && region->isVoiceEnabled()
-		&& mAgentParcel	&& mAgentParcel->getParcelFlagAllowVoice();
+		&& parcel	&& parcel->getParcelFlagAllowVoice();
 }
 
-bool LLViewerParcelMgr::allowAgentFly() const
+bool LLViewerParcelMgr::allowAgentFly(const LLViewerRegion* region, const LLParcel* parcel) const
 {
-	LLViewerRegion* region = gAgent.getRegion();
 	return region && !region->getBlockFly()
-		&& mAgentParcel && mAgentParcel->getAllowFly();
+		&& parcel && parcel->getAllowFly();
 }
 
 // Can the agent be pushed around by LLPushObject?
-bool LLViewerParcelMgr::allowAgentPush() const
+bool LLViewerParcelMgr::allowAgentPush(const LLViewerRegion* region, const LLParcel* parcel) const
 {
-	LLViewerRegion* region = gAgent.getRegion();
 	return region && !region->getRestrictPushObject()
-		&& mAgentParcel && !mAgentParcel->getRestrictPushObject();
+		&& parcel && !parcel->getRestrictPushObject();
 }
 
-bool LLViewerParcelMgr::allowAgentScripts() const
+bool LLViewerParcelMgr::allowAgentScripts(const LLViewerRegion* region, const LLParcel* parcel) const
 {
-	LLViewerRegion* region = gAgent.getRegion();
 	// *NOTE: This code does not take into account group-owned parcels
 	// and the flag to allow group-owned scripted objects to run.
 	// This mirrors the traditional menu bar parcel icon code, but is not
@@ -698,15 +705,14 @@ bool LLViewerParcelMgr::allowAgentScripts() const
 	return region
 		&& !(region->getRegionFlags() & REGION_FLAGS_SKIP_SCRIPTS)
 		&& !(region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS)
-		&& mAgentParcel
-		&& mAgentParcel->getAllowOtherScripts();
+		&& parcel
+		&& parcel->getAllowOtherScripts();
 }
 
-bool LLViewerParcelMgr::allowAgentDamage() const
+bool LLViewerParcelMgr::allowAgentDamage(const LLViewerRegion* region, const LLParcel* parcel) const
 {
-	LLViewerRegion* region = gAgent.getRegion();
 	return (region && region->getAllowDamage())
-		|| (mAgentParcel && mAgentParcel->getAllowDamage());
+		|| (parcel && parcel->getAllowDamage());
 }
 
 BOOL LLViewerParcelMgr::isOwnedAt(const LLVector3d& pos_global) const
diff --git a/indra/newview/llviewerparcelmgr.h b/indra/newview/llviewerparcelmgr.h
index 379190789b0..98be8e2c7b4 100644
--- a/indra/newview/llviewerparcelmgr.h
+++ b/indra/newview/llviewerparcelmgr.h
@@ -171,26 +171,28 @@ class LLViewerParcelMgr : public LLSingleton<LLViewerParcelMgr>
 	// Can this agent build on the parcel he is on?
 	// Used for parcel property icons in nav bar.
 	bool	allowAgentBuild() const;
+	bool	allowAgentBuild(const LLParcel* parcel) const;
 	
 	// Can this agent speak on the parcel he is on?
 	// Used for parcel property icons in nav bar.
 	bool	allowAgentVoice() const;
-	
+	bool	allowAgentVoice(const LLViewerRegion* region, const LLParcel* parcel) const;
+
 	// Can this agent start flying on this parcel?
 	// Used for parcel property icons in nav bar.
-	bool	allowAgentFly() const;
+	bool	allowAgentFly(const LLViewerRegion* region, const LLParcel* parcel) const;
 	
 	// Can this agent be pushed by llPushObject() on this parcel?
 	// Used for parcel property icons in nav bar.
-	bool	allowAgentPush() const;
+	bool	allowAgentPush(const LLViewerRegion* region, const LLParcel* parcel) const;
 	
 	// Can scripts written by non-parcel-owners run on the agent's current
 	// parcel?  Used for parcel property icons in nav bar.
-	bool	allowAgentScripts() const;
+	bool	allowAgentScripts(const LLViewerRegion* region, const LLParcel* parcel) const;
 	
 	// Can the agent be damaged here?
 	// Used for parcel property icons in nav bar.
-	bool	allowAgentDamage() const;
+	bool	allowAgentDamage(const LLViewerRegion* region, const LLParcel* parcel) const;
 
 	F32		getHoverParcelWidth() const		
 				{ return F32(mHoverEastNorth.mdV[VX] - mHoverWestSouth.mdV[VX]); }
-- 
GitLab


From 20cef655398fa82b99a1b95fec204d209a5672ca Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Tue, 2 Feb 2010 15:27:19 +0200
Subject: [PATCH 393/521] changed password's circles to bullets - EXT-4499
 Replace "*" glyph in password fields with a proper circle [PATCH INCLUDED]

--HG--
branch : product-engine
---
 indra/llui/lllineeditor.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp
index cb5aea272df..eb2b4f7705d 100644
--- a/indra/llui/lllineeditor.cpp
+++ b/indra/llui/lllineeditor.cpp
@@ -70,7 +70,7 @@ const S32   SCROLL_INCREMENT_DEL = 4;	// make space for baskspacing
 const F32   AUTO_SCROLL_TIME = 0.05f;
 const F32	TRIPLE_CLICK_INTERVAL = 0.3f;	// delay between double and triple click. *TODO: make this equal to the double click interval?
 
-const std::string PASSWORD_ASTERISK( "\xE2\x97\x8F" ); // U+25CF BLACK CIRCLE
+const std::string PASSWORD_ASTERISK( "\xE2\x80\xA2" ); // U+2022 BULLET
 
 static LLDefaultChildRegistry::Register<LLLineEditor> r1("line_editor");
 
-- 
GitLab


From 10ed52f69ab55924519d52fe8ccd48a5b3d7c4ba Mon Sep 17 00:00:00 2001
From: Vadim Savchuk <vsavchuk@productengine.com>
Date: Tue, 2 Feb 2010 17:08:29 +0200
Subject: [PATCH 394/521] Fixed linux build.

--HG--
branch : product-engine
---
 indra/newview/llnearbychat.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index 49ab61556f8..6de47fccd2c 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -300,8 +300,8 @@ void LLNearbyChat::loadHistory()
 		LLChat chat;
 		chat.mFromName = from;
 		chat.mFromID = from_id;
-		chat.mText = msg[IM_TEXT];
-		chat.mTimeStr = msg[IM_TIME];
+		chat.mText = msg[IM_TEXT].asString();
+		chat.mTimeStr = msg[IM_TIME].asString();
 		addMessage(chat);
 
 		it++;
-- 
GitLab


From c679ae3546ffe0f29330a2969460fa37807e23b6 Mon Sep 17 00:00:00 2001
From: Dmitry Zaporozhan <dzaporozhan@productengine.com>
Date: Mon, 1 Feb 2010 17:11:31 +0200
Subject: [PATCH 395/521] Fixed normal bug EXT-4768 - 'Play' btn does nothing
 to gesture in Inventory side panel.

--HG--
branch : product-engine
---
 indra/newview/llinventorybridge.cpp    | 29 ++++++++++++++++++++++++++
 indra/newview/llinventorybridge.h      |  2 ++
 indra/newview/llsidepanelinventory.cpp | 16 +++++++++++++-
 3 files changed, 46 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index e8a4899a0b5..f68550d8fda 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -3773,6 +3773,21 @@ void LLGestureBridge::performAction(LLFolderView* folder, LLInventoryModel* mode
 		gInventory.updateItem(item);
 		gInventory.notifyObservers();
 	}
+	else if("play" == action)
+	{
+		if(!LLGestureManager::instance().isGestureActive(mUUID))
+		{
+			// we need to inform server about gesture activating to be consistent with LLPreviewGesture and  LLGestureComboList.
+			BOOL inform_server = TRUE;
+			BOOL deactivate_similar = FALSE;
+			LLGestureManager::instance().setGestureLoadedCallback(mUUID, boost::bind(&LLGestureBridge::playGesture, mUUID));
+			LLGestureManager::instance().activateGestureWithAsset(mUUID, gInventory.getItem(mUUID)->getAssetUUID(), inform_server, deactivate_similar);
+		}
+		else
+		{
+			playGesture(mUUID);
+		}
+	}
 	else LLItemBridge::performAction(folder, model, action);
 }
 
@@ -3858,6 +3873,20 @@ void LLGestureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 	hide_context_entries(menu, items, disabled_items);
 }
 
+// static
+void LLGestureBridge::playGesture(const LLUUID& item_id)
+{
+	if (LLGestureManager::instance().isGesturePlaying(item_id))
+	{
+		LLGestureManager::instance().stopGesture(item_id);
+	}
+	else
+	{
+		LLGestureManager::instance().playGesture(item_id);
+	}
+}
+
+
 // +=================================================+
 // |        LLAnimationBridge                        |
 // +=================================================+
diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h
index eeb8246b112..6fffec96a07 100644
--- a/indra/newview/llinventorybridge.h
+++ b/indra/newview/llinventorybridge.h
@@ -491,6 +491,8 @@ class LLGestureBridge : public LLItemBridge
 
 	virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
 
+	static void playGesture(const LLUUID& item_id);
+
 protected:
 	LLGestureBridge(LLInventoryPanel* inventory, const LLUUID& uuid)
 	:	LLItemBridge(inventory, uuid) {}
diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp
index 5383158cd3f..7b923f4b0b3 100644
--- a/indra/newview/llsidepanelinventory.cpp
+++ b/indra/newview/llsidepanelinventory.cpp
@@ -164,7 +164,21 @@ void LLSidepanelInventory::onWearButtonClicked()
 
 void LLSidepanelInventory::onPlayButtonClicked()
 {
-	performActionOnSelection("activate");
+	const LLInventoryItem *item = getSelectedItem();
+	if (!item)
+	{
+		return;
+	}
+
+	switch(item->getInventoryType())
+	{
+	case LLInventoryType::IT_GESTURE:
+		performActionOnSelection("play");
+		break;
+	default:
+		performActionOnSelection("activate");
+		break;
+	}
 }
 
 void LLSidepanelInventory::onTeleportButtonClicked()
-- 
GitLab


From c8621274eef9b4ef2a9a4bf2a3f338ddc141935a Mon Sep 17 00:00:00 2001
From: Ychebotarev ProductEngine <ychebotarev@productengine.com>
Date: Mon, 1 Feb 2010 17:23:25 +0200
Subject: [PATCH 396/521] fix low EXT-3807 ABOUT LAND/OBJECTS: (i) icon is
 badly positioned

--HG--
branch : product-engine
---
 indra/newview/llnamelistctrl.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llnamelistctrl.cpp b/indra/newview/llnamelistctrl.cpp
index 9f04558d508..8c875c9b63d 100644
--- a/indra/newview/llnamelistctrl.cpp
+++ b/indra/newview/llnamelistctrl.cpp
@@ -162,7 +162,7 @@ BOOL LLNameListCtrl::handleToolTip(S32 x, S32 y, MASK mask)
 				localRectToScreen(cell_rect, &sticky_rect);
 
 				// Spawn at right side of cell
-				LLCoordGL pos( sticky_rect.mRight - 16, sticky_rect.mTop );
+				LLCoordGL pos( sticky_rect.mRight - 16, sticky_rect.mTop + (sticky_rect.getHeight()-16)/2 );
 				LLPointer<LLUIImage> icon = LLUI::getUIImage("Info_Small");
 
 				// Should we show a group or an avatar inspector?
-- 
GitLab


From d5e97617c661dd3518ef1caa6903867ad044df8d Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Mon, 1 Feb 2010 17:48:25 +0200
Subject: [PATCH 397/521] Fixed major bug EXT-4782 (Viewer crashes if end
 ad-hoc voice chat by 'End session' context commant of chiclet) - reason:
 indicator on ad-hoc chiclets is changed its speaker UUID that leads to
 registering the same instances several times in the SpeakingIndicatorManager.
     This leads to crash after instance is destroyed because the only one
 (specified by UUID in unregisterSpeakingIndicator()) is removed from the map.
     So, using stored deleted pointer leads to crash. See EXT-4782. - fix:
 prevent regestering the same instance of indicator by removing existing one
 in LLOutputMonitorCtrl::setSpeakerId.     Also added check in
 SpeakingIndicatorManager to prevent such situation in the future with an
 appropriate warning & assert.

--HG--
branch : product-engine
---
 indra/newview/lloutputmonitorctrl.cpp        |  5 +++
 indra/newview/llspeakingindicatormanager.cpp | 41 +++++++++++++++++++-
 2 files changed, 45 insertions(+), 1 deletion(-)

diff --git a/indra/newview/lloutputmonitorctrl.cpp b/indra/newview/lloutputmonitorctrl.cpp
index f816dc589d6..388fdeea7af 100644
--- a/indra/newview/lloutputmonitorctrl.cpp
+++ b/indra/newview/lloutputmonitorctrl.cpp
@@ -251,6 +251,11 @@ void LLOutputMonitorCtrl::setSpeakerId(const LLUUID& speaker_id)
 {
 	if (speaker_id.isNull() || speaker_id == mSpeakerId) return;
 
+	if (mSpeakerId.notNull())
+	{
+		// Unregister previous registration to avoid crash. EXT-4782.
+		LLSpeakingIndicatorManager::unregisterSpeakingIndicator(mSpeakerId, this);
+	}
 	mSpeakerId = speaker_id;
 	LLSpeakingIndicatorManager::registerSpeakingIndicator(mSpeakerId, this);
 
diff --git a/indra/newview/llspeakingindicatormanager.cpp b/indra/newview/llspeakingindicatormanager.cpp
index 5e1d408e8da..d33c050ee45 100644
--- a/indra/newview/llspeakingindicatormanager.cpp
+++ b/indra/newview/llspeakingindicatormanager.cpp
@@ -113,6 +113,13 @@ class SpeakingIndicatorManager : public LLSingleton<SpeakingIndicatorManager>, L
 	 */
 	void switchSpeakerIndicators(const speaker_ids_t& speakers_uuids, BOOL switch_on);
 
+	/**
+	 * Ensures that passed instance of Speaking Indicator does not exist among registered ones.
+	 * If yes, it will be removed.
+	 */
+	void ensureInstanceDoesNotExist(LLSpeakingIndicator* const speaking_indicator);
+
+
 	/**
 	 * Multimap with all registered speaking indicators
 	 */
@@ -135,7 +142,11 @@ void SpeakingIndicatorManager::registerSpeakingIndicator(const LLUUID& speaker_i
 {
 	// do not exclude agent's indicators. They should be processed in the same way as others. See EXT-3889.
 
-	LL_DEBUGS("SpeakingIndicator") << "Registering indicator: " << speaker_id << LL_ENDL;
+	LL_DEBUGS("SpeakingIndicator") << "Registering indicator: " << speaker_id << "|"<< speaking_indicator << LL_ENDL;
+
+
+	ensureInstanceDoesNotExist(speaking_indicator);
+
 	speaking_indicator_value_t value_type(speaker_id, speaking_indicator);
 	mSpeakingIndicators.insert(value_type);
 
@@ -148,12 +159,14 @@ void SpeakingIndicatorManager::registerSpeakingIndicator(const LLUUID& speaker_i
 
 void SpeakingIndicatorManager::unregisterSpeakingIndicator(const LLUUID& speaker_id, const LLSpeakingIndicator* const speaking_indicator)
 {
+	LL_DEBUGS("SpeakingIndicator") << "Unregistering indicator: " << speaker_id << "|"<< speaking_indicator << LL_ENDL;
 	speaking_indicators_mmap_t::iterator it;
 	it = mSpeakingIndicators.find(speaker_id);
 	for (;it != mSpeakingIndicators.end(); ++it)
 	{
 		if (it->second == speaking_indicator)
 		{
+			LL_DEBUGS("SpeakingIndicator") << "Unregistered." << LL_ENDL;
 			mSpeakingIndicators.erase(it);
 			break;
 		}
@@ -231,6 +244,32 @@ void SpeakingIndicatorManager::switchSpeakerIndicators(const speaker_ids_t& spea
 	}
 }
 
+void SpeakingIndicatorManager::ensureInstanceDoesNotExist(LLSpeakingIndicator* const speaking_indicator)
+{
+	LL_DEBUGS("SpeakingIndicator") << "Searching for an registered indicator instance: " << speaking_indicator << LL_ENDL;
+	speaking_indicators_mmap_t::iterator it = mSpeakingIndicators.begin();
+	for (;it != mSpeakingIndicators.end(); ++it)
+	{
+		if (it->second == speaking_indicator)
+		{
+			LL_DEBUGS("SpeakingIndicator") << "Found" << LL_ENDL;
+			break;
+		}
+	}
+
+	// It is possible with LLOutputMonitorCtrl the same instance of indicator is registered several
+	// times with different UUIDs. This leads to crash after instance is destroyed because the
+	// only one (specified by UUID in unregisterSpeakingIndicator()) is removed from the map.
+	// So, using stored deleted pointer leads to crash. See EXT-4782.
+	if (it != mSpeakingIndicators.end())
+	{
+		llwarns << "The same instance of indicator has already been registered, removing it: " << it->first << "|"<< speaking_indicator << llendl;
+		llassert(it == mSpeakingIndicators.end());
+		mSpeakingIndicators.erase(it);
+	}
+}
+
+
 /************************************************************************/
 /*         LLSpeakingIndicatorManager namespace implementation          */
 /************************************************************************/
-- 
GitLab


From 5dfdb0d5a41143512180390193ce79644bcb9469 Mon Sep 17 00:00:00 2001
From: gabriel lee <gabriel@lindenlab.com>
Date: Mon, 1 Feb 2010 16:12:47 +0000
Subject: [PATCH 398/521] DEV-44904 and other fixes

---
 indra/newview/llfloaterland.cpp               |  13 +-
 indra/newview/llfloaterscriptlimits.cpp       | 889 ++++++++++--------
 indra/newview/llfloaterscriptlimits.h         |  76 +-
 indra/newview/llpreviewscript.cpp             |   2 +-
 .../default/xui/en/floater_script_limits.xml  |   1 +
 .../xui/en/panel_script_limits_my_avatar.xml  |  45 +-
 .../en/panel_script_limits_region_memory.xml  |  38 +-
 .../newview/skins/default/xui/en/strings.xml  |   1 +
 8 files changed, 585 insertions(+), 480 deletions(-)

diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 0ad283d7c69..1b1e4ef612b 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -427,8 +427,17 @@ BOOL LLPanelLandGeneral::postBuild()
 	mBtnBuyLand = getChild<LLButton>("Buy Land...");
 	mBtnBuyLand->setClickedCallback(onClickBuyLand, (void*)&BUY_PERSONAL_LAND);
 	
-	mBtnScriptLimits = getChild<LLButton>("Scripts...");
-	mBtnScriptLimits->setClickedCallback(onClickScriptLimits, this);
+	std::string url = gAgent.getRegion()->getCapability("LandResources");
+	if (!url.empty())
+	{
+		mBtnScriptLimits = getChild<LLButton>("Scripts...");
+		mBtnScriptLimits->setClickedCallback(onClickScriptLimits, this);
+	}
+	else
+	{
+		mBtnScriptLimits = getChild<LLButton>("Scripts...");
+		mBtnScriptLimits->setVisible(false);
+	}
 	
 	mBtnBuyGroupLand = getChild<LLButton>("Buy For Group...");
 	mBtnBuyGroupLand->setClickedCallback(onClickBuyLand, (void*)&BUY_GROUP_LAND);
diff --git a/indra/newview/llfloaterscriptlimits.cpp b/indra/newview/llfloaterscriptlimits.cpp
index 8875e35821b..55ff106be8f 100644
--- a/indra/newview/llfloaterscriptlimits.cpp
+++ b/indra/newview/llfloaterscriptlimits.cpp
@@ -59,10 +59,30 @@
 /// LLFloaterScriptLimits
 ///----------------------------------------------------------------------------
 
-// due to server side bugs the full summary display is not possible
-// until they are fixed this define creates a simple version of the
-// summary which only shows available & correct information
-#define USE_SIMPLE_SUMMARY
+// debug switches, won't work in release
+#ifndef LL_RELEASE_FOR_DOWNLOAD
+
+// dump responder replies to llinfos for debugging
+//#define DUMP_REPLIES_TO_LLINFOS
+
+#ifdef DUMP_REPLIES_TO_LLINFOS
+#include "llsdserialize.h"
+#include "llwindow.h"
+#endif
+
+// use fake LLSD responses to check the viewer side is working correctly
+// I'm syncing this with the server side efforts so hopfully we can keep
+// the to-ing and fro-ing between the two teams to a minimum
+#define USE_FAKE_RESPONSES
+
+#ifdef USE_FAKE_RESPONSES
+const S32 FAKE_NUMBER_OF_URLS = 329;
+const S32 FAKE_AVAILABLE_URLS = 731;
+const S32 FAKE_AMOUNT_OF_MEMORY = 66741;
+const S32 FAKE_AVAILABLE_MEMORY = 895577;
+#endif
+
+#endif
 
 const S32 SIZE_OF_ONE_KB = 1024;
 
@@ -89,30 +109,32 @@ BOOL LLFloaterScriptLimits::postBuild()
 	mTab = getChild<LLTabContainer>("scriptlimits_panels");
 
 	// contruct the panels
-	LLPanelScriptLimitsRegionMemory* panel_memory;
-	panel_memory = new LLPanelScriptLimitsRegionMemory;
-	mInfoPanels.push_back(panel_memory);
+	std::string land_url = gAgent.getRegion()->getCapability("LandResources");
+	if (!land_url.empty())
+	{
+		LLPanelScriptLimitsRegionMemory* panel_memory;
+		panel_memory = new LLPanelScriptLimitsRegionMemory;
+		mInfoPanels.push_back(panel_memory);
+		LLUICtrlFactory::getInstance()->buildPanel(panel_memory, "panel_script_limits_region_memory.xml");
+		mTab->addTabPanel(panel_memory);
+	}
+	
+	std::string attachment_url = gAgent.getRegion()->getCapability("AttachmentResources");
+	if (!attachment_url.empty())
+	{
+		LLPanelScriptLimitsAttachment* panel_attachments = new LLPanelScriptLimitsAttachment;
+		mInfoPanels.push_back(panel_attachments);
+		LLUICtrlFactory::getInstance()->buildPanel(panel_attachments, "panel_script_limits_my_avatar.xml");
+		mTab->addTabPanel(panel_attachments);
+	}
 	
-	LLUICtrlFactory::getInstance()->buildPanel(panel_memory, "panel_script_limits_region_memory.xml");
-	mTab->addTabPanel(panel_memory);
-
-	LLPanelScriptLimitsRegionURLs* panel_urls = new LLPanelScriptLimitsRegionURLs;
-	mInfoPanels.push_back(panel_urls);
-	LLUICtrlFactory::getInstance()->buildPanel(panel_urls, "panel_script_limits_region_urls.xml");
-	mTab->addTabPanel(panel_urls);
-
-	LLPanelScriptLimitsAttachment* panel_attachments = new LLPanelScriptLimitsAttachment;
-	mInfoPanels.push_back(panel_attachments);
-	LLUICtrlFactory::getInstance()->buildPanel(panel_attachments, "panel_script_limits_my_avatar.xml");
-	mTab->addTabPanel(panel_attachments);
-
 	if(selectParcelPanel)
 	{
 		mTab->selectTab(0);
 	}
 	else
 	{
-		mTab->selectTab(2);
+		mTab->selectTab(1);
 	}
 
 	return TRUE;
@@ -160,6 +182,20 @@ void LLPanelScriptLimitsInfo::updateChild(LLUICtrl* child_ctr)
 
 void fetchScriptLimitsRegionInfoResponder::result(const LLSD& content)
 {
+	//we don't need to test with a fake respose here (shouldn't anyway)
+
+#ifdef DUMP_REPLIES_TO_LLINFOS
+
+	LLSDNotationStreamer notation_streamer(content);
+	std::ostringstream nice_llsd;
+	nice_llsd << notation_streamer;
+
+	OSMessageBox(nice_llsd.str(), "main cap response:", 0);
+
+	llinfos << "main cap response:" << content << llendl;
+
+#endif
+
 	// at this point we have an llsd which should contain ether one or two urls to the services we want.
 	// first we look for the details service:
 	if(content.has("ScriptResourceDetails"))
@@ -173,24 +209,6 @@ void fetchScriptLimitsRegionInfoResponder::result(const LLSD& content)
 		{
 			llinfos << "Failed to get llfloaterscriptlimits instance" << llendl;
 		}
-		else
-		{
-
-// temp - only show info if we get details - there's nothing to show if not until the sim gets fixed
-#ifdef USE_SIMPLE_SUMMARY
-
-			LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
-			LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
-			std::string msg = LLTrans::getString("ScriptLimitsRequestDontOwnParcel");
-			panel_memory->childSetValue("loading_text", LLSD(msg));
-			LLPanelScriptLimitsRegionURLs* panel_urls = (LLPanelScriptLimitsRegionURLs*)tab->getChild<LLPanel>("script_limits_region_urls_panel");
-			panel_urls->childSetValue("loading_text", LLSD(msg));
-			
-			// intentional early out as we dont want the resource summary if we are using the "simple summary"
-			// and the details are missing
-			return;
-#endif
-		}
 	}
 
 	// then the summary service:
@@ -205,8 +223,61 @@ void fetchScriptLimitsRegionInfoResponder::error(U32 status, const std::string&
 	llinfos << "Error from responder " << reason << llendl;
 }
 
-void fetchScriptLimitsRegionSummaryResponder::result(const LLSD& content)
+void fetchScriptLimitsRegionSummaryResponder::result(const LLSD& content_ref)
 {
+#ifdef USE_FAKE_RESPONSES
+
+	LLSD fake_content;
+	LLSD summary = LLSD::emptyMap();
+	LLSD available = LLSD::emptyArray();
+	LLSD available_urls = LLSD::emptyMap();
+	LLSD available_memory = LLSD::emptyMap();
+	LLSD used = LLSD::emptyArray();
+	LLSD used_urls = LLSD::emptyMap();
+	LLSD used_memory = LLSD::emptyMap();
+
+	used_urls["type"] = "urls";
+	used_urls["amount"] = FAKE_NUMBER_OF_URLS;
+	available_urls["type"] = "urls";
+	available_urls["amount"] = FAKE_AVAILABLE_URLS;
+	used_memory["type"] = "memory";
+	used_memory["amount"] = FAKE_AMOUNT_OF_MEMORY;
+	available_memory["type"] = "memory";
+	available_memory["amount"] = FAKE_AVAILABLE_MEMORY;
+
+//summary response:{'summary':{'available':[{'amount':i731,'type':'urls'},{'amount':i895577,'type':'memory'},{'amount':i731,'type':'urls'},{'amount':i895577,'type':'memory'}],'used':[{'amount':i329,'type':'urls'},{'amount':i66741,'type':'memory'}]}}
+
+	used.append(used_urls);
+	used.append(used_memory);
+	available.append(available_urls);
+	available.append(available_memory);
+
+	summary["available"] = available;
+	summary["used"] = used;
+	
+	fake_content["summary"] = summary;
+
+	const LLSD* content = &fake_content;
+
+#else
+
+	const LLSD* content = &content_ref;
+
+#endif
+
+
+#ifdef DUMP_REPLIES_TO_LLINFOS
+
+	LLSDNotationStreamer notation_streamer(*content);
+	std::ostringstream nice_llsd;
+	nice_llsd << notation_streamer;
+
+	OSMessageBox(nice_llsd.str(), "summary response:", 0);
+
+	llinfos << "summary response:" << *content << llendl;
+
+#endif
+
 	LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
 	if(!instance)
 	{
@@ -216,9 +287,7 @@ void fetchScriptLimitsRegionSummaryResponder::result(const LLSD& content)
 	{
 		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
 		LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
-		panel_memory->setRegionSummary(content);
-		LLPanelScriptLimitsRegionURLs* panel_urls = (LLPanelScriptLimitsRegionURLs*)tab->getChild<LLPanel>("script_limits_region_urls_panel");
-		panel_urls->setRegionSummary(content);
+		panel_memory->setRegionSummary(*content);
 	}
 }
 
@@ -227,8 +296,82 @@ void fetchScriptLimitsRegionSummaryResponder::error(U32 status, const std::strin
 	llinfos << "Error from responder " << reason << llendl;
 }
 
-void fetchScriptLimitsRegionDetailsResponder::result(const LLSD& content)
+void fetchScriptLimitsRegionDetailsResponder::result(const LLSD& content_ref)
 {
+#ifdef USE_FAKE_RESPONSES
+/*
+Updated detail service, ** denotes field added:
+
+result (map)
++-parcels (array of maps)
+  +-id (uuid)
+  +-local_id (S32)**
+  +-name (string)
+  +-owner_id (uuid) (in ERS as owner, but owner_id in code)
+  +-objects (array of maps)
+    +-id (uuid)
+    +-name (string)
+	+-owner_id (uuid) (in ERS as owner, in code as owner_id)
+	+-owner_name (sting)**
+	+-location (map)**
+	  +-x (float)
+	  +-y (float)
+	  +-z (float)
+    +-resources (map) (this is wrong in the ERS but right in code)
+      +-type (string)
+      +-amount (int)
+*/
+	LLSD fake_content;
+	LLSD resource = LLSD::emptyMap();
+	LLSD location = LLSD::emptyMap();
+	LLSD object = LLSD::emptyMap();
+	LLSD objects = LLSD::emptyArray();
+	LLSD parcel = LLSD::emptyMap();
+	LLSD parcels = LLSD::emptyArray();
+
+	resource["urls"] = FAKE_NUMBER_OF_URLS;
+	resource["memory"] = FAKE_AMOUNT_OF_MEMORY;
+	
+	location["x"] = 128.0f;
+	location["y"] = 128.0f;
+	location["z"] = 0.0f;
+	
+	object["id"] = LLUUID("d574a375-0c6c-fe3d-5733-da669465afc7");
+	object["name"] = "Gabs fake Object!";
+	object["owner_id"] = LLUUID("8dbf2d41-69a0-4e5e-9787-0c9d297bc570");
+	object["owner_name"] = "Gabs Linden";
+	object["location"] = location;
+	object["resources"] = resource;
+
+	objects.append(object);
+
+	parcel["id"] = LLUUID("da05fb28-0d20-e593-2728-bddb42dd0160");
+	parcel["local_id"] = 42;
+	parcel["name"] = "Gabriel Linden\'s Sub Plot";
+	parcel["objects"] = objects;
+	parcels.append(parcel);
+
+	fake_content["parcels"] = parcels;
+	const LLSD* content = &fake_content;
+
+#else
+
+	const LLSD* content = &content_ref;
+
+#endif
+
+#ifdef DUMP_REPLIES_TO_LLINFOS
+
+	LLSDNotationStreamer notation_streamer(*content);
+	std::ostringstream nice_llsd;
+	nice_llsd << notation_streamer;
+
+	OSMessageBox(nice_llsd.str(), "details response:", 0);
+
+	llinfos << "details response:" << *content << llendl;
+
+#endif
+
 	LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
 
 	if(!instance)
@@ -239,10 +382,7 @@ void fetchScriptLimitsRegionDetailsResponder::result(const LLSD& content)
 	{
 		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
 		LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
-		panel_memory->setRegionDetails(content);
-		
-		LLPanelScriptLimitsRegionURLs* panel_urls = (LLPanelScriptLimitsRegionURLs*)tab->getChild<LLPanel>("script_limits_region_urls_panel");
-		panel_urls->setRegionDetails(content);
+		panel_memory->setRegionDetails(*content);
 	}
 }
 
@@ -251,8 +391,61 @@ void fetchScriptLimitsRegionDetailsResponder::error(U32 status, const std::strin
 	llinfos << "Error from responder " << reason << llendl;
 }
 
-void fetchScriptLimitsAttachmentInfoResponder::result(const LLSD& content)
+void fetchScriptLimitsAttachmentInfoResponder::result(const LLSD& content_ref)
 {
+
+#ifdef USE_FAKE_RESPONSES
+
+	// just add the summary, as that's all I'm testing currently!
+	LLSD fake_content = LLSD::emptyMap();
+	LLSD summary = LLSD::emptyMap();
+	LLSD available = LLSD::emptyArray();
+	LLSD available_urls = LLSD::emptyMap();
+	LLSD available_memory = LLSD::emptyMap();
+	LLSD used = LLSD::emptyArray();
+	LLSD used_urls = LLSD::emptyMap();
+	LLSD used_memory = LLSD::emptyMap();
+
+	used_urls["type"] = "urls";
+	used_urls["amount"] = FAKE_NUMBER_OF_URLS;
+	available_urls["type"] = "urls";
+	available_urls["amount"] = FAKE_AVAILABLE_URLS;
+	used_memory["type"] = "memory";
+	used_memory["amount"] = FAKE_AMOUNT_OF_MEMORY;
+	available_memory["type"] = "memory";
+	available_memory["amount"] = FAKE_AVAILABLE_MEMORY;
+
+	used.append(used_urls);
+	used.append(used_memory);
+	available.append(available_urls);
+	available.append(available_memory);
+
+	summary["available"] = available;
+	summary["used"] = used;
+	
+	fake_content["summary"] = summary;
+	fake_content["attachments"] = content_ref["attachments"];
+
+	const LLSD* content = &fake_content;
+
+#else
+
+	const LLSD* content = &content_ref;
+
+#endif
+
+#ifdef DUMP_REPLIES_TO_LLINFOS
+
+	LLSDNotationStreamer notation_streamer(*content);
+	std::ostringstream nice_llsd;
+	nice_llsd << notation_streamer;
+
+	OSMessageBox(nice_llsd.str(), "attachment response:", 0);
+	
+	llinfos << "attachment response:" << *content << llendl;
+
+#endif
+
 	LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
 
 	if(!instance)
@@ -263,7 +456,7 @@ void fetchScriptLimitsAttachmentInfoResponder::result(const LLSD& content)
 	{
 		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
 		LLPanelScriptLimitsAttachment* panel = (LLPanelScriptLimitsAttachment*)tab->getChild<LLPanel>("script_limits_my_avatar_panel");
-		panel->setAttachmentDetails(content);
+		panel->setAttachmentDetails(*content);
 	}
 }
 
@@ -309,7 +502,7 @@ void LLPanelScriptLimitsRegionMemory::processParcelInfo(const LLParcelData& parc
 	{
 		std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestWaiting");
 		childSetValue("loading_text", LLSD(msg_waiting));
-	}	
+	}
 }
 
 void LLPanelScriptLimitsRegionMemory::setParcelID(const LLUUID& parcel_id)
@@ -351,33 +544,8 @@ void LLPanelScriptLimitsRegionMemory::onNameCache(
 
 			if(item)
 			{
-				item->getColumn(2)->setValue(LLSD(name));
-				element["columns"][2]["value"] = name;
-			}
-		}
-	}
-
-	// fill in the url's tab if needed, all urls must have memory so we can do it all here
-	LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
-	if(instance)
-	{
-		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
-		LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_urls_panel");
-
-		LLScrollListCtrl *list = panel->getChild<LLScrollListCtrl>("scripts_list");	
-		std::vector<LLSD>::iterator id_itor;
-		for (id_itor = mObjectListItems.begin(); id_itor != mObjectListItems.end(); ++id_itor)
-		{
-			LLSD element = *id_itor;
-			if(element["owner_id"].asUUID() == id)
-			{
-				LLScrollListItem* item = list->getItem(element["id"].asUUID());
-
-				if(item)
-				{
-					item->getColumn(2)->setValue(LLSD(name));
-					element["columns"][2]["value"] = name;
-				}
+				item->getColumn(3)->setValue(LLSD(name));
+				element["columns"][3]["value"] = name;
 			}
 		}
 	}
@@ -394,36 +562,72 @@ void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content)
 	std::string msg_parcels = LLTrans::getString("ScriptLimitsParcelsOwned", args_parcels);
 	childSetValue("parcels_listed", LLSD(msg_parcels));
 
-	S32 total_objects = 0;
-	S32 total_size = 0;
-
 	std::vector<LLUUID> names_requested;
 
+	// This makes the assumption that all objects will have the same set
+	// of attributes, ie they will all have, or none will have locations
+	// This is a pretty safe assumption as it's reliant on server version.
+	bool has_locations = false;
+	bool has_local_ids = false;
+
 	for(S32 i = 0; i < number_parcels; i++)
 	{
 		std::string parcel_name = content["parcels"][i]["name"].asString();
 		LLUUID parcel_id = content["parcels"][i]["id"].asUUID();
 		S32 number_objects = content["parcels"][i]["objects"].size();
+
+		S32 local_id = 0;
+		if(content["parcels"][i].has("local_id"))
+		{
+			// if any locations are found flag that we can use them and turn on the highlight button
+			has_local_ids = true;
+			local_id = content["parcels"][i]["local_id"].asInteger();
+		}
+
 		for(S32 j = 0; j < number_objects; j++)
 		{
 			S32 size = content["parcels"][i]["objects"][j]["resources"]["memory"].asInteger() / SIZE_OF_ONE_KB;
-			total_size += size;
+			
+			S32 urls = content["parcels"][i]["objects"][j]["resources"]["urls"].asInteger();
 			
 			std::string name_buf = content["parcels"][i]["objects"][j]["name"].asString();
 			LLUUID task_id = content["parcels"][i]["objects"][j]["id"].asUUID();
 			LLUUID owner_id = content["parcels"][i]["objects"][j]["owner_id"].asUUID();
-			
+
+			F32 location_x = 0.0f;
+			F32 location_y = 0.0f;
+			F32 location_z = 0.0f;
+
+			if(content["parcels"][i]["objects"][j].has("location"))
+			{
+				// if any locations are found flag that we can use them and turn on the highlight button
+				LLVector3 vec = ll_vector3_from_sd(content["parcels"][i]["objects"][j]["location"]);
+				has_locations = true;
+				location_x = vec.mV[0];
+				location_y = vec.mV[1];
+				location_z = vec.mV[2];
+			}
+
 			std::string owner_buf;
-			
-			BOOL name_is_cached = gCacheName->getFullName(owner_id, owner_buf);
-			if(!name_is_cached)
+
+			// in the future the server will give us owner names, so see if we're there yet:
+			if(content["parcels"][i]["objects"][j].has("owner_name"))
+			{
+				owner_buf = content["parcels"][i]["objects"][j]["owner_name"].asString();
+			}
+			// ...and if not use the slightly more painful method of disovery:
+			else
 			{
-				if(std::find(names_requested.begin(), names_requested.end(), owner_id) == names_requested.end())
+				BOOL name_is_cached = gCacheName->getFullName(owner_id, owner_buf);
+				if(!name_is_cached)
 				{
-					names_requested.push_back(owner_id);
-					gCacheName->get(owner_id, TRUE,
-					boost::bind(&LLPanelScriptLimitsRegionMemory::onNameCache,
-						this, _1, _2, _3));
+					if(std::find(names_requested.begin(), names_requested.end(), owner_id) == names_requested.end())
+					{
+						names_requested.push_back(owner_id);
+						gCacheName->get(owner_id, TRUE,
+						boost::bind(&LLPanelScriptLimitsRegionMemory::onNameCache,
+							this, _1, _2, _3));
+					}
 				}
 			}
 
@@ -431,93 +635,117 @@ void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content)
 
 			element["id"] = task_id;
 			element["owner_id"] = owner_id;
+			element["local_id"] = local_id;
 			element["columns"][0]["column"] = "size";
 			element["columns"][0]["value"] = llformat("%d", size);
 			element["columns"][0]["font"] = "SANSSERIF";
-			element["columns"][1]["column"] = "name";
-			element["columns"][1]["value"] = name_buf;
+			element["columns"][1]["column"] = "urls";
+			element["columns"][1]["value"] = llformat("%d", urls);
 			element["columns"][1]["font"] = "SANSSERIF";
-			element["columns"][2]["column"] = "owner";
-			element["columns"][2]["value"] = owner_buf;
+			element["columns"][2]["column"] = "name";
+			element["columns"][2]["value"] = name_buf;
 			element["columns"][2]["font"] = "SANSSERIF";
-			element["columns"][3]["column"] = "location";
-			element["columns"][3]["value"] = parcel_name;
+			element["columns"][3]["column"] = "owner";
+			element["columns"][3]["value"] = owner_buf;
 			element["columns"][3]["font"] = "SANSSERIF";
+			element["columns"][4]["column"] = "parcel";
+			element["columns"][4]["value"] = parcel_name;
+			element["columns"][4]["font"] = "SANSSERIF";
+			element["columns"][5]["column"] = "location";
+			if(has_locations)
+			{
+				element["columns"][5]["value"] = llformat("<%0.1f,%0.1f,%0.1f>", location_x, location_y, location_z);
+			}
+			else
+			{
+				element["columns"][5]["value"] = "";
+			}
+			element["columns"][5]["font"] = "SANSSERIF";
 
 			list->addElement(element, ADD_SORTED);
 			mObjectListItems.push_back(element);
-			total_objects++;
 		}
 	}
 
-	mParcelMemoryUsed =total_size;
-	mGotParcelMemoryUsed = TRUE;
-	populateParcelMemoryText();
-}
-
-void LLPanelScriptLimitsRegionMemory::populateParcelMemoryText()
-{
-	if(mGotParcelMemoryUsed && mGotParcelMemoryMax)
+	if (has_locations)
 	{
-#ifdef USE_SIMPLE_SUMMARY
-		LLStringUtil::format_map_t args_parcel_memory;
-		args_parcel_memory["[COUNT]"] = llformat ("%d", mParcelMemoryUsed);
-		std::string msg_parcel_memory = LLTrans::getString("ScriptLimitsMemoryUsedSimple", args_parcel_memory);
-		childSetValue("memory_used", LLSD(msg_parcel_memory));
-#else
-		S32 parcel_memory_available = mParcelMemoryMax - mParcelMemoryUsed;
-	
-		LLStringUtil::format_map_t args_parcel_memory;
-		args_parcel_memory["[COUNT]"] = llformat ("%d", mParcelMemoryUsed);
-		args_parcel_memory["[MAX]"] = llformat ("%d", mParcelMemoryMax);
-		args_parcel_memory["[AVAILABLE]"] = llformat ("%d", parcel_memory_available);
-		std::string msg_parcel_memory = LLTrans::getString("ScriptLimitsMemoryUsed", args_parcel_memory);
-		childSetValue("memory_used", LLSD(msg_parcel_memory));
-#endif
+		LLButton* btn = getChild<LLButton>("highlight_btn");
+		btn->setVisible(true);
+	}
 
-		childSetValue("loading_text", LLSD(std::string("")));
+	if (has_local_ids)
+	{
+		LLButton* btn = getChild<LLButton>("return_btn");
+		btn->setVisible(true);
 	}
+	
+	// save the structure to make object return easier
+	mContent = content;
 }
 
 void LLPanelScriptLimitsRegionMemory::setRegionSummary(LLSD content)
 {
-	if(content["summary"]["available"][0]["type"].asString() == std::string("memory"))
+	if(content["summary"]["used"][0]["type"].asString() == std::string("memory"))
 	{
-		mParcelMemoryMax = content["summary"]["available"][0]["amount"].asInteger();
-		mGotParcelMemoryMax = TRUE;
+		mParcelMemoryUsed = content["summary"]["used"][0]["amount"].asInteger() / SIZE_OF_ONE_KB;
+		mParcelMemoryMax = content["summary"]["available"][0]["amount"].asInteger() / SIZE_OF_ONE_KB;
+		mGotParcelMemoryUsed = TRUE;
 	}
-	else if(content["summary"]["available"][1]["type"].asString() == std::string("memory"))
+	else if(content["summary"]["used"][1]["type"].asString() == std::string("memory"))
 	{
-		mParcelMemoryMax = content["summary"]["available"][1]["amount"].asInteger();
-		mGotParcelMemoryMax = TRUE;
+		mParcelMemoryUsed = content["summary"]["used"][1]["amount"].asInteger() / SIZE_OF_ONE_KB;
+		mParcelMemoryMax = content["summary"]["available"][1]["amount"].asInteger() / SIZE_OF_ONE_KB;
+		mGotParcelMemoryUsed = TRUE;
 	}
 	else
 	{
 		llinfos << "summary doesn't contain memory info" << llendl;
 		return;
 	}
-/*
-	currently this is broken on the server, so we get this value from the details section
-	and update via populateParcelMemoryText() when both sets of information have been returned
-
-	when the sim is fixed this should be used instead:
-	if(content["summary"]["used"][0]["type"].asString() == std::string("memory"))
+	
+	if(content["summary"]["used"][0]["type"].asString() == std::string("urls"))
 	{
-		mParcelMemoryUsed = content["summary"]["used"][0]["amount"].asInteger();
-		mGotParcelMemoryUsed = TRUE;
+		mParcelURLsUsed = content["summary"]["used"][0]["amount"].asInteger();
+		mParcelURLsMax = content["summary"]["available"][0]["amount"].asInteger();
+		mGotParcelURLsUsed = TRUE;
 	}
-	else if(content["summary"]["used"][1]["type"].asString() == std::string("memory"))
+	else if(content["summary"]["used"][1]["type"].asString() == std::string("urls"))
 	{
-		mParcelMemoryUsed = content["summary"]["used"][1]["amount"].asInteger();
-		mGotParcelMemoryUsed = TRUE;
+		mParcelURLsUsed = content["summary"]["used"][1]["amount"].asInteger();
+		mParcelURLsMax = content["summary"]["available"][1]["amount"].asInteger();
+		mGotParcelURLsUsed = TRUE;
 	}
 	else
 	{
-		//ERROR!!!
+		llinfos << "summary doesn't contain urls info" << llendl;
 		return;
-	}*/
+	}
+
+	if((mParcelMemoryUsed >= 0) && (mParcelMemoryMax >= 0))
+	{
+		S32 parcel_memory_available = mParcelMemoryMax - mParcelMemoryUsed;
+
+		LLStringUtil::format_map_t args_parcel_memory;
+		args_parcel_memory["[COUNT]"] = llformat ("%d", mParcelMemoryUsed);
+		args_parcel_memory["[MAX]"] = llformat ("%d", mParcelMemoryMax);
+		args_parcel_memory["[AVAILABLE]"] = llformat ("%d", parcel_memory_available);
+		std::string msg_parcel_memory = LLTrans::getString("ScriptLimitsMemoryUsed", args_parcel_memory);
+		childSetValue("memory_used", LLSD(msg_parcel_memory));
+	}
+
+	if((mParcelURLsUsed >= 0) && (mParcelURLsMax >= 0))
+	{
+		S32 parcel_urls_available = mParcelURLsMax - mParcelURLsUsed;
 
-	populateParcelMemoryText();
+		LLStringUtil::format_map_t args_parcel_urls;
+		args_parcel_urls["[COUNT]"] = llformat ("%d", mParcelURLsUsed);
+		args_parcel_urls["[MAX]"] = llformat ("%d", mParcelURLsMax);
+		args_parcel_urls["[AVAILABLE]"] = llformat ("%d", parcel_urls_available);
+		std::string msg_parcel_urls = LLTrans::getString("ScriptLimitsURLsUsed", args_parcel_urls);
+		childSetValue("urls_used", LLSD(msg_parcel_urls));
+	}
+	
+	childSetValue("loading_text", LLSD(std::string("")));
 }
 
 BOOL LLPanelScriptLimitsRegionMemory::postBuild()
@@ -548,18 +776,11 @@ BOOL LLPanelScriptLimitsRegionMemory::StartRequestChain()
 	LLFloaterLand* instance = LLFloaterReg::getTypedInstance<LLFloaterLand>("about_land");
 	if(!instance)
 	{
-		//this isnt really an error...
-//		llinfos << "Failed to get about land instance" << llendl;
-//		std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError");
 		childSetValue("loading_text", LLSD(std::string("")));
 		//might have to do parent post build here
 		//if not logic below could use early outs
 		return FALSE;
 	}
-
-	LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
-	LLPanelScriptLimitsRegionURLs* panel_urls = (LLPanelScriptLimitsRegionURLs*)tab->getChild<LLPanel>("script_limits_region_urls_panel");
-
 	LLParcel* parcel = instance->getCurrentSelectedParcel();
 	LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
 	
@@ -575,7 +796,6 @@ BOOL LLPanelScriptLimitsRegionMemory::StartRequestChain()
 		{
 			std::string msg_wrong_region = LLTrans::getString("ScriptLimitsRequestWrongRegion");
 			childSetValue("loading_text", LLSD(msg_wrong_region));
-			panel_urls->childSetValue("loading_text", LLSD(msg_wrong_region));
 			return FALSE;
 		}
 		
@@ -605,14 +825,12 @@ BOOL LLPanelScriptLimitsRegionMemory::StartRequestChain()
 					
 			std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError");
 			childSetValue("loading_text", LLSD(msg_waiting));
-			panel_urls->childSetValue("loading_text", LLSD(msg_waiting));
 		}
 	}
 	else
 	{
-		std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError");
+		std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestNoParcelSelected");
 		childSetValue("loading_text", LLSD(msg_waiting));
-		panel_urls->childSetValue("loading_text", LLSD(msg_waiting));
 	}
 
 	return LLPanelScriptLimitsInfo::postBuild();
@@ -629,10 +847,13 @@ void LLPanelScriptLimitsRegionMemory::clearList()
 
 	mGotParcelMemoryUsed = FALSE;
 	mGotParcelMemoryMax = FALSE;
+	mGotParcelURLsUsed = FALSE;
+	mGotParcelURLsMax = FALSE;
 	
 	LLStringUtil::format_map_t args_parcel_memory;
 	std::string msg_empty_string("");
 	childSetValue("memory_used", LLSD(msg_empty_string));
+	childSetValue("urls_used", LLSD(msg_empty_string));
 	childSetValue("parcels_listed", LLSD(msg_empty_string));
 
 	mObjectListItems.clear();
@@ -641,6 +862,7 @@ void LLPanelScriptLimitsRegionMemory::clearList()
 // static
 void LLPanelScriptLimitsRegionMemory::onClickRefresh(void* userdata)
 {
+	//**don't use userdata without checking for null-ness**
 	llinfos << "LLPanelRegionGeneralInfo::onClickRefresh" << llendl;
 	
 	LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
@@ -649,9 +871,6 @@ void LLPanelScriptLimitsRegionMemory::onClickRefresh(void* userdata)
 		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
 		LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
 		panel_memory->clearList();
-
-		LLPanelScriptLimitsRegionURLs* panel_urls = (LLPanelScriptLimitsRegionURLs*)tab->getChild<LLPanel>("script_limits_region_urls_panel");
-		panel_urls->clearList();
 		
 		panel_memory->StartRequestChain();
 		return;
@@ -665,33 +884,30 @@ void LLPanelScriptLimitsRegionMemory::onClickRefresh(void* userdata)
 
 void LLPanelScriptLimitsRegionMemory::showBeacon()
 {	
-/*	LLScrollListCtrl* list = getChild<LLScrollListCtrl>("scripts_list");
+	LLScrollListCtrl* list = getChild<LLScrollListCtrl>("scripts_list");
 	if (!list) return;
 
 	LLScrollListItem* first_selected = list->getFirstSelected();
 	if (!first_selected) return;
 
-	std::string name = first_selected->getColumn(1)->getValue().asString();
-	std::string pos_string =  first_selected->getColumn(3)->getValue().asString();
+	std::string name = first_selected->getColumn(2)->getValue().asString();
+	std::string pos_string =  first_selected->getColumn(5)->getValue().asString();
 	
-	llinfos << ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" <<llendl;
-	llinfos << "name = " << name << " pos = " << pos_string << llendl;
-
 	F32 x, y, z;
 	S32 matched = sscanf(pos_string.c_str(), "<%g,%g,%g>", &x, &y, &z);
 	if (matched != 3) return;
 
 	LLVector3 pos_agent(x, y, z);
 	LLVector3d pos_global = gAgent.getPosGlobalFromAgent(pos_agent);
-	llinfos << "name = " << name << " pos = " << pos_string << llendl;
+
 	std::string tooltip("");
-	LLTracker::trackLocation(pos_global, name, tooltip, LLTracker::LOCATION_ITEM);*/
+	LLTracker::trackLocation(pos_global, name, tooltip, LLTracker::LOCATION_ITEM);
 }
 
 // static
 void LLPanelScriptLimitsRegionMemory::onClickHighlight(void* userdata)
 {
-/*	llinfos << "LLPanelRegionGeneralInfo::onClickHighlight" << llendl;
+	llinfos << "LLPanelRegionGeneralInfo::onClickHighlight" << llendl;
 	LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
 	if(instance)
 	{
@@ -703,40 +919,39 @@ void LLPanelScriptLimitsRegionMemory::onClickHighlight(void* userdata)
 	else
 	{
 		llwarns << "could not find LLPanelScriptLimitsRegionMemory instance after highlight button clicked" << llendl;
-//		std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError");
-//		panel->childSetValue("loading_text", LLSD(msg_waiting));
 		return;
-	}*/
+	}
 }
 
-void LLPanelScriptLimitsRegionMemory::returnObjects()
+void LLPanelScriptLimitsRegionMemory::returnObjectsFromParcel(S32 local_id)
 {
-/*	llinfos << "started" << llendl;
 	LLMessageSystem *msg = gMessageSystem;
 
 	LLViewerRegion* region = gAgent.getRegion();
 	if (!region) return;
 
-	llinfos << "got region" << llendl;
 	LLCtrlListInterface *list = childGetListInterface("scripts_list");
 	if (!list || list->getItemCount() == 0) return;
 
-	llinfos << "got list" << llendl;
-	std::vector<LLUUID>::iterator id_itor;
+	std::vector<LLSD>::iterator id_itor;
 
 	bool start_message = true;
 
-	for (id_itor = mObjectListIDs.begin(); id_itor != mObjectListIDs.end(); ++id_itor)
+	for (id_itor = mObjectListItems.begin(); id_itor != mObjectListItems.end(); ++id_itor)
 	{
-		LLUUID task_id = *id_itor;
-		llinfos << task_id << llendl;
-		if (!list->isSelected(task_id))
+		LLSD element = *id_itor;
+		if (!list->isSelected(element["id"].asUUID()))
 		{
-			llinfos << "not selected" << llendl;
 			// Selected only
 			continue;
 		}
-		llinfos << "selected" << llendl;
+		
+		if(element["local_id"].asInteger() != local_id)
+		{
+			// Not the parcel we are looking for
+			continue;
+		}
+
 		if (start_message)
 		{
 			msg->newMessageFast(_PREHASH_ParcelReturnObjects);
@@ -744,285 +959,68 @@ void LLPanelScriptLimitsRegionMemory::returnObjects()
 			msg->addUUIDFast(_PREHASH_AgentID,	gAgent.getID());
 			msg->addUUIDFast(_PREHASH_SessionID,gAgent.getSessionID());
 			msg->nextBlockFast(_PREHASH_ParcelData);
-			msg->addS32Fast(_PREHASH_LocalID, -1); // Whole region
-			msg->addS32Fast(_PREHASH_ReturnType, RT_LIST);
+			msg->addS32Fast(_PREHASH_LocalID, element["local_id"].asInteger());
+			msg->addU32Fast(_PREHASH_ReturnType, RT_LIST);
 			start_message = false;
-			llinfos << "start message" << llendl;
 		}
 
 		msg->nextBlockFast(_PREHASH_TaskIDs);
-		msg->addUUIDFast(_PREHASH_TaskID, task_id);
-		llinfos << "added id" << llendl;
+		msg->addUUIDFast(_PREHASH_TaskID, element["id"].asUUID());
 
 		if (msg->isSendFullFast(_PREHASH_TaskIDs))
 		{
 			msg->sendReliable(region->getHost());
 			start_message = true;
-			llinfos << "sent 1" << llendl;
 		}
 	}
 
 	if (!start_message)
 	{
 		msg->sendReliable(region->getHost());
-		llinfos << "sent 2" << llendl;
-	}*/
+	}
 }
 
-// static
-void LLPanelScriptLimitsRegionMemory::onClickReturn(void* userdata)
+void LLPanelScriptLimitsRegionMemory::returnObjects()
 {
-/*	llinfos << "LLPanelRegionGeneralInfo::onClickReturn" << llendl;
-	LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
-	if(instance)
+	if(!mContent.has("parcels"))
 	{
-		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
-		LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
-		panel->returnObjects();
 		return;
 	}
-	else
-	{
-		llwarns << "could not find LLPanelScriptLimitsRegionMemory instance after highlight button clicked" << llendl;
-//		std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError");
-//		panel->childSetValue("loading_text", LLSD(msg_waiting));
-		return;
-	}*/
-}
-
-///----------------------------------------------------------------------------
-// URLs Panel
-///----------------------------------------------------------------------------
-
-void LLPanelScriptLimitsRegionURLs::setRegionDetails(LLSD content)
-{
-	LLScrollListCtrl *list = getChild<LLScrollListCtrl>("scripts_list");
-
-	S32 number_parcels = content["parcels"].size();
-
-	LLStringUtil::format_map_t args_parcels;
-	args_parcels["[PARCELS]"] = llformat ("%d", number_parcels);
-	std::string msg_parcels = LLTrans::getString("ScriptLimitsParcelsOwned", args_parcels);
-	childSetValue("parcels_listed", LLSD(msg_parcels));
-
-	S32 total_objects = 0;
-	S32 total_size = 0;
 	
+	S32 number_parcels = mContent["parcels"].size();
+
+	// a message per parcel containing all objects to be returned from that parcel
 	for(S32 i = 0; i < number_parcels; i++)
 	{
-		std::string parcel_name = content["parcels"][i]["name"].asString();
-		llinfos << parcel_name << llendl;
-
-		S32 number_objects = content["parcels"][i]["objects"].size();
-		for(S32 j = 0; j < number_objects; j++)
+		S32 local_id = 0;
+		if(mContent["parcels"][i].has("local_id"))
 		{
-			if(content["parcels"][i]["objects"][j]["resources"].has("urls"))
-			{
-				S32 size = content["parcels"][i]["objects"][j]["resources"]["urls"].asInteger();
-				total_size += size;
-				
-				std::string name_buf = content["parcels"][i]["objects"][j]["name"].asString();
-				LLUUID task_id = content["parcels"][i]["objects"][j]["id"].asUUID();
-				LLUUID owner_id = content["parcels"][i]["objects"][j]["owner_id"].asUUID();
-
-				std::string owner_buf;
-				gCacheName->getFullName(owner_id, owner_buf); //dont care if this fails as the memory tab will request and fill the field
-
-				LLSD element;
-
-				element["id"] = task_id;
-				element["columns"][0]["column"] = "urls";
-				element["columns"][0]["value"] = llformat("%d", size);
-				element["columns"][0]["font"] = "SANSSERIF";
-				element["columns"][1]["column"] = "name";
-				element["columns"][1]["value"] = name_buf;
-				element["columns"][1]["font"] = "SANSSERIF";
-				element["columns"][2]["column"] = "owner";
-				element["columns"][2]["value"] = owner_buf;
-				element["columns"][2]["font"] = "SANSSERIF";
-				element["columns"][3]["column"] = "location";
-				element["columns"][3]["value"] = parcel_name;
-				element["columns"][3]["font"] = "SANSSERIF";
-
-				list->addElement(element);
-				mObjectListItems.push_back(element);
-				total_objects++;
-			}
+			local_id = mContent["parcels"][i]["local_id"].asInteger();
+			returnObjectsFromParcel(local_id);
 		}
 	}
-	
-	mParcelURLsUsed =total_size;
-	mGotParcelURLsUsed = TRUE;
-	populateParcelURLsText();
-}
-
-void LLPanelScriptLimitsRegionURLs::populateParcelURLsText()
-{
-	if(mGotParcelURLsUsed && mGotParcelURLsMax)
-	{
-
-#ifdef USE_SIMPLE_SUMMARY
-		LLStringUtil::format_map_t args_parcel_urls;
-		args_parcel_urls["[COUNT]"] = llformat ("%d", mParcelURLsUsed);
-		std::string msg_parcel_urls = LLTrans::getString("ScriptLimitsURLsUsedSimple", args_parcel_urls);
-		childSetValue("urls_used", LLSD(msg_parcel_urls));
-#else
-		S32 parcel_urls_available = mParcelURLsMax - mParcelURLsUsed;
-
-		LLStringUtil::format_map_t args_parcel_urls;
-		args_parcel_urls["[COUNT]"] = llformat ("%d", mParcelURLsUsed);
-		args_parcel_urls["[MAX]"] = llformat ("%d", mParcelURLsMax);
-		args_parcel_urls["[AVAILABLE]"] = llformat ("%d", parcel_urls_available);
-		std::string msg_parcel_urls = LLTrans::getString("ScriptLimitsURLsUsed", args_parcel_urls);
-		childSetValue("urls_used", LLSD(msg_parcel_urls));
-#endif
-
-		childSetValue("loading_text", LLSD(std::string("")));
-
-	}
-}
-
-void LLPanelScriptLimitsRegionURLs::setRegionSummary(LLSD content)
-{
-	if(content["summary"]["available"][0]["type"].asString() == std::string("urls"))
-	{
-		mParcelURLsMax = content["summary"]["available"][0]["amount"].asInteger();
-		mGotParcelURLsMax = TRUE;
-	}
-	else if(content["summary"]["available"][1]["type"].asString() == std::string("urls"))
-	{
-		mParcelURLsMax = content["summary"]["available"][1]["amount"].asInteger();
-		mGotParcelURLsMax = TRUE;
-	}
-	else
-	{
-		llinfos << "summary contains no url info" << llendl;
-		return;
-	}
-/*
-	currently this is broken on the server, so we get this value from the details section
-	and update via populateParcelMemoryText() when both sets of information have been returned
-
-	when the sim is fixed this should be used instead:
-	if(content["summary"]["used"][0]["type"].asString() == std::string("urls"))
-	{
-		mParcelURLsUsed = content["summary"]["used"][0]["amount"].asInteger();
-		mGotParcelURLsUsed = TRUE;
-	}
-	else if(content["summary"]["used"][1]["type"].asString() == std::string("urls"))
-	{
-		mParcelURLsUsed = content["summary"]["used"][1]["amount"].asInteger();
-		mGotParcelURLsUsed = TRUE;
-	}
-	else
-	{
-		//ERROR!!!
-		return;
-	}*/
-
-	populateParcelURLsText();
-}
-
-BOOL LLPanelScriptLimitsRegionURLs::postBuild()
-{
-	childSetAction("refresh_list_btn", onClickRefresh, this);
-	childSetAction("highlight_btn", onClickHighlight, this);
-	childSetAction("return_btn", onClickReturn, this);
-		
-	std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestWaiting");
-	childSetValue("loading_text", LLSD(msg_waiting));
-	return FALSE;
-}
-
-void LLPanelScriptLimitsRegionURLs::clearList()
-{
-	LLCtrlListInterface *list = childGetListInterface("scripts_list");
-
-	if (list)
-	{
-		list->operateOnAll(LLCtrlListInterface::OP_DELETE);
-	}
-
-	mGotParcelURLsUsed = FALSE;
-	mGotParcelURLsMax = FALSE;
-	
-	LLStringUtil::format_map_t args_parcel_urls;
-	std::string msg_empty_string("");
-	childSetValue("urls_used", LLSD(msg_empty_string));
-	childSetValue("parcels_listed", LLSD(msg_empty_string));
-
-	mObjectListItems.clear();
-}
-
-// static
-void LLPanelScriptLimitsRegionURLs::onClickRefresh(void* userdata)
-{
-	llinfos << "Refresh clicked" << llendl;
-	
-	LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
-	if(instance)
-	{
-		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
-		LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
-		// use the memory panel to re-request all the info
-		panel_memory->clearList();
 
-		LLPanelScriptLimitsRegionURLs* panel_urls = (LLPanelScriptLimitsRegionURLs*)tab->getChild<LLPanel>("script_limits_region_urls_panel");
-		// but the urls panel to clear itself
-		panel_urls->clearList();
-
-		panel_memory->StartRequestChain();
-		return;
-	}
-	else
-	{
-		llwarns << "could not find LLPanelScriptLimitsRegionMemory instance after refresh button clicked" << llendl;
-		return;
-	}
+	onClickRefresh(NULL);
 }
 
-// static
-void LLPanelScriptLimitsRegionURLs::onClickHighlight(void* userdata)
-{
-/*	llinfos << "Highlight clicked" << llendl;
-	LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
-	if(instance)
-	{
-		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
-		LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
-		// use the beacon function from the memory panel
-		panel->showBeacon();
-		return;
-	}
-	else
-	{
-		llwarns << "could not find LLPanelScriptLimitsRegionMemory instance after highlight button clicked" << llendl;
-//		std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError");
-//		panel->childSetValue("loading_text", LLSD(msg_waiting));
-		return;
-	}*/
-}
 
 // static
-void LLPanelScriptLimitsRegionURLs::onClickReturn(void* userdata)
+void LLPanelScriptLimitsRegionMemory::onClickReturn(void* userdata)
 {
-/*	llinfos << "Return clicked" << llendl;
+	llinfos << "LLPanelRegionGeneralInfo::onClickReturn" << llendl;
 	LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
 	if(instance)
 	{
 		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
 		LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
-		// use the return function from the memory panel
 		panel->returnObjects();
 		return;
 	}
 	else
 	{
 		llwarns << "could not find LLPanelScriptLimitsRegionMemory instance after highlight button clicked" << llendl;
-//		std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError");
-//		panel->childSetValue("loading_text", LLSD(msg_waiting));
 		return;
-	}*/
+	}
 }
 
 ///----------------------------------------------------------------------------
@@ -1096,6 +1094,8 @@ void LLPanelScriptLimitsAttachment::setAttachmentDetails(LLSD content)
 			list->addElement(element);
 		}
 	}
+	
+	setAttachmentSummary(content);
 
 	childSetValue("loading_text", LLSD(std::string("")));
 }
@@ -1122,6 +1122,69 @@ void LLPanelScriptLimitsAttachment::clearList()
 	childSetValue("loading_text", LLSD(msg_waiting));
 }
 
+void LLPanelScriptLimitsAttachment::setAttachmentSummary(LLSD content)
+{
+	if(content["summary"]["used"][0]["type"].asString() == std::string("memory"))
+	{
+		mAttachmentMemoryUsed = content["summary"]["used"][0]["amount"].asInteger() / SIZE_OF_ONE_KB;
+		mAttachmentMemoryMax = content["summary"]["available"][0]["amount"].asInteger() / SIZE_OF_ONE_KB;
+		mGotAttachmentMemoryUsed = TRUE;
+	}
+	else if(content["summary"]["used"][1]["type"].asString() == std::string("memory"))
+	{
+		mAttachmentMemoryUsed = content["summary"]["used"][1]["amount"].asInteger() / SIZE_OF_ONE_KB;
+		mAttachmentMemoryMax = content["summary"]["available"][1]["amount"].asInteger() / SIZE_OF_ONE_KB;
+		mGotAttachmentMemoryUsed = TRUE;
+	}
+	else
+	{
+		llinfos << "attachment details don't contain memory summary info" << llendl;
+		return;
+	}
+	
+	if(content["summary"]["used"][0]["type"].asString() == std::string("urls"))
+	{
+		mAttachmentURLsUsed = content["summary"]["used"][0]["amount"].asInteger();
+		mAttachmentURLsMax = content["summary"]["available"][0]["amount"].asInteger();
+		mGotAttachmentURLsUsed = TRUE;
+	}
+	else if(content["summary"]["used"][1]["type"].asString() == std::string("urls"))
+	{
+		mAttachmentURLsUsed = content["summary"]["used"][1]["amount"].asInteger();
+		mAttachmentURLsMax = content["summary"]["available"][1]["amount"].asInteger();
+		mGotAttachmentURLsUsed = TRUE;
+	}
+	else
+	{
+		llinfos << "attachment details don't contain urls summary info" << llendl;
+		return;
+	}
+
+	if((mAttachmentMemoryUsed >= 0) && (mAttachmentMemoryMax >= 0))
+	{
+		S32 attachment_memory_available = mAttachmentMemoryMax - mAttachmentMemoryUsed;
+
+		LLStringUtil::format_map_t args_attachment_memory;
+		args_attachment_memory["[COUNT]"] = llformat ("%d", mAttachmentMemoryUsed);
+		args_attachment_memory["[MAX]"] = llformat ("%d", mAttachmentMemoryMax);
+		args_attachment_memory["[AVAILABLE]"] = llformat ("%d", attachment_memory_available);
+		std::string msg_attachment_memory = LLTrans::getString("ScriptLimitsMemoryUsed", args_attachment_memory);
+		childSetValue("memory_used", LLSD(msg_attachment_memory));
+	}
+
+	if((mAttachmentURLsUsed >= 0) && (mAttachmentURLsMax >= 0))
+	{
+		S32 attachment_urls_available = mAttachmentURLsMax - mAttachmentURLsUsed;
+
+		LLStringUtil::format_map_t args_attachment_urls;
+		args_attachment_urls["[COUNT]"] = llformat ("%d", mAttachmentURLsUsed);
+		args_attachment_urls["[MAX]"] = llformat ("%d", mAttachmentURLsMax);
+		args_attachment_urls["[AVAILABLE]"] = llformat ("%d", attachment_urls_available);
+		std::string msg_attachment_urls = LLTrans::getString("ScriptLimitsURLsUsed", args_attachment_urls);
+		childSetValue("urls_used", LLSD(msg_attachment_urls));
+	}
+}
+
 // static
 void LLPanelScriptLimitsAttachment::onClickRefresh(void* userdata)
 {
diff --git a/indra/newview/llfloaterscriptlimits.h b/indra/newview/llfloaterscriptlimits.h
index e675d145156..4c1ecc1019e 100644
--- a/indra/newview/llfloaterscriptlimits.h
+++ b/indra/newview/llfloaterscriptlimits.h
@@ -166,10 +166,10 @@ class LLPanelScriptLimitsRegionMemory : public LLPanelScriptLimitsInfo, LLRemote
 
 	BOOL StartRequestChain();
 
-	void populateParcelMemoryText();
 	BOOL getLandScriptResources();
 	void clearList();
 	void showBeacon();
+	void returnObjectsFromParcel(S32 local_id);
 	void returnObjects();
 
 private:
@@ -178,69 +178,30 @@ class LLPanelScriptLimitsRegionMemory : public LLPanelScriptLimitsInfo, LLRemote
 			 const std::string& first_name,
 			 const std::string& last_name);
 
+	LLSD mContent;
 	LLUUID mParcelId;
 	BOOL mGotParcelMemoryUsed;
+	BOOL mGotParcelMemoryUsedDetails;
 	BOOL mGotParcelMemoryMax;
 	S32 mParcelMemoryMax;
 	S32 mParcelMemoryUsed;
+	S32 mParcelMemoryUsedDetails;
 	
-	std::vector<LLSD> mObjectListItems;
-		
-protected:
-
-// LLRemoteParcelInfoObserver interface:
-/*virtual*/ void processParcelInfo(const LLParcelData& parcel_data);
-/*virtual*/ void setParcelID(const LLUUID& parcel_id);
-/*virtual*/ void setErrorStatus(U32 status, const std::string& reason);
-	
-	static void onClickRefresh(void* userdata);
-	static void onClickHighlight(void* userdata);
-	static void onClickReturn(void* userdata);
-};
-
-/////////////////////////////////////////////////////////////////////////////
-// URLs panel
-/////////////////////////////////////////////////////////////////////////////
-
-class LLPanelScriptLimitsRegionURLs : public LLPanelScriptLimitsInfo
-{
-	
-public:
-	LLPanelScriptLimitsRegionURLs()
-		: LLPanelScriptLimitsInfo(),
-
-		mParcelId(LLUUID()),
-		mGotParcelURLsUsed(FALSE),
-		mGotParcelURLsMax(FALSE),
-		mParcelURLsMax(0),
-		mParcelURLsUsed(0)
-		{
-		};
-
-	~LLPanelScriptLimitsRegionURLs()
-	{
-	};
-	
-	// LLPanel
-	virtual BOOL postBuild();
-
-	void setRegionDetails(LLSD content);
-	void setRegionSummary(LLSD content);
-
-	void populateParcelURLsText();
-	void clearList();
-
-private:
-
-	LLUUID mParcelId;
 	BOOL mGotParcelURLsUsed;
+	BOOL mGotParcelURLsUsedDetails;
 	BOOL mGotParcelURLsMax;
 	S32 mParcelURLsMax;
 	S32 mParcelURLsUsed;
+	S32 mParcelURLsUsedDetails;
 	
 	std::vector<LLSD> mObjectListItems;
 		
 protected:
+
+// LLRemoteParcelInfoObserver interface:
+/*virtual*/ void processParcelInfo(const LLParcelData& parcel_data);
+/*virtual*/ void setParcelID(const LLUUID& parcel_id);
+/*virtual*/ void setErrorStatus(U32 status, const std::string& reason);
 	
 	static void onClickRefresh(void* userdata);
 	static void onClickHighlight(void* userdata);
@@ -266,11 +227,26 @@ class LLPanelScriptLimitsAttachment : public LLPanelScriptLimitsInfo
 
 	void setAttachmentDetails(LLSD content);
 
+	void setAttachmentSummary(LLSD content);
 	BOOL requestAttachmentDetails();
 	void clearList();
 
 private:
 
+	BOOL mGotAttachmentMemoryUsed;
+	BOOL mGotAttachmentMemoryUsedDetails;
+	BOOL mGotAttachmentMemoryMax;
+	S32 mAttachmentMemoryMax;
+	S32 mAttachmentMemoryUsed;
+	S32 mAttachmentMemoryUsedDetails;
+	
+	BOOL mGotAttachmentURLsUsed;
+	BOOL mGotAttachmentURLsUsedDetails;
+	BOOL mGotAttachmentURLsMax;
+	S32 mAttachmentURLsMax;
+	S32 mAttachmentURLsUsed;
+	S32 mAttachmentURLsUsedDetails;
+
 protected:
 	
 	static void onClickRefresh(void* userdata);
diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp
index fccf71f3cba..7bcbe334fff 100644
--- a/indra/newview/llpreviewscript.cpp
+++ b/indra/newview/llpreviewscript.cpp
@@ -1904,7 +1904,7 @@ void LLLiveLSLEditor::uploadAssetViaCaps(const std::string& url,
 										 const LLUUID& item_id,
 										 BOOL is_running)
 {
-	llinfos << "Update Task Inventory via capability" << llendl;
+	llinfos << "Update Task Inventory via capability " << url << llendl;
 	LLSD body;
 	body["task_id"] = task_id;
 	body["item_id"] = item_id;
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 98c44ad1b31..6b36cdfcc5e 100644
--- a/indra/newview/skins/default/xui/en/floater_script_limits.xml
+++ b/indra/newview/skins/default/xui/en/floater_script_limits.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
  legacy_header_height="18"
+ can_resize="true"
  height="570"
  help_topic="scriptlimits"
  layout="topleft"
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 d98f690339c..629d8567d10 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
@@ -9,7 +9,44 @@
  name="script_limits_my_avatar_panel"
  top="0"
  width="480">
-    <text
+	<text
+	 type="string"
+	 length="1"
+	 follows="left|top"
+	 height="16"
+	 layout="topleft"
+	 left="10"
+	 name="script_memory"
+	 top_pad="24"
+	 text_color="White"
+	 width="480">
+		Avatar Script Usage
+	</text>
+	<text
+	 type="string"
+	 length="1"
+	 follows="left|top"
+	 height="16"
+	 layout="topleft"
+	 left="30"
+	 name="memory_used"
+	 top_delta="18"
+	 width="480">
+
+	</text>
+	<text
+	 type="string"
+	 length="1"
+	 follows="left|top"
+	 height="16"
+	 layout="topleft"
+	 left="30"
+	 name="urls_used"
+	 top_delta="18"
+	 width="480">
+
+	</text>
+	<text
      type="string"
      length="1"
      follows="left|top"
@@ -17,7 +54,7 @@
      layout="topleft"
      left="10"
      name="loading_text"
-     top="10"
+     top="80"
      text_color="EmphasisColor"
      width="480">
         Loading...
@@ -25,12 +62,12 @@
     <scroll_list
      draw_heading="true"
      follows="all"
-     height="500"
+     height="415"
      layout="topleft"
      left_delta="0"
      multi_select="true"
      name="scripts_list"
-     top_delta="17"
+     top="100"
      width="460">
         <scroll_list.columns
          label="Size (kb)"
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 0fa3c1cf2e0..9dff00fa0b9 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
@@ -33,7 +33,7 @@
 	 top_delta="18"
 	 visible="true"
 	 width="480">
-		Parcels Owned:
+	 
 	</text>
 	<text
 	 type="string"
@@ -45,7 +45,19 @@
 	 name="memory_used"
 	 top_delta="18"
 	 width="480">
-		Memory used:
+	</text>
+	
+	<text
+	 type="string"
+	 length="1"
+	 follows="left|top"
+	 height="16"
+	 layout="topleft"
+	 left="30"
+	 name="urls_used"
+	 top_delta="18"
+	 width="480">
+	 
 	</text>
 	<text
      type="string"
@@ -55,7 +67,7 @@
      layout="topleft"
      left="10"
      name="loading_text"
-     top_delta="32"
+     top_delta="12"
      text_color="EmphasisColor"
      width="480">
         Loading...
@@ -73,7 +85,11 @@
         <scroll_list.columns
          label="Size (kb)"
          name="size"
-         width="70" />
+         width="72" />
+        <scroll_list.columns
+         label="URLs"
+         name="urls"
+         width="48" />
         <scroll_list.columns
          label="Object Name"
          name="name"
@@ -83,11 +99,13 @@
          name="owner"
          width="100" />
         <scroll_list.columns
-         label="Parcel / Location"
-         name="location"
+         label="Parcel"
+         name="parcel"
          width="130" />
-<!--		<scroll_list.commit_callback
-          function="TopObjects.CommitObjectsList" />-->
+        <scroll_list.columns
+         label="Location"
+         name="location"
+         width="80" />
     </scroll_list>
     <button
      follows="bottom|left"
@@ -102,8 +120,8 @@
     <button
      follows="bottom|right"
      height="19"
-	 visible="false"
      label="Highlight"
+	 visible="false"
      layout="bottomright"
      left="370"
      name="highlight_btn"
@@ -112,8 +130,8 @@
     <button
      follows="bottom|right"
      height="19"
-	 visible="false"
      label="Return"
+	 visible="false"
      layout="bottomright"
      name="return_btn"
      top="34"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index b378944e48a..b4a12cfb322 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -2051,6 +2051,7 @@ this texture in your inventory
 	<string name="ScriptLimitsURLsUsed">URLs used: [COUNT] out of [MAX]; [AVAILABLE] available</string>
 	<string name="ScriptLimitsURLsUsedSimple">URLs used: [COUNT]</string>
 	<string name="ScriptLimitsRequestError">Error requesting information</string>
+	<string name="ScriptLimitsRequestNoParcelSelected">No Parcel Selected</string>
 	<string name="ScriptLimitsRequestWrongRegion">Error: script information is only available in your current region</string>
 	<string name="ScriptLimitsRequestWaiting">Retrieving information...</string>
 	<string name="ScriptLimitsRequestDontOwnParcel">You do not have permission to examine this parcel</string>
-- 
GitLab


From 7bcba326b32e1aca678edfb4495d1e2d4d44cb71 Mon Sep 17 00:00:00 2001
From: Eugene Mutavchi <emutavchi@productengine.com>
Date: Mon, 1 Feb 2010 18:25:58 +0200
Subject: [PATCH 399/521] Fixed major bug EXT-4798 (Voice notifications steal
 keyboard focus by default)

--HG--
branch : product-engine
---
 indra/llui/lldockablefloater.cpp | 2 +-
 indra/llui/llfloater.h           | 1 +
 indra/newview/llimview.cpp       | 7 ++++---
 3 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/indra/llui/lldockablefloater.cpp b/indra/llui/lldockablefloater.cpp
index 74438b184a8..57baf28dab7 100644
--- a/indra/llui/lldockablefloater.cpp
+++ b/indra/llui/lldockablefloater.cpp
@@ -146,7 +146,7 @@ void LLDockableFloater::setVisible(BOOL visible)
 
 	if (visible)
 	{
-		LLFloater::setFrontmost(TRUE);
+		LLFloater::setFrontmost(getAutoFocus());
 	}
 	LLFloater::setVisible(visible);
 }
diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
index 8c9dacbd207..2166d8db8ad 100644
--- a/indra/llui/llfloater.h
+++ b/indra/llui/llfloater.h
@@ -301,6 +301,7 @@ friend class LLMultiFloater;
 	const LLRect&	getExpandedRect() const { return mExpandedRect; }
 
 	void			setAutoFocus(BOOL focus) { mAutoFocus = focus; } // whether to automatically take focus when opened
+	BOOL			getAutoFocus() const { return mAutoFocus; }
 	LLDragHandle*	getDragHandle() const { return mDragHandle; }
 
 	void			destroy() { die(); } // Don't call this directly.  You probably want to call closeFloater()
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index b7d4db853eb..db6b2041f8e 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -1467,6 +1467,7 @@ LLCallDialog::LLCallDialog(const LLSD& payload)
 	  mPayload(payload),
 	  mLifetime(DEFAULT_LIFETIME)
 {
+	setAutoFocus(FALSE);
 }
 
 void LLCallDialog::getAllowedRect(LLRect& rect)
@@ -1794,7 +1795,7 @@ BOOL LLIncomingCallDialog::postBuild()
 	childSetAction("Accept", onAccept, this);
 	childSetAction("Reject", onReject, this);
 	childSetAction("Start IM", onStartIM, this);
-	childSetFocus("Accept");
+	setDefaultBtn("Accept");
 
 	std::string notify_box_type = mPayload["notify_box_type"].asString();
 	if(notify_box_type != "VoiceInviteGroup" && notify_box_type != "VoiceInviteAdHoc")
@@ -2424,7 +2425,7 @@ void LLIMMgr::inviteToSession(
 		}
 		else
 		{
-			LLFloaterReg::showInstance("incoming_call", payload, TRUE);
+			LLFloaterReg::showInstance("incoming_call", payload, FALSE);
 		}
 		mPendingInvitations[session_id.asString()] = LLSD();
 	}
@@ -2437,7 +2438,7 @@ void LLIMMgr::onInviteNameLookup(LLSD payload, const LLUUID& id, const std::stri
 
 	std::string notify_box_type = payload["notify_box_type"].asString();
 
-	LLFloaterReg::showInstance("incoming_call", payload, TRUE);
+	LLFloaterReg::showInstance("incoming_call", payload, FALSE);
 }
 
 //*TODO disconnects all sessions
-- 
GitLab


From 52d80701bbf38921e68f0df8d989cc9f31867a41 Mon Sep 17 00:00:00 2001
From: Lynx Linden <lynx@lindenlab.com>
Date: Mon, 1 Feb 2010 18:11:02 +0000
Subject: [PATCH 400/521] EXT-4813: Added a "Loading..." indicator to the Help
 Browser.

This appears at the bottom of the Help Browser floater while a page is
loading. I also cleaned up the XUI file a little and removed some
unused strings.
---
 indra/newview/llfloaterhelpbrowser.cpp        | 19 ++++++++----
 .../default/xui/en/floater_help_browser.xml   | 29 ++++++++++++-------
 2 files changed, 32 insertions(+), 16 deletions(-)

diff --git a/indra/newview/llfloaterhelpbrowser.cpp b/indra/newview/llfloaterhelpbrowser.cpp
index 2e0ae3265ef..f3c6b286ab3 100644
--- a/indra/newview/llfloaterhelpbrowser.cpp
+++ b/indra/newview/llfloaterhelpbrowser.cpp
@@ -85,13 +85,22 @@ void LLFloaterHelpBrowser::onClose(bool app_quitting)
 
 void LLFloaterHelpBrowser::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event)
 {
-	if(event == MEDIA_EVENT_LOCATION_CHANGED)
+	switch (event) 
 	{
+	case MEDIA_EVENT_LOCATION_CHANGED:
 		setCurrentURL(self->getLocation());
-	}
-	else if(event == MEDIA_EVENT_NAVIGATE_COMPLETE)
-	{
-		// nothing yet
+		break;
+
+	case MEDIA_EVENT_NAVIGATE_BEGIN:
+		childSetText("status_text", getString("loading_text"));
+		break;
+		
+	case MEDIA_EVENT_NAVIGATE_COMPLETE:
+		childSetText("status_text", getString("done_text"));
+		break;
+
+	default:
+		break;
 	}
 }
 
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 e83bc1555cb..be32e917e5a 100644
--- a/indra/newview/skins/default/xui/en/floater_help_browser.xml
+++ b/indra/newview/skins/default/xui/en/floater_help_browser.xml
@@ -4,8 +4,8 @@
  can_resize="true"
  height="480"
  layout="topleft"
- min_height="140"
- min_width="467"
+ min_height="150"
+ min_width="500"
  name="floater_help_browser"
  help_topic="floater_help_browser"
  save_rect="true"
@@ -13,37 +13,44 @@
  title="HELP BROWSER"
  width="620">
     <floater.string
-     name="home_page_url">
-        http://www.secondlife.com
+     name="loading_text">
+        Loading...
     </floater.string>
     <floater.string
-     name="support_page_url">
-        http://support.secondlife.com
+     name="done_text">
     </floater.string>
     <layout_stack
      bottom="480"
      follows="left|right|top|bottom"
      layout="topleft"
-     left="10"
+     left="5"
      name="stack1"
      top="20"
-     width="600">
+     width="610">
         <layout_panel
-         height="1"
          layout="topleft"
          left_delta="0"
-         name="external_controls"
          top_delta="0"
+         name="external_controls"
          user_resize="false"
          width="590">
             <web_browser
-             bottom="-4"
+             bottom="-11"
              follows="left|right|top|bottom"
              layout="topleft"
              left="0"
              name="browser"
              top="0"
+             height="500"
              width="590" />
+            <text
+             follows="bottom|left"
+             height="16"
+             layout="topleft"
+             left_delta="2"
+             name="status_text"
+             top_pad="5"
+             width="150" />
         </layout_panel>
     </layout_stack>
 </floater>
-- 
GitLab


From f0ee8af8ae832fc01aa5c79898efc72b822e40af Mon Sep 17 00:00:00 2001
From: Loren Shih <seraph@lindenlab.com>
Date: Mon, 1 Feb 2010 13:46:22 -0500
Subject: [PATCH 401/521] EXT-4816 : Fix coverty whine on break statement
 fallthrough

Can't fix the whine, but added a comment that the fallthrough is deliberate.
---
 indra/newview/llinventorybridge.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index e04d3ec5a01..e8a4899a0b5 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -4634,6 +4634,7 @@ void LLWearableBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 			{
 				case LLAssetType::AT_CLOTHING:
 					items.push_back(std::string("Take Off"));
+					// Fallthrough since clothing and bodypart share wear options
 				case LLAssetType::AT_BODYPART:
 					if (get_is_item_worn(item->getUUID()))
 					{
-- 
GitLab


From 6e7ead6f4f4b87e242c9fc888324092c40ea5043 Mon Sep 17 00:00:00 2001
From: "Nyx (Neal Orman)" <nyx@lindenlab.com>
Date: Mon, 1 Feb 2010 15:47:15 -0500
Subject: [PATCH 402/521] EXT-4075 BTEST-129 switching wearables makes you
 temporarily naked

When switching from one pair of pants to another we were temporarily using
an in-between state without pants as a valid rendering state. Removed a call
to removeWearable to keep your pants on until the update from COF swaps the old
pair of pants for the new. Lower body is redrawn only once lowest discard level
of new pants arrives.

Code reviewed by Bigpapi
---
 indra/newview/llappearancemgr.cpp | 1 -
 1 file changed, 1 deletion(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 8f4ce4498ef..5088c651222 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -1081,7 +1081,6 @@ void LLAppearanceManager::addCOFItemLink(const LLInventoryItem *item, bool do_up
 		// MULTI-WEARABLES: revisit if more than one per type is allowed.
 		else if (areMatchingWearables(vitem,inv_item))
 		{
-			gAgentWearables.removeWearable(inv_item->getWearableType(),true,0);
 			if (inv_item->getIsLinkType())
 			{
 				gInventory.purgeObject(inv_item->getUUID());
-- 
GitLab


From ec5ad98abe0dde6f314bcd8c67a193a672c53aca Mon Sep 17 00:00:00 2001
From: "Eric M. Tulla (BigPapi)" <tulla@lindenlab.com>
Date: Mon, 1 Feb 2010 15:47:16 -0500
Subject: [PATCH 403/521] EXT-4848 - Crash when trying to view chicklet(?). Bug
 in word wrap logic. Added a clamp to >= 0 for num pixels so we don't hit the
 assert. -Reviewed by Nyx

---
 indra/llui/lltextbase.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 978bd317e20..dfe3e9b61ed 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -2512,7 +2512,7 @@ S32	LLNormalTextSegment::getNumChars(S32 num_pixels, S32 segment_offset, S32 lin
 	LLUIImagePtr image = mStyle->getImage();
 	if( image.notNull())
 	{
-		num_pixels -= image->getWidth();
+		num_pixels = llmax(0, num_pixels - image->getWidth());
 	}
 
 	// search for newline and if found, truncate there
-- 
GitLab


From acc33dfe75f3667f6478bac00c2a634e2605f851 Mon Sep 17 00:00:00 2001
From: Kent Quirk <q@lindenlab.com>
Date: Mon, 1 Feb 2010 16:40:29 -0500
Subject: [PATCH 404/521] DEV-45525 - don't change the current directory before
 running the text editor

---
 indra/newview/llfloateruipreview.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp
index 645f8ef054e..c6e12476bd6 100644
--- a/indra/newview/llfloateruipreview.cpp
+++ b/indra/newview/llfloateruipreview.cpp
@@ -1091,7 +1091,9 @@ void LLFloaterUIPreview::onClickEditFloater()
 		char *args2 = new char[args.size() + 1];	// Windows requires that the second parameter to CreateProcessA be a writable (non-const) string...
 		strcpy(args2, args.c_str());
 
-		if(!CreateProcessA(exe_path.c_str(), args2, NULL, NULL, FALSE, 0, NULL, exe_dir.c_str(), &sinfo, &pinfo))
+		// we don't want the current directory to be the executable directory, since the file path is now relative. By using
+		// NULL for the current directory instead of exe_dir.c_str(), the path to the target file will work. 
+		if(!CreateProcessA(exe_path.c_str(), args2, NULL, NULL, FALSE, 0, NULL, NULL, &sinfo, &pinfo))
 		{
 			// DWORD dwErr = GetLastError();
 			std::string warning = "Creating editor process failed!";
-- 
GitLab


From ab2581f6e216f8164b91ba6f9c07eda9d4a50feb Mon Sep 17 00:00:00 2001
From: Lis Linden <lis@lindenlab.com>
Date: Mon, 1 Feb 2010 16:50:03 -0500
Subject: [PATCH 405/521] ext-3871 Non-standard icon and behavior of avatar
 voice volume mute

---
 .../xui/en/panel_preferences_sound.xml        | 28 +++++++++----------
 1 file changed, 14 insertions(+), 14 deletions(-)

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 d8e3f4ccfb4..02fac363698 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
@@ -34,8 +34,8 @@
      control_name="MuteAudio"
      follows="top|right"
      height="18"
-     image_selected="Parcel_VoiceNo_Dark"
-     image_unselected="Parcel_Voice_Dark"
+     image_selected="AudioMute_Off"
+     image_unselected="Audio_Off"
      is_toggle="true"
      layout="topleft"
      left_pad="16"
@@ -79,8 +79,8 @@
      disabled_control="MuteAudio"
      follows="top|right"
      height="18"
-     image_selected="Parcel_VoiceNo_Dark"
-     image_unselected="Parcel_Voice_Dark"
+     image_selected="AudioMute_Off"
+     image_unselected="Audio_Off"
      is_toggle="true"
      layout="topleft"
      left_pad="16"
@@ -114,8 +114,8 @@
      disabled_control="MuteAudio"
      follows="top|right"
      height="18"
-     image_selected="Parcel_VoiceNo_Dark"
-     image_unselected="Parcel_Voice_Dark"
+     image_selected="AudioMute_Off"
+     image_unselected="Audio_Off"
      is_toggle="true"
      layout="topleft"
      left_pad="16"
@@ -149,8 +149,8 @@
      disabled_control="MuteAudio"
      follows="top|right"
      height="18"
-     image_selected="Parcel_VoiceNo_Dark"
-     image_unselected="Parcel_Voice_Dark"
+     image_selected="AudioMute_Off"
+     image_unselected="Audio_Off"
      is_toggle="true"
      layout="topleft"
      left_pad="16"
@@ -184,8 +184,8 @@
      disabled_control="MuteAudio"
      follows="top|right"
      height="18"
-     image_selected="Parcel_VoiceNo_Dark"
-     image_unselected="Parcel_Voice_Dark"
+     image_selected="AudioMute_Off"
+     image_unselected="Audio_Off"
      is_toggle="true"
      layout="topleft"
      left_pad="16"
@@ -219,8 +219,8 @@
      disabled_control="MuteAudio"
      follows="top|right"
      height="18"
-     image_selected="Parcel_VoiceNo_Dark"
-     image_unselected="Parcel_Voice_Dark"
+     image_selected="AudioMute_Off"
+     image_unselected="Audio_Off"
      is_toggle="true"
      layout="topleft"
      left_pad="16"
@@ -270,8 +270,8 @@
      disabled_control="MuteAudio"
      follows="top|right"
      height="18"
-     image_selected="Parcel_VoiceNo_Dark"
-     image_unselected="Parcel_Voice_Dark"
+     image_selected="AudioMute_Off"
+     image_unselected="Audio_Off"
      is_toggle="true"
      layout="topleft"
      left_pad="16"
-- 
GitLab


From 8dbb2c6fd12bf86492ed1cf08e89fa064a23057b Mon Sep 17 00:00:00 2001
From: richard <none@none>
Date: Mon, 1 Feb 2010 13:50:15 -0800
Subject: [PATCH 406/521] removed redundant code

---
 indra/llui/lltextbase.cpp | 10 ----------
 1 file changed, 10 deletions(-)

diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 255a95c8eb0..0312802b44c 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -1017,16 +1017,6 @@ void LLTextBase::draw()
 void LLTextBase::setColor( const LLColor4& c )
 {
 	mFgColor = c;
-	//textsegments have own style property , 
-	//so we have to update it also to apply changes, EXT-4433
-	for(segment_set_t::iterator it = mSegments.begin(); it != mSegments.end(); it++)
-	{
-		LLTextSegment* segment = it->get(); 
-		if(segment)
-		{
-			segment->setColor(mFgColor);
-		}
-	}
 }
 
 //virtual 
-- 
GitLab


From 45579c59e9906fd32f5d6e06d550cc3e472201d8 Mon Sep 17 00:00:00 2001
From: Chuck Linden <chuck@lindenlab.com>
Date: Mon, 1 Feb 2010 17:44:15 -0500
Subject: [PATCH 407/521] Set the "Debug" menu to not be visible by default.
 https://jira.secondlife.com/browse/EXT-4828

---
 indra/newview/skins/default/xui/en/menu_login.xml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml
index bbe6892b278..ba741045944 100644
--- a/indra/newview/skins/default/xui/en/menu_login.xml
+++ b/indra/newview/skins/default/xui/en/menu_login.xml
@@ -60,6 +60,7 @@
         </menu_item_call>
     </menu>
     <menu
+      visible="false"
      create_jump_keys="true"
      label="Debug"
      name="Debug"
-- 
GitLab


From f44ee460c5d2c3531ea213b22e112bc74fe471d0 Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Mon, 1 Feb 2010 15:12:57 -0800
Subject: [PATCH 408/521] Fix regression where SLURL DND when logged in didn't
 work (line got dropped) Reviewed by callum

---
 indra/newview/llviewerwindow.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index b36cd5b9344..fdc6675db11 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -825,7 +825,8 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi
 					{
 						if (drop)
 						{
-						    LLURLSimString::setStringRaw( LLSLURL::stripProtocol( data ) );
+							LLURLDispatcher::dispatch( data, NULL, true );
+							LLURLSimString::setStringRaw( LLSLURL::stripProtocol( data ) );
 							LLPanelLogin::refreshLocation( true );
 							LLPanelLogin::updateLocationUI();
 						}
-- 
GitLab


From 51e3bdcb398068c0c304dced296d58762165a84f Mon Sep 17 00:00:00 2001
From: Lis Linden <lis@lindenlab.com>
Date: Mon, 1 Feb 2010 18:19:43 -0500
Subject: [PATCH 409/521] EXT-4599 Change all mentions of "in World" to
 "inworld"

---
 .../skins/default/xui/en/floater_preview_animation.xml        | 2 +-
 indra/newview/skins/default/xui/en/floater_preview_sound.xml  | 4 ++--
 indra/newview/skins/default/xui/en/menu_inventory.xml         | 2 +-
 indra/newview/skins/default/xui/en/sidepanel_task_info.xml    | 2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)

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 bbfb3623376..6dc073728b8 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_animation.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_animation.xml
@@ -38,7 +38,7 @@
      width="170" />
     <button
      height="20"
-     label="Play in World"
+     label="Play Inworld"
      label_selected="Stop"
      layout="topleft"
      left="10"
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 68a78d50170..f3be8c4131f 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_sound.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_sound.xml
@@ -38,8 +38,8 @@
     <button
      follows="left|top"
      height="22"
-     label="Play in World"
-     label_selected="Play in World"
+     label="Play Inworld"
+     label_selected="Play Inworld"
      layout="topleft"
      name="Sound play btn"
      sound_flags="0"
diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml
index 1e104671485..1993af67302 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory.xml
@@ -516,7 +516,7 @@
      layout="topleft" 
      name="Animation Separator" />
     <menu_item_call
-     label="Play in World"
+     label="Play Inworld"
      layout="topleft"
      name="Animation Play">
         <menu_item_call.on_click
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 74f97dca4ee..d2c9e56bc30 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
@@ -85,7 +85,7 @@
      left="45"
      name="where"
      text_color="LtGray_50"
-     value="(In World)"
+     value="(inworld)"
      width="150" />
 	<panel
          follows="all"
-- 
GitLab


From f119b1652d3fc72e3cbd19b3f95ac1ce1f87ed34 Mon Sep 17 00:00:00 2001
From: Chuck Linden <chuck@lindenlab.com>
Date: Mon, 1 Feb 2010 18:23:10 -0500
Subject: [PATCH 410/521] Added "Favorites Bar" label and tooltip.
 http://jira.secondlife.com/browse/EXT-4834

---
 .../default/xui/en/panel_navigation_bar.xml      | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

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 baa6c2e51fa..5fe5db892a9 100644
--- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
@@ -139,11 +139,12 @@
      font="SansSerifSmall"
      height="15"
      layout="topleft"
-     left="0"
+     left="102"
      name="favorite"
      image_drag_indication="Accordion_ArrowOpened_Off"
      bottom="55"
-     width="590">
+     tool_tip="Drag Landmarks here for quick access to your favorite places in Second Life!"
+               width="590">
     <chevron_button name=">>"
                      image_unselected="TabIcon_Close_Off"
                      image_selected="TabIcon_Close_Off"
@@ -154,4 +155,15 @@
 		     top="15"
                      height="15"/>
   </favorites_bar>
+     <text
+               follows="left|top"
+         font.style="BOLD"
+               height="15"
+               layout="topleft"
+               left="10"
+               top_pad="-12"
+               name="favorites_bar_label"
+               text_color="LtGray"
+               tool_tip="Drag Landmarks here for quick access to your favorite places in Second Life!"
+               width="102">Favorites Bar</text>
 </panel>
-- 
GitLab


From 142b744062c504d577c1952c6c12ee0f4fd4598f Mon Sep 17 00:00:00 2001
From: Lis Linden <lis@lindenlab.com>
Date: Mon, 1 Feb 2010 18:23:55 -0500
Subject: [PATCH 411/521] ext-4435 Preferences: "Busy mode response" is
 brighter than other labels

---
 indra/newview/skins/default/xui/en/panel_preferences_general.xml | 1 -
 1 file changed, 1 deletion(-)

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 22c75a595ed..b496f954225 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
@@ -323,7 +323,6 @@
      follows="left|top"
      height="13"
      layout="topleft"
-     text_color="white"
      left="30"
      mouse_opaque="false"
      name="text_box3"
-- 
GitLab


From 62e41595a4a4aa2cdaf58b88ca213226c54cd251 Mon Sep 17 00:00:00 2001
From: Chuck Linden <chuck@lindenlab.com>
Date: Mon, 1 Feb 2010 18:43:26 -0500
Subject: [PATCH 412/521] Disabled magnifying glass icon from filter editors.
 https://jira.secondlife.com/browse/EXT-4839

---
 indra/newview/skins/default/xui/en/widgets/filter_editor.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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 48baa2812d7..1228f6be3d3 100644
--- a/indra/newview/skins/default/xui/en/widgets/filter_editor.xml
+++ b/indra/newview/skins/default/xui/en/widgets/filter_editor.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <filter_editor
   clear_button_visible="true"
-  search_button_visible="true"
+  search_button_visible="false"
   text_pad_left="7"
   select_on_focus="true"
   text_tentative_color="TextFgTentativeColor"
-- 
GitLab


From e76dd651d4be87c9afb37b2d5d7c9931209fd712 Mon Sep 17 00:00:00 2001
From: "Eric M. Tulla (BigPapi)" <tulla@lindenlab.com>
Date: Mon, 1 Feb 2010 18:43:26 -0500
Subject: [PATCH 413/521] EXT-4613: No longer get to throttle for quite folders
 (COF, trash, outfits, etc) -Reviewed by nyx

---
 indra/newview/llviewermessage.cpp | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 92408336328..b0952dd698f 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -870,8 +870,7 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f
 		////////////////////////////////////////////////////////////////////////////////
 		// Don't highlight if it's in certain "quiet" folders which don't need UI 
 		// notification (e.g. trash, cof, lost-and-found).
-		const BOOL user_is_away = gAwayTimer.getStarted();
-		if(!user_is_away)
+		if(!gAgent.getAFK())
 		{
 			const LLViewerInventoryCategory *parent = gInventory.getFirstNondefaultParent(item_id);
 			if (parent)
-- 
GitLab


From 9430b8de6585e0c0aa980fc87cf73fdbc8a8c5d2 Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Mon, 1 Feb 2010 16:29:52 -0800
Subject: [PATCH 414/521] dos2unix these files

---
 indra/cmake/DragDrop.cmake         |   46 +-
 indra/llwindow/lldragdropwin32.cpp |  740 +--
 indra/llwindow/lldragdropwin32.h   |  160 +-
 indra/llwindow/llwindowwin32.cpp   | 7386 ++++++++++++++--------------
 4 files changed, 4166 insertions(+), 4166 deletions(-)

diff --git a/indra/cmake/DragDrop.cmake b/indra/cmake/DragDrop.cmake
index e56264f1875..c0424396e5f 100644
--- a/indra/cmake/DragDrop.cmake
+++ b/indra/cmake/DragDrop.cmake
@@ -1,23 +1,23 @@
-# -*- cmake -*-
-
-if (VIEWER)
-
-  set(OS_DRAG_DROP ON CACHE BOOL "Build the viewer with OS level drag and drop turned on or off")
-
-  if (OS_DRAG_DROP)
-
-    if (WINDOWS)
-      add_definitions(-DLL_OS_DRAGDROP_ENABLED=1)
-    endif (WINDOWS)
-
-    if (DARWIN)
-      add_definitions(-DLL_OS_DRAGDROP_ENABLED=1)
-    endif (DARWIN)
-
-    if (LINUX)
-      add_definitions(-DLL_OS_DRAGDROP_ENABLED=0)
-    endif (LINUX)
-
-  endif (OS_DRAG_DROP)
-
-endif (VIEWER)
+# -*- cmake -*-
+
+if (VIEWER)
+
+  set(OS_DRAG_DROP ON CACHE BOOL "Build the viewer with OS level drag and drop turned on or off")
+
+  if (OS_DRAG_DROP)
+
+    if (WINDOWS)
+      add_definitions(-DLL_OS_DRAGDROP_ENABLED=1)
+    endif (WINDOWS)
+
+    if (DARWIN)
+      add_definitions(-DLL_OS_DRAGDROP_ENABLED=1)
+    endif (DARWIN)
+
+    if (LINUX)
+      add_definitions(-DLL_OS_DRAGDROP_ENABLED=0)
+    endif (LINUX)
+
+  endif (OS_DRAG_DROP)
+
+endif (VIEWER)
diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp
index 1e10626e8a0..9b80fe0a84c 100644
--- a/indra/llwindow/lldragdropwin32.cpp
+++ b/indra/llwindow/lldragdropwin32.cpp
@@ -1,370 +1,370 @@
-/**
- * @file lldragdrop32.cpp
- * @brief Handler for Windows specific drag and drop (OS to client) code
- *
- * $LicenseInfo:firstyear=2001&license=viewergpl$
- *
- * Copyright (c) 2001-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab.  Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#if LL_WINDOWS
-
-#if LL_OS_DRAGDROP_ENABLED
-
-#include "linden_common.h"
-
-#include "llwindowwin32.h"
-#include "llkeyboardwin32.h"
-#include "llwindowcallbacks.h"
-#include "lldragdropwin32.h"
-
-class LLDragDropWin32Target: 
-	public IDropTarget
-{
-	public:
-		////////////////////////////////////////////////////////////////////////////////
-		//
-		LLDragDropWin32Target( HWND  hWnd ) :
-			mRefCount( 1 ),
-			mAppWindowHandle( hWnd ),
-			mAllowDrop( false)
-		{
-		};
-
-		virtual ~LLDragDropWin32Target()
-		{
-		};
-
-		////////////////////////////////////////////////////////////////////////////////
-		//
-		ULONG __stdcall AddRef( void )
-		{
-			return InterlockedIncrement( &mRefCount );
-		};
-
-		////////////////////////////////////////////////////////////////////////////////
-		//
-		ULONG __stdcall Release( void )
-		{
-			LONG count = InterlockedDecrement( &mRefCount );
-				
-			if ( count == 0 )
-			{
-				delete this;
-				return 0;
-			}
-			else
-			{
-				return count;
-			};
-		};
-
-		////////////////////////////////////////////////////////////////////////////////
-		//
-		HRESULT __stdcall QueryInterface( REFIID iid, void** ppvObject )
-		{
-			if ( iid == IID_IUnknown || iid == IID_IDropTarget )
-			{
-				AddRef();
-				*ppvObject = this;
-				return S_OK;
-			}
-			else
-			{
-				*ppvObject = 0;
-				return E_NOINTERFACE;
-			};
-		};
-
-		////////////////////////////////////////////////////////////////////////////////
-		//
-		HRESULT __stdcall DragEnter( IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect )
-		{
-			FORMATETC fmtetc = { CF_TEXT, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL };
-
-			// support CF_TEXT using a HGLOBAL?
-			if ( S_OK == pDataObject->QueryGetData( &fmtetc ) )
-			{
-				mAllowDrop = true;
-				mDropUrl = std::string();
-				mIsSlurl = false;
-
-				STGMEDIUM stgmed;
-				if( S_OK == pDataObject->GetData( &fmtetc, &stgmed ) )
-				{
-					PVOID data = GlobalLock( stgmed.hGlobal );
-					mDropUrl = std::string( (char*)data );
-					// XXX MAJOR MAJOR HACK!
-					LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA);
-					if (NULL != window_imp)
-					{
-						LLCoordGL gl_coord( 0, 0 );
-
-						POINT pt2;
-						pt2.x = pt.x;
-						pt2.y = pt.y;
-						ScreenToClient( mAppWindowHandle, &pt2 );
-
-						LLCoordWindow cursor_coord_window( pt2.x, pt2.y );
-						window_imp->convertCoords(cursor_coord_window, &gl_coord);
-						MASK mask = gKeyboard->currentMask(TRUE);
-
-						LLWindowCallbacks::DragNDropResult result = window_imp->completeDragNDropRequest( gl_coord, mask, 
-							LLWindowCallbacks::DNDA_START_TRACKING, mDropUrl );
-
-						switch (result)
-						{
-						case LLWindowCallbacks::DND_COPY:
-							*pdwEffect = DROPEFFECT_COPY;
-							break;
-						case LLWindowCallbacks::DND_LINK:
-							*pdwEffect = DROPEFFECT_LINK;
-							break;
-						case LLWindowCallbacks::DND_MOVE:
-							*pdwEffect = DROPEFFECT_MOVE;
-							break;
-						case LLWindowCallbacks::DND_NONE:
-						default:
-							*pdwEffect = DROPEFFECT_NONE;
-							break;
-						}
-					};
-
-					GlobalUnlock( stgmed.hGlobal );
-					ReleaseStgMedium( &stgmed );
-				};
-				SetFocus( mAppWindowHandle );
-			}
-			else
-			{
-				mAllowDrop = false;
-				*pdwEffect = DROPEFFECT_NONE;
-			};
-
-			return S_OK;
-		};
-
-		////////////////////////////////////////////////////////////////////////////////
-		//
-		HRESULT __stdcall DragOver( DWORD grfKeyState, POINTL pt, DWORD* pdwEffect )
-		{
-			if ( mAllowDrop )
-			{
-				// XXX MAJOR MAJOR HACK!
-				LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA);
-				if (NULL != window_imp)
-				{
-					LLCoordGL gl_coord( 0, 0 );
-
-					POINT pt2;
-					pt2.x = pt.x;
-					pt2.y = pt.y;
-					ScreenToClient( mAppWindowHandle, &pt2 );
-
-					LLCoordWindow cursor_coord_window( pt2.x, pt2.y );
-					window_imp->convertCoords(cursor_coord_window, &gl_coord);
-					MASK mask = gKeyboard->currentMask(TRUE);
-
-					LLWindowCallbacks::DragNDropResult result = window_imp->completeDragNDropRequest( gl_coord, mask, 
-						LLWindowCallbacks::DNDA_TRACK, mDropUrl );
-					
-					switch (result)
-					{
-					case LLWindowCallbacks::DND_COPY:
-						*pdwEffect = DROPEFFECT_COPY;
-						break;
-					case LLWindowCallbacks::DND_LINK:
-						*pdwEffect = DROPEFFECT_LINK;
-						break;
-					case LLWindowCallbacks::DND_MOVE:
-						*pdwEffect = DROPEFFECT_MOVE;
-						break;
-					case LLWindowCallbacks::DND_NONE:
-					default:
-						*pdwEffect = DROPEFFECT_NONE;
-						break;
-					}
-				};
-			}
-			else
-			{
-				*pdwEffect = DROPEFFECT_NONE;
-			};
-
-			return S_OK;
-		};
-
-		////////////////////////////////////////////////////////////////////////////////
-		//
-		HRESULT __stdcall DragLeave( void )
-		{
-			// XXX MAJOR MAJOR HACK!
-			LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA);
-			if (NULL != window_imp)
-			{
-				LLCoordGL gl_coord( 0, 0 );
-				MASK mask = gKeyboard->currentMask(TRUE);
-				window_imp->completeDragNDropRequest( gl_coord, mask, LLWindowCallbacks::DNDA_STOP_TRACKING, mDropUrl );
-			};
-			return S_OK;
-		};
-
-		////////////////////////////////////////////////////////////////////////////////
-		//
-		HRESULT __stdcall Drop( IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect )
-		{
-			if ( mAllowDrop )
-			{
-				// window impl stored in Window data (neat!)
-				LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong( mAppWindowHandle, GWL_USERDATA );
-				if ( NULL != window_imp )
-				{
-					LLCoordGL gl_coord( 0, 0 );
-
-					POINT pt_client;
-					pt_client.x = pt.x;
-					pt_client.y = pt.y;
-					ScreenToClient( mAppWindowHandle, &pt_client );
-
-					LLCoordWindow cursor_coord_window( pt_client.x, pt_client.y );
-					window_imp->convertCoords(cursor_coord_window, &gl_coord);
-					llinfos << "### (Drop) URL is: " << mDropUrl << llendl;
-					llinfos << "###        raw coords are: " << pt.x << " x " << pt.y << llendl;
-					llinfos << "###	    client coords are: " << pt_client.x << " x " << pt_client.y << llendl;
-					llinfos << "###         GL coords are: " << gl_coord.mX << " x " << gl_coord.mY << llendl;
-					llinfos << llendl;
-
-					// no keyboard modifier option yet but we could one day
-					MASK mask = gKeyboard->currentMask( TRUE );
-
-					// actually do the drop
-					LLWindowCallbacks::DragNDropResult result = window_imp->completeDragNDropRequest( gl_coord, mask, 
-						LLWindowCallbacks::DNDA_DROPPED, mDropUrl );
-
-					switch (result)
-					{
-					case LLWindowCallbacks::DND_COPY:
-						*pdwEffect = DROPEFFECT_COPY;
-						break;
-					case LLWindowCallbacks::DND_LINK:
-						*pdwEffect = DROPEFFECT_LINK;
-						break;
-					case LLWindowCallbacks::DND_MOVE:
-						*pdwEffect = DROPEFFECT_MOVE;
-						break;
-					case LLWindowCallbacks::DND_NONE:
-					default:
-						*pdwEffect = DROPEFFECT_NONE;
-						break;
-					}
-				};
-			}
-			else
-			{
-				*pdwEffect = DROPEFFECT_NONE;
-			};
-
-			return S_OK;
-		};
-
-	////////////////////////////////////////////////////////////////////////////////
-	//
-	private:
-		LONG mRefCount;
-		HWND mAppWindowHandle;
-		bool mAllowDrop;
-		std::string mDropUrl;
-		bool mIsSlurl;
-		friend class LLWindowWin32;
-};
-
-////////////////////////////////////////////////////////////////////////////////
-//
-LLDragDropWin32::LLDragDropWin32() :
-	mDropTarget( NULL ),
-	mDropWindowHandle( NULL )
-
-{
-}
-
-////////////////////////////////////////////////////////////////////////////////
-//
-LLDragDropWin32::~LLDragDropWin32()
-{
-}
-
-////////////////////////////////////////////////////////////////////////////////
-//
-bool LLDragDropWin32::init( HWND hWnd )
-{
-	if ( NOERROR != OleInitialize( NULL ) )
-		return FALSE; 
-
-	mDropTarget = new LLDragDropWin32Target( hWnd );
-	if ( mDropTarget )
-	{
-		HRESULT result = CoLockObjectExternal( mDropTarget, TRUE, FALSE );
-		if ( S_OK == result )
-		{
-			result = RegisterDragDrop( hWnd, mDropTarget );
-			if ( S_OK != result )
-			{
-				// RegisterDragDrop failed
-				return false;
-			};
-
-			// all ok
-			mDropWindowHandle = hWnd;
-		}
-		else
-		{
-			// Unable to lock OLE object
-			return false;
-		};
-	};
-
-	// success
-	return true;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-//
-void LLDragDropWin32::reset()
-{
-	if ( mDropTarget )
-	{
-		RevokeDragDrop( mDropWindowHandle );
-		CoLockObjectExternal( mDropTarget, FALSE, TRUE );
-		mDropTarget->Release();  
-	};
-	
-	OleUninitialize();
-}
-
-#endif // LL_OS_DRAGDROP_ENABLED
-
-#endif // LL_WINDOWS
-
+/**
+ * @file lldragdrop32.cpp
+ * @brief Handler for Windows specific drag and drop (OS to client) code
+ *
+ * $LicenseInfo:firstyear=2001&license=viewergpl$
+ *
+ * Copyright (c) 2001-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#if LL_WINDOWS
+
+#if LL_OS_DRAGDROP_ENABLED
+
+#include "linden_common.h"
+
+#include "llwindowwin32.h"
+#include "llkeyboardwin32.h"
+#include "llwindowcallbacks.h"
+#include "lldragdropwin32.h"
+
+class LLDragDropWin32Target: 
+	public IDropTarget
+{
+	public:
+		////////////////////////////////////////////////////////////////////////////////
+		//
+		LLDragDropWin32Target( HWND  hWnd ) :
+			mRefCount( 1 ),
+			mAppWindowHandle( hWnd ),
+			mAllowDrop( false)
+		{
+		};
+
+		virtual ~LLDragDropWin32Target()
+		{
+		};
+
+		////////////////////////////////////////////////////////////////////////////////
+		//
+		ULONG __stdcall AddRef( void )
+		{
+			return InterlockedIncrement( &mRefCount );
+		};
+
+		////////////////////////////////////////////////////////////////////////////////
+		//
+		ULONG __stdcall Release( void )
+		{
+			LONG count = InterlockedDecrement( &mRefCount );
+				
+			if ( count == 0 )
+			{
+				delete this;
+				return 0;
+			}
+			else
+			{
+				return count;
+			};
+		};
+
+		////////////////////////////////////////////////////////////////////////////////
+		//
+		HRESULT __stdcall QueryInterface( REFIID iid, void** ppvObject )
+		{
+			if ( iid == IID_IUnknown || iid == IID_IDropTarget )
+			{
+				AddRef();
+				*ppvObject = this;
+				return S_OK;
+			}
+			else
+			{
+				*ppvObject = 0;
+				return E_NOINTERFACE;
+			};
+		};
+
+		////////////////////////////////////////////////////////////////////////////////
+		//
+		HRESULT __stdcall DragEnter( IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect )
+		{
+			FORMATETC fmtetc = { CF_TEXT, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL };
+
+			// support CF_TEXT using a HGLOBAL?
+			if ( S_OK == pDataObject->QueryGetData( &fmtetc ) )
+			{
+				mAllowDrop = true;
+				mDropUrl = std::string();
+				mIsSlurl = false;
+
+				STGMEDIUM stgmed;
+				if( S_OK == pDataObject->GetData( &fmtetc, &stgmed ) )
+				{
+					PVOID data = GlobalLock( stgmed.hGlobal );
+					mDropUrl = std::string( (char*)data );
+					// XXX MAJOR MAJOR HACK!
+					LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA);
+					if (NULL != window_imp)
+					{
+						LLCoordGL gl_coord( 0, 0 );
+
+						POINT pt2;
+						pt2.x = pt.x;
+						pt2.y = pt.y;
+						ScreenToClient( mAppWindowHandle, &pt2 );
+
+						LLCoordWindow cursor_coord_window( pt2.x, pt2.y );
+						window_imp->convertCoords(cursor_coord_window, &gl_coord);
+						MASK mask = gKeyboard->currentMask(TRUE);
+
+						LLWindowCallbacks::DragNDropResult result = window_imp->completeDragNDropRequest( gl_coord, mask, 
+							LLWindowCallbacks::DNDA_START_TRACKING, mDropUrl );
+
+						switch (result)
+						{
+						case LLWindowCallbacks::DND_COPY:
+							*pdwEffect = DROPEFFECT_COPY;
+							break;
+						case LLWindowCallbacks::DND_LINK:
+							*pdwEffect = DROPEFFECT_LINK;
+							break;
+						case LLWindowCallbacks::DND_MOVE:
+							*pdwEffect = DROPEFFECT_MOVE;
+							break;
+						case LLWindowCallbacks::DND_NONE:
+						default:
+							*pdwEffect = DROPEFFECT_NONE;
+							break;
+						}
+					};
+
+					GlobalUnlock( stgmed.hGlobal );
+					ReleaseStgMedium( &stgmed );
+				};
+				SetFocus( mAppWindowHandle );
+			}
+			else
+			{
+				mAllowDrop = false;
+				*pdwEffect = DROPEFFECT_NONE;
+			};
+
+			return S_OK;
+		};
+
+		////////////////////////////////////////////////////////////////////////////////
+		//
+		HRESULT __stdcall DragOver( DWORD grfKeyState, POINTL pt, DWORD* pdwEffect )
+		{
+			if ( mAllowDrop )
+			{
+				// XXX MAJOR MAJOR HACK!
+				LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA);
+				if (NULL != window_imp)
+				{
+					LLCoordGL gl_coord( 0, 0 );
+
+					POINT pt2;
+					pt2.x = pt.x;
+					pt2.y = pt.y;
+					ScreenToClient( mAppWindowHandle, &pt2 );
+
+					LLCoordWindow cursor_coord_window( pt2.x, pt2.y );
+					window_imp->convertCoords(cursor_coord_window, &gl_coord);
+					MASK mask = gKeyboard->currentMask(TRUE);
+
+					LLWindowCallbacks::DragNDropResult result = window_imp->completeDragNDropRequest( gl_coord, mask, 
+						LLWindowCallbacks::DNDA_TRACK, mDropUrl );
+					
+					switch (result)
+					{
+					case LLWindowCallbacks::DND_COPY:
+						*pdwEffect = DROPEFFECT_COPY;
+						break;
+					case LLWindowCallbacks::DND_LINK:
+						*pdwEffect = DROPEFFECT_LINK;
+						break;
+					case LLWindowCallbacks::DND_MOVE:
+						*pdwEffect = DROPEFFECT_MOVE;
+						break;
+					case LLWindowCallbacks::DND_NONE:
+					default:
+						*pdwEffect = DROPEFFECT_NONE;
+						break;
+					}
+				};
+			}
+			else
+			{
+				*pdwEffect = DROPEFFECT_NONE;
+			};
+
+			return S_OK;
+		};
+
+		////////////////////////////////////////////////////////////////////////////////
+		//
+		HRESULT __stdcall DragLeave( void )
+		{
+			// XXX MAJOR MAJOR HACK!
+			LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA);
+			if (NULL != window_imp)
+			{
+				LLCoordGL gl_coord( 0, 0 );
+				MASK mask = gKeyboard->currentMask(TRUE);
+				window_imp->completeDragNDropRequest( gl_coord, mask, LLWindowCallbacks::DNDA_STOP_TRACKING, mDropUrl );
+			};
+			return S_OK;
+		};
+
+		////////////////////////////////////////////////////////////////////////////////
+		//
+		HRESULT __stdcall Drop( IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect )
+		{
+			if ( mAllowDrop )
+			{
+				// window impl stored in Window data (neat!)
+				LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong( mAppWindowHandle, GWL_USERDATA );
+				if ( NULL != window_imp )
+				{
+					LLCoordGL gl_coord( 0, 0 );
+
+					POINT pt_client;
+					pt_client.x = pt.x;
+					pt_client.y = pt.y;
+					ScreenToClient( mAppWindowHandle, &pt_client );
+
+					LLCoordWindow cursor_coord_window( pt_client.x, pt_client.y );
+					window_imp->convertCoords(cursor_coord_window, &gl_coord);
+					llinfos << "### (Drop) URL is: " << mDropUrl << llendl;
+					llinfos << "###        raw coords are: " << pt.x << " x " << pt.y << llendl;
+					llinfos << "###	    client coords are: " << pt_client.x << " x " << pt_client.y << llendl;
+					llinfos << "###         GL coords are: " << gl_coord.mX << " x " << gl_coord.mY << llendl;
+					llinfos << llendl;
+
+					// no keyboard modifier option yet but we could one day
+					MASK mask = gKeyboard->currentMask( TRUE );
+
+					// actually do the drop
+					LLWindowCallbacks::DragNDropResult result = window_imp->completeDragNDropRequest( gl_coord, mask, 
+						LLWindowCallbacks::DNDA_DROPPED, mDropUrl );
+
+					switch (result)
+					{
+					case LLWindowCallbacks::DND_COPY:
+						*pdwEffect = DROPEFFECT_COPY;
+						break;
+					case LLWindowCallbacks::DND_LINK:
+						*pdwEffect = DROPEFFECT_LINK;
+						break;
+					case LLWindowCallbacks::DND_MOVE:
+						*pdwEffect = DROPEFFECT_MOVE;
+						break;
+					case LLWindowCallbacks::DND_NONE:
+					default:
+						*pdwEffect = DROPEFFECT_NONE;
+						break;
+					}
+				};
+			}
+			else
+			{
+				*pdwEffect = DROPEFFECT_NONE;
+			};
+
+			return S_OK;
+		};
+
+	////////////////////////////////////////////////////////////////////////////////
+	//
+	private:
+		LONG mRefCount;
+		HWND mAppWindowHandle;
+		bool mAllowDrop;
+		std::string mDropUrl;
+		bool mIsSlurl;
+		friend class LLWindowWin32;
+};
+
+////////////////////////////////////////////////////////////////////////////////
+//
+LLDragDropWin32::LLDragDropWin32() :
+	mDropTarget( NULL ),
+	mDropWindowHandle( NULL )
+
+{
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+LLDragDropWin32::~LLDragDropWin32()
+{
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+bool LLDragDropWin32::init( HWND hWnd )
+{
+	if ( NOERROR != OleInitialize( NULL ) )
+		return FALSE; 
+
+	mDropTarget = new LLDragDropWin32Target( hWnd );
+	if ( mDropTarget )
+	{
+		HRESULT result = CoLockObjectExternal( mDropTarget, TRUE, FALSE );
+		if ( S_OK == result )
+		{
+			result = RegisterDragDrop( hWnd, mDropTarget );
+			if ( S_OK != result )
+			{
+				// RegisterDragDrop failed
+				return false;
+			};
+
+			// all ok
+			mDropWindowHandle = hWnd;
+		}
+		else
+		{
+			// Unable to lock OLE object
+			return false;
+		};
+	};
+
+	// success
+	return true;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+void LLDragDropWin32::reset()
+{
+	if ( mDropTarget )
+	{
+		RevokeDragDrop( mDropWindowHandle );
+		CoLockObjectExternal( mDropTarget, FALSE, TRUE );
+		mDropTarget->Release();  
+	};
+	
+	OleUninitialize();
+}
+
+#endif // LL_OS_DRAGDROP_ENABLED
+
+#endif // LL_WINDOWS
+
diff --git a/indra/llwindow/lldragdropwin32.h b/indra/llwindow/lldragdropwin32.h
index 26c8e4aeff5..9686626d7c2 100644
--- a/indra/llwindow/lldragdropwin32.h
+++ b/indra/llwindow/lldragdropwin32.h
@@ -1,80 +1,80 @@
-/**
- * @file lldragdrop32.cpp
- * @brief Handler for Windows specific drag and drop (OS to client) code
- *
- * $LicenseInfo:firstyear=2004&license=viewergpl$
- *
- * Copyright (c) 2004-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab.  Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#if LL_WINDOWS
-
-#if LL_OS_DRAGDROP_ENABLED
-
-#ifndef LL_LLDRAGDROP32_H
-#define LL_LLDRAGDROP32_H
-
-#include <windows.h>
-#include <ole2.h>
-
-class LLDragDropWin32
-{
-	public:
-		LLDragDropWin32();
-		~LLDragDropWin32();
-
-		bool init( HWND hWnd );
-		void reset();
-
-	private:
-		IDropTarget* mDropTarget;
-		HWND mDropWindowHandle;
-};
-#endif // LL_LLDRAGDROP32_H
-
-#else // LL_OS_DRAGDROP_ENABLED
-
-#ifndef LL_LLDRAGDROP32_H
-#define LL_LLDRAGDROP32_H
-
-#include <windows.h>
-#include <ole2.h>
-
-// imposter class that does nothing 
-class LLDragDropWin32
-{
-	public:
-		LLDragDropWin32() {};
-		~LLDragDropWin32() {};
-
-		bool init( HWND hWnd ) { return false; };
-		void reset() { };
-};
-#endif // LL_LLDRAGDROP32_H
-
-#endif // LL_OS_DRAGDROP_ENABLED
-
-#endif // LL_WINDOWS
+/**
+ * @file lldragdrop32.cpp
+ * @brief Handler for Windows specific drag and drop (OS to client) code
+ *
+ * $LicenseInfo:firstyear=2004&license=viewergpl$
+ *
+ * Copyright (c) 2004-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#if LL_WINDOWS
+
+#if LL_OS_DRAGDROP_ENABLED
+
+#ifndef LL_LLDRAGDROP32_H
+#define LL_LLDRAGDROP32_H
+
+#include <windows.h>
+#include <ole2.h>
+
+class LLDragDropWin32
+{
+	public:
+		LLDragDropWin32();
+		~LLDragDropWin32();
+
+		bool init( HWND hWnd );
+		void reset();
+
+	private:
+		IDropTarget* mDropTarget;
+		HWND mDropWindowHandle;
+};
+#endif // LL_LLDRAGDROP32_H
+
+#else // LL_OS_DRAGDROP_ENABLED
+
+#ifndef LL_LLDRAGDROP32_H
+#define LL_LLDRAGDROP32_H
+
+#include <windows.h>
+#include <ole2.h>
+
+// imposter class that does nothing 
+class LLDragDropWin32
+{
+	public:
+		LLDragDropWin32() {};
+		~LLDragDropWin32() {};
+
+		bool init( HWND hWnd ) { return false; };
+		void reset() { };
+};
+#endif // LL_LLDRAGDROP32_H
+
+#endif // LL_OS_DRAGDROP_ENABLED
+
+#endif // LL_WINDOWS
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index ed39786b37d..57a4921d92c 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -1,3693 +1,3693 @@
-/** 
- * @file llwindowwin32.cpp
- * @brief Platform-dependent implementation of llwindow
- *
- * $LicenseInfo:firstyear=2001&license=viewergpl$
- * 
- * Copyright (c) 2001-2009, Linden Research, Inc.
- * 
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab.  Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- * 
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- * 
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- * 
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#include "linden_common.h"
-
-#if LL_WINDOWS && !LL_MESA_HEADLESS
-
-#include "llwindowwin32.h"
-
-// LLWindow library includes
-#include "llkeyboardwin32.h"
-#include "lldragdropwin32.h"
-#include "llpreeditor.h"
-#include "llwindowcallbacks.h"
-
-// Linden library includes
-#include "llerror.h"
-#include "llgl.h"
-#include "llstring.h"
-
-// System includes
-#include <commdlg.h>
-#include <WinUser.h>
-#include <mapi.h>
-#include <process.h>	// for _spawn
-#include <shellapi.h>
-#include <fstream>
-#include <Imm.h>
-
-// Require DirectInput version 8
-#define DIRECTINPUT_VERSION 0x0800
-
-#include <dinput.h>
-#include <Dbt.h.>
-
-#include "llmemtype.h"
-// culled from winuser.h
-#ifndef WM_MOUSEWHEEL /* Added to be compatible with later SDK's */
-const S32	WM_MOUSEWHEEL = 0x020A;
-#endif
-#ifndef WHEEL_DELTA /* Added to be compatible with later SDK's */
-const S32	WHEEL_DELTA = 120;     /* Value for rolling one detent */
-#endif
-const S32	MAX_MESSAGE_PER_UPDATE = 20;
-const S32	BITS_PER_PIXEL = 32;
-const S32	MAX_NUM_RESOLUTIONS = 32;
-const F32	ICON_FLASH_TIME = 0.5f;
-
-extern BOOL gDebugWindowProc;
-
-LPWSTR gIconResource = IDI_APPLICATION;
-
-LLW32MsgCallback gAsyncMsgCallback = NULL;
-
-//
-// LLWindowWin32
-//
-
-void show_window_creation_error(const std::string& title)
-{
-	LL_WARNS("Window") << title << LL_ENDL;
-}
-
-//static
-BOOL LLWindowWin32::sIsClassRegistered = FALSE;
-
-BOOL	LLWindowWin32::sLanguageTextInputAllowed = TRUE;
-BOOL	LLWindowWin32::sWinIMEOpened = FALSE;
-HKL		LLWindowWin32::sWinInputLocale = 0;
-DWORD	LLWindowWin32::sWinIMEConversionMode = IME_CMODE_NATIVE;
-DWORD	LLWindowWin32::sWinIMESentenceMode = IME_SMODE_AUTOMATIC;
-LLCoordWindow LLWindowWin32::sWinIMEWindowPosition(-1,-1);
-
-// The following class LLWinImm delegates Windows IMM APIs.
-// We need this because some language versions of Windows,
-// e.g., US version of Windows XP, doesn't install IMM32.DLL
-// as a default, and we can't link against imm32.lib statically.
-// I believe DLL loading of this type is best suited to do
-// in a static initialization of a class.  What I'm not sure is
-// whether it follows the Linden Conding Standard... 
-// See http://wiki.secondlife.com/wiki/Coding_standards#Static_Members
-
-class LLWinImm
-{
-public:
-	static bool		isAvailable() { return sTheInstance.mHImmDll != NULL; }
-
-public:
-	// Wrappers for IMM API.
-	static BOOL		isIME(HKL hkl);															
-	static HWND		getDefaultIMEWnd(HWND hwnd);
-	static HIMC		getContext(HWND hwnd);													
-	static BOOL		releaseContext(HWND hwnd, HIMC himc);
-	static BOOL		getOpenStatus(HIMC himc);												
-	static BOOL		setOpenStatus(HIMC himc, BOOL status);									
-	static BOOL		getConversionStatus(HIMC himc, LPDWORD conversion, LPDWORD sentence);	
-	static BOOL		setConversionStatus(HIMC himc, DWORD conversion, DWORD sentence);		
-	static BOOL		getCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form);					
-	static BOOL		setCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form);					
-	static LONG		getCompositionString(HIMC himc, DWORD index, LPVOID data, DWORD length);
-	static BOOL		setCompositionString(HIMC himc, DWORD index, LPVOID pComp, DWORD compLength, LPVOID pRead, DWORD readLength);
-	static BOOL		setCompositionFont(HIMC himc, LPLOGFONTW logfont);
-	static BOOL		setCandidateWindow(HIMC himc, LPCANDIDATEFORM candidate_form);
-	static BOOL		notifyIME(HIMC himc, DWORD action, DWORD index, DWORD value);
-
-private:
-	LLWinImm();
-	~LLWinImm();
-
-private:
-	// Pointers to IMM API.
-	BOOL	 	(WINAPI *mImmIsIME)(HKL);
-	HWND		(WINAPI *mImmGetDefaultIMEWnd)(HWND);
-	HIMC		(WINAPI *mImmGetContext)(HWND);
-	BOOL		(WINAPI *mImmReleaseContext)(HWND, HIMC);
-	BOOL		(WINAPI *mImmGetOpenStatus)(HIMC);
-	BOOL		(WINAPI *mImmSetOpenStatus)(HIMC, BOOL);
-	BOOL		(WINAPI *mImmGetConversionStatus)(HIMC, LPDWORD, LPDWORD);
-	BOOL		(WINAPI *mImmSetConversionStatus)(HIMC, DWORD, DWORD);
-	BOOL		(WINAPI *mImmGetCompostitionWindow)(HIMC, LPCOMPOSITIONFORM);
-	BOOL		(WINAPI *mImmSetCompostitionWindow)(HIMC, LPCOMPOSITIONFORM);
-	LONG		(WINAPI *mImmGetCompositionString)(HIMC, DWORD, LPVOID, DWORD);
-	BOOL		(WINAPI *mImmSetCompositionString)(HIMC, DWORD, LPVOID, DWORD, LPVOID, DWORD);
-	BOOL		(WINAPI *mImmSetCompositionFont)(HIMC, LPLOGFONTW);
-	BOOL		(WINAPI *mImmSetCandidateWindow)(HIMC, LPCANDIDATEFORM);
-	BOOL		(WINAPI *mImmNotifyIME)(HIMC, DWORD, DWORD, DWORD);
-
-private:
-	HMODULE		mHImmDll;
-	static LLWinImm sTheInstance;
-};
-
-LLWinImm LLWinImm::sTheInstance;
-
-LLWinImm::LLWinImm() : mHImmDll(NULL)
-{
-	// Check system metrics 
-	if ( !GetSystemMetrics( SM_DBCSENABLED ) )
-		return;
-	
-
-	mHImmDll = LoadLibraryA("Imm32");
-	if (mHImmDll != NULL)
-	{
-		mImmIsIME               = (BOOL (WINAPI *)(HKL))                    GetProcAddress(mHImmDll, "ImmIsIME");
-		mImmGetDefaultIMEWnd	= (HWND (WINAPI *)(HWND))					GetProcAddress(mHImmDll, "ImmGetDefaultIMEWnd");
-		mImmGetContext          = (HIMC (WINAPI *)(HWND))                   GetProcAddress(mHImmDll, "ImmGetContext");
-		mImmReleaseContext      = (BOOL (WINAPI *)(HWND, HIMC))             GetProcAddress(mHImmDll, "ImmReleaseContext");
-		mImmGetOpenStatus       = (BOOL (WINAPI *)(HIMC))                   GetProcAddress(mHImmDll, "ImmGetOpenStatus");
-		mImmSetOpenStatus       = (BOOL (WINAPI *)(HIMC, BOOL))             GetProcAddress(mHImmDll, "ImmSetOpenStatus");
-		mImmGetConversionStatus = (BOOL (WINAPI *)(HIMC, LPDWORD, LPDWORD)) GetProcAddress(mHImmDll, "ImmGetConversionStatus");
-		mImmSetConversionStatus = (BOOL (WINAPI *)(HIMC, DWORD, DWORD))     GetProcAddress(mHImmDll, "ImmSetConversionStatus");
-		mImmGetCompostitionWindow = (BOOL (WINAPI *)(HIMC, LPCOMPOSITIONFORM))   GetProcAddress(mHImmDll, "ImmGetCompositionWindow");
-		mImmSetCompostitionWindow = (BOOL (WINAPI *)(HIMC, LPCOMPOSITIONFORM))   GetProcAddress(mHImmDll, "ImmSetCompositionWindow");
-		mImmGetCompositionString= (LONG (WINAPI *)(HIMC, DWORD, LPVOID, DWORD))					GetProcAddress(mHImmDll, "ImmGetCompositionStringW");
-		mImmSetCompositionString= (BOOL (WINAPI *)(HIMC, DWORD, LPVOID, DWORD, LPVOID, DWORD))	GetProcAddress(mHImmDll, "ImmSetCompositionStringW");
-		mImmSetCompositionFont  = (BOOL (WINAPI *)(HIMC, LPLOGFONTW))		GetProcAddress(mHImmDll, "ImmSetCompositionFontW");
-		mImmSetCandidateWindow  = (BOOL (WINAPI *)(HIMC, LPCANDIDATEFORM))  GetProcAddress(mHImmDll, "ImmSetCandidateWindow");
-		mImmNotifyIME			= (BOOL (WINAPI *)(HIMC, DWORD, DWORD, DWORD))	GetProcAddress(mHImmDll, "ImmNotifyIME");
-
-		if (mImmIsIME == NULL ||
-			mImmGetDefaultIMEWnd == NULL ||
-			mImmGetContext == NULL ||
-			mImmReleaseContext == NULL ||
-			mImmGetOpenStatus == NULL ||
-			mImmSetOpenStatus == NULL ||
-			mImmGetConversionStatus == NULL ||
-			mImmSetConversionStatus == NULL ||
-			mImmGetCompostitionWindow == NULL ||
-			mImmSetCompostitionWindow == NULL ||
-			mImmGetCompositionString == NULL ||
-			mImmSetCompositionString == NULL ||
-			mImmSetCompositionFont == NULL ||
-			mImmSetCandidateWindow == NULL ||
-			mImmNotifyIME == NULL)
-		{
-			// If any of the above API entires are not found, we can't use IMM API.  
-			// So, turn off the IMM support.  We should log some warning message in 
-			// the case, since it is very unusual; these APIs are available from 
-			// the beginning, and all versions of IMM32.DLL should have them all.  
-			// Unfortunately, this code may be executed before initialization of 
-			// the logging channel (llwarns), and we can't do it here...  Yes, this 
-			// is one of disadvantages to use static constraction to DLL loading. 
-			FreeLibrary(mHImmDll);
-			mHImmDll = NULL;
-
-			// If we unload the library, make sure all the function pointers are cleared
-			mImmIsIME = NULL;
-			mImmGetDefaultIMEWnd = NULL;
-			mImmGetContext = NULL;
-			mImmReleaseContext = NULL;
-			mImmGetOpenStatus = NULL;
-			mImmSetOpenStatus = NULL;
-			mImmGetConversionStatus = NULL;
-			mImmSetConversionStatus = NULL;
-			mImmGetCompostitionWindow = NULL;
-			mImmSetCompostitionWindow = NULL;
-			mImmGetCompositionString = NULL;
-			mImmSetCompositionString = NULL;
-			mImmSetCompositionFont = NULL;
-			mImmSetCandidateWindow = NULL;
-			mImmNotifyIME = NULL;
-		}
-	}
-}
-
-
-// static 
-BOOL	LLWinImm::isIME(HKL hkl)															
-{ 
-	if ( sTheInstance.mImmIsIME )
-		return sTheInstance.mImmIsIME(hkl); 
-	return FALSE;
-}
-
-// static 
-HIMC		LLWinImm::getContext(HWND hwnd)
-{
-	if ( sTheInstance.mImmGetContext )
-		return sTheInstance.mImmGetContext(hwnd); 
-	return 0;
-}
-
-//static 
-BOOL		LLWinImm::releaseContext(HWND hwnd, HIMC himc)
-{ 
-	if ( sTheInstance.mImmIsIME )
-		return sTheInstance.mImmReleaseContext(hwnd, himc); 
-	return FALSE;
-}
-
-// static 
-BOOL		LLWinImm::getOpenStatus(HIMC himc)
-{ 
-	if ( sTheInstance.mImmGetOpenStatus )
-		return sTheInstance.mImmGetOpenStatus(himc); 
-	return FALSE;
-}
-
-// static 
-BOOL		LLWinImm::setOpenStatus(HIMC himc, BOOL status)									
-{ 
-	if ( sTheInstance.mImmSetOpenStatus )
-		return sTheInstance.mImmSetOpenStatus(himc, status); 
-	return FALSE;
-}
-
-// static 
-BOOL		LLWinImm::getConversionStatus(HIMC himc, LPDWORD conversion, LPDWORD sentence)	
-{ 
-	if ( sTheInstance.mImmGetConversionStatus )
-		return sTheInstance.mImmGetConversionStatus(himc, conversion, sentence); 
-	return FALSE;
-}
-
-// static 
-BOOL		LLWinImm::setConversionStatus(HIMC himc, DWORD conversion, DWORD sentence)		
-{ 
-	if ( sTheInstance.mImmSetConversionStatus )
-		return sTheInstance.mImmSetConversionStatus(himc, conversion, sentence); 
-	return FALSE;
-}
-
-// static 
-BOOL		LLWinImm::getCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form)					
-{ 
-	if ( sTheInstance.mImmGetCompostitionWindow )
-		return sTheInstance.mImmGetCompostitionWindow(himc, form);	
-	return FALSE;
-}
-
-// static 
-BOOL		LLWinImm::setCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form)					
-{ 
-	if ( sTheInstance.mImmSetCompostitionWindow )
-		return sTheInstance.mImmSetCompostitionWindow(himc, form);	
-	return FALSE;
-}
-
-
-// static 
-LONG		LLWinImm::getCompositionString(HIMC himc, DWORD index, LPVOID data, DWORD length)					
-{ 
-	if ( sTheInstance.mImmGetCompositionString )
-		return sTheInstance.mImmGetCompositionString(himc, index, data, length);	
-	return FALSE;
-}
-
-
-// static 
-BOOL		LLWinImm::setCompositionString(HIMC himc, DWORD index, LPVOID pComp, DWORD compLength, LPVOID pRead, DWORD readLength)					
-{ 
-	if ( sTheInstance.mImmSetCompositionString )
-		return sTheInstance.mImmSetCompositionString(himc, index, pComp, compLength, pRead, readLength);	
-	return FALSE;
-}
-
-// static 
-BOOL		LLWinImm::setCompositionFont(HIMC himc, LPLOGFONTW pFont)					
-{ 
-	if ( sTheInstance.mImmSetCompositionFont )
-		return sTheInstance.mImmSetCompositionFont(himc, pFont);	
-	return FALSE;
-}
-
-// static 
-BOOL		LLWinImm::setCandidateWindow(HIMC himc, LPCANDIDATEFORM form)					
-{ 
-	if ( sTheInstance.mImmSetCandidateWindow )
-		return sTheInstance.mImmSetCandidateWindow(himc, form);	
-	return FALSE;
-}
-
-// static 
-BOOL		LLWinImm::notifyIME(HIMC himc, DWORD action, DWORD index, DWORD value)					
-{ 
-	if ( sTheInstance.mImmNotifyIME )
-		return sTheInstance.mImmNotifyIME(himc, action, index, value);	
-	return FALSE;
-}
-
-
-
-
-// ----------------------------------------------------------------------------------------
-LLWinImm::~LLWinImm()
-{
-	if (mHImmDll != NULL)
-	{
-		FreeLibrary(mHImmDll);
-		mHImmDll = NULL;
-	}
-}
-
-
-LLWindowWin32::LLWindowWin32(LLWindowCallbacks* callbacks,
-							 const std::string& title, const std::string& name, S32 x, S32 y, S32 width,
-							 S32 height, U32 flags, 
-							 BOOL fullscreen, BOOL clearBg,
-							 BOOL disable_vsync, BOOL use_gl,
-							 BOOL ignore_pixel_depth,
-							 U32 fsaa_samples)
-	: LLWindow(callbacks, fullscreen, flags)
-{
-	mFSAASamples = fsaa_samples;
-	mIconResource = gIconResource;
-	mOverrideAspectRatio = 0.f;
-	mNativeAspectRatio = 0.f;
-	mMousePositionModified = FALSE;
-	mInputProcessingPaused = FALSE;
-	mPreeditor = NULL;
-	mhDC = NULL;
-	mhRC = NULL;
-
-	// Initialize the keyboard
-	gKeyboard = new LLKeyboardWin32();
-	gKeyboard->setCallbacks(callbacks);
-
-	// Initialize the Drag and Drop functionality
-	mDragDrop = new LLDragDropWin32;
-
-	// Initialize (boot strap) the Language text input management,
-	// based on the system's (user's) default settings.
-	allowLanguageTextInput(mPreeditor, FALSE);
-
-	WNDCLASS		wc;
-	RECT			window_rect;
-
-	// Set the window title
-	if (title.empty())
-	{
-		mWindowTitle = new WCHAR[50];
-		wsprintf(mWindowTitle, L"OpenGL Window");
-	}
-	else
-	{
-		mWindowTitle = new WCHAR[256]; // Assume title length < 255 chars.
-		mbstowcs(mWindowTitle, title.c_str(), 255);
-		mWindowTitle[255] = 0;
-	}
-
-	// Set the window class name
-	if (name.empty())
-	{
-		mWindowClassName = new WCHAR[50];
-		wsprintf(mWindowClassName, L"OpenGL Window");
-	}
-	else
-	{
-		mWindowClassName = new WCHAR[256]; // Assume title length < 255 chars.
-		mbstowcs(mWindowClassName, name.c_str(), 255);
-		mWindowClassName[255] = 0;
-	}
-
-
-	// We're not clipping yet
-	SetRect( &mOldMouseClip, 0, 0, 0, 0 );
-
-	// Make an instance of our window then define the window class
-	mhInstance = GetModuleHandle(NULL);
-	mWndProc = NULL;
-
-	mSwapMethod = SWAP_METHOD_UNDEFINED;
-
-	// No WPARAM yet.
-	mLastSizeWParam = 0;
-
-	// Windows GDI rects don't include rightmost pixel
-	window_rect.left = (long) 0;
-	window_rect.right = (long) width;
-	window_rect.top = (long) 0;
-	window_rect.bottom = (long) height;
-
-	// Grab screen size to sanitize the window
-	S32 window_border_y = GetSystemMetrics(SM_CYBORDER);
-	S32 virtual_screen_x = GetSystemMetrics(SM_XVIRTUALSCREEN); 
-	S32 virtual_screen_y = GetSystemMetrics(SM_YVIRTUALSCREEN); 
-	S32 virtual_screen_width = GetSystemMetrics(SM_CXVIRTUALSCREEN);
-	S32 virtual_screen_height = GetSystemMetrics(SM_CYVIRTUALSCREEN);
-
-	if (x < virtual_screen_x) x = virtual_screen_x;
-	if (y < virtual_screen_y - window_border_y) y = virtual_screen_y - window_border_y;
-
-	if (x + width > virtual_screen_x + virtual_screen_width) x = virtual_screen_x + virtual_screen_width - width;
-	if (y + height > virtual_screen_y + virtual_screen_height) y = virtual_screen_y + virtual_screen_height - height;
-
-	if (!sIsClassRegistered)
-	{
-		// Force redraw when resized and create a private device context
-
-		// Makes double click messages.
-		wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC | CS_DBLCLKS;
-
-		// Set message handler function
-		wc.lpfnWndProc = (WNDPROC) mainWindowProc;
-
-		// unused
-		wc.cbClsExtra = 0;
-		wc.cbWndExtra = 0;
-
-		wc.hInstance = mhInstance;
-		wc.hIcon = LoadIcon(mhInstance, mIconResource);
-
-		// We will set the cursor ourselves
-		wc.hCursor = NULL;
-
-		// background color is not used
-		if (clearBg)
-		{
-			wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
-		}
-		else
-		{
-			wc.hbrBackground = (HBRUSH) NULL;
-		}
-
-		// we don't use windows menus
-		wc.lpszMenuName = NULL;
-
-		wc.lpszClassName = mWindowClassName;
-
-		if (!RegisterClass(&wc))
-		{
-			OSMessageBox(mCallbacks->translateString("MBRegClassFailed"), 
-				mCallbacks->translateString("MBError"), OSMB_OK);
-			return;
-		}
-		sIsClassRegistered = TRUE;
-	}
-
-	//-----------------------------------------------------------------------
-	// Get the current refresh rate
-	//-----------------------------------------------------------------------
-
-	DEVMODE dev_mode;
-	DWORD current_refresh;
-	if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode))
-	{
-		current_refresh = dev_mode.dmDisplayFrequency;
-		mNativeAspectRatio = ((F32)dev_mode.dmPelsWidth) / ((F32)dev_mode.dmPelsHeight);
-	}
-	else
-	{
-		current_refresh = 60;
-	}
-
-	//-----------------------------------------------------------------------
-	// Drop resolution and go fullscreen
-	// use a display mode with our desired size and depth, with a refresh
-	// rate as close at possible to the users' default
-	//-----------------------------------------------------------------------
-	if (mFullscreen)
-	{
-		BOOL success = FALSE;
-		DWORD closest_refresh = 0;
-
-		for (S32 mode_num = 0;; mode_num++)
-		{
-			if (!EnumDisplaySettings(NULL, mode_num, &dev_mode))
-			{
-				break;
-			}
-
-			if (dev_mode.dmPelsWidth == width &&
-				dev_mode.dmPelsHeight == height &&
-				dev_mode.dmBitsPerPel == BITS_PER_PIXEL)
-			{
-				success = TRUE;
-				if ((dev_mode.dmDisplayFrequency - current_refresh)
-					< (closest_refresh - current_refresh))
-				{
-					closest_refresh = dev_mode.dmDisplayFrequency;
-				}
-			}
-		}
-
-		if (closest_refresh == 0)
-		{
-			LL_WARNS("Window") << "Couldn't find display mode " << width << " by " << height << " at " << BITS_PER_PIXEL << " bits per pixel" << LL_ENDL;
-			success = FALSE;
-		}
-
-		// If we found a good resolution, use it.
-		if (success)
-		{
-			success = setDisplayResolution(width, height, BITS_PER_PIXEL, closest_refresh);
-		}
-
-		// Keep a copy of the actual current device mode in case we minimize 
-		// and change the screen resolution.   JC
-		EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode);
-
-		// If it failed, we don't want to run fullscreen
-		if (success)
-		{
-			mFullscreen = TRUE;
-			mFullscreenWidth   = dev_mode.dmPelsWidth;
-			mFullscreenHeight  = dev_mode.dmPelsHeight;
-			mFullscreenBits    = dev_mode.dmBitsPerPel;
-			mFullscreenRefresh = dev_mode.dmDisplayFrequency;
-
-			LL_INFOS("Window") << "Running at " << dev_mode.dmPelsWidth
-				<< "x"   << dev_mode.dmPelsHeight
-				<< "x"   << dev_mode.dmBitsPerPel
-				<< " @ " << dev_mode.dmDisplayFrequency
-				<< LL_ENDL;
-		}
-		else
-		{
-			mFullscreen = FALSE;
-			mFullscreenWidth   = -1;
-			mFullscreenHeight  = -1;
-			mFullscreenBits    = -1;
-			mFullscreenRefresh = -1;
-
-			std::map<std::string,std::string> args;
-			args["[WIDTH]"] = llformat("%d", width);
-			args["[HEIGHT]"] = llformat ("%d", height);
-			OSMessageBox(mCallbacks->translateString("MBFullScreenErr", args),
-				mCallbacks->translateString("MBError"), OSMB_OK);
-		}
-	}
-
-	// TODO: add this after resolving _WIN32_WINNT issue
-	//	if (!fullscreen)
-	//	{
-	//		TRACKMOUSEEVENT track_mouse_event;
-	//		track_mouse_event.cbSize = sizeof( TRACKMOUSEEVENT );
-	//		track_mouse_event.dwFlags = TME_LEAVE;
-	//		track_mouse_event.hwndTrack = mWindowHandle;
-	//		track_mouse_event.dwHoverTime = HOVER_DEFAULT;
-	//		TrackMouseEvent( &track_mouse_event ); 
-	//	}
-
-
-	//-----------------------------------------------------------------------
-	// Create GL drawing context
-	//-----------------------------------------------------------------------
-	LLCoordScreen windowPos(x,y);
-	LLCoordScreen windowSize(window_rect.right - window_rect.left,
-							 window_rect.bottom - window_rect.top);
-	if (!switchContext(mFullscreen, windowSize, TRUE, &windowPos))
-	{
-		return;
-	}
-	
-	//start with arrow cursor
-	initCursors();
-	setCursor( UI_CURSOR_ARROW );
-
-	// Initialize (boot strap) the Language text input management,
-	// based on the system's (or user's) default settings.
-	allowLanguageTextInput(NULL, FALSE);
-}
-
-
-LLWindowWin32::~LLWindowWin32()
-{
-	delete mDragDrop;
-
-	delete [] mWindowTitle;
-	mWindowTitle = NULL;
-
-	delete [] mSupportedResolutions;
-	mSupportedResolutions = NULL;
-
-	delete mWindowClassName;
-	mWindowClassName = NULL;
-}
-
-void LLWindowWin32::show()
-{
-	ShowWindow(mWindowHandle, SW_SHOW);
-	SetForegroundWindow(mWindowHandle);
-	SetFocus(mWindowHandle);
-}
-
-void LLWindowWin32::hide()
-{
-	setMouseClipping(FALSE);
-	ShowWindow(mWindowHandle, SW_HIDE);
-}
-
-//virtual
-void LLWindowWin32::minimize()
-{
-	setMouseClipping(FALSE);
-	showCursor();
-	ShowWindow(mWindowHandle, SW_MINIMIZE);
-}
-
-//virtual
-void LLWindowWin32::restore()
-{
-	ShowWindow(mWindowHandle, SW_RESTORE);
-	SetForegroundWindow(mWindowHandle);
-	SetFocus(mWindowHandle);
-}
-
-
-// close() destroys all OS-specific code associated with a window.
-// Usually called from LLWindowManager::destroyWindow()
-void LLWindowWin32::close()
-{
-	LL_DEBUGS("Window") << "Closing LLWindowWin32" << LL_ENDL;
-	// Is window is already closed?
-	if (!mWindowHandle)
-	{
-		return;
-	}
-
-	mDragDrop->reset();
-
-	// Make sure cursor is visible and we haven't mangled the clipping state.
-	setMouseClipping(FALSE);
-	showCursor();
-
-	// Go back to screen mode written in the registry.
-	if (mFullscreen)
-	{
-		resetDisplayResolution();
-	}
-
-	// Clean up remaining GL state
-	LL_DEBUGS("Window") << "Shutting down GL" << LL_ENDL;
-	gGLManager.shutdownGL();
-
-	LL_DEBUGS("Window") << "Releasing Context" << LL_ENDL;
-	if (mhRC)
-	{
-		if (!wglMakeCurrent(NULL, NULL))
-		{
-			LL_WARNS("Window") << "Release of DC and RC failed" << LL_ENDL;
-		}
-
-		if (!wglDeleteContext(mhRC))
-		{
-			LL_WARNS("Window") << "Release of rendering context failed" << LL_ENDL;
-		}
-
-		mhRC = NULL;
-	}
-
-	// Restore gamma to the system values.
-	restoreGamma();
-
-	if (mhDC && !ReleaseDC(mWindowHandle, mhDC))
-	{
-		LL_WARNS("Window") << "Release of ghDC failed" << LL_ENDL;
-		mhDC = NULL;
-	}
-
-	LL_DEBUGS("Window") << "Destroying Window" << LL_ENDL;
-	
-	// Don't process events in our mainWindowProc any longer.
-	SetWindowLong(mWindowHandle, GWL_USERDATA, NULL);
-
-	// Make sure we don't leave a blank toolbar button.
-	ShowWindow(mWindowHandle, SW_HIDE);
-
-	// This causes WM_DESTROY to be sent *immediately*
-	if (!DestroyWindow(mWindowHandle))
-	{
-		OSMessageBox(mCallbacks->translateString("MBDestroyWinFailed"),
-			mCallbacks->translateString("MBShutdownErr"),
-			OSMB_OK);
-	}
-
-	mWindowHandle = NULL;
-}
-
-BOOL LLWindowWin32::isValid()
-{
-	return (mWindowHandle != NULL);
-}
-
-BOOL LLWindowWin32::getVisible()
-{
-	return (mWindowHandle && IsWindowVisible(mWindowHandle));
-}
-
-BOOL LLWindowWin32::getMinimized()
-{
-	return (mWindowHandle && IsIconic(mWindowHandle));
-}
-
-BOOL LLWindowWin32::getMaximized()
-{
-	return (mWindowHandle && IsZoomed(mWindowHandle));
-}
-
-BOOL LLWindowWin32::maximize()
-{
-	BOOL success = FALSE;
-	if (!mWindowHandle) return success;
-
-	WINDOWPLACEMENT placement;
-	placement.length = sizeof(WINDOWPLACEMENT);
-
-	success = GetWindowPlacement(mWindowHandle, &placement);
-	if (!success) return success;
-
-	placement.showCmd = SW_MAXIMIZE;
-
-	success = SetWindowPlacement(mWindowHandle, &placement);
-	return success;
-}
-
-BOOL LLWindowWin32::getFullscreen()
-{
-	return mFullscreen;
-}
-
-BOOL LLWindowWin32::getPosition(LLCoordScreen *position)
-{
-	RECT window_rect;
-
-	if (!mWindowHandle ||
-		!GetWindowRect(mWindowHandle, &window_rect) ||
-		NULL == position)
-	{
-		return FALSE;
-	}
-
-	position->mX = window_rect.left;
-	position->mY = window_rect.top;
-	return TRUE;
-}
-
-BOOL LLWindowWin32::getSize(LLCoordScreen *size)
-{
-	RECT window_rect;
-
-	if (!mWindowHandle ||
-		!GetWindowRect(mWindowHandle, &window_rect) ||
-		NULL == size)
-	{
-		return FALSE;
-	}
-
-	size->mX = window_rect.right - window_rect.left;
-	size->mY = window_rect.bottom - window_rect.top;
-	return TRUE;
-}
-
-BOOL LLWindowWin32::getSize(LLCoordWindow *size)
-{
-	RECT client_rect;
-
-	if (!mWindowHandle ||
-		!GetClientRect(mWindowHandle, &client_rect) ||
-		NULL == size)
-	{
-		return FALSE;
-	}
-
-	size->mX = client_rect.right - client_rect.left;
-	size->mY = client_rect.bottom - client_rect.top;
-	return TRUE;
-}
-
-BOOL LLWindowWin32::setPosition(const LLCoordScreen position)
-{
-	LLCoordScreen size;
-
-	if (!mWindowHandle)
-	{
-		return FALSE;
-	}
-	getSize(&size);
-	moveWindow(position, size);
-	return TRUE;
-}
-
-BOOL LLWindowWin32::setSize(const LLCoordScreen size)
-{
-	LLCoordScreen position;
-
-	getPosition(&position);
-	if (!mWindowHandle)
-	{
-		return FALSE;
-	}
-
-	moveWindow(position, size);
-	return TRUE;
-}
-
-// changing fullscreen resolution
-BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL disable_vsync, const LLCoordScreen * const posp)
-{
-	GLuint	pixel_format;
-	DEVMODE dev_mode;
-	DWORD	current_refresh;
-	DWORD	dw_ex_style;
-	DWORD	dw_style;
-	RECT	window_rect;
-	S32 width = size.mX;
-	S32 height = size.mY;
-	BOOL auto_show = FALSE;
-
-	if (mhRC)
-	{
-		auto_show = TRUE;
-		resetDisplayResolution();
-	}
-
-	if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode))
-	{
-		current_refresh = dev_mode.dmDisplayFrequency;
-	}
-	else
-	{
-		current_refresh = 60;
-	}
-
-	gGLManager.shutdownGL();
-	//destroy gl context
-	if (mhRC)
-	{
-		if (!wglMakeCurrent(NULL, NULL))
-		{
-			LL_WARNS("Window") << "Release of DC and RC failed" << LL_ENDL;
-		}
-
-		if (!wglDeleteContext(mhRC))
-		{
-			LL_WARNS("Window") << "Release of rendering context failed" << LL_ENDL;
-		}
-
-		mhRC = NULL;
-	}
-
-	if (fullscreen)
-	{
-		mFullscreen = TRUE;
-		BOOL success = FALSE;
-		DWORD closest_refresh = 0;
-
-		for (S32 mode_num = 0;; mode_num++)
-		{
-			if (!EnumDisplaySettings(NULL, mode_num, &dev_mode))
-			{
-				break;
-			}
-
-			if (dev_mode.dmPelsWidth == width &&
-				dev_mode.dmPelsHeight == height &&
-				dev_mode.dmBitsPerPel == BITS_PER_PIXEL)
-			{
-				success = TRUE;
-				if ((dev_mode.dmDisplayFrequency - current_refresh)
-					< (closest_refresh - current_refresh))
-				{
-					closest_refresh = dev_mode.dmDisplayFrequency;
-				}
-			}
-		}
-
-		if (closest_refresh == 0)
-		{
-			LL_WARNS("Window") << "Couldn't find display mode " << width << " by " << height << " at " << BITS_PER_PIXEL << " bits per pixel" << LL_ENDL;
-			return FALSE;
-		}
-
-		// If we found a good resolution, use it.
-		if (success)
-		{
-			success = setDisplayResolution(width, height, BITS_PER_PIXEL, closest_refresh);
-		}
-
-		// Keep a copy of the actual current device mode in case we minimize 
-		// and change the screen resolution.   JC
-		EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode);
-
-		if (success)
-		{
-			mFullscreen = TRUE;
-			mFullscreenWidth   = dev_mode.dmPelsWidth;
-			mFullscreenHeight  = dev_mode.dmPelsHeight;
-			mFullscreenBits    = dev_mode.dmBitsPerPel;
-			mFullscreenRefresh = dev_mode.dmDisplayFrequency;
-
-			LL_INFOS("Window") << "Running at " << dev_mode.dmPelsWidth
-				<< "x"   << dev_mode.dmPelsHeight
-				<< "x"   << dev_mode.dmBitsPerPel
-				<< " @ " << dev_mode.dmDisplayFrequency
-				<< LL_ENDL;
-
-			window_rect.left = (long) 0;
-			window_rect.right = (long) width;			// Windows GDI rects don't include rightmost pixel
-			window_rect.top = (long) 0;
-			window_rect.bottom = (long) height;
-			dw_ex_style = WS_EX_APPWINDOW;
-			dw_style = WS_POPUP;
-
-			// Move window borders out not to cover window contents
-			AdjustWindowRectEx(&window_rect, dw_style, FALSE, dw_ex_style);
-		}
-		// If it failed, we don't want to run fullscreen
-		else
-		{
-			mFullscreen = FALSE;
-			mFullscreenWidth   = -1;
-			mFullscreenHeight  = -1;
-			mFullscreenBits    = -1;
-			mFullscreenRefresh = -1;
-
-			LL_INFOS("Window") << "Unable to run fullscreen at " << width << "x" << height << LL_ENDL;
-			return FALSE;
-		}
-	}
-	else
-	{
-		mFullscreen = FALSE;
-		window_rect.left = (long) (posp ? posp->mX : 0);
-		window_rect.right = (long) width + window_rect.left;			// Windows GDI rects don't include rightmost pixel
-		window_rect.top = (long) (posp ? posp->mY : 0);
-		window_rect.bottom = (long) height + window_rect.top;
-		// Window with an edge
-		dw_ex_style = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE;
-		dw_style = WS_OVERLAPPEDWINDOW;
-	}
-
-	// don't post quit messages when destroying old windows
-	mPostQuit = FALSE;
-
-	// create window
-	DestroyWindow(mWindowHandle);
-	mWindowHandle = CreateWindowEx(dw_ex_style,
-		mWindowClassName,
-		mWindowTitle,
-		WS_CLIPSIBLINGS | WS_CLIPCHILDREN | dw_style,
-		window_rect.left,								// x pos
-		window_rect.top,								// y pos
-		window_rect.right - window_rect.left,			// width
-		window_rect.bottom - window_rect.top,			// height
-		NULL,
-		NULL,
-		mhInstance,
-		NULL);
-
-	//-----------------------------------------------------------------------
-	// Create GL drawing context
-	//-----------------------------------------------------------------------
-	static PIXELFORMATDESCRIPTOR pfd =
-	{
-		sizeof(PIXELFORMATDESCRIPTOR), 
-			1,
-			PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, 
-			PFD_TYPE_RGBA,
-			BITS_PER_PIXEL,
-			0, 0, 0, 0, 0, 0,	// RGB bits and shift, unused
-			8,					// alpha bits
-			0,					// alpha shift
-			0,					// accum bits
-			0, 0, 0, 0,			// accum RGBA
-			24,					// depth bits
-			8,					// stencil bits, avi added for stencil test
-			0,
-			PFD_MAIN_PLANE,
-			0,
-			0, 0, 0
-	};
-
-	if (!(mhDC = GetDC(mWindowHandle)))
-	{
-		close();
-		OSMessageBox(mCallbacks->translateString("MBDevContextErr"),
-			mCallbacks->translateString("MBError"), OSMB_OK);
-		return FALSE;
-	}
-
-	if (!(pixel_format = ChoosePixelFormat(mhDC, &pfd)))
-	{
-		close();
-		OSMessageBox(mCallbacks->translateString("MBPixelFmtErr"),
-			mCallbacks->translateString("MBError"), OSMB_OK);
-		return FALSE;
-	}
-
-	// Verify what pixel format we actually received.
-	if (!DescribePixelFormat(mhDC, pixel_format, sizeof(PIXELFORMATDESCRIPTOR),
-		&pfd))
-	{
-		close();
-		OSMessageBox(mCallbacks->translateString("MBPixelFmtDescErr"),
-			mCallbacks->translateString("MBError"), OSMB_OK);
-		return FALSE;
-	}
-
-	if (pfd.cColorBits < 32)
-	{
-		close();
-		OSMessageBox(mCallbacks->translateString("MBTrueColorWindow"),
-			mCallbacks->translateString("MBError"), OSMB_OK);
-		return FALSE;
-	}
-
-	if (pfd.cAlphaBits < 8)
-	{
-		close();
-		OSMessageBox(mCallbacks->translateString("MBAlpha"),
-			mCallbacks->translateString("MBError"), OSMB_OK);
-		return FALSE;
-	}
-
-	if (!SetPixelFormat(mhDC, pixel_format, &pfd))
-	{
-		close();
-		OSMessageBox(mCallbacks->translateString("MBPixelFmtSetErr"),
-			mCallbacks->translateString("MBError"), OSMB_OK);
-		return FALSE;
-	}
-
-	if (!(mhRC = wglCreateContext(mhDC)))
-	{
-		close();
-		OSMessageBox(mCallbacks->translateString("MBGLContextErr"),
-			mCallbacks->translateString("MBError"), OSMB_OK);
-		return FALSE;
-	}
-
-	if (!wglMakeCurrent(mhDC, mhRC))
-	{
-		close();
-		OSMessageBox(mCallbacks->translateString("MBGLContextActErr"),
-			mCallbacks->translateString("MBError"), OSMB_OK);
-		return FALSE;
-	}
-
-	gGLManager.initWGL();
-
-	if (wglChoosePixelFormatARB)
-	{
-		// OK, at this point, use the ARB wglChoosePixelFormatsARB function to see if we
-		// can get exactly what we want.
-		GLint attrib_list[256];
-		S32 cur_attrib = 0;
-
-		attrib_list[cur_attrib++] = WGL_DEPTH_BITS_ARB;
-		attrib_list[cur_attrib++] = 24;
-
-		attrib_list[cur_attrib++] = WGL_STENCIL_BITS_ARB;
-		attrib_list[cur_attrib++] = 8;
-
-		attrib_list[cur_attrib++] = WGL_DRAW_TO_WINDOW_ARB;
-		attrib_list[cur_attrib++] = GL_TRUE;
-
-		attrib_list[cur_attrib++] = WGL_ACCELERATION_ARB;
-		attrib_list[cur_attrib++] = WGL_FULL_ACCELERATION_ARB;
-
-		attrib_list[cur_attrib++] = WGL_SUPPORT_OPENGL_ARB;
-		attrib_list[cur_attrib++] = GL_TRUE;
-
-		attrib_list[cur_attrib++] = WGL_DOUBLE_BUFFER_ARB;
-		attrib_list[cur_attrib++] = GL_TRUE;
-
-		attrib_list[cur_attrib++] = WGL_COLOR_BITS_ARB;
-		attrib_list[cur_attrib++] = 24;
-
-		attrib_list[cur_attrib++] = WGL_ALPHA_BITS_ARB;
-		attrib_list[cur_attrib++] = 8;
-
-		U32 end_attrib = 0;
-		if (mFSAASamples > 0)
-		{
-			end_attrib = cur_attrib;
-			attrib_list[cur_attrib++] = WGL_SAMPLE_BUFFERS_ARB;
-			attrib_list[cur_attrib++] = GL_TRUE;
-
-			attrib_list[cur_attrib++] = WGL_SAMPLES_ARB;
-			attrib_list[cur_attrib++] = mFSAASamples;
-		}
-
-		// End the list
-		attrib_list[cur_attrib++] = 0;
-
-		GLint pixel_formats[256];
-		U32 num_formats = 0;
-
-		// First we try and get a 32 bit depth pixel format
-		BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats);
-		if (!result)
-		{
-			close();
-			show_window_creation_error("Error after wglChoosePixelFormatARB 32-bit");
-			return FALSE;
-		}
-
-		if (!num_formats)
-		{
-			if (end_attrib > 0)
-			{
-				LL_INFOS("Window") << "No valid pixel format for " << mFSAASamples << "x anti-aliasing." << LL_ENDL;
-				attrib_list[end_attrib] = 0;
-
-				BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats);
-				if (!result)
-				{
-					close();
-					show_window_creation_error("Error after wglChoosePixelFormatARB 32-bit no AA");
-					return FALSE;
-				}
-			}
-
-			if (!num_formats)
-			{
-				LL_INFOS("Window") << "No 32 bit z-buffer, trying 24 bits instead" << LL_ENDL;
-				// Try 24-bit format
-				attrib_list[1] = 24;
-				BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats);
-				if (!result)
-				{
-					close();
-					show_window_creation_error("Error after wglChoosePixelFormatARB 24-bit");
-					return FALSE;
-				}
-
-				if (!num_formats)
-				{
-					LL_WARNS("Window") << "Couldn't get 24 bit z-buffer,trying 16 bits instead!" << LL_ENDL;
-					attrib_list[1] = 16;
-					BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats);
-					if (!result || !num_formats)
-					{
-						close();
-						show_window_creation_error("Error after wglChoosePixelFormatARB 16-bit");
-						return FALSE;
-					}
-				}
-			}
-
-			LL_INFOS("Window") << "Choosing pixel formats: " << num_formats << " pixel formats returned" << LL_ENDL;
-		}
-
-		
-
-		S32 swap_method = 0;
-		S32 cur_format = num_formats-1;
-		GLint swap_query = WGL_SWAP_METHOD_ARB;
-
-		BOOL found_format = FALSE;
-
-		while (!found_format && wglGetPixelFormatAttribivARB(mhDC, pixel_format, 0, 1, &swap_query, &swap_method))
-		{
-			if (swap_method == WGL_SWAP_UNDEFINED_ARB || cur_format <= 0)
-			{
-				found_format = TRUE;
-			}
-			else
-			{
-				--cur_format;
-			}
-		}
-		
-		pixel_format = pixel_formats[cur_format];
-		
-		if (mhDC != 0)											// Does The Window Have A Device Context?
-		{
-			wglMakeCurrent(mhDC, 0);							// Set The Current Active Rendering Context To Zero
-			if (mhRC != 0)										// Does The Window Have A Rendering Context?
-			{
-				wglDeleteContext (mhRC);							// Release The Rendering Context
-				mhRC = 0;										// Zero The Rendering Context
-
-			}
-			ReleaseDC (mWindowHandle, mhDC);						// Release The Device Context
-			mhDC = 0;											// Zero The Device Context
-		}
-		DestroyWindow (mWindowHandle);									// Destroy The Window
-		
-
-		mWindowHandle = CreateWindowEx(dw_ex_style,
-			mWindowClassName,
-			mWindowTitle,
-			WS_CLIPSIBLINGS | WS_CLIPCHILDREN | dw_style,
-			window_rect.left,								// x pos
-			window_rect.top,								// y pos
-			window_rect.right - window_rect.left,			// width
-			window_rect.bottom - window_rect.top,			// height
-			NULL,
-			NULL,
-			mhInstance,
-			NULL);
-
-		if (!(mhDC = GetDC(mWindowHandle)))
-		{
-			close();
-			OSMessageBox(mCallbacks->translateString("MBDevContextErr"), mCallbacks->translateString("MBError"), OSMB_OK);
-			return FALSE;
-		}
-
-		if (!SetPixelFormat(mhDC, pixel_format, &pfd))
-		{
-			close();
-			OSMessageBox(mCallbacks->translateString("MBPixelFmtSetErr"),
-				mCallbacks->translateString("MBError"), OSMB_OK);
-			return FALSE;
-		}
-
-		if (wglGetPixelFormatAttribivARB(mhDC, pixel_format, 0, 1, &swap_query, &swap_method))
-		{
-			switch (swap_method)
-			{
-			case WGL_SWAP_EXCHANGE_ARB:
-				mSwapMethod = SWAP_METHOD_EXCHANGE;
-				LL_DEBUGS("Window") << "Swap Method: Exchange" << LL_ENDL;
-				break;
-			case WGL_SWAP_COPY_ARB:
-				mSwapMethod = SWAP_METHOD_COPY;
-				LL_DEBUGS("Window") << "Swap Method: Copy" << LL_ENDL;
-				break;
-			case WGL_SWAP_UNDEFINED_ARB:
-				mSwapMethod = SWAP_METHOD_UNDEFINED;
-				LL_DEBUGS("Window") << "Swap Method: Undefined" << LL_ENDL;
-				break;
-			default:
-				mSwapMethod = SWAP_METHOD_UNDEFINED;
-				LL_DEBUGS("Window") << "Swap Method: Unknown" << LL_ENDL;
-				break;
-			}
-		}		
-	}
-	else
-	{
-		LL_WARNS("Window") << "No wgl_ARB_pixel_format extension, using default ChoosePixelFormat!" << LL_ENDL;
-	}
-
-	// Verify what pixel format we actually received.
-	if (!DescribePixelFormat(mhDC, pixel_format, sizeof(PIXELFORMATDESCRIPTOR),
-		&pfd))
-	{
-		close();
-		OSMessageBox(mCallbacks->translateString("MBPixelFmtDescErr"), mCallbacks->translateString("MBError"), OSMB_OK);
-		return FALSE;
-	}
-
-	LL_INFOS("Window") << "GL buffer: Color Bits " << S32(pfd.cColorBits) 
-		<< " Alpha Bits " << S32(pfd.cAlphaBits)
-		<< " Depth Bits " << S32(pfd.cDepthBits) 
-		<< LL_ENDL;
-
-	// make sure we have 32 bits per pixel
-	if (pfd.cColorBits < 32 || GetDeviceCaps(mhDC, BITSPIXEL) < 32)
-	{
-		close();
-		OSMessageBox(mCallbacks->translateString("MBTrueColorWindow"), mCallbacks->translateString("MBError"), OSMB_OK);
-		return FALSE;
-	}
-
-	if (pfd.cAlphaBits < 8)
-	{
-		close();
-		OSMessageBox(mCallbacks->translateString("MBAlpha"), mCallbacks->translateString("MBError"), OSMB_OK);
-		return FALSE;
-	}
-
-	if (!(mhRC = wglCreateContext(mhDC)))
-	{
-		close();
-		OSMessageBox(mCallbacks->translateString("MBGLContextErr"), mCallbacks->translateString("MBError"), OSMB_OK);
-		return FALSE;
-	}
-
-	if (!wglMakeCurrent(mhDC, mhRC))
-	{
-		close();
-		OSMessageBox(mCallbacks->translateString("MBGLContextActErr"), mCallbacks->translateString("MBError"), OSMB_OK);
-		return FALSE;
-	}
-
-	if (!gGLManager.initGL())
-	{
-		close();
-		OSMessageBox(mCallbacks->translateString("MBVideoDrvErr"), mCallbacks->translateString("MBError"), OSMB_OK);
-		return FALSE;
-	}
-
-	// Disable vertical sync for swap
-	if (disable_vsync && wglSwapIntervalEXT)
-	{
-		LL_DEBUGS("Window") << "Disabling vertical sync" << LL_ENDL;
-		wglSwapIntervalEXT(0);
-	}
-	else
-	{
-		LL_DEBUGS("Window") << "Keeping vertical sync" << LL_ENDL;
-	}
-
-	SetWindowLong(mWindowHandle, GWL_USERDATA, (U32)this);
-
-	// register this window as handling drag/drop events from the OS
-	DragAcceptFiles( mWindowHandle, TRUE );
-
-	mDragDrop->init( mWindowHandle );
-	
-	//register joystick timer callback
-	SetTimer( mWindowHandle, 0, 1000 / 30, NULL ); // 30 fps timer
-
-	// ok to post quit messages now
-	mPostQuit = TRUE;
-
-	if (auto_show)
-	{
-		show();
-		glClearColor(0.0f, 0.0f, 0.0f, 0.f);
-		glClear(GL_COLOR_BUFFER_BIT);
-		swapBuffers();
-	}
-
-	return TRUE;
-}
-
-void LLWindowWin32::moveWindow( const LLCoordScreen& position, const LLCoordScreen& size )
-{
-	if( mIsMouseClipping )
-	{
-		RECT client_rect_in_screen_space;
-		if( getClientRectInScreenSpace( &client_rect_in_screen_space ) )
-		{
-			ClipCursor( &client_rect_in_screen_space );
-		}
-	}
-
-	// if the window was already maximized, MoveWindow seems to still set the maximized flag even if
-	// the window is smaller than maximized.
-	// So we're going to do a restore first (which is a ShowWindow call) (SL-44655).
-
-	// THIS CAUSES DEV-15484 and DEV-15949 
-	//ShowWindow(mWindowHandle, SW_RESTORE);
-	// NOW we can call MoveWindow
-	MoveWindow(mWindowHandle, position.mX, position.mY, size.mX, size.mY, TRUE);
-}
-
-BOOL LLWindowWin32::setCursorPosition(const LLCoordWindow position)
-{
-	LLCoordScreen screen_pos;
-
-	mMousePositionModified = TRUE;
-	if (!mWindowHandle)
-	{
-		return FALSE;
-	}
-
-	if (!convertCoords(position, &screen_pos))
-	{
-		return FALSE;
-	}
-
-	// Inform the application of the new mouse position (needed for per-frame
-	// hover/picking to function).
-	LLCoordGL gl_pos;
-	convertCoords(position, &gl_pos);
-	mCallbacks->handleMouseMove(this, gl_pos, (MASK)0);
-	
-	// DEV-18951 VWR-8524 Camera moves wildly when alt-clicking.
-	// Because we have preemptively notified the application of the new
-	// mouse position via handleMouseMove() above, we need to clear out
-	// any stale mouse move events.  RN/JC
-	MSG msg;
-	while (PeekMessage(&msg, NULL, WM_MOUSEMOVE, WM_MOUSEMOVE, PM_REMOVE))
-	{ }
-
-	return SetCursorPos(screen_pos.mX, screen_pos.mY);
-}
-
-BOOL LLWindowWin32::getCursorPosition(LLCoordWindow *position)
-{
-	POINT cursor_point;
-	LLCoordScreen screen_pos;
-
-	if (!mWindowHandle ||
-		!GetCursorPos(&cursor_point))
-	{
-		return FALSE;
-	}
-
-	screen_pos.mX = cursor_point.x;
-	screen_pos.mY = cursor_point.y;
-
-	return convertCoords(screen_pos, position);
-}
-
-void LLWindowWin32::hideCursor()
-{
-	while (ShowCursor(FALSE) >= 0)
-	{
-		// nothing, wait for cursor to push down
-	}
-	mCursorHidden = TRUE;
-	mHideCursorPermanent = TRUE;
-}
-
-void LLWindowWin32::showCursor()
-{
-	// makes sure the cursor shows up
-	while (ShowCursor(TRUE) < 0)
-	{
-		// do nothing, wait for cursor to pop out
-	}
-	mCursorHidden = FALSE;
-	mHideCursorPermanent = FALSE;
-}
-
-void LLWindowWin32::showCursorFromMouseMove()
-{
-	if (!mHideCursorPermanent)
-	{
-		showCursor();
-	}
-}
-
-void LLWindowWin32::hideCursorUntilMouseMove()
-{
-	if (!mHideCursorPermanent)
-	{
-		hideCursor();
-		mHideCursorPermanent = FALSE;
-	}
-}
-
-BOOL LLWindowWin32::isCursorHidden()
-{
-	return mCursorHidden;
-}
-
-
-HCURSOR LLWindowWin32::loadColorCursor(LPCTSTR name)
-{
-	return (HCURSOR)LoadImage(mhInstance,
-							  name,
-							  IMAGE_CURSOR,
-							  0,	// default width
-							  0,	// default height
-							  LR_DEFAULTCOLOR);
-}
-
-
-void LLWindowWin32::initCursors()
-{
-	mCursor[ UI_CURSOR_ARROW ]		= LoadCursor(NULL, IDC_ARROW);
-	mCursor[ UI_CURSOR_WAIT ]		= LoadCursor(NULL, IDC_WAIT);
-	mCursor[ UI_CURSOR_HAND ]		= LoadCursor(NULL, IDC_HAND);
-	mCursor[ UI_CURSOR_IBEAM ]		= LoadCursor(NULL, IDC_IBEAM);
-	mCursor[ UI_CURSOR_CROSS ]		= LoadCursor(NULL, IDC_CROSS);
-	mCursor[ UI_CURSOR_SIZENWSE ]	= LoadCursor(NULL, IDC_SIZENWSE);
-	mCursor[ UI_CURSOR_SIZENESW ]	= LoadCursor(NULL, IDC_SIZENESW);
-	mCursor[ UI_CURSOR_SIZEWE ]		= LoadCursor(NULL, IDC_SIZEWE);  
-	mCursor[ UI_CURSOR_SIZENS ]		= LoadCursor(NULL, IDC_SIZENS);  
-	mCursor[ UI_CURSOR_NO ]			= LoadCursor(NULL, IDC_NO);
-	mCursor[ UI_CURSOR_WORKING ]	= LoadCursor(NULL, IDC_APPSTARTING); 
-
-	HMODULE module = GetModuleHandle(NULL);
-	mCursor[ UI_CURSOR_TOOLGRAB ]	= LoadCursor(module, TEXT("TOOLGRAB"));
-	mCursor[ UI_CURSOR_TOOLLAND ]	= LoadCursor(module, TEXT("TOOLLAND"));
-	mCursor[ UI_CURSOR_TOOLFOCUS ]	= LoadCursor(module, TEXT("TOOLFOCUS"));
-	mCursor[ UI_CURSOR_TOOLCREATE ]	= LoadCursor(module, TEXT("TOOLCREATE"));
-	mCursor[ UI_CURSOR_ARROWDRAG ]	= LoadCursor(module, TEXT("ARROWDRAG"));
-	mCursor[ UI_CURSOR_ARROWCOPY ]	= LoadCursor(module, TEXT("ARROWCOPY"));
-	mCursor[ UI_CURSOR_ARROWDRAGMULTI ]	= LoadCursor(module, TEXT("ARROWDRAGMULTI"));
-	mCursor[ UI_CURSOR_ARROWCOPYMULTI ]	= LoadCursor(module, TEXT("ARROWCOPYMULTI"));
-	mCursor[ UI_CURSOR_NOLOCKED ]	= LoadCursor(module, TEXT("NOLOCKED"));
-	mCursor[ UI_CURSOR_ARROWLOCKED ]= LoadCursor(module, TEXT("ARROWLOCKED"));
-	mCursor[ UI_CURSOR_GRABLOCKED ]	= LoadCursor(module, TEXT("GRABLOCKED"));
-	mCursor[ UI_CURSOR_TOOLTRANSLATE ]	= LoadCursor(module, TEXT("TOOLTRANSLATE"));
-	mCursor[ UI_CURSOR_TOOLROTATE ]	= LoadCursor(module, TEXT("TOOLROTATE")); 
-	mCursor[ UI_CURSOR_TOOLSCALE ]	= LoadCursor(module, TEXT("TOOLSCALE"));
-	mCursor[ UI_CURSOR_TOOLCAMERA ]	= LoadCursor(module, TEXT("TOOLCAMERA"));
-	mCursor[ UI_CURSOR_TOOLPAN ]	= LoadCursor(module, TEXT("TOOLPAN"));
-	mCursor[ UI_CURSOR_TOOLZOOMIN ] = LoadCursor(module, TEXT("TOOLZOOMIN"));
-	mCursor[ UI_CURSOR_TOOLPICKOBJECT3 ] = LoadCursor(module, TEXT("TOOLPICKOBJECT3"));
-	mCursor[ UI_CURSOR_PIPETTE ] = LoadCursor(module, TEXT("TOOLPIPETTE"));
-
-	// Color cursors
-	mCursor[UI_CURSOR_TOOLPLAY] = loadColorCursor(TEXT("TOOLPLAY"));
-	mCursor[UI_CURSOR_TOOLPAUSE] = loadColorCursor(TEXT("TOOLPAUSE"));
-	mCursor[UI_CURSOR_TOOLMEDIAOPEN] = loadColorCursor(TEXT("TOOLMEDIAOPEN"));
-
-	// Note: custom cursors that are not found make LoadCursor() return NULL.
-	for( S32 i = 0; i < UI_CURSOR_COUNT; i++ )
-	{
-		if( !mCursor[i] )
-		{
-			mCursor[i] = LoadCursor(NULL, IDC_ARROW);
-		}
-	}
-}
-
-
-
-void LLWindowWin32::setCursor(ECursorType cursor)
-{
-	if (cursor == UI_CURSOR_ARROW
-		&& mBusyCount > 0)
-	{
-		cursor = UI_CURSOR_WORKING;
-	}
-
-	if( mCurrentCursor != cursor )
-	{
-		mCurrentCursor = cursor;
-		SetCursor( mCursor[cursor] );
-	}
-}
-
-ECursorType LLWindowWin32::getCursor() const
-{
-	return mCurrentCursor;
-}
-
-void LLWindowWin32::captureMouse()
-{
-	SetCapture(mWindowHandle);
-}
-
-void LLWindowWin32::releaseMouse()
-{
-	// *NOTE:Mani ReleaseCapture will spawn new windows messages...
-	// which will in turn call our MainWindowProc. It therefore requires
-	// pausing *and more importantly resumption* of the mainlooptimeout...
-	// just like DispatchMessage below.
-	mCallbacks->handlePauseWatchdog(this);
-	ReleaseCapture();
-	mCallbacks->handleResumeWatchdog(this);
-}
-
-
-void LLWindowWin32::delayInputProcessing()
-{
-	mInputProcessingPaused = TRUE;
-}
-
-void LLWindowWin32::gatherInput()
-{
-	MSG		msg;
-	int		msg_count = 0;
-
-	LLMemType m1(LLMemType::MTYPE_GATHER_INPUT);
-
-	while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) && msg_count < MAX_MESSAGE_PER_UPDATE)
-	{
-		mCallbacks->handlePingWatchdog(this, "Main:TranslateGatherInput");
-		TranslateMessage(&msg);
-
-		// turn watchdog off in here to not fail if windows is doing something wacky
-		mCallbacks->handlePauseWatchdog(this);
-		DispatchMessage(&msg);
-		mCallbacks->handleResumeWatchdog(this);
-		msg_count++;
-
-		if ( mInputProcessingPaused )
-		{
-			break;
-		}
-		/* Attempted workaround for problem where typing fast and hitting
-		   return would result in only part of the text being sent. JC
-
-		BOOL key_posted = TranslateMessage(&msg);
-		DispatchMessage(&msg);
-		msg_count++;
-
-		// If a key was translated, a WM_CHAR might have been posted to the end
-		// of the event queue.  We need it immediately.
-		if (key_posted && msg.message == WM_KEYDOWN)
-		{
-			if (PeekMessage(&msg, NULL, WM_CHAR, WM_CHAR, PM_REMOVE))
-			{
-				TranslateMessage(&msg);
-				DispatchMessage(&msg);
-				msg_count++;
-			}
-		}
-		*/
-		mCallbacks->handlePingWatchdog(this, "Main:AsyncCallbackGatherInput");
-		// For async host by name support.  Really hacky.
-		if (gAsyncMsgCallback && (LL_WM_HOST_RESOLVED == msg.message))
-		{
-			gAsyncMsgCallback(msg);
-		}
-	}
-
-	mInputProcessingPaused = FALSE;
-
-	// clear this once we've processed all mouse messages that might have occurred after
-	// we slammed the mouse position
-	mMousePositionModified = FALSE;
-}
-
-static LLFastTimer::DeclareTimer FTM_KEYHANDLER("Handle Keyboard");
-static LLFastTimer::DeclareTimer FTM_MOUSEHANDLER("Handle Mouse");
-
-LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_param, LPARAM l_param)
-{
-	LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(h_wnd, GWL_USERDATA);
-
-
-	if (NULL != window_imp)
-	{
-		window_imp->mCallbacks->handleResumeWatchdog(window_imp);
-		window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:StartWndProc");
-		// Has user provided their own window callback?
-		if (NULL != window_imp->mWndProc)
-		{
-			if (!window_imp->mWndProc(h_wnd, u_msg, w_param, l_param))
-			{
-				// user has handled window message
-				return 0;
-			}
-		}
-
-		window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:PreSwitchWndProc");
-		
-		// Juggle to make sure we can get negative positions for when
-		// mouse is outside window.
-		LLCoordWindow window_coord((S32)(S16)LOWORD(l_param), (S32)(S16)HIWORD(l_param));
-
-		// This doesn't work, as LOWORD returns unsigned short.
-		//LLCoordWindow window_coord(LOWORD(l_param), HIWORD(l_param));
-		LLCoordGL gl_coord;
-
-		// pass along extended flag in mask
-		MASK mask = (l_param>>16 & KF_EXTENDED) ? MASK_EXTENDED : 0x0;
-		BOOL eat_keystroke = TRUE;
-
-		switch(u_msg)
-		{
-			RECT	update_rect;
-			S32		update_width;
-			S32		update_height;
-
-		case WM_TIMER:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_TIMER");
-			window_imp->mCallbacks->handleTimerEvent(window_imp);
-			break;
-
-		case WM_DEVICECHANGE:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_DEVICECHANGE");
-			if (gDebugWindowProc)
-			{
-				llinfos << "  WM_DEVICECHANGE: wParam=" << w_param 
-						<< "; lParam=" << l_param << llendl;
-			}
-			if (w_param == DBT_DEVNODES_CHANGED || w_param == DBT_DEVICEARRIVAL)
-			{
-				if (window_imp->mCallbacks->handleDeviceChange(window_imp))
-				{
-					return 0;
-				}
-			}
-			break;
-
-		case WM_PAINT:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_PAINT");
-			GetUpdateRect(window_imp->mWindowHandle, &update_rect, FALSE);
-			update_width = update_rect.right - update_rect.left + 1;
-			update_height = update_rect.bottom - update_rect.top + 1;
-			window_imp->mCallbacks->handlePaint(window_imp, update_rect.left, update_rect.top,
-				update_width, update_height);
-			break;
-		case WM_PARENTNOTIFY:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_PARENTNOTIFY");
-			u_msg = u_msg;
-			break;
-
-		case WM_SETCURSOR:
-			// This message is sent whenever the cursor is moved in a window.
-			// You need to set the appropriate cursor appearance.
-
-			// Only take control of cursor over client region of window
-			// This allows Windows(tm) to handle resize cursors, etc.
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SETCURSOR");
-			if (LOWORD(l_param) == HTCLIENT)
-			{
-				SetCursor(window_imp->mCursor[ window_imp->mCurrentCursor] );
-				return 0;
-			}
-			break;
-
-		case WM_ENTERMENULOOP:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_ENTERMENULOOP");
-			window_imp->mCallbacks->handleWindowBlock(window_imp);
-			break;
-
-		case WM_EXITMENULOOP:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_EXITMENULOOP");
-			window_imp->mCallbacks->handleWindowUnblock(window_imp);
-			break;
-
-		case WM_ACTIVATEAPP:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_ACTIVATEAPP");
-			{
-				// This message should be sent whenever the app gains or loses focus.
-				BOOL activating = (BOOL) w_param;
-				BOOL minimized = window_imp->getMinimized();
-
-				if (gDebugWindowProc)
-				{
-					LL_INFOS("Window") << "WINDOWPROC ActivateApp "
-						<< " activating " << S32(activating)
-						<< " minimized " << S32(minimized)
-						<< " fullscreen " << S32(window_imp->mFullscreen)
-						<< LL_ENDL;
-				}
-
-				if (window_imp->mFullscreen)
-				{
-					// When we run fullscreen, restoring or minimizing the app needs 
-					// to switch the screen resolution
-					if (activating)
-					{
-						window_imp->setFullscreenResolution();
-						window_imp->restore();
-					}
-					else
-					{
-						window_imp->minimize();
-						window_imp->resetDisplayResolution();
-					}
-				}
-
-				window_imp->mCallbacks->handleActivateApp(window_imp, activating);
-
-				break;
-			}
-
-		case WM_ACTIVATE:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_ACTIVATE");
-			{
-				// Can be one of WA_ACTIVE, WA_CLICKACTIVE, or WA_INACTIVE
-				BOOL activating = (LOWORD(w_param) != WA_INACTIVE);
-
-				BOOL minimized = BOOL(HIWORD(w_param));
-
-				if (!activating && LLWinImm::isAvailable() && window_imp->mPreeditor)
-				{
-					window_imp->interruptLanguageTextInput();
-				}
-
-				// JC - I'm not sure why, but if we don't report that we handled the 
-				// WM_ACTIVATE message, the WM_ACTIVATEAPP messages don't work 
-				// properly when we run fullscreen.
-				if (gDebugWindowProc)
-				{
-					LL_INFOS("Window") << "WINDOWPROC Activate "
-						<< " activating " << S32(activating) 
-						<< " minimized " << S32(minimized)
-						<< LL_ENDL;
-				}
-
-				// Don't handle this.
-				break;
-			}
-
-		case WM_QUERYOPEN:
-			// TODO: use this to return a nice icon
-			break;
-
-		case WM_SYSCOMMAND:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SYSCOMMAND");
-			switch(w_param)
-			{
-			case SC_KEYMENU: 
-				// Disallow the ALT key from triggering the default system menu.
-				return 0;		
-
-			case SC_SCREENSAVE:
-			case SC_MONITORPOWER:
-				// eat screen save messages and prevent them!
-				return 0;
-			}
-			break;
-
-		case WM_CLOSE:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_CLOSE");
-			// Will the app allow the window to close?
-			if (window_imp->mCallbacks->handleCloseRequest(window_imp))
-			{
-				// Get the app to initiate cleanup.
-				window_imp->mCallbacks->handleQuit(window_imp);
-				// The app is responsible for calling destroyWindow when done with GL
-			}
-			return 0;
-
-		case WM_DESTROY:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_DESTROY");
-			if (window_imp->shouldPostQuit())
-			{
-				PostQuitMessage(0);  // Posts WM_QUIT with an exit code of 0
-			}
-			return 0;
-
-		case WM_COMMAND:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_COMMAND");
-			if (!HIWORD(w_param)) // this message is from a menu
-			{
-				window_imp->mCallbacks->handleMenuSelect(window_imp, LOWORD(w_param));
-			}
-			break;
-
-		case WM_SYSKEYDOWN:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SYSKEYDOWN");
-			// allow system keys, such as ALT-F4 to be processed by Windows
-			eat_keystroke = FALSE;
-		case WM_KEYDOWN:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYDOWN");
-			{
-				if (gDebugWindowProc)
-				{
-					LL_INFOS("Window") << "Debug WindowProc WM_KEYDOWN "
-						<< " key " << S32(w_param) 
-						<< LL_ENDL;
-				}
-				if(gKeyboard->handleKeyDown(w_param, mask) && eat_keystroke)
-				{
-					return 0;
-				}
-				// pass on to windows if we didn't handle it
-				break;
-			}
-		case WM_SYSKEYUP:
-			eat_keystroke = FALSE;
-		case WM_KEYUP:
-		{
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYUP");
-			LLFastTimer t2(FTM_KEYHANDLER);
-
-			if (gDebugWindowProc)
-			{
-				LL_INFOS("Window") << "Debug WindowProc WM_KEYUP "
-					<< " key " << S32(w_param) 
-					<< LL_ENDL;
-			}
-			if (gKeyboard->handleKeyUp(w_param, mask) && eat_keystroke)
-			{
-				return 0;
-			}
-
-			// pass on to windows
-			break;
-		}
-		case WM_IME_SETCONTEXT:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_SETCONTEXT");
-			if (gDebugWindowProc)
-			{
-				llinfos << "WM_IME_SETCONTEXT" << llendl;
-			}
-			if (LLWinImm::isAvailable() && window_imp->mPreeditor)
-			{
-				l_param &= ~ISC_SHOWUICOMPOSITIONWINDOW;
-				// Invoke DefWinProc with the modified LPARAM.
-			}
-			break;
-
-		case WM_IME_STARTCOMPOSITION:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_STARTCOMPOSITION");
-			if (gDebugWindowProc)
-			{
-				llinfos << "WM_IME_STARTCOMPOSITION" << llendl;
-			}
-			if (LLWinImm::isAvailable() && window_imp->mPreeditor)
-			{
-				window_imp->handleStartCompositionMessage();
-				return 0;
-			}
-			break;
-
-		case WM_IME_ENDCOMPOSITION:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_ENDCOMPOSITION");
-			if (gDebugWindowProc)
-			{
-				llinfos << "WM_IME_ENDCOMPOSITION" << llendl;
-			}
-			if (LLWinImm::isAvailable() && window_imp->mPreeditor)
-			{
-				return 0;
-			}
-			break;
-
-		case WM_IME_COMPOSITION:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_COMPOSITION");
-			if (gDebugWindowProc)
-			{
-				llinfos << "WM_IME_COMPOSITION" << llendl;
-			}
-			if (LLWinImm::isAvailable() && window_imp->mPreeditor)
-			{
-				window_imp->handleCompositionMessage(l_param);
-				return 0;
-			}
-			break;
-
-		case WM_IME_REQUEST:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_REQUEST");
-			if (gDebugWindowProc)
-			{
-				llinfos << "WM_IME_REQUEST" << llendl;
-			}
-			if (LLWinImm::isAvailable() && window_imp->mPreeditor)
-			{
-				LRESULT result = 0;
-				if (window_imp->handleImeRequests(w_param, l_param, &result))
-				{
-					return result;
-				}
-			}
-			break;
-
-		case WM_CHAR:
-			// Should really use WM_UNICHAR eventually, but it requires a specific Windows version and I need
-			// to figure out how that works. - Doug
-			//
-			// ... Well, I don't think so.
-			// How it works is explained in Win32 API document, but WM_UNICHAR didn't work
-			// as specified at least on Windows XP SP1 Japanese version.  I have never used
-			// it since then, and I'm not sure whether it has been fixed now, but I don't think
-			// it is worth trying.  The good old WM_CHAR works just fine even for supplementary
-			// characters.  We just need to take care of surrogate pairs sent as two WM_CHAR's
-			// by ourselves.  It is not that tough.  -- Alissa Sabre @ SL
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_CHAR");
-			if (gDebugWindowProc)
-			{
-				LL_INFOS("Window") << "Debug WindowProc WM_CHAR "
-					<< " key " << S32(w_param) 
-					<< LL_ENDL;
-			}
-			// Even if LLWindowCallbacks::handleUnicodeChar(llwchar, BOOL) returned FALSE,
-			// we *did* processed the event, so I believe we should not pass it to DefWindowProc...
-			window_imp->handleUnicodeUTF16((U16)w_param, gKeyboard->currentMask(FALSE));
-			return 0;
-
-		case WM_LBUTTONDOWN:
-			{
-				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_LBUTTONDOWN");
-				LLFastTimer t2(FTM_MOUSEHANDLER);
-				if (LLWinImm::isAvailable() && window_imp->mPreeditor)
-				{
-					window_imp->interruptLanguageTextInput();
-				}
-
-				// Because we move the cursor position in the app, we need to query
-				// to find out where the cursor at the time the event is handled.
-				// If we don't do this, many clicks could get buffered up, and if the
-				// first click changes the cursor position, all subsequent clicks
-				// will occur at the wrong location.  JC
-				LLCoordWindow cursor_coord_window;
-				if (window_imp->mMousePositionModified)
-				{
-					window_imp->getCursorPosition(&cursor_coord_window);
-					window_imp->convertCoords(cursor_coord_window, &gl_coord);
-				}
-				else
-				{
-					window_imp->convertCoords(window_coord, &gl_coord);
-				}
-				MASK mask = gKeyboard->currentMask(TRUE);
-				// generate move event to update mouse coordinates
-				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
-				if (window_imp->mCallbacks->handleMouseDown(window_imp, gl_coord, mask))
-				{
-					return 0;
-				}
-			}
-			break;
-
-		case WM_LBUTTONDBLCLK:
-		//RN: ignore right button double clicks for now
-		//case WM_RBUTTONDBLCLK:
-			{
-				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_LBUTTONDBLCLK");
-				// Because we move the cursor position in the app, we need to query
-				// to find out where the cursor at the time the event is handled.
-				// If we don't do this, many clicks could get buffered up, and if the
-				// first click changes the cursor position, all subsequent clicks
-				// will occur at the wrong location.  JC
-				LLCoordWindow cursor_coord_window;
-				if (window_imp->mMousePositionModified)
-				{
-					window_imp->getCursorPosition(&cursor_coord_window);
-					window_imp->convertCoords(cursor_coord_window, &gl_coord);
-				}
-				else
-				{
-					window_imp->convertCoords(window_coord, &gl_coord);
-				}
-				MASK mask = gKeyboard->currentMask(TRUE);
-				// generate move event to update mouse coordinates
-				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
-				if (window_imp->mCallbacks->handleDoubleClick(window_imp, gl_coord, mask) )
-				{
-					return 0;
-				}
-			}
-			break;
-
-		case WM_LBUTTONUP:
-			{
-				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_LBUTTONUP");
-				LLFastTimer t2(FTM_MOUSEHANDLER);
-				//if (gDebugClicks)
-				//{
-				//	LL_INFOS("Window") << "WndProc left button up" << LL_ENDL;
-				//}
-				// Because we move the cursor position in the app, we need to query
-				// to find out where the cursor at the time the event is handled.
-				// If we don't do this, many clicks could get buffered up, and if the
-				// first click changes the cursor position, all subsequent clicks
-				// will occur at the wrong location.  JC
-				LLCoordWindow cursor_coord_window;
-				if (window_imp->mMousePositionModified)
-				{
-					window_imp->getCursorPosition(&cursor_coord_window);
-					window_imp->convertCoords(cursor_coord_window, &gl_coord);
-				}
-				else
-				{
-					window_imp->convertCoords(window_coord, &gl_coord);
-				}
-				MASK mask = gKeyboard->currentMask(TRUE);
-				// generate move event to update mouse coordinates
-				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
-				if (window_imp->mCallbacks->handleMouseUp(window_imp, gl_coord, mask))
-				{
-					return 0;
-				}
-			}
-			break;
-
-		case WM_RBUTTONDBLCLK:
-		case WM_RBUTTONDOWN:
-			{
-				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_RBUTTONDOWN");
-				LLFastTimer t2(FTM_MOUSEHANDLER);
-				if (LLWinImm::isAvailable() && window_imp->mPreeditor)
-				{
-					window_imp->interruptLanguageTextInput();
-				}
-
-				// Because we move the cursor position in the llviewerapp, we need to query
-				// to find out where the cursor at the time the event is handled.
-				// If we don't do this, many clicks could get buffered up, and if the
-				// first click changes the cursor position, all subsequent clicks
-				// will occur at the wrong location.  JC
-				LLCoordWindow cursor_coord_window;
-				if (window_imp->mMousePositionModified)
-				{
-					window_imp->getCursorPosition(&cursor_coord_window);
-					window_imp->convertCoords(cursor_coord_window, &gl_coord);
-				}
-				else
-				{
-					window_imp->convertCoords(window_coord, &gl_coord);
-				}
-				MASK mask = gKeyboard->currentMask(TRUE);
-				// generate move event to update mouse coordinates
-				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
-				if (window_imp->mCallbacks->handleRightMouseDown(window_imp, gl_coord, mask))
-				{
-					return 0;
-				}
-			}
-			break;
-
-		case WM_RBUTTONUP:
-			{
-				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_RBUTTONUP");
-				LLFastTimer t2(FTM_MOUSEHANDLER);
-				// Because we move the cursor position in the app, we need to query
-				// to find out where the cursor at the time the event is handled.
-				// If we don't do this, many clicks could get buffered up, and if the
-				// first click changes the cursor position, all subsequent clicks
-				// will occur at the wrong location.  JC
-				LLCoordWindow cursor_coord_window;
-				if (window_imp->mMousePositionModified)
-				{
-					window_imp->getCursorPosition(&cursor_coord_window);
-					window_imp->convertCoords(cursor_coord_window, &gl_coord);
-				}
-				else
-				{
-					window_imp->convertCoords(window_coord, &gl_coord);
-				}
-				MASK mask = gKeyboard->currentMask(TRUE);
-				// generate move event to update mouse coordinates
-				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
-				if (window_imp->mCallbacks->handleRightMouseUp(window_imp, gl_coord, mask))
-				{
-					return 0;
-				}
-			}
-			break;
-
-		case WM_MBUTTONDOWN:
-//		case WM_MBUTTONDBLCLK:
-			{
-				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MBUTTONDOWN");
-				LLFastTimer t2(FTM_MOUSEHANDLER);
-				if (LLWinImm::isAvailable() && window_imp->mPreeditor)
-				{
-					window_imp->interruptLanguageTextInput();
-				}
-
-				// Because we move the cursor position in tllviewerhe app, we need to query
-				// to find out where the cursor at the time the event is handled.
-				// If we don't do this, many clicks could get buffered up, and if the
-				// first click changes the cursor position, all subsequent clicks
-				// will occur at the wrong location.  JC
-				LLCoordWindow cursor_coord_window;
-				if (window_imp->mMousePositionModified)
-				{
-					window_imp->getCursorPosition(&cursor_coord_window);
-					window_imp->convertCoords(cursor_coord_window, &gl_coord);
-				}
-				else
-				{
-					window_imp->convertCoords(window_coord, &gl_coord);
-				}
-				MASK mask = gKeyboard->currentMask(TRUE);
-				// generate move event to update mouse coordinates
-				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
-				if (window_imp->mCallbacks->handleMiddleMouseDown(window_imp, gl_coord, mask))
-				{
-					return 0;
-				}
-			}
-			break;
-
-		case WM_MBUTTONUP:
-			{
-				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MBUTTONUP");
-				LLFastTimer t2(FTM_MOUSEHANDLER);
-				// Because we move the cursor position in the llviewer app, we need to query
-				// to find out where the cursor at the time the event is handled.
-				// If we don't do this, many clicks could get buffered up, and if the
-				// first click changes the cursor position, all subsequent clicks
-				// will occur at the wrong location.  JC
-				LLCoordWindow cursor_coord_window;
-				if (window_imp->mMousePositionModified)
-				{
-					window_imp->getCursorPosition(&cursor_coord_window);
-					window_imp->convertCoords(cursor_coord_window, &gl_coord);
-				}
-				else
-				{
-					window_imp->convertCoords(window_coord, &gl_coord);
-				}
-				MASK mask = gKeyboard->currentMask(TRUE);
-				// generate move event to update mouse coordinates
-				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
-				if (window_imp->mCallbacks->handleMiddleMouseUp(window_imp, gl_coord, mask))
-				{
-					return 0;
-				}
-			}
-			break;
-
-		case WM_MOUSEWHEEL:
-			{
-				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MOUSEWHEEL");
-				static short z_delta = 0;
-
-				RECT	client_rect;
-
-				// eat scroll events that occur outside our window, since we use mouse position to direct scroll
-				// instead of keyboard focus
-				// NOTE: mouse_coord is in *window* coordinates for scroll events
-				POINT mouse_coord = {(S32)(S16)LOWORD(l_param), (S32)(S16)HIWORD(l_param)};
-
-				if (ScreenToClient(window_imp->mWindowHandle, &mouse_coord)
-					&& GetClientRect(window_imp->mWindowHandle, &client_rect))
-				{
-					// we have a valid mouse point and client rect
-					if (mouse_coord.x < client_rect.left || client_rect.right < mouse_coord.x
-						|| mouse_coord.y < client_rect.top || client_rect.bottom < mouse_coord.y)
-					{
-						// mouse is outside of client rect, so don't do anything
-						return 0;
-					}
-				}
-
-				S16 incoming_z_delta = HIWORD(w_param);
-				z_delta += incoming_z_delta;
-				// cout << "z_delta " << z_delta << endl;
-
-				// current mouse wheels report changes in increments of zDelta (+120, -120)
-				// Future, higher resolution mouse wheels may report smaller deltas.
-				// So we sum the deltas and only act when we've exceeded WHEEL_DELTA
-				//
-				// If the user rapidly spins the wheel, we can get messages with
-				// large deltas, like 480 or so.  Thus we need to scroll more quickly.
-				if (z_delta <= -WHEEL_DELTA || WHEEL_DELTA <= z_delta)
-				{
-					window_imp->mCallbacks->handleScrollWheel(window_imp, -z_delta / WHEEL_DELTA);
-					z_delta = 0;
-				}
-				return 0;
-			}
-			/*
-			// TODO: add this after resolving _WIN32_WINNT issue
-			case WM_MOUSELEAVE:
-			{
-			window_imp->mCallbacks->handleMouseLeave(window_imp);
-
-			//				TRACKMOUSEEVENT track_mouse_event;
-			//				track_mouse_event.cbSize = sizeof( TRACKMOUSEEVENT );
-			//				track_mouse_event.dwFlags = TME_LEAVE;
-			//				track_mouse_event.hwndTrack = h_wnd;
-			//				track_mouse_event.dwHoverTime = HOVER_DEFAULT;
-			//				TrackMouseEvent( &track_mouse_event ); 
-			return 0;
-			}
-			*/
-			// Handle mouse movement within the window
-		case WM_MOUSEMOVE:
-			{
-				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MOUSEMOVE");
-				window_imp->convertCoords(window_coord, &gl_coord);
-				MASK mask = gKeyboard->currentMask(TRUE);
-				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
-				return 0;
-			}
-
-		case WM_SIZE:
-			{
-				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SIZE");
-				S32 width = S32( LOWORD(l_param) );
-				S32 height = S32( HIWORD(l_param) );
-
-				if (gDebugWindowProc)
-				{
-					BOOL maximized = ( w_param == SIZE_MAXIMIZED );
-					BOOL restored  = ( w_param == SIZE_RESTORED );
-					BOOL minimized = ( w_param == SIZE_MINIMIZED );
-
-					LL_INFOS("Window") << "WINDOWPROC Size "
-						<< width << "x" << height
-						<< " max " << S32(maximized)
-						<< " min " << S32(minimized)
-						<< " rest " << S32(restored)
-						<< LL_ENDL;
-				}
-
-				// There's an odd behavior with WM_SIZE that I would call a bug. If 
-				// the window is maximized, and you call MoveWindow() with a size smaller
-				// than a maximized window, it ends up sending WM_SIZE with w_param set 
-				// to SIZE_MAXIMIZED -- which isn't true. So the logic below doesn't work.
-				// (SL-44655). Fixed it by calling ShowWindow(SW_RESTORE) first (see 
-				// LLWindowWin32::moveWindow in this file). 
-
-				// If we are now restored, but we weren't before, this
-				// means that the window was un-minimized.
-				if (w_param == SIZE_RESTORED && window_imp->mLastSizeWParam != SIZE_RESTORED)
-				{
-					window_imp->mCallbacks->handleActivate(window_imp, TRUE);
-				}
-
-				// handle case of window being maximized from fully minimized state
-				if (w_param == SIZE_MAXIMIZED && window_imp->mLastSizeWParam != SIZE_MAXIMIZED)
-				{
-					window_imp->mCallbacks->handleActivate(window_imp, TRUE);
-				}
-
-				// Also handle the minimization case
-				if (w_param == SIZE_MINIMIZED && window_imp->mLastSizeWParam != SIZE_MINIMIZED)
-				{
-					window_imp->mCallbacks->handleActivate(window_imp, FALSE);
-				}
-
-				// Actually resize all of our views
-				if (w_param != SIZE_MINIMIZED)
-				{
-					// Ignore updates for minimizing and minimized "windows"
-					window_imp->mCallbacks->handleResize(	window_imp, 
-						LOWORD(l_param), 
-						HIWORD(l_param) );
-				}
-
-				window_imp->mLastSizeWParam = w_param;
-
-				return 0;
-			}
-
-		case WM_SETFOCUS:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SETFOCUS");
-			if (gDebugWindowProc)
-			{
-				LL_INFOS("Window") << "WINDOWPROC SetFocus" << LL_ENDL;
-			}
-			window_imp->mCallbacks->handleFocus(window_imp);
-			return 0;
-
-		case WM_KILLFOCUS:
-			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KILLFOCUS");
-			if (gDebugWindowProc)
-			{
-				LL_INFOS("Window") << "WINDOWPROC KillFocus" << LL_ENDL;
-			}
-			window_imp->mCallbacks->handleFocusLost(window_imp);
-			return 0;
-
-		case WM_COPYDATA:
-			{
-				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_COPYDATA");
-				// received a URL
-				PCOPYDATASTRUCT myCDS = (PCOPYDATASTRUCT) l_param;
-				window_imp->mCallbacks->handleDataCopy(window_imp, myCDS->dwData, myCDS->lpData);
-			};
-			return 0;			
-
-			break;
-		}
-
-	window_imp->mCallbacks->handlePauseWatchdog(window_imp);	
-	}
-
-
-	// pass unhandled messages down to Windows
-	return DefWindowProc(h_wnd, u_msg, w_param, l_param);
-}
-
-BOOL LLWindowWin32::convertCoords(LLCoordGL from, LLCoordWindow *to)
-{
-	S32		client_height;
-	RECT	client_rect;
-	LLCoordWindow window_position;
-
-	if (!mWindowHandle ||
-		!GetClientRect(mWindowHandle, &client_rect) ||
-		NULL == to)
-	{
-		return FALSE;
-	}
-
-	to->mX = from.mX;
-	client_height = client_rect.bottom - client_rect.top;
-	to->mY = client_height - from.mY - 1;
-
-	return TRUE;
-}
-
-BOOL LLWindowWin32::convertCoords(LLCoordWindow from, LLCoordGL* to)
-{
-	S32		client_height;
-	RECT	client_rect;
-
-	if (!mWindowHandle ||
-		!GetClientRect(mWindowHandle, &client_rect) ||
-		NULL == to)
-	{
-		return FALSE;
-	}
-
-	to->mX = from.mX;
-	client_height = client_rect.bottom - client_rect.top;
-	to->mY = client_height - from.mY - 1;
-
-	return TRUE;
-}
-
-BOOL LLWindowWin32::convertCoords(LLCoordScreen from, LLCoordWindow* to)
-{	
-	POINT mouse_point;
-
-	mouse_point.x = from.mX;
-	mouse_point.y = from.mY;
-	BOOL result = ScreenToClient(mWindowHandle, &mouse_point);
-
-	if (result)
-	{
-		to->mX = mouse_point.x;
-		to->mY = mouse_point.y;
-	}
-
-	return result;
-}
-
-BOOL LLWindowWin32::convertCoords(LLCoordWindow from, LLCoordScreen *to)
-{
-	POINT mouse_point;
-
-	mouse_point.x = from.mX;
-	mouse_point.y = from.mY;
-	BOOL result = ClientToScreen(mWindowHandle, &mouse_point);
-
-	if (result)
-	{
-		to->mX = mouse_point.x;
-		to->mY = mouse_point.y;
-	}
-
-	return result;
-}
-
-BOOL LLWindowWin32::convertCoords(LLCoordScreen from, LLCoordGL *to)
-{
-	LLCoordWindow window_coord;
-
-	if (!mWindowHandle || (NULL == to))
-	{
-		return FALSE;
-	}
-
-	convertCoords(from, &window_coord);
-	convertCoords(window_coord, to);
-	return TRUE;
-}
-
-BOOL LLWindowWin32::convertCoords(LLCoordGL from, LLCoordScreen *to)
-{
-	LLCoordWindow window_coord;
-
-	if (!mWindowHandle || (NULL == to))
-	{
-		return FALSE;
-	}
-
-	convertCoords(from, &window_coord);
-	convertCoords(window_coord, to);
-	return TRUE;
-}
-
-
-BOOL LLWindowWin32::isClipboardTextAvailable()
-{
-	return IsClipboardFormatAvailable(CF_UNICODETEXT);
-}
-
-
-BOOL LLWindowWin32::pasteTextFromClipboard(LLWString &dst)
-{
-	BOOL success = FALSE;
-
-	if (IsClipboardFormatAvailable(CF_UNICODETEXT))
-	{
-		if (OpenClipboard(mWindowHandle))
-		{
-			HGLOBAL h_data = GetClipboardData(CF_UNICODETEXT);
-			if (h_data)
-			{
-				WCHAR *utf16str = (WCHAR*) GlobalLock(h_data);
-				if (utf16str)
-				{
-					dst = utf16str_to_wstring(utf16str);
-					LLWStringUtil::removeCRLF(dst);
-					GlobalUnlock(h_data);
-					success = TRUE;
-				}
-			}
-			CloseClipboard();
-		}
-	}
-
-	return success;
-}
-
-
-BOOL LLWindowWin32::copyTextToClipboard(const LLWString& wstr)
-{
-	BOOL success = FALSE;
-
-	if (OpenClipboard(mWindowHandle))
-	{
-		EmptyClipboard();
-
-		// Provide a copy of the data in Unicode format.
-		LLWString sanitized_string(wstr);
-		LLWStringUtil::addCRLF(sanitized_string);
-		llutf16string out_utf16 = wstring_to_utf16str(sanitized_string);
-		const size_t size_utf16 = (out_utf16.length() + 1) * sizeof(WCHAR);
-
-		// Memory is allocated and then ownership of it is transfered to the system.
-		HGLOBAL hglobal_copy_utf16 = GlobalAlloc(GMEM_MOVEABLE, size_utf16); 
-		if (hglobal_copy_utf16)
-		{
-			WCHAR* copy_utf16 = (WCHAR*) GlobalLock(hglobal_copy_utf16);
-			if (copy_utf16)
-			{
-				memcpy(copy_utf16, out_utf16.c_str(), size_utf16);	/* Flawfinder: ignore */
-				GlobalUnlock(hglobal_copy_utf16);
-
-				if (SetClipboardData(CF_UNICODETEXT, hglobal_copy_utf16))
-				{
-					success = TRUE;
-				}
-			}
-		}
-
-		CloseClipboard();
-	}
-
-	return success;
-}
-
-// Constrains the mouse to the window.
-void LLWindowWin32::setMouseClipping( BOOL b )
-{
-	if( b != mIsMouseClipping )
-	{
-		BOOL success = FALSE;
-
-		if( b )
-		{
-			GetClipCursor( &mOldMouseClip );
-
-			RECT client_rect_in_screen_space;
-			if( getClientRectInScreenSpace( &client_rect_in_screen_space ) )
-			{
-				success = ClipCursor( &client_rect_in_screen_space );
-			}
-		}
-		else
-		{
-			// Must restore the old mouse clip, which may be set by another window.
-			success = ClipCursor( &mOldMouseClip );
-			SetRect( &mOldMouseClip, 0, 0, 0, 0 );
-		}
-
-		if( success )
-		{
-			mIsMouseClipping = b;
-		}
-	}
-}
-
-BOOL LLWindowWin32::getClientRectInScreenSpace( RECT* rectp )
-{
-	BOOL success = FALSE;
-
-	RECT client_rect;
-	if( mWindowHandle && GetClientRect(mWindowHandle, &client_rect) )
-	{
-		POINT top_left;
-		top_left.x = client_rect.left;
-		top_left.y = client_rect.top;
-		ClientToScreen(mWindowHandle, &top_left); 
-
-		POINT bottom_right;
-		bottom_right.x = client_rect.right;
-		bottom_right.y = client_rect.bottom;
-		ClientToScreen(mWindowHandle, &bottom_right); 
-
-		SetRect( rectp,
-			top_left.x,
-			top_left.y,
-			bottom_right.x,
-			bottom_right.y );
-
-		success = TRUE;
-	}
-
-	return success;
-}
-
-void LLWindowWin32::flashIcon(F32 seconds)
-{
-	FLASHWINFO flash_info;
-
-	flash_info.cbSize = sizeof(FLASHWINFO);
-	flash_info.hwnd = mWindowHandle;
-	flash_info.dwFlags = FLASHW_TRAY;
-	flash_info.uCount = UINT(seconds / ICON_FLASH_TIME);
-	flash_info.dwTimeout = DWORD(1000.f * ICON_FLASH_TIME); // milliseconds
-	FlashWindowEx(&flash_info);
-}
-
-F32 LLWindowWin32::getGamma()
-{
-	return mCurrentGamma;
-}
-
-BOOL LLWindowWin32::restoreGamma()
-{
-	return SetDeviceGammaRamp(mhDC, mPrevGammaRamp);
-}
-
-BOOL LLWindowWin32::setGamma(const F32 gamma)
-{
-	mCurrentGamma = gamma;
-
-	LL_DEBUGS("Window") << "Setting gamma to " << gamma << LL_ENDL;
-
-	for ( int i = 0; i < 256; ++i )
-	{
-		int mult = 256 - ( int ) ( ( gamma - 1.0f ) * 128.0f );
-
-		int value = mult * i;
-
-		if ( value > 0xffff )
-			value = 0xffff;
-
-		mCurrentGammaRamp [ 0 * 256 + i ] = 
-			mCurrentGammaRamp [ 1 * 256 + i ] = 
-				mCurrentGammaRamp [ 2 * 256 + i ] = ( WORD )value;
-	};
-
-	return SetDeviceGammaRamp ( mhDC, mCurrentGammaRamp );
-}
-
-void LLWindowWin32::setFSAASamples(const U32 fsaa_samples)
-{
-	mFSAASamples = fsaa_samples;
-}
-
-U32 LLWindowWin32::getFSAASamples()
-{
-	return mFSAASamples;
-}
-
-LLWindow::LLWindowResolution* LLWindowWin32::getSupportedResolutions(S32 &num_resolutions)
-{
-	if (!mSupportedResolutions)
-	{
-		mSupportedResolutions = new LLWindowResolution[MAX_NUM_RESOLUTIONS];
-		DEVMODE dev_mode;
-
-		mNumSupportedResolutions = 0;
-		for (S32 mode_num = 0; mNumSupportedResolutions < MAX_NUM_RESOLUTIONS; mode_num++)
-		{
-			if (!EnumDisplaySettings(NULL, mode_num, &dev_mode))
-			{
-				break;
-			}
-
-			if (dev_mode.dmBitsPerPel == BITS_PER_PIXEL &&
-				dev_mode.dmPelsWidth >= 800 &&
-				dev_mode.dmPelsHeight >= 600)
-			{
-				BOOL resolution_exists = FALSE;
-				for(S32 i = 0; i < mNumSupportedResolutions; i++)
-				{
-					if (mSupportedResolutions[i].mWidth == dev_mode.dmPelsWidth &&
-						mSupportedResolutions[i].mHeight == dev_mode.dmPelsHeight)
-					{
-						resolution_exists = TRUE;
-					}
-				}
-				if (!resolution_exists)
-				{
-					mSupportedResolutions[mNumSupportedResolutions].mWidth = dev_mode.dmPelsWidth;
-					mSupportedResolutions[mNumSupportedResolutions].mHeight = dev_mode.dmPelsHeight;
-					mNumSupportedResolutions++;
-				}
-			}
-		}
-	}
-
-	num_resolutions = mNumSupportedResolutions;
-	return mSupportedResolutions;
-}
-
-
-F32 LLWindowWin32::getNativeAspectRatio()
-{
-	if (mOverrideAspectRatio > 0.f)
-	{
-		return mOverrideAspectRatio;
-	}
-	else if (mNativeAspectRatio > 0.f)
-	{
-		// we grabbed this value at startup, based on the user's desktop settings
-		return mNativeAspectRatio;
-	}
-	// RN: this hack presumes that the largest supported resolution is monitor-limited
-	// and that pixels in that mode are square, therefore defining the native aspect ratio
-	// of the monitor...this seems to work to a close approximation for most CRTs/LCDs
-	S32 num_resolutions;
-	LLWindowResolution* resolutions = getSupportedResolutions(num_resolutions);
-
-	return ((F32)resolutions[num_resolutions - 1].mWidth / (F32)resolutions[num_resolutions - 1].mHeight);
-}
-
-F32 LLWindowWin32::getPixelAspectRatio()
-{
-	F32 pixel_aspect = 1.f;
-	if (getFullscreen())
-	{
-		LLCoordScreen screen_size;
-		getSize(&screen_size);
-		pixel_aspect = getNativeAspectRatio() * (F32)screen_size.mY / (F32)screen_size.mX;
-	}
-
-	return pixel_aspect;
-}
-
-// Change display resolution.  Returns true if successful.
-// protected
-BOOL LLWindowWin32::setDisplayResolution(S32 width, S32 height, S32 bits, S32 refresh)
-{
-	DEVMODE dev_mode;
-	dev_mode.dmSize = sizeof(dev_mode);
-	BOOL success = FALSE;
-
-	// Don't change anything if we don't have to
-	if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode))
-	{
-		if (dev_mode.dmPelsWidth        == width &&
-			dev_mode.dmPelsHeight       == height &&
-			dev_mode.dmBitsPerPel       == bits &&
-			dev_mode.dmDisplayFrequency == refresh )
-		{
-			// ...display mode identical, do nothing
-			return TRUE;
-		}
-	}
-
-	memset(&dev_mode, 0, sizeof(dev_mode));
-	dev_mode.dmSize = sizeof(dev_mode);
-	dev_mode.dmPelsWidth        = width;
-	dev_mode.dmPelsHeight       = height;
-	dev_mode.dmBitsPerPel       = bits;
-	dev_mode.dmDisplayFrequency = refresh;
-	dev_mode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT | DM_DISPLAYFREQUENCY;
-
-	// CDS_FULLSCREEN indicates that this is a temporary change to the device mode.
-	LONG cds_result = ChangeDisplaySettings(&dev_mode, CDS_FULLSCREEN);
-
-	success = (DISP_CHANGE_SUCCESSFUL == cds_result);
-
-	if (!success)
-	{
-		LL_WARNS("Window") << "setDisplayResolution failed, "
-			<< width << "x" << height << "x" << bits << " @ " << refresh << LL_ENDL;
-	}
-
-	return success;
-}
-
-// protected
-BOOL LLWindowWin32::setFullscreenResolution()
-{
-	if (mFullscreen)
-	{
-		return setDisplayResolution( mFullscreenWidth, mFullscreenHeight, mFullscreenBits, mFullscreenRefresh);
-	}
-	else
-	{
-		return FALSE;
-	}
-}
-
-// protected
-BOOL LLWindowWin32::resetDisplayResolution()
-{
-	LL_DEBUGS("Window") << "resetDisplayResolution START" << LL_ENDL;
-
-	LONG cds_result = ChangeDisplaySettings(NULL, 0);
-
-	BOOL success = (DISP_CHANGE_SUCCESSFUL == cds_result);
-
-	if (!success)
-	{
-		LL_WARNS("Window") << "resetDisplayResolution failed" << LL_ENDL;
-	}
-
-	LL_DEBUGS("Window") << "resetDisplayResolution END" << LL_ENDL;
-
-	return success;
-}
-
-void LLWindowWin32::swapBuffers()
-{
-	SwapBuffers(mhDC);
-}
-
-
-//
-// LLSplashScreenImp
-//
-LLSplashScreenWin32::LLSplashScreenWin32()
-:	mWindow(NULL)
-{
-}
-
-LLSplashScreenWin32::~LLSplashScreenWin32()
-{
-}
-
-void LLSplashScreenWin32::showImpl()
-{
-	// This appears to work.  ???
-	HINSTANCE hinst = GetModuleHandle(NULL);
-
-	mWindow = CreateDialog(hinst, 
-		TEXT("SPLASHSCREEN"), 
-		NULL,	// no parent
-		(DLGPROC) LLSplashScreenWin32::windowProc); 
-	ShowWindow(mWindow, SW_SHOW);
-}
-
-
-void LLSplashScreenWin32::updateImpl(const std::string& mesg)
-{
-	if (!mWindow) return;
-
-	WCHAR w_mesg[1024];
-	mbstowcs(w_mesg, mesg.c_str(), 1024);
-
-	SendDlgItemMessage(mWindow,
-		666,		// HACK: text id
-		WM_SETTEXT,
-		FALSE,
-		(LPARAM)w_mesg);
-}
-
-
-void LLSplashScreenWin32::hideImpl()
-{
-	if (mWindow)
-	{
-		DestroyWindow(mWindow);
-		mWindow = NULL; 
-	}
-}
-
-
-// static
-LRESULT CALLBACK LLSplashScreenWin32::windowProc(HWND h_wnd, UINT u_msg,
-											WPARAM w_param, LPARAM l_param)
-{
-	// Just give it to windows
-	return DefWindowProc(h_wnd, u_msg, w_param, l_param);
-}
-
-//
-// Helper Funcs
-//
-
-S32 OSMessageBoxWin32(const std::string& text, const std::string& caption, U32 type)
-{
-	UINT uType;
-
-	switch(type)
-	{
-	case OSMB_OK:
-		uType = MB_OK;
-		break;
-	case OSMB_OKCANCEL:
-		uType = MB_OKCANCEL;
-		break;
-	case OSMB_YESNO:
-		uType = MB_YESNO;
-		break;
-	default:
-		uType = MB_OK;
-		break;
-	}
-
-	// HACK! Doesn't properly handle wide strings!
-	int retval_win = MessageBoxA(NULL, text.c_str(), caption.c_str(), uType);
-	S32 retval;
-
-	switch(retval_win)
-	{
-	case IDYES:
-		retval = OSBTN_YES;
-		break;
-	case IDNO:
-		retval = OSBTN_NO;
-		break;
-	case IDOK:
-		retval = OSBTN_OK;
-		break;
-	case IDCANCEL:
-		retval = OSBTN_CANCEL;
-		break;
-	default:
-		retval = OSBTN_CANCEL;
-		break;
-	}
-
-	return retval;
-}
-
-
-void LLWindowWin32::spawnWebBrowser(const std::string& escaped_url )
-{
-	bool found = false;
-	S32 i;
-	for (i = 0; i < gURLProtocolWhitelistCount; i++)
-	{
-		if (escaped_url.find(gURLProtocolWhitelist[i]) == 0)
-		{
-			found = true;
-			break;
-		}
-	}
-
-	if (!found)
-	{
-		LL_WARNS("Window") << "spawn_web_browser() called for url with protocol not on whitelist: " << escaped_url << LL_ENDL;
-		return;
-	}
-
-	LL_INFOS("Window") << "Opening URL " << escaped_url << LL_ENDL;
-
-	// replaced ShellExecute code with ShellExecuteEx since ShellExecute doesn't work
-	// reliablly on Vista.
-
-	// this is madness.. no, this is..
-	LLWString url_wstring = utf8str_to_wstring( escaped_url );
-	llutf16string url_utf16 = wstring_to_utf16str( url_wstring );
-
-	// let the OS decide what to use to open the URL
-	SHELLEXECUTEINFO sei = { sizeof( sei ) };
-	sei.fMask = SEE_MASK_FLAG_DDEWAIT;
-	sei.nShow = SW_SHOWNORMAL;
-	sei.lpVerb = L"open";
-	sei.lpFile = url_utf16.c_str();
-	ShellExecuteEx( &sei );
-
-	//// TODO: LEAVING OLD CODE HERE SO I DON'T BONE OTHER MERGES
-	//// DELETE THIS ONCE THE MERGES ARE DONE
-
-	// Figure out the user's default web browser
-	// HKEY_CLASSES_ROOT\http\shell\open\command
-	/*
-	std::string reg_path_str = gURLProtocolWhitelistHandler[i] + "\\shell\\open\\command";
-	WCHAR reg_path_wstr[256];
-	mbstowcs( reg_path_wstr, reg_path_str.c_str(), LL_ARRAY_SIZE(reg_path_wstr) );
-
-	HKEY key;
-	WCHAR browser_open_wstr[1024];
-	DWORD buffer_length = 1024;
-	RegOpenKeyEx(HKEY_CLASSES_ROOT, reg_path_wstr, 0, KEY_QUERY_VALUE, &key);
-	RegQueryValueEx(key, NULL, NULL, NULL, (LPBYTE)browser_open_wstr, &buffer_length);
-	RegCloseKey(key);
-
-	// Convert to STL string
-	LLWString browser_open_wstring = utf16str_to_wstring(browser_open_wstr);
-
-	if (browser_open_wstring.length() < 2)
-	{
-		LL_WARNS("Window") << "Invalid browser executable in registry " << browser_open_wstring << LL_ENDL;
-		return;
-	}
-
-	// Extract the process that's supposed to be launched
-	LLWString browser_executable;
-	if (browser_open_wstring[0] == '"')
-	{
-		// executable is quoted, find the matching quote
-		size_t quote_pos = browser_open_wstring.find('"', 1);
-		// copy out the string including both quotes
-		browser_executable = browser_open_wstring.substr(0, quote_pos+1);
-	}
-	else
-	{
-		// executable not quoted, find a space
-		size_t space_pos = browser_open_wstring.find(' ', 1);
-		browser_executable = browser_open_wstring.substr(0, space_pos);
-	}
-
-	LL_DEBUGS("Window") << "Browser reg key: " << wstring_to_utf8str(browser_open_wstring) << LL_ENDL;
-	LL_INFOS("Window") << "Browser executable: " << wstring_to_utf8str(browser_executable) << LL_ENDL;
-
-	// Convert URL to wide string for Windows API
-	// Assume URL is UTF8, as can come from scripts
-	LLWString url_wstring = utf8str_to_wstring(escaped_url);
-	llutf16string url_utf16 = wstring_to_utf16str(url_wstring);
-
-	// Convert executable and path to wide string for Windows API
-	llutf16string browser_exec_utf16 = wstring_to_utf16str(browser_executable);
-
-	// ShellExecute returns HINSTANCE for backwards compatiblity.
-	// MS docs say to cast to int and compare to 32.
-	HWND our_window = NULL;
-	LPCWSTR directory_wstr = NULL;
-	int retval = (int) ShellExecute(our_window, 	// Flawfinder: ignore
-									L"open", 
-									browser_exec_utf16.c_str(), 
-									url_utf16.c_str(), 
-									directory_wstr,
-									SW_SHOWNORMAL);
-	if (retval > 32)
-	{
-		LL_DEBUGS("Window") << "load_url success with " << retval << LL_ENDL;
-	}
-	else
-	{
-		LL_INFOS("Window") << "load_url failure with " << retval << LL_ENDL;
-	}
-	*/
-}
-
-
-BOOL LLWindowWin32::dialogColorPicker( F32 *r, F32 *g, F32 *b )
-{
-	BOOL retval = FALSE;
-
-	static CHOOSECOLOR cc;
-	static COLORREF crCustColors[16];
-	cc.lStructSize = sizeof(CHOOSECOLOR);
-	cc.hwndOwner = mWindowHandle;
-	cc.hInstance = NULL;
-	cc.rgbResult = RGB ((*r * 255.f),(*g *255.f),(*b * 255.f));
-	//cc.rgbResult = RGB (0x80,0x80,0x80); 
-	cc.lpCustColors = crCustColors;
-	cc.Flags = CC_RGBINIT | CC_FULLOPEN;
-	cc.lCustData = 0;
-	cc.lpfnHook = NULL;
-	cc.lpTemplateName = NULL;
- 
-	// This call is modal, so pause agent
-	//send_agent_pause();	// this is in newview and we don't want to set up a dependency
-	{
-		retval = ChooseColor(&cc);
-	}
-	//send_agent_resume();	// this is in newview and we don't want to set up a dependency
-
-	*b = ((F32)((cc.rgbResult >> 16) & 0xff)) / 255.f;
-
-	*g = ((F32)((cc.rgbResult >> 8) & 0xff)) / 255.f;
-	
-	*r = ((F32)(cc.rgbResult & 0xff)) / 255.f;
-
-	return (retval);
-}
-
-void *LLWindowWin32::getPlatformWindow()
-{
-	return (void*)mWindowHandle;
-}
-
-void LLWindowWin32::bringToFront()
-{
-	BringWindowToTop(mWindowHandle);
-}
-
-// set (OS) window focus back to the client
-void LLWindowWin32::focusClient()
-{
-	SetFocus ( mWindowHandle );
-}
-
-void LLWindowWin32::allowLanguageTextInput(LLPreeditor *preeditor, BOOL b)
-{
-	if (b == sLanguageTextInputAllowed || !LLWinImm::isAvailable())
-	{
-		return;
-	}
-
-	if (preeditor != mPreeditor && !b)
-	{
-		// This condition may occur with a call to
-		// setEnabled(BOOL) from LLTextEditor or LLLineEditor
-		// when the control is not focused.
-		// We need to silently ignore the case so that
-		// the language input status of the focused control
-		// is not disturbed.
-		return;
-	}
-
-	// Take care of old and new preeditors.
-	if (preeditor != mPreeditor || !b)
-	{
-		if (sLanguageTextInputAllowed)
-		{
-			interruptLanguageTextInput();
-		}
-		mPreeditor = (b ? preeditor : NULL);
-	}
-
-	sLanguageTextInputAllowed = b;
-
-	if ( sLanguageTextInputAllowed )
-	{
-		// Allowing: Restore the previous IME status, so that the user has a feeling that the previous 
-		// text input continues naturally.  Be careful, however, the IME status is meaningful only during the user keeps 
-		// using same Input Locale (aka Keyboard Layout).
-		if (sWinIMEOpened && GetKeyboardLayout(0) == sWinInputLocale)
-		{
-			HIMC himc = LLWinImm::getContext(mWindowHandle);
-			LLWinImm::setOpenStatus(himc, TRUE);
-			LLWinImm::setConversionStatus(himc, sWinIMEConversionMode, sWinIMESentenceMode);
-			LLWinImm::releaseContext(mWindowHandle, himc);
-		}
-	}
-	else
-	{
-		// Disallowing: Turn off the IME so that succeeding key events bypass IME and come to us directly.
-		// However, do it after saving the current IME  status.  We need to restore the status when
-		//   allowing language text input again.
-		sWinInputLocale = GetKeyboardLayout(0);
-		sWinIMEOpened = LLWinImm::isIME(sWinInputLocale);
-		if (sWinIMEOpened)
-		{
-			HIMC himc = LLWinImm::getContext(mWindowHandle);
-			sWinIMEOpened = LLWinImm::getOpenStatus(himc);
-			if (sWinIMEOpened)
-			{
-				LLWinImm::getConversionStatus(himc, &sWinIMEConversionMode, &sWinIMESentenceMode);
-
-				// We need both ImmSetConversionStatus and ImmSetOpenStatus here to surely disable IME's 
-				// keyboard hooking, because Some IME reacts only on the former and some other on the latter...
-				LLWinImm::setConversionStatus(himc, IME_CMODE_NOCONVERSION, sWinIMESentenceMode);
-				LLWinImm::setOpenStatus(himc, FALSE);
-			}
-			LLWinImm::releaseContext(mWindowHandle, himc);
- 		}
-	}
-}
-
-void LLWindowWin32::fillCandidateForm(const LLCoordGL& caret, const LLRect& bounds, 
-		CANDIDATEFORM *form)
-{
-	LLCoordWindow caret_coord, top_left, bottom_right;
-	convertCoords(caret, &caret_coord);
-	convertCoords(LLCoordGL(bounds.mLeft, bounds.mTop), &top_left);
-	convertCoords(LLCoordGL(bounds.mRight, bounds.mBottom), &bottom_right);
-
-	memset(form, 0, sizeof(CANDIDATEFORM));
-	form->dwStyle = CFS_EXCLUDE;
-	form->ptCurrentPos.x = caret_coord.mX;
-	form->ptCurrentPos.y = caret_coord.mY;
-	form->rcArea.left   = top_left.mX;
-	form->rcArea.top    = top_left.mY;
-	form->rcArea.right  = bottom_right.mX;
-	form->rcArea.bottom = bottom_right.mY;
-}
-
-
-// Put the IME window at the right place (near current text input).   Point coordinates should be the top of the current text line.
-void LLWindowWin32::setLanguageTextInput( const LLCoordGL & position )
-{
-	if (sLanguageTextInputAllowed && LLWinImm::isAvailable())
-	{
-		HIMC himc = LLWinImm::getContext(mWindowHandle);
-
-		LLCoordWindow win_pos;
-		convertCoords( position, &win_pos );
-
-		if ( win_pos.mX >= 0 && win_pos.mY >= 0 && 
-			(win_pos.mX != sWinIMEWindowPosition.mX) || (win_pos.mY != sWinIMEWindowPosition.mY) )
-		{
-			COMPOSITIONFORM ime_form;
-			memset( &ime_form, 0, sizeof(ime_form) );
-			ime_form.dwStyle = CFS_POINT;
-			ime_form.ptCurrentPos.x = win_pos.mX;
-			ime_form.ptCurrentPos.y = win_pos.mY;
-
-			LLWinImm::setCompositionWindow( himc, &ime_form );
-
-			sWinIMEWindowPosition.set( win_pos.mX, win_pos.mY );
-		}
-
-		LLWinImm::releaseContext(mWindowHandle, himc);
-	}
-}
-
-
-void LLWindowWin32::fillCharPosition(const LLCoordGL& caret, const LLRect& bounds, const LLRect& control,
-		IMECHARPOSITION *char_position)
-{
-	LLCoordScreen caret_coord, top_left, bottom_right;
-	convertCoords(caret, &caret_coord);
-	convertCoords(LLCoordGL(bounds.mLeft, bounds.mTop), &top_left);
-	convertCoords(LLCoordGL(bounds.mRight, bounds.mBottom), &bottom_right);
-
-	char_position->pt.x = caret_coord.mX;
-	char_position->pt.y = top_left.mY;	// Windows wants the coordinate of upper left corner of a character...
-	char_position->cLineHeight = bottom_right.mY - top_left.mY;
-	char_position->rcDocument.left   = top_left.mX;
-	char_position->rcDocument.top    = top_left.mY;
-	char_position->rcDocument.right  = bottom_right.mX;
-	char_position->rcDocument.bottom = bottom_right.mY;
-}
-
-void LLWindowWin32::fillCompositionLogfont(LOGFONT *logfont)
-{
-	// Our font is a list of FreeType recognized font files that may
-	// not have a corresponding ones in Windows' fonts.  Hence, we
-	// can't simply tell Windows which font we are using.  We will
-	// notify a _standard_ font for a current input locale instead.
-	// We use a hard-coded knowledge about the Windows' standard
-	// configuration to do so...
-
-	memset(logfont, 0, sizeof(LOGFONT));
-
-	const WORD lang_id = LOWORD(GetKeyboardLayout(0));
-	switch (PRIMARYLANGID(lang_id))
-	{
-	case LANG_CHINESE:
-		// We need to identify one of two Chinese fonts.
-		switch (SUBLANGID(lang_id))
-		{
-		case SUBLANG_CHINESE_SIMPLIFIED:
-		case SUBLANG_CHINESE_SINGAPORE:
-			logfont->lfCharSet = GB2312_CHARSET;
-			lstrcpy(logfont->lfFaceName, TEXT("SimHei"));
-			break;
-		case SUBLANG_CHINESE_TRADITIONAL:
-		case SUBLANG_CHINESE_HONGKONG:
-		case SUBLANG_CHINESE_MACAU:
-		default:
-			logfont->lfCharSet = CHINESEBIG5_CHARSET;
-			lstrcpy(logfont->lfFaceName, TEXT("MingLiU"));
-			break;			
-		}
-		break;
-	case LANG_JAPANESE:
-		logfont->lfCharSet = SHIFTJIS_CHARSET;
-		lstrcpy(logfont->lfFaceName, TEXT("MS Gothic"));
-		break;		
-	case LANG_KOREAN:
-		logfont->lfCharSet = HANGUL_CHARSET;
-		lstrcpy(logfont->lfFaceName, TEXT("Gulim"));
-		break;
-	default:
-		logfont->lfCharSet = ANSI_CHARSET;
-		lstrcpy(logfont->lfFaceName, TEXT("Tahoma"));
-		break;
-	}
-							
-	logfont->lfHeight = mPreeditor->getPreeditFontSize();
-	logfont->lfWeight = FW_NORMAL;
-}	
-
-U32 LLWindowWin32::fillReconvertString(const LLWString &text,
-	S32 focus, S32 focus_length, RECONVERTSTRING *reconvert_string)
-{
-	const llutf16string text_utf16 = wstring_to_utf16str(text);
-	const DWORD required_size = sizeof(RECONVERTSTRING) + (text_utf16.length() + 1) * sizeof(WCHAR);
-	if (reconvert_string && reconvert_string->dwSize >= required_size)
-	{
-		const DWORD focus_utf16_at = wstring_utf16_length(text, 0, focus);
-		const DWORD focus_utf16_length = wstring_utf16_length(text, focus, focus_length);
-
-		reconvert_string->dwVersion = 0;
-		reconvert_string->dwStrLen = text_utf16.length();
-		reconvert_string->dwStrOffset = sizeof(RECONVERTSTRING);
-		reconvert_string->dwCompStrLen = focus_utf16_length;
-		reconvert_string->dwCompStrOffset = focus_utf16_at * sizeof(WCHAR);
-		reconvert_string->dwTargetStrLen = 0;
-		reconvert_string->dwTargetStrOffset = focus_utf16_at * sizeof(WCHAR);
-
-		const LPWSTR text = (LPWSTR)((BYTE *)reconvert_string + sizeof(RECONVERTSTRING));
-		memcpy(text, text_utf16.c_str(), (text_utf16.length() + 1) * sizeof(WCHAR));
-	}
-	return required_size;
-}
-
-void LLWindowWin32::updateLanguageTextInputArea()
-{
-	if (!mPreeditor || !LLWinImm::isAvailable())
-	{
-		return;
-	}
-
-	LLCoordGL caret_coord;
-	LLRect preedit_bounds;
-	if (mPreeditor->getPreeditLocation(-1, &caret_coord, &preedit_bounds, NULL))
-	{
-		mLanguageTextInputPointGL = caret_coord;
-		mLanguageTextInputAreaGL = preedit_bounds;
-
-		CANDIDATEFORM candidate_form;
-		fillCandidateForm(caret_coord, preedit_bounds, &candidate_form);
-
-		HIMC himc = LLWinImm::getContext(mWindowHandle);
-		// Win32 document says there may be up to 4 candidate windows.
-		// This magic number 4 appears only in the document, and
-		// there are no constant/macro for the value...
-		for (int i = 3; i >= 0; --i)
-		{
-			candidate_form.dwIndex = i;
-			LLWinImm::setCandidateWindow(himc, &candidate_form);
-		}
-		LLWinImm::releaseContext(mWindowHandle, himc);
-	}
-}
-
-void LLWindowWin32::interruptLanguageTextInput()
-{
-	if (mPreeditor)
-	{
-		if (LLWinImm::isAvailable())
-		{
-			HIMC himc = LLWinImm::getContext(mWindowHandle);
-			LLWinImm::notifyIME(himc, NI_COMPOSITIONSTR, CPS_COMPLETE, 0);
-			LLWinImm::releaseContext(mWindowHandle, himc);
-		}
-
-		// Win32 document says there will be no composition string
-		// after NI_COMPOSITIONSTR returns.  The following call to
-		// resetPreedit should be a NOP unless IME goes mad...
-		mPreeditor->resetPreedit();
-	}
-}
-
-void LLWindowWin32::handleStartCompositionMessage()
-{
-	// Let IME know the font to use in feedback UI.
-	LOGFONT logfont;
-	fillCompositionLogfont(&logfont);
-	HIMC himc = LLWinImm::getContext(mWindowHandle);
-	LLWinImm::setCompositionFont(himc, &logfont);
-	LLWinImm::releaseContext(mWindowHandle, himc);
-}
-
-// Handle WM_IME_COMPOSITION message.
-
-void LLWindowWin32::handleCompositionMessage(const U32 indexes)
-{
-	BOOL needs_update = FALSE;
-	LLWString result_string;
-	LLWString preedit_string;
-	S32 preedit_string_utf16_length = 0;
-	LLPreeditor::segment_lengths_t preedit_segment_lengths;
-	LLPreeditor::standouts_t preedit_standouts;
-
-	// Step I: Receive details of preedits from IME.
-
-	HIMC himc = LLWinImm::getContext(mWindowHandle);
-
-	if (indexes & GCS_RESULTSTR)
-	{
-		LONG size = LLWinImm::getCompositionString(himc, GCS_RESULTSTR, NULL, 0);
-		if (size >= 0)
-		{
-			const LPWSTR data = new WCHAR[size / sizeof(WCHAR) + 1];
-			size = LLWinImm::getCompositionString(himc, GCS_RESULTSTR, data, size);
-			if (size > 0)
-			{
-				result_string = utf16str_to_wstring(llutf16string(data, size / sizeof(WCHAR)));
-			}
-			delete[] data;
-			needs_update = TRUE;
-		}
-	}
-	
-	if (indexes & GCS_COMPSTR)
-	{
-		LONG size = LLWinImm::getCompositionString(himc, GCS_COMPSTR, NULL, 0);
-		if (size >= 0)
-		{
-			const LPWSTR data = new WCHAR[size / sizeof(WCHAR) + 1];
-			size = LLWinImm::getCompositionString(himc, GCS_COMPSTR, data, size);
-			if (size > 0)
-			{
-				preedit_string_utf16_length = size / sizeof(WCHAR);
-				preedit_string = utf16str_to_wstring(llutf16string(data, size / sizeof(WCHAR)));
-			}
-			delete[] data;
-			needs_update = TRUE;
-		}
-	}
-
-	if ((indexes & GCS_COMPCLAUSE) && preedit_string.length() > 0)
-	{
-		LONG size = LLWinImm::getCompositionString(himc, GCS_COMPCLAUSE, NULL, 0);
-		if (size > 0)
-		{
-			const LPDWORD data = new DWORD[size / sizeof(DWORD)];
-			size = LLWinImm::getCompositionString(himc, GCS_COMPCLAUSE, data, size);
-			if (size >= sizeof(DWORD) * 2
-				&& data[0] == 0 && data[size / sizeof(DWORD) - 1] == preedit_string_utf16_length)
-			{
-				preedit_segment_lengths.resize(size / sizeof(DWORD) - 1);
-				S32 offset = 0;
-				for (U32 i = 0; i < preedit_segment_lengths.size(); i++)
-				{
-					const S32 length = wstring_wstring_length_from_utf16_length(preedit_string, offset, data[i + 1] - data[i]);
-					preedit_segment_lengths[i] = length;
-					offset += length;
-				}
-			}
-			delete[] data;
-		}
-	}
-
-	if ((indexes & GCS_COMPATTR) && preedit_segment_lengths.size() > 1)
-	{
-		LONG size = LLWinImm::getCompositionString(himc, GCS_COMPATTR, NULL, 0);
-		if (size > 0)
-		{
-			const LPBYTE data = new BYTE[size / sizeof(BYTE)];
-			size = LLWinImm::getCompositionString(himc, GCS_COMPATTR, data, size);
-			if (size == preedit_string_utf16_length)
-			{
-				preedit_standouts.assign(preedit_segment_lengths.size(), FALSE);
-				S32 offset = 0;
-				for (U32 i = 0; i < preedit_segment_lengths.size(); i++)
-				{
-					if (ATTR_TARGET_CONVERTED == data[offset] || ATTR_TARGET_NOTCONVERTED == data[offset])
-					{
-						preedit_standouts[i] = TRUE;
-					}
-					offset += wstring_utf16_length(preedit_string, offset, preedit_segment_lengths[i]);
-				}
-			}
-			delete[] data;
-		}
-	}
-
-	S32 caret_position = preedit_string.length();
-	if (indexes & GCS_CURSORPOS)
-	{
-		const S32 caret_position_utf16 = LLWinImm::getCompositionString(himc, GCS_CURSORPOS, NULL, 0);
-		if (caret_position_utf16 >= 0 && caret_position <= preedit_string_utf16_length)
-		{
-			caret_position = wstring_wstring_length_from_utf16_length(preedit_string, 0, caret_position_utf16);
-		}
-	}
-
-	if (indexes == 0)
-	{
-		// I'm not sure this condition really happens, but
-		// Windows SDK document says it is an indication
-		// of "reset everything."
-		needs_update = TRUE;
-	}
-
-	LLWinImm::releaseContext(mWindowHandle, himc);
-
-	// Step II: Update the active preeditor.
-
-	if (needs_update)
-	{
-		mPreeditor->resetPreedit();
-
-		if (result_string.length() > 0)
-		{
-			for (LLWString::const_iterator i = result_string.begin(); i != result_string.end(); i++)
-			{
-				mPreeditor->handleUnicodeCharHere(*i);
-			}
-		}
-
-		if (preedit_string.length() == 0)
- 		{
-			preedit_segment_lengths.clear();
-			preedit_standouts.clear();
-		}
-		else
-		{
-			if (preedit_segment_lengths.size() == 0)
-			{
-				preedit_segment_lengths.assign(1, preedit_string.length());
-			}
-			if (preedit_standouts.size() == 0)
-			{
-				preedit_standouts.assign(preedit_segment_lengths.size(), FALSE);
-			}
-		}
-		mPreeditor->updatePreedit(preedit_string, preedit_segment_lengths, preedit_standouts, caret_position);
-
-		// Some IME doesn't query char position after WM_IME_COMPOSITION,
-		// so we need to update them actively.
-		updateLanguageTextInputArea();
-	}
-}
-
-// Given a text and a focus range, find_context finds and returns a
-// surrounding context of the focused subtext.  A variable pointed
-// to by offset receives the offset in llwchars of the beginning of
-// the returned context string in the given wtext.
-
-static LLWString find_context(const LLWString & wtext, S32 focus, S32 focus_length, S32 *offset)
-{
-	static const S32 CONTEXT_EXCESS = 30;	// This value is by experiences.
-
-	const S32 e = llmin((S32) wtext.length(), focus + focus_length + CONTEXT_EXCESS);
-	S32 end = focus + focus_length;
-	while (end < e && '\n' != wtext[end])
-	{
-		end++;
-	}
-
-	const S32 s = llmax(0, focus - CONTEXT_EXCESS);
-	S32 start = focus;
-	while (start > s && '\n' != wtext[start - 1])
-	{
-		--start;
-	}
-
-	*offset = start;
-	return wtext.substr(start, end - start);
-}
-
-// final stage of handling drop requests - both from WM_DROPFILES message
-// for files and via IDropTarget interface requests.
-LLWindowCallbacks::DragNDropResult LLWindowWin32::completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, LLWindowCallbacks::DragNDropAction action, const std::string url )
-{
-	return mCallbacks->handleDragNDrop( this, gl_coord, mask, action, url );
-}
-
-// Handle WM_IME_REQUEST message.
-// If it handled the message, returns TRUE.  Otherwise, FALSE.
-// When it handled the message, the value to be returned from
-// the Window Procedure is set to *result.
-
-BOOL LLWindowWin32::handleImeRequests(U32 request, U32 param, LRESULT *result)
-{
-	if ( mPreeditor )
-	{
-		switch (request)
-		{
-			case IMR_CANDIDATEWINDOW:		// http://msdn2.microsoft.com/en-us/library/ms776080.aspx
-			{
-				LLCoordGL caret_coord;
-				LLRect preedit_bounds;
-				mPreeditor->getPreeditLocation(-1, &caret_coord, &preedit_bounds, NULL);
-				
-				CANDIDATEFORM *const form = (CANDIDATEFORM *)param;
-				DWORD const dwIndex = form->dwIndex;
-				fillCandidateForm(caret_coord, preedit_bounds, form);
-				form->dwIndex = dwIndex;
-
-				*result = 1;
-				return TRUE;
-			}
-			case IMR_QUERYCHARPOSITION:
-			{
-				IMECHARPOSITION *const char_position = (IMECHARPOSITION *)param;
-
-				// char_position->dwCharPos counts in number of
-				// WCHARs, i.e., UTF-16 encoding units, so we can't simply pass the
-				// number to getPreeditLocation.  
-
-				const LLWString & wtext = mPreeditor->getPreeditString();
-				S32 preedit, preedit_length;
-				mPreeditor->getPreeditRange(&preedit, &preedit_length);
-				LLCoordGL caret_coord;
-				LLRect preedit_bounds, text_control;
-				const S32 position = wstring_wstring_length_from_utf16_length(wtext, preedit, char_position->dwCharPos);
-
-				if (!mPreeditor->getPreeditLocation(position, &caret_coord, &preedit_bounds, &text_control))
-				{
-					LL_WARNS("Window") << "*** IMR_QUERYCHARPOSITON called but getPreeditLocation failed." << LL_ENDL;
-					return FALSE;
-				}
-				fillCharPosition(caret_coord, preedit_bounds, text_control, char_position);
-
-				*result = 1;
-				return TRUE;
-			}
-			case IMR_COMPOSITIONFONT:
-			{
-				fillCompositionLogfont((LOGFONT *)param);
-
-				*result = 1;
-				return TRUE;
-			}
-			case IMR_RECONVERTSTRING:
-			{
-				mPreeditor->resetPreedit();
-				const LLWString & wtext = mPreeditor->getPreeditString();
-				S32 select, select_length;
-				mPreeditor->getSelectionRange(&select, &select_length);
-
-				S32 context_offset;
-				const LLWString context = find_context(wtext, select, select_length, &context_offset);
-
-				RECONVERTSTRING * const reconvert_string = (RECONVERTSTRING *)param;
-				const U32 size = fillReconvertString(context, select - context_offset, select_length, reconvert_string);
-				if (reconvert_string)
-				{
-					if (select_length == 0)
-					{
-						// Let the IME to decide the reconversion range, and
-						// adjust the reconvert_string structure accordingly.
-						HIMC himc = LLWinImm::getContext(mWindowHandle);
-						const BOOL adjusted = LLWinImm::setCompositionString(himc,
-									SCS_QUERYRECONVERTSTRING, reconvert_string, size, NULL, 0);
-						LLWinImm::releaseContext(mWindowHandle, himc);
-						if (adjusted)
-						{
-							const llutf16string & text_utf16 = wstring_to_utf16str(context);
-							const S32 new_preedit_start = reconvert_string->dwCompStrOffset / sizeof(WCHAR);
-							const S32 new_preedit_end = new_preedit_start + reconvert_string->dwCompStrLen;
-							select = utf16str_wstring_length(text_utf16, new_preedit_start);
-							select_length = utf16str_wstring_length(text_utf16, new_preedit_end) - select;
-							select += context_offset;
-						}
-					}
-					mPreeditor->markAsPreedit(select, select_length);
-				}
-
-				*result = size;
-				return TRUE;
-			}
-			case IMR_CONFIRMRECONVERTSTRING:
-			{
-				*result = FALSE;
-				return TRUE;
-			}
-			case IMR_DOCUMENTFEED:
-			{
-				const LLWString & wtext = mPreeditor->getPreeditString();
-				S32 preedit, preedit_length;
-				mPreeditor->getPreeditRange(&preedit, &preedit_length);
-				
-				S32 context_offset;
-				LLWString context = find_context(wtext, preedit, preedit_length, &context_offset);
-				preedit -= context_offset;
-				if (preedit_length)
-				{
-					// IMR_DOCUMENTFEED may be called when we have an active preedit.
-					// We should pass the context string *excluding* the preedit string.
-					// Otherwise, some IME are confused.
-					context.erase(preedit, preedit_length);
-				}
-				
-				RECONVERTSTRING *reconvert_string = (RECONVERTSTRING *)param;
-				*result = fillReconvertString(context, preedit, 0, reconvert_string);
-				return TRUE;
-			}
-			default:
-				return FALSE;
-		}
-	}
-
-	return FALSE;
-}
-
-//static
-std::vector<std::string> LLWindowWin32::getDynamicFallbackFontList()
-{
-	// Fonts previously in getFontListSans() have moved to fonts.xml.
-	return std::vector<std::string>();
-}
-
-
-#endif // LL_WINDOWS
+/** 
+ * @file llwindowwin32.cpp
+ * @brief Platform-dependent implementation of llwindow
+ *
+ * $LicenseInfo:firstyear=2001&license=viewergpl$
+ * 
+ * Copyright (c) 2001-2009, Linden Research, Inc.
+ * 
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ * 
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ * 
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ * 
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+
+#if LL_WINDOWS && !LL_MESA_HEADLESS
+
+#include "llwindowwin32.h"
+
+// LLWindow library includes
+#include "llkeyboardwin32.h"
+#include "lldragdropwin32.h"
+#include "llpreeditor.h"
+#include "llwindowcallbacks.h"
+
+// Linden library includes
+#include "llerror.h"
+#include "llgl.h"
+#include "llstring.h"
+
+// System includes
+#include <commdlg.h>
+#include <WinUser.h>
+#include <mapi.h>
+#include <process.h>	// for _spawn
+#include <shellapi.h>
+#include <fstream>
+#include <Imm.h>
+
+// Require DirectInput version 8
+#define DIRECTINPUT_VERSION 0x0800
+
+#include <dinput.h>
+#include <Dbt.h.>
+
+#include "llmemtype.h"
+// culled from winuser.h
+#ifndef WM_MOUSEWHEEL /* Added to be compatible with later SDK's */
+const S32	WM_MOUSEWHEEL = 0x020A;
+#endif
+#ifndef WHEEL_DELTA /* Added to be compatible with later SDK's */
+const S32	WHEEL_DELTA = 120;     /* Value for rolling one detent */
+#endif
+const S32	MAX_MESSAGE_PER_UPDATE = 20;
+const S32	BITS_PER_PIXEL = 32;
+const S32	MAX_NUM_RESOLUTIONS = 32;
+const F32	ICON_FLASH_TIME = 0.5f;
+
+extern BOOL gDebugWindowProc;
+
+LPWSTR gIconResource = IDI_APPLICATION;
+
+LLW32MsgCallback gAsyncMsgCallback = NULL;
+
+//
+// LLWindowWin32
+//
+
+void show_window_creation_error(const std::string& title)
+{
+	LL_WARNS("Window") << title << LL_ENDL;
+}
+
+//static
+BOOL LLWindowWin32::sIsClassRegistered = FALSE;
+
+BOOL	LLWindowWin32::sLanguageTextInputAllowed = TRUE;
+BOOL	LLWindowWin32::sWinIMEOpened = FALSE;
+HKL		LLWindowWin32::sWinInputLocale = 0;
+DWORD	LLWindowWin32::sWinIMEConversionMode = IME_CMODE_NATIVE;
+DWORD	LLWindowWin32::sWinIMESentenceMode = IME_SMODE_AUTOMATIC;
+LLCoordWindow LLWindowWin32::sWinIMEWindowPosition(-1,-1);
+
+// The following class LLWinImm delegates Windows IMM APIs.
+// We need this because some language versions of Windows,
+// e.g., US version of Windows XP, doesn't install IMM32.DLL
+// as a default, and we can't link against imm32.lib statically.
+// I believe DLL loading of this type is best suited to do
+// in a static initialization of a class.  What I'm not sure is
+// whether it follows the Linden Conding Standard... 
+// See http://wiki.secondlife.com/wiki/Coding_standards#Static_Members
+
+class LLWinImm
+{
+public:
+	static bool		isAvailable() { return sTheInstance.mHImmDll != NULL; }
+
+public:
+	// Wrappers for IMM API.
+	static BOOL		isIME(HKL hkl);															
+	static HWND		getDefaultIMEWnd(HWND hwnd);
+	static HIMC		getContext(HWND hwnd);													
+	static BOOL		releaseContext(HWND hwnd, HIMC himc);
+	static BOOL		getOpenStatus(HIMC himc);												
+	static BOOL		setOpenStatus(HIMC himc, BOOL status);									
+	static BOOL		getConversionStatus(HIMC himc, LPDWORD conversion, LPDWORD sentence);	
+	static BOOL		setConversionStatus(HIMC himc, DWORD conversion, DWORD sentence);		
+	static BOOL		getCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form);					
+	static BOOL		setCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form);					
+	static LONG		getCompositionString(HIMC himc, DWORD index, LPVOID data, DWORD length);
+	static BOOL		setCompositionString(HIMC himc, DWORD index, LPVOID pComp, DWORD compLength, LPVOID pRead, DWORD readLength);
+	static BOOL		setCompositionFont(HIMC himc, LPLOGFONTW logfont);
+	static BOOL		setCandidateWindow(HIMC himc, LPCANDIDATEFORM candidate_form);
+	static BOOL		notifyIME(HIMC himc, DWORD action, DWORD index, DWORD value);
+
+private:
+	LLWinImm();
+	~LLWinImm();
+
+private:
+	// Pointers to IMM API.
+	BOOL	 	(WINAPI *mImmIsIME)(HKL);
+	HWND		(WINAPI *mImmGetDefaultIMEWnd)(HWND);
+	HIMC		(WINAPI *mImmGetContext)(HWND);
+	BOOL		(WINAPI *mImmReleaseContext)(HWND, HIMC);
+	BOOL		(WINAPI *mImmGetOpenStatus)(HIMC);
+	BOOL		(WINAPI *mImmSetOpenStatus)(HIMC, BOOL);
+	BOOL		(WINAPI *mImmGetConversionStatus)(HIMC, LPDWORD, LPDWORD);
+	BOOL		(WINAPI *mImmSetConversionStatus)(HIMC, DWORD, DWORD);
+	BOOL		(WINAPI *mImmGetCompostitionWindow)(HIMC, LPCOMPOSITIONFORM);
+	BOOL		(WINAPI *mImmSetCompostitionWindow)(HIMC, LPCOMPOSITIONFORM);
+	LONG		(WINAPI *mImmGetCompositionString)(HIMC, DWORD, LPVOID, DWORD);
+	BOOL		(WINAPI *mImmSetCompositionString)(HIMC, DWORD, LPVOID, DWORD, LPVOID, DWORD);
+	BOOL		(WINAPI *mImmSetCompositionFont)(HIMC, LPLOGFONTW);
+	BOOL		(WINAPI *mImmSetCandidateWindow)(HIMC, LPCANDIDATEFORM);
+	BOOL		(WINAPI *mImmNotifyIME)(HIMC, DWORD, DWORD, DWORD);
+
+private:
+	HMODULE		mHImmDll;
+	static LLWinImm sTheInstance;
+};
+
+LLWinImm LLWinImm::sTheInstance;
+
+LLWinImm::LLWinImm() : mHImmDll(NULL)
+{
+	// Check system metrics 
+	if ( !GetSystemMetrics( SM_DBCSENABLED ) )
+		return;
+	
+
+	mHImmDll = LoadLibraryA("Imm32");
+	if (mHImmDll != NULL)
+	{
+		mImmIsIME               = (BOOL (WINAPI *)(HKL))                    GetProcAddress(mHImmDll, "ImmIsIME");
+		mImmGetDefaultIMEWnd	= (HWND (WINAPI *)(HWND))					GetProcAddress(mHImmDll, "ImmGetDefaultIMEWnd");
+		mImmGetContext          = (HIMC (WINAPI *)(HWND))                   GetProcAddress(mHImmDll, "ImmGetContext");
+		mImmReleaseContext      = (BOOL (WINAPI *)(HWND, HIMC))             GetProcAddress(mHImmDll, "ImmReleaseContext");
+		mImmGetOpenStatus       = (BOOL (WINAPI *)(HIMC))                   GetProcAddress(mHImmDll, "ImmGetOpenStatus");
+		mImmSetOpenStatus       = (BOOL (WINAPI *)(HIMC, BOOL))             GetProcAddress(mHImmDll, "ImmSetOpenStatus");
+		mImmGetConversionStatus = (BOOL (WINAPI *)(HIMC, LPDWORD, LPDWORD)) GetProcAddress(mHImmDll, "ImmGetConversionStatus");
+		mImmSetConversionStatus = (BOOL (WINAPI *)(HIMC, DWORD, DWORD))     GetProcAddress(mHImmDll, "ImmSetConversionStatus");
+		mImmGetCompostitionWindow = (BOOL (WINAPI *)(HIMC, LPCOMPOSITIONFORM))   GetProcAddress(mHImmDll, "ImmGetCompositionWindow");
+		mImmSetCompostitionWindow = (BOOL (WINAPI *)(HIMC, LPCOMPOSITIONFORM))   GetProcAddress(mHImmDll, "ImmSetCompositionWindow");
+		mImmGetCompositionString= (LONG (WINAPI *)(HIMC, DWORD, LPVOID, DWORD))					GetProcAddress(mHImmDll, "ImmGetCompositionStringW");
+		mImmSetCompositionString= (BOOL (WINAPI *)(HIMC, DWORD, LPVOID, DWORD, LPVOID, DWORD))	GetProcAddress(mHImmDll, "ImmSetCompositionStringW");
+		mImmSetCompositionFont  = (BOOL (WINAPI *)(HIMC, LPLOGFONTW))		GetProcAddress(mHImmDll, "ImmSetCompositionFontW");
+		mImmSetCandidateWindow  = (BOOL (WINAPI *)(HIMC, LPCANDIDATEFORM))  GetProcAddress(mHImmDll, "ImmSetCandidateWindow");
+		mImmNotifyIME			= (BOOL (WINAPI *)(HIMC, DWORD, DWORD, DWORD))	GetProcAddress(mHImmDll, "ImmNotifyIME");
+
+		if (mImmIsIME == NULL ||
+			mImmGetDefaultIMEWnd == NULL ||
+			mImmGetContext == NULL ||
+			mImmReleaseContext == NULL ||
+			mImmGetOpenStatus == NULL ||
+			mImmSetOpenStatus == NULL ||
+			mImmGetConversionStatus == NULL ||
+			mImmSetConversionStatus == NULL ||
+			mImmGetCompostitionWindow == NULL ||
+			mImmSetCompostitionWindow == NULL ||
+			mImmGetCompositionString == NULL ||
+			mImmSetCompositionString == NULL ||
+			mImmSetCompositionFont == NULL ||
+			mImmSetCandidateWindow == NULL ||
+			mImmNotifyIME == NULL)
+		{
+			// If any of the above API entires are not found, we can't use IMM API.  
+			// So, turn off the IMM support.  We should log some warning message in 
+			// the case, since it is very unusual; these APIs are available from 
+			// the beginning, and all versions of IMM32.DLL should have them all.  
+			// Unfortunately, this code may be executed before initialization of 
+			// the logging channel (llwarns), and we can't do it here...  Yes, this 
+			// is one of disadvantages to use static constraction to DLL loading. 
+			FreeLibrary(mHImmDll);
+			mHImmDll = NULL;
+
+			// If we unload the library, make sure all the function pointers are cleared
+			mImmIsIME = NULL;
+			mImmGetDefaultIMEWnd = NULL;
+			mImmGetContext = NULL;
+			mImmReleaseContext = NULL;
+			mImmGetOpenStatus = NULL;
+			mImmSetOpenStatus = NULL;
+			mImmGetConversionStatus = NULL;
+			mImmSetConversionStatus = NULL;
+			mImmGetCompostitionWindow = NULL;
+			mImmSetCompostitionWindow = NULL;
+			mImmGetCompositionString = NULL;
+			mImmSetCompositionString = NULL;
+			mImmSetCompositionFont = NULL;
+			mImmSetCandidateWindow = NULL;
+			mImmNotifyIME = NULL;
+		}
+	}
+}
+
+
+// static 
+BOOL	LLWinImm::isIME(HKL hkl)															
+{ 
+	if ( sTheInstance.mImmIsIME )
+		return sTheInstance.mImmIsIME(hkl); 
+	return FALSE;
+}
+
+// static 
+HIMC		LLWinImm::getContext(HWND hwnd)
+{
+	if ( sTheInstance.mImmGetContext )
+		return sTheInstance.mImmGetContext(hwnd); 
+	return 0;
+}
+
+//static 
+BOOL		LLWinImm::releaseContext(HWND hwnd, HIMC himc)
+{ 
+	if ( sTheInstance.mImmIsIME )
+		return sTheInstance.mImmReleaseContext(hwnd, himc); 
+	return FALSE;
+}
+
+// static 
+BOOL		LLWinImm::getOpenStatus(HIMC himc)
+{ 
+	if ( sTheInstance.mImmGetOpenStatus )
+		return sTheInstance.mImmGetOpenStatus(himc); 
+	return FALSE;
+}
+
+// static 
+BOOL		LLWinImm::setOpenStatus(HIMC himc, BOOL status)									
+{ 
+	if ( sTheInstance.mImmSetOpenStatus )
+		return sTheInstance.mImmSetOpenStatus(himc, status); 
+	return FALSE;
+}
+
+// static 
+BOOL		LLWinImm::getConversionStatus(HIMC himc, LPDWORD conversion, LPDWORD sentence)	
+{ 
+	if ( sTheInstance.mImmGetConversionStatus )
+		return sTheInstance.mImmGetConversionStatus(himc, conversion, sentence); 
+	return FALSE;
+}
+
+// static 
+BOOL		LLWinImm::setConversionStatus(HIMC himc, DWORD conversion, DWORD sentence)		
+{ 
+	if ( sTheInstance.mImmSetConversionStatus )
+		return sTheInstance.mImmSetConversionStatus(himc, conversion, sentence); 
+	return FALSE;
+}
+
+// static 
+BOOL		LLWinImm::getCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form)					
+{ 
+	if ( sTheInstance.mImmGetCompostitionWindow )
+		return sTheInstance.mImmGetCompostitionWindow(himc, form);	
+	return FALSE;
+}
+
+// static 
+BOOL		LLWinImm::setCompositionWindow(HIMC himc, LPCOMPOSITIONFORM form)					
+{ 
+	if ( sTheInstance.mImmSetCompostitionWindow )
+		return sTheInstance.mImmSetCompostitionWindow(himc, form);	
+	return FALSE;
+}
+
+
+// static 
+LONG		LLWinImm::getCompositionString(HIMC himc, DWORD index, LPVOID data, DWORD length)					
+{ 
+	if ( sTheInstance.mImmGetCompositionString )
+		return sTheInstance.mImmGetCompositionString(himc, index, data, length);	
+	return FALSE;
+}
+
+
+// static 
+BOOL		LLWinImm::setCompositionString(HIMC himc, DWORD index, LPVOID pComp, DWORD compLength, LPVOID pRead, DWORD readLength)					
+{ 
+	if ( sTheInstance.mImmSetCompositionString )
+		return sTheInstance.mImmSetCompositionString(himc, index, pComp, compLength, pRead, readLength);	
+	return FALSE;
+}
+
+// static 
+BOOL		LLWinImm::setCompositionFont(HIMC himc, LPLOGFONTW pFont)					
+{ 
+	if ( sTheInstance.mImmSetCompositionFont )
+		return sTheInstance.mImmSetCompositionFont(himc, pFont);	
+	return FALSE;
+}
+
+// static 
+BOOL		LLWinImm::setCandidateWindow(HIMC himc, LPCANDIDATEFORM form)					
+{ 
+	if ( sTheInstance.mImmSetCandidateWindow )
+		return sTheInstance.mImmSetCandidateWindow(himc, form);	
+	return FALSE;
+}
+
+// static 
+BOOL		LLWinImm::notifyIME(HIMC himc, DWORD action, DWORD index, DWORD value)					
+{ 
+	if ( sTheInstance.mImmNotifyIME )
+		return sTheInstance.mImmNotifyIME(himc, action, index, value);	
+	return FALSE;
+}
+
+
+
+
+// ----------------------------------------------------------------------------------------
+LLWinImm::~LLWinImm()
+{
+	if (mHImmDll != NULL)
+	{
+		FreeLibrary(mHImmDll);
+		mHImmDll = NULL;
+	}
+}
+
+
+LLWindowWin32::LLWindowWin32(LLWindowCallbacks* callbacks,
+							 const std::string& title, const std::string& name, S32 x, S32 y, S32 width,
+							 S32 height, U32 flags, 
+							 BOOL fullscreen, BOOL clearBg,
+							 BOOL disable_vsync, BOOL use_gl,
+							 BOOL ignore_pixel_depth,
+							 U32 fsaa_samples)
+	: LLWindow(callbacks, fullscreen, flags)
+{
+	mFSAASamples = fsaa_samples;
+	mIconResource = gIconResource;
+	mOverrideAspectRatio = 0.f;
+	mNativeAspectRatio = 0.f;
+	mMousePositionModified = FALSE;
+	mInputProcessingPaused = FALSE;
+	mPreeditor = NULL;
+	mhDC = NULL;
+	mhRC = NULL;
+
+	// Initialize the keyboard
+	gKeyboard = new LLKeyboardWin32();
+	gKeyboard->setCallbacks(callbacks);
+
+	// Initialize the Drag and Drop functionality
+	mDragDrop = new LLDragDropWin32;
+
+	// Initialize (boot strap) the Language text input management,
+	// based on the system's (user's) default settings.
+	allowLanguageTextInput(mPreeditor, FALSE);
+
+	WNDCLASS		wc;
+	RECT			window_rect;
+
+	// Set the window title
+	if (title.empty())
+	{
+		mWindowTitle = new WCHAR[50];
+		wsprintf(mWindowTitle, L"OpenGL Window");
+	}
+	else
+	{
+		mWindowTitle = new WCHAR[256]; // Assume title length < 255 chars.
+		mbstowcs(mWindowTitle, title.c_str(), 255);
+		mWindowTitle[255] = 0;
+	}
+
+	// Set the window class name
+	if (name.empty())
+	{
+		mWindowClassName = new WCHAR[50];
+		wsprintf(mWindowClassName, L"OpenGL Window");
+	}
+	else
+	{
+		mWindowClassName = new WCHAR[256]; // Assume title length < 255 chars.
+		mbstowcs(mWindowClassName, name.c_str(), 255);
+		mWindowClassName[255] = 0;
+	}
+
+
+	// We're not clipping yet
+	SetRect( &mOldMouseClip, 0, 0, 0, 0 );
+
+	// Make an instance of our window then define the window class
+	mhInstance = GetModuleHandle(NULL);
+	mWndProc = NULL;
+
+	mSwapMethod = SWAP_METHOD_UNDEFINED;
+
+	// No WPARAM yet.
+	mLastSizeWParam = 0;
+
+	// Windows GDI rects don't include rightmost pixel
+	window_rect.left = (long) 0;
+	window_rect.right = (long) width;
+	window_rect.top = (long) 0;
+	window_rect.bottom = (long) height;
+
+	// Grab screen size to sanitize the window
+	S32 window_border_y = GetSystemMetrics(SM_CYBORDER);
+	S32 virtual_screen_x = GetSystemMetrics(SM_XVIRTUALSCREEN); 
+	S32 virtual_screen_y = GetSystemMetrics(SM_YVIRTUALSCREEN); 
+	S32 virtual_screen_width = GetSystemMetrics(SM_CXVIRTUALSCREEN);
+	S32 virtual_screen_height = GetSystemMetrics(SM_CYVIRTUALSCREEN);
+
+	if (x < virtual_screen_x) x = virtual_screen_x;
+	if (y < virtual_screen_y - window_border_y) y = virtual_screen_y - window_border_y;
+
+	if (x + width > virtual_screen_x + virtual_screen_width) x = virtual_screen_x + virtual_screen_width - width;
+	if (y + height > virtual_screen_y + virtual_screen_height) y = virtual_screen_y + virtual_screen_height - height;
+
+	if (!sIsClassRegistered)
+	{
+		// Force redraw when resized and create a private device context
+
+		// Makes double click messages.
+		wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC | CS_DBLCLKS;
+
+		// Set message handler function
+		wc.lpfnWndProc = (WNDPROC) mainWindowProc;
+
+		// unused
+		wc.cbClsExtra = 0;
+		wc.cbWndExtra = 0;
+
+		wc.hInstance = mhInstance;
+		wc.hIcon = LoadIcon(mhInstance, mIconResource);
+
+		// We will set the cursor ourselves
+		wc.hCursor = NULL;
+
+		// background color is not used
+		if (clearBg)
+		{
+			wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
+		}
+		else
+		{
+			wc.hbrBackground = (HBRUSH) NULL;
+		}
+
+		// we don't use windows menus
+		wc.lpszMenuName = NULL;
+
+		wc.lpszClassName = mWindowClassName;
+
+		if (!RegisterClass(&wc))
+		{
+			OSMessageBox(mCallbacks->translateString("MBRegClassFailed"), 
+				mCallbacks->translateString("MBError"), OSMB_OK);
+			return;
+		}
+		sIsClassRegistered = TRUE;
+	}
+
+	//-----------------------------------------------------------------------
+	// Get the current refresh rate
+	//-----------------------------------------------------------------------
+
+	DEVMODE dev_mode;
+	DWORD current_refresh;
+	if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode))
+	{
+		current_refresh = dev_mode.dmDisplayFrequency;
+		mNativeAspectRatio = ((F32)dev_mode.dmPelsWidth) / ((F32)dev_mode.dmPelsHeight);
+	}
+	else
+	{
+		current_refresh = 60;
+	}
+
+	//-----------------------------------------------------------------------
+	// Drop resolution and go fullscreen
+	// use a display mode with our desired size and depth, with a refresh
+	// rate as close at possible to the users' default
+	//-----------------------------------------------------------------------
+	if (mFullscreen)
+	{
+		BOOL success = FALSE;
+		DWORD closest_refresh = 0;
+
+		for (S32 mode_num = 0;; mode_num++)
+		{
+			if (!EnumDisplaySettings(NULL, mode_num, &dev_mode))
+			{
+				break;
+			}
+
+			if (dev_mode.dmPelsWidth == width &&
+				dev_mode.dmPelsHeight == height &&
+				dev_mode.dmBitsPerPel == BITS_PER_PIXEL)
+			{
+				success = TRUE;
+				if ((dev_mode.dmDisplayFrequency - current_refresh)
+					< (closest_refresh - current_refresh))
+				{
+					closest_refresh = dev_mode.dmDisplayFrequency;
+				}
+			}
+		}
+
+		if (closest_refresh == 0)
+		{
+			LL_WARNS("Window") << "Couldn't find display mode " << width << " by " << height << " at " << BITS_PER_PIXEL << " bits per pixel" << LL_ENDL;
+			success = FALSE;
+		}
+
+		// If we found a good resolution, use it.
+		if (success)
+		{
+			success = setDisplayResolution(width, height, BITS_PER_PIXEL, closest_refresh);
+		}
+
+		// Keep a copy of the actual current device mode in case we minimize 
+		// and change the screen resolution.   JC
+		EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode);
+
+		// If it failed, we don't want to run fullscreen
+		if (success)
+		{
+			mFullscreen = TRUE;
+			mFullscreenWidth   = dev_mode.dmPelsWidth;
+			mFullscreenHeight  = dev_mode.dmPelsHeight;
+			mFullscreenBits    = dev_mode.dmBitsPerPel;
+			mFullscreenRefresh = dev_mode.dmDisplayFrequency;
+
+			LL_INFOS("Window") << "Running at " << dev_mode.dmPelsWidth
+				<< "x"   << dev_mode.dmPelsHeight
+				<< "x"   << dev_mode.dmBitsPerPel
+				<< " @ " << dev_mode.dmDisplayFrequency
+				<< LL_ENDL;
+		}
+		else
+		{
+			mFullscreen = FALSE;
+			mFullscreenWidth   = -1;
+			mFullscreenHeight  = -1;
+			mFullscreenBits    = -1;
+			mFullscreenRefresh = -1;
+
+			std::map<std::string,std::string> args;
+			args["[WIDTH]"] = llformat("%d", width);
+			args["[HEIGHT]"] = llformat ("%d", height);
+			OSMessageBox(mCallbacks->translateString("MBFullScreenErr", args),
+				mCallbacks->translateString("MBError"), OSMB_OK);
+		}
+	}
+
+	// TODO: add this after resolving _WIN32_WINNT issue
+	//	if (!fullscreen)
+	//	{
+	//		TRACKMOUSEEVENT track_mouse_event;
+	//		track_mouse_event.cbSize = sizeof( TRACKMOUSEEVENT );
+	//		track_mouse_event.dwFlags = TME_LEAVE;
+	//		track_mouse_event.hwndTrack = mWindowHandle;
+	//		track_mouse_event.dwHoverTime = HOVER_DEFAULT;
+	//		TrackMouseEvent( &track_mouse_event ); 
+	//	}
+
+
+	//-----------------------------------------------------------------------
+	// Create GL drawing context
+	//-----------------------------------------------------------------------
+	LLCoordScreen windowPos(x,y);
+	LLCoordScreen windowSize(window_rect.right - window_rect.left,
+							 window_rect.bottom - window_rect.top);
+	if (!switchContext(mFullscreen, windowSize, TRUE, &windowPos))
+	{
+		return;
+	}
+	
+	//start with arrow cursor
+	initCursors();
+	setCursor( UI_CURSOR_ARROW );
+
+	// Initialize (boot strap) the Language text input management,
+	// based on the system's (or user's) default settings.
+	allowLanguageTextInput(NULL, FALSE);
+}
+
+
+LLWindowWin32::~LLWindowWin32()
+{
+	delete mDragDrop;
+
+	delete [] mWindowTitle;
+	mWindowTitle = NULL;
+
+	delete [] mSupportedResolutions;
+	mSupportedResolutions = NULL;
+
+	delete mWindowClassName;
+	mWindowClassName = NULL;
+}
+
+void LLWindowWin32::show()
+{
+	ShowWindow(mWindowHandle, SW_SHOW);
+	SetForegroundWindow(mWindowHandle);
+	SetFocus(mWindowHandle);
+}
+
+void LLWindowWin32::hide()
+{
+	setMouseClipping(FALSE);
+	ShowWindow(mWindowHandle, SW_HIDE);
+}
+
+//virtual
+void LLWindowWin32::minimize()
+{
+	setMouseClipping(FALSE);
+	showCursor();
+	ShowWindow(mWindowHandle, SW_MINIMIZE);
+}
+
+//virtual
+void LLWindowWin32::restore()
+{
+	ShowWindow(mWindowHandle, SW_RESTORE);
+	SetForegroundWindow(mWindowHandle);
+	SetFocus(mWindowHandle);
+}
+
+
+// close() destroys all OS-specific code associated with a window.
+// Usually called from LLWindowManager::destroyWindow()
+void LLWindowWin32::close()
+{
+	LL_DEBUGS("Window") << "Closing LLWindowWin32" << LL_ENDL;
+	// Is window is already closed?
+	if (!mWindowHandle)
+	{
+		return;
+	}
+
+	mDragDrop->reset();
+
+	// Make sure cursor is visible and we haven't mangled the clipping state.
+	setMouseClipping(FALSE);
+	showCursor();
+
+	// Go back to screen mode written in the registry.
+	if (mFullscreen)
+	{
+		resetDisplayResolution();
+	}
+
+	// Clean up remaining GL state
+	LL_DEBUGS("Window") << "Shutting down GL" << LL_ENDL;
+	gGLManager.shutdownGL();
+
+	LL_DEBUGS("Window") << "Releasing Context" << LL_ENDL;
+	if (mhRC)
+	{
+		if (!wglMakeCurrent(NULL, NULL))
+		{
+			LL_WARNS("Window") << "Release of DC and RC failed" << LL_ENDL;
+		}
+
+		if (!wglDeleteContext(mhRC))
+		{
+			LL_WARNS("Window") << "Release of rendering context failed" << LL_ENDL;
+		}
+
+		mhRC = NULL;
+	}
+
+	// Restore gamma to the system values.
+	restoreGamma();
+
+	if (mhDC && !ReleaseDC(mWindowHandle, mhDC))
+	{
+		LL_WARNS("Window") << "Release of ghDC failed" << LL_ENDL;
+		mhDC = NULL;
+	}
+
+	LL_DEBUGS("Window") << "Destroying Window" << LL_ENDL;
+	
+	// Don't process events in our mainWindowProc any longer.
+	SetWindowLong(mWindowHandle, GWL_USERDATA, NULL);
+
+	// Make sure we don't leave a blank toolbar button.
+	ShowWindow(mWindowHandle, SW_HIDE);
+
+	// This causes WM_DESTROY to be sent *immediately*
+	if (!DestroyWindow(mWindowHandle))
+	{
+		OSMessageBox(mCallbacks->translateString("MBDestroyWinFailed"),
+			mCallbacks->translateString("MBShutdownErr"),
+			OSMB_OK);
+	}
+
+	mWindowHandle = NULL;
+}
+
+BOOL LLWindowWin32::isValid()
+{
+	return (mWindowHandle != NULL);
+}
+
+BOOL LLWindowWin32::getVisible()
+{
+	return (mWindowHandle && IsWindowVisible(mWindowHandle));
+}
+
+BOOL LLWindowWin32::getMinimized()
+{
+	return (mWindowHandle && IsIconic(mWindowHandle));
+}
+
+BOOL LLWindowWin32::getMaximized()
+{
+	return (mWindowHandle && IsZoomed(mWindowHandle));
+}
+
+BOOL LLWindowWin32::maximize()
+{
+	BOOL success = FALSE;
+	if (!mWindowHandle) return success;
+
+	WINDOWPLACEMENT placement;
+	placement.length = sizeof(WINDOWPLACEMENT);
+
+	success = GetWindowPlacement(mWindowHandle, &placement);
+	if (!success) return success;
+
+	placement.showCmd = SW_MAXIMIZE;
+
+	success = SetWindowPlacement(mWindowHandle, &placement);
+	return success;
+}
+
+BOOL LLWindowWin32::getFullscreen()
+{
+	return mFullscreen;
+}
+
+BOOL LLWindowWin32::getPosition(LLCoordScreen *position)
+{
+	RECT window_rect;
+
+	if (!mWindowHandle ||
+		!GetWindowRect(mWindowHandle, &window_rect) ||
+		NULL == position)
+	{
+		return FALSE;
+	}
+
+	position->mX = window_rect.left;
+	position->mY = window_rect.top;
+	return TRUE;
+}
+
+BOOL LLWindowWin32::getSize(LLCoordScreen *size)
+{
+	RECT window_rect;
+
+	if (!mWindowHandle ||
+		!GetWindowRect(mWindowHandle, &window_rect) ||
+		NULL == size)
+	{
+		return FALSE;
+	}
+
+	size->mX = window_rect.right - window_rect.left;
+	size->mY = window_rect.bottom - window_rect.top;
+	return TRUE;
+}
+
+BOOL LLWindowWin32::getSize(LLCoordWindow *size)
+{
+	RECT client_rect;
+
+	if (!mWindowHandle ||
+		!GetClientRect(mWindowHandle, &client_rect) ||
+		NULL == size)
+	{
+		return FALSE;
+	}
+
+	size->mX = client_rect.right - client_rect.left;
+	size->mY = client_rect.bottom - client_rect.top;
+	return TRUE;
+}
+
+BOOL LLWindowWin32::setPosition(const LLCoordScreen position)
+{
+	LLCoordScreen size;
+
+	if (!mWindowHandle)
+	{
+		return FALSE;
+	}
+	getSize(&size);
+	moveWindow(position, size);
+	return TRUE;
+}
+
+BOOL LLWindowWin32::setSize(const LLCoordScreen size)
+{
+	LLCoordScreen position;
+
+	getPosition(&position);
+	if (!mWindowHandle)
+	{
+		return FALSE;
+	}
+
+	moveWindow(position, size);
+	return TRUE;
+}
+
+// changing fullscreen resolution
+BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL disable_vsync, const LLCoordScreen * const posp)
+{
+	GLuint	pixel_format;
+	DEVMODE dev_mode;
+	DWORD	current_refresh;
+	DWORD	dw_ex_style;
+	DWORD	dw_style;
+	RECT	window_rect;
+	S32 width = size.mX;
+	S32 height = size.mY;
+	BOOL auto_show = FALSE;
+
+	if (mhRC)
+	{
+		auto_show = TRUE;
+		resetDisplayResolution();
+	}
+
+	if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode))
+	{
+		current_refresh = dev_mode.dmDisplayFrequency;
+	}
+	else
+	{
+		current_refresh = 60;
+	}
+
+	gGLManager.shutdownGL();
+	//destroy gl context
+	if (mhRC)
+	{
+		if (!wglMakeCurrent(NULL, NULL))
+		{
+			LL_WARNS("Window") << "Release of DC and RC failed" << LL_ENDL;
+		}
+
+		if (!wglDeleteContext(mhRC))
+		{
+			LL_WARNS("Window") << "Release of rendering context failed" << LL_ENDL;
+		}
+
+		mhRC = NULL;
+	}
+
+	if (fullscreen)
+	{
+		mFullscreen = TRUE;
+		BOOL success = FALSE;
+		DWORD closest_refresh = 0;
+
+		for (S32 mode_num = 0;; mode_num++)
+		{
+			if (!EnumDisplaySettings(NULL, mode_num, &dev_mode))
+			{
+				break;
+			}
+
+			if (dev_mode.dmPelsWidth == width &&
+				dev_mode.dmPelsHeight == height &&
+				dev_mode.dmBitsPerPel == BITS_PER_PIXEL)
+			{
+				success = TRUE;
+				if ((dev_mode.dmDisplayFrequency - current_refresh)
+					< (closest_refresh - current_refresh))
+				{
+					closest_refresh = dev_mode.dmDisplayFrequency;
+				}
+			}
+		}
+
+		if (closest_refresh == 0)
+		{
+			LL_WARNS("Window") << "Couldn't find display mode " << width << " by " << height << " at " << BITS_PER_PIXEL << " bits per pixel" << LL_ENDL;
+			return FALSE;
+		}
+
+		// If we found a good resolution, use it.
+		if (success)
+		{
+			success = setDisplayResolution(width, height, BITS_PER_PIXEL, closest_refresh);
+		}
+
+		// Keep a copy of the actual current device mode in case we minimize 
+		// and change the screen resolution.   JC
+		EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode);
+
+		if (success)
+		{
+			mFullscreen = TRUE;
+			mFullscreenWidth   = dev_mode.dmPelsWidth;
+			mFullscreenHeight  = dev_mode.dmPelsHeight;
+			mFullscreenBits    = dev_mode.dmBitsPerPel;
+			mFullscreenRefresh = dev_mode.dmDisplayFrequency;
+
+			LL_INFOS("Window") << "Running at " << dev_mode.dmPelsWidth
+				<< "x"   << dev_mode.dmPelsHeight
+				<< "x"   << dev_mode.dmBitsPerPel
+				<< " @ " << dev_mode.dmDisplayFrequency
+				<< LL_ENDL;
+
+			window_rect.left = (long) 0;
+			window_rect.right = (long) width;			// Windows GDI rects don't include rightmost pixel
+			window_rect.top = (long) 0;
+			window_rect.bottom = (long) height;
+			dw_ex_style = WS_EX_APPWINDOW;
+			dw_style = WS_POPUP;
+
+			// Move window borders out not to cover window contents
+			AdjustWindowRectEx(&window_rect, dw_style, FALSE, dw_ex_style);
+		}
+		// If it failed, we don't want to run fullscreen
+		else
+		{
+			mFullscreen = FALSE;
+			mFullscreenWidth   = -1;
+			mFullscreenHeight  = -1;
+			mFullscreenBits    = -1;
+			mFullscreenRefresh = -1;
+
+			LL_INFOS("Window") << "Unable to run fullscreen at " << width << "x" << height << LL_ENDL;
+			return FALSE;
+		}
+	}
+	else
+	{
+		mFullscreen = FALSE;
+		window_rect.left = (long) (posp ? posp->mX : 0);
+		window_rect.right = (long) width + window_rect.left;			// Windows GDI rects don't include rightmost pixel
+		window_rect.top = (long) (posp ? posp->mY : 0);
+		window_rect.bottom = (long) height + window_rect.top;
+		// Window with an edge
+		dw_ex_style = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE;
+		dw_style = WS_OVERLAPPEDWINDOW;
+	}
+
+	// don't post quit messages when destroying old windows
+	mPostQuit = FALSE;
+
+	// create window
+	DestroyWindow(mWindowHandle);
+	mWindowHandle = CreateWindowEx(dw_ex_style,
+		mWindowClassName,
+		mWindowTitle,
+		WS_CLIPSIBLINGS | WS_CLIPCHILDREN | dw_style,
+		window_rect.left,								// x pos
+		window_rect.top,								// y pos
+		window_rect.right - window_rect.left,			// width
+		window_rect.bottom - window_rect.top,			// height
+		NULL,
+		NULL,
+		mhInstance,
+		NULL);
+
+	//-----------------------------------------------------------------------
+	// Create GL drawing context
+	//-----------------------------------------------------------------------
+	static PIXELFORMATDESCRIPTOR pfd =
+	{
+		sizeof(PIXELFORMATDESCRIPTOR), 
+			1,
+			PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, 
+			PFD_TYPE_RGBA,
+			BITS_PER_PIXEL,
+			0, 0, 0, 0, 0, 0,	// RGB bits and shift, unused
+			8,					// alpha bits
+			0,					// alpha shift
+			0,					// accum bits
+			0, 0, 0, 0,			// accum RGBA
+			24,					// depth bits
+			8,					// stencil bits, avi added for stencil test
+			0,
+			PFD_MAIN_PLANE,
+			0,
+			0, 0, 0
+	};
+
+	if (!(mhDC = GetDC(mWindowHandle)))
+	{
+		close();
+		OSMessageBox(mCallbacks->translateString("MBDevContextErr"),
+			mCallbacks->translateString("MBError"), OSMB_OK);
+		return FALSE;
+	}
+
+	if (!(pixel_format = ChoosePixelFormat(mhDC, &pfd)))
+	{
+		close();
+		OSMessageBox(mCallbacks->translateString("MBPixelFmtErr"),
+			mCallbacks->translateString("MBError"), OSMB_OK);
+		return FALSE;
+	}
+
+	// Verify what pixel format we actually received.
+	if (!DescribePixelFormat(mhDC, pixel_format, sizeof(PIXELFORMATDESCRIPTOR),
+		&pfd))
+	{
+		close();
+		OSMessageBox(mCallbacks->translateString("MBPixelFmtDescErr"),
+			mCallbacks->translateString("MBError"), OSMB_OK);
+		return FALSE;
+	}
+
+	if (pfd.cColorBits < 32)
+	{
+		close();
+		OSMessageBox(mCallbacks->translateString("MBTrueColorWindow"),
+			mCallbacks->translateString("MBError"), OSMB_OK);
+		return FALSE;
+	}
+
+	if (pfd.cAlphaBits < 8)
+	{
+		close();
+		OSMessageBox(mCallbacks->translateString("MBAlpha"),
+			mCallbacks->translateString("MBError"), OSMB_OK);
+		return FALSE;
+	}
+
+	if (!SetPixelFormat(mhDC, pixel_format, &pfd))
+	{
+		close();
+		OSMessageBox(mCallbacks->translateString("MBPixelFmtSetErr"),
+			mCallbacks->translateString("MBError"), OSMB_OK);
+		return FALSE;
+	}
+
+	if (!(mhRC = wglCreateContext(mhDC)))
+	{
+		close();
+		OSMessageBox(mCallbacks->translateString("MBGLContextErr"),
+			mCallbacks->translateString("MBError"), OSMB_OK);
+		return FALSE;
+	}
+
+	if (!wglMakeCurrent(mhDC, mhRC))
+	{
+		close();
+		OSMessageBox(mCallbacks->translateString("MBGLContextActErr"),
+			mCallbacks->translateString("MBError"), OSMB_OK);
+		return FALSE;
+	}
+
+	gGLManager.initWGL();
+
+	if (wglChoosePixelFormatARB)
+	{
+		// OK, at this point, use the ARB wglChoosePixelFormatsARB function to see if we
+		// can get exactly what we want.
+		GLint attrib_list[256];
+		S32 cur_attrib = 0;
+
+		attrib_list[cur_attrib++] = WGL_DEPTH_BITS_ARB;
+		attrib_list[cur_attrib++] = 24;
+
+		attrib_list[cur_attrib++] = WGL_STENCIL_BITS_ARB;
+		attrib_list[cur_attrib++] = 8;
+
+		attrib_list[cur_attrib++] = WGL_DRAW_TO_WINDOW_ARB;
+		attrib_list[cur_attrib++] = GL_TRUE;
+
+		attrib_list[cur_attrib++] = WGL_ACCELERATION_ARB;
+		attrib_list[cur_attrib++] = WGL_FULL_ACCELERATION_ARB;
+
+		attrib_list[cur_attrib++] = WGL_SUPPORT_OPENGL_ARB;
+		attrib_list[cur_attrib++] = GL_TRUE;
+
+		attrib_list[cur_attrib++] = WGL_DOUBLE_BUFFER_ARB;
+		attrib_list[cur_attrib++] = GL_TRUE;
+
+		attrib_list[cur_attrib++] = WGL_COLOR_BITS_ARB;
+		attrib_list[cur_attrib++] = 24;
+
+		attrib_list[cur_attrib++] = WGL_ALPHA_BITS_ARB;
+		attrib_list[cur_attrib++] = 8;
+
+		U32 end_attrib = 0;
+		if (mFSAASamples > 0)
+		{
+			end_attrib = cur_attrib;
+			attrib_list[cur_attrib++] = WGL_SAMPLE_BUFFERS_ARB;
+			attrib_list[cur_attrib++] = GL_TRUE;
+
+			attrib_list[cur_attrib++] = WGL_SAMPLES_ARB;
+			attrib_list[cur_attrib++] = mFSAASamples;
+		}
+
+		// End the list
+		attrib_list[cur_attrib++] = 0;
+
+		GLint pixel_formats[256];
+		U32 num_formats = 0;
+
+		// First we try and get a 32 bit depth pixel format
+		BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats);
+		if (!result)
+		{
+			close();
+			show_window_creation_error("Error after wglChoosePixelFormatARB 32-bit");
+			return FALSE;
+		}
+
+		if (!num_formats)
+		{
+			if (end_attrib > 0)
+			{
+				LL_INFOS("Window") << "No valid pixel format for " << mFSAASamples << "x anti-aliasing." << LL_ENDL;
+				attrib_list[end_attrib] = 0;
+
+				BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats);
+				if (!result)
+				{
+					close();
+					show_window_creation_error("Error after wglChoosePixelFormatARB 32-bit no AA");
+					return FALSE;
+				}
+			}
+
+			if (!num_formats)
+			{
+				LL_INFOS("Window") << "No 32 bit z-buffer, trying 24 bits instead" << LL_ENDL;
+				// Try 24-bit format
+				attrib_list[1] = 24;
+				BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats);
+				if (!result)
+				{
+					close();
+					show_window_creation_error("Error after wglChoosePixelFormatARB 24-bit");
+					return FALSE;
+				}
+
+				if (!num_formats)
+				{
+					LL_WARNS("Window") << "Couldn't get 24 bit z-buffer,trying 16 bits instead!" << LL_ENDL;
+					attrib_list[1] = 16;
+					BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats);
+					if (!result || !num_formats)
+					{
+						close();
+						show_window_creation_error("Error after wglChoosePixelFormatARB 16-bit");
+						return FALSE;
+					}
+				}
+			}
+
+			LL_INFOS("Window") << "Choosing pixel formats: " << num_formats << " pixel formats returned" << LL_ENDL;
+		}
+
+		
+
+		S32 swap_method = 0;
+		S32 cur_format = num_formats-1;
+		GLint swap_query = WGL_SWAP_METHOD_ARB;
+
+		BOOL found_format = FALSE;
+
+		while (!found_format && wglGetPixelFormatAttribivARB(mhDC, pixel_format, 0, 1, &swap_query, &swap_method))
+		{
+			if (swap_method == WGL_SWAP_UNDEFINED_ARB || cur_format <= 0)
+			{
+				found_format = TRUE;
+			}
+			else
+			{
+				--cur_format;
+			}
+		}
+		
+		pixel_format = pixel_formats[cur_format];
+		
+		if (mhDC != 0)											// Does The Window Have A Device Context?
+		{
+			wglMakeCurrent(mhDC, 0);							// Set The Current Active Rendering Context To Zero
+			if (mhRC != 0)										// Does The Window Have A Rendering Context?
+			{
+				wglDeleteContext (mhRC);							// Release The Rendering Context
+				mhRC = 0;										// Zero The Rendering Context
+
+			}
+			ReleaseDC (mWindowHandle, mhDC);						// Release The Device Context
+			mhDC = 0;											// Zero The Device Context
+		}
+		DestroyWindow (mWindowHandle);									// Destroy The Window
+		
+
+		mWindowHandle = CreateWindowEx(dw_ex_style,
+			mWindowClassName,
+			mWindowTitle,
+			WS_CLIPSIBLINGS | WS_CLIPCHILDREN | dw_style,
+			window_rect.left,								// x pos
+			window_rect.top,								// y pos
+			window_rect.right - window_rect.left,			// width
+			window_rect.bottom - window_rect.top,			// height
+			NULL,
+			NULL,
+			mhInstance,
+			NULL);
+
+		if (!(mhDC = GetDC(mWindowHandle)))
+		{
+			close();
+			OSMessageBox(mCallbacks->translateString("MBDevContextErr"), mCallbacks->translateString("MBError"), OSMB_OK);
+			return FALSE;
+		}
+
+		if (!SetPixelFormat(mhDC, pixel_format, &pfd))
+		{
+			close();
+			OSMessageBox(mCallbacks->translateString("MBPixelFmtSetErr"),
+				mCallbacks->translateString("MBError"), OSMB_OK);
+			return FALSE;
+		}
+
+		if (wglGetPixelFormatAttribivARB(mhDC, pixel_format, 0, 1, &swap_query, &swap_method))
+		{
+			switch (swap_method)
+			{
+			case WGL_SWAP_EXCHANGE_ARB:
+				mSwapMethod = SWAP_METHOD_EXCHANGE;
+				LL_DEBUGS("Window") << "Swap Method: Exchange" << LL_ENDL;
+				break;
+			case WGL_SWAP_COPY_ARB:
+				mSwapMethod = SWAP_METHOD_COPY;
+				LL_DEBUGS("Window") << "Swap Method: Copy" << LL_ENDL;
+				break;
+			case WGL_SWAP_UNDEFINED_ARB:
+				mSwapMethod = SWAP_METHOD_UNDEFINED;
+				LL_DEBUGS("Window") << "Swap Method: Undefined" << LL_ENDL;
+				break;
+			default:
+				mSwapMethod = SWAP_METHOD_UNDEFINED;
+				LL_DEBUGS("Window") << "Swap Method: Unknown" << LL_ENDL;
+				break;
+			}
+		}		
+	}
+	else
+	{
+		LL_WARNS("Window") << "No wgl_ARB_pixel_format extension, using default ChoosePixelFormat!" << LL_ENDL;
+	}
+
+	// Verify what pixel format we actually received.
+	if (!DescribePixelFormat(mhDC, pixel_format, sizeof(PIXELFORMATDESCRIPTOR),
+		&pfd))
+	{
+		close();
+		OSMessageBox(mCallbacks->translateString("MBPixelFmtDescErr"), mCallbacks->translateString("MBError"), OSMB_OK);
+		return FALSE;
+	}
+
+	LL_INFOS("Window") << "GL buffer: Color Bits " << S32(pfd.cColorBits) 
+		<< " Alpha Bits " << S32(pfd.cAlphaBits)
+		<< " Depth Bits " << S32(pfd.cDepthBits) 
+		<< LL_ENDL;
+
+	// make sure we have 32 bits per pixel
+	if (pfd.cColorBits < 32 || GetDeviceCaps(mhDC, BITSPIXEL) < 32)
+	{
+		close();
+		OSMessageBox(mCallbacks->translateString("MBTrueColorWindow"), mCallbacks->translateString("MBError"), OSMB_OK);
+		return FALSE;
+	}
+
+	if (pfd.cAlphaBits < 8)
+	{
+		close();
+		OSMessageBox(mCallbacks->translateString("MBAlpha"), mCallbacks->translateString("MBError"), OSMB_OK);
+		return FALSE;
+	}
+
+	if (!(mhRC = wglCreateContext(mhDC)))
+	{
+		close();
+		OSMessageBox(mCallbacks->translateString("MBGLContextErr"), mCallbacks->translateString("MBError"), OSMB_OK);
+		return FALSE;
+	}
+
+	if (!wglMakeCurrent(mhDC, mhRC))
+	{
+		close();
+		OSMessageBox(mCallbacks->translateString("MBGLContextActErr"), mCallbacks->translateString("MBError"), OSMB_OK);
+		return FALSE;
+	}
+
+	if (!gGLManager.initGL())
+	{
+		close();
+		OSMessageBox(mCallbacks->translateString("MBVideoDrvErr"), mCallbacks->translateString("MBError"), OSMB_OK);
+		return FALSE;
+	}
+
+	// Disable vertical sync for swap
+	if (disable_vsync && wglSwapIntervalEXT)
+	{
+		LL_DEBUGS("Window") << "Disabling vertical sync" << LL_ENDL;
+		wglSwapIntervalEXT(0);
+	}
+	else
+	{
+		LL_DEBUGS("Window") << "Keeping vertical sync" << LL_ENDL;
+	}
+
+	SetWindowLong(mWindowHandle, GWL_USERDATA, (U32)this);
+
+	// register this window as handling drag/drop events from the OS
+	DragAcceptFiles( mWindowHandle, TRUE );
+
+	mDragDrop->init( mWindowHandle );
+	
+	//register joystick timer callback
+	SetTimer( mWindowHandle, 0, 1000 / 30, NULL ); // 30 fps timer
+
+	// ok to post quit messages now
+	mPostQuit = TRUE;
+
+	if (auto_show)
+	{
+		show();
+		glClearColor(0.0f, 0.0f, 0.0f, 0.f);
+		glClear(GL_COLOR_BUFFER_BIT);
+		swapBuffers();
+	}
+
+	return TRUE;
+}
+
+void LLWindowWin32::moveWindow( const LLCoordScreen& position, const LLCoordScreen& size )
+{
+	if( mIsMouseClipping )
+	{
+		RECT client_rect_in_screen_space;
+		if( getClientRectInScreenSpace( &client_rect_in_screen_space ) )
+		{
+			ClipCursor( &client_rect_in_screen_space );
+		}
+	}
+
+	// if the window was already maximized, MoveWindow seems to still set the maximized flag even if
+	// the window is smaller than maximized.
+	// So we're going to do a restore first (which is a ShowWindow call) (SL-44655).
+
+	// THIS CAUSES DEV-15484 and DEV-15949 
+	//ShowWindow(mWindowHandle, SW_RESTORE);
+	// NOW we can call MoveWindow
+	MoveWindow(mWindowHandle, position.mX, position.mY, size.mX, size.mY, TRUE);
+}
+
+BOOL LLWindowWin32::setCursorPosition(const LLCoordWindow position)
+{
+	LLCoordScreen screen_pos;
+
+	mMousePositionModified = TRUE;
+	if (!mWindowHandle)
+	{
+		return FALSE;
+	}
+
+	if (!convertCoords(position, &screen_pos))
+	{
+		return FALSE;
+	}
+
+	// Inform the application of the new mouse position (needed for per-frame
+	// hover/picking to function).
+	LLCoordGL gl_pos;
+	convertCoords(position, &gl_pos);
+	mCallbacks->handleMouseMove(this, gl_pos, (MASK)0);
+	
+	// DEV-18951 VWR-8524 Camera moves wildly when alt-clicking.
+	// Because we have preemptively notified the application of the new
+	// mouse position via handleMouseMove() above, we need to clear out
+	// any stale mouse move events.  RN/JC
+	MSG msg;
+	while (PeekMessage(&msg, NULL, WM_MOUSEMOVE, WM_MOUSEMOVE, PM_REMOVE))
+	{ }
+
+	return SetCursorPos(screen_pos.mX, screen_pos.mY);
+}
+
+BOOL LLWindowWin32::getCursorPosition(LLCoordWindow *position)
+{
+	POINT cursor_point;
+	LLCoordScreen screen_pos;
+
+	if (!mWindowHandle ||
+		!GetCursorPos(&cursor_point))
+	{
+		return FALSE;
+	}
+
+	screen_pos.mX = cursor_point.x;
+	screen_pos.mY = cursor_point.y;
+
+	return convertCoords(screen_pos, position);
+}
+
+void LLWindowWin32::hideCursor()
+{
+	while (ShowCursor(FALSE) >= 0)
+	{
+		// nothing, wait for cursor to push down
+	}
+	mCursorHidden = TRUE;
+	mHideCursorPermanent = TRUE;
+}
+
+void LLWindowWin32::showCursor()
+{
+	// makes sure the cursor shows up
+	while (ShowCursor(TRUE) < 0)
+	{
+		// do nothing, wait for cursor to pop out
+	}
+	mCursorHidden = FALSE;
+	mHideCursorPermanent = FALSE;
+}
+
+void LLWindowWin32::showCursorFromMouseMove()
+{
+	if (!mHideCursorPermanent)
+	{
+		showCursor();
+	}
+}
+
+void LLWindowWin32::hideCursorUntilMouseMove()
+{
+	if (!mHideCursorPermanent)
+	{
+		hideCursor();
+		mHideCursorPermanent = FALSE;
+	}
+}
+
+BOOL LLWindowWin32::isCursorHidden()
+{
+	return mCursorHidden;
+}
+
+
+HCURSOR LLWindowWin32::loadColorCursor(LPCTSTR name)
+{
+	return (HCURSOR)LoadImage(mhInstance,
+							  name,
+							  IMAGE_CURSOR,
+							  0,	// default width
+							  0,	// default height
+							  LR_DEFAULTCOLOR);
+}
+
+
+void LLWindowWin32::initCursors()
+{
+	mCursor[ UI_CURSOR_ARROW ]		= LoadCursor(NULL, IDC_ARROW);
+	mCursor[ UI_CURSOR_WAIT ]		= LoadCursor(NULL, IDC_WAIT);
+	mCursor[ UI_CURSOR_HAND ]		= LoadCursor(NULL, IDC_HAND);
+	mCursor[ UI_CURSOR_IBEAM ]		= LoadCursor(NULL, IDC_IBEAM);
+	mCursor[ UI_CURSOR_CROSS ]		= LoadCursor(NULL, IDC_CROSS);
+	mCursor[ UI_CURSOR_SIZENWSE ]	= LoadCursor(NULL, IDC_SIZENWSE);
+	mCursor[ UI_CURSOR_SIZENESW ]	= LoadCursor(NULL, IDC_SIZENESW);
+	mCursor[ UI_CURSOR_SIZEWE ]		= LoadCursor(NULL, IDC_SIZEWE);  
+	mCursor[ UI_CURSOR_SIZENS ]		= LoadCursor(NULL, IDC_SIZENS);  
+	mCursor[ UI_CURSOR_NO ]			= LoadCursor(NULL, IDC_NO);
+	mCursor[ UI_CURSOR_WORKING ]	= LoadCursor(NULL, IDC_APPSTARTING); 
+
+	HMODULE module = GetModuleHandle(NULL);
+	mCursor[ UI_CURSOR_TOOLGRAB ]	= LoadCursor(module, TEXT("TOOLGRAB"));
+	mCursor[ UI_CURSOR_TOOLLAND ]	= LoadCursor(module, TEXT("TOOLLAND"));
+	mCursor[ UI_CURSOR_TOOLFOCUS ]	= LoadCursor(module, TEXT("TOOLFOCUS"));
+	mCursor[ UI_CURSOR_TOOLCREATE ]	= LoadCursor(module, TEXT("TOOLCREATE"));
+	mCursor[ UI_CURSOR_ARROWDRAG ]	= LoadCursor(module, TEXT("ARROWDRAG"));
+	mCursor[ UI_CURSOR_ARROWCOPY ]	= LoadCursor(module, TEXT("ARROWCOPY"));
+	mCursor[ UI_CURSOR_ARROWDRAGMULTI ]	= LoadCursor(module, TEXT("ARROWDRAGMULTI"));
+	mCursor[ UI_CURSOR_ARROWCOPYMULTI ]	= LoadCursor(module, TEXT("ARROWCOPYMULTI"));
+	mCursor[ UI_CURSOR_NOLOCKED ]	= LoadCursor(module, TEXT("NOLOCKED"));
+	mCursor[ UI_CURSOR_ARROWLOCKED ]= LoadCursor(module, TEXT("ARROWLOCKED"));
+	mCursor[ UI_CURSOR_GRABLOCKED ]	= LoadCursor(module, TEXT("GRABLOCKED"));
+	mCursor[ UI_CURSOR_TOOLTRANSLATE ]	= LoadCursor(module, TEXT("TOOLTRANSLATE"));
+	mCursor[ UI_CURSOR_TOOLROTATE ]	= LoadCursor(module, TEXT("TOOLROTATE")); 
+	mCursor[ UI_CURSOR_TOOLSCALE ]	= LoadCursor(module, TEXT("TOOLSCALE"));
+	mCursor[ UI_CURSOR_TOOLCAMERA ]	= LoadCursor(module, TEXT("TOOLCAMERA"));
+	mCursor[ UI_CURSOR_TOOLPAN ]	= LoadCursor(module, TEXT("TOOLPAN"));
+	mCursor[ UI_CURSOR_TOOLZOOMIN ] = LoadCursor(module, TEXT("TOOLZOOMIN"));
+	mCursor[ UI_CURSOR_TOOLPICKOBJECT3 ] = LoadCursor(module, TEXT("TOOLPICKOBJECT3"));
+	mCursor[ UI_CURSOR_PIPETTE ] = LoadCursor(module, TEXT("TOOLPIPETTE"));
+
+	// Color cursors
+	mCursor[UI_CURSOR_TOOLPLAY] = loadColorCursor(TEXT("TOOLPLAY"));
+	mCursor[UI_CURSOR_TOOLPAUSE] = loadColorCursor(TEXT("TOOLPAUSE"));
+	mCursor[UI_CURSOR_TOOLMEDIAOPEN] = loadColorCursor(TEXT("TOOLMEDIAOPEN"));
+
+	// Note: custom cursors that are not found make LoadCursor() return NULL.
+	for( S32 i = 0; i < UI_CURSOR_COUNT; i++ )
+	{
+		if( !mCursor[i] )
+		{
+			mCursor[i] = LoadCursor(NULL, IDC_ARROW);
+		}
+	}
+}
+
+
+
+void LLWindowWin32::setCursor(ECursorType cursor)
+{
+	if (cursor == UI_CURSOR_ARROW
+		&& mBusyCount > 0)
+	{
+		cursor = UI_CURSOR_WORKING;
+	}
+
+	if( mCurrentCursor != cursor )
+	{
+		mCurrentCursor = cursor;
+		SetCursor( mCursor[cursor] );
+	}
+}
+
+ECursorType LLWindowWin32::getCursor() const
+{
+	return mCurrentCursor;
+}
+
+void LLWindowWin32::captureMouse()
+{
+	SetCapture(mWindowHandle);
+}
+
+void LLWindowWin32::releaseMouse()
+{
+	// *NOTE:Mani ReleaseCapture will spawn new windows messages...
+	// which will in turn call our MainWindowProc. It therefore requires
+	// pausing *and more importantly resumption* of the mainlooptimeout...
+	// just like DispatchMessage below.
+	mCallbacks->handlePauseWatchdog(this);
+	ReleaseCapture();
+	mCallbacks->handleResumeWatchdog(this);
+}
+
+
+void LLWindowWin32::delayInputProcessing()
+{
+	mInputProcessingPaused = TRUE;
+}
+
+void LLWindowWin32::gatherInput()
+{
+	MSG		msg;
+	int		msg_count = 0;
+
+	LLMemType m1(LLMemType::MTYPE_GATHER_INPUT);
+
+	while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) && msg_count < MAX_MESSAGE_PER_UPDATE)
+	{
+		mCallbacks->handlePingWatchdog(this, "Main:TranslateGatherInput");
+		TranslateMessage(&msg);
+
+		// turn watchdog off in here to not fail if windows is doing something wacky
+		mCallbacks->handlePauseWatchdog(this);
+		DispatchMessage(&msg);
+		mCallbacks->handleResumeWatchdog(this);
+		msg_count++;
+
+		if ( mInputProcessingPaused )
+		{
+			break;
+		}
+		/* Attempted workaround for problem where typing fast and hitting
+		   return would result in only part of the text being sent. JC
+
+		BOOL key_posted = TranslateMessage(&msg);
+		DispatchMessage(&msg);
+		msg_count++;
+
+		// If a key was translated, a WM_CHAR might have been posted to the end
+		// of the event queue.  We need it immediately.
+		if (key_posted && msg.message == WM_KEYDOWN)
+		{
+			if (PeekMessage(&msg, NULL, WM_CHAR, WM_CHAR, PM_REMOVE))
+			{
+				TranslateMessage(&msg);
+				DispatchMessage(&msg);
+				msg_count++;
+			}
+		}
+		*/
+		mCallbacks->handlePingWatchdog(this, "Main:AsyncCallbackGatherInput");
+		// For async host by name support.  Really hacky.
+		if (gAsyncMsgCallback && (LL_WM_HOST_RESOLVED == msg.message))
+		{
+			gAsyncMsgCallback(msg);
+		}
+	}
+
+	mInputProcessingPaused = FALSE;
+
+	// clear this once we've processed all mouse messages that might have occurred after
+	// we slammed the mouse position
+	mMousePositionModified = FALSE;
+}
+
+static LLFastTimer::DeclareTimer FTM_KEYHANDLER("Handle Keyboard");
+static LLFastTimer::DeclareTimer FTM_MOUSEHANDLER("Handle Mouse");
+
+LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_param, LPARAM l_param)
+{
+	LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(h_wnd, GWL_USERDATA);
+
+
+	if (NULL != window_imp)
+	{
+		window_imp->mCallbacks->handleResumeWatchdog(window_imp);
+		window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:StartWndProc");
+		// Has user provided their own window callback?
+		if (NULL != window_imp->mWndProc)
+		{
+			if (!window_imp->mWndProc(h_wnd, u_msg, w_param, l_param))
+			{
+				// user has handled window message
+				return 0;
+			}
+		}
+
+		window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:PreSwitchWndProc");
+		
+		// Juggle to make sure we can get negative positions for when
+		// mouse is outside window.
+		LLCoordWindow window_coord((S32)(S16)LOWORD(l_param), (S32)(S16)HIWORD(l_param));
+
+		// This doesn't work, as LOWORD returns unsigned short.
+		//LLCoordWindow window_coord(LOWORD(l_param), HIWORD(l_param));
+		LLCoordGL gl_coord;
+
+		// pass along extended flag in mask
+		MASK mask = (l_param>>16 & KF_EXTENDED) ? MASK_EXTENDED : 0x0;
+		BOOL eat_keystroke = TRUE;
+
+		switch(u_msg)
+		{
+			RECT	update_rect;
+			S32		update_width;
+			S32		update_height;
+
+		case WM_TIMER:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_TIMER");
+			window_imp->mCallbacks->handleTimerEvent(window_imp);
+			break;
+
+		case WM_DEVICECHANGE:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_DEVICECHANGE");
+			if (gDebugWindowProc)
+			{
+				llinfos << "  WM_DEVICECHANGE: wParam=" << w_param 
+						<< "; lParam=" << l_param << llendl;
+			}
+			if (w_param == DBT_DEVNODES_CHANGED || w_param == DBT_DEVICEARRIVAL)
+			{
+				if (window_imp->mCallbacks->handleDeviceChange(window_imp))
+				{
+					return 0;
+				}
+			}
+			break;
+
+		case WM_PAINT:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_PAINT");
+			GetUpdateRect(window_imp->mWindowHandle, &update_rect, FALSE);
+			update_width = update_rect.right - update_rect.left + 1;
+			update_height = update_rect.bottom - update_rect.top + 1;
+			window_imp->mCallbacks->handlePaint(window_imp, update_rect.left, update_rect.top,
+				update_width, update_height);
+			break;
+		case WM_PARENTNOTIFY:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_PARENTNOTIFY");
+			u_msg = u_msg;
+			break;
+
+		case WM_SETCURSOR:
+			// This message is sent whenever the cursor is moved in a window.
+			// You need to set the appropriate cursor appearance.
+
+			// Only take control of cursor over client region of window
+			// This allows Windows(tm) to handle resize cursors, etc.
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SETCURSOR");
+			if (LOWORD(l_param) == HTCLIENT)
+			{
+				SetCursor(window_imp->mCursor[ window_imp->mCurrentCursor] );
+				return 0;
+			}
+			break;
+
+		case WM_ENTERMENULOOP:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_ENTERMENULOOP");
+			window_imp->mCallbacks->handleWindowBlock(window_imp);
+			break;
+
+		case WM_EXITMENULOOP:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_EXITMENULOOP");
+			window_imp->mCallbacks->handleWindowUnblock(window_imp);
+			break;
+
+		case WM_ACTIVATEAPP:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_ACTIVATEAPP");
+			{
+				// This message should be sent whenever the app gains or loses focus.
+				BOOL activating = (BOOL) w_param;
+				BOOL minimized = window_imp->getMinimized();
+
+				if (gDebugWindowProc)
+				{
+					LL_INFOS("Window") << "WINDOWPROC ActivateApp "
+						<< " activating " << S32(activating)
+						<< " minimized " << S32(minimized)
+						<< " fullscreen " << S32(window_imp->mFullscreen)
+						<< LL_ENDL;
+				}
+
+				if (window_imp->mFullscreen)
+				{
+					// When we run fullscreen, restoring or minimizing the app needs 
+					// to switch the screen resolution
+					if (activating)
+					{
+						window_imp->setFullscreenResolution();
+						window_imp->restore();
+					}
+					else
+					{
+						window_imp->minimize();
+						window_imp->resetDisplayResolution();
+					}
+				}
+
+				window_imp->mCallbacks->handleActivateApp(window_imp, activating);
+
+				break;
+			}
+
+		case WM_ACTIVATE:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_ACTIVATE");
+			{
+				// Can be one of WA_ACTIVE, WA_CLICKACTIVE, or WA_INACTIVE
+				BOOL activating = (LOWORD(w_param) != WA_INACTIVE);
+
+				BOOL minimized = BOOL(HIWORD(w_param));
+
+				if (!activating && LLWinImm::isAvailable() && window_imp->mPreeditor)
+				{
+					window_imp->interruptLanguageTextInput();
+				}
+
+				// JC - I'm not sure why, but if we don't report that we handled the 
+				// WM_ACTIVATE message, the WM_ACTIVATEAPP messages don't work 
+				// properly when we run fullscreen.
+				if (gDebugWindowProc)
+				{
+					LL_INFOS("Window") << "WINDOWPROC Activate "
+						<< " activating " << S32(activating) 
+						<< " minimized " << S32(minimized)
+						<< LL_ENDL;
+				}
+
+				// Don't handle this.
+				break;
+			}
+
+		case WM_QUERYOPEN:
+			// TODO: use this to return a nice icon
+			break;
+
+		case WM_SYSCOMMAND:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SYSCOMMAND");
+			switch(w_param)
+			{
+			case SC_KEYMENU: 
+				// Disallow the ALT key from triggering the default system menu.
+				return 0;		
+
+			case SC_SCREENSAVE:
+			case SC_MONITORPOWER:
+				// eat screen save messages and prevent them!
+				return 0;
+			}
+			break;
+
+		case WM_CLOSE:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_CLOSE");
+			// Will the app allow the window to close?
+			if (window_imp->mCallbacks->handleCloseRequest(window_imp))
+			{
+				// Get the app to initiate cleanup.
+				window_imp->mCallbacks->handleQuit(window_imp);
+				// The app is responsible for calling destroyWindow when done with GL
+			}
+			return 0;
+
+		case WM_DESTROY:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_DESTROY");
+			if (window_imp->shouldPostQuit())
+			{
+				PostQuitMessage(0);  // Posts WM_QUIT with an exit code of 0
+			}
+			return 0;
+
+		case WM_COMMAND:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_COMMAND");
+			if (!HIWORD(w_param)) // this message is from a menu
+			{
+				window_imp->mCallbacks->handleMenuSelect(window_imp, LOWORD(w_param));
+			}
+			break;
+
+		case WM_SYSKEYDOWN:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SYSKEYDOWN");
+			// allow system keys, such as ALT-F4 to be processed by Windows
+			eat_keystroke = FALSE;
+		case WM_KEYDOWN:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYDOWN");
+			{
+				if (gDebugWindowProc)
+				{
+					LL_INFOS("Window") << "Debug WindowProc WM_KEYDOWN "
+						<< " key " << S32(w_param) 
+						<< LL_ENDL;
+				}
+				if(gKeyboard->handleKeyDown(w_param, mask) && eat_keystroke)
+				{
+					return 0;
+				}
+				// pass on to windows if we didn't handle it
+				break;
+			}
+		case WM_SYSKEYUP:
+			eat_keystroke = FALSE;
+		case WM_KEYUP:
+		{
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYUP");
+			LLFastTimer t2(FTM_KEYHANDLER);
+
+			if (gDebugWindowProc)
+			{
+				LL_INFOS("Window") << "Debug WindowProc WM_KEYUP "
+					<< " key " << S32(w_param) 
+					<< LL_ENDL;
+			}
+			if (gKeyboard->handleKeyUp(w_param, mask) && eat_keystroke)
+			{
+				return 0;
+			}
+
+			// pass on to windows
+			break;
+		}
+		case WM_IME_SETCONTEXT:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_SETCONTEXT");
+			if (gDebugWindowProc)
+			{
+				llinfos << "WM_IME_SETCONTEXT" << llendl;
+			}
+			if (LLWinImm::isAvailable() && window_imp->mPreeditor)
+			{
+				l_param &= ~ISC_SHOWUICOMPOSITIONWINDOW;
+				// Invoke DefWinProc with the modified LPARAM.
+			}
+			break;
+
+		case WM_IME_STARTCOMPOSITION:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_STARTCOMPOSITION");
+			if (gDebugWindowProc)
+			{
+				llinfos << "WM_IME_STARTCOMPOSITION" << llendl;
+			}
+			if (LLWinImm::isAvailable() && window_imp->mPreeditor)
+			{
+				window_imp->handleStartCompositionMessage();
+				return 0;
+			}
+			break;
+
+		case WM_IME_ENDCOMPOSITION:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_ENDCOMPOSITION");
+			if (gDebugWindowProc)
+			{
+				llinfos << "WM_IME_ENDCOMPOSITION" << llendl;
+			}
+			if (LLWinImm::isAvailable() && window_imp->mPreeditor)
+			{
+				return 0;
+			}
+			break;
+
+		case WM_IME_COMPOSITION:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_COMPOSITION");
+			if (gDebugWindowProc)
+			{
+				llinfos << "WM_IME_COMPOSITION" << llendl;
+			}
+			if (LLWinImm::isAvailable() && window_imp->mPreeditor)
+			{
+				window_imp->handleCompositionMessage(l_param);
+				return 0;
+			}
+			break;
+
+		case WM_IME_REQUEST:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_REQUEST");
+			if (gDebugWindowProc)
+			{
+				llinfos << "WM_IME_REQUEST" << llendl;
+			}
+			if (LLWinImm::isAvailable() && window_imp->mPreeditor)
+			{
+				LRESULT result = 0;
+				if (window_imp->handleImeRequests(w_param, l_param, &result))
+				{
+					return result;
+				}
+			}
+			break;
+
+		case WM_CHAR:
+			// Should really use WM_UNICHAR eventually, but it requires a specific Windows version and I need
+			// to figure out how that works. - Doug
+			//
+			// ... Well, I don't think so.
+			// How it works is explained in Win32 API document, but WM_UNICHAR didn't work
+			// as specified at least on Windows XP SP1 Japanese version.  I have never used
+			// it since then, and I'm not sure whether it has been fixed now, but I don't think
+			// it is worth trying.  The good old WM_CHAR works just fine even for supplementary
+			// characters.  We just need to take care of surrogate pairs sent as two WM_CHAR's
+			// by ourselves.  It is not that tough.  -- Alissa Sabre @ SL
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_CHAR");
+			if (gDebugWindowProc)
+			{
+				LL_INFOS("Window") << "Debug WindowProc WM_CHAR "
+					<< " key " << S32(w_param) 
+					<< LL_ENDL;
+			}
+			// Even if LLWindowCallbacks::handleUnicodeChar(llwchar, BOOL) returned FALSE,
+			// we *did* processed the event, so I believe we should not pass it to DefWindowProc...
+			window_imp->handleUnicodeUTF16((U16)w_param, gKeyboard->currentMask(FALSE));
+			return 0;
+
+		case WM_LBUTTONDOWN:
+			{
+				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_LBUTTONDOWN");
+				LLFastTimer t2(FTM_MOUSEHANDLER);
+				if (LLWinImm::isAvailable() && window_imp->mPreeditor)
+				{
+					window_imp->interruptLanguageTextInput();
+				}
+
+				// Because we move the cursor position in the app, we need to query
+				// to find out where the cursor at the time the event is handled.
+				// If we don't do this, many clicks could get buffered up, and if the
+				// first click changes the cursor position, all subsequent clicks
+				// will occur at the wrong location.  JC
+				LLCoordWindow cursor_coord_window;
+				if (window_imp->mMousePositionModified)
+				{
+					window_imp->getCursorPosition(&cursor_coord_window);
+					window_imp->convertCoords(cursor_coord_window, &gl_coord);
+				}
+				else
+				{
+					window_imp->convertCoords(window_coord, &gl_coord);
+				}
+				MASK mask = gKeyboard->currentMask(TRUE);
+				// generate move event to update mouse coordinates
+				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
+				if (window_imp->mCallbacks->handleMouseDown(window_imp, gl_coord, mask))
+				{
+					return 0;
+				}
+			}
+			break;
+
+		case WM_LBUTTONDBLCLK:
+		//RN: ignore right button double clicks for now
+		//case WM_RBUTTONDBLCLK:
+			{
+				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_LBUTTONDBLCLK");
+				// Because we move the cursor position in the app, we need to query
+				// to find out where the cursor at the time the event is handled.
+				// If we don't do this, many clicks could get buffered up, and if the
+				// first click changes the cursor position, all subsequent clicks
+				// will occur at the wrong location.  JC
+				LLCoordWindow cursor_coord_window;
+				if (window_imp->mMousePositionModified)
+				{
+					window_imp->getCursorPosition(&cursor_coord_window);
+					window_imp->convertCoords(cursor_coord_window, &gl_coord);
+				}
+				else
+				{
+					window_imp->convertCoords(window_coord, &gl_coord);
+				}
+				MASK mask = gKeyboard->currentMask(TRUE);
+				// generate move event to update mouse coordinates
+				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
+				if (window_imp->mCallbacks->handleDoubleClick(window_imp, gl_coord, mask) )
+				{
+					return 0;
+				}
+			}
+			break;
+
+		case WM_LBUTTONUP:
+			{
+				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_LBUTTONUP");
+				LLFastTimer t2(FTM_MOUSEHANDLER);
+				//if (gDebugClicks)
+				//{
+				//	LL_INFOS("Window") << "WndProc left button up" << LL_ENDL;
+				//}
+				// Because we move the cursor position in the app, we need to query
+				// to find out where the cursor at the time the event is handled.
+				// If we don't do this, many clicks could get buffered up, and if the
+				// first click changes the cursor position, all subsequent clicks
+				// will occur at the wrong location.  JC
+				LLCoordWindow cursor_coord_window;
+				if (window_imp->mMousePositionModified)
+				{
+					window_imp->getCursorPosition(&cursor_coord_window);
+					window_imp->convertCoords(cursor_coord_window, &gl_coord);
+				}
+				else
+				{
+					window_imp->convertCoords(window_coord, &gl_coord);
+				}
+				MASK mask = gKeyboard->currentMask(TRUE);
+				// generate move event to update mouse coordinates
+				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
+				if (window_imp->mCallbacks->handleMouseUp(window_imp, gl_coord, mask))
+				{
+					return 0;
+				}
+			}
+			break;
+
+		case WM_RBUTTONDBLCLK:
+		case WM_RBUTTONDOWN:
+			{
+				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_RBUTTONDOWN");
+				LLFastTimer t2(FTM_MOUSEHANDLER);
+				if (LLWinImm::isAvailable() && window_imp->mPreeditor)
+				{
+					window_imp->interruptLanguageTextInput();
+				}
+
+				// Because we move the cursor position in the llviewerapp, we need to query
+				// to find out where the cursor at the time the event is handled.
+				// If we don't do this, many clicks could get buffered up, and if the
+				// first click changes the cursor position, all subsequent clicks
+				// will occur at the wrong location.  JC
+				LLCoordWindow cursor_coord_window;
+				if (window_imp->mMousePositionModified)
+				{
+					window_imp->getCursorPosition(&cursor_coord_window);
+					window_imp->convertCoords(cursor_coord_window, &gl_coord);
+				}
+				else
+				{
+					window_imp->convertCoords(window_coord, &gl_coord);
+				}
+				MASK mask = gKeyboard->currentMask(TRUE);
+				// generate move event to update mouse coordinates
+				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
+				if (window_imp->mCallbacks->handleRightMouseDown(window_imp, gl_coord, mask))
+				{
+					return 0;
+				}
+			}
+			break;
+
+		case WM_RBUTTONUP:
+			{
+				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_RBUTTONUP");
+				LLFastTimer t2(FTM_MOUSEHANDLER);
+				// Because we move the cursor position in the app, we need to query
+				// to find out where the cursor at the time the event is handled.
+				// If we don't do this, many clicks could get buffered up, and if the
+				// first click changes the cursor position, all subsequent clicks
+				// will occur at the wrong location.  JC
+				LLCoordWindow cursor_coord_window;
+				if (window_imp->mMousePositionModified)
+				{
+					window_imp->getCursorPosition(&cursor_coord_window);
+					window_imp->convertCoords(cursor_coord_window, &gl_coord);
+				}
+				else
+				{
+					window_imp->convertCoords(window_coord, &gl_coord);
+				}
+				MASK mask = gKeyboard->currentMask(TRUE);
+				// generate move event to update mouse coordinates
+				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
+				if (window_imp->mCallbacks->handleRightMouseUp(window_imp, gl_coord, mask))
+				{
+					return 0;
+				}
+			}
+			break;
+
+		case WM_MBUTTONDOWN:
+//		case WM_MBUTTONDBLCLK:
+			{
+				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MBUTTONDOWN");
+				LLFastTimer t2(FTM_MOUSEHANDLER);
+				if (LLWinImm::isAvailable() && window_imp->mPreeditor)
+				{
+					window_imp->interruptLanguageTextInput();
+				}
+
+				// Because we move the cursor position in tllviewerhe app, we need to query
+				// to find out where the cursor at the time the event is handled.
+				// If we don't do this, many clicks could get buffered up, and if the
+				// first click changes the cursor position, all subsequent clicks
+				// will occur at the wrong location.  JC
+				LLCoordWindow cursor_coord_window;
+				if (window_imp->mMousePositionModified)
+				{
+					window_imp->getCursorPosition(&cursor_coord_window);
+					window_imp->convertCoords(cursor_coord_window, &gl_coord);
+				}
+				else
+				{
+					window_imp->convertCoords(window_coord, &gl_coord);
+				}
+				MASK mask = gKeyboard->currentMask(TRUE);
+				// generate move event to update mouse coordinates
+				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
+				if (window_imp->mCallbacks->handleMiddleMouseDown(window_imp, gl_coord, mask))
+				{
+					return 0;
+				}
+			}
+			break;
+
+		case WM_MBUTTONUP:
+			{
+				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MBUTTONUP");
+				LLFastTimer t2(FTM_MOUSEHANDLER);
+				// Because we move the cursor position in the llviewer app, we need to query
+				// to find out where the cursor at the time the event is handled.
+				// If we don't do this, many clicks could get buffered up, and if the
+				// first click changes the cursor position, all subsequent clicks
+				// will occur at the wrong location.  JC
+				LLCoordWindow cursor_coord_window;
+				if (window_imp->mMousePositionModified)
+				{
+					window_imp->getCursorPosition(&cursor_coord_window);
+					window_imp->convertCoords(cursor_coord_window, &gl_coord);
+				}
+				else
+				{
+					window_imp->convertCoords(window_coord, &gl_coord);
+				}
+				MASK mask = gKeyboard->currentMask(TRUE);
+				// generate move event to update mouse coordinates
+				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
+				if (window_imp->mCallbacks->handleMiddleMouseUp(window_imp, gl_coord, mask))
+				{
+					return 0;
+				}
+			}
+			break;
+
+		case WM_MOUSEWHEEL:
+			{
+				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MOUSEWHEEL");
+				static short z_delta = 0;
+
+				RECT	client_rect;
+
+				// eat scroll events that occur outside our window, since we use mouse position to direct scroll
+				// instead of keyboard focus
+				// NOTE: mouse_coord is in *window* coordinates for scroll events
+				POINT mouse_coord = {(S32)(S16)LOWORD(l_param), (S32)(S16)HIWORD(l_param)};
+
+				if (ScreenToClient(window_imp->mWindowHandle, &mouse_coord)
+					&& GetClientRect(window_imp->mWindowHandle, &client_rect))
+				{
+					// we have a valid mouse point and client rect
+					if (mouse_coord.x < client_rect.left || client_rect.right < mouse_coord.x
+						|| mouse_coord.y < client_rect.top || client_rect.bottom < mouse_coord.y)
+					{
+						// mouse is outside of client rect, so don't do anything
+						return 0;
+					}
+				}
+
+				S16 incoming_z_delta = HIWORD(w_param);
+				z_delta += incoming_z_delta;
+				// cout << "z_delta " << z_delta << endl;
+
+				// current mouse wheels report changes in increments of zDelta (+120, -120)
+				// Future, higher resolution mouse wheels may report smaller deltas.
+				// So we sum the deltas and only act when we've exceeded WHEEL_DELTA
+				//
+				// If the user rapidly spins the wheel, we can get messages with
+				// large deltas, like 480 or so.  Thus we need to scroll more quickly.
+				if (z_delta <= -WHEEL_DELTA || WHEEL_DELTA <= z_delta)
+				{
+					window_imp->mCallbacks->handleScrollWheel(window_imp, -z_delta / WHEEL_DELTA);
+					z_delta = 0;
+				}
+				return 0;
+			}
+			/*
+			// TODO: add this after resolving _WIN32_WINNT issue
+			case WM_MOUSELEAVE:
+			{
+			window_imp->mCallbacks->handleMouseLeave(window_imp);
+
+			//				TRACKMOUSEEVENT track_mouse_event;
+			//				track_mouse_event.cbSize = sizeof( TRACKMOUSEEVENT );
+			//				track_mouse_event.dwFlags = TME_LEAVE;
+			//				track_mouse_event.hwndTrack = h_wnd;
+			//				track_mouse_event.dwHoverTime = HOVER_DEFAULT;
+			//				TrackMouseEvent( &track_mouse_event ); 
+			return 0;
+			}
+			*/
+			// Handle mouse movement within the window
+		case WM_MOUSEMOVE:
+			{
+				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MOUSEMOVE");
+				window_imp->convertCoords(window_coord, &gl_coord);
+				MASK mask = gKeyboard->currentMask(TRUE);
+				window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
+				return 0;
+			}
+
+		case WM_SIZE:
+			{
+				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SIZE");
+				S32 width = S32( LOWORD(l_param) );
+				S32 height = S32( HIWORD(l_param) );
+
+				if (gDebugWindowProc)
+				{
+					BOOL maximized = ( w_param == SIZE_MAXIMIZED );
+					BOOL restored  = ( w_param == SIZE_RESTORED );
+					BOOL minimized = ( w_param == SIZE_MINIMIZED );
+
+					LL_INFOS("Window") << "WINDOWPROC Size "
+						<< width << "x" << height
+						<< " max " << S32(maximized)
+						<< " min " << S32(minimized)
+						<< " rest " << S32(restored)
+						<< LL_ENDL;
+				}
+
+				// There's an odd behavior with WM_SIZE that I would call a bug. If 
+				// the window is maximized, and you call MoveWindow() with a size smaller
+				// than a maximized window, it ends up sending WM_SIZE with w_param set 
+				// to SIZE_MAXIMIZED -- which isn't true. So the logic below doesn't work.
+				// (SL-44655). Fixed it by calling ShowWindow(SW_RESTORE) first (see 
+				// LLWindowWin32::moveWindow in this file). 
+
+				// If we are now restored, but we weren't before, this
+				// means that the window was un-minimized.
+				if (w_param == SIZE_RESTORED && window_imp->mLastSizeWParam != SIZE_RESTORED)
+				{
+					window_imp->mCallbacks->handleActivate(window_imp, TRUE);
+				}
+
+				// handle case of window being maximized from fully minimized state
+				if (w_param == SIZE_MAXIMIZED && window_imp->mLastSizeWParam != SIZE_MAXIMIZED)
+				{
+					window_imp->mCallbacks->handleActivate(window_imp, TRUE);
+				}
+
+				// Also handle the minimization case
+				if (w_param == SIZE_MINIMIZED && window_imp->mLastSizeWParam != SIZE_MINIMIZED)
+				{
+					window_imp->mCallbacks->handleActivate(window_imp, FALSE);
+				}
+
+				// Actually resize all of our views
+				if (w_param != SIZE_MINIMIZED)
+				{
+					// Ignore updates for minimizing and minimized "windows"
+					window_imp->mCallbacks->handleResize(	window_imp, 
+						LOWORD(l_param), 
+						HIWORD(l_param) );
+				}
+
+				window_imp->mLastSizeWParam = w_param;
+
+				return 0;
+			}
+
+		case WM_SETFOCUS:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SETFOCUS");
+			if (gDebugWindowProc)
+			{
+				LL_INFOS("Window") << "WINDOWPROC SetFocus" << LL_ENDL;
+			}
+			window_imp->mCallbacks->handleFocus(window_imp);
+			return 0;
+
+		case WM_KILLFOCUS:
+			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KILLFOCUS");
+			if (gDebugWindowProc)
+			{
+				LL_INFOS("Window") << "WINDOWPROC KillFocus" << LL_ENDL;
+			}
+			window_imp->mCallbacks->handleFocusLost(window_imp);
+			return 0;
+
+		case WM_COPYDATA:
+			{
+				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_COPYDATA");
+				// received a URL
+				PCOPYDATASTRUCT myCDS = (PCOPYDATASTRUCT) l_param;
+				window_imp->mCallbacks->handleDataCopy(window_imp, myCDS->dwData, myCDS->lpData);
+			};
+			return 0;			
+
+			break;
+		}
+
+	window_imp->mCallbacks->handlePauseWatchdog(window_imp);	
+	}
+
+
+	// pass unhandled messages down to Windows
+	return DefWindowProc(h_wnd, u_msg, w_param, l_param);
+}
+
+BOOL LLWindowWin32::convertCoords(LLCoordGL from, LLCoordWindow *to)
+{
+	S32		client_height;
+	RECT	client_rect;
+	LLCoordWindow window_position;
+
+	if (!mWindowHandle ||
+		!GetClientRect(mWindowHandle, &client_rect) ||
+		NULL == to)
+	{
+		return FALSE;
+	}
+
+	to->mX = from.mX;
+	client_height = client_rect.bottom - client_rect.top;
+	to->mY = client_height - from.mY - 1;
+
+	return TRUE;
+}
+
+BOOL LLWindowWin32::convertCoords(LLCoordWindow from, LLCoordGL* to)
+{
+	S32		client_height;
+	RECT	client_rect;
+
+	if (!mWindowHandle ||
+		!GetClientRect(mWindowHandle, &client_rect) ||
+		NULL == to)
+	{
+		return FALSE;
+	}
+
+	to->mX = from.mX;
+	client_height = client_rect.bottom - client_rect.top;
+	to->mY = client_height - from.mY - 1;
+
+	return TRUE;
+}
+
+BOOL LLWindowWin32::convertCoords(LLCoordScreen from, LLCoordWindow* to)
+{	
+	POINT mouse_point;
+
+	mouse_point.x = from.mX;
+	mouse_point.y = from.mY;
+	BOOL result = ScreenToClient(mWindowHandle, &mouse_point);
+
+	if (result)
+	{
+		to->mX = mouse_point.x;
+		to->mY = mouse_point.y;
+	}
+
+	return result;
+}
+
+BOOL LLWindowWin32::convertCoords(LLCoordWindow from, LLCoordScreen *to)
+{
+	POINT mouse_point;
+
+	mouse_point.x = from.mX;
+	mouse_point.y = from.mY;
+	BOOL result = ClientToScreen(mWindowHandle, &mouse_point);
+
+	if (result)
+	{
+		to->mX = mouse_point.x;
+		to->mY = mouse_point.y;
+	}
+
+	return result;
+}
+
+BOOL LLWindowWin32::convertCoords(LLCoordScreen from, LLCoordGL *to)
+{
+	LLCoordWindow window_coord;
+
+	if (!mWindowHandle || (NULL == to))
+	{
+		return FALSE;
+	}
+
+	convertCoords(from, &window_coord);
+	convertCoords(window_coord, to);
+	return TRUE;
+}
+
+BOOL LLWindowWin32::convertCoords(LLCoordGL from, LLCoordScreen *to)
+{
+	LLCoordWindow window_coord;
+
+	if (!mWindowHandle || (NULL == to))
+	{
+		return FALSE;
+	}
+
+	convertCoords(from, &window_coord);
+	convertCoords(window_coord, to);
+	return TRUE;
+}
+
+
+BOOL LLWindowWin32::isClipboardTextAvailable()
+{
+	return IsClipboardFormatAvailable(CF_UNICODETEXT);
+}
+
+
+BOOL LLWindowWin32::pasteTextFromClipboard(LLWString &dst)
+{
+	BOOL success = FALSE;
+
+	if (IsClipboardFormatAvailable(CF_UNICODETEXT))
+	{
+		if (OpenClipboard(mWindowHandle))
+		{
+			HGLOBAL h_data = GetClipboardData(CF_UNICODETEXT);
+			if (h_data)
+			{
+				WCHAR *utf16str = (WCHAR*) GlobalLock(h_data);
+				if (utf16str)
+				{
+					dst = utf16str_to_wstring(utf16str);
+					LLWStringUtil::removeCRLF(dst);
+					GlobalUnlock(h_data);
+					success = TRUE;
+				}
+			}
+			CloseClipboard();
+		}
+	}
+
+	return success;
+}
+
+
+BOOL LLWindowWin32::copyTextToClipboard(const LLWString& wstr)
+{
+	BOOL success = FALSE;
+
+	if (OpenClipboard(mWindowHandle))
+	{
+		EmptyClipboard();
+
+		// Provide a copy of the data in Unicode format.
+		LLWString sanitized_string(wstr);
+		LLWStringUtil::addCRLF(sanitized_string);
+		llutf16string out_utf16 = wstring_to_utf16str(sanitized_string);
+		const size_t size_utf16 = (out_utf16.length() + 1) * sizeof(WCHAR);
+
+		// Memory is allocated and then ownership of it is transfered to the system.
+		HGLOBAL hglobal_copy_utf16 = GlobalAlloc(GMEM_MOVEABLE, size_utf16); 
+		if (hglobal_copy_utf16)
+		{
+			WCHAR* copy_utf16 = (WCHAR*) GlobalLock(hglobal_copy_utf16);
+			if (copy_utf16)
+			{
+				memcpy(copy_utf16, out_utf16.c_str(), size_utf16);	/* Flawfinder: ignore */
+				GlobalUnlock(hglobal_copy_utf16);
+
+				if (SetClipboardData(CF_UNICODETEXT, hglobal_copy_utf16))
+				{
+					success = TRUE;
+				}
+			}
+		}
+
+		CloseClipboard();
+	}
+
+	return success;
+}
+
+// Constrains the mouse to the window.
+void LLWindowWin32::setMouseClipping( BOOL b )
+{
+	if( b != mIsMouseClipping )
+	{
+		BOOL success = FALSE;
+
+		if( b )
+		{
+			GetClipCursor( &mOldMouseClip );
+
+			RECT client_rect_in_screen_space;
+			if( getClientRectInScreenSpace( &client_rect_in_screen_space ) )
+			{
+				success = ClipCursor( &client_rect_in_screen_space );
+			}
+		}
+		else
+		{
+			// Must restore the old mouse clip, which may be set by another window.
+			success = ClipCursor( &mOldMouseClip );
+			SetRect( &mOldMouseClip, 0, 0, 0, 0 );
+		}
+
+		if( success )
+		{
+			mIsMouseClipping = b;
+		}
+	}
+}
+
+BOOL LLWindowWin32::getClientRectInScreenSpace( RECT* rectp )
+{
+	BOOL success = FALSE;
+
+	RECT client_rect;
+	if( mWindowHandle && GetClientRect(mWindowHandle, &client_rect) )
+	{
+		POINT top_left;
+		top_left.x = client_rect.left;
+		top_left.y = client_rect.top;
+		ClientToScreen(mWindowHandle, &top_left); 
+
+		POINT bottom_right;
+		bottom_right.x = client_rect.right;
+		bottom_right.y = client_rect.bottom;
+		ClientToScreen(mWindowHandle, &bottom_right); 
+
+		SetRect( rectp,
+			top_left.x,
+			top_left.y,
+			bottom_right.x,
+			bottom_right.y );
+
+		success = TRUE;
+	}
+
+	return success;
+}
+
+void LLWindowWin32::flashIcon(F32 seconds)
+{
+	FLASHWINFO flash_info;
+
+	flash_info.cbSize = sizeof(FLASHWINFO);
+	flash_info.hwnd = mWindowHandle;
+	flash_info.dwFlags = FLASHW_TRAY;
+	flash_info.uCount = UINT(seconds / ICON_FLASH_TIME);
+	flash_info.dwTimeout = DWORD(1000.f * ICON_FLASH_TIME); // milliseconds
+	FlashWindowEx(&flash_info);
+}
+
+F32 LLWindowWin32::getGamma()
+{
+	return mCurrentGamma;
+}
+
+BOOL LLWindowWin32::restoreGamma()
+{
+	return SetDeviceGammaRamp(mhDC, mPrevGammaRamp);
+}
+
+BOOL LLWindowWin32::setGamma(const F32 gamma)
+{
+	mCurrentGamma = gamma;
+
+	LL_DEBUGS("Window") << "Setting gamma to " << gamma << LL_ENDL;
+
+	for ( int i = 0; i < 256; ++i )
+	{
+		int mult = 256 - ( int ) ( ( gamma - 1.0f ) * 128.0f );
+
+		int value = mult * i;
+
+		if ( value > 0xffff )
+			value = 0xffff;
+
+		mCurrentGammaRamp [ 0 * 256 + i ] = 
+			mCurrentGammaRamp [ 1 * 256 + i ] = 
+				mCurrentGammaRamp [ 2 * 256 + i ] = ( WORD )value;
+	};
+
+	return SetDeviceGammaRamp ( mhDC, mCurrentGammaRamp );
+}
+
+void LLWindowWin32::setFSAASamples(const U32 fsaa_samples)
+{
+	mFSAASamples = fsaa_samples;
+}
+
+U32 LLWindowWin32::getFSAASamples()
+{
+	return mFSAASamples;
+}
+
+LLWindow::LLWindowResolution* LLWindowWin32::getSupportedResolutions(S32 &num_resolutions)
+{
+	if (!mSupportedResolutions)
+	{
+		mSupportedResolutions = new LLWindowResolution[MAX_NUM_RESOLUTIONS];
+		DEVMODE dev_mode;
+
+		mNumSupportedResolutions = 0;
+		for (S32 mode_num = 0; mNumSupportedResolutions < MAX_NUM_RESOLUTIONS; mode_num++)
+		{
+			if (!EnumDisplaySettings(NULL, mode_num, &dev_mode))
+			{
+				break;
+			}
+
+			if (dev_mode.dmBitsPerPel == BITS_PER_PIXEL &&
+				dev_mode.dmPelsWidth >= 800 &&
+				dev_mode.dmPelsHeight >= 600)
+			{
+				BOOL resolution_exists = FALSE;
+				for(S32 i = 0; i < mNumSupportedResolutions; i++)
+				{
+					if (mSupportedResolutions[i].mWidth == dev_mode.dmPelsWidth &&
+						mSupportedResolutions[i].mHeight == dev_mode.dmPelsHeight)
+					{
+						resolution_exists = TRUE;
+					}
+				}
+				if (!resolution_exists)
+				{
+					mSupportedResolutions[mNumSupportedResolutions].mWidth = dev_mode.dmPelsWidth;
+					mSupportedResolutions[mNumSupportedResolutions].mHeight = dev_mode.dmPelsHeight;
+					mNumSupportedResolutions++;
+				}
+			}
+		}
+	}
+
+	num_resolutions = mNumSupportedResolutions;
+	return mSupportedResolutions;
+}
+
+
+F32 LLWindowWin32::getNativeAspectRatio()
+{
+	if (mOverrideAspectRatio > 0.f)
+	{
+		return mOverrideAspectRatio;
+	}
+	else if (mNativeAspectRatio > 0.f)
+	{
+		// we grabbed this value at startup, based on the user's desktop settings
+		return mNativeAspectRatio;
+	}
+	// RN: this hack presumes that the largest supported resolution is monitor-limited
+	// and that pixels in that mode are square, therefore defining the native aspect ratio
+	// of the monitor...this seems to work to a close approximation for most CRTs/LCDs
+	S32 num_resolutions;
+	LLWindowResolution* resolutions = getSupportedResolutions(num_resolutions);
+
+	return ((F32)resolutions[num_resolutions - 1].mWidth / (F32)resolutions[num_resolutions - 1].mHeight);
+}
+
+F32 LLWindowWin32::getPixelAspectRatio()
+{
+	F32 pixel_aspect = 1.f;
+	if (getFullscreen())
+	{
+		LLCoordScreen screen_size;
+		getSize(&screen_size);
+		pixel_aspect = getNativeAspectRatio() * (F32)screen_size.mY / (F32)screen_size.mX;
+	}
+
+	return pixel_aspect;
+}
+
+// Change display resolution.  Returns true if successful.
+// protected
+BOOL LLWindowWin32::setDisplayResolution(S32 width, S32 height, S32 bits, S32 refresh)
+{
+	DEVMODE dev_mode;
+	dev_mode.dmSize = sizeof(dev_mode);
+	BOOL success = FALSE;
+
+	// Don't change anything if we don't have to
+	if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode))
+	{
+		if (dev_mode.dmPelsWidth        == width &&
+			dev_mode.dmPelsHeight       == height &&
+			dev_mode.dmBitsPerPel       == bits &&
+			dev_mode.dmDisplayFrequency == refresh )
+		{
+			// ...display mode identical, do nothing
+			return TRUE;
+		}
+	}
+
+	memset(&dev_mode, 0, sizeof(dev_mode));
+	dev_mode.dmSize = sizeof(dev_mode);
+	dev_mode.dmPelsWidth        = width;
+	dev_mode.dmPelsHeight       = height;
+	dev_mode.dmBitsPerPel       = bits;
+	dev_mode.dmDisplayFrequency = refresh;
+	dev_mode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT | DM_DISPLAYFREQUENCY;
+
+	// CDS_FULLSCREEN indicates that this is a temporary change to the device mode.
+	LONG cds_result = ChangeDisplaySettings(&dev_mode, CDS_FULLSCREEN);
+
+	success = (DISP_CHANGE_SUCCESSFUL == cds_result);
+
+	if (!success)
+	{
+		LL_WARNS("Window") << "setDisplayResolution failed, "
+			<< width << "x" << height << "x" << bits << " @ " << refresh << LL_ENDL;
+	}
+
+	return success;
+}
+
+// protected
+BOOL LLWindowWin32::setFullscreenResolution()
+{
+	if (mFullscreen)
+	{
+		return setDisplayResolution( mFullscreenWidth, mFullscreenHeight, mFullscreenBits, mFullscreenRefresh);
+	}
+	else
+	{
+		return FALSE;
+	}
+}
+
+// protected
+BOOL LLWindowWin32::resetDisplayResolution()
+{
+	LL_DEBUGS("Window") << "resetDisplayResolution START" << LL_ENDL;
+
+	LONG cds_result = ChangeDisplaySettings(NULL, 0);
+
+	BOOL success = (DISP_CHANGE_SUCCESSFUL == cds_result);
+
+	if (!success)
+	{
+		LL_WARNS("Window") << "resetDisplayResolution failed" << LL_ENDL;
+	}
+
+	LL_DEBUGS("Window") << "resetDisplayResolution END" << LL_ENDL;
+
+	return success;
+}
+
+void LLWindowWin32::swapBuffers()
+{
+	SwapBuffers(mhDC);
+}
+
+
+//
+// LLSplashScreenImp
+//
+LLSplashScreenWin32::LLSplashScreenWin32()
+:	mWindow(NULL)
+{
+}
+
+LLSplashScreenWin32::~LLSplashScreenWin32()
+{
+}
+
+void LLSplashScreenWin32::showImpl()
+{
+	// This appears to work.  ???
+	HINSTANCE hinst = GetModuleHandle(NULL);
+
+	mWindow = CreateDialog(hinst, 
+		TEXT("SPLASHSCREEN"), 
+		NULL,	// no parent
+		(DLGPROC) LLSplashScreenWin32::windowProc); 
+	ShowWindow(mWindow, SW_SHOW);
+}
+
+
+void LLSplashScreenWin32::updateImpl(const std::string& mesg)
+{
+	if (!mWindow) return;
+
+	WCHAR w_mesg[1024];
+	mbstowcs(w_mesg, mesg.c_str(), 1024);
+
+	SendDlgItemMessage(mWindow,
+		666,		// HACK: text id
+		WM_SETTEXT,
+		FALSE,
+		(LPARAM)w_mesg);
+}
+
+
+void LLSplashScreenWin32::hideImpl()
+{
+	if (mWindow)
+	{
+		DestroyWindow(mWindow);
+		mWindow = NULL; 
+	}
+}
+
+
+// static
+LRESULT CALLBACK LLSplashScreenWin32::windowProc(HWND h_wnd, UINT u_msg,
+											WPARAM w_param, LPARAM l_param)
+{
+	// Just give it to windows
+	return DefWindowProc(h_wnd, u_msg, w_param, l_param);
+}
+
+//
+// Helper Funcs
+//
+
+S32 OSMessageBoxWin32(const std::string& text, const std::string& caption, U32 type)
+{
+	UINT uType;
+
+	switch(type)
+	{
+	case OSMB_OK:
+		uType = MB_OK;
+		break;
+	case OSMB_OKCANCEL:
+		uType = MB_OKCANCEL;
+		break;
+	case OSMB_YESNO:
+		uType = MB_YESNO;
+		break;
+	default:
+		uType = MB_OK;
+		break;
+	}
+
+	// HACK! Doesn't properly handle wide strings!
+	int retval_win = MessageBoxA(NULL, text.c_str(), caption.c_str(), uType);
+	S32 retval;
+
+	switch(retval_win)
+	{
+	case IDYES:
+		retval = OSBTN_YES;
+		break;
+	case IDNO:
+		retval = OSBTN_NO;
+		break;
+	case IDOK:
+		retval = OSBTN_OK;
+		break;
+	case IDCANCEL:
+		retval = OSBTN_CANCEL;
+		break;
+	default:
+		retval = OSBTN_CANCEL;
+		break;
+	}
+
+	return retval;
+}
+
+
+void LLWindowWin32::spawnWebBrowser(const std::string& escaped_url )
+{
+	bool found = false;
+	S32 i;
+	for (i = 0; i < gURLProtocolWhitelistCount; i++)
+	{
+		if (escaped_url.find(gURLProtocolWhitelist[i]) == 0)
+		{
+			found = true;
+			break;
+		}
+	}
+
+	if (!found)
+	{
+		LL_WARNS("Window") << "spawn_web_browser() called for url with protocol not on whitelist: " << escaped_url << LL_ENDL;
+		return;
+	}
+
+	LL_INFOS("Window") << "Opening URL " << escaped_url << LL_ENDL;
+
+	// replaced ShellExecute code with ShellExecuteEx since ShellExecute doesn't work
+	// reliablly on Vista.
+
+	// this is madness.. no, this is..
+	LLWString url_wstring = utf8str_to_wstring( escaped_url );
+	llutf16string url_utf16 = wstring_to_utf16str( url_wstring );
+
+	// let the OS decide what to use to open the URL
+	SHELLEXECUTEINFO sei = { sizeof( sei ) };
+	sei.fMask = SEE_MASK_FLAG_DDEWAIT;
+	sei.nShow = SW_SHOWNORMAL;
+	sei.lpVerb = L"open";
+	sei.lpFile = url_utf16.c_str();
+	ShellExecuteEx( &sei );
+
+	//// TODO: LEAVING OLD CODE HERE SO I DON'T BONE OTHER MERGES
+	//// DELETE THIS ONCE THE MERGES ARE DONE
+
+	// Figure out the user's default web browser
+	// HKEY_CLASSES_ROOT\http\shell\open\command
+	/*
+	std::string reg_path_str = gURLProtocolWhitelistHandler[i] + "\\shell\\open\\command";
+	WCHAR reg_path_wstr[256];
+	mbstowcs( reg_path_wstr, reg_path_str.c_str(), LL_ARRAY_SIZE(reg_path_wstr) );
+
+	HKEY key;
+	WCHAR browser_open_wstr[1024];
+	DWORD buffer_length = 1024;
+	RegOpenKeyEx(HKEY_CLASSES_ROOT, reg_path_wstr, 0, KEY_QUERY_VALUE, &key);
+	RegQueryValueEx(key, NULL, NULL, NULL, (LPBYTE)browser_open_wstr, &buffer_length);
+	RegCloseKey(key);
+
+	// Convert to STL string
+	LLWString browser_open_wstring = utf16str_to_wstring(browser_open_wstr);
+
+	if (browser_open_wstring.length() < 2)
+	{
+		LL_WARNS("Window") << "Invalid browser executable in registry " << browser_open_wstring << LL_ENDL;
+		return;
+	}
+
+	// Extract the process that's supposed to be launched
+	LLWString browser_executable;
+	if (browser_open_wstring[0] == '"')
+	{
+		// executable is quoted, find the matching quote
+		size_t quote_pos = browser_open_wstring.find('"', 1);
+		// copy out the string including both quotes
+		browser_executable = browser_open_wstring.substr(0, quote_pos+1);
+	}
+	else
+	{
+		// executable not quoted, find a space
+		size_t space_pos = browser_open_wstring.find(' ', 1);
+		browser_executable = browser_open_wstring.substr(0, space_pos);
+	}
+
+	LL_DEBUGS("Window") << "Browser reg key: " << wstring_to_utf8str(browser_open_wstring) << LL_ENDL;
+	LL_INFOS("Window") << "Browser executable: " << wstring_to_utf8str(browser_executable) << LL_ENDL;
+
+	// Convert URL to wide string for Windows API
+	// Assume URL is UTF8, as can come from scripts
+	LLWString url_wstring = utf8str_to_wstring(escaped_url);
+	llutf16string url_utf16 = wstring_to_utf16str(url_wstring);
+
+	// Convert executable and path to wide string for Windows API
+	llutf16string browser_exec_utf16 = wstring_to_utf16str(browser_executable);
+
+	// ShellExecute returns HINSTANCE for backwards compatiblity.
+	// MS docs say to cast to int and compare to 32.
+	HWND our_window = NULL;
+	LPCWSTR directory_wstr = NULL;
+	int retval = (int) ShellExecute(our_window, 	// Flawfinder: ignore
+									L"open", 
+									browser_exec_utf16.c_str(), 
+									url_utf16.c_str(), 
+									directory_wstr,
+									SW_SHOWNORMAL);
+	if (retval > 32)
+	{
+		LL_DEBUGS("Window") << "load_url success with " << retval << LL_ENDL;
+	}
+	else
+	{
+		LL_INFOS("Window") << "load_url failure with " << retval << LL_ENDL;
+	}
+	*/
+}
+
+
+BOOL LLWindowWin32::dialogColorPicker( F32 *r, F32 *g, F32 *b )
+{
+	BOOL retval = FALSE;
+
+	static CHOOSECOLOR cc;
+	static COLORREF crCustColors[16];
+	cc.lStructSize = sizeof(CHOOSECOLOR);
+	cc.hwndOwner = mWindowHandle;
+	cc.hInstance = NULL;
+	cc.rgbResult = RGB ((*r * 255.f),(*g *255.f),(*b * 255.f));
+	//cc.rgbResult = RGB (0x80,0x80,0x80); 
+	cc.lpCustColors = crCustColors;
+	cc.Flags = CC_RGBINIT | CC_FULLOPEN;
+	cc.lCustData = 0;
+	cc.lpfnHook = NULL;
+	cc.lpTemplateName = NULL;
+ 
+	// This call is modal, so pause agent
+	//send_agent_pause();	// this is in newview and we don't want to set up a dependency
+	{
+		retval = ChooseColor(&cc);
+	}
+	//send_agent_resume();	// this is in newview and we don't want to set up a dependency
+
+	*b = ((F32)((cc.rgbResult >> 16) & 0xff)) / 255.f;
+
+	*g = ((F32)((cc.rgbResult >> 8) & 0xff)) / 255.f;
+	
+	*r = ((F32)(cc.rgbResult & 0xff)) / 255.f;
+
+	return (retval);
+}
+
+void *LLWindowWin32::getPlatformWindow()
+{
+	return (void*)mWindowHandle;
+}
+
+void LLWindowWin32::bringToFront()
+{
+	BringWindowToTop(mWindowHandle);
+}
+
+// set (OS) window focus back to the client
+void LLWindowWin32::focusClient()
+{
+	SetFocus ( mWindowHandle );
+}
+
+void LLWindowWin32::allowLanguageTextInput(LLPreeditor *preeditor, BOOL b)
+{
+	if (b == sLanguageTextInputAllowed || !LLWinImm::isAvailable())
+	{
+		return;
+	}
+
+	if (preeditor != mPreeditor && !b)
+	{
+		// This condition may occur with a call to
+		// setEnabled(BOOL) from LLTextEditor or LLLineEditor
+		// when the control is not focused.
+		// We need to silently ignore the case so that
+		// the language input status of the focused control
+		// is not disturbed.
+		return;
+	}
+
+	// Take care of old and new preeditors.
+	if (preeditor != mPreeditor || !b)
+	{
+		if (sLanguageTextInputAllowed)
+		{
+			interruptLanguageTextInput();
+		}
+		mPreeditor = (b ? preeditor : NULL);
+	}
+
+	sLanguageTextInputAllowed = b;
+
+	if ( sLanguageTextInputAllowed )
+	{
+		// Allowing: Restore the previous IME status, so that the user has a feeling that the previous 
+		// text input continues naturally.  Be careful, however, the IME status is meaningful only during the user keeps 
+		// using same Input Locale (aka Keyboard Layout).
+		if (sWinIMEOpened && GetKeyboardLayout(0) == sWinInputLocale)
+		{
+			HIMC himc = LLWinImm::getContext(mWindowHandle);
+			LLWinImm::setOpenStatus(himc, TRUE);
+			LLWinImm::setConversionStatus(himc, sWinIMEConversionMode, sWinIMESentenceMode);
+			LLWinImm::releaseContext(mWindowHandle, himc);
+		}
+	}
+	else
+	{
+		// Disallowing: Turn off the IME so that succeeding key events bypass IME and come to us directly.
+		// However, do it after saving the current IME  status.  We need to restore the status when
+		//   allowing language text input again.
+		sWinInputLocale = GetKeyboardLayout(0);
+		sWinIMEOpened = LLWinImm::isIME(sWinInputLocale);
+		if (sWinIMEOpened)
+		{
+			HIMC himc = LLWinImm::getContext(mWindowHandle);
+			sWinIMEOpened = LLWinImm::getOpenStatus(himc);
+			if (sWinIMEOpened)
+			{
+				LLWinImm::getConversionStatus(himc, &sWinIMEConversionMode, &sWinIMESentenceMode);
+
+				// We need both ImmSetConversionStatus and ImmSetOpenStatus here to surely disable IME's 
+				// keyboard hooking, because Some IME reacts only on the former and some other on the latter...
+				LLWinImm::setConversionStatus(himc, IME_CMODE_NOCONVERSION, sWinIMESentenceMode);
+				LLWinImm::setOpenStatus(himc, FALSE);
+			}
+			LLWinImm::releaseContext(mWindowHandle, himc);
+ 		}
+	}
+}
+
+void LLWindowWin32::fillCandidateForm(const LLCoordGL& caret, const LLRect& bounds, 
+		CANDIDATEFORM *form)
+{
+	LLCoordWindow caret_coord, top_left, bottom_right;
+	convertCoords(caret, &caret_coord);
+	convertCoords(LLCoordGL(bounds.mLeft, bounds.mTop), &top_left);
+	convertCoords(LLCoordGL(bounds.mRight, bounds.mBottom), &bottom_right);
+
+	memset(form, 0, sizeof(CANDIDATEFORM));
+	form->dwStyle = CFS_EXCLUDE;
+	form->ptCurrentPos.x = caret_coord.mX;
+	form->ptCurrentPos.y = caret_coord.mY;
+	form->rcArea.left   = top_left.mX;
+	form->rcArea.top    = top_left.mY;
+	form->rcArea.right  = bottom_right.mX;
+	form->rcArea.bottom = bottom_right.mY;
+}
+
+
+// Put the IME window at the right place (near current text input).   Point coordinates should be the top of the current text line.
+void LLWindowWin32::setLanguageTextInput( const LLCoordGL & position )
+{
+	if (sLanguageTextInputAllowed && LLWinImm::isAvailable())
+	{
+		HIMC himc = LLWinImm::getContext(mWindowHandle);
+
+		LLCoordWindow win_pos;
+		convertCoords( position, &win_pos );
+
+		if ( win_pos.mX >= 0 && win_pos.mY >= 0 && 
+			(win_pos.mX != sWinIMEWindowPosition.mX) || (win_pos.mY != sWinIMEWindowPosition.mY) )
+		{
+			COMPOSITIONFORM ime_form;
+			memset( &ime_form, 0, sizeof(ime_form) );
+			ime_form.dwStyle = CFS_POINT;
+			ime_form.ptCurrentPos.x = win_pos.mX;
+			ime_form.ptCurrentPos.y = win_pos.mY;
+
+			LLWinImm::setCompositionWindow( himc, &ime_form );
+
+			sWinIMEWindowPosition.set( win_pos.mX, win_pos.mY );
+		}
+
+		LLWinImm::releaseContext(mWindowHandle, himc);
+	}
+}
+
+
+void LLWindowWin32::fillCharPosition(const LLCoordGL& caret, const LLRect& bounds, const LLRect& control,
+		IMECHARPOSITION *char_position)
+{
+	LLCoordScreen caret_coord, top_left, bottom_right;
+	convertCoords(caret, &caret_coord);
+	convertCoords(LLCoordGL(bounds.mLeft, bounds.mTop), &top_left);
+	convertCoords(LLCoordGL(bounds.mRight, bounds.mBottom), &bottom_right);
+
+	char_position->pt.x = caret_coord.mX;
+	char_position->pt.y = top_left.mY;	// Windows wants the coordinate of upper left corner of a character...
+	char_position->cLineHeight = bottom_right.mY - top_left.mY;
+	char_position->rcDocument.left   = top_left.mX;
+	char_position->rcDocument.top    = top_left.mY;
+	char_position->rcDocument.right  = bottom_right.mX;
+	char_position->rcDocument.bottom = bottom_right.mY;
+}
+
+void LLWindowWin32::fillCompositionLogfont(LOGFONT *logfont)
+{
+	// Our font is a list of FreeType recognized font files that may
+	// not have a corresponding ones in Windows' fonts.  Hence, we
+	// can't simply tell Windows which font we are using.  We will
+	// notify a _standard_ font for a current input locale instead.
+	// We use a hard-coded knowledge about the Windows' standard
+	// configuration to do so...
+
+	memset(logfont, 0, sizeof(LOGFONT));
+
+	const WORD lang_id = LOWORD(GetKeyboardLayout(0));
+	switch (PRIMARYLANGID(lang_id))
+	{
+	case LANG_CHINESE:
+		// We need to identify one of two Chinese fonts.
+		switch (SUBLANGID(lang_id))
+		{
+		case SUBLANG_CHINESE_SIMPLIFIED:
+		case SUBLANG_CHINESE_SINGAPORE:
+			logfont->lfCharSet = GB2312_CHARSET;
+			lstrcpy(logfont->lfFaceName, TEXT("SimHei"));
+			break;
+		case SUBLANG_CHINESE_TRADITIONAL:
+		case SUBLANG_CHINESE_HONGKONG:
+		case SUBLANG_CHINESE_MACAU:
+		default:
+			logfont->lfCharSet = CHINESEBIG5_CHARSET;
+			lstrcpy(logfont->lfFaceName, TEXT("MingLiU"));
+			break;			
+		}
+		break;
+	case LANG_JAPANESE:
+		logfont->lfCharSet = SHIFTJIS_CHARSET;
+		lstrcpy(logfont->lfFaceName, TEXT("MS Gothic"));
+		break;		
+	case LANG_KOREAN:
+		logfont->lfCharSet = HANGUL_CHARSET;
+		lstrcpy(logfont->lfFaceName, TEXT("Gulim"));
+		break;
+	default:
+		logfont->lfCharSet = ANSI_CHARSET;
+		lstrcpy(logfont->lfFaceName, TEXT("Tahoma"));
+		break;
+	}
+							
+	logfont->lfHeight = mPreeditor->getPreeditFontSize();
+	logfont->lfWeight = FW_NORMAL;
+}	
+
+U32 LLWindowWin32::fillReconvertString(const LLWString &text,
+	S32 focus, S32 focus_length, RECONVERTSTRING *reconvert_string)
+{
+	const llutf16string text_utf16 = wstring_to_utf16str(text);
+	const DWORD required_size = sizeof(RECONVERTSTRING) + (text_utf16.length() + 1) * sizeof(WCHAR);
+	if (reconvert_string && reconvert_string->dwSize >= required_size)
+	{
+		const DWORD focus_utf16_at = wstring_utf16_length(text, 0, focus);
+		const DWORD focus_utf16_length = wstring_utf16_length(text, focus, focus_length);
+
+		reconvert_string->dwVersion = 0;
+		reconvert_string->dwStrLen = text_utf16.length();
+		reconvert_string->dwStrOffset = sizeof(RECONVERTSTRING);
+		reconvert_string->dwCompStrLen = focus_utf16_length;
+		reconvert_string->dwCompStrOffset = focus_utf16_at * sizeof(WCHAR);
+		reconvert_string->dwTargetStrLen = 0;
+		reconvert_string->dwTargetStrOffset = focus_utf16_at * sizeof(WCHAR);
+
+		const LPWSTR text = (LPWSTR)((BYTE *)reconvert_string + sizeof(RECONVERTSTRING));
+		memcpy(text, text_utf16.c_str(), (text_utf16.length() + 1) * sizeof(WCHAR));
+	}
+	return required_size;
+}
+
+void LLWindowWin32::updateLanguageTextInputArea()
+{
+	if (!mPreeditor || !LLWinImm::isAvailable())
+	{
+		return;
+	}
+
+	LLCoordGL caret_coord;
+	LLRect preedit_bounds;
+	if (mPreeditor->getPreeditLocation(-1, &caret_coord, &preedit_bounds, NULL))
+	{
+		mLanguageTextInputPointGL = caret_coord;
+		mLanguageTextInputAreaGL = preedit_bounds;
+
+		CANDIDATEFORM candidate_form;
+		fillCandidateForm(caret_coord, preedit_bounds, &candidate_form);
+
+		HIMC himc = LLWinImm::getContext(mWindowHandle);
+		// Win32 document says there may be up to 4 candidate windows.
+		// This magic number 4 appears only in the document, and
+		// there are no constant/macro for the value...
+		for (int i = 3; i >= 0; --i)
+		{
+			candidate_form.dwIndex = i;
+			LLWinImm::setCandidateWindow(himc, &candidate_form);
+		}
+		LLWinImm::releaseContext(mWindowHandle, himc);
+	}
+}
+
+void LLWindowWin32::interruptLanguageTextInput()
+{
+	if (mPreeditor)
+	{
+		if (LLWinImm::isAvailable())
+		{
+			HIMC himc = LLWinImm::getContext(mWindowHandle);
+			LLWinImm::notifyIME(himc, NI_COMPOSITIONSTR, CPS_COMPLETE, 0);
+			LLWinImm::releaseContext(mWindowHandle, himc);
+		}
+
+		// Win32 document says there will be no composition string
+		// after NI_COMPOSITIONSTR returns.  The following call to
+		// resetPreedit should be a NOP unless IME goes mad...
+		mPreeditor->resetPreedit();
+	}
+}
+
+void LLWindowWin32::handleStartCompositionMessage()
+{
+	// Let IME know the font to use in feedback UI.
+	LOGFONT logfont;
+	fillCompositionLogfont(&logfont);
+	HIMC himc = LLWinImm::getContext(mWindowHandle);
+	LLWinImm::setCompositionFont(himc, &logfont);
+	LLWinImm::releaseContext(mWindowHandle, himc);
+}
+
+// Handle WM_IME_COMPOSITION message.
+
+void LLWindowWin32::handleCompositionMessage(const U32 indexes)
+{
+	BOOL needs_update = FALSE;
+	LLWString result_string;
+	LLWString preedit_string;
+	S32 preedit_string_utf16_length = 0;
+	LLPreeditor::segment_lengths_t preedit_segment_lengths;
+	LLPreeditor::standouts_t preedit_standouts;
+
+	// Step I: Receive details of preedits from IME.
+
+	HIMC himc = LLWinImm::getContext(mWindowHandle);
+
+	if (indexes & GCS_RESULTSTR)
+	{
+		LONG size = LLWinImm::getCompositionString(himc, GCS_RESULTSTR, NULL, 0);
+		if (size >= 0)
+		{
+			const LPWSTR data = new WCHAR[size / sizeof(WCHAR) + 1];
+			size = LLWinImm::getCompositionString(himc, GCS_RESULTSTR, data, size);
+			if (size > 0)
+			{
+				result_string = utf16str_to_wstring(llutf16string(data, size / sizeof(WCHAR)));
+			}
+			delete[] data;
+			needs_update = TRUE;
+		}
+	}
+	
+	if (indexes & GCS_COMPSTR)
+	{
+		LONG size = LLWinImm::getCompositionString(himc, GCS_COMPSTR, NULL, 0);
+		if (size >= 0)
+		{
+			const LPWSTR data = new WCHAR[size / sizeof(WCHAR) + 1];
+			size = LLWinImm::getCompositionString(himc, GCS_COMPSTR, data, size);
+			if (size > 0)
+			{
+				preedit_string_utf16_length = size / sizeof(WCHAR);
+				preedit_string = utf16str_to_wstring(llutf16string(data, size / sizeof(WCHAR)));
+			}
+			delete[] data;
+			needs_update = TRUE;
+		}
+	}
+
+	if ((indexes & GCS_COMPCLAUSE) && preedit_string.length() > 0)
+	{
+		LONG size = LLWinImm::getCompositionString(himc, GCS_COMPCLAUSE, NULL, 0);
+		if (size > 0)
+		{
+			const LPDWORD data = new DWORD[size / sizeof(DWORD)];
+			size = LLWinImm::getCompositionString(himc, GCS_COMPCLAUSE, data, size);
+			if (size >= sizeof(DWORD) * 2
+				&& data[0] == 0 && data[size / sizeof(DWORD) - 1] == preedit_string_utf16_length)
+			{
+				preedit_segment_lengths.resize(size / sizeof(DWORD) - 1);
+				S32 offset = 0;
+				for (U32 i = 0; i < preedit_segment_lengths.size(); i++)
+				{
+					const S32 length = wstring_wstring_length_from_utf16_length(preedit_string, offset, data[i + 1] - data[i]);
+					preedit_segment_lengths[i] = length;
+					offset += length;
+				}
+			}
+			delete[] data;
+		}
+	}
+
+	if ((indexes & GCS_COMPATTR) && preedit_segment_lengths.size() > 1)
+	{
+		LONG size = LLWinImm::getCompositionString(himc, GCS_COMPATTR, NULL, 0);
+		if (size > 0)
+		{
+			const LPBYTE data = new BYTE[size / sizeof(BYTE)];
+			size = LLWinImm::getCompositionString(himc, GCS_COMPATTR, data, size);
+			if (size == preedit_string_utf16_length)
+			{
+				preedit_standouts.assign(preedit_segment_lengths.size(), FALSE);
+				S32 offset = 0;
+				for (U32 i = 0; i < preedit_segment_lengths.size(); i++)
+				{
+					if (ATTR_TARGET_CONVERTED == data[offset] || ATTR_TARGET_NOTCONVERTED == data[offset])
+					{
+						preedit_standouts[i] = TRUE;
+					}
+					offset += wstring_utf16_length(preedit_string, offset, preedit_segment_lengths[i]);
+				}
+			}
+			delete[] data;
+		}
+	}
+
+	S32 caret_position = preedit_string.length();
+	if (indexes & GCS_CURSORPOS)
+	{
+		const S32 caret_position_utf16 = LLWinImm::getCompositionString(himc, GCS_CURSORPOS, NULL, 0);
+		if (caret_position_utf16 >= 0 && caret_position <= preedit_string_utf16_length)
+		{
+			caret_position = wstring_wstring_length_from_utf16_length(preedit_string, 0, caret_position_utf16);
+		}
+	}
+
+	if (indexes == 0)
+	{
+		// I'm not sure this condition really happens, but
+		// Windows SDK document says it is an indication
+		// of "reset everything."
+		needs_update = TRUE;
+	}
+
+	LLWinImm::releaseContext(mWindowHandle, himc);
+
+	// Step II: Update the active preeditor.
+
+	if (needs_update)
+	{
+		mPreeditor->resetPreedit();
+
+		if (result_string.length() > 0)
+		{
+			for (LLWString::const_iterator i = result_string.begin(); i != result_string.end(); i++)
+			{
+				mPreeditor->handleUnicodeCharHere(*i);
+			}
+		}
+
+		if (preedit_string.length() == 0)
+ 		{
+			preedit_segment_lengths.clear();
+			preedit_standouts.clear();
+		}
+		else
+		{
+			if (preedit_segment_lengths.size() == 0)
+			{
+				preedit_segment_lengths.assign(1, preedit_string.length());
+			}
+			if (preedit_standouts.size() == 0)
+			{
+				preedit_standouts.assign(preedit_segment_lengths.size(), FALSE);
+			}
+		}
+		mPreeditor->updatePreedit(preedit_string, preedit_segment_lengths, preedit_standouts, caret_position);
+
+		// Some IME doesn't query char position after WM_IME_COMPOSITION,
+		// so we need to update them actively.
+		updateLanguageTextInputArea();
+	}
+}
+
+// Given a text and a focus range, find_context finds and returns a
+// surrounding context of the focused subtext.  A variable pointed
+// to by offset receives the offset in llwchars of the beginning of
+// the returned context string in the given wtext.
+
+static LLWString find_context(const LLWString & wtext, S32 focus, S32 focus_length, S32 *offset)
+{
+	static const S32 CONTEXT_EXCESS = 30;	// This value is by experiences.
+
+	const S32 e = llmin((S32) wtext.length(), focus + focus_length + CONTEXT_EXCESS);
+	S32 end = focus + focus_length;
+	while (end < e && '\n' != wtext[end])
+	{
+		end++;
+	}
+
+	const S32 s = llmax(0, focus - CONTEXT_EXCESS);
+	S32 start = focus;
+	while (start > s && '\n' != wtext[start - 1])
+	{
+		--start;
+	}
+
+	*offset = start;
+	return wtext.substr(start, end - start);
+}
+
+// final stage of handling drop requests - both from WM_DROPFILES message
+// for files and via IDropTarget interface requests.
+LLWindowCallbacks::DragNDropResult LLWindowWin32::completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, LLWindowCallbacks::DragNDropAction action, const std::string url )
+{
+	return mCallbacks->handleDragNDrop( this, gl_coord, mask, action, url );
+}
+
+// Handle WM_IME_REQUEST message.
+// If it handled the message, returns TRUE.  Otherwise, FALSE.
+// When it handled the message, the value to be returned from
+// the Window Procedure is set to *result.
+
+BOOL LLWindowWin32::handleImeRequests(U32 request, U32 param, LRESULT *result)
+{
+	if ( mPreeditor )
+	{
+		switch (request)
+		{
+			case IMR_CANDIDATEWINDOW:		// http://msdn2.microsoft.com/en-us/library/ms776080.aspx
+			{
+				LLCoordGL caret_coord;
+				LLRect preedit_bounds;
+				mPreeditor->getPreeditLocation(-1, &caret_coord, &preedit_bounds, NULL);
+				
+				CANDIDATEFORM *const form = (CANDIDATEFORM *)param;
+				DWORD const dwIndex = form->dwIndex;
+				fillCandidateForm(caret_coord, preedit_bounds, form);
+				form->dwIndex = dwIndex;
+
+				*result = 1;
+				return TRUE;
+			}
+			case IMR_QUERYCHARPOSITION:
+			{
+				IMECHARPOSITION *const char_position = (IMECHARPOSITION *)param;
+
+				// char_position->dwCharPos counts in number of
+				// WCHARs, i.e., UTF-16 encoding units, so we can't simply pass the
+				// number to getPreeditLocation.  
+
+				const LLWString & wtext = mPreeditor->getPreeditString();
+				S32 preedit, preedit_length;
+				mPreeditor->getPreeditRange(&preedit, &preedit_length);
+				LLCoordGL caret_coord;
+				LLRect preedit_bounds, text_control;
+				const S32 position = wstring_wstring_length_from_utf16_length(wtext, preedit, char_position->dwCharPos);
+
+				if (!mPreeditor->getPreeditLocation(position, &caret_coord, &preedit_bounds, &text_control))
+				{
+					LL_WARNS("Window") << "*** IMR_QUERYCHARPOSITON called but getPreeditLocation failed." << LL_ENDL;
+					return FALSE;
+				}
+				fillCharPosition(caret_coord, preedit_bounds, text_control, char_position);
+
+				*result = 1;
+				return TRUE;
+			}
+			case IMR_COMPOSITIONFONT:
+			{
+				fillCompositionLogfont((LOGFONT *)param);
+
+				*result = 1;
+				return TRUE;
+			}
+			case IMR_RECONVERTSTRING:
+			{
+				mPreeditor->resetPreedit();
+				const LLWString & wtext = mPreeditor->getPreeditString();
+				S32 select, select_length;
+				mPreeditor->getSelectionRange(&select, &select_length);
+
+				S32 context_offset;
+				const LLWString context = find_context(wtext, select, select_length, &context_offset);
+
+				RECONVERTSTRING * const reconvert_string = (RECONVERTSTRING *)param;
+				const U32 size = fillReconvertString(context, select - context_offset, select_length, reconvert_string);
+				if (reconvert_string)
+				{
+					if (select_length == 0)
+					{
+						// Let the IME to decide the reconversion range, and
+						// adjust the reconvert_string structure accordingly.
+						HIMC himc = LLWinImm::getContext(mWindowHandle);
+						const BOOL adjusted = LLWinImm::setCompositionString(himc,
+									SCS_QUERYRECONVERTSTRING, reconvert_string, size, NULL, 0);
+						LLWinImm::releaseContext(mWindowHandle, himc);
+						if (adjusted)
+						{
+							const llutf16string & text_utf16 = wstring_to_utf16str(context);
+							const S32 new_preedit_start = reconvert_string->dwCompStrOffset / sizeof(WCHAR);
+							const S32 new_preedit_end = new_preedit_start + reconvert_string->dwCompStrLen;
+							select = utf16str_wstring_length(text_utf16, new_preedit_start);
+							select_length = utf16str_wstring_length(text_utf16, new_preedit_end) - select;
+							select += context_offset;
+						}
+					}
+					mPreeditor->markAsPreedit(select, select_length);
+				}
+
+				*result = size;
+				return TRUE;
+			}
+			case IMR_CONFIRMRECONVERTSTRING:
+			{
+				*result = FALSE;
+				return TRUE;
+			}
+			case IMR_DOCUMENTFEED:
+			{
+				const LLWString & wtext = mPreeditor->getPreeditString();
+				S32 preedit, preedit_length;
+				mPreeditor->getPreeditRange(&preedit, &preedit_length);
+				
+				S32 context_offset;
+				LLWString context = find_context(wtext, preedit, preedit_length, &context_offset);
+				preedit -= context_offset;
+				if (preedit_length)
+				{
+					// IMR_DOCUMENTFEED may be called when we have an active preedit.
+					// We should pass the context string *excluding* the preedit string.
+					// Otherwise, some IME are confused.
+					context.erase(preedit, preedit_length);
+				}
+				
+				RECONVERTSTRING *reconvert_string = (RECONVERTSTRING *)param;
+				*result = fillReconvertString(context, preedit, 0, reconvert_string);
+				return TRUE;
+			}
+			default:
+				return FALSE;
+		}
+	}
+
+	return FALSE;
+}
+
+//static
+std::vector<std::string> LLWindowWin32::getDynamicFallbackFontList()
+{
+	// Fonts previously in getFontListSans() have moved to fonts.xml.
+	return std::vector<std::string>();
+}
+
+
+#endif // LL_WINDOWS
-- 
GitLab


From 84e985e255b66e9ffb09deba373136c97eeb86b3 Mon Sep 17 00:00:00 2001
From: Erica <erica@lindenlab.com>
Date: Mon, 1 Feb 2010 17:24:03 -0800
Subject: [PATCH 415/521] Preferences clean up in advance of qa beta branch

---
 .../xui/en/panel_preferences_advanced.xml     | 307 +++++++++---------
 .../xui/en/panel_preferences_alerts.xml       |  46 +--
 .../xui/en/panel_preferences_general.xml      |  24 +-
 .../xui/en/panel_preferences_sound.xml        | 109 +++----
 4 files changed, 229 insertions(+), 257 deletions(-)

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 141678f7eb2..4d14d46743d 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <panel
  border="true"
- follows="left|top|right|bottom"
+ follows="all"
  height="408"
+ label="Advanced"
  layout="topleft"
  left="102"
  name="advanced"
@@ -13,130 +13,29 @@
      name="aspect_ratio_text">
         [NUM]:[DEN]
     </panel.string>
-    <check_box
-     control_name="UseChatBubbles"
-     follows="left|top"
-     height="16"
-     label="Bubble chat"
-     layout="topleft"
-     left="30"
-     top="10"
-     name="bubble_text_chat"
-     width="150" />
-    <color_swatch
-     can_apply_immediately="true"
-     color="0 0 0 1"
-     control_name="BackgroundChatColor"
-     follows="left|top"
-     height="47"
-     layout="topleft"
-     left_delta="280"
-     name="background"
-     tool_tip="Choose color for bubble chat"
-     top_delta="1"
-     width="44">
-        <color_swatch.init_callback
-		     function="Pref.getUIColor"
-		     parameter="BackgroundChatColor" />
-		    <color_swatch.commit_callback
-		     function="Pref.applyUIColor"
-		     parameter="BackgroundChatColor" />
-    </color_swatch>
-    <slider
-     control_name="ChatBubbleOpacity"
-     follows="left|top"
-     height="16"
-     increment="0.05"
-     initial_value="1"
-     label="Opacity"
-     layout="topleft"
-     left_delta="-230"
-     top_pad="-28"
-     label_width="50"
-     name="bubble_chat_opacity"
-     width="200" />
-    <text
-     follows="left|top"
-     type="string"
-     length="1"
-     height="25"
-     layout="topleft"
-     left="30"
-     top_pad="5"
-     name="AspectRatioLabel1"
-     tool_tip="width / height"
-     label_width="50"
-     width="120">
-        Aspect ratio
-    </text>
-    <combo_box
-     allow_text_entry="true"
-     height="23"
-     follows="left|top"
-     layout="topleft"
-     left_pad="0"
-     max_chars="100"
-     name="aspect_ratio"
-     tool_tip="width / height"
-     top_delta="0"
-     width="150">
-        <combo_box.item
-         enabled="true"
-         label=" 4:3 (Standard CRT)"
-         name="item1"
-         value="1.333333" />
-        <combo_box.item
-         enabled="true"
-         label=" 5:4 (1280x1024 LCD)"
-         name="item2"
-         value="1.25" />
-        <combo_box.item
-         enabled="true"
-         label=" 8:5 (Widescreen)"
-         name="item3"
-         value="1.6" />
-        <combo_box.item
-         enabled="true"
-         label=" 16:9 (Widescreen)"
-         name="item4"
-         value="1.7777777" />
-    </combo_box>
-    <check_box
-     control_name="FullScreenAutoDetectAspectRatio"
-     follows="left|top"
-     height="25"
-     label="Auto-detect"
-     layout="topleft"
-     left_pad="10"
-     name="aspect_auto_detect"
-     width="256">
-        <check_box.commit_callback
-         function="Pref.AutoDetectAspect" />
-    </check_box>
-     <text
-     follows="left|top"
-     type="string"
-     length="1"
-     height="10"
-     left="30"
-     name="heading1"
-     top_pad="5"
-     width="270">
-Camera:
-	</text>
+         <icon
+	 follows="left|top"
+	 height="18"
+	 image_name="Cam_FreeCam_Off"
+         layout="topleft"
+	 name="camera_icon"
+	 mouse_opaque="false"
+	 visible="true"
+	 width="18"
+         left="30"
+         top="10"/>
     <slider
      can_edit_text="true"
-	 control_name="CameraAngle"
+     control_name="CameraAngle"
      decimal_digits="2"
-     top_pad="5"
      follows="left|top"
      height="16"
      increment="0.025"
      initial_value="1.57"
      layout="topleft"
      label_width="100"
-     label="View Angle"
-     left_delta="50"
+     label="View angle"
+     left_pad="30"
      max_val="2.97"
      min_val="0.17"
      name="camera_fov"
@@ -165,11 +64,11 @@ Camera:
      type="string"
      length="1"
      height="10"
-     left="30"
+     left="80"
      name="heading2"
      width="270"
      top_pad="5">
-Automatic positioning for:
+Automatic position for:
 	</text>
         <check_box
      control_name="EditCameraMovement"
@@ -177,7 +76,7 @@ Automatic positioning for:
      follows="left|top"
      label="Build/Edit"
      layout="topleft"
-     left_delta="50"
+     left_delta="30"
      name="edit_camera_movement"
      tool_tip="Use automatic camera positioning when entering and exiting edit mode"
      width="280"
@@ -191,27 +90,27 @@ Automatic positioning for:
      name="appearance_camera_movement"
      tool_tip="Use automatic camera positioning while in edit mode"
      width="242" />
-     <text
-     follows="left|top"
-     type="string"
-     length="1"
-     height="10"
-     left="30"
-     name="heading3"
-     top_pad="5"
-     width="270">
-Avatars:
-	</text>
+     	<icon
+	 follows="left|top"
+	 height="18"
+	 image_name="Move_Walk_Off"
+         layout="topleft"
+	 name="avatar_icon"
+	 mouse_opaque="false"
+	 visible="true"
+	 width="18"
+         top_pad="2"
+         left="30"
+         />
     <check_box
      control_name="FirstPersonAvatarVisible"
      follows="left|top"
      height="20"
      label="Show me in Mouselook"
      layout="topleft"
-     left_delta="50"
+     left_pad="30"
      name="first_person_avatar_visible"
-     width="256"
-     top_pad="0"/>
+     width="256" />
     <check_box
      control_name="ArrowKeysAlwaysMove"
      follows="left|top"
@@ -242,22 +141,61 @@ Avatars:
      name="enable_lip_sync"
      width="237"
      top_pad="0" />
+        <check_box
+     control_name="UseChatBubbles"
+     follows="left|top"
+     height="16"
+     label="Bubble chat"
+     layout="topleft"
+     left="78"
+     top_pad="6"
+     name="bubble_text_chat"
+     width="150" />
+    <slider
+     control_name="ChatBubbleOpacity"
+     follows="left|top"
+     height="16"
+     increment="0.05"
+     initial_value="1"
+     label="Opacity"
+     layout="topleft"
+     left="80"
+     label_width="50"
+     name="bubble_chat_opacity"
+     width="200" />
+    <color_swatch
+     can_apply_immediately="true"
+     color="0 0 0 1"
+     control_name="BackgroundChatColor"
+     follows="left|top"
+     height="50"
+     layout="topleft"
+     left_pad="10"
+     name="background"
+     tool_tip="Choose color for bubble chat"
+     width="38">
+        <color_swatch.init_callback
+		     function="Pref.getUIColor"
+		     parameter="BackgroundChatColor" />
+		    <color_swatch.commit_callback
+		     function="Pref.applyUIColor"
+		     parameter="BackgroundChatColor" />
+    </color_swatch>
     <check_box
      control_name="ShowScriptErrors"
      follows="left|top"
      height="20"
-     label="Show script errors"
+     label="Show script errors in:"
      layout="topleft"
      left="30"
      name="show_script_errors"
-     width="256"
-     top_pad="5"/>
+     width="256" />
     <radio_group
      enabled_control="ShowScriptErrors"
      control_name="ShowScriptErrorsLocation"
      follows="top|left"
      draw_border="false"
-     height="40"
+     height="16"
      layout="topleft"
      left_delta="50"
      name="show_location"
@@ -265,7 +203,7 @@ Avatars:
      width="364">
         <radio_item
          height="16"
-         label="In chat"
+         label="Nearby chat"
          layout="topleft"
          left="3"
          name="0"
@@ -273,7 +211,7 @@ Avatars:
          width="315" />
         <radio_item
          height="16"
-         label="In a window"
+         label="Separate window"
          layout="topleft"
          left_delta="175"
          name="1"
@@ -284,50 +222,105 @@ Avatars:
      follows="top|left"
      enabled_control="EnableVoiceChat"
      control_name="PushToTalkToggle"
-     height="20"
-     label="Toggle mode for microphone when I press the Speak trigger key:"
+     height="15"
+     label="Toggle speak on/off when I press:"
      layout="topleft"
      left="30"
      name="push_to_talk_toggle_check"
      width="237"
-     top_pad="-25"
      tool_tip="When in toggle mode, press and release the trigger key ONCE to switch your microphone on or off. When not in toggle mode, the microphone broadcasts your voice only while the trigger is being held down."/>
     <line_editor
      follows="top|left"
      control_name="PushToTalkButton"
-     enabled="false" 
+     enabled="false"
      enabled_control="EnableVoiceChat"
-     height="19"
-     left_delta="50"
-     max_length="254"
+     height="23"
+     left="80"
+     max_length="200"
      name="modifier_combo"
      label="Push-to-Speak trigger"
-     top_pad="0"
-     width="280" />
+     top_pad="5"
+     width="200" />
     <button
      follows="top|left"
      enabled_control="EnableVoiceChat"
      height="23"
      label="Set Key"
-     left_delta="0"
+     left_pad="5"
      name="set_voice_hotkey_button"
-     width="115"
-     top_pad="5">
+     width="100">
           <button.commit_callback
           function="Pref.VoiceSetKey" />
     </button>
     <button
-     bottom_delta="0"
      enabled_control="EnableVoiceChat"
-     follows="left"
+     follows="top|left"
      halign="center"
      height="23"
-     label="Middle Mouse Button"
-     left_delta="120"
+     image_overlay="Refresh_Off"
+     tool_tip="Reset to Middle Mouse Button"
      mouse_opaque="true"
      name="set_voice_middlemouse_button"
-     width="160">
+     left_pad="5"
+     width="25">
           <button.commit_callback
           function="Pref.VoiceSetMiddleMouse" />
     </button>
+       <text
+     follows="left|top"
+     type="string"
+     length="1"
+     height="13"
+     layout="topleft"
+     left="30"
+     top_pad="8"
+     name="AspectRatioLabel1"
+     tool_tip="width / height"
+     label_width="50"
+     width="120">
+        Aspect ratio
+    </text>
+    <combo_box
+     allow_text_entry="true"
+     height="23"
+     follows="left|top"
+     layout="topleft"
+     left="80"
+     max_chars="100"
+     name="aspect_ratio"
+     tool_tip="width / height"
+     width="150">
+        <combo_box.item
+         enabled="true"
+         label=" 4:3 (Standard CRT)"
+         name="item1"
+         value="1.333333" />
+        <combo_box.item
+         enabled="true"
+         label=" 5:4 (1280x1024 LCD)"
+         name="item2"
+         value="1.25" />
+        <combo_box.item
+         enabled="true"
+         label=" 8:5 (Widescreen)"
+         name="item3"
+         value="1.6" />
+        <combo_box.item
+         enabled="true"
+         label=" 16:9 (Widescreen)"
+         name="item4"
+         value="1.7777777" />
+    </combo_box>
+    <check_box
+     control_name="FullScreenAutoDetectAspectRatio"
+     follows="left|top"
+     height="25"
+     label="Automatic"
+     layout="topleft"
+     left_pad="10"
+     name="aspect_auto_detect"
+     width="256">
+        <check_box.commit_callback
+         function="Pref.AutoDetectAspect" />
+    </check_box>
 </panel>
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 ace8281b4e3..188fd3b7bc0 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <panel
  border="true"
- height="500"
+ height="408"
  label="Popups"
  layout="topleft"
  left="0"
@@ -14,7 +14,7 @@
      follows="top|left"
      height="12"
      layout="topleft"
-     left="30"
+     left="10"
      name="tell_me_label"
      top="10"
      width="300">
@@ -32,7 +32,7 @@
     <check_box
      control_name="ChatOnlineNotification"
      height="16"
-     label="When my friends log out or in"
+     label="When my friends log in or out"
      layout="topleft"
      left_delta="0"
      name="friends_online_notify_checkbox"
@@ -42,38 +42,33 @@
      type="string"
      length="1"
      follows="top|left"
-     font="SansSerifBold"
      height="12"
      layout="topleft"
-     left="30"
+     left="10"
      name="show_label"
-     top_pad="14"
+     top_pad="8"
      width="450">
-        Always show these notifications:
+        Always show:
     </text>
     <scroll_list
      follows="top|left"
-     height="92"
+     height="140"
      layout="topleft"
      left="10"
-     multi_select="true" 
+     multi_select="true"
      name="enabled_popups"
      width="475" />
 	 <button
 	 enabled_control="FirstSelectedDisabledPopups"
      follows="top|left"
      height="23"
-     image_disabled="PushButton_Disabled"
-     image_disabled_selected="PushButton_Disabled"
      image_overlay="Arrow_Up"
-     image_selected="PushButton_Selected"
-     image_unselected="PushButton_Off"
      hover_glow_amount="0.15"
      layout="topleft"
-     left_delta="137"
+     left="180"
      name="enable_this_popup"
-     top_pad="10"
-     width="43">
+     top_pad="5"
+     width="40">
         <button.commit_callback
          function="Pref.ClickEnablePopup" />
     </button>
@@ -81,17 +76,13 @@
 	 enabled_control="FirstSelectedEnabledPopups"
 	 follows="top|left"
      height="23"
-     image_disabled="PushButton_Disabled"
-     image_disabled_selected="PushButton_Disabled"
      image_overlay="Arrow_Down"
-     image_selected="PushButton_Selected"
-     image_unselected="PushButton_Off"
      hover_glow_amount="0.15"
      layout="topleft"
-     left_pad="50"
+     left_pad="40"
      name="disable_this_popup"
      top_delta="0"
-     width="43">
+     width="40">
         <button.commit_callback
          function="Pref.ClickDisablePopup" />
     </button>
@@ -99,21 +90,20 @@
      type="string"
      length="1"
      follows="top|left"
-     font="SansSerifBold"
      height="12"
      layout="topleft"
-     left="30"
+     left="10"
      name="dont_show_label"
-     top_pad="10"
+     top_pad="-10"
      width="450">
-        Never show these notifications:
+        Never show:
     </text>
     <scroll_list
      follows="top|left"
-     height="92"
+     height="140"
      layout="topleft"
      left="10"
-     multi_select="true" 
+     multi_select="true"
      name="disabled_popups"
      width="475" />
 </panel>
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 22c75a595ed..099c789e4be 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
@@ -89,11 +89,12 @@
     <text
  font="SansSerifSmall"
      type="string"
+     text_color="White_50"
      length="1"
      follows="left|top"
      height="18"
      layout="topleft"
-     left_pad="5"
+     left_pad="10"
      name="language_textbox2"
      width="200">
         (Requires restart)
@@ -179,7 +180,7 @@
      left_pad="5"
      name="show_location_checkbox"
      top_delta="5"
-     width="256" />        
+     width="256" />
    <text
     type="string"
     length="1"
@@ -203,21 +204,21 @@
          layout="topleft"
          name="radio"
          value="0"
-         width="100" />
+         width="75" />
         <radio_item
          label="On"
          layout="topleft"
          left_pad="12"
          name="radio2"
          value="1"
-         width="100" />
+         width="75" />
         <radio_item
          label="Show briefly"
          layout="topleft"
          left_pad="12"
          name="radio3"
-         value="2" 
-         width="100" />
+         value="2"
+         width="160" />
     </radio_group>
     <check_box
 	 enabled_control="AvatarNameTagMode"
@@ -323,11 +324,10 @@
      follows="left|top"
      height="13"
      layout="topleft"
-     text_color="white"
      left="30"
      mouse_opaque="false"
      name="text_box3"
-     top_pad="15"
+     top_pad="10"
      width="240">
        Busy mode response:
     </text>
@@ -336,18 +336,16 @@
       text_readonly_color="LabelDisabledColor"
       bg_writeable_color="LtGray"
       use_ellipses="false"
-      bg_visible="true"
-      border_visible="true"
       hover="false"
      commit_on_focus_lost = "true"
      follows="left|top"
-     height="50"
+     height="60"
      layout="topleft"
      left="50"
      name="busy_response"
-     width="400"
+     width="440"
      word_wrap="true">
        log_in_to_change
     </text_editor>
-    
+
 </panel>
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 c01a0322096..8bff865eb17 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
@@ -33,16 +33,15 @@
     <button
      control_name="MuteAudio"
      follows="top|right"
-     height="18"
-     image_selected="Parcel_VoiceNo_Dark"
-     image_unselected="Parcel_Voice_Dark"
+     height="16"
+     image_selected="AudioMute_Off"
+     image_unselected="Audio_Off"
      is_toggle="true"
      layout="topleft"
-     left_pad="16"
+     left_pad="10"
      name="mute_audio"
      tab_stop="false"
-     top_delta="-2"
-     width="22" />
+     width="16" />
     <check_box
      control_name="MuteWhenMinimized"
      height="15"
@@ -74,20 +73,19 @@
          function="Pref.setControlFalse"
          parameter="MuteAmbient" />
     </slider>
-    <button
-     control_name="MuteAmbient"
+        <button
+    control_name="MuteAmbient"
      disabled_control="MuteAudio"
      follows="top|right"
-     height="18"
-     image_selected="Parcel_VoiceNo_Dark"
-     image_unselected="Parcel_Voice_Dark"
+     height="16"
+     image_selected="AudioMute_Off"
+     image_unselected="Audio_Off"
      is_toggle="true"
      layout="topleft"
-     left_pad="16"
-     name="mute_wind"
+     left_pad="10"
+     name="mute_audio"
      tab_stop="false"
-     top_delta="-2"
-     width="22" />
+     width="16" />
         <slider
      control_name="AudioLevelUI"
      disabled_control="MuteAudio"
@@ -113,16 +111,15 @@
      control_name="MuteUI"
      disabled_control="MuteAudio"
      follows="top|right"
-     height="18"
-     image_selected="Parcel_VoiceNo_Dark"
-     image_unselected="Parcel_Voice_Dark"
+     height="16"
+     image_selected="AudioMute_Off"
+     image_unselected="Audio_Off"
      is_toggle="true"
      layout="topleft"
-     left_pad="16"
-     name="mute_ui"
+     left_pad="10"
+     name="mute_audio"
      tab_stop="false"
-     top_delta="-2"
-     width="22" />
+     width="16" />
         <slider
      control_name="AudioLevelMedia"
      disabled_control="MuteAudio"
@@ -144,20 +141,19 @@
      function="Pref.setControlFalse"
      parameter="MuteMedia" />
     </slider>
-    <button
+   <button
      control_name="MuteMedia"
      disabled_control="MuteAudio"
      follows="top|right"
-     height="18"
-     image_selected="Parcel_VoiceNo_Dark"
-     image_unselected="Parcel_Voice_Dark"
+     height="16"
+     image_selected="AudioMute_Off"
+     image_unselected="Audio_Off"
      is_toggle="true"
      layout="topleft"
-     left_pad="16"
-     name="mute_media"
+     left_pad="10"
+     name="mute_audio"
      tab_stop="false"
-     top_delta="-2"
-     width="22" />
+     width="16" />
     <slider
      control_name="AudioLevelSFX"
      disabled_control="MuteAudio"
@@ -179,20 +175,19 @@
          function="Pref.setControlFalse"
          parameter="MuteSounds" />
     </slider>
-    <button
+   <button
      control_name="MuteSounds"
      disabled_control="MuteAudio"
      follows="top|right"
-     height="18"
-     image_selected="Parcel_VoiceNo_Dark"
-     image_unselected="Parcel_Voice_Dark"
+     height="16"
+     image_selected="AudioMute_Off"
+     image_unselected="Audio_Off"
      is_toggle="true"
      layout="topleft"
-     left_pad="16"
-     name="mute_sfx"
+     left_pad="10"
+     name="mute_audio"
      tab_stop="false"
-     top_delta="-2"
-     width="22" />
+     width="16" />
     <slider
      control_name="AudioLevelMusic"
      disabled_control="MuteAudio"
@@ -214,20 +209,19 @@
          function="Pref.setControlFalse"
          parameter="MuteMusic" />
     </slider>
-    <button
+      <button
      control_name="MuteMusic"
      disabled_control="MuteAudio"
      follows="top|right"
-     height="18"
-     image_selected="Parcel_VoiceNo_Dark"
-     image_unselected="Parcel_Voice_Dark"
+     height="16"
+     image_selected="AudioMute_Off"
+     image_unselected="Audio_Off"
      is_toggle="true"
      layout="topleft"
-     left_pad="16"
-     name="mute_music"
+     left_pad="10"
+     name="mute_audio"
      tab_stop="false"
-     top_delta="-2"
-     width="22" />
+     width="16" />
    <check_box
      label_text.halign="left"
      follows="left|top"
@@ -236,10 +230,9 @@
      disabled_control="CmdLineDisableVoice"
      label="Enable voice"
      layout="topleft"
-     font.style="BOLD"
-     left="101"
+     left="28"
      name="enable_voice_check"
-     top_pad="13"
+     top_pad="5"
      width="110"
      >
     </check_box>
@@ -265,21 +258,19 @@
          function="Pref.setControlFalse"
          parameter="MuteVoice" />
     </slider>
-    <button
+     <button
      control_name="MuteVoice"
-     enabled_control="EnableVoiceChat"
      disabled_control="MuteAudio"
      follows="top|right"
-     height="18"
-     image_selected="Parcel_VoiceNo_Dark"
-     image_unselected="Parcel_Voice_Dark"
+     height="16"
+     image_selected="AudioMute_Off"
+     image_unselected="Audio_Off"
      is_toggle="true"
      layout="topleft"
-     left_pad="16"
-     name="mute_voice"
+     left_pad="10"
+     name="mute_audio"
      tab_stop="false"
-     top_delta="-2"
-     width="22" />
+     width="16" />
     <text
      type="string"
      length="1"
@@ -366,7 +357,7 @@
      name="device_settings_panel"
      class="panel_voice_device_settings"
      width="501"
-     top="280">
+     top="285">
       <panel.string
         name="default_text">
         Default
-- 
GitLab


From 4ad357ec70e15afdfe78816990cb23c7ba17619c Mon Sep 17 00:00:00 2001
From: Monroe Linden <monroe@lindenlab.com>
Date: Mon, 1 Feb 2010 17:51:30 -0800
Subject: [PATCH 416/521] Fixes for EXT-4689 (Long-word chat spam cripples fps
 and/or disconnects client)

Removed some unnecessary string copies in LLTextBase and LLNormalTextSegment by changing getWText() to return const LLWString& (instead of LLWString), and storing the result in a const LLWString& instead of an LLWString in places where the string doesn't need to be modified.

Made LLTextViewModel::getDisplay() also return const LLWString& instead of LLWString.

Removed a couple of unused local string variables in LLTextBase (the compiler flagged these after converting the local copies to const LLWString&).
---
 indra/llui/lltextbase.cpp | 13 +++++--------
 indra/llui/lltextbase.h   |  2 +-
 indra/llui/llviewmodel.h  |  3 ++-
 3 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index a12b7793f7c..259522a932b 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -312,7 +312,6 @@ void LLTextBase::drawSelectionBackground()
 	// Draw selection even if we don't have keyboard focus for search/replace
 	if( hasSelection() && !mLineInfoList.empty())
 	{
-		LLWString text = getWText();
 		std::vector<LLRect> selection_rects;
 
 		S32 selection_left		= llmin( mSelectionStart, mSelectionEnd );
@@ -411,7 +410,7 @@ void LLTextBase::drawCursor()
 		&& gFocusMgr.getAppHasFocus()
 		&& !mReadOnly)
 	{
-		LLWString wtext = getWText();
+		const LLWString &wtext = getWText();
 		const llwchar* text = wtext.c_str();
 
 		LLRect cursor_rect = getLocalRectFromDocIndex(mCursorPos);
@@ -497,7 +496,6 @@ void LLTextBase::drawCursor()
 
 void LLTextBase::drawText()
 {
-	LLWString text = getWText();
 	const S32 text_len = getLength();
 	if( text_len <= 0 )
 	{
@@ -1116,7 +1114,6 @@ void LLTextBase::reflow(S32 start_index)
 		S32 line_start_index = 0;
 		const S32 text_available_width = mVisibleTextRect.getWidth() - mHPad;  // reserve room for margin
 		S32 remaining_pixels = text_available_width;
-		LLWString text(getWText());
 		S32 line_count = 0;
 
 		// find and erase line info structs starting at start_index and going to end of document
@@ -1759,7 +1756,7 @@ void LLTextBase::setWText(const LLWString& text)
 	setText(wstring_to_utf8str(text));
 }
 
-LLWString LLTextBase::getWText() const
+const LLWString& LLTextBase::getWText() const
 {
     return getViewModel()->getDisplay();
 }
@@ -2454,7 +2451,7 @@ bool LLNormalTextSegment::getDimensions(S32 first_char, S32 num_chars, S32& widt
 	if (num_chars > 0)
 	{
 		height = mFontHeight;
-		LLWString text = mEditor.getWText();
+		const LLWString &text = mEditor.getWText();
 		// if last character is a newline, then return true, forcing line break
 		llwchar last_char = text[mStart + first_char + num_chars - 1];
 		if (last_char == '\n')
@@ -2481,7 +2478,7 @@ bool LLNormalTextSegment::getDimensions(S32 first_char, S32 num_chars, S32& widt
 
 S32	LLNormalTextSegment::getOffset(S32 segment_local_x_coord, S32 start_offset, S32 num_chars, bool round) const
 {
-	LLWString text = mEditor.getWText();
+	const LLWString &text = mEditor.getWText();
 	return mStyle->getFont()->charFromPixelOffset(text.c_str(), mStart + start_offset,
 											   (F32)segment_local_x_coord,
 											   F32_MAX,
@@ -2491,7 +2488,7 @@ S32	LLNormalTextSegment::getOffset(S32 segment_local_x_coord, S32 start_offset,
 
 S32	LLNormalTextSegment::getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars) const
 {
-	LLWString text = mEditor.getWText();
+	const LLWString &text = mEditor.getWText();
 
 	LLUIImagePtr image = mStyle->getImage();
 	if( image.notNull())
diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h
index 48d54780885..b5c7fab67a4 100644
--- a/indra/llui/lltextbase.h
+++ b/indra/llui/lltextbase.h
@@ -145,7 +145,7 @@ class LLTextBase
 
 	// wide-char versions
 	void					setWText(const LLWString& text);
-	LLWString       		getWText() const;
+	const LLWString&       	getWText() const;
 
 	void					appendText(const std::string &new_text, bool prepend_newline, const LLStyle::Params& input_params = LLStyle::Params());
 	// force reflow of text
diff --git a/indra/llui/llviewmodel.h b/indra/llui/llviewmodel.h
index c8a9b52ccaa..992365d44dc 100644
--- a/indra/llui/llviewmodel.h
+++ b/indra/llui/llviewmodel.h
@@ -107,7 +107,8 @@ class LLTextViewModel: public LLViewModel
 
 	// New functions
     /// Get the stored value in string form
-    LLWString getDisplay() const { return mDisplay; }
+    const LLWString& getDisplay() const { return mDisplay; }
+
     /**
      * Set the display string directly (see LLTextEditor). What the user is
      * editing is actually the LLWString value rather than the underlying
-- 
GitLab


From 63b1305e4cc878290a9c66c685196e6a7cedc0cf Mon Sep 17 00:00:00 2001
From: Erica <erica@lindenlab.com>
Date: Mon, 1 Feb 2010 18:03:17 -0800
Subject: [PATCH 417/521] EXT-4698 Object, avatar menu has

---
 .../skins/default/xui/en/menu_avatar_self.xml | 10 +++----
 .../skins/default/xui/en/menu_object.xml      | 28 +++++++++----------
 2 files changed, 19 insertions(+), 19 deletions(-)

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 9212d2d6489..1e32cfd9dfc 100644
--- a/indra/newview/skins/default/xui/en/menu_avatar_self.xml
+++ b/indra/newview/skins/default/xui/en/menu_avatar_self.xml
@@ -13,11 +13,11 @@
          function="Self.EnableStandUp" />
     </menu_item_call>
     <context_menu
-     label="Take Off &gt;"
+     label="Take Off  â–¶"
      layout="topleft"
      name="Take Off &gt;">
         <context_menu
-         label="Clothes &gt;"
+         label="Clothes  â–¶"
          layout="topleft"
          name="Clothes &gt;">
             <menu_item_call
@@ -151,7 +151,7 @@
                     <menu_item_call.on_enable
                      function="Edit.EnableTakeOff"
                      parameter="alpha" />
-                </menu_item_call>				
+                </menu_item_call>
                 <menu_item_separator
                  layout="topleft" />
                 <menu_item_call
@@ -164,11 +164,11 @@
                 </menu_item_call>
         </context_menu>
         <context_menu
-         label="HUD &gt;"
+         label="HUD  â–¶"
          layout="topleft"
          name="Object Detach HUD" />
         <context_menu
-         label="Detach &gt;"
+         label="Detach  â–¶"
          layout="topleft"
          name="Object Detach" />
         <menu_item_call
diff --git a/indra/newview/skins/default/xui/en/menu_object.xml b/indra/newview/skins/default/xui/en/menu_object.xml
index 56028bb2e57..5a9509e2843 100644
--- a/indra/newview/skins/default/xui/en/menu_object.xml
+++ b/indra/newview/skins/default/xui/en/menu_object.xml
@@ -65,7 +65,7 @@
   </menu_item_call>
 <menu_item_separator layout="topleft" />
    <context_menu
-         label="Put On &gt;"
+         label="Put On  â–¶"
          name="Put On" >
    <menu_item_call
       enabled="false"
@@ -77,15 +77,25 @@
              function="Object.EnableWear" />
    </menu_item_call>
    <context_menu
-         label="Attach &gt;"
+         label="Attach  â–¶"
          name="Object Attach" />
    <context_menu
-         label="Attach HUD &gt;"
+         label="Attach HUD  â–¶"
          name="Object Attach HUD" />
    </context_menu>
    <context_menu
-         label="Remove &gt;"
+         label="Remove  â–¶"
          name="Remove">
+   <menu_item_call
+     enabled="false"
+     label="Take"
+     name="Pie Object Take">
+        <menu_item_call.on_click
+         function="Tools.BuyOrTake" />
+        <menu_item_call.on_enable
+         function="Tools.EnableBuyOrTake"
+         parameter="Buy,Take" />
+    </menu_item_call>
    <menu_item_call
          enabled="false"
          label="Report Abuse"
@@ -124,16 +134,6 @@
     </menu_item_call>
     </context_menu>
    <menu_item_separator layout="topleft" />
-    <menu_item_call
-     enabled="false"
-     label="Take"
-     name="Pie Object Take">
-        <menu_item_call.on_click
-         function="Tools.BuyOrTake" />
-        <menu_item_call.on_enable
-         function="Tools.EnableBuyOrTake"
-         parameter="Buy,Take" />
-    </menu_item_call>
    <menu_item_call
    enabled="false"
    label="Take Copy"
-- 
GitLab


From 3fde73508e5b2fb5507b47d1f56d3fb47162b6fc Mon Sep 17 00:00:00 2001
From: Eli Linden <eli@lindenlab.com>
Date: Mon, 1 Feb 2010 20:06:19 -0800
Subject: [PATCH 418/521] Test commit.

---
 indra/newview/skins/default/xui/en/floater_aaa.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml
index 7236351f2e0..b9bc45a10b0 100644
--- a/indra/newview/skins/default/xui/en/floater_aaa.xml
+++ b/indra/newview/skins/default/xui/en/floater_aaa.xml
@@ -19,7 +19,7 @@
  width="320">
   <string name="nudge_parabuild" translate="false">Nudge 1</string>
   <string name="test_the_vlt">This string CHANGE2 is extracted.</string>
-  <string name="testing_eli">Just a test. change here. more change.</string>
+  <string name="testing_eli">Just a test. changes.</string>
   <chat_history
    allow_html="true"
    bg_readonly_color="ChatHistoryBgColor"
-- 
GitLab


From ff4b80f27126adfc11e6facfa53aa1fafd3d19ec Mon Sep 17 00:00:00 2001
From: Ychebotarev ProductEngine <ychebotarev@productengine.com>
Date: Tue, 2 Feb 2010 11:13:43 +0200
Subject: [PATCH 419/521] sidefix for EXT-4808 Unfocused Snapshot floater
 covers aother floaters fix preview position

--HG--
branch : product-engine
---
 indra/newview/skins/default/xui/en/floater_snapshot.xml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/indra/newview/skins/default/xui/en/floater_snapshot.xml b/indra/newview/skins/default/xui/en/floater_snapshot.xml
index 60c9810e955..2c9402f6cb9 100644
--- a/indra/newview/skins/default/xui/en/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/en/floater_snapshot.xml
@@ -46,8 +46,11 @@
   <ui_ctrl 
     height="90"
     width="90"
+    layout="topleft"
     name="thumbnail_placeholder"
     top_pad="6"
+    follows="left|top"
+    left="10"
     />
     <text
      type="string"
-- 
GitLab


From 93a717283271b9b0f224a984b4e0069b2d7d408c Mon Sep 17 00:00:00 2001
From: angela <angela@lindenlab.com>
Date: Tue, 2 Feb 2010 18:08:39 +0800
Subject: [PATCH 420/521] EXT-3789 Change Teleport button on IM panel tooltip
 to read "Offer to teleport this person"

---
 indra/newview/skins/default/xui/en/panel_im_control_panel.xml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
index 9279d1e686a..c971914a2dd 100644
--- a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
+++ b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
@@ -93,6 +93,7 @@
              height="23"
              label="Teleport"
              name="teleport_btn"
+             tool_tip = "Offer to teleport this person"
              width="100" />
         </layout_panel>
         <layout_panel
-- 
GitLab


From 1094fa28c618370af9a95cf823cbd9287c92dd24 Mon Sep 17 00:00:00 2001
From: angela <angela@lindenlab.com>
Date: Tue, 2 Feb 2010 18:09:25 +0800
Subject: [PATCH 421/521] EXT-4603 Right-clicking a sound and choosing "Play"
 doesn't actually play it

---
 indra/newview/llsidepanelinventory.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp
index 5383158cd3f..9614be82405 100644
--- a/indra/newview/llsidepanelinventory.cpp
+++ b/indra/newview/llsidepanelinventory.cpp
@@ -164,7 +164,7 @@ void LLSidepanelInventory::onWearButtonClicked()
 
 void LLSidepanelInventory::onPlayButtonClicked()
 {
-	performActionOnSelection("activate");
+	performActionOnSelection("open");
 }
 
 void LLSidepanelInventory::onTeleportButtonClicked()
-- 
GitLab


From e6538ddbe95f0c297e67b9f5decabfcb6241ed2a Mon Sep 17 00:00:00 2001
From: Ychebotarev ProductEngine <ychebotarev@productengine.com>
Date: Tue, 2 Feb 2010 13:18:23 +0200
Subject: [PATCH 422/521] fix for low EXT-4780 Nearby chat windows doesn't pop
 up when clicking on object chat toast

--HG--
branch : product-engine
---
 indra/newview/llchatitemscontainerctrl.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/indra/newview/llchatitemscontainerctrl.cpp b/indra/newview/llchatitemscontainerctrl.cpp
index f7f7ee83afd..f772aea4bd8 100644
--- a/indra/newview/llchatitemscontainerctrl.cpp
+++ b/indra/newview/llchatitemscontainerctrl.cpp
@@ -258,8 +258,12 @@ BOOL	LLNearbyChatToastPanel::handleMouseDown	(S32 x, S32 y, MASK mask)
 
 BOOL	LLNearbyChatToastPanel::handleMouseUp	(S32 x, S32 y, MASK mask)
 {
+	/*
+	fix for request  EXT-4780
+	leaving this commented since I don't remember why ew block those messages...
 	if(mSourceType != CHAT_SOURCE_AGENT)
 		return LLPanel::handleMouseUp(x,y,mask);
+    */
 
 	LLChatMsgBox* text_box = getChild<LLChatMsgBox>("msg_text", false);
 	S32 local_x = x - text_box->getRect().mLeft;
-- 
GitLab


From 61609d93bbc01dc5a6f87c4afbc6e0faad1f1711 Mon Sep 17 00:00:00 2001
From: Sergei Litovchuk <slitovchuk@productengine.com>
Date: Tue, 2 Feb 2010 14:01:54 +0200
Subject: [PATCH 423/521] Fixed major bug (EXT-2316) Insert the option "pay" in
 the profile. - Restored fix made in viewer-2-0/product-engine changeset
 4880:ff1363072741.

--HG--
branch : product-engine
---
 .../skins/default/xui/en/panel_profile.xml       | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml
index 27461571daf..40b9b569037 100644
--- a/indra/newview/skins/default/xui/en/panel_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile.xml
@@ -306,7 +306,7 @@
          name="add_friend"
          tool_tip="Offer friendship to the Resident"
          top="5"
-         width="81" />
+         width="80" />
         <button
          follows="bottom|left"
          height="23"
@@ -316,7 +316,7 @@
          tool_tip="Open instant message session"
          top="5"
          left_pad="3"
-         width="45" />
+         width="39" />
         <button
          follows="bottom|left"
          height="23"
@@ -326,7 +326,7 @@
          tool_tip="Call this Resident"
          left_pad="3"
          top="5"
-         width="46" />
+         width="43" />
         <button
          enabled="false"
          follows="bottom|left"
@@ -337,7 +337,7 @@
          tool_tip="Show the Resident on the map"
          top="5"
          left_pad="3"
-         width="46" />
+         width="41" />
         <button
          follows="bottom|left"
          height="23"
@@ -347,8 +347,8 @@
          tool_tip="Offer teleport"
          left_pad="3"
          top="5"
-         width="78" />
-       <!-- <button
+         width="69" />
+        <button
          follows="bottom|right"
          height="23"
          label="â–¼"
@@ -357,8 +357,8 @@
          tool_tip="Pay money to or share inventory with the Resident"
          right="-1"
          top="5"
-	 left_pad="3"
-         width="23" />-->
+	 	 left_pad="3"
+         width="23" />
         </layout_panel>
       <layout_panel
          follows="bottom|left"
-- 
GitLab


From f69510e20c14f8afbdaa9fad06f7dbb2ba09b774 Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Tue, 2 Feb 2010 14:19:15 +0200
Subject: [PATCH 424/521] added loading/parsing of Nearby Chat history -
 EXT-4777 Implement saving and loading chat history for Nearby Chat (both
 plain text and widgeted chat)

--HG--
branch : product-engine
---
 indra/newview/llnearbychat.cpp | 40 ++++++++++++++++++++++++++++++++++
 indra/newview/llnearbychat.h   |  4 ++++
 indra/newview/llstartup.cpp    | 10 +++++++++
 3 files changed, 54 insertions(+)

diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index 90482eb74d4..1dcb6abf810 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -62,6 +62,12 @@
 
 static const S32 RESIZE_BAR_THICKNESS = 3;
 
+const static std::string IM_TIME("time");
+const static std::string IM_TEXT("message");
+const static std::string IM_FROM("from");
+const static std::string IM_FROM_ID("from_id");
+
+
 LLNearbyChat::LLNearbyChat(const LLSD& key) 
 	: LLDockableFloater(NULL, false, false, key)
 	,mChatHistory(NULL)
@@ -262,6 +268,39 @@ void LLNearbyChat::processChatHistoryStyleUpdate(const LLSD& newvalue)
 		nearby_chat->updateChatHistoryStyle();
 }
 
+void LLNearbyChat::loadHistory()
+{
+	std::list<LLSD> history;
+	LLLogChat::loadAllHistory("chat", history);
+
+	std::list<LLSD>::const_iterator it = history.begin();
+	while (it != history.end())
+	{
+		const LLSD& msg = *it;
+
+		std::string from = msg[IM_FROM];
+		LLUUID from_id = LLUUID::null;
+		if (msg[IM_FROM_ID].isUndefined())
+		{
+			gCacheName->getUUID(from, from_id);
+		}
+
+		LLChat chat;
+		chat.mFromName = from;
+		chat.mFromID = from_id;
+		chat.mText = msg[IM_TEXT];
+		chat.mTimeStr = msg[IM_TIME];
+		addMessage(chat);
+
+		it++;
+	}
+}
+
+//static
+LLNearbyChat* LLNearbyChat::getInstance()
+{
+	return LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
+}
 
 ////////////////////////////////////////////////////////////////////////////////
 //
@@ -278,3 +317,4 @@ void LLNearbyChat::onFocusLost()
 	setBackgroundOpaque(false);
 	LLPanel::onFocusLost();
 }
+
diff --git a/indra/newview/llnearbychat.h b/indra/newview/llnearbychat.h
index 5fb8ade19e7..6ea42485782 100644
--- a/indra/newview/llnearbychat.h
+++ b/indra/newview/llnearbychat.h
@@ -65,6 +65,10 @@ class LLNearbyChat: public LLDockableFloater
 
 	static void processChatHistoryStyleUpdate(const LLSD& newvalue);
 
+	void loadHistory();
+
+	static LLNearbyChat* getInstance();
+
 private:
 	virtual void    applySavedVariables();
 
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 6b816f87863..ce5da8bb24f 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -67,6 +67,7 @@
 #include "llmemorystream.h"
 #include "llmessageconfig.h"
 #include "llmoveview.h"
+#include "llnearbychat.h"
 #include "llnotifications.h"
 #include "llnotificationsutil.h"
 #include "llteleporthistory.h"
@@ -904,6 +905,7 @@ bool idle_startup()
 		LLFile::mkdir(gDirUtilp->getChatLogsDir());
 		LLFile::mkdir(gDirUtilp->getPerAccountChatLogsDir());
 
+
 		//good as place as any to create user windlight directories
 		std::string user_windlight_path_name(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight", ""));
 		LLFile::mkdir(user_windlight_path_name.c_str());		
@@ -1284,6 +1286,14 @@ bool idle_startup()
             LLAppViewer::instance()->loadNameCache();
 		}
 
+		//gCacheName is required for nearby chat history loading
+		//so I just moved nearby history loading a few states further
+		if (!gNoRender && gSavedPerAccountSettings.getBOOL("LogShowHistory"))
+		{
+			LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
+			if (nearby_chat) nearby_chat->loadHistory();
+		}
+
 		// *Note: this is where gWorldMap used to be initialized.
 
 		// register null callbacks for audio until the audio system is initialized
-- 
GitLab


From 38315a063d83bf4dbf90569dbe37a344d91349a7 Mon Sep 17 00:00:00 2001
From: Dmitry Zaporozhan <dzaporozhan@productengine.com>
Date: Tue, 2 Feb 2010 14:25:31 +0200
Subject: [PATCH 425/521] Fixed normal bug EXT-4740 - Object inspector hides
 however context menu present

--HG--
branch : product-engine
---
 indra/llui/lltextbase.cpp         | 10 ++++++++++
 indra/llui/lltextbase.h           |  1 +
 indra/newview/llinspect.cpp       | 24 ++++++++++++++++++++++++
 indra/newview/llinspect.h         |  3 +++
 indra/newview/llinspectavatar.cpp | 13 ++++++++++---
 indra/newview/llinspectobject.cpp | 11 +++++++++--
 6 files changed, 57 insertions(+), 5 deletions(-)

diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 259522a932b..b977e50bc1a 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -1023,6 +1023,16 @@ void LLTextBase::setReadOnlyColor(const LLColor4 &c)
 	mReadOnlyFgColor = c;
 }
 
+//virtual
+void LLTextBase::handleVisibilityChange( BOOL new_visibility )
+{
+	if(!new_visibility && mPopupMenu)
+	{
+		mPopupMenu->hide();
+	}
+	LLUICtrl::handleVisibilityChange(new_visibility);
+}
+
 //virtual
 void LLTextBase::setValue(const LLSD& value )
 {
diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h
index b5c7fab67a4..ed2f2394767 100644
--- a/indra/llui/lltextbase.h
+++ b/indra/llui/lltextbase.h
@@ -122,6 +122,7 @@ class LLTextBase
 	/*virtual*/ BOOL		acceptsTextInput() const { return !mReadOnly; }
 	/*virtual*/ void		setColor( const LLColor4& c );
 	virtual     void 		setReadOnlyColor(const LLColor4 &c);
+	virtual	    void		handleVisibilityChange( BOOL new_visibility );
 
 	/*virtual*/ void		setValue(const LLSD& value );
 	/*virtual*/ LLTextViewModel* getViewModel() const;
diff --git a/indra/newview/llinspect.cpp b/indra/newview/llinspect.cpp
index c7b8db9635c..c7b651f37cd 100644
--- a/indra/newview/llinspect.cpp
+++ b/indra/newview/llinspect.cpp
@@ -34,6 +34,7 @@
 
 #include "llcontrol.h"	// LLCachedControl
 #include "llui.h"		// LLUI::sSettingsGroups
+#include "llviewermenu.h"
 
 LLInspect::LLInspect(const LLSD& key)
 :	LLFloater(key),
@@ -108,3 +109,26 @@ void LLInspect::onMouseLeave(S32 x, S32 y, MASK mask)
 {
 	mOpenTimer.unpause();
 }
+
+bool LLInspect::childHasVisiblePopupMenu()
+{
+	// Child text-box may spawn a pop-up menu, if mouse is over the menu, Inspector 
+	// will hide(which is not expected).
+	// This is an attempt to find out if child control has spawned a menu.
+
+	LLView* child_menu = gMenuHolder->getVisibleMenu();
+	if(child_menu)
+	{
+		LLRect floater_rc = calcScreenRect();
+		LLRect menu_screen_rc = child_menu->calcScreenRect();
+		S32 mx, my;
+		LLUI::getMousePositionScreen(&mx, &my);
+
+		// This works wrong if we spawn a menu near Inspector and menu overlaps Inspector.
+		if(floater_rc.overlaps(menu_screen_rc) && menu_screen_rc.pointInRect(mx, my))
+		{
+			return true;
+		}
+	}
+	return false;
+}
diff --git a/indra/newview/llinspect.h b/indra/newview/llinspect.h
index a1cb9cd71cd..f8c86618d26 100644
--- a/indra/newview/llinspect.h
+++ b/indra/newview/llinspect.h
@@ -56,6 +56,9 @@ class LLInspect : public LLFloater
 	/*virtual*/ void onFocusLost();
 	
 protected:
+
+	virtual bool childHasVisiblePopupMenu();
+
 	LLFrameTimer		mCloseTimer;
 	LLFrameTimer		mOpenTimer;
 };
diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp
index 3a41aebf280..b2cdc0738f5 100644
--- a/indra/newview/llinspectavatar.cpp
+++ b/indra/newview/llinspectavatar.cpp
@@ -393,11 +393,18 @@ void LLInspectAvatar::onMouseLeave(S32 x, S32 y, MASK mask)
 {
 	LLMenuGL* gear_menu = getChild<LLMenuButton>("gear_btn")->getMenu();
 	LLMenuGL* gear_menu_self = getChild<LLMenuButton>("gear_self_btn")->getMenu();
-	if ( !(gear_menu && gear_menu->getVisible()) &&
-		 !(gear_menu_self && gear_menu_self->getVisible()))
+	if ( gear_menu && gear_menu->getVisible() &&
+		 gear_menu_self && gear_menu_self->getVisible() )
 	{
-		mOpenTimer.unpause();
+		return;
+	}
+
+	if(childHasVisiblePopupMenu())
+	{
+		return;
 	}
+
+	mOpenTimer.unpause();
 }
 
 void LLInspectAvatar::updateModeratorPanel()
diff --git a/indra/newview/llinspectobject.cpp b/indra/newview/llinspectobject.cpp
index dd313c528d8..1a5795a2ae4 100644
--- a/indra/newview/llinspectobject.cpp
+++ b/indra/newview/llinspectobject.cpp
@@ -575,10 +575,17 @@ void LLInspectObject::updateSecureBrowsing()
 void LLInspectObject::onMouseLeave(S32 x, S32 y, MASK mask)
 {
 	LLMenuGL* gear_menu = getChild<LLMenuButton>("gear_btn")->getMenu();
-	if ( !(gear_menu && gear_menu->getVisible()))
+	if ( gear_menu && gear_menu->getVisible() )
 	{
-		mOpenTimer.unpause();
+		return;
+	}
+
+	if(childHasVisiblePopupMenu())
+	{
+		return;
 	}
+
+	mOpenTimer.unpause();
 }
 
 void LLInspectObject::onClickBuy()
-- 
GitLab


From 81487c2a4c05042b35da114037068f478035a76a Mon Sep 17 00:00:00 2001
From: Paul Guslisty <pguslisty@productengine.com>
Date: Tue, 2 Feb 2010 14:33:38 +0200
Subject: [PATCH 426/521] Fxed normal bug EXT - 4106 (Tabbed IM floater isn't
 highlighting labels when new IMs are received)

--HG--
branch : product-engine
---
 indra/newview/llimfloatercontainer.cpp | 16 ++++++++++++++++
 indra/newview/llimfloatercontainer.h   |  4 +++-
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp
index 784c2eaaf96..22eb9a51d2c 100644
--- a/indra/newview/llimfloatercontainer.cpp
+++ b/indra/newview/llimfloatercontainer.cpp
@@ -52,6 +52,7 @@ LLIMFloaterContainer::~LLIMFloaterContainer(){}
 
 BOOL LLIMFloaterContainer::postBuild()
 {
+	LLIMModel::instance().mNewMsgSignal.connect(boost::bind(&LLIMFloaterContainer::onNewMessageReceived, this, _1));
 	// Do not call base postBuild to not connect to mCloseSignal to not close all floaters via Close button
 	// mTabContainer will be initialized in LLMultiFloater::addChild()
 	return TRUE;
@@ -162,6 +163,21 @@ void LLIMFloaterContainer::onCloseFloater(LLUUID id)
 {
 	LLAvatarPropertiesProcessor::instance().removeObserver(id, this);
 	LLGroupMgr::instance().removeObserver(id, this);
+
+}
+
+void LLIMFloaterContainer::onNewMessageReceived(const LLSD& data)
+{
+	LLUUID session_id = data["from_id"].asUUID();
+	LLFloater* floaterp = get_ptr_in_map(mSessions, session_id);
+	LLFloater* current_floater = LLMultiFloater::getActiveFloater();
+
+	if(floaterp && current_floater && floaterp != current_floater)
+	{
+		if(LLMultiFloater::isFloaterFlashing(floaterp))
+			LLMultiFloater::setFloaterFlashing(floaterp, FALSE);
+		LLMultiFloater::setFloaterFlashing(floaterp, TRUE);
+	}
 }
 
 LLIMFloaterContainer* LLIMFloaterContainer::findInstance()
diff --git a/indra/newview/llimfloatercontainer.h b/indra/newview/llimfloatercontainer.h
index e4a32dbe1dc..bc06f0cbd31 100644
--- a/indra/newview/llimfloatercontainer.h
+++ b/indra/newview/llimfloatercontainer.h
@@ -66,10 +66,12 @@ class LLIMFloaterContainer : public LLMultiFloater, public LLAvatarPropertiesObs
 	static LLIMFloaterContainer* getInstance();
 
 private:
-	typedef std::map<LLUUID,LLPanel*> avatarID_panel_map_t;
+	typedef std::map<LLUUID,LLFloater*> avatarID_panel_map_t;
 	avatarID_panel_map_t mSessions;
 
 	void onCloseFloater(LLUUID avatar_id);
+
+	void onNewMessageReceived(const LLSD& data);
 };
 
 #endif // LL_LLIMFLOATERCONTAINER_H
-- 
GitLab


From 371885c37311a772ff76bf2259306c2e58100f36 Mon Sep 17 00:00:00 2001
From: Ychebotarev ProductEngine <ychebotarev@productengine.com>
Date: Tue, 2 Feb 2010 14:35:37 +0200
Subject: [PATCH 427/521] fix for normal EXT-4810 Block hot-keys in mouse-look
 mode

--HG--
branch : product-engine
---
 indra/llui/llfloater.cpp    | 4 ++++
 indra/llui/llfloaterreg.cpp | 4 ++++
 indra/llui/llfloaterreg.h   | 3 +++
 3 files changed, 11 insertions(+)

diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index de46d89d6f7..3b3e644d103 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -2579,6 +2579,8 @@ void LLFloaterView::pushVisibleAll(BOOL visible, const skip_list_t& skip_list)
 			view->pushVisible(visible);
 		}
 	}
+
+	LLFloaterReg::blockShowFloaters(true);
 }
 
 void LLFloaterView::popVisibleAll(const skip_list_t& skip_list)
@@ -2596,6 +2598,8 @@ void LLFloaterView::popVisibleAll(const skip_list_t& skip_list)
 			view->popVisible();
 		}
 	}
+
+	LLFloaterReg::blockShowFloaters(false);
 }
 
 void LLFloater::setInstanceName(const std::string& name)
diff --git a/indra/llui/llfloaterreg.cpp b/indra/llui/llfloaterreg.cpp
index eb67e3a5614..5de3934c8a5 100644
--- a/indra/llui/llfloaterreg.cpp
+++ b/indra/llui/llfloaterreg.cpp
@@ -34,6 +34,7 @@
 
 #include "llfloaterreg.h"
 
+//#include "llagent.h" 
 #include "llfloater.h"
 #include "llmultifloater.h"
 #include "llfloaterreglistener.h"
@@ -45,6 +46,7 @@ LLFloaterReg::instance_list_t LLFloaterReg::sNullInstanceList;
 LLFloaterReg::instance_map_t LLFloaterReg::sInstanceMap;
 LLFloaterReg::build_map_t LLFloaterReg::sBuildMap;
 std::map<std::string,std::string> LLFloaterReg::sGroupMap;
+bool LLFloaterReg::sBlockShowFloaters = false;
 
 static LLFloaterRegListener sFloaterRegListener;
 
@@ -217,6 +219,8 @@ LLFloaterReg::const_instance_list_t& LLFloaterReg::getFloaterList(const std::str
 //static
 LLFloater* LLFloaterReg::showInstance(const std::string& name, const LLSD& key, BOOL focus) 
 {
+	if( sBlockShowFloaters )
+		return 0;//
 	LLFloater* instance = getInstance(name, key); 
 	if (instance) 
 	{
diff --git a/indra/llui/llfloaterreg.h b/indra/llui/llfloaterreg.h
index 634a235926b..8a11d5c3f2b 100644
--- a/indra/llui/llfloaterreg.h
+++ b/indra/llui/llfloaterreg.h
@@ -75,6 +75,7 @@ class LLFloaterReg
 	static instance_map_t sInstanceMap;
 	static build_map_t sBuildMap;
 	static std::map<std::string,std::string> sGroupMap;
+	static bool sBlockShowFloaters;
 	
 public:
 	// Registration
@@ -152,6 +153,8 @@ class LLFloaterReg
 	{
 		return dynamic_cast<T*>(showInstance(name, key, focus));
 	}
+
+	static void blockShowFloaters(bool value) { sBlockShowFloaters = value;}
 	
 };
 
-- 
GitLab


From 0763fac7653d0c280ed2fd808f2c1bb594c2e804 Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Tue, 2 Feb 2010 14:37:31 +0200
Subject: [PATCH 428/521] added saving of nearby chat history - EXT-4777 
 Implement saving and loading chat history for Nearby Chat (both plain text
 and widgeted chat)

--HG--
branch : product-engine
---
 indra/newview/llnearbychat.cpp | 12 ++++++++++++
 indra/newview/llnearbychat.h   |  2 ++
 2 files changed, 14 insertions(+)

diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index 1dcb6abf810..49ab61556f8 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -200,6 +200,18 @@ void	LLNearbyChat::addMessage(const LLChat& chat,bool archive,const LLSD &args)
 		mMessageArchive.push_back(chat);
 		if(mMessageArchive.size()>200)
 			mMessageArchive.erase(mMessageArchive.begin());
+
+		if (gSavedPerAccountSettings.getBOOL("LogChat")) 
+		{
+			if (chat.mChatType != CHAT_TYPE_WHISPER && chat.mChatType != CHAT_TYPE_SHOUT)
+			{
+				LLLogChat::saveHistory("chat", chat.mFromName, chat.mFromID, chat.mText);
+			}
+			else
+			{
+				LLLogChat::saveHistory("chat", "", chat.mFromID, chat.mFromName + " " + chat.mText);
+			}
+		}
 	}
 }
 
diff --git a/indra/newview/llnearbychat.h b/indra/newview/llnearbychat.h
index 6ea42485782..6ef2a1fee3f 100644
--- a/indra/newview/llnearbychat.h
+++ b/indra/newview/llnearbychat.h
@@ -47,6 +47,8 @@ class LLNearbyChat: public LLDockableFloater
 	~LLNearbyChat();
 
 	BOOL	postBuild			();
+
+	/** @param archive true - to save a message to the chat history log */
 	void	addMessage			(const LLChat& message,bool archive = true, const LLSD &args = LLSD());	
 	void	onNearbyChatContextMenuItemClicked(const LLSD& userdata);
 	bool	onNearbyChatCheckContextMenuItem(const LLSD& userdata);
-- 
GitLab


From 47162acede25dadae52fb43bd36f57fa26988aa5 Mon Sep 17 00:00:00 2001
From: Denis Serdjuk <dserduk@productengine.com>
Date: Tue, 2 Feb 2010 14:49:58 +0200
Subject: [PATCH 429/521] no ticket. Removing the hack from llfloater.This code
 is  dangerous. It involved losing of topctrl in focusmgr and can   cause
 strange bugs and problems.

--HG--
branch : product-engine
---
 indra/llui/llfloater.cpp | 16 ----------------
 1 file changed, 16 deletions(-)

diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index 3b3e644d103..a55915af359 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -1650,24 +1650,8 @@ void LLFloater::draw()
 	}
 	else
 	{
-		//FIXME: get rid of this hack
-		// draw children
-		LLView* focused_child = dynamic_cast<LLView*>(gFocusMgr.getKeyboardFocus());
-		BOOL focused_child_visible = FALSE;
-		if (focused_child && focused_child->getParent() == this)
-		{
-			focused_child_visible = focused_child->getVisible();
-			focused_child->setVisible(FALSE);
-		}
-
 		// don't call LLPanel::draw() since we've implemented custom background rendering
 		LLView::draw();
-
-		if (focused_child_visible)
-		{
-			focused_child->setVisible(TRUE);
-		}
-		drawChild(focused_child);
 	}
 
 	// update tearoff button for torn off floaters
-- 
GitLab


From 6ea944b38f1e619df2c52283f6b33bbcc1cbbc40 Mon Sep 17 00:00:00 2001
From: Aimee Linden <aimee@lindenlab.com>
Date: Tue, 2 Feb 2010 14:10:38 +0000
Subject: [PATCH 430/521] Supplementary fix EXT-4770 : Voice muting not working
 properly due to a change in the Vivox API The master voice mute in
 preferences wasn't working either, due to the minimum scaled volume now being
 30 instead of 0.

Reviewed by Lynx.
---
 indra/newview/llvoiceclient.cpp | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index c062dd1732d..3914064d726 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -1258,7 +1258,6 @@ LLVoiceClient::LLVoiceClient() :
 	mEarLocation(0),
 	mSpeakerVolumeDirty(true),
 	mSpeakerMuteDirty(true),
-	mSpeakerVolume(0),
 	mMicVolume(0),
 	mMicVolumeDirty(true),
 	
@@ -1271,6 +1270,8 @@ LLVoiceClient::LLVoiceClient() :
 	
 	mAPIVersion = LLTrans::getString("NotConnected");
 
+	mSpeakerVolume = scale_speaker_volume(0);
+	
 #if LL_DARWIN || LL_LINUX || LL_SOLARIS
 		// HACK: THIS DOES NOT BELONG HERE
 		// When the vivox daemon dies, the next write attempt on our socket generates a SIGPIPE, which kills us.
@@ -3525,7 +3526,7 @@ void LLVoiceClient::buildLocalAudioUpdates(std::ostringstream &stream)
 
 	if(mSpeakerMuteDirty)
 	{
-		const char *muteval = ((mSpeakerVolume == 0)?"true":"false");
+		const char *muteval = ((mSpeakerVolume <= scale_speaker_volume(0))?"true":"false");
 
 		mSpeakerMuteDirty = false;
 
@@ -6062,7 +6063,8 @@ void LLVoiceClient::setVoiceVolume(F32 volume)
 
 	if(scaled_volume != mSpeakerVolume)
 	{
-		if((scaled_volume == 0) || (mSpeakerVolume == 0))
+		int min_volume = scale_speaker_volume(0);
+		if((scaled_volume == min_volume) || (mSpeakerVolume == min_volume))
 		{
 			mSpeakerMuteDirty = true;
 		}
-- 
GitLab


From 7c7bea034467987781774fef8c27b54eae434cce Mon Sep 17 00:00:00 2001
From: gabriel lee <gabriel@lindenlab.com>
Date: Tue, 2 Feb 2010 14:28:47 +0000
Subject: [PATCH 431/521] acted on code review advise, check some return
 pointers for nullness etc

---
 indra/newview/llfloaterland.cpp         |  13 ++-
 indra/newview/llfloaterscriptlimits.cpp | 146 ++++++++++++++++++------
 2 files changed, 124 insertions(+), 35 deletions(-)

diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 1b1e4ef612b..8cd63deebea 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -427,16 +427,25 @@ BOOL LLPanelLandGeneral::postBuild()
 	mBtnBuyLand = getChild<LLButton>("Buy Land...");
 	mBtnBuyLand->setClickedCallback(onClickBuyLand, (void*)&BUY_PERSONAL_LAND);
 	
+	// note: on region change this will not be re checked, should not matter on Agni as
+	// 99% of the time all regions will return the same caps. In case of an erroneous setting
+	// to enabled the floater will just throw an error when trying to get it's cap
 	std::string url = gAgent.getRegion()->getCapability("LandResources");
 	if (!url.empty())
 	{
 		mBtnScriptLimits = getChild<LLButton>("Scripts...");
-		mBtnScriptLimits->setClickedCallback(onClickScriptLimits, this);
+		if(mBtnScriptLimits)
+		{
+			mBtnScriptLimits->setClickedCallback(onClickScriptLimits, this);
+		}
 	}
 	else
 	{
 		mBtnScriptLimits = getChild<LLButton>("Scripts...");
-		mBtnScriptLimits->setVisible(false);
+		if(mBtnScriptLimits)
+		{
+			mBtnScriptLimits->setVisible(false);
+		}
 	}
 	
 	mBtnBuyGroupLand = getChild<LLButton>("Buy For Group...");
diff --git a/indra/newview/llfloaterscriptlimits.cpp b/indra/newview/llfloaterscriptlimits.cpp
index 55ff106be8f..4194416a013 100644
--- a/indra/newview/llfloaterscriptlimits.cpp
+++ b/indra/newview/llfloaterscriptlimits.cpp
@@ -73,7 +73,7 @@
 // use fake LLSD responses to check the viewer side is working correctly
 // I'm syncing this with the server side efforts so hopfully we can keep
 // the to-ing and fro-ing between the two teams to a minimum
-#define USE_FAKE_RESPONSES
+//#define USE_FAKE_RESPONSES
 
 #ifdef USE_FAKE_RESPONSES
 const S32 FAKE_NUMBER_OF_URLS = 329;
@@ -107,6 +107,12 @@ BOOL LLFloaterScriptLimits::postBuild()
 	}
 
 	mTab = getChild<LLTabContainer>("scriptlimits_panels");
+	
+	if(!mTab)
+	{
+		llinfos << "Error! couldn't get scriptlimits_panels, aborting Script Information setup" << llendl;
+		return FALSE;
+	}
 
 	// contruct the panels
 	std::string land_url = gAgent.getRegion()->getCapability("LandResources");
@@ -128,11 +134,12 @@ BOOL LLFloaterScriptLimits::postBuild()
 		mTab->addTabPanel(panel_attachments);
 	}
 	
-	if(selectParcelPanel)
+	if(mInfoPanels.size() > 0)
 	{
 		mTab->selectTab(0);
 	}
-	else
+
+	if(!selectParcelPanel && (mInfoPanels.size() > 1))
 	{
 		mTab->selectTab(1);
 	}
@@ -257,18 +264,18 @@ void fetchScriptLimitsRegionSummaryResponder::result(const LLSD& content_ref)
 	
 	fake_content["summary"] = summary;
 
-	const LLSD* content = &fake_content;
+	const LLSD& content = fake_content;
 
 #else
 
-	const LLSD* content = &content_ref;
+	const LLSD& content = content_ref;
 
 #endif
 
 
 #ifdef DUMP_REPLIES_TO_LLINFOS
 
-	LLSDNotationStreamer notation_streamer(*content);
+	LLSDNotationStreamer notation_streamer(content);
 	std::ostringstream nice_llsd;
 	nice_llsd << notation_streamer;
 
@@ -287,7 +294,7 @@ void fetchScriptLimitsRegionSummaryResponder::result(const LLSD& content_ref)
 	{
 		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
 		LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
-		panel_memory->setRegionSummary(*content);
+		panel_memory->setRegionSummary(content);
 	}
 }
 
@@ -352,23 +359,23 @@ result (map)
 	parcels.append(parcel);
 
 	fake_content["parcels"] = parcels;
-	const LLSD* content = &fake_content;
+	const LLSD& content = fake_content;
 
 #else
 
-	const LLSD* content = &content_ref;
+	const LLSD& content = content_ref;
 
 #endif
 
 #ifdef DUMP_REPLIES_TO_LLINFOS
 
-	LLSDNotationStreamer notation_streamer(*content);
+	LLSDNotationStreamer notation_streamer(content);
 	std::ostringstream nice_llsd;
 	nice_llsd << notation_streamer;
 
 	OSMessageBox(nice_llsd.str(), "details response:", 0);
 
-	llinfos << "details response:" << *content << llendl;
+	llinfos << "details response:" << content << llendl;
 
 #endif
 
@@ -381,8 +388,22 @@ result (map)
 	else
 	{
 		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
-		LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
-		panel_memory->setRegionDetails(*content);
+		if(tab)
+		{
+			LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
+			if(panel_memory)
+			{
+				panel_memory->setRegionDetails(content);
+			}
+			else
+			{
+				llinfos << "Failed to get scriptlimits memory panel" << llendl;
+			}
+		}
+		else
+		{
+			llinfos << "Failed to get scriptlimits_panels" << llendl;
+		}
 	}
 }
 
@@ -426,23 +447,23 @@ void fetchScriptLimitsAttachmentInfoResponder::result(const LLSD& content_ref)
 	fake_content["summary"] = summary;
 	fake_content["attachments"] = content_ref["attachments"];
 
-	const LLSD* content = &fake_content;
+	const LLSD& content = fake_content;
 
 #else
 
-	const LLSD* content = &content_ref;
+	const LLSD& content = content_ref;
 
 #endif
 
 #ifdef DUMP_REPLIES_TO_LLINFOS
 
-	LLSDNotationStreamer notation_streamer(*content);
+	LLSDNotationStreamer notation_streamer(content);
 	std::ostringstream nice_llsd;
 	nice_llsd << notation_streamer;
 
 	OSMessageBox(nice_llsd.str(), "attachment response:", 0);
 	
-	llinfos << "attachment response:" << *content << llendl;
+	llinfos << "attachment response:" << content << llendl;
 
 #endif
 
@@ -455,8 +476,22 @@ void fetchScriptLimitsAttachmentInfoResponder::result(const LLSD& content_ref)
 	else
 	{
 		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
-		LLPanelScriptLimitsAttachment* panel = (LLPanelScriptLimitsAttachment*)tab->getChild<LLPanel>("script_limits_my_avatar_panel");
-		panel->setAttachmentDetails(*content);
+		if(tab)
+		{
+			LLPanelScriptLimitsAttachment* panel = (LLPanelScriptLimitsAttachment*)tab->getChild<LLPanel>("script_limits_my_avatar_panel");
+			if(panel)
+			{
+				panel->setAttachmentDetails(content);
+			}
+			else
+			{
+				llinfos << "Failed to get script_limits_my_avatar_panel" << llendl;
+			}
+		}
+		else
+		{
+			llinfos << "Failed to get scriptlimits_panels" << llendl;
+		}
 	}
 }
 
@@ -534,6 +569,11 @@ void LLPanelScriptLimitsRegionMemory::onNameCache(
 	std::string name = first_name + " " + last_name;
 
 	LLScrollListCtrl *list = getChild<LLScrollListCtrl>("scripts_list");	
+	if(!list)
+	{
+		return;
+	}
+	
 	std::vector<LLSD>::iterator id_itor;
 	for (id_itor = mObjectListItems.begin(); id_itor != mObjectListItems.end(); ++id_itor)
 	{
@@ -554,6 +594,12 @@ void LLPanelScriptLimitsRegionMemory::onNameCache(
 void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content)
 {
 	LLScrollListCtrl *list = getChild<LLScrollListCtrl>("scripts_list");
+	
+	if(!list)
+	{
+		llinfos << "Error getting the scripts_list control" << llendl;
+		return;
+	}
 
 	S32 number_parcels = content["parcels"].size();
 
@@ -634,8 +680,6 @@ void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content)
 			LLSD element;
 
 			element["id"] = task_id;
-			element["owner_id"] = owner_id;
-			element["local_id"] = local_id;
 			element["columns"][0]["column"] = "size";
 			element["columns"][0]["value"] = llformat("%d", size);
 			element["columns"][0]["font"] = "SANSSERIF";
@@ -663,6 +707,9 @@ void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content)
 			element["columns"][5]["font"] = "SANSSERIF";
 
 			list->addElement(element, ADD_SORTED);
+			
+			element["owner_id"] = owner_id;
+			element["local_id"] = local_id;
 			mObjectListItems.push_back(element);
 		}
 	}
@@ -670,17 +717,25 @@ void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content)
 	if (has_locations)
 	{
 		LLButton* btn = getChild<LLButton>("highlight_btn");
-		btn->setVisible(true);
+		if(btn)
+		{
+			btn->setVisible(true);
+		}
 	}
 
 	if (has_local_ids)
 	{
 		LLButton* btn = getChild<LLButton>("return_btn");
-		btn->setVisible(true);
+		if(btn)
+		{
+			btn->setVisible(true);
+		}
 	}
 	
 	// save the structure to make object return easier
 	mContent = content;
+
+	childSetValue("loading_text", LLSD(std::string("")));
 }
 
 void LLPanelScriptLimitsRegionMemory::setRegionSummary(LLSD content)
@@ -744,8 +799,6 @@ void LLPanelScriptLimitsRegionMemory::setRegionSummary(LLSD content)
 		std::string msg_parcel_urls = LLTrans::getString("ScriptLimitsURLsUsed", args_parcel_urls);
 		childSetValue("urls_used", LLSD(msg_parcel_urls));
 	}
-	
-	childSetValue("loading_text", LLSD(std::string("")));
 }
 
 BOOL LLPanelScriptLimitsRegionMemory::postBuild()
@@ -758,6 +811,10 @@ BOOL LLPanelScriptLimitsRegionMemory::postBuild()
 	childSetValue("loading_text", LLSD(msg_waiting));
 
 	LLScrollListCtrl *list = getChild<LLScrollListCtrl>("scripts_list");
+	if(!list)
+	{
+		return FALSE;
+	}
 
 	//set all columns to resizable mode even if some columns will be empty
 	for(S32 column = 0; column < list->getNumColumns(); column++)
@@ -862,17 +919,22 @@ void LLPanelScriptLimitsRegionMemory::clearList()
 // static
 void LLPanelScriptLimitsRegionMemory::onClickRefresh(void* userdata)
 {
-	//**don't use userdata without checking for null-ness**
 	llinfos << "LLPanelRegionGeneralInfo::onClickRefresh" << llendl;
 	
 	LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
 	if(instance)
 	{
 		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
-		LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
-		panel_memory->clearList();
+		if(tab)
+		{
+			LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
+			if(panel_memory)
+			{
+				panel_memory->clearList();
 		
-		panel_memory->StartRequestChain();
+				panel_memory->StartRequestChain();
+			}
+		}
 		return;
 	}
 	else
@@ -912,8 +974,14 @@ void LLPanelScriptLimitsRegionMemory::onClickHighlight(void* userdata)
 	if(instance)
 	{
 		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
-		LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
-		panel->showBeacon();
+		if(tab)
+		{
+			LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
+			if(panel)
+			{
+				panel->showBeacon();
+			}
+		}
 		return;
 	}
 	else
@@ -1012,8 +1080,14 @@ void LLPanelScriptLimitsRegionMemory::onClickReturn(void* userdata)
 	if(instance)
 	{
 		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
-		LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
-		panel->returnObjects();
+		if(tab)
+		{
+			LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
+			if(panel)
+			{
+				panel->returnObjects();
+			}
+		}
 		return;
 	}
 	else
@@ -1045,6 +1119,12 @@ BOOL LLPanelScriptLimitsAttachment::requestAttachmentDetails()
 void LLPanelScriptLimitsAttachment::setAttachmentDetails(LLSD content)
 {
 	LLScrollListCtrl *list = getChild<LLScrollListCtrl>("scripts_list");
+	
+	if(!list)
+	{
+		return;
+	}
+	
 	S32 number_attachments = content["attachments"].size();
 
 	for(int i = 0; i < number_attachments; i++)
-- 
GitLab


From 85cb82fdda339c573ecddf5010d9e78f8e9a984d Mon Sep 17 00:00:00 2001
From: Dmitry Zaporozhan <dzaporozhan@productengine.com>
Date: Tue, 2 Feb 2010 17:04:31 +0200
Subject: [PATCH 432/521] Fixed normal bug EXT-4696 - Teleport offer window is
 not alligned to the center of game area

--HG--
branch : product-engine
---
 indra/newview/llscreenchannel.cpp | 23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp
index a00b6a92882..8f36c0e88ab 100644
--- a/indra/newview/llscreenchannel.cpp
+++ b/indra/newview/llscreenchannel.cpp
@@ -487,10 +487,21 @@ void LLScreenChannel::showToastsBottom()
 		toast_rect.setOriginAndSize(getRect().mLeft, bottom + toast_margin, toast_rect.getWidth() ,toast_rect.getHeight());
 		(*it).toast->setRect(toast_rect);
 
-		// don't show toasts if there is not enough space
 		if(floater && floater->overlapsScreenChannel())
 		{
+			if(it == mToastList.rbegin())
+			{
+				// move first toast above docked floater
+				S32 shift = floater->getRect().getHeight();
+				if(floater->getDockControl())
+				{
+					shift += floater->getDockControl()->getTongueHeight();
+				}
+				(*it).toast->translate(0, shift);
+			}
+
 			LLRect world_rect = gViewerWindow->getWorldViewRectScaled();
+			// don't show toasts if there is not enough space
 			if(toast_rect.mTop > world_rect.mTop)
 			{
 				break;
@@ -802,16 +813,6 @@ void LLScreenChannel::updateShowToastsState()
 	S32 channel_bottom = gViewerWindow->getWorldViewRectScaled().mBottom + gSavedSettings.getS32("ChannelBottomPanelMargin");;
 	LLRect this_rect = getRect();
 
-	// adjust channel's height
-	if(floater->overlapsScreenChannel())
-	{
-		channel_bottom += floater->getRect().getHeight();
-		if(floater->getDockControl())
-		{
-			channel_bottom += floater->getDockControl()->getTongueHeight();
-		}
-	}
-
 	if(channel_bottom != this_rect.mBottom)
 	{
 		setRect(LLRect(this_rect.mLeft, this_rect.mTop, this_rect.mRight, channel_bottom));
-- 
GitLab


From 250680a07871001bdb108b5aab33f04847ab823f Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Tue, 2 Feb 2010 17:58:29 +0200
Subject: [PATCH 433/521] fixed EXT-4755 Own context menu in voice chat
 participants list has 'Add Friend' and 'Pay' enabled

--HG--
branch : product-engine
---
 indra/newview/lllogchat.cpp                          | 12 ++++++++----
 indra/newview/llnotificationhandlerutil.cpp          |  6 ++++++
 indra/newview/llparticipantlist.cpp                  |  3 ++-
 .../skins/default/xui/en/floater_im_session.xml      |  1 +
 .../skins/default/xui/en/menu_participant_list.xml   |  3 +++
 5 files changed, 20 insertions(+), 5 deletions(-)

diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp
index dc187bf36cc..96ce01c05f5 100644
--- a/indra/newview/lllogchat.cpp
+++ b/indra/newview/lllogchat.cpp
@@ -138,16 +138,20 @@ void LLLogChat::saveHistory(const std::string& filename,
 			    const LLUUID& from_id,
 			    const std::string& line)
 {
-	if(!filename.size())
+	std::string tmp_filename = filename;
+	LLStringUtil::trim(tmp_filename);
+	if (tmp_filename.empty())
 	{
-		llinfos << "Filename is Empty!" << llendl;
+		std::string warn = "Chat history filename [" + filename + "] is empty!";
+		llwarning(warn, 666);
+		llassert(tmp_filename.size());
 		return;
 	}
-
+	
 	llofstream file (LLLogChat::makeLogFileName(filename), std::ios_base::app);
 	if (!file.is_open())
 	{
-		llinfos << "Couldn't open chat history log!" << llendl;
+		llwarns << "Couldn't open chat history log! - " + filename << llendl;
 		return;
 	}
 
diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp
index e2a748a1c50..b8e0892b02c 100644
--- a/indra/newview/llnotificationhandlerutil.cpp
+++ b/indra/newview/llnotificationhandlerutil.cpp
@@ -168,6 +168,12 @@ void LLHandlerUtil::logToIMP2P(const LLNotificationPtr& notification, bool to_fi
 			session_name = "chat";
 		}
 
+		//there still appears a log history file with weird name " .txt"
+		if (" " == session_name || "{waiting}" == session_name || "{nobody}" == session_name)
+		{
+			llwarning("Weird session name (" + session_name + ") for notification " + notification->getName(), 666)
+		}
+
 		if(to_file_only)
 		{
 			logToIM(IM_NOTHING_SPECIAL, session_name, name, notification->getMessage(),
diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp
index f83f3eba968..ad47e351ee0 100644
--- a/indra/newview/llparticipantlist.cpp
+++ b/indra/newview/llparticipantlist.cpp
@@ -583,7 +583,8 @@ void LLParticipantList::LLParticipantListMenu::moderateVoiceOtherParticipants(co
 bool LLParticipantList::LLParticipantListMenu::enableContextMenuItem(const LLSD& userdata)
 {
 	std::string item = userdata.asString();
-	if (item == "can_mute_text" || "can_block" == item || "can_share" == item || "can_im" == item)
+	if (item == "can_mute_text" || "can_block" == item || "can_share" == item || "can_im" == item 
+		|| "can_pay" == item || "can_add" == item)
 	{
 		return mUUIDs.front() != gAgentID;
 	}
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 9aaa660574c..f8fd40632cd 100644
--- a/indra/newview/skins/default/xui/en/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_session.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
+ can_tear_off="false"
  legacy_header_height="18"
  background_visible="true"
  follows="all"
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 805ffbae668..d03a7e3d414 100644
--- a/indra/newview/skins/default/xui/en/menu_participant_list.xml
+++ b/indra/newview/skins/default/xui/en/menu_participant_list.xml
@@ -78,6 +78,9 @@
      name="Pay">
         <menu_item_call.on_click
          function="Avatar.Pay" />
+        <menu_item_call.on_enable
+         function="ParticipantList.EnableItem"
+         parameter="can_pay" />
     </menu_item_call>
         <menu_item_separator
          layout="topleft" />
-- 
GitLab


From 0a41542f2388a3b6142a15fef653b3e663e1dcc7 Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Tue, 2 Feb 2010 18:00:45 +0200
Subject: [PATCH 434/521] reverted accidental change to floater_im_session.xml

--HG--
branch : product-engine
---
 indra/newview/skins/default/xui/en/floater_im_session.xml | 1 -
 1 file changed, 1 deletion(-)

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 f8fd40632cd..9aaa660574c 100644
--- a/indra/newview/skins/default/xui/en/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_session.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
- can_tear_off="false"
  legacy_header_height="18"
  background_visible="true"
  follows="all"
-- 
GitLab


From 5fc508bbc2ddd5bb3d91a20a16dcc68783099986 Mon Sep 17 00:00:00 2001
From: Vadim Savchuk <vsavchuk@productengine.com>
Date: Tue, 2 Feb 2010 18:19:39 +0200
Subject: [PATCH 435/521] Fixed major bug EXT-4811 ([BSI] Attempt to pay an
 object shows wrong Resident name in Pay Resident floater). Removed hardcoded
 payee name.

--HG--
branch : product-engine
---
 indra/newview/skins/default/xui/en/floater_pay_object.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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 455018f467d..d09a0a05350 100644
--- a/indra/newview/skins/default/xui/en/floater_pay_object.xml
+++ b/indra/newview/skins/default/xui/en/floater_pay_object.xml
@@ -36,7 +36,7 @@
      top_delta="3"
      name="payee_name"
      width="184">
-      Ericacita Moostopolison
+      [FIRST] [LAST]
     </text>
     <text
      type="string"
-- 
GitLab


From e367c412988a55515fb68179d21f5d1c19249969 Mon Sep 17 00:00:00 2001
From: Sergei Litovchuk <slitovchuk@productengine.com>
Date: Tue, 2 Feb 2010 18:48:40 +0200
Subject: [PATCH 436/521] Working on (EXT-4347) Moving object contents to
 inventory opens files, changes menu. - Removing LLPanelPlaces dependency from
 open_inventory_offer handler. - Added landmark offer handling to Places
 panel.

--HG--
branch : product-engine
---
 indra/newview/llpanelplaces.cpp   | 57 +++++++++++++++++++++++++------
 indra/newview/llpanelplaces.h     |  8 +++--
 indra/newview/llviewermessage.cpp | 53 +++++++++++++++++-----------
 indra/newview/llviewermessage.h   |  5 +++
 4 files changed, 91 insertions(+), 32 deletions(-)

diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp
index 29cfbbe606d..a49386cb5ce 100644
--- a/indra/newview/llpanelplaces.cpp
+++ b/indra/newview/llpanelplaces.cpp
@@ -70,6 +70,7 @@
 #include "lltoggleablemenu.h"
 #include "llviewerinventory.h"
 #include "llviewermenu.h"
+#include "llviewermessage.h"
 #include "llviewerparcelmgr.h"
 #include "llviewerregion.h"
 #include "llviewerwindow.h"
@@ -105,22 +106,35 @@ class LLPlacesParcelObserver : public LLParcelObserver
 	LLPanelPlaces*		mPlaces;
 };
 
-class LLPlacesInventoryObserver : public LLInventoryObserver
+class LLPlacesInventoryObserver : public LLInventoryAddedObserver
 {
 public:
 	LLPlacesInventoryObserver(LLPanelPlaces* places_panel) :
-		LLInventoryObserver(),
-		mPlaces(places_panel)
+		mPlaces(places_panel),
+		mTabsCreated(false)
 	{}
 
 	/*virtual*/ void changed(U32 mask)
 	{
-		if (mPlaces)
-			mPlaces->changedInventory(mask);
+		LLInventoryAddedObserver::changed(mask);
+
+		if (!mTabsCreated && mPlaces)
+		{
+			mPlaces->createTabs();
+			mTabsCreated = true;
+		}
+	}
+
+protected:
+	/*virtual*/ void done()
+	{
+		mPlaces->showAddedLandmarkInfo(mAdded);
+		mAdded.clear();
 	}
 
 private:
 	LLPanelPlaces*		mPlaces;
+	bool				mTabsCreated;
 };
 
 class LLPlacesRemoteParcelInfoObserver : public LLRemoteParcelInfoObserver
@@ -943,7 +957,7 @@ void LLPanelPlaces::changedParcelSelection()
 	updateVerbs();
 }
 
-void LLPanelPlaces::changedInventory(U32 mask)
+void LLPanelPlaces::createTabs()
 {
 	if (!(gInventory.isInventoryUsable() && LLTeleportHistory::getInstance()))
 		return;
@@ -979,10 +993,6 @@ void LLPanelPlaces::changedInventory(U32 mask)
 	// Filter applied to show all items.
 	if (mActivePanel)
 		mActivePanel->onSearchEdit(mActivePanel->getFilterSubString());
-
-	// we don't need to monitor inventory changes anymore,
-	// so remove the observer
-	gInventory.removeObserver(mInventoryObserver);
 }
 
 void LLPanelPlaces::changedGlobalPos(const LLVector3d &global_pos)
@@ -991,6 +1001,33 @@ void LLPanelPlaces::changedGlobalPos(const LLVector3d &global_pos)
 	updateVerbs();
 }
 
+void LLPanelPlaces::showAddedLandmarkInfo(const std::vector<LLUUID>& items)
+{
+	for (std::vector<LLUUID>::const_iterator item_iter = items.begin();
+		 item_iter != items.end();
+		 ++item_iter)
+	{
+		const LLUUID& item_id = (*item_iter);
+		if(!highlight_offered_item(item_id))
+		{
+			continue;
+		}
+
+		LLInventoryItem* item = gInventory.getItem(item_id);
+
+		if (LLAssetType::AT_LANDMARK == item->getType())
+		{
+			// Created landmark is passed to Places panel to allow its editing.
+			// If the panel is closed we don't reopen it until created landmark is loaded.
+			if("create_landmark" == getPlaceInfoType() && !getItem())
+			{
+				setItem(item);
+			}
+			break;
+		}
+	}
+}
+
 void LLPanelPlaces::updateVerbs()
 {
 	bool is_place_info_visible;
diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h
index 110d7a10547..78fcbbb11d6 100644
--- a/indra/newview/llpanelplaces.h
+++ b/indra/newview/llpanelplaces.h
@@ -66,11 +66,15 @@ class LLPanelPlaces : public LLPanel
 
 	// Called on parcel selection change to update place information.
 	void changedParcelSelection();
-	// Called on agent inventory change to find out when inventory gets usable.
-	void changedInventory(U32 mask);
+	// Called once on agent inventory first change to find out when inventory gets usable
+	// and to create "My Landmarks" and "Teleport History" tabs.
+	void createTabs();
 	// Called when we receive the global 3D position of a parcel.
 	void changedGlobalPos(const LLVector3d &global_pos);
 
+	// Opens landmark info panel when agent creates or receives landmark.
+	void showAddedLandmarkInfo(const std::vector<LLUUID>& items);
+
 	void setItem(LLInventoryItem* item);
 
 	LLInventoryItem* getItem() { return mItem; }
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index b0952dd698f..26c9a1dd796 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -860,28 +860,12 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f
 		 ++item_iter)
 	{
 		const LLUUID& item_id = (*item_iter);
-		LLInventoryItem* item = gInventory.getItem(item_id);
-		if(!item)
+		if(!highlight_offered_item(item_id))
 		{
-			LL_WARNS("Messaging") << "Unable to show inventory item: " << item_id << LL_ENDL;
 			continue;
 		}
 
-		////////////////////////////////////////////////////////////////////////////////
-		// Don't highlight if it's in certain "quiet" folders which don't need UI 
-		// notification (e.g. trash, cof, lost-and-found).
-		if(!gAgent.getAFK())
-		{
-			const LLViewerInventoryCategory *parent = gInventory.getFirstNondefaultParent(item_id);
-			if (parent)
-			{
-				const LLFolderType::EType parent_type = parent->getPreferredType();
-				if (LLViewerFolderType::lookupIsQuietType(parent_type))
-				{
-					continue;
-				}
-			}
-		}
+		LLInventoryItem* item = gInventory.getItem(item_id);
 
 		////////////////////////////////////////////////////////////////////////////////
 		// Special handling for various types.
@@ -928,10 +912,11 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f
 						LLPanelPlaces *places_panel = dynamic_cast<LLPanelPlaces*>(LLSideTray::getInstance()->getPanel("panel_places"));
 						if (places_panel)
 						{
-							// we are creating a landmark
+							// Landmark creation handling is moved to LLPanelPlaces::showAddedLandmarkInfo()
+							// TODO* LLPanelPlaces dependency is going to be removed. See EXT-4347.
 							if("create_landmark" == places_panel->getPlaceInfoType() && !places_panel->getItem())
 							{
-								places_panel->setItem(item);
+								//places_panel->setItem(item);
 							}
 							// we are opening a group notice attachment
 							else
@@ -981,6 +966,34 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f
 	}
 }
 
+bool highlight_offered_item(const LLUUID& item_id)
+{
+	LLInventoryItem* item = gInventory.getItem(item_id);
+	if(!item)
+	{
+		LL_WARNS("Messaging") << "Unable to show inventory item: " << item_id << LL_ENDL;
+		return false;
+	}
+
+	////////////////////////////////////////////////////////////////////////////////
+	// Don't highlight if it's in certain "quiet" folders which don't need UI
+	// notification (e.g. trash, cof, lost-and-found).
+	if(!gAgent.getAFK())
+	{
+		const LLViewerInventoryCategory *parent = gInventory.getFirstNondefaultParent(item_id);
+		if (parent)
+		{
+			const LLFolderType::EType parent_type = parent->getPreferredType();
+			if (LLViewerFolderType::lookupIsQuietType(parent_type))
+			{
+				return false;
+			}
+		}
+	}
+
+	return true;
+}
+
 void inventory_offer_mute_callback(const LLUUID& blocked_id,
 								   const std::string& first_name,
 								   const std::string& last_name,
diff --git a/indra/newview/llviewermessage.h b/indra/newview/llviewermessage.h
index 1415c16090e..7dd629dcfd3 100644
--- a/indra/newview/llviewermessage.h
+++ b/indra/newview/llviewermessage.h
@@ -203,6 +203,11 @@ void process_initiate_download(LLMessageSystem* msg, void**);
 void start_new_inventory_observer();
 void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& from_name);
 
+// Returns true if item is not in certain "quiet" folder which don't need UI
+// notification (e.g. trash, cof, lost-and-found) and agent is not AFK, false otherwise.
+// Returns false if item is not found.
+bool highlight_offered_item(const LLUUID& item_id);
+
 struct LLOfferInfo
 {
         LLOfferInfo()
-- 
GitLab


From 353ed64274b09b60d8b055a9d9cbd78927adcc6b Mon Sep 17 00:00:00 2001
From: Chuck Linden <chuck@lindenlab.com>
Date: Tue, 2 Feb 2010 12:04:42 -0500
Subject: [PATCH 437/521] Created new graphics for build tools "selected"
 states. http://jira.secondlife.com/browse/EXT-4357

---
 .../textures/build/Object_Cone_Selected.png   | Bin 0 -> 576 bytes
 .../textures/build/Object_Cube_Selected.png   | Bin 0 -> 477 bytes
 .../build/Object_Cylinder_Selected.png        | Bin 0 -> 443 bytes
 .../textures/build/Object_Grass_Selected.png  | Bin 0 -> 757 bytes
 .../build/Object_Hemi_Cone_Selected.png       | Bin 0 -> 531 bytes
 .../build/Object_Hemi_Cylinder_Selected.png   | Bin 0 -> 463 bytes
 .../build/Object_Hemi_Sphere_Selected.png     | Bin 0 -> 696 bytes
 .../textures/build/Object_Prism_Selected.png  | Bin 0 -> 485 bytes
 .../build/Object_Pyramid_Selected.png         | Bin 0 -> 594 bytes
 .../textures/build/Object_Ring_Selected.png   | Bin 0 -> 738 bytes
 .../textures/build/Object_Sphere_Selected.png | Bin 0 -> 1003 bytes
 .../build/Object_Tetrahedron_Selected.png     | Bin 0 -> 558 bytes
 .../textures/build/Object_Torus_Selected.png  | Bin 0 -> 825 bytes
 .../textures/build/Object_Tree_Selected.png   | Bin 0 -> 839 bytes
 .../textures/build/Object_Tube_Selected.png   | Bin 0 -> 552 bytes
 .../skins/default/textures/textures.xml       |  20 +++++++++
 .../skins/default/xui/en/floater_tools.xml    |  41 +++++++++---------
 17 files changed, 41 insertions(+), 20 deletions(-)
 create mode 100644 indra/newview/skins/default/textures/build/Object_Cone_Selected.png
 create mode 100644 indra/newview/skins/default/textures/build/Object_Cube_Selected.png
 create mode 100644 indra/newview/skins/default/textures/build/Object_Cylinder_Selected.png
 create mode 100644 indra/newview/skins/default/textures/build/Object_Grass_Selected.png
 create mode 100644 indra/newview/skins/default/textures/build/Object_Hemi_Cone_Selected.png
 create mode 100644 indra/newview/skins/default/textures/build/Object_Hemi_Cylinder_Selected.png
 create mode 100644 indra/newview/skins/default/textures/build/Object_Hemi_Sphere_Selected.png
 create mode 100644 indra/newview/skins/default/textures/build/Object_Prism_Selected.png
 create mode 100644 indra/newview/skins/default/textures/build/Object_Pyramid_Selected.png
 create mode 100644 indra/newview/skins/default/textures/build/Object_Ring_Selected.png
 create mode 100644 indra/newview/skins/default/textures/build/Object_Sphere_Selected.png
 create mode 100644 indra/newview/skins/default/textures/build/Object_Tetrahedron_Selected.png
 create mode 100644 indra/newview/skins/default/textures/build/Object_Torus_Selected.png
 create mode 100644 indra/newview/skins/default/textures/build/Object_Tree_Selected.png
 create mode 100644 indra/newview/skins/default/textures/build/Object_Tube_Selected.png

diff --git a/indra/newview/skins/default/textures/build/Object_Cone_Selected.png b/indra/newview/skins/default/textures/build/Object_Cone_Selected.png
new file mode 100644
index 0000000000000000000000000000000000000000..d50dc69ffe924ffa1f5edae2e466364d856e17d7
GIT binary patch
literal 576
zcmV-G0>Ax<P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^z1|GYYtN;K3(n&-?R5;6}
z)4gj`Q5eVZ?{iMBk~PEKbQ3c4pD>eyYg2G42t^ze6<;Z0>6AsxAQ`G{!Iyx7DB^3W
zU<Fg5I=hN<EoyC=`*I!!dv6kxG&k+D-NWH?e$RQ%g$(s*WvM*B{CqjfUXx`Lo}CFK
zE>)jBEbkk9{iQLDl_Ee(+|0hfrO&IrGn`XZR3Q>AUcX;Ey=TxFDhh@4TOC^x&+Z9)
zyVmey!vuh;;#2`pL*e3Lbzx*Mw$y=q=i0y4l`tn0SMS{NGlQ?zK9-zNYPYH=+TI}K
zLr?0N!ARWge(S1jG|EZo%H8VNQ1EHvec1`ceyw(R0E8Zohk}vS+OCuDP-82_%k$Op
zK(M~@=4R(JNfWY@5bZf2@TArkoO|)aZ{bccVyU5UX`wpZ0|pXTkmQ+2SBptHr`i_{
zJh_%UBLgt|U~X(%;>q+Bk%80gTS7j{NhJkCaTk(Q|5@#%PIrYvPbO2)AR9)cCt33U
zx?u?car{WZ8z-jDTjcwY>mLj&%>#jscMavtvGKz>XBL6xC{wnvem&UI<CT+V-*u03
zr(S;g;A8ESSUHNwk-$ZVHvar(ee);lo4?p<Z8xpcZ^p4|V(ukSQhxzZ>DK$bIkolx
O0000<MNUMnLSTZ^4Frz>

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/build/Object_Cube_Selected.png b/indra/newview/skins/default/textures/build/Object_Cube_Selected.png
new file mode 100644
index 0000000000000000000000000000000000000000..3d6964530d17386cc110f012aa612c9817983030
GIT binary patch
literal 477
zcmV<30V4j1P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^$9&n)hzW@LMZ%IT!R5;7+
z)W1u^KpX||ce$k4DhTfGB3=6rv}<P_w5x+Z25}J#idfV|oK%$Jq6MvM2A2kRSBFkQ
zD`+UOEk$BTa(6COYPrT}JNm|h_Zhwik02zMWh2cMY%q#608j=~;W(YoWJ~=zMD}=L
z8aks`5CoIblE4#XILoE8`MzMWY$Tb2HKt$|1aU-(z&qu*r5u}cnd}1qkYd?L1{CL9
zK?(yz;kc&^>uSxmrq!`{YCJItjjDgbT;D_0wo<LvMot9)$8+I$E)ua3{08nosJEK{
zfEa*p&8ToM)E#M~AMCRLkM(CM6bj1Vmh*;sy9vfw=oum%%kf;iwCrfVjUneB90I6t
zaYqAT4hm@jOv-TZwKn@#g`}_IhEp;nD^zVu3Q>ki%oj^XE4nG&!@cXmOhB>S3-^MQ
zp`rz1>v&l&{W!24c+uC$jv$!m1{HyZ=8MCVB|RT`vAeTdD(HbqR%^C}Fz7QMwkxu2
T=hpz*00000NkvXXu0mjfu7$x7

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/build/Object_Cylinder_Selected.png b/indra/newview/skins/default/textures/build/Object_Cylinder_Selected.png
new file mode 100644
index 0000000000000000000000000000000000000000..3ed03899610829f1dff7335df6757111ebc2d101
GIT binary patch
literal 443
zcmV;s0Yv_ZP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^%3j}5^6#xJMO-V#SR5;7+
z)V)drK@<hxGe3z&EF~{sleE5o5Zg2s7GfiasT50JA-;fEh>ZqptYR5OTRXubU>OJ~
zCYVh&vzhGNYo#o^D<*20(+zj-H_dPaQc`Qw^CU%u1y)#~7@Y}5TQD9a<7{iK{1o36
zamXog;uO{~K_sE69X6t{j9v(}xStdQ0Fo$JjfYyJo=<=mH`gVSC}7$M<VcE20_+X@
zOZa65BeR?Uy`hgmV5Y{5wP?M)e4TZ4*!4X)a#);SfRge@tTXV?e(yjzN(TX;XMFUG
zkF3rhm&rm&1+5eSfSF;#F+5}71w(}7001houfKcUhGW=poI2|V0f;&ME8(9r183l0
zKuLTj7~QD_hLH~E3Gi@p_cd#IRXT1?++2k2+=$CZI|sL^js2PG<!Q+&?2$l`lqken
ly5*bT86jO&xA%|ZyC0A!iAaNicY*)_002ovPDHLkV1n!dt4{y`

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/build/Object_Grass_Selected.png b/indra/newview/skins/default/textures/build/Object_Grass_Selected.png
new file mode 100644
index 0000000000000000000000000000000000000000..3ebd5ea7a1c7059fd82e165ec2a6b99639118a58
GIT binary patch
literal 757
zcmV<R0t)?!P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^&1i$oPM*si<he<?1R5;7c
zls{<IP!z_0=Ohjt9DK;z)Io%*T?GZ9nD@rCIM^b*7MxUEL>+XflMXHp4k}KquX*_2
zr5AK)-lHHm6pBNuA_(f>@P>jo2%6mElGN0ylY*I&+?-#&d%o`;_#dw%by0b*e*re0
z2VD7UK(8EC&$B-QJE<G0KDT==O;R`h8{n`QZXK}QbJOjfOH0_dkcDbr0?+9z<mRt_
zY(j0K5qH-CgWS%0W!G%iO|=^Fa+ooeg*+&stwy}8o)_(&n_j0*IIN!6)prWeYL4{7
zjAL2Ir6hIHL?iA7Ik&Trna=!N9Y8&|yfRuXHsO#MuQmWX^K<nAGLr{f2bhfFvj$u9
zK<)rcG~)XJN!OjK^lz6KOO;+vE5O%H@-9hT6y$c^3p+{!0?*StASz8#&w>}46@}Zx
zcmpuobyFtn*P`%V7BbUnj`Rc1bFZ8z0Cxd$<r;t*^IjRQCPCn3lDa4hxfJG%t(juN
zw%M+mQsYss9H?${O{MYLgc^Xsp3<-^<Ux=#(`v-a+U~i>t>#ES$m!+*XT;k>gn`mw
zF;)we=gN2_sT((8zZk1Y*PSw<7I>}#s2EG_o=equWJ1lW92aBNgt!3q3j=;QENnGl
zix_<`G{snLHR5Feos8nkz^Ag=UKtgm@0EjVQSdC9P)kx5VSMqzJ`?r=pH0{;#@nBR
zebOt##m7Tpd^BNa;bdKm6^t)lnN;I_QM*};6|W46v9dAPITsNI5C%-xY(lLwKUXhJ
zP~&}}s?6XZu)Wy9lMTaRB8qR6$EZ~2RW7Wx&G_h*eJ0d@KGOm(e>rW`(<y+pA}&WN
n%OA=$H5Lo!50ugQXVd#Tz|1vFmL<fQ00000NkvXXu0mjf{DDvb

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/build/Object_Hemi_Cone_Selected.png b/indra/newview/skins/default/textures/build/Object_Hemi_Cone_Selected.png
new file mode 100644
index 0000000000000000000000000000000000000000..3bdc4d1fd5bd66813ef3a50bdcf5dfd262ea3800
GIT binary patch
literal 531
zcmV+u0_^>XP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^&D-<PN9smFVrAb6VR5;6}
zls`xtVHn1r_q}MFHG^a6n8CS=bP2c=$>5M;r%IO+k<z+ehCmjVqG*&(brBb#tqw)1
zfmW$i>ZZGpMO++}+~s{74*y*4OLF4D!M*SI-H+e*e0Lv^@><{9Db0OfE%%$3NeeVj
zswZcs0I<|+o~D6q9`5>7<l7$d<;7a*QNUkE|Ax$yk2iIYk?Ny>rkI5wM@Dr&OYLXZ
zR=kcXB8_EFVB5nQ$t+12dB2~ZTBr>_2)K2$Uob(T+jy9f`3C__QNMjA!Fz_$vQcnZ
zI)Oj`|1Fsyf7fAZOD8Z;TaMWhpabf%OaOlz{QgWxF5V^5W*Gyn|Jfc2l<!p}j$?E?
zSJPn`0|sKV0J82^-9*pORO5L9_;qVzI8?p`;&w)Ypwm!*%fS|3EqtgXfuYz8AW-R+
zR+9MiievR@|Ja$Kie5y~36dES*1>zyVx>OqH@bc{??#KCl+x^k87*Nr5b)dblwa%n
zr@R>%eWq=!0J!Yj<y%;Y#+R}`p89YozIZt~5aPLKs3_48qIqNI8JdGFo9K0*Tmx}6
Vukn9Bub2P;002ovPDHLkV1m?0>EZwY

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/build/Object_Hemi_Cylinder_Selected.png b/indra/newview/skins/default/textures/build/Object_Hemi_Cylinder_Selected.png
new file mode 100644
index 0000000000000000000000000000000000000000..0912442e29334aa59d295183e8cd256a03e9e174
GIT binary patch
literal 463
zcmV;=0WkiFP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^(5>h+lR{#J3VM#<mR5;7+
zlRZnrP!xvWdy_^S1<^mC(60Ugp<P|<Cb~E%Si3nm7&irffwmyxpdc;|I;!X@I24p>
zTSY}h{HP>0O`7E1>mY(D&4<vz!FRgnyoZPL!6op~=KgLEr({wP3<!e6Pmc&Z5`h90
zSQ||Zoq4=gASRI<lQ4`3s@&b|ERJQ<-?7|W;L7BfQ^cdd3fHBIVVR!p>Ca%}U@sXR
zc3IXPv#&Yt0c!P+?l2JJoS&4>-*w08Z{>S{dfh<HG6P|!S4FMC-7dcx+MK8wI<$HX
zjPqZ^S{?-eG}C})8c^gII%5hXDxvgn`_kZUZ`exYAk%go*sk;SW-f_xEQ&VkANU7=
zl#629fH4<``HY%w3s7;ydVXpy6*w~G;)n=T!(bh@n9pU@@z5R4j!Zl&wiu*LTm->Z
zrqu;M-}gH$ZLKDmge)gWaEZj9-d^vC<;*N+)$O3}KLPC4o!&TE=Pv*N002ovPDHLk
FV1kA>!_fc$

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/build/Object_Hemi_Sphere_Selected.png b/indra/newview/skins/default/textures/build/Object_Hemi_Sphere_Selected.png
new file mode 100644
index 0000000000000000000000000000000000000000..33db4a2de8c185b7d639d8cc7d0e2bbde8f60d72
GIT binary patch
literal 696
zcmV;p0!RIcP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^(I}nL{I{*LzN=ZaPR5;7+
zls!n6Q5462_ul7ud>>!+6%nN&S{+&n0>{WnXvhLv)2TV3T-<ADt!U6GsK6Q>BB@Op
zs-eapiHzP-Q{U%(KJLe9@B<{HBHKD}hI`@sIRA6*{lowG+fWBxF1}nE5XI@;vnWOZ
zl(4W@C_FoJa=3XQ@ae0i<D!@p#b{6*1Jd7YDA&TW5*Cy&J91+9je7EW=~2*(9fn*T
zc&rZ#1`sr3`omiD&=#`MZf!+N@7}VWZF014ke;-T(fW@d?W*AO#yao6exi}2A0v&*
zSH7*Lt+Jqz)~R>Y=uB$FCPFENh#&|)gq`#hwqhgCSZi&t-fj^>z-U9GFC~hCT5gxc
zP-jx3bQXZhIgHkO5Enc?1S(fyy~lco^Nzw+gb)BolLRHKMBP!x!WWkfWo3?13LgSS
zTOw@$!G(Z`V7<e7j}IQ_J=S}2TkT2juGP_j`DmctbA2<bE^ig>bXQ_z43X9Z5rPOJ
zg4+R!1Y8LFx~s(ropHz7)pM6_>8bI_=3uSo0l;RSu~lTW%bcwuCo2m|TT$2w>nzqg
zN@r;mIn~a1lv4C{HHe+e?E88%_iw*gX|10U5sWs(#t<2UR@+<Oo}0%7kBIESj`a4^
zrQ^lv^AjTg(Jru8cbrw-eb1Zi&7sO!eDGj@{#=qMroX#)AM8MLxG_IBw_0Tvv#Ln*
zs{8>|ixawPoix&V9yz&l?ZU*BU%JiBhqD9DsOg{?&Ac5F5tLG-agysG%f@rh1i3pk
eKH2=|e)t{tgG7*<r^}@P0000<MNUMnLSTX#n?5W6

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/build/Object_Prism_Selected.png b/indra/newview/skins/default/textures/build/Object_Prism_Selected.png
new file mode 100644
index 0000000000000000000000000000000000000000..9e80fe2b8455daac86e758f22ce44f5732bec279
GIT binary patch
literal 485
zcmV<B0UG{^P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^)Bv9LbPyhe{cS%G+R5;76
zls!)ZF#v|&mIH;wgn_VJLPA^&I*Eyii4hpj#K8?GM;ZJR3=VE2F0QhhzzF;SR~83J
zAmO|mhX}dwRj%iR;o~?e_)cx}=4qd#ErCPwr9#N2<eC$tIK{DK;o&BsJV7AD31Ab*
zb1fSKAG0Ir)TO=-C_R^78)Gk#*KF&bNTdkhWF3%x7^*Cy!YSe}mEzr6px*1i91cX7
zU>-c?ONEdt5CCc|RR}nv?hfqsO=#UO{D(T74jOF@%$jVi{tFy2hR^Tz*6MV2Qa3aV
z*?22;y0}o&n-GnY`Vz2h_R#H{8>>^N-n-TiKINjiBXGnRnjK>!b-JolH^i^etollz
z#Vyoy^-t>gaxq5TN}})FW1-?>I7}y%s<b<@GZsb4lE^tH2rgZtmWm@ex)S8!xKAgQ
z>f8rAO(vI(af&NW$;Cv%sSWr6U_UG)yccu@IRY1x$z>CqLfHxU&kiEdII--v0P)^B
bfu{KZD`>A|;DZRR00000NkvXXu0mjfZ}rD1

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/build/Object_Pyramid_Selected.png b/indra/newview/skins/default/textures/build/Object_Pyramid_Selected.png
new file mode 100644
index 0000000000000000000000000000000000000000..d36bfa55d44667ae5f90912be2ca55e222da7953
GIT binary patch
literal 594
zcmV-Y0<HatP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^*419Iw>i_@&<Vi$9R5;6}
zls#xuQ5462=e~E_q)qc6mTZFH;zuT-(7`D>)J;KB5Cq*Mse{gLW>AoV)Ye5*YC;u3
zkUTpjDRs4rli;8ZB2J1(sLA`d4w_KgG<h$c?Htbi-SfZa+ygP}*3$>MVL2))tkQIg
zEfs7I%d?`us`Xmdvt>QNqz|7wacJvR^W}e4=-aZ1kaQ*{@wCiey?Zk|GVn>$T?`dR
z0JLS3Nu`sWF|{@lu-b5QzQvWDu}sRrv&om1%K6wp-{Lt!a%b#7Dh)tK%W|xytZulE
zLW|RT4k$&dy-mw+PtVTfgRS-E>!B4^8g4$YxU}D8nUn*7r{&u22C4pC<?*1W=*kX-
zjHl)HK;Y_z`@#qZ2LZKZ_n@AZ`O;E3*B4l6xP`#tT$I^#CZ+%|ko2@X+ykuEYgyms
ze$=nnt?=(O%oOjH3;zHEOV*5#i3&{UF($_oJ>S!Er#Cj0rd#xF7Kmw~f$y!Kf20e}
z>|EZFYQ2{2X!*2zfTP$iufv-U?|Qz#w(@OpM}hT|tv&P1I)CxP4`ui)hOYtws5lpN
zWh=wC@wPcD`!3XmTR@l&g&89p2d27Pr=RRZ+mu!oZmdXLnbn4yGjJ?aoB<po9DV!o
g{g=hd*G~cb2Emn_YM|f)4*&oF07*qoM6N<$g8%RpdH?_b

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/build/Object_Ring_Selected.png b/indra/newview/skins/default/textures/build/Object_Ring_Selected.png
new file mode 100644
index 0000000000000000000000000000000000000000..962f6efb93acc7f8fa6bc0d104f872d88e177c53
GIT binary patch
literal 738
zcmV<80v-K{P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^*JH*IC<NyEybV)=(R5;7!
zlut-hQ51*2d*6NP{Lz;)Dnm61lA+K-LKm$9Y1>MWq!uj-!WQDnjqc0}+8IPPOQFnY
z5pFfw7DTj)%!N*v4mhUH_-5XF_uUqy=%nVlesDMU{P;NM+;cAc6Plcz>7JaO={=5D
z90-`3>DQ7Qq2N4%NM&4xyq6)bWoRa@UA~e#6gc)GGu+tFFsPJD?7c7f9)Z@xYbw|V
zcP*cvT3lKj8Xp+R?E)V>d)l<FOEWE}(p|Qt@O40L^9QRNYZS|+eT-_`CJ}QuooJ-S
zt^#0j^?P=0d8KoFU?e91Za*1&*Vf$9<wWBYN-m$W3+Pb)wO_5NG$|*6uLC}O{hU>9
z&>`<X&s?-4)m=_B4sdK3!2C*<lJ8+#idZa~j@8Dmt5DM0SX)nBBnGe#CJlK@^HCVH
z^s8k!p(Q%CB)#Jav<4fJaR+1jmy{7S84PQM4U%z()>N8>)o-p{4#ytf86G_-v;Ie;
zy}m6TCQsC-cOEJ<1|X@7;0(Zeu|P8Ja4wZ55v@fXQT2th?Sx8VSJ?n;mA28L#sb9M
z>CDSOi5`GxRSnGzDJ&@g*xW9<(y%BD%fN;av>QQ_5$ulDR%x5{;uZiZFt3yhnE-kK
zw!IQxR<hJZqNJQ8b<tP^X#0J3wO-u9^~w~=E?(g89r(8bV01b&tCi@kEX}qQLI`Y2
zp`^t1J&ZB<I^clq$yWKMLju@=>9YbeS84KffEV}_%Pt#k5ijr$hk0S=(AAsyKUObL
zVsLMdj+DVwftga;3=Q?&${qSS+?&euYe|n0oD40|R+)_m&Ac?cv9y`k0sY7N39y(I
UN)F0uG5`Po07*qoM6N<$f|tZbGynhq

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/build/Object_Sphere_Selected.png b/indra/newview/skins/default/textures/build/Object_Sphere_Selected.png
new file mode 100644
index 0000000000000000000000000000000000000000..715d597144e2e42d6a73bba378e0a12664274ae8
GIT binary patch
literal 1003
zcmV<H0~Gv;P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^+CXC~J{r~_2eMv+?R5;6h
zl+TY8MHI(BRbACRy}QE>yW^n1#wZ>}gGc`W^+e*qXar6MI1m!TMS^mG#ANrNAs&bk
z4F~sNOi;qv+a}zM@oc;q5+o5>mfe}2{#EtLL(g=COn8@iRjK;a_tks#6m#st_4R=>
z>a1w>wkQtH*0olo%KX|(7JvBs<MUhd&Z=h@&fVD9RB3!-wcAVkOUr28Y}v~vY>#)@
zos3aR(T$Qn4=t^nzx2`Rt+~Jp*VhMrA-;R~z>CARl>xD_D5VG?5JJF-$BQtj3jX-}
zFS4>AHkQL_@9LG4XE)j?W=_3ee?R)lYr`XhLo6gIi%Cjq6B28&#$qEwq&11Lyt#IS
zez!;EYVPMx);Dh5yz&(A+>MRRH(q{qt>5jD#tEs7u~9^%HAWjEtuWKMQVNm4!Cs%l
zS}Iqw?eq0(w>RGb(C5G2IJ&>TdTMoPnb;VNjxbS#)*2HvzR?CyC=^<0lmZC6(A^Kf
z?qp0B>TdwFXwIyy46u=zs%ccH|K%%$FfXBWY>bUe1FiGnwcDG=b+FN~G)@4JAb1f%
z2uKhl1Vn^D15}N)>8Maj5t{~>S0!F^QpagBti7Z54llleOfxGYbCqeO+j25fg_Wxb
zn%9jNp>hrz)x^dUX+cCy6^B+Wgf{eMKHp5`9C=k>bVSEGv{FbAw9<I-E!cVAh7KUo
z__IANP(ePa$~3VtMO^_9>83<vrfB-EUIZ_`RT@H|_O3kxppB?|JJ|^5J(a5|>Wa$M
zRIbK*kM|x4(*6{gf@|+6>WZ?i0Z8K*6?kB}Ci&%2F&U1E$u!*N)>%1drQ6V)`1az`
z)jS$KX+!OH7SX~TGg#dB#a>pOd$98;odIoR@FGnqt643AlLj`aN_Min_K7++X2B+p
zKYjny4Sn(WnTH2D`+jobx&QcI9%m!QWzM+BnN$UNRg#qj<1%MdOc)gt{@LATCmXdj
zxw5p3b>Zq$-RA18Z-09*-gzs8z+%#AnnRor=?D>_a20t~GA{Bqvq~vm>h)RDcI)y7
zr{4uIGhk0A@2T#}-G`ICVOADoWx?|-HkN+3_Y`bygZ=W(=H_;loye*p&8u?m|6S@V
zu$(UD#)a=b`|$K9&+XU%U;X_3z(wk^XpUvR9)=K5N|D+)*AnhUo*yF#H!mJP^YGcT
Z{{hvn)HotfGV1^U002ovPDHLkV1g>M-@pI>

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/build/Object_Tetrahedron_Selected.png b/indra/newview/skins/default/textures/build/Object_Tetrahedron_Selected.png
new file mode 100644
index 0000000000000000000000000000000000000000..b2ea680f23b470fc312da01824c9d0e2064ed85c
GIT binary patch
literal 558
zcmV+}0@3}6P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^-6kRVIKL7v$z)3_wR5;7M
zlf5qkaTv$Hzn5$8+N08htyqLaCkcbGF&J1a3>}CdA_f~%+r)rG8bl-BI|&27usC9p
z;14jHL}J$J-Th4DuD#YF@r=*QC(rYJo(K4En_f*d&224D`pu`cf>YUayr9yDmgeTA
zLqjC~1f0sI69tvrfwNdx)ijgiD1Uj@^ef=RT6(^q5+MPtAruAxNP?)ziTE*aVl6#i
z43LxrGysT%>b_z&Mfbs#Sn&-U-^dun07*H05iRU0Fga#x=}A5}SqxHPGITqGj574L
z#Ve~M-U21rI@~w-;@M$Ar4QvW0Ql6;qYcgE<fiJ#MB>>i7}X<HwX!KX_OHc`Cy-h4
z)T^i=q}SZ2#gIHS#83s0n=)6P98?sjO5oc=E^+MU4H0(%voi}X%)+C4ySl$$BhX45
z=M`teEqUPrhIHTmE(v1$*W$zlq&BvHqF;rc6#aQa#EH{6wwZadC}QEDimujnAFbhy
z*|?<=$0Lb>bpYV5L$;)0QIf2$rJo1HX=OkhKta-LTx#Q<+Bl`Q%z1r?>-C&An#;WQ
wv~@-m#(hJob_f8CL48k?9Q0i-`h_^{1Ex%n&d9&3H~;_u07*qoM6N<$g3ZzMKmY&$

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/build/Object_Torus_Selected.png b/indra/newview/skins/default/textures/build/Object_Torus_Selected.png
new file mode 100644
index 0000000000000000000000000000000000000000..1fc22686eb996e7aa4298ab2d8cfa935785066e9
GIT binary patch
literal 825
zcmV-91IGM`P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^-H~&a&O#lD_%Sl8*R5;7!
zl)rCWMG%0$+1>ZvozM1hwq;DjFVQ4_fI|zSrvgPuA2&1zgk(TSG$BzWM2QfbL_rY(
zREUBK5M?U52nnI+aOB*@j_v#L-n;j9cPK6w9FzP7nQ~V8X0-Foz!MkpsN|LF-M7@4
zH?u4|Z4>tls)~w7V;-aSg7<erRsSX-ez|>NYw%d$<?p&5c_;6v&{=7<C9#&oIYf-2
zs-OxI6Jx!C-y0r`r+NOf1U`8G{KftQ;MHqit=EbC6s(+`!xQTmO>@esrrm6jB?+lZ
zS#CCIFDz-pIxT%24<|!^_vo<iO8@fqg{^@AT>7DV<2dXvAJgymsqzv4mnCGa1#Fs-
z8pm>Tfzzj+XQkCvApSMj(XuFa(<*M-E7!Z{d?IhpVF!~DJGXj-+CTI$A_i*>5v8ar
zZXfQE*;JZYL(00Q^wko|x(k-~1Te;;8rj?5Kh7yqu{V~M+jp92qnZZasx-V3(bW(F
zH+OG=K~OOW1S_vQ71=Pxu$VP*&a$?;raPmF2o#MnzWB|h&ju$g*!tp=o56AhRYv)Q
zMv@8&YFKsiUK(jaXR%F)DxHPJBJq0p!*dr0kJ9R;&eI<crT#i|X)~%y6+ECb(rh5+
z?CMgRXFKZ{fj@V9Os0hz<iG^|LzLeAy6tFWGa8<=Vo(ucjQ_!ud(H+v4OYJ$=3_a^
znyj>zd0}mX{qd0;OhzlU_}3m5S4f>Bv6ean>KO0iz<T|0rp@==Ut(fj&8(A+r`Bj?
z4MYr}985;kVK#AV3`Q&=2FBBZd|D87hBJ|W(kgBmfW+&0Q^#LRUu$pg4!7?O7#3s7
zy22VmBS~o_Db6_RP%|oXifZ~l*aNXotlqmSbmlp0EY=tRVvP705ClaPrE*@cxuDzg
zoqp_b2!=OQI2Em&IrgLyv}csRt@67G`uWM@@C3%c5GZL|0b|m200000NkvXXu0mjf
D(|>j0

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/build/Object_Tree_Selected.png b/indra/newview/skins/default/textures/build/Object_Tree_Selected.png
new file mode 100644
index 0000000000000000000000000000000000000000..5bd87f8a2fbf944c26c1b2adc743973099477723
GIT binary patch
literal 839
zcmV-N1GxN&P)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^;9c!{OTmS$9*-1n}R5;76
z)X!^FR}=^E@45HBH}B1_%)DqK>JXtQBW6{|A7HW)X3+}9MGPp23#+!qEEI83Qc;RO
zT51s_(u#`W4-^T43$qTmb&*XecKm@>C(dMM-kbN{y{C&}7-W)2^sMeZ=knojx#tp=
ziEGnS`?bJ9rLkjVsPuHX^R!rD;>P4~q@z_TX-|O2Q--Fi?`tQu!f~N-R~o)^YVQwk
zmIP1Voa~PjZc9VgLpECj(u0x+QV0+cLcjIIhaPY(8`@~ZkuIy4Fa5md`=34-q8&^)
z?l(qK(J0#IWxF=6%dLW?6ueXxf(WtTelUDnDP-Lg^4V-bON_J|s(q79r@!_RdAzC3
z6(VSOP7(};V_B&A4TwOG+YGcs>tH79^faQDCzR}KHx@d){OJC0OGld>%Lc%x2TfFK
z^G`C4i+A-J7>utr^!=Xe&YeMQX6m*2l`xJ0ZJu=m108Prw^=O)QHXr13qtd3Gw|ny
z!R-IJ3@oWYf?PL~++9O-xEZ$mG+Ezu1QXJlBSu9KA)yqEq+(#=jeoy>IWLIdST?H7
z1}gP==vbF!#P_mp(iN%1RL47XZFi;@UcOSTZAsWxraO}>zL<Mk5QKta#_X#y!0?6U
zr;!l-OjvJg+!G%?yoC;xEyj~6XLmJh3^b!wUnB5gONltr<sY~2rL>i(bS0Cn<=O*|
zZMy|;HP-g7`L>Ynx!DmU#&cp+nAs2F&=o|mAj;D4<MC_1{S)Ze)3L7PV%e)A{xfYm
z4?cNPu1-&#ixm#580SX^OJhfFTwrYsq`~aj(L<Y;8a>e|IXYMxvm)#q9W0Ht=cUHX
za<eQJE9@F7-NFh&;0wpH;PERLhCi&0z?RPjnXsvCo%w7~OIr9%v_SFb<zM?(44$}t
z@ed=ZNCp+br~p7{)5Bwvzx1pKB*tG(i-*pP9Oyo`>ri(h;328`F%vBc{s%}|B!d1C
RhQ0s*002ovPDHLkV1fece+U2o

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/build/Object_Tube_Selected.png b/indra/newview/skins/default/textures/build/Object_Tube_Selected.png
new file mode 100644
index 0000000000000000000000000000000000000000..a4c3f39e148be9a4a9eebe1cfb7a77989affcac7
GIT binary patch
literal 552
zcmV+@0@wYCP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV0s;^<BrU9q6#xJMx=BPqR5;7+
zls}6TK^TXhncXBLhO8zUuh463yv9PXR-$DrtmHTgL9|h^^edcS;3`2-4r~<RERWL<
zAXb8cU=uuIF4@a^SvR{of2<Pjc5}o7JAJEp-}%im@9!NL!Hihn+-Mpp?peV_D_GjU
zCoG?Z<)gH`S-IN&lszl5h3D_yKGTw$2+GU}N3-Q<yS#GkdT&y5GqBg%;l?B%jU$36
zL>oQTc;#bwl_~(*p=G4_04(M@T;JSiCPncBpuZRJZRb02n$GS_I-IGWVzF@=fP&)w
ztyX&tKu$!FO0G=S+r$2$FaT{d-C!`yW0hXYS>6eDX_QV<a9l2&Jx4e2@kar}Um44l
zDvhc~vvz!1>kOtNJUGMtUO=;U0!K;~ygCbBecrp!8T1I_@oZqK72CUgYUK*$Vu_+#
zm<dUgViZSohd!y%>{q#2vBeTZAwd)Z<e;fi{2WIZYcba3E_3HuN>s{GLh_g6Kk%Od
zN@L#(i+^N-C6byKIpE{vyS-v!FH3E|{3%Nq{8DV&PwqV0I`qc|Sbh1lr5zp^!IE*r
q`2&^=oiG}IMVVKtw;!%$&;ABTIkHf4f3Up(0000<MNUMnLSTXeXzgYI

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 60c1470b894..ea66897b356 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -321,20 +321,35 @@ with the same filename but different name
   <texture name="NoEntryPassLines" file_name="world/NoEntryPassLines.png" use_mips="true" preload="false" />
 
   <texture name="Object_Cone" file_name="build/Object_Cone.png" preload="false" />
+  <texture name="Object_Cone_Selected" file_name="build/Object_Cone_Selected.png" preload="false" />
   <texture name="Object_Cube" file_name="build/Object_Cube.png" preload="false" />
+  <texture name="Object_Cube_Selected" file_name="build/Object_Cube_Selected.png" preload="false" />
   <texture name="Object_Cylinder" file_name="build/Object_Cylinder.png" preload="false" />
+  <texture name="Object_Cylinder_Selected" file_name="build/Object_Cylinder_Selected.png" preload="false" />
   <texture name="Object_Grass" file_name="build/Object_Grass.png" preload="false" />
+  <texture name="Object_Grass_Selected" file_name="build/Object_Grass_Selected.png" preload="false" />
   <texture name="Object_Hemi_Cone" file_name="build/Object_Hemi_Cone.png" preload="false" />
+  <texture name="Object_Hemi_Cone_Selected" file_name="build/Object_Hemi_Cone_Selected.png" preload="false" />
   <texture name="Object_Hemi_Cylinder" file_name="build/Object_Hemi_Cylinder.png" preload="false" />
+  <texture name="Object_Hemi_Cylinder_Selected" file_name="build/Object_Hemi_Cylinder_Selected.png" preload="false" />
   <texture name="Object_Hemi_Sphere" file_name="build/Object_Hemi_Sphere.png" preload="false" />
+  <texture name="Object_Hemi_Sphere_Selected" file_name="build/Object_Hemi_Sphere_Selected.png" preload="false" />
   <texture name="Object_Prism" file_name="build/Object_Prism.png" preload="false" />
+  <texture name="Object_Prism_Selected" file_name="build/Object_Prism_Selected.png" preload="false" />
   <texture name="Object_Pyramid" file_name="build/Object_Pyramid.png" preload="false" />
+  <texture name="Object_Pyramid_Selected" file_name="build/Object_Pyramid_Selected.png" preload="false" />
   <texture name="Object_Ring" file_name="build/Object_Ring.png" preload="false" />
+  <texture name="Object_Ring_Selected" file_name="build/Object_Ring_Selected.png" preload="false" />
   <texture name="Object_Sphere" file_name="build/Object_Sphere.png" preload="false" />
+  <texture name="Object_Sphere_Selected" file_name="build/Object_Sphere_Selected.png" preload="false" />
   <texture name="Object_Tetrahedron" file_name="build/Object_Tetrahedron.png" preload="false" />
+  <texture name="Object_Tetrahedron_Selected" file_name="build/Object_Tetrahedron_Selected.png" preload="false" />
   <texture name="Object_Torus" file_name="build/Object_Torus.png" preload="false" />
+  <texture name="Object_Torus_Selected" file_name="build/Object_Torus_Selected.png" preload="false" />
   <texture name="Object_Tree" file_name="build/Object_Tree.png" preload="false" />
+  <texture name="Object_Tree_Selected" file_name="build/Object_Tree_Selected.png" preload="false" />
   <texture name="Object_Tube" file_name="build/Object_Tube.png" preload="false" />
+  <texture name="Object_Tube_Selected" file_name="build/Object_Tube_Selected.png" preload="false" />
 
   <texture name="OptionsMenu_Disabled" file_name="icons/OptionsMenu_Disabled.png" preload="false" />
   <texture name="OptionsMenu_Off" file_name="icons/OptionsMenu_Off.png" preload="false" />
@@ -585,10 +600,15 @@ with the same filename but different name
            scale.left="4" scale.top="28" scale.right="60" scale.bottom="4" />
 
   <texture name="Tool_Create" file_name="build/Tool_Create.png" preload="false" />
+  <texture name="Tool_Create_Selected" file_name="build/Tool_Create_Selected.png" preload="false" />
   <texture name="Tool_Dozer" file_name="build/Tool_Dozer.png" preload="false" />
+  <texture name="Tool_Dozer_Selected" file_name="build/Tool_Dozer_Selected.png" preload="false" />
   <texture name="Tool_Face" file_name="build/Tool_Face.png" preload="false" />
+  <texture name="Tool_Face_Selected" file_name="build/Tool_Face_Selected.png" preload="false" />
   <texture name="Tool_Grab" file_name="build/Tool_Grab.png" preload="false" />
+  <texture name="Tool_Grab_Selected" file_name="build/Tool_Grab_Selected.png" preload="false" />
   <texture name="Tool_Zoom" file_name="build/Tool_Zoom.png" preload="false" />
+  <texture name="Tool_Zoom_Selected" file_name="build/Tool_Zoom_Selected.png" preload="false" />
 
   <texture name="Toolbar_Divider" file_name="containers/Toolbar_Divider.png" preload="false" />
   <texture name="Toolbar_Left_Off" file_name="containers/Toolbar_Left_Off.png" preload="false" scale.left="5" scale.bottom="4" scale.top="24" scale.right="30" />
diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
index f1aa5c27c16..5630dfbe8fa 100644
--- a/indra/newview/skins/default/xui/en/floater_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_tools.xml
@@ -70,7 +70,7 @@
      height="20"
      image_disabled="Tool_Zoom"
      image_disabled_selected="Tool_Zoom"
-     image_selected="Tool_Zoom"
+     image_selected="Tool_Zoom_Selected"
      image_unselected="Tool_Zoom"
      layout="topleft"
      left="10"
@@ -86,7 +86,7 @@
      height="20"
      image_disabled="Tool_Grab"
      image_disabled_selected="Tool_Grab"
-     image_selected="Tool_Grab"
+     image_selected="Tool_Grab_Selected"
      image_unselected="Tool_Grab"
      layout="topleft"
      left_pad="20"
@@ -102,7 +102,7 @@
      height="20"
      image_disabled="Tool_Face"
      image_disabled_selected="Tool_Face"
-     image_selected="Tool_Face"
+     image_selected="Tool_Face_Selected"
      image_unselected="Tool_Face"
      layout="topleft"
      left_pad="20"
@@ -118,7 +118,7 @@
      height="20"
      image_disabled="Tool_Create"
      image_disabled_selected="Tool_Create"
-     image_selected="Tool_Create"
+     image_selected="Tool_Create_Selected"
      image_unselected="Tool_Create"
      layout="topleft"
      left_pad="20"
@@ -134,7 +134,7 @@
      height="20"
      image_disabled="Tool_Dozer"
      image_disabled_selected="Tool_Dozer"
-     image_selected="Tool_Dozer"
+     image_selected="Tool_Dozer_Selected"
      image_unselected="Tool_Dozer"
      layout="topleft"
      left_pad="20"
@@ -344,7 +344,7 @@
      height="20"
      image_disabled="Object_Cube"
      image_disabled_selected="Object_Cube"
-     image_selected="Object_Cube"
+     image_selected="Object_Cube_Selected"
      image_unselected="Object_Cube"
      layout="topleft"
      left="4"
@@ -357,7 +357,7 @@
      height="20"
      image_disabled="Object_Prism"
      image_disabled_selected="Object_Prism"
-     image_selected="Object_Prism"
+     image_selected="Object_Prism_Selected"
      image_unselected="Object_Prism"
      layout="topleft"
      left_delta="26"
@@ -370,7 +370,7 @@
      height="20"
      image_disabled="Object_Pyramid"
      image_disabled_selected="Object_Pyramid"
-     image_selected="Object_Pyramid"
+     image_selected="Object_Pyramid_Selected"
      image_unselected="Object_Pyramid"
      layout="topleft"
      left_delta="26"
@@ -383,7 +383,7 @@
      height="20"
      image_disabled="Object_Tetrahedron"
      image_disabled_selected="Object_Tetrahedron"
-     image_selected="Object_Tetrahedron"
+     image_selected="Object_Tetrahedron_Selected"
      image_unselected="Object_Tetrahedron"
      layout="topleft"
      left_delta="26"
@@ -396,7 +396,7 @@
      height="20"
      image_disabled="Object_Cylinder"
      image_disabled_selected="Object_Cylinder"
-     image_selected="Object_Cylinder"
+     image_selected="Object_Cylinder_Selected"
      image_unselected="Object_Cylinder"
      layout="topleft"
      left_delta="26"
@@ -409,7 +409,7 @@
      height="20"
      image_disabled="Object_Hemi_Cylinder"
      image_disabled_selected="Object_Hemi_Cylinder"
-     image_selected="Object_Hemi_Cylinder"
+     image_selected="Object_Hemi_Cylinder_Selected"
      image_unselected="Object_Hemi_Cylinder"
      layout="topleft"
      left_delta="26"
@@ -422,7 +422,7 @@
      height="20"
      image_disabled="Object_Cone"
      image_disabled_selected="Object_Cone"
-     image_selected="Object_Cone"
+     image_selected="Object_Cone_Selected"
      image_unselected="Object_Cone"
      layout="topleft"
      left_delta="26"
@@ -435,7 +435,7 @@
      height="20"
      image_disabled="Object_Hemi_Cone"
      image_disabled_selected="Object_Hemi_Cone"
-     image_selected="Object_Hemi_Cone"
+     image_selected="Object_Hemi_Cone_Selected"
      image_unselected="Object_Hemi_Cone"
      layout="topleft"
      left_delta="26"
@@ -448,7 +448,7 @@
      height="20"
      image_disabled="Object_Sphere"
      image_disabled_selected="Object_Sphere"
-     image_selected="Object_Sphere"
+     image_selected="Object_Sphere_Selected"
      image_unselected="Object_Sphere"
      layout="topleft"
      left_delta="26"
@@ -461,7 +461,7 @@
      height="20"
      image_disabled="Object_Hemi_Sphere"
      image_disabled_selected="Object_Hemi_Sphere"
-     image_selected="Object_Hemi_Sphere"
+     image_selected="Object_Hemi_Sphere_Selected"
      image_unselected="Object_Hemi_Sphere"
      layout="topleft"
      left_delta="26"
@@ -474,7 +474,7 @@
      height="20"
      image_disabled="Object_Torus"
      image_disabled_selected="Object_Torus"
-     image_selected="Object_Torus"
+     image_selected="Object_Torus_Selected"
      image_unselected="Object_Torus"
      layout="topleft"
      left="4"
@@ -487,7 +487,7 @@
      height="20"
      image_disabled="Object_Tube"
      image_disabled_selected="Object_Tube"
-     image_selected="Object_Tube"
+     image_selected="Object_Tube_Selected"
      image_unselected="Object_Tube"
      layout="topleft"
      left_delta="26"
@@ -500,7 +500,7 @@
      height="20"
      image_disabled="Object_Ring"
      image_disabled_selected="Object_Ring"
-     image_selected="Object_Ring"
+     image_selected="Object_Ring_Selected"
      image_unselected="Object_Ring"
      layout="topleft"
      left_delta="26"
@@ -513,7 +513,7 @@
      height="20"
      image_disabled="Object_Tree"
      image_disabled_selected="Object_Tree"
-     image_selected="Object_Tree"
+     image_selected="Object_Tree_Selected"
      image_unselected="Object_Tree"
      layout="topleft"
      left_delta="26"
@@ -526,8 +526,9 @@
      height="20"
      image_disabled="Object_Grass"
      image_disabled_selected="Object_Grass"
-     image_selected="Object_Grass"
+     image_selected="Object_Grass_Selected"
      image_unselected="Object_Grass"
+     image_overlay_color="Red"
      layout="topleft"
      left_delta="26"
      name="ToolGrass"
-- 
GitLab


From e563a07659b74b2dca850834a44c3b92ff993b44 Mon Sep 17 00:00:00 2001
From: Lynx Linden <lynx@lindenlab.com>
Date: Tue, 2 Feb 2010 17:19:14 +0000
Subject: [PATCH 438/521] DEV-32540: Lots of object IM and SLurl improvements

- Don't let object names that are URLs override links to display the
  remote object inspector

- Don't hyperlink the object name in the remote object inspector

- Made the <nolink>...</nolink> regex more robust and made it support
  non-URLs between the tags, so that we don't get random <nolink> tags
  when trying to disable URLs in user-typed text.

- Improved the llurlentry unit test and added some more test cases.

- Hooked up another LLViewerMessage code path to objectim SLapps to
  pass down the owner and slurl information.

- Made a few LLUrlEntryBase methods be const methods, because they are

- Fixed a bug in the remote object inspector where it would never show
  the teleport URL.
---
 indra/llui/llurlentry.cpp               |  20 +-
 indra/llui/llurlentry.h                 |  13 +-
 indra/llui/llurlregistry.cpp            |   3 +-
 indra/llui/tests/llurlentry_test.cpp    | 305 +++++++++++++-----------
 indra/newview/llchathistory.cpp         |  19 +-
 indra/newview/llinspectremoteobject.cpp |   5 +-
 indra/newview/llviewermessage.cpp       |   5 +-
 7 files changed, 203 insertions(+), 167 deletions(-)

diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp
index 58148ad2aa0..b20de914a08 100644
--- a/indra/llui/llurlentry.cpp
+++ b/indra/llui/llurlentry.cpp
@@ -49,7 +49,7 @@ LLUrlEntryBase::~LLUrlEntryBase()
 {
 }
 
-std::string LLUrlEntryBase::getUrl(const std::string &string)
+std::string LLUrlEntryBase::getUrl(const std::string &string) const
 {
 	return escapeUrl(string);
 }
@@ -89,7 +89,7 @@ std::string LLUrlEntryBase::escapeUrl(const std::string &url) const
 	return LLURI::escape(url, no_escape_chars, true);
 }
 
-std::string LLUrlEntryBase::getLabelFromWikiLink(const std::string &url)
+std::string LLUrlEntryBase::getLabelFromWikiLink(const std::string &url) const
 {
 	// return the label part from [http://www.example.org Label]
 	const char *text = url.c_str();
@@ -105,7 +105,7 @@ std::string LLUrlEntryBase::getLabelFromWikiLink(const std::string &url)
 	return unescapeUrl(url.substr(start, url.size()-start-1));
 }
 
-std::string LLUrlEntryBase::getUrlFromWikiLink(const std::string &string)
+std::string LLUrlEntryBase::getUrlFromWikiLink(const std::string &string) const
 {
 	// return the url part from [http://www.example.org Label]
 	const char *text = string.c_str();
@@ -192,7 +192,7 @@ std::string LLUrlEntryHTTPLabel::getLabel(const std::string &url, const LLUrlLab
 	return getLabelFromWikiLink(url);
 }
 
-std::string LLUrlEntryHTTPLabel::getUrl(const std::string &string)
+std::string LLUrlEntryHTTPLabel::getUrl(const std::string &string) const
 {
 	return getUrlFromWikiLink(string);
 }
@@ -217,7 +217,7 @@ std::string LLUrlEntryHTTPNoProtocol::getLabel(const std::string &url, const LLU
 	return unescapeUrl(url);
 }
 
-std::string LLUrlEntryHTTPNoProtocol::getUrl(const std::string &string)
+std::string LLUrlEntryHTTPNoProtocol::getUrl(const std::string &string) const
 {
 	if (string.find("://") == std::string::npos)
 	{
@@ -597,7 +597,7 @@ std::string LLUrlEntrySLLabel::getLabel(const std::string &url, const LLUrlLabel
 	return getLabelFromWikiLink(url);
 }
 
-std::string LLUrlEntrySLLabel::getUrl(const std::string &string)
+std::string LLUrlEntrySLLabel::getUrl(const std::string &string) const
 {
 	return getUrlFromWikiLink(string);
 }
@@ -648,14 +648,18 @@ std::string LLUrlEntryWorldMap::getLocation(const std::string &url) const
 //
 LLUrlEntryNoLink::LLUrlEntryNoLink()
 {
-	mPattern = boost::regex("<nolink>[^[:space:]<]+</nolink>",
+	mPattern = boost::regex("<nolink>[^<]*</nolink>",
 							boost::regex::perl|boost::regex::icase);
 	mDisabledLink = true;
 }
 
-std::string LLUrlEntryNoLink::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
+std::string LLUrlEntryNoLink::getUrl(const std::string &url) const
 {
 	// return the text between the <nolink> and </nolink> tags
 	return url.substr(8, url.size()-8-9);
 }
 
+std::string LLUrlEntryNoLink::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
+{
+	return getUrl(url);
+}
diff --git a/indra/llui/llurlentry.h b/indra/llui/llurlentry.h
index 94455ac247d..3abada0f24e 100644
--- a/indra/llui/llurlentry.h
+++ b/indra/llui/llurlentry.h
@@ -71,7 +71,7 @@ class LLUrlEntryBase
 	boost::regex getPattern() const { return mPattern; }
 
 	/// Return the url from a string that matched the regex
-	virtual std::string getUrl(const std::string &string);
+	virtual std::string getUrl(const std::string &string) const;
 
 	/// Given a matched Url, return a label for the Url
 	virtual std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb) { return url; }
@@ -98,8 +98,8 @@ class LLUrlEntryBase
 	std::string getIDStringFromUrl(const std::string &url) const;
 	std::string escapeUrl(const std::string &url) const;
 	std::string unescapeUrl(const std::string &url) const;
-	std::string getLabelFromWikiLink(const std::string &url);
-	std::string getUrlFromWikiLink(const std::string &string);
+	std::string getLabelFromWikiLink(const std::string &url) const;
+	std::string getUrlFromWikiLink(const std::string &string) const;
 	void addObserver(const std::string &id, const std::string &url, const LLUrlLabelCallback &cb); 
 	void callObservers(const std::string &id, const std::string &label);
 
@@ -135,7 +135,7 @@ class LLUrlEntryHTTPLabel : public LLUrlEntryBase
 public:
 	LLUrlEntryHTTPLabel();
 	/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb);
-	/*virtual*/ std::string getUrl(const std::string &string);
+	/*virtual*/ std::string getUrl(const std::string &string) const;
 };
 
 ///
@@ -146,7 +146,7 @@ class LLUrlEntryHTTPNoProtocol : public LLUrlEntryBase
 public:
 	LLUrlEntryHTTPNoProtocol();
 	/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb);
-	/*virtual*/ std::string getUrl(const std::string &string);
+	/*virtual*/ std::string getUrl(const std::string &string) const;
 };
 
 ///
@@ -256,7 +256,7 @@ class LLUrlEntrySLLabel : public LLUrlEntryBase
 public:
 	LLUrlEntrySLLabel();
 	/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb);
-	/*virtual*/ std::string getUrl(const std::string &string);
+	/*virtual*/ std::string getUrl(const std::string &string) const;
 };
 
 ///
@@ -279,6 +279,7 @@ class LLUrlEntryNoLink : public LLUrlEntryBase
 public:
 	LLUrlEntryNoLink();
 	/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb);
+	/*virtual*/ std::string getUrl(const std::string &string) const;
 };
 
 #endif
diff --git a/indra/llui/llurlregistry.cpp b/indra/llui/llurlregistry.cpp
index 55eb8950e9c..722dbe41b35 100644
--- a/indra/llui/llurlregistry.cpp
+++ b/indra/llui/llurlregistry.cpp
@@ -132,7 +132,8 @@ static bool stringHasUrl(const std::string &text)
 			text.find(".com") != std::string::npos ||
 			text.find(".net") != std::string::npos ||
 			text.find(".edu") != std::string::npos ||
-			text.find(".org") != std::string::npos);
+			text.find(".org") != std::string::npos ||
+			text.find("<nolink>") != std::string::npos);
 }
 
 bool LLUrlRegistry::findUrl(const std::string &text, LLUrlMatch &match, const LLUrlLabelCallback &cb)
diff --git a/indra/llui/tests/llurlentry_test.cpp b/indra/llui/tests/llurlentry_test.cpp
index bc97cf3df2a..cbb303a0592 100644
--- a/indra/llui/tests/llurlentry_test.cpp
+++ b/indra/llui/tests/llurlentry_test.cpp
@@ -52,9 +52,10 @@ namespace
 
 namespace tut
 {
-	void testRegex(const std::string &testname, boost::regex regex,
+	void testRegex(const std::string &testname, LLUrlEntryBase &entry,
 				   const char *text, const std::string &expected)
 	{
+		boost::regex regex = entry.getPattern();
 		std::string url = "";
 		boost::cmatch result;
 		bool found = boost::regex_search(text, result, regex);
@@ -62,7 +63,7 @@ namespace tut
 		{
 			S32 start = static_cast<U32>(result[0].first - text);
 			S32 end = static_cast<U32>(result[0].second - text);
-			url = std::string(text+start, end-start);
+			url = entry.getUrl(std::string(text+start, end-start));
 		}
 		ensure_equals(testname, url, expected);
 	}
@@ -74,74 +75,73 @@ namespace tut
 		// test LLUrlEntryHTTP - standard http Urls
 		//
 		LLUrlEntryHTTP url;
-		boost::regex r = url.getPattern();
 
-		testRegex("no valid url", r,
+		testRegex("no valid url", url,
 				  "htp://slurl.com/",
 				  "");
 
-		testRegex("simple http (1)", r,
+		testRegex("simple http (1)", url,
 				  "http://slurl.com/",
 				  "http://slurl.com/");
 
-		testRegex("simple http (2)", r,
+		testRegex("simple http (2)", url,
 				  "http://slurl.com",
 				  "http://slurl.com");
 
-		testRegex("simple http (3)", r,
+		testRegex("simple http (3)", url,
 				  "http://slurl.com/about.php",
 				  "http://slurl.com/about.php");
 
-		testRegex("simple https", r,
+		testRegex("simple https", url,
 				  "https://slurl.com/about.php",
 				  "https://slurl.com/about.php");
 
-		testRegex("http in text (1)", r,
+		testRegex("http in text (1)", url,
 				  "XX http://slurl.com/ XX",
 				  "http://slurl.com/");
 
-		testRegex("http in text (2)", r,
+		testRegex("http in text (2)", url,
 				  "XX http://slurl.com/about.php XX",
 				  "http://slurl.com/about.php");
 
-		testRegex("https in text", r,
+		testRegex("https in text", url,
 				  "XX https://slurl.com/about.php XX",
 				  "https://slurl.com/about.php");
 
-		testRegex("two http urls", r,
+		testRegex("two http urls", url,
 				  "XX http://slurl.com/about.php http://secondlife.com/ XX",
 				  "http://slurl.com/about.php");
 
-		testRegex("http url with port and username", r,
+		testRegex("http url with port and username", url,
 				  "XX http://nobody@slurl.com:80/about.php http://secondlife.com/ XX",
 				  "http://nobody@slurl.com:80/about.php");
 
-		testRegex("http url with port, username, and query string", r,
+		testRegex("http url with port, username, and query string", url,
 				  "XX http://nobody@slurl.com:80/about.php?title=hi%20there http://secondlife.com/ XX",
 				  "http://nobody@slurl.com:80/about.php?title=hi%20there");
 
 		// note: terminating commas will be removed by LLUrlRegistry:findUrl()
-		testRegex("http url with commas in middle and terminating", r,
+		testRegex("http url with commas in middle and terminating", url,
 				  "XX http://slurl.com/?title=Hi,There, XX",
 				  "http://slurl.com/?title=Hi,There,");
 
 		// note: terminating periods will be removed by LLUrlRegistry:findUrl()
-		testRegex("http url with periods in middle and terminating", r,
+		testRegex("http url with periods in middle and terminating", url,
 				  "XX http://slurl.com/index.php. XX",
 				  "http://slurl.com/index.php.");
 
 		// DEV-19842: Closing parenthesis ")" breaks urls
-		testRegex("http url with brackets (1)", r,
+		testRegex("http url with brackets (1)", url,
 				  "XX http://en.wikipedia.org/wiki/JIRA_(software) XX",
 				  "http://en.wikipedia.org/wiki/JIRA_(software)");
 
 		// DEV-19842: Closing parenthesis ")" breaks urls
-		testRegex("http url with brackets (2)", r, 
+		testRegex("http url with brackets (2)", url, 
 				  "XX http://jira.secondlife.com/secure/attachment/17990/eggy+avs+in+1.21.0+(93713)+public+nightly.jpg XX",
 				  "http://jira.secondlife.com/secure/attachment/17990/eggy+avs+in+1.21.0+(93713)+public+nightly.jpg");
 
 		// DEV-10353: URLs in chat log terminated incorrectly when newline in chat
-		testRegex("http url with newlines", r,
+		testRegex("http url with newlines", url,
 				  "XX\nhttp://www.secondlife.com/\nXX",
 				  "http://www.secondlife.com/");
 	}
@@ -153,39 +153,38 @@ namespace tut
 		// test LLUrlEntryHTTPLabel - wiki-style http Urls with labels
 		//
 		LLUrlEntryHTTPLabel url;
-		boost::regex r = url.getPattern();
 
-		testRegex("invalid wiki url [1]", r,
+		testRegex("invalid wiki url [1]", url,
 				  "[http://www.example.org]",
 				  "");
 
-		testRegex("invalid wiki url [2]", r,
+		testRegex("invalid wiki url [2]", url,
 				  "[http://www.example.org",
 				  "");
 
-		testRegex("invalid wiki url [3]", r,
+		testRegex("invalid wiki url [3]", url,
 				  "[http://www.example.org Label",
 				  "");
 
-		testRegex("example.org with label (spaces)", r,
+		testRegex("example.org with label (spaces)", url,
 				  "[http://www.example.org  Text]",
-				  "[http://www.example.org  Text]");
+				  "http://www.example.org");
 
-		testRegex("example.org with label (tabs)", r,
+		testRegex("example.org with label (tabs)", url,
 				  "[http://www.example.org\t Text]",
-				  "[http://www.example.org\t Text]");
+				  "http://www.example.org");
 
-		testRegex("SL http URL with label", r,
+		testRegex("SL http URL with label", url,
 				  "[http://www.secondlife.com/ Second Life]",
-				  "[http://www.secondlife.com/ Second Life]");
+				  "http://www.secondlife.com/");
 
-		testRegex("SL https URL with label", r,
+		testRegex("SL https URL with label", url,
 				  "XXX [https://www.secondlife.com/ Second Life] YYY",
-				  "[https://www.secondlife.com/ Second Life]");
+				  "https://www.secondlife.com/");
 
-		testRegex("SL http URL with label", r,
+		testRegex("SL http URL with label", url,
 				  "[http://www.secondlife.com/?test=Hi%20There Second Life]",
-				  "[http://www.secondlife.com/?test=Hi%20There Second Life]");
+				  "http://www.secondlife.com/?test=Hi%20There");
 	}
 
 	template<> template<>
@@ -195,69 +194,68 @@ namespace tut
 		// test LLUrlEntrySLURL - second life URLs
 		//
 		LLUrlEntrySLURL url;
-		boost::regex r = url.getPattern();
 
-		testRegex("no valid slurl [1]", r,
+		testRegex("no valid slurl [1]", url,
 				  "htp://slurl.com/secondlife/Ahern/50/50/50/",
 				  "");
 
-		testRegex("no valid slurl [2]", r,
+		testRegex("no valid slurl [2]", url,
 				  "http://slurl.com/secondlife/",
 				  "");
 
-		testRegex("no valid slurl [3]", r,
+		testRegex("no valid slurl [3]", url,
 				  "hhtp://slurl.com/secondlife/Ahern/50/FOO/50/",
 				  "");
 
-		testRegex("Ahern (50,50,50) [1]", r,
+		testRegex("Ahern (50,50,50) [1]", url,
 				  "http://slurl.com/secondlife/Ahern/50/50/50/",
 				  "http://slurl.com/secondlife/Ahern/50/50/50/");
 
-		testRegex("Ahern (50,50,50) [2]", r,
+		testRegex("Ahern (50,50,50) [2]", url,
 				  "XXX http://slurl.com/secondlife/Ahern/50/50/50/ XXX",
 				  "http://slurl.com/secondlife/Ahern/50/50/50/");
 
-		testRegex("Ahern (50,50,50) [3]", r,
+		testRegex("Ahern (50,50,50) [3]", url,
 				  "XXX http://slurl.com/secondlife/Ahern/50/50/50 XXX",
 				  "http://slurl.com/secondlife/Ahern/50/50/50");
 
-		testRegex("Ahern (50,50,50) multicase", r,
+		testRegex("Ahern (50,50,50) multicase", url,
 				  "XXX http://SLUrl.com/SecondLife/Ahern/50/50/50/ XXX",
 				  "http://SLUrl.com/SecondLife/Ahern/50/50/50/");
 
-		testRegex("Ahern (50,50) [1]", r,
+		testRegex("Ahern (50,50) [1]", url,
 				  "XXX http://slurl.com/secondlife/Ahern/50/50/ XXX",
 				  "http://slurl.com/secondlife/Ahern/50/50/");
 
-		testRegex("Ahern (50,50) [2]", r,
+		testRegex("Ahern (50,50) [2]", url,
 				  "XXX http://slurl.com/secondlife/Ahern/50/50 XXX",
 				  "http://slurl.com/secondlife/Ahern/50/50");
 
-		testRegex("Ahern (50)", r,
+		testRegex("Ahern (50)", url,
 				  "XXX http://slurl.com/secondlife/Ahern/50 XXX",
 				  "http://slurl.com/secondlife/Ahern/50");
 
-		testRegex("Ahern", r,
+		testRegex("Ahern", url,
 				  "XXX http://slurl.com/secondlife/Ahern/ XXX",
 				  "http://slurl.com/secondlife/Ahern/");
 
-		testRegex("Ahern SLURL with title", r,
+		testRegex("Ahern SLURL with title", url,
 				  "XXX http://slurl.com/secondlife/Ahern/50/50/50/?title=YOUR%20TITLE%20HERE! XXX",
 				  "http://slurl.com/secondlife/Ahern/50/50/50/?title=YOUR%20TITLE%20HERE!");
 
-		testRegex("Ahern SLURL with msg", r,
+		testRegex("Ahern SLURL with msg", url,
 				  "XXX http://slurl.com/secondlife/Ahern/50/50/50/?msg=Your%20text%20here. XXX",
 				  "http://slurl.com/secondlife/Ahern/50/50/50/?msg=Your%20text%20here.");
 
 		// DEV-21577: In-world SLURLs containing "(" or ")" are not treated as a hyperlink in chat
-		testRegex("SLURL with brackets", r,
+		testRegex("SLURL with brackets", url,
 				  "XXX http://slurl.com/secondlife/Burning%20Life%20(Hyper)/27/210/30 XXX",
 				  "http://slurl.com/secondlife/Burning%20Life%20(Hyper)/27/210/30");
 
 		// DEV-35459: SLURLs and teleport Links not parsed properly
-		testRegex("SLURL with quote", r,
+		testRegex("SLURL with quote", url,
 				  "XXX http://slurl.com/secondlife/A'ksha%20Oasis/41/166/701 XXX",
-				  "http://slurl.com/secondlife/A'ksha%20Oasis/41/166/701");
+				  "http://slurl.com/secondlife/A%27ksha%20Oasis/41/166/701");
 	}
 
 	template<> template<>
@@ -267,25 +265,24 @@ namespace tut
 		// test LLUrlEntryAgent - secondlife://app/agent Urls
 		//
 		LLUrlEntryAgent url;
-		boost::regex r = url.getPattern();
 
-		testRegex("Invalid Agent Url", r,
+		testRegex("Invalid Agent Url", url,
 				  "secondlife:///app/agent/0e346d8b-4433-4d66-XXXX-fd37083abc4c/about",
 				  "");
 
-		testRegex("Agent Url ", r,
+		testRegex("Agent Url ", url,
 				  "secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about",
 				  "secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about");
 
-		testRegex("Agent Url in text", r,
+		testRegex("Agent Url in text", url,
 				  "XXX secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about XXX",
 				  "secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about");
 
-		testRegex("Agent Url multicase", r,
+		testRegex("Agent Url multicase", url,
 				  "XXX secondlife:///App/AGENT/0E346D8B-4433-4d66-a6b0-fd37083abc4c/About XXX",
 				  "secondlife:///App/AGENT/0E346D8B-4433-4d66-a6b0-fd37083abc4c/About");
 
-		testRegex("Agent Url alternate command", r,
+		testRegex("Agent Url alternate command", url,
 				  "XXX secondlife:///App/AGENT/0E346D8B-4433-4d66-a6b0-fd37083abc4c/foobar",
 				  "secondlife:///App/AGENT/0E346D8B-4433-4d66-a6b0-fd37083abc4c/foobar");
 
@@ -298,25 +295,24 @@ namespace tut
 		// test LLUrlEntryGroup - secondlife://app/group Urls
 		//
 		LLUrlEntryGroup url;
-		boost::regex r = url.getPattern();
 
-		testRegex("Invalid Group Url", r,
+		testRegex("Invalid Group Url", url,
 				  "secondlife:///app/group/00005ff3-4044-c79f-XXXX-fb28ae0df991/about",
 				  "");
 
-		testRegex("Group Url ", r,
+		testRegex("Group Url ", url,
 				  "secondlife:///app/group/00005ff3-4044-c79f-9de8-fb28ae0df991/about",
 				  "secondlife:///app/group/00005ff3-4044-c79f-9de8-fb28ae0df991/about");
 
-		testRegex("Group Url ", r,
+		testRegex("Group Url ", url,
 				  "secondlife:///app/group/00005ff3-4044-c79f-9de8-fb28ae0df991/inspect",
 				  "secondlife:///app/group/00005ff3-4044-c79f-9de8-fb28ae0df991/inspect");
 
-		testRegex("Group Url in text", r,
+		testRegex("Group Url in text", url,
 				  "XXX secondlife:///app/group/00005ff3-4044-c79f-9de8-fb28ae0df991/about XXX",
 				  "secondlife:///app/group/00005ff3-4044-c79f-9de8-fb28ae0df991/about");
 
-		testRegex("Group Url multicase", r,
+		testRegex("Group Url multicase", url,
 				  "XXX secondlife:///APP/Group/00005FF3-4044-c79f-9de8-fb28ae0df991/About XXX",
 				  "secondlife:///APP/Group/00005FF3-4044-c79f-9de8-fb28ae0df991/About");
 	}
@@ -328,45 +324,44 @@ namespace tut
 		// test LLUrlEntryPlace - secondlife://<location> URLs
 		//
 		LLUrlEntryPlace url;
-		boost::regex r = url.getPattern();
 
-		testRegex("no valid slurl [1]", r,
+		testRegex("no valid slurl [1]", url,
 				  "secondlife://Ahern/FOO/50/",
 				  "");
 
-		testRegex("Ahern (50,50,50) [1]", r,
+		testRegex("Ahern (50,50,50) [1]", url,
 				  "secondlife://Ahern/50/50/50/",
 				  "secondlife://Ahern/50/50/50/");
 
-		testRegex("Ahern (50,50,50) [2]", r,
+		testRegex("Ahern (50,50,50) [2]", url,
 				  "XXX secondlife://Ahern/50/50/50/ XXX",
 				  "secondlife://Ahern/50/50/50/");
 
-		testRegex("Ahern (50,50,50) [3]", r,
+		testRegex("Ahern (50,50,50) [3]", url,
 				  "XXX secondlife://Ahern/50/50/50 XXX",
 				  "secondlife://Ahern/50/50/50");
 
-		testRegex("Ahern (50,50,50) multicase", r,
+		testRegex("Ahern (50,50,50) multicase", url,
 				  "XXX SecondLife://Ahern/50/50/50/ XXX",
 				  "SecondLife://Ahern/50/50/50/");
 
-		testRegex("Ahern (50,50) [1]", r,
+		testRegex("Ahern (50,50) [1]", url,
 				  "XXX secondlife://Ahern/50/50/ XXX",
 				  "secondlife://Ahern/50/50/");
 
-		testRegex("Ahern (50,50) [2]", r,
+		testRegex("Ahern (50,50) [2]", url,
 				  "XXX secondlife://Ahern/50/50 XXX",
 				  "secondlife://Ahern/50/50");
 
 		// DEV-21577: In-world SLURLs containing "(" or ")" are not treated as a hyperlink in chat
-		testRegex("SLURL with brackets", r,
+		testRegex("SLURL with brackets", url,
 				  "XXX secondlife://Burning%20Life%20(Hyper)/27/210/30 XXX",
 				  "secondlife://Burning%20Life%20(Hyper)/27/210/30");
 
 		// DEV-35459: SLURLs and teleport Links not parsed properly
-		testRegex("SLURL with quote", r,
+		testRegex("SLURL with quote", url,
 				  "XXX secondlife://A'ksha%20Oasis/41/166/701 XXX",
-				  "secondlife://A'ksha%20Oasis/41/166/701");
+				  "secondlife://A%27ksha%20Oasis/41/166/701");
 	}
 
 	template<> template<>
@@ -376,21 +371,20 @@ namespace tut
 		// test LLUrlEntryParcel - secondlife://app/parcel Urls
 		//
 		LLUrlEntryParcel url;
-		boost::regex r = url.getPattern();
 
-		testRegex("Invalid Classified Url", r,
+		testRegex("Invalid Classified Url", url,
 				  "secondlife:///app/parcel/0000060e-4b39-e00b-XXXX-d98b1934e3a8/about",
 				  "");
 
-		testRegex("Classified Url ", r,
+		testRegex("Classified Url ", url,
 				  "secondlife:///app/parcel/0000060e-4b39-e00b-d0c3-d98b1934e3a8/about",
 				  "secondlife:///app/parcel/0000060e-4b39-e00b-d0c3-d98b1934e3a8/about");
 
-		testRegex("Classified Url in text", r,
+		testRegex("Classified Url in text", url,
 				  "XXX secondlife:///app/parcel/0000060e-4b39-e00b-d0c3-d98b1934e3a8/about XXX",
 				  "secondlife:///app/parcel/0000060e-4b39-e00b-d0c3-d98b1934e3a8/about");
 
-		testRegex("Classified Url multicase", r,
+		testRegex("Classified Url multicase", url,
 				  "XXX secondlife:///APP/Parcel/0000060e-4b39-e00b-d0c3-d98b1934e3a8/About XXX",
 				  "secondlife:///APP/Parcel/0000060e-4b39-e00b-d0c3-d98b1934e3a8/About");
 	}
@@ -401,73 +395,72 @@ namespace tut
 		// test LLUrlEntryTeleport - secondlife://app/teleport URLs
 		//
 		LLUrlEntryTeleport url;
-		boost::regex r = url.getPattern();
 
-		testRegex("no valid teleport [1]", r,
+		testRegex("no valid teleport [1]", url,
 				  "http://slurl.com/secondlife/Ahern/50/50/50/",
 				  "");
 
-		testRegex("no valid teleport [2]", r,
+		testRegex("no valid teleport [2]", url,
 				  "secondlife:///app/teleport/",
 				  "");
 
-		testRegex("no valid teleport [3]", r,
+		testRegex("no valid teleport [3]", url,
 				  "second-life:///app/teleport/Ahern/50/50/50/",
 				  "");
 
-		testRegex("no valid teleport [3]", r,
+		testRegex("no valid teleport [3]", url,
 				  "hhtp://slurl.com/secondlife/Ahern/50/FOO/50/",
 				  "");
 
-		testRegex("Ahern (50,50,50) [1]", r,
+		testRegex("Ahern (50,50,50) [1]", url,
 				  "secondlife:///app/teleport/Ahern/50/50/50/",
 				  "secondlife:///app/teleport/Ahern/50/50/50/");
 
-		testRegex("Ahern (50,50,50) [2]", r,
+		testRegex("Ahern (50,50,50) [2]", url,
 				  "XXX secondlife:///app/teleport/Ahern/50/50/50/ XXX",
 				  "secondlife:///app/teleport/Ahern/50/50/50/");
 
-		testRegex("Ahern (50,50,50) [3]", r,
+		testRegex("Ahern (50,50,50) [3]", url,
 				  "XXX secondlife:///app/teleport/Ahern/50/50/50 XXX",
 				  "secondlife:///app/teleport/Ahern/50/50/50");
 
-		testRegex("Ahern (50,50,50) multicase", r,
+		testRegex("Ahern (50,50,50) multicase", url,
 				  "XXX secondlife:///app/teleport/Ahern/50/50/50/ XXX",
 				  "secondlife:///app/teleport/Ahern/50/50/50/");
 
-		testRegex("Ahern (50,50) [1]", r,
+		testRegex("Ahern (50,50) [1]", url,
 				  "XXX secondlife:///app/teleport/Ahern/50/50/ XXX",
 				  "secondlife:///app/teleport/Ahern/50/50/");
 
-		testRegex("Ahern (50,50) [2]", r,
+		testRegex("Ahern (50,50) [2]", url,
 				  "XXX secondlife:///app/teleport/Ahern/50/50 XXX",
 				  "secondlife:///app/teleport/Ahern/50/50");
 
-		testRegex("Ahern (50)", r,
+		testRegex("Ahern (50)", url,
 				  "XXX secondlife:///app/teleport/Ahern/50 XXX",
 				  "secondlife:///app/teleport/Ahern/50");
 
-		testRegex("Ahern", r,
+		testRegex("Ahern", url,
 				  "XXX secondlife:///app/teleport/Ahern/ XXX",
 				  "secondlife:///app/teleport/Ahern/");
 
-		testRegex("Ahern teleport with title", r,
+		testRegex("Ahern teleport with title", url,
 				  "XXX secondlife:///app/teleport/Ahern/50/50/50/?title=YOUR%20TITLE%20HERE! XXX",
 				  "secondlife:///app/teleport/Ahern/50/50/50/?title=YOUR%20TITLE%20HERE!");
 
-		testRegex("Ahern teleport with msg", r,
+		testRegex("Ahern teleport with msg", url,
 				  "XXX secondlife:///app/teleport/Ahern/50/50/50/?msg=Your%20text%20here. XXX",
 				  "secondlife:///app/teleport/Ahern/50/50/50/?msg=Your%20text%20here.");
 
 		// DEV-21577: In-world SLURLs containing "(" or ")" are not treated as a hyperlink in chat
-		testRegex("Teleport with brackets", r,
+		testRegex("Teleport with brackets", url,
 				  "XXX secondlife:///app/teleport/Burning%20Life%20(Hyper)/27/210/30 XXX",
 				  "secondlife:///app/teleport/Burning%20Life%20(Hyper)/27/210/30");
 
 		// DEV-35459: SLURLs and teleport Links not parsed properly
-		testRegex("Teleport url with quote", r,
+		testRegex("Teleport url with quote", url,
 				  "XXX secondlife:///app/teleport/A'ksha%20Oasis/41/166/701 XXX",
-				  "secondlife:///app/teleport/A'ksha%20Oasis/41/166/701");
+				  "secondlife:///app/teleport/A%27ksha%20Oasis/41/166/701");
 	}
 
 	template<> template<>
@@ -477,33 +470,32 @@ namespace tut
 		// test LLUrlEntrySL - general secondlife:// URLs
 		//
 		LLUrlEntrySL url;
-		boost::regex r = url.getPattern();
 
-		testRegex("no valid slapp [1]", r,
+		testRegex("no valid slapp [1]", url,
 				  "http:///app/",
 				  "");
 
-		testRegex("valid slapp [1]", r,
+		testRegex("valid slapp [1]", url,
 				  "secondlife:///app/",
 				  "secondlife:///app/");
 
-		testRegex("valid slapp [2]", r,
+		testRegex("valid slapp [2]", url,
 				  "secondlife:///app/teleport/Ahern/50/50/50/",
 				  "secondlife:///app/teleport/Ahern/50/50/50/");
 
-		testRegex("valid slapp [3]", r,
+		testRegex("valid slapp [3]", url,
 				  "secondlife:///app/foo",
 				  "secondlife:///app/foo");
 
-		testRegex("valid slapp [4]", r,
+		testRegex("valid slapp [4]", url,
 				  "secondlife:///APP/foo?title=Hi%20There",
 				  "secondlife:///APP/foo?title=Hi%20There");
 
-		testRegex("valid slapp [5]", r,
+		testRegex("valid slapp [5]", url,
 				  "secondlife://host/app/",
 				  "secondlife://host/app/");
 
-		testRegex("valid slapp [6]", r,
+		testRegex("valid slapp [6]", url,
 				  "secondlife://host:8080/foo/bar",
 				  "secondlife://host:8080/foo/bar");
 	}
@@ -515,35 +507,34 @@ namespace tut
 		// test LLUrlEntrySLLabel - general secondlife:// URLs with labels
 		//
 		LLUrlEntrySLLabel url;
-		boost::regex r = url.getPattern();
 
-		testRegex("invalid wiki url [1]", r,
+		testRegex("invalid wiki url [1]", url,
 				  "[secondlife:///app/]",
 				  "");
 
-		testRegex("invalid wiki url [2]", r,
+		testRegex("invalid wiki url [2]", url,
 				  "[secondlife:///app/",
 				  "");
 
-		testRegex("invalid wiki url [3]", r,
+		testRegex("invalid wiki url [3]", url,
 				  "[secondlife:///app/ Label",
 				  "");
 
-		testRegex("agent slurl with label (spaces)", r,
+		testRegex("agent slurl with label (spaces)", url,
 				  "[secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about  Text]",
-				  "[secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about  Text]");
+				  "secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about");
 
-		testRegex("agent slurl with label (tabs)", r,
+		testRegex("agent slurl with label (tabs)", url,
 				  "[secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about\t Text]",
-				  "[secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about\t Text]");
+				  "secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about");
 
-		testRegex("agent slurl with label", r,
+		testRegex("agent slurl with label", url,
 				  "[secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about FirstName LastName]",
-				  "[secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about FirstName LastName]");
+				  "secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about");
 
-		testRegex("teleport slurl with label", r,
+		testRegex("teleport slurl with label", url,
 				  "XXX [secondlife:///app/teleport/Ahern/50/50/50/ Teleport to Ahern] YYY",
-				  "[secondlife:///app/teleport/Ahern/50/50/50/ Teleport to Ahern]");
+				  "secondlife:///app/teleport/Ahern/50/50/50/");
 	}
 
 	template<> template<>
@@ -553,70 +544,98 @@ namespace tut
 		// test LLUrlEntryHTTPNoProtocol - general URLs without a protocol
 		//
 		LLUrlEntryHTTPNoProtocol url;
-		boost::regex r = url.getPattern();
 
-		testRegex("naked .com URL", r,
+		testRegex("naked .com URL", url,
 				  "see google.com",
-				  "google.com");
+				  "http://google.com");
 
-		testRegex("naked .org URL", r,
+		testRegex("naked .org URL", url,
 				  "see en.wikipedia.org for details",
-				  "en.wikipedia.org");
+				  "http://en.wikipedia.org");
 
-		testRegex("naked .net URL", r,
+		testRegex("naked .net URL", url,
 				  "example.net",
-				  "example.net");
+				  "http://example.net");
 
-		testRegex("naked .edu URL (2 instances)", r,
+		testRegex("naked .edu URL (2 instances)", url,
 				  "MIT web site is at web.mit.edu and also www.mit.edu",
-				  "web.mit.edu");
+				  "http://web.mit.edu");
 
-		testRegex("don't match e-mail addresses", r,
+		testRegex("don't match e-mail addresses", url,
 				  "test@lindenlab.com",
 				  "");
 
-		testRegex(".com URL with path", r,
+		testRegex(".com URL with path", url,
 				  "see secondlife.com/status for grid status",
-				  "secondlife.com/status");
+				  "http://secondlife.com/status");
 
-		testRegex(".com URL with port", r,
+		testRegex(".com URL with port", url,
 				  "secondlife.com:80",
-				  "secondlife.com:80");
+				  "http://secondlife.com:80");
 
-		testRegex(".com URL with port and path", r,
+		testRegex(".com URL with port and path", url,
 				  "see secondlife.com:80/status",
-				  "secondlife.com:80/status");
+				  "http://secondlife.com:80/status");
 
-		testRegex("www.*.com URL with port and path", r,
+		testRegex("www.*.com URL with port and path", url,
 				  "see www.secondlife.com:80/status",
-				  "www.secondlife.com:80/status");
+				  "http://www.secondlife.com:80/status");
 
-		testRegex("invalid .com URL [1]", r,
+		testRegex("invalid .com URL [1]", url,
 				  "..com",
 				  "");
 
-		testRegex("invalid .com URL [2]", r,
+		testRegex("invalid .com URL [2]", url,
 				  "you.come",
 				  "");
 
-		testRegex("invalid .com URL [3]", r,
+		testRegex("invalid .com URL [3]", url,
 				  "recommended",
 				  "");
 
-		testRegex("invalid .edu URL", r,
+		testRegex("invalid .edu URL", url,
 				  "hi there scheduled maitenance has begun",
 				  "");
 
-		testRegex("invalid .net URL", r,
+		testRegex("invalid .net URL", url,
 				  "foo.netty",
 				  "");
 
-		testRegex("XML tags around URL [1]", r,
+		testRegex("XML tags around URL [1]", url,
 				  "<foo>secondlife.com</foo>",
-				  "secondlife.com");
+				  "http://secondlife.com");
 
-		testRegex("XML tags around URL [2]", r,
+		testRegex("XML tags around URL [2]", url,
 				  "<foo>secondlife.com/status?bar=1</foo>",
-				  "secondlife.com/status?bar=1");
+				  "http://secondlife.com/status?bar=1");
+	}
+
+	template<> template<>
+	void object::test<12>()
+	{
+		//
+		// test LLUrlEntryNoLink - turn off hyperlinking
+		//
+		LLUrlEntryNoLink url;
+
+		testRegex("<nolink> [1]", url,
+				  "<nolink>google.com</nolink>",
+				  "google.com");
+
+		testRegex("<nolink> [2]", url,
+				  "<nolink>google.com",
+				  "");
+
+		testRegex("<nolink> [3]", url,
+				  "google.com</nolink>",
+				  "");
+
+		testRegex("<nolink> [4]", url,
+				  "<nolink>Hello World</nolink>",
+				  "Hello World");
+
+		testRegex("<nolink> [5]", url,
+				  "<nolink>My Object</nolink>",
+				  "My Object");
 	}
 }
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index 581c210bd5c..7c22ac9e36d 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -579,19 +579,26 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
 				url += "?name=" + chat.mFromName;
 				url += "&owner=" + args["owner_id"].asString();
 
-				LLViewerRegion *region = LLWorld::getInstance()->getRegionFromPosAgent(chat.mPosAgent);
-				if (region)
+				std::string slurl = args["slurl"].asString();
+				if (slurl.empty())
 				{
-					S32 x, y, z;
-					LLSLURL::globalPosToXYZ(LLVector3d(chat.mPosAgent), x, y, z);
-					url += "&slurl=" + region->getName() + llformat("/%d/%d/%d", x, y, z);
+					LLViewerRegion *region = LLWorld::getInstance()->getRegionFromPosAgent(chat.mPosAgent);
+					if (region)
+					{
+						S32 x, y, z;
+						LLSLURL::globalPosToXYZ(LLVector3d(chat.mPosAgent), x, y, z);
+						slurl = region->getName() + llformat("/%d/%d/%d", x, y, z);
+					}
 				}
+				url += "&slurl=" + slurl;
 
 				// set the link for the object name to be the objectim SLapp
+				// (don't let object names with hyperlinks override our objectim Url)
 				LLStyle::Params link_params(style_params);
 				link_params.color.control = "HTMLLinkColor";
 				link_params.link_href = url;
-				mEditor->appendText(chat.mFromName + delimiter, false, link_params);
+				mEditor->appendText("<nolink>" + chat.mFromName + "</nolink>"  + delimiter,
+									false, link_params);
 			}
 			else if ( chat.mFromName != SYSTEM_FROM && chat.mFromID.notNull() )
 			{
diff --git a/indra/newview/llinspectremoteobject.cpp b/indra/newview/llinspectremoteobject.cpp
index 898f1cd9acd..66e4a1bf660 100644
--- a/indra/newview/llinspectremoteobject.cpp
+++ b/indra/newview/llinspectremoteobject.cpp
@@ -167,7 +167,8 @@ void LLInspectRemoteObject::nameCallback(const LLUUID& id, const std::string& fi
 void LLInspectRemoteObject::update()
 {
 	// show the object name as the inspector's title
-	getChild<LLUICtrl>("object_name")->setValue(mName);
+	// (don't hyperlink URLs in object names)
+	getChild<LLUICtrl>("object_name")->setValue("<nolink>" + mName + "</nolink>");
 
 	// show the object's owner - click it to show profile
 	std::string owner = mOwner;
@@ -192,7 +193,7 @@ void LLInspectRemoteObject::update()
 	std::string url;
 	if (! mSLurl.empty())
 	{
-		std::string url = "secondlife:///app/teleport/" + mSLurl;
+		url = "secondlife:///app/teleport/" + mSLurl;
 	}
 	getChild<LLUICtrl>("object_slurl")->setValue(url);
 
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index b0952dd698f..aa9d0f469d3 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -2189,7 +2189,10 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 			LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
 			if(nearby_chat)
 			{
-				nearby_chat->addMessage(chat);
+				LLSD args;
+				args["owner_id"] = from_id;
+				args["slurl"] = location;
+				nearby_chat->addMessage(chat, true, args);
 			}
 
 
-- 
GitLab


From b6bc7d94f244597f3109f2332aa395f8b3623048 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Tue, 2 Feb 2010 17:22:47 +0000
Subject: [PATCH 439/521] trivial comment fix while I was there!

---
 indra/newview/llstartup.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index ce5da8bb24f..522adc05ced 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -906,7 +906,7 @@ bool idle_startup()
 		LLFile::mkdir(gDirUtilp->getPerAccountChatLogsDir());
 
 
-		//good as place as any to create user windlight directories
+		//good a place as any to create user windlight directories
 		std::string user_windlight_path_name(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight", ""));
 		LLFile::mkdir(user_windlight_path_name.c_str());		
 
-- 
GitLab


From 8920a18aff91b7ff2db63be5f3cb8110b83f2ebf Mon Sep 17 00:00:00 2001
From: Chuck Linden <chuck@lindenlab.com>
Date: Tue, 2 Feb 2010 12:32:38 -0500
Subject: [PATCH 440/521] Updated filter text.
 http://jira.secondlife.com/browse/EXT-4844

---
 indra/newview/skins/default/xui/en/panel_places.xml | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml
index 9bfd8b91d8b..c4e4b9aa9b0 100644
--- a/indra/newview/skins/default/xui/en/panel_places.xml
+++ b/indra/newview/skins/default/xui/en/panel_places.xml
@@ -17,12 +17,13 @@ background_visible="true"
      name="teleport_history_tab_title"
      value="TELEPORT HISTORY" />
     <filter_editor
+     text_pad_left="14"
      follows="left|top|right"
-     font="SansSerif"
+     font="SansSerifSmall"
      height="23"
      layout="topleft"
      left="15"
-     label="Filter Places"
+     label="Filter My Places"
      max_length="300"
      name="Filter"
      top="3"
-- 
GitLab


From f0a18ec0a6cf555a44d0a81a8815445dc1d0848c Mon Sep 17 00:00:00 2001
From: Andrew Dyukov <adyukov@productengine.com>
Date: Tue, 2 Feb 2010 20:55:45 +0200
Subject: [PATCH 441/521] Fixed normal bug EXT-4758 ("Call" button in IM window
 is disabled after call from parcel with disabled voice)

- One more voice client state is now treated by voiceWorking() as valid.

--HG--
branch : product-engine
---
 indra/newview/llvoiceclient.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index c062dd1732d..7c6ba33553e 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -5981,7 +5981,7 @@ bool LLVoiceClient::voiceEnabled()
 
 bool LLVoiceClient::voiceWorking()
 {
-	return (stateLoggedIn <= mState) && (mState <= stateLeavingSession);
+	return (stateLoggedIn <= mState) && (mState <= stateSessionTerminated);
 }
 
 void LLVoiceClient::setLipSyncEnabled(BOOL enabled)
-- 
GitLab


From 27c08cec255bddb8a350b0d56ad419c6a8c18c24 Mon Sep 17 00:00:00 2001
From: Denis Serdjuk <dserduk@productengine.com>
Date: Tue, 2 Feb 2010 21:03:04 +0200
Subject: [PATCH 442/521] fixed bug EXT-4241   	 Back button in nav bar should
 remain depressed during click-hold Cause: mouse capture was reset by the
 popup menu. It broke  mouse event workflow and made invalid changing of
 pressed state. Solution: Workaround with mouseUp callback of gMenuHolder has
 been implemented to handle mouseUp event and to change pressed state of the
 buttons.

--HG--
branch : product-engine
---
 indra/newview/llnavigationbar.cpp | 56 +++++++++++++++++++++----------
 indra/newview/llnavigationbar.h   |  6 ++--
 2 files changed, 43 insertions(+), 19 deletions(-)

diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp
index 71dc0f90113..fdecda86e6a 100644
--- a/indra/newview/llnavigationbar.cpp
+++ b/indra/newview/llnavigationbar.cpp
@@ -224,20 +224,13 @@ BOOL LLNavigationBar::postBuild()
 
 	fillSearchComboBox();
 
-	if (!mBtnBack || !mBtnForward || !mBtnHome ||
-		!mCmbLocation || !mSearchComboBox)
-	{
-		llwarns << "Malformed navigation bar" << llendl;
-		return FALSE;
-	}
-	
 	mBtnBack->setEnabled(FALSE);
 	mBtnBack->setClickedCallback(boost::bind(&LLNavigationBar::onBackButtonClicked, this));
-	mBtnBack->setHeldDownCallback(boost::bind(&LLNavigationBar::onBackOrForwardButtonHeldDown, this, _2));
+	mBtnBack->setHeldDownCallback(boost::bind(&LLNavigationBar::onBackOrForwardButtonHeldDown, this,_1, _2));
 
 	mBtnForward->setEnabled(FALSE);
 	mBtnForward->setClickedCallback(boost::bind(&LLNavigationBar::onForwardButtonClicked, this));
-	mBtnForward->setHeldDownCallback(boost::bind(&LLNavigationBar::onBackOrForwardButtonHeldDown, this, _2));
+	mBtnForward->setHeldDownCallback(boost::bind(&LLNavigationBar::onBackOrForwardButtonHeldDown, this, _1, _2));
 
 	mBtnHome->setClickedCallback(boost::bind(&LLNavigationBar::onHomeButtonClicked, this));
 
@@ -332,10 +325,10 @@ void LLNavigationBar::onBackButtonClicked()
 	LLTeleportHistory::getInstance()->goBack();
 }
 
-void LLNavigationBar::onBackOrForwardButtonHeldDown(const LLSD& param)
+void LLNavigationBar::onBackOrForwardButtonHeldDown(LLUICtrl* ctrl, const LLSD& param)
 {
 	if (param["count"].asInteger() == 0)
-		showTeleportHistoryMenu();
+		showTeleportHistoryMenu(ctrl);
 }
 
 void LLNavigationBar::onForwardButtonClicked()
@@ -571,7 +564,7 @@ void LLNavigationBar::onRegionNameResponse(
 	gAgent.teleportViaLocation(global_pos);
 }
 
-void	LLNavigationBar::showTeleportHistoryMenu()
+void	LLNavigationBar::showTeleportHistoryMenu(LLUICtrl* btn_ctrl)
 {
 	// Don't show the popup if teleport history is empty.
 	if (LLTeleportHistory::getInstance()->isEmpty())
@@ -585,14 +578,43 @@ void	LLNavigationBar::showTeleportHistoryMenu()
 	if (mTeleportHistoryMenu == NULL)
 		return;
 	
-	// *TODO: why to draw/update anything before showing the menu?
-	mTeleportHistoryMenu->buildDrawLabels();
 	mTeleportHistoryMenu->updateParent(LLMenuGL::sMenuContainer);
 	const S32 MENU_SPAWN_PAD = -1;
-	LLMenuGL::showPopup(mBtnBack, mTeleportHistoryMenu, 0, MENU_SPAWN_PAD);
-
+	LLMenuGL::showPopup(btn_ctrl, mTeleportHistoryMenu, 0, MENU_SPAWN_PAD);
+	LLButton* nav_button = dynamic_cast<LLButton*>(btn_ctrl);
+	if(nav_button)
+	{
+		if(mHistoryMenuConnection.connected())
+		{
+			LL_WARNS("Navgationbar")<<"mHistoryMenuConnection should be disconnected at this moment."<<LL_ENDL;
+			mHistoryMenuConnection.disconnect();
+		}
+		mHistoryMenuConnection = gMenuHolder->setMouseUpCallback(boost::bind(&LLNavigationBar::onNavigationButtonHeldUp, this, nav_button));
+		// pressed state will be update after mouseUp in  onBackOrForwardButtonHeldUp();
+		nav_button->setForcePressedState(true);
+	}
 	// *HACK pass the mouse capturing to the drop-down menu
-	gFocusMgr.setMouseCapture( NULL );
+	// it need to let menu handle mouseup event
+	gFocusMgr.setMouseCapture(gMenuHolder);
+}
+/**
+ * Taking into account the HACK above,  this callback-function is responsible for correct handling of mouseUp event in case of holding-down the navigation buttons..
+ * We need to process this case separately to update a pressed state of navigation button.
+ */
+void LLNavigationBar::onNavigationButtonHeldUp(LLButton* nav_button)
+{
+	if(nav_button)
+	{
+		nav_button->setForcePressedState(false);
+	}
+	if(gFocusMgr.getMouseCapture() == gMenuHolder)
+	{
+		// we had passed mouseCapture in  showTeleportHistoryMenu()
+		// now we MUST release mouseCapture to continue a proper mouseevent workflow. 
+		gFocusMgr.setMouseCapture(NULL);
+	}
+	//gMenuHolder is using to display bunch of menus. Disconnect signal to avoid unnecessary calls.    
+	mHistoryMenuConnection.disconnect();
 }
 
 void LLNavigationBar::handleLoginComplete()
diff --git a/indra/newview/llnavigationbar.h b/indra/newview/llnavigationbar.h
index 9d0687f193d..55bbfa164a6 100644
--- a/indra/newview/llnavigationbar.h
+++ b/indra/newview/llnavigationbar.h
@@ -70,13 +70,14 @@ class LLNavigationBar
 private:
 
 	void rebuildTeleportHistoryMenu();
-	void showTeleportHistoryMenu();
+	void showTeleportHistoryMenu(LLUICtrl* btn_ctrl);
 	void invokeSearch(std::string search_text);
 	// callbacks
 	void onTeleportHistoryMenuItemClicked(const LLSD& userdata);
 	void onTeleportHistoryChanged();
 	void onBackButtonClicked();
-	void onBackOrForwardButtonHeldDown(const LLSD& param);
+	void onBackOrForwardButtonHeldDown(LLUICtrl* ctrl, const LLSD& param);
+	void onNavigationButtonHeldUp(LLButton* nav_button);
 	void onForwardButtonClicked();
 	void onHomeButtonClicked();
 	void onLocationSelection();
@@ -103,6 +104,7 @@ class LLNavigationBar
 	LLRect						mDefaultFpRect;
 	boost::signals2::connection	mTeleportFailedConnection;
 	boost::signals2::connection	mTeleportFinishConnection;
+	boost::signals2::connection	mHistoryMenuConnection;
 	bool						mPurgeTPHistoryItems;
 	// if true, save location to location history when teleport finishes
 	bool						mSaveToLocationHistory;
-- 
GitLab


From df7292b716168b464b957731325b76d2e952f3aa Mon Sep 17 00:00:00 2001
From: Denis Serdjuk <dserduk@productengine.com>
Date: Tue, 2 Feb 2010 21:38:36 +0200
Subject: [PATCH 443/521] fixed low  Bug   	 EXT-4242   	 History
 Dropdown should appear immediately when click-dragging downward from back
 button LLPullButton has been implemented to handle such behavior

--HG--
branch : product-engine
---
 indra/newview/llnavigationbar.cpp             | 81 ++++++++++++++++++-
 indra/newview/llnavigationbar.h               | 53 +++++++++++-
 .../default/xui/en/panel_navigation_bar.xml   |  6 +-
 3 files changed, 132 insertions(+), 8 deletions(-)

diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp
index fdecda86e6a..59708fcfb52 100644
--- a/indra/newview/llnavigationbar.cpp
+++ b/indra/newview/llnavigationbar.cpp
@@ -34,6 +34,8 @@
 
 #include "llnavigationbar.h"
 
+#include "v2math.h"
+
 #include "llregionhandle.h"
 
 #include "llfloaterreg.h"
@@ -181,6 +183,77 @@ void LLTeleportHistoryMenuItem::onMouseLeave(S32 x, S32 y, MASK mask)
 	mArrowIcon->setVisible(FALSE);
 }
 
+static LLDefaultChildRegistry::Register<LLPullButton> menu_button("pull_button");
+
+LLPullButton::LLPullButton(const LLPullButton::Params& params):
+		LLButton(params)
+	,	mClickDraggingSignal(NULL)
+{
+	setDirectionFromName(params.direction);
+}
+boost::signals2::connection LLPullButton::setClickDraggingCallback( const commit_signal_t::slot_type& cb ) 
+{ 
+	if (!mClickDraggingSignal) mClickDraggingSignal = new commit_signal_t();
+	return mClickDraggingSignal->connect(cb); 
+}
+
+/*virtual*/
+void LLPullButton::onMouseLeave(S32 x, S32 y, MASK mask)
+{
+	LLButton::onMouseLeave(x, y, mask);
+	
+	if(mMouseDownTimer.getStarted() )
+	{
+		const LLVector2 cursor_direction = LLVector2(F32(x),F32(y)) - mLastMouseDown;
+		if( angle_between(mDraggingDirection, cursor_direction) < 0.5 * F_PI_BY_TWO)//call if angle < pi/4 
+			{
+				if(mClickDraggingSignal)
+				{
+					(*mClickDraggingSignal)(this, LLSD());
+				}
+			}
+	}
+
+}
+
+/*virtual*/
+BOOL LLPullButton::handleMouseDown(S32 x, S32 y, MASK mask)
+	{
+	BOOL handled = LLButton::handleMouseDown(x,y, mask);
+	if(handled)
+	{
+		mLastMouseDown.set(F32(x), F32(y));
+	}
+	return handled;
+}
+
+/*virtual*/
+BOOL LLPullButton::handleMouseUp(S32 x, S32 y, MASK mask)
+{
+	mLastMouseDown.clear();
+	return LLButton::handleMouseUp(x, y, mask);
+}
+
+void LLPullButton::setDirectionFromName(const std::string& name)
+{
+	if (name == "left")
+	{
+		mDraggingDirection.set(F32(-1), F32(0)); 
+	}
+	else if (name == "right")
+	{
+		mDraggingDirection.set(F32(0), F32(1)); 
+	}
+	else if (name == "down")
+	{
+		 mDraggingDirection.set(F32(0), F32(-1)); 
+	}
+	else if (name == "up")
+	{
+		 mDraggingDirection.set(F32(0), F32(1)); 
+	}
+}
+
 //-- LNavigationBar ----------------------------------------------------------
 
 /*
@@ -215,8 +288,8 @@ LLNavigationBar::~LLNavigationBar()
 
 BOOL LLNavigationBar::postBuild()
 {
-	mBtnBack	= getChild<LLButton>("back_btn");
-	mBtnForward	= getChild<LLButton>("forward_btn");
+	mBtnBack	= getChild<LLPullButton>("back_btn");
+	mBtnForward	= getChild<LLPullButton>("forward_btn");
 	mBtnHome	= getChild<LLButton>("home_btn");
 	
 	mCmbLocation= getChild<LLLocationInputCtrl>("location_combo"); 
@@ -227,10 +300,12 @@ BOOL LLNavigationBar::postBuild()
 	mBtnBack->setEnabled(FALSE);
 	mBtnBack->setClickedCallback(boost::bind(&LLNavigationBar::onBackButtonClicked, this));
 	mBtnBack->setHeldDownCallback(boost::bind(&LLNavigationBar::onBackOrForwardButtonHeldDown, this,_1, _2));
-
+	mBtnBack->setClickDraggingCallback(boost::bind(&LLNavigationBar::showTeleportHistoryMenu, this,_1));
+	
 	mBtnForward->setEnabled(FALSE);
 	mBtnForward->setClickedCallback(boost::bind(&LLNavigationBar::onForwardButtonClicked, this));
 	mBtnForward->setHeldDownCallback(boost::bind(&LLNavigationBar::onBackOrForwardButtonHeldDown, this, _1, _2));
+	mBtnForward->setClickDraggingCallback(boost::bind(&LLNavigationBar::showTeleportHistoryMenu, this,_1));
 
 	mBtnHome->setClickedCallback(boost::bind(&LLNavigationBar::onHomeButtonClicked, this));
 
diff --git a/indra/newview/llnavigationbar.h b/indra/newview/llnavigationbar.h
index 55bbfa164a6..9d0abc7a3a7 100644
--- a/indra/newview/llnavigationbar.h
+++ b/indra/newview/llnavigationbar.h
@@ -34,13 +34,60 @@
 #define LL_LLNAVIGATIONBAR_H
 
 #include "llpanel.h"
+#include "llbutton.h"
 
-class LLButton;
 class LLLocationInputCtrl;
 class LLMenuGL;
 class LLSearchEditor;
 class LLSearchComboBox;
 
+/**
+ * This button is able to handle click-dragging mouse event.
+ * It has appropriated signal for this event.
+ * Dragging direction can be set from xml by attribute called 'direction'
+ * 
+ * *TODO: move to llui?  
+ */
+
+class LLPullButton : public LLButton
+{
+	LOG_CLASS(LLPullButton);
+	
+public:
+	
+	struct Params : public LLInitParam::Block<Params, LLButton::Params>
+	{
+		Optional<std::string>	direction; // left, right, down, up
+		
+		Params()
+		:	direction("direction","down")
+		{}
+	};
+	
+	/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
+	
+	/*virtual*/ BOOL handleMouseUp(S32 x, S32 y, MASK mask);
+	
+	/*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask);
+
+	boost::signals2::connection setClickDraggingCallback( const commit_signal_t::slot_type& cb );
+	
+	/* virtual*/ ~LLPullButton()
+	{
+		delete mClickDraggingSignal;
+	}
+	
+protected:
+	friend class LLUICtrlFactory;
+	// convert string name into direction vector
+	void setDirectionFromName(const std::string& name);
+	LLPullButton(const LLPullButton::Params& params);
+	
+	commit_signal_t* mClickDraggingSignal;	
+	LLVector2 mLastMouseDown;
+	LLVector2 mDraggingDirection;
+};
+
 /**
  * Web browser-like navigation bar.
  */ 
@@ -95,8 +142,8 @@ class LLNavigationBar
 	void fillSearchComboBox();
 
 	LLMenuGL*					mTeleportHistoryMenu;
-	LLButton*					mBtnBack;
-	LLButton*					mBtnForward;
+	LLPullButton*				mBtnBack;
+	LLPullButton*				mBtnForward;
 	LLButton*					mBtnHome;
 	LLSearchComboBox*			mSearchComboBox;
 	LLLocationInputCtrl*		mCmbLocation;
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 5fe5db892a9..02eddc92122 100644
--- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
@@ -39,8 +39,9 @@
 	 layout="topleft"
 	 name="navigation_panel"
 	 width="600">
-	     <button
+	     <pull_button
 	     follows="left|top"
+	     direction="down"
 	     height="23"
 	     image_overlay="Arrow_Left_Off"
 	     layout="topleft"
@@ -49,8 +50,9 @@
 	     tool_tip="Go back to previous location"
 	     top="2"
 	     width="31" />
-	    <button
+	    <pull_button
 	     follows="left|top"
+	     direction="down"
 	     height="23"
 	     image_overlay="Arrow_Right_Off"
 	     layout="topleft"
-- 
GitLab


From 347daac67daddad37f0722ea2ea9b717e96c10ab Mon Sep 17 00:00:00 2001
From: Eugene Mutavchi <emutavchi@productengine.com>
Date: Tue, 2 Feb 2010 21:53:52 +0200
Subject: [PATCH 444/521] Fixed normal bug EXT-4105 ([BSI] group names are not
 able to be copied from side panel) - changed LLTextBoxEx class to inherit the
 LLTextEditor behavior

--HG--
branch : product-engine
---
 indra/newview/llexpandabletextbox.cpp                 | 11 ++++++++---
 indra/newview/llexpandabletextbox.h                   | 11 ++++++++---
 .../skins/default/xui/en/widgets/expandable_text.xml  |  9 ++++++---
 3 files changed, 22 insertions(+), 9 deletions(-)

diff --git a/indra/newview/llexpandabletextbox.cpp b/indra/newview/llexpandabletextbox.cpp
index e0a9e080fa0..3818ee6f786 100644
--- a/indra/newview/llexpandabletextbox.cpp
+++ b/indra/newview/llexpandabletextbox.cpp
@@ -116,7 +116,7 @@ LLExpandableTextBox::LLTextBoxEx::Params::Params()
 }
 
 LLExpandableTextBox::LLTextBoxEx::LLTextBoxEx(const Params& p)
-:	LLTextBox(p),
+:	LLTextEditor(p),
 	mExpanderLabel(p.more_label),
 	mExpanderVisible(false)
 {
@@ -127,7 +127,7 @@ LLExpandableTextBox::LLTextBoxEx::LLTextBoxEx(const Params& p)
 void LLExpandableTextBox::LLTextBoxEx::reshape(S32 width, S32 height, BOOL called_from_parent)
 {
 	hideExpandText();
-	LLTextBox::reshape(width, height, called_from_parent);
+	LLTextEditor::reshape(width, height, called_from_parent);
 
 	if (getTextPixelHeight() > getRect().getHeight())
 	{
@@ -140,7 +140,7 @@ void LLExpandableTextBox::LLTextBoxEx::setText(const LLStringExplicit& text,cons
 	// LLTextBox::setText will obliterate the expander segment, so make sure
 	// we generate it again by clearing mExpanderVisible
 	mExpanderVisible = false;
-	LLTextBox::setText(text, input_params);
+	LLTextEditor::setText(text, input_params);
 
 	// text contents have changed, segments are cleared out
 	// so hide the expander and determine if we need it
@@ -201,6 +201,11 @@ S32 LLExpandableTextBox::LLTextBoxEx::getVerticalTextDelta()
 	return text_height - textbox_height;
 }
 
+S32 LLExpandableTextBox::LLTextBoxEx::getTextPixelHeight()
+{
+	return getTextBoundingRect().getHeight();
+}
+
 //////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/llexpandabletextbox.h b/indra/newview/llexpandabletextbox.h
index 2b4f9e527cd..58316ddb984 100644
--- a/indra/newview/llexpandabletextbox.h
+++ b/indra/newview/llexpandabletextbox.h
@@ -33,7 +33,7 @@
 #ifndef LL_LLEXPANDABLETEXTBOX_H
 #define LL_LLEXPANDABLETEXTBOX_H
 
-#include "lltextbox.h"
+#include "lltexteditor.h"
 #include "llscrollcontainer.h"
 
 /**
@@ -49,10 +49,10 @@ class LLExpandableTextBox : public LLUICtrl
 	 * Extended text box. "More" link will appear at end of text if 
 	 * text is too long to fit into text box size.
 	 */
-	class LLTextBoxEx : public LLTextBox
+	class LLTextBoxEx : public LLTextEditor
 	{
 	public:
-		struct Params :	public LLInitParam::Block<Params, LLTextBox::Params>
+		struct Params :	public LLInitParam::Block<Params, LLTextEditor::Params>
 		{
 			Mandatory<std::string> more_label;
 			Params();
@@ -69,6 +69,11 @@ class LLExpandableTextBox : public LLUICtrl
 		 */
 		virtual S32 getVerticalTextDelta();
 
+		/**
+		 * Returns the height of text rect.
+		 */
+		S32 getTextPixelHeight();
+
 		/**
 		 * Shows "More" link
 		 */
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 f59c46b2f5c..d9b6387f0d9 100644
--- a/indra/newview/skins/default/xui/en/widgets/expandable_text.xml
+++ b/indra/newview/skins/default/xui/en/widgets/expandable_text.xml
@@ -2,10 +2,13 @@
 <expandable_text
  max_height="300" >
  <textbox
-   more_label="More" 
+  allow_html="true"
+  allow_scroll="true"
+  bg_visible="false"
+  more_label="More" 
   follows="left|top|right"
   name="text"
-   allow_scroll="true" 
+  read_only="true"
   use_ellipses="true"
   word_wrap="true"
   tab_stop="true"
@@ -16,4 +19,4 @@
   name="scroll"
   follows="all"
  />
-</expandable_text>
\ No newline at end of file
+</expandable_text>
-- 
GitLab


From 047176cd6f4be8738e3e33d1fae3d612680414ce Mon Sep 17 00:00:00 2001
From: Eugene Mutavchi <emutavchi@productengine.com>
Date: Tue, 2 Feb 2010 21:53:52 +0200
Subject: [PATCH 445/521] Fixed normal bug EXT-4115 (Cannot copy/paste from
 another resident's profile)

--HG--
branch : product-engine
---
 .../default/xui/en/panel_edit_profile.xml     |  9 +++++++--
 .../skins/default/xui/en/panel_my_profile.xml | 16 +++++++++++++---
 .../skins/default/xui/en/panel_profile.xml    | 19 ++++++++++++++-----
 3 files changed, 34 insertions(+), 10 deletions(-)

diff --git a/indra/newview/skins/default/xui/en/panel_edit_profile.xml b/indra/newview/skins/default/xui/en/panel_edit_profile.xml
index 8f7750628ed..2a2199fc870 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_profile.xml
@@ -255,13 +255,18 @@
          top_pad="10"
          value="My Account:"
          width="100" />
-        <text
+        <text_editor
+         allow_scroll="false"
+         bg_visible="false"
          follows="left|top|right"
-         height="15"
+         h_pad="0"
+         height="28"
          layout="topleft"
          left="10"
          name="acc_status_text"
+         read_only="true"
          top_pad="5"
+         v_pad="0"
          value="Resident. No payment info on file."
          width="200"
          word_wrap="true" />
diff --git a/indra/newview/skins/default/xui/en/panel_my_profile.xml b/indra/newview/skins/default/xui/en/panel_my_profile.xml
index a0734d3dca9..d519569543e 100644
--- a/indra/newview/skins/default/xui/en/panel_my_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_my_profile.xml
@@ -206,13 +206,18 @@
              top_pad="10"
              value="Resident Since:"
              width="300" />
-            <text
+            <text_editor
+             allow_scroll="false"
+             bg_visible="false"
              follows="left|top"
+             h_pad="0"
              height="15"
              layout="topleft"
              left="10"
              name="register_date"
+             read_only="true"
              translate="false"
+             v_pad="0"
              value="05/31/2376"
              width="300"
              word_wrap="true" />
@@ -238,19 +243,24 @@
          top_delta="0"
 	 value="Go to Dashboard"
          width="100"/> -->
-            <text
+            <text_editor
+            allow_scroll="false"
+            bg_visible="false"
             follows="left|top"
+            h_pad="0"
             height="28"
             layout="topleft"
             left="10"
             name="acc_status_text"
+            read_only="true"
             top_pad="0"
             translate="false"
+            v_pad="0"
             width="300"
             word_wrap="true">
               Resident. No payment info on file.
               Linden.
-            </text>
+            </text_editor>
             <text
              follows="left|top"
        font.style="BOLD"
diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml
index 40b9b569037..351df22042b 100644
--- a/indra/newview/skins/default/xui/en/panel_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile.xml
@@ -173,8 +173,7 @@
               value="http://librarianavengers.org"
               width="300"
               word_wrap="false"
-              use_ellipses="true"
-         />
+              use_ellipses="true" />
             <text
              follows="left|top"
            font.style="BOLD"
@@ -186,13 +185,18 @@
              top_pad="10"
              value="Resident Since:"
              width="300" />
-            <text
+            <text_editor
+             allow_scroll="false"
+             bg_visible="false"
              follows="left|top"
+             h_pad="0"
              height="15"
              layout="topleft"
              left="10"
              name="register_date"
+             read_only="true"
              translate="false"
+             v_pad="0"
              value="05/31/2376"
              width="300"
              word_wrap="true" />
@@ -218,19 +222,24 @@
          top_delta="0"
 	 value="Go to Dashboard"
          width="100"/> -->
-            <text
+            <text_editor
+             allow_scroll="false"
+             bg_visible="false"
              follows="left|top"
+             h_pad="0"
              height="28"
              layout="topleft"
              left="10"
              name="acc_status_text"
+             read_only="true"
              top_pad="0"
              translate="false"
+             v_pad="0"
              width="300"
              word_wrap="true">
               Resident. No payment info on file.
               Linden.
-            </text>
+            </text_editor>
             <text
              follows="left|top"
        font.style="BOLD"
-- 
GitLab


From 0c7e18cbc67367e7bcc1fe2cfe59e7068209e814 Mon Sep 17 00:00:00 2001
From: Eugene Mutavchi <emutavchi@productengine.com>
Date: Tue, 2 Feb 2010 21:53:52 +0200
Subject: [PATCH 446/521] Fixed normal bug EXT-4127 ([BSI] Cannot copy/paste
 from another resident's picks / classifieds)

--HG--
branch : product-engine
---
 indra/newview/llpanelclassified.cpp           |  4 +-
 .../default/xui/en/panel_classified_info.xml  | 54 +++++++++++++++----
 .../skins/default/xui/en/panel_pick_info.xml  | 14 ++++-
 3 files changed, 60 insertions(+), 12 deletions(-)

diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp
index 3f5d80c1234..1e46827c1ae 100644
--- a/indra/newview/llpanelclassified.cpp
+++ b/indra/newview/llpanelclassified.cpp
@@ -1231,12 +1231,14 @@ void LLPanelClassifiedInfo::processProperties(void* data, EAvatarProcessorType t
 
 			static std::string mature_str = getString("type_mature");
 			static std::string pg_str = getString("type_pg");
+			static LLUIString  price_str = getString("l$_price");
 
 			bool mature = is_cf_mature(c_info->flags);
 			childSetValue("content_type", mature ? mature_str : pg_str);
 			childSetValue("auto_renew", is_cf_auto_renew(c_info->flags));
 
-			childSetTextArg("price_for_listing", "[PRICE]", llformat("%d", c_info->price_for_listing));
+			price_str.setArg("[PRICE]", llformat("%d", c_info->price_for_listing));
+			childSetValue("price_for_listing", LLSD(price_str));
 
 			setInfoLoaded(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 677bdbc3d2b..31719aad201 100644
--- a/indra/newview/skins/default/xui/en/panel_classified_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_classified_info.xml
@@ -17,6 +17,10 @@
  <panel.string
   name="type_pg">
     General Content
+ </panel.string>
+ <panel.string
+  name="l$_price">
+    L$[PRICE]
  </panel.string>
     <button
      follows="top|right"
@@ -71,8 +75,11 @@
          name="classified_snapshot"
          top="20"
          width="290" />
-        <text
+        <text_editor
+         allow_scroll="false"
+         bg_visible="false"
          follows="left|top|right"
+         h_pad="0"
          height="35"
          width="290"
          layout="topleft"
@@ -81,35 +88,53 @@
          left="10"
          top_pad="10"
          name="classified_name"
+         read_only="true"
          text_color="white"
+         v_pad="0"
          value="[name]"
          use_ellipses="true" />
-        <text
+        <text_editor
+         allow_scroll="false"
+         bg_visible="false"
          follows="left|top"
+         h_pad="0"
          height="25"
          layout="topleft"
          left="10"
          name="classified_location"
+         read_only="true"
          width="290"
          word_wrap="true"
+         v_pad="0"
          value="[loading...]" />
-        <text
+        <text_editor
+         allow_scroll="false"
+         bg_visible="false"
          follows="left|top|right"
+         h_pad="0"
          height="18"
          layout="topleft"
          left="10"
          name="content_type"
+         read_only="true"
          width="290"
          top_pad="5"
+         v_pad="0"
          value="[content type]" />
-        <text
+        <text_editor
+         allow_html="true"
+         allow_scroll="false"
+         bg_visible="false"
          follows="left|top|right"
+         h_pad="0"
          height="18"
          layout="topleft"
          left="10"
          name="category"
+         read_only="true"
          width="290"
          top_pad="5"
+         v_pad="0"
          value="[category]" />
         <check_box
          enabled="false"
@@ -119,26 +144,37 @@
          left="10"
          name="auto_renew"
          top_pad="5"
+         v_pad="0"
          width="290" />
-        <text
+        <text_editor
+         allow_scroll="false"
+         bg_visible="false"
          follows="left|top"
+         h_pad="0"
          halign="left"
          height="16"
          layout="topleft"
          left="10"
          name="price_for_listing"
+         read_only="true"
          top_pad="5"
          tool_tip="Price for listing."
-         width="105">
-         L$[PRICE]
-        </text>
-        <text
+         v_pad="0"
+         width="105" />
+        <text_editor
+         allow_html="true"
+         allow_scroll="false"
+         bg_visible="false"
          follows="left|top|right"
+         h_pad="0"
          height="200"
          layout="topleft"
          left="10"
+         max_length="1023"
          name="classified_desc"
+         read_only="true"
          width="290"
+         v_pad="0"
          value="[description]"
          word_wrap="true" />
     </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_pick_info.xml b/indra/newview/skins/default/xui/en/panel_pick_info.xml
index 74899887220..375f369ba72 100644
--- a/indra/newview/skins/default/xui/en/panel_pick_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_pick_info.xml
@@ -61,8 +61,11 @@
          name="pick_snapshot"
          top="20"
          width="280" />
-        <text
+        <text_editor
+         allow_scroll="false"
+         bg_visible="false"
          follows="left|top|right"
+         h_pad="0"
          height="35"
          width="280"
          layout="topleft"
@@ -71,17 +74,24 @@
          left="10"
          top_pad="10"
          name="pick_name"
+         read_only="true"
          text_color="white"
+         v_pad="0"
          value="[name]"
          use_ellipses="true" />
-        <text
+        <text_editor
+         allow_scroll="false"
+         bg_visible="false"
          follows="left|top|right"
+         h_pad="0"
          height="25"
          layout="topleft"
          left="10"
          name="pick_location"
+         read_only="true"
          width="280"
          word_wrap="true"
+         v_pad="0"
          value="[loading...]" />
         <text_editor
          bg_readonly_color="DkGray2"
-- 
GitLab


From 2dbf48d05c58ffb08728af4f6d8a3a8e626e093d Mon Sep 17 00:00:00 2001
From: Chuck Linden <chuck@lindenlab.com>
Date: Tue, 2 Feb 2010 15:16:14 -0500
Subject: [PATCH 447/521] Adjusted vertical position of damage text and icon.
 https://jira.secondlife.com/browse/EXT-4861

---
 indra/newview/skins/default/xui/en/widgets/location_input.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

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 70a58b8e030..2163660206e 100644
--- a/indra/newview/skins/default/xui/en/widgets/location_input.xml
+++ b/indra/newview/skins/default/xui/en/widgets/location_input.xml
@@ -96,7 +96,7 @@
     name="damage_icon"
     width="14"
     height="13"
-    top="21"
+    top="19"
     left="2"
     follows="right|top"
     image_name="Parcel_Damage_Dark"
@@ -106,7 +106,7 @@
     name="damage_text"
 	width="35"
 	height="18"
-	top="16"
+	top="17"
     follows="right|top"
 	halign="right"
 	font="SansSerifSmall"
-- 
GitLab


From 847a3a12208359653aa7432f7f64c31669ec8963 Mon Sep 17 00:00:00 2001
From: Loren Shih <seraph@lindenlab.com>
Date: Tue, 2 Feb 2010 17:11:42 -0500
Subject: [PATCH 448/521] EXT-4243 : Sorting is broken in inventory

Landmarks were being special cased for sorting; removed this so that they sort by the same rules of other folders.
---
 indra/newview/llfolderviewitem.cpp | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp
index b05eb84e521..f154de39c92 100644
--- a/indra/newview/llfolderviewitem.cpp
+++ b/indra/newview/llfolderviewitem.cpp
@@ -2540,13 +2540,11 @@ bool LLInventorySort::operator()(const LLFolderViewItem* const& a, const LLFolde
 	{
 
 		static const LLUUID& favorites_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE);
-		static const LLUUID& landmarks_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK);
 
 		LLUUID a_uuid = a->getParentFolder()->getListener()->getUUID();
 		LLUUID b_uuid = b->getParentFolder()->getListener()->getUUID();
 
-		if ((a_uuid == favorites_folder_id && b_uuid == favorites_folder_id) ||
-			(a_uuid == landmarks_folder_id && b_uuid == landmarks_folder_id))
+		if ((a_uuid == favorites_folder_id && b_uuid == favorites_folder_id))
 		{
 			// *TODO: mantipov: probably it is better to add an appropriate method to LLFolderViewItem
 			// or to LLInvFVBridge
-- 
GitLab


From 6d44848ded11bc7f83b725909d266658fab0cb99 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Tue, 2 Feb 2010 17:14:29 -0500
Subject: [PATCH 449/521] For EXT-4173: New accounts sometimes appear
 half-naked.  Fixed race condition that sometimes caused incomplete
 auto-populate folder to be worn

---
 indra/newview/llstartup.cpp | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 6b816f87863..4d814169cb0 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -1849,7 +1849,7 @@ bool idle_startup()
 			LLStartUp::loadInitialOutfit( sInitialOutfit, sInitialOutfitGender );
 		}
 
-
+#if 0 // WHY 2x? BAP
 		// We now have an inventory skeleton, so if this is a user's first
 		// login, we can start setting up their clothing and avatar 
 		// appearance.  This helps to avoid the generic "Ruth" avatar in
@@ -1863,6 +1863,7 @@ bool idle_startup()
 			// Start loading the wearables, textures, gestures
 			LLStartUp::loadInitialOutfit( sInitialOutfit, sInitialOutfitGender );
 		}
+#endif
 
 		// wait precache-delay and for agent's avatar or a lot longer.
 		if(((timeout_frac > 1.f) && gAgent.getAvatarObject())
@@ -2526,6 +2527,11 @@ bool callback_choose_gender(const LLSD& notification, const LLSD& response)
 void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,
 								   const std::string& gender_name )
 {
+	// Not going through the processAgentInitialWearables path, so need to set this here.
+	LLAppearanceManager::instance().setAttachmentInvLinkEnable(true);
+	// Initiate creation of COF, since we're also bypassing that.
+	gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
+	
 	S32 gender = 0;
 	std::string gestures;
 	if (gender_name == "male")
@@ -2544,7 +2550,7 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,
 	LLInventoryModel::cat_array_t cat_array;
 	LLInventoryModel::item_array_t item_array;
 	LLNameCategoryCollector has_name(outfit_folder_name);
-	gInventory.collectDescendentsIf(LLUUID::null,
+	gInventory.collectDescendentsIf(gInventory.getLibraryRootFolderID(),
 									cat_array,
 									item_array,
 									LLInventoryModel::EXCLUDE_TRASH,
@@ -2555,7 +2561,10 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,
 	}
 	else
 	{
-		LLAppearanceManager::instance().wearOutfitByName(outfit_folder_name);
+		LLInventoryCategory* cat = cat_array.get(0);
+		bool do_copy = true;
+		bool do_append = false;
+		LLAppearanceManager::instance().wearInventoryCategory(cat, do_copy, do_append);
 	}
 	LLAppearanceManager::instance().wearOutfitByName(gestures);
 	LLAppearanceManager::instance().wearOutfitByName(COMMON_GESTURES_FOLDER);
-- 
GitLab


From 5285e5479cb9f8d3b1c00fbafc4b01b21c613df2 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Tue, 2 Feb 2010 23:11:27 +0000
Subject: [PATCH 450/521] Remove a couple of header deps on llprimitive.h for
 faster buildy goodness.

---
 indra/newview/lldrawable.h   | 1 -
 indra/newview/lltoolplacer.h | 1 -
 2 files changed, 2 deletions(-)

diff --git a/indra/newview/lldrawable.h b/indra/newview/lldrawable.h
index 5a10b688da4..651dabff9ea 100644
--- a/indra/newview/lldrawable.h
+++ b/indra/newview/lldrawable.h
@@ -44,7 +44,6 @@
 #include "llquaternion.h"
 #include "xform.h"
 #include "llmemtype.h"
-#include "llprimitive.h"
 #include "lldarray.h"
 #include "llviewerobject.h"
 #include "llrect.h"
diff --git a/indra/newview/lltoolplacer.h b/indra/newview/lltoolplacer.h
index b7422380d43..df07f1854ce 100644
--- a/indra/newview/lltoolplacer.h
+++ b/indra/newview/lltoolplacer.h
@@ -33,7 +33,6 @@
 #ifndef LL_TOOLPLACER_H
 #define LL_TOOLPLACER_H
 
-#include "llprimitive.h"
 #include "llpanel.h"
 #include "lltool.h"
 
-- 
GitLab


From 85cc9f121d0b8cb5c10a9ed505a9f67bb9b87862 Mon Sep 17 00:00:00 2001
From: Loren Shih <seraph@lindenlab.com>
Date: Tue, 2 Feb 2010 20:25:48 -0500
Subject: [PATCH 451/521] EXT-4874 : Client freezes on right click - take item

Fixed infinite loop due to parent_id not being incremented properly in loop.
---
 indra/newview/llinventorymodel.cpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index bdf1ebddac2..05e366523ac 100644
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -317,7 +317,10 @@ BOOL LLInventoryModel::isObjectDescendentOf(const LLUUID& obj_id,
 const LLViewerInventoryCategory *LLInventoryModel::getFirstNondefaultParent(const LLUUID& obj_id) const
 {
 	const LLInventoryObject* obj = getObject(obj_id);
-	const LLUUID& parent_id = obj->getParentUUID();
+
+	// Search up the parent chain until we get to root or an acceptable folder.
+	// This assumes there are no cycles in the tree else we'll get a hang.
+	LLUUID parent_id = obj->getParentUUID();
 	while (!parent_id.isNull())
 	{
 		const LLViewerInventoryCategory *cat = getCategory(parent_id);
@@ -329,6 +332,7 @@ const LLViewerInventoryCategory *LLInventoryModel::getFirstNondefaultParent(cons
 		{
 			return cat;
 		}
+		parent_id = cat->getParentUUID();
 	}
 	return NULL;
 }
-- 
GitLab


From 5491dd6e983f8fccbd687c7c45ef43125dfc0f6c Mon Sep 17 00:00:00 2001
From: Monroe Linden <monroe@lindenlab.com>
Date: Tue, 2 Feb 2010 18:24:11 -0800
Subject: [PATCH 452/521] Further fixes for EXT-4689 (Long-word chat spam
 cripples fps and/or disconnects client).

This should fix the inefficiencies in the append path that made viewer FPS drop severely when addinglarge amounts of text to the nearby chat floater.

Resizing the floater with a huge amount of text in it is still pretty bad, but fixing that will require some bigger architectural changes.

Changed LLTextBase::needsReflow() to take an offset at which to start reflow processing.

Changed most needsReflow() calls in LLTextBase to supply a proper index.

Changed LLTextBase::reflow() to use the reflow index maintained by needsReflow().

Removed all needsReflow() calls from LLTextEditor (the only way for it to manipulate the text is through functions in LLTextBase that already manage reflowing internally).

Removed LLTextEditor::replaceUrlLabel(), since it was identical to the inherited version LLTextBase::replaceUrlLabel().

Reviewed by Richard.
---
 indra/llui/lltextbase.cpp   | 28 ++++++++++-----
 indra/llui/lltextbase.h     |  6 ++--
 indra/llui/lltexteditor.cpp | 69 -------------------------------------
 indra/llui/lltexteditor.h   |  1 -
 4 files changed, 22 insertions(+), 82 deletions(-)

diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index b977e50bc1a..75ca6d88950 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -185,7 +185,7 @@ LLTextBase::LLTextBase(const LLTextBase::Params &p)
 	mWriteableBgColor(p.bg_writeable_color),
 	mReadOnlyBgColor(p.bg_readonly_color),
 	mFocusBgColor(p.bg_focus_color),
-	mReflowNeeded(FALSE),
+	mReflowIndex(S32_MAX),
 	mCursorPos( 0 ),
 	mScrollNeeded(FALSE),
 	mDesiredXPixel(-1),
@@ -660,7 +660,7 @@ S32 LLTextBase::insertStringNoUndo(S32 pos, const LLWString &wstr, LLTextBase::s
 	}
 
 	onValueChange(pos, pos + insert_len);
-	needsReflow();
+	needsReflow(pos);
 
 	return insert_len;
 }
@@ -720,7 +720,7 @@ S32 LLTextBase::removeStringNoUndo(S32 pos, S32 length)
 	createDefaultSegment();
 
 	onValueChange(pos, pos);
-	needsReflow();
+	needsReflow(pos);
 
 	return -length;	// This will be wrong if someone calls removeStringNoUndo with an excessive length
 }
@@ -736,7 +736,7 @@ S32 LLTextBase::overwriteCharNoUndo(S32 pos, llwchar wc)
     getViewModel()->setDisplay(text);
 
 	onValueChange(pos, pos + 1);
-	needsReflow();
+	needsReflow(pos);
 
 	return 1;
 }
@@ -762,15 +762,18 @@ void LLTextBase::insertSegment(LLTextSegmentPtr segment_to_insert)
 	}
 
 	segment_set_t::iterator cur_seg_iter = getSegIterContaining(segment_to_insert->getStart());
+	S32 reflow_start_index = 0;
 
 	if (cur_seg_iter == mSegments.end())
 	{
 		mSegments.insert(segment_to_insert);
 		segment_to_insert->linkToDocument(this);
+		reflow_start_index = segment_to_insert->getStart();
 	}
 	else
 	{
 		LLTextSegmentPtr cur_segmentp = *cur_seg_iter;
+		reflow_start_index = cur_segmentp->getStart();
 		if (cur_segmentp->getStart() < segment_to_insert->getStart())
 		{
 			S32 old_segment_end = cur_segmentp->getEnd();
@@ -829,7 +832,7 @@ void LLTextBase::insertSegment(LLTextSegmentPtr segment_to_insert)
 	}
 
 	// layout potentially changed
-	needsReflow();
+	needsReflow(reflow_start_index);
 }
 
 BOOL LLTextBase::handleMouseDown(S32 x, S32 y, MASK mask)
@@ -1084,15 +1087,16 @@ S32 LLTextBase::getLeftOffset(S32 width)
 
 
 static LLFastTimer::DeclareTimer FTM_TEXT_REFLOW ("Text Reflow");
-void LLTextBase::reflow(S32 start_index)
+void LLTextBase::reflow()
 {
 	LLFastTimer ft(FTM_TEXT_REFLOW);
 
 	updateSegments();
 
-	while(mReflowNeeded)
+	while(mReflowIndex < S32_MAX)
 	{
-		mReflowNeeded = false;
+		S32 start_index = mReflowIndex;
+		mReflowIndex = S32_MAX;
 
 		// shrink document to minimum size (visible portion of text widget)
 		// to force inlined widgets with follows set to shrink
@@ -1619,6 +1623,12 @@ void LLTextBase::appendText(const std::string &new_text, bool prepend_newline, c
 	}
 }
 
+void LLTextBase::needsReflow(S32 index)
+{
+	lldebugs << "reflow on object " << (void*)this << " index = " << mReflowIndex << ", new index = " << index << llendl;
+	mReflowIndex = llmin(mReflowIndex, index);
+}
+
 void LLTextBase::appendAndHighlightText(const std::string &new_text, bool prepend_newline, S32 highlight_part, const LLStyle::Params& style_params)
 {
 	if (new_text.empty()) return;                                                                                 
@@ -2260,7 +2270,7 @@ LLNormalTextSegment::LLNormalTextSegment( LLStyleConstSP style, S32 start, S32 e
 	LLUIImagePtr image = mStyle->getImage();
 	if (image.notNull())
 	{
-		mImageLoadedConnection = image->addLoadedCallback(boost::bind(&LLTextBase::needsReflow, &mEditor));
+		mImageLoadedConnection = image->addLoadedCallback(boost::bind(&LLTextBase::needsReflow, &mEditor, start));
 	}
 }
 
diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h
index ed2f2394767..3dda6f4cc88 100644
--- a/indra/llui/lltextbase.h
+++ b/indra/llui/lltextbase.h
@@ -150,7 +150,7 @@ class LLTextBase
 
 	void					appendText(const std::string &new_text, bool prepend_newline, const LLStyle::Params& input_params = LLStyle::Params());
 	// force reflow of text
-	void					needsReflow() { mReflowNeeded = TRUE; }
+	void					needsReflow(S32 index = 0);
 
 	S32						getLength() const { return getWText().length(); }
 	S32						getLineCount() const { return mLineInfoList.size(); }
@@ -292,7 +292,7 @@ class LLTextBase
 	S32								getFirstVisibleLine() const;
 	std::pair<S32, S32>				getVisibleLines(bool fully_visible = false);
 	S32								getLeftOffset(S32 width);
-	void							reflow(S32 start_index = 0);
+	void							reflow();
 
 	// cursor
 	void							updateCursorXPos();
@@ -362,7 +362,7 @@ class LLTextBase
 	class LLScrollContainer*	mScroller;
 
 	// transient state
-	bool						mReflowNeeded;		// need to reflow text because of change to text contents or display region
+	S32							mReflowIndex;		// index at which to start reflow.  S32_MAX indicates no reflow needed.
 	bool						mScrollNeeded;		// need to change scroll region because of change to cursor position
 	S32							mScrollIndex;		// index of first character to keep visible in scroll region
 
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index e76fee9f17f..7a19b7427cc 100644
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -1285,8 +1285,6 @@ void LLTextEditor::cut()
 	gClipboard.copyFromSubstring( getWText(), left_pos, length, mSourceID );
 	deleteSelection( FALSE );
 
-	needsReflow();
-
 	onKeyStroke();
 }
 
@@ -1391,8 +1389,6 @@ void LLTextEditor::pasteHelper(bool is_primary)
 	setCursorPos(mCursorPos + insert(mCursorPos, clean_string, FALSE, LLTextSegmentPtr()));
 	deselect();
 
-	needsReflow();
-
 	onKeyStroke();
 }
 
@@ -1787,8 +1783,6 @@ BOOL LLTextEditor::handleKeyHere(KEY key, MASK mask )
 
 		if(text_may_have_changed)
 		{
-			needsReflow();
-
 			onKeyStroke();
 		}
 		needsScroll();
@@ -1831,8 +1825,6 @@ BOOL LLTextEditor::handleUnicodeCharHere(llwchar uni_char)
 		// Most keystrokes will make the selection box go away, but not all will.
 		deselect();
 
-		needsReflow();
-
 		onKeyStroke();
 	}
 
@@ -1891,8 +1883,6 @@ void LLTextEditor::doDelete()
 	}
 
 	onKeyStroke();
-
-	needsReflow();
 }
 
 //----------------------------------------------------------------------------
@@ -1935,8 +1925,6 @@ void LLTextEditor::undo()
 
 		setCursorPos(pos);
 
-	needsReflow();
-
 	onKeyStroke();
 }
 
@@ -1979,8 +1967,6 @@ void LLTextEditor::redo()
 		
 		setCursorPos(pos);
 
-	needsReflow();
-
 	onKeyStroke();
 }
 
@@ -2339,8 +2325,6 @@ void LLTextEditor::insertText(const std::string &new_text)
 
 	setCursorPos(mCursorPos + insert( mCursorPos, utf8str_to_wstring(new_text), FALSE, LLTextSegmentPtr() ));
 	
-	needsReflow();
-
 	setEnabled( enabled );
 }
 
@@ -2363,8 +2347,6 @@ void LLTextEditor::appendWidget(const LLInlineViewSegment::Params& params, const
 	LLTextSegmentPtr segment = new LLInlineViewSegment(params, old_length, old_length + widget_wide_text.size());
 	insert(getLength(), widget_wide_text, FALSE, segment);
 
-	needsReflow();
-	
 	// Set the cursor and scroll position
 	if( selection_start != selection_end )
 	{
@@ -2389,52 +2371,6 @@ void LLTextEditor::appendWidget(const LLInlineViewSegment::Params& params, const
 	}
 }
 
-
-void LLTextEditor::replaceUrlLabel(const std::string &url,
-								   const std::string &label)
-{
-	// get the full (wide) text for the editor so we can change it
-	LLWString text = getWText();
-	LLWString wlabel = utf8str_to_wstring(label);
-	bool modified = false;
-	S32 seg_start = 0;
-
-	// iterate through each segment looking for ones styled as links
-	segment_set_t::iterator it;
-	for (it = mSegments.begin(); it != mSegments.end(); ++it)
-	{
-		LLTextSegment *seg = *it;
-		LLStyleConstSP style = seg->getStyle();
-
-		// update segment start/end length in case we replaced text earlier
-		S32 seg_length = seg->getEnd() - seg->getStart();
-		seg->setStart(seg_start);
-		seg->setEnd(seg_start + seg_length);
-
-		// if we find a link with our Url, then replace the label
-		if (style->isLink() && style->getLinkHREF() == url)
-		{
-			S32 start = seg->getStart();
-			S32 end = seg->getEnd();
-			text = text.substr(0, start) + wlabel + text.substr(end, text.size() - end + 1);
-			seg->setEnd(start + wlabel.size());
-			modified = true;
-		}
-
-		// work out the character offset for the next segment
-		seg_start = seg->getEnd();
-	}
-
-	// update the editor with the new (wide) text string
-	if (modified)
-	{
-		getViewModel()->setDisplay(text);
-		deselect();
-		setCursorPos(mCursorPos);
-		needsReflow();
-	}
-}
-
 void LLTextEditor::removeTextFromEnd(S32 num_chars)
 {
 	if (num_chars <= 0) return;
@@ -2446,7 +2382,6 @@ void LLTextEditor::removeTextFromEnd(S32 num_chars)
 	mSelectionStart = llclamp(mSelectionStart, 0, len);
 	mSelectionEnd = llclamp(mSelectionEnd, 0, len);
 
-	needsReflow();
 	needsScroll();
 }
 
@@ -2505,8 +2440,6 @@ BOOL LLTextEditor::tryToRevertToPristineState()
 				i--;
 			}
 		}
-
-		needsReflow();
 	}
 
 	return isPristine(); // TRUE => success
@@ -2681,7 +2614,6 @@ BOOL LLTextEditor::importBuffer(const char* buffer, S32 length )
 	startOfDoc();
 	deselect();
 
-	needsReflow();
 	return success;
 }
 
@@ -2785,7 +2717,6 @@ void LLTextEditor::updatePreedit(const LLWString &preedit_string,
 
 	mPreeditStandouts = preedit_standouts;
 
-	needsReflow();
 	setCursorPos(insert_preedit_at + caret_position);
 
 	// Update of the preedit should be caused by some key strokes.
diff --git a/indra/llui/lltexteditor.h b/indra/llui/lltexteditor.h
index 043dda8fa62..a136f9ccce7 100644
--- a/indra/llui/lltexteditor.h
+++ b/indra/llui/lltexteditor.h
@@ -149,7 +149,6 @@ class LLTextEditor :
 	void			selectNext(const std::string& search_text_in, BOOL case_insensitive, BOOL wrap = TRUE);
 	BOOL			replaceText(const std::string& search_text, const std::string& replace_text, BOOL case_insensitive, BOOL wrap = TRUE);
 	void			replaceTextAll(const std::string& search_text, const std::string& replace_text, BOOL case_insensitive);
-	void			replaceUrlLabel(const std::string &url, const std::string &label);
 	
 	// Undo/redo stack
 	void			blockUndo();
-- 
GitLab


From e518fa8df91ebe8dabf949cc6074b35f60ca083f Mon Sep 17 00:00:00 2001
From: "Mark Palange (Mani)" <palange@lindenlab.com>
Date: Tue, 2 Feb 2010 18:26:29 -0800
Subject: [PATCH 453/521] EXT-4598 - Added UI handling for E_ST_BAD_ROOT result
 of animation loading. Reviewed by Palmer

---
 indra/newview/llfloateranimpreview.cpp        | 64 ++++++++++---------
 .../xui/en/floater_animation_preview.xml      |  6 +-
 2 files changed, 38 insertions(+), 32 deletions(-)

diff --git a/indra/newview/llfloateranimpreview.cpp b/indra/newview/llfloateranimpreview.cpp
index 60f150bd969..904655cdc86 100644
--- a/indra/newview/llfloateranimpreview.cpp
+++ b/indra/newview/llfloateranimpreview.cpp
@@ -86,38 +86,40 @@ const F32 BASE_ANIM_TIME_OFFSET = 5.f;
 
 std::string STATUS[] =
 {
-  "E_ST_OK",
-  "E_ST_EOF",
-  "E_ST_NO_CONSTRAINT",
-  "E_ST_NO_FILE",
-"E_ST_NO_HIER",
-"E_ST_NO_JOINT",
-"E_ST_NO_NAME",
-"E_ST_NO_OFFSET",
-"E_ST_NO_CHANNELS",
-"E_ST_NO_ROTATION",
-"E_ST_NO_AXIS",
-"E_ST_NO_MOTION",
-"E_ST_NO_FRAMES",
-"E_ST_NO_FRAME_TIME",
-"E_ST_NO_POS",
-"E_ST_NO_ROT",
-"E_ST_NO_XLT_FILE",
-"E_ST_NO_XLT_HEADER",
-"E_ST_NO_XLT_NAME",
-"E_ST_NO_XLT_IGNORE",
-"E_ST_NO_XLT_RELATIVE",
-"E_ST_NO_XLT_OUTNAME",
-"E_ST_NO_XLT_MATRIX",
-"E_ST_NO_XLT_MERGECHILD",
-"E_ST_NO_XLT_MERGEPARENT",
-"E_ST_NO_XLT_PRIORITY",
-"E_ST_NO_XLT_LOOP",
-"E_ST_NO_XLT_EASEIN",
-"E_ST_NO_XLT_EASEOUT",
-"E_ST_NO_XLT_HAND",
-"E_ST_NO_XLT_EMOTE",
+	"E_ST_OK",
+	"E_ST_EOF",
+	"E_ST_NO_CONSTRAINT",
+	"E_ST_NO_FILE",
+	"E_ST_NO_HIER",
+	"E_ST_NO_JOINT",
+	"E_ST_NO_NAME",
+	"E_ST_NO_OFFSET",
+	"E_ST_NO_CHANNELS",
+	"E_ST_NO_ROTATION",
+	"E_ST_NO_AXIS",
+	"E_ST_NO_MOTION",
+	"E_ST_NO_FRAMES",
+	"E_ST_NO_FRAME_TIME",
+	"E_ST_NO_POS",
+	"E_ST_NO_ROT",
+	"E_ST_NO_XLT_FILE",
+	"E_ST_NO_XLT_HEADER",
+	"E_ST_NO_XLT_NAME",
+	"E_ST_NO_XLT_IGNORE",
+	"E_ST_NO_XLT_RELATIVE",
+	"E_ST_NO_XLT_OUTNAME",
+	"E_ST_NO_XLT_MATRIX",
+	"E_ST_NO_XLT_MERGECHILD",
+	"E_ST_NO_XLT_MERGEPARENT",
+	"E_ST_NO_XLT_PRIORITY",
+	"E_ST_NO_XLT_LOOP",
+	"E_ST_NO_XLT_EASEIN",
+	"E_ST_NO_XLT_EASEOUT",
+	"E_ST_NO_XLT_HAND",
+	"E_ST_NO_XLT_EMOTE",
+	"E_ST_BAD_ROOT"
 };
+
 //-----------------------------------------------------------------------------
 // LLFloaterAnimPreview()
 //-----------------------------------------------------------------------------
diff --git a/indra/newview/skins/default/xui/en/floater_animation_preview.xml b/indra/newview/skins/default/xui/en/floater_animation_preview.xml
index 4f4288b654d..1ffedde29b0 100644
--- a/indra/newview/skins/default/xui/en/floater_animation_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_animation_preview.xml
@@ -147,7 +147,11 @@ Maximum animation length is [MAX_LENGTH] seconds.
      name="E_ST_NO_XLT_EMOTE">
         Cannot read emote name.
     </floater.string>
-    <text
+    <floater.string
+     name="E_ST_BAD_ROOT">
+        Incorrect root joint name, use "hip".
+    </floater.string>
+  <text
      type="string"
      length="1"
      bottom="42"
-- 
GitLab


From 44c4337420f2dc5cae2782d476b9c94cd4020998 Mon Sep 17 00:00:00 2001
From: angela <angela@lindenlab.com>
Date: Wed, 3 Feb 2010 12:31:51 +0800
Subject: [PATCH 454/521] EXT-1640 Application Icon Misaligned on OSX Installer
 Dialog (renamed to secondlife beta)

---
 .../installers/darwin/firstlook-dmg/_DS_Store | Bin 12292 -> 12292 bytes
 .../darwin/fix_application_icon_position.sh   |  17 ++++++++++-------
 .../darwin/publicnightly-dmg/_DS_Store        | Bin 12292 -> 12292 bytes
 .../installers/darwin/release-dmg/_DS_Store   | Bin 12292 -> 12292 bytes
 .../darwin/releasecandidate-dmg/_DS_Store     | Bin 12292 -> 12292 bytes
 5 files changed, 10 insertions(+), 7 deletions(-)
 mode change 100644 => 100755 indra/newview/installers/darwin/fix_application_icon_position.sh

diff --git a/indra/newview/installers/darwin/firstlook-dmg/_DS_Store b/indra/newview/installers/darwin/firstlook-dmg/_DS_Store
index 9d9fd897e7d9cc604462c1732454d823b8573b21..495ec37f5347a38e228c305410c683bbf4166765 100644
GIT binary patch
delta 135
zcmZokXi3-*E5OJxIZhy0#>~)CN5RC<uvSN*+SI^6N5R<0u(p;12n0GepB4DS!YDoY
zjF6<D6GJLP2}2@-0z()>CXih|`H83k$A2(jVBA>vnsGC`#35FqRBslPdm#t_ghnfy

delta 142
zcmZokXi3-*E5OJ#IZhy0#@NtUN5RO%vQ|f-+RVg4N5K@xuI1$9;1uZCd{*EOi?lF<
z4?`wH9zzO4Dv)#ml4U@g!;sHVF!_t90viJZ1JnQi8w>w3Zf2J_#7d<4&5Cl51t&I$
F0{~6ACG`LR

diff --git a/indra/newview/installers/darwin/fix_application_icon_position.sh b/indra/newview/installers/darwin/fix_application_icon_position.sh
old mode 100644
new mode 100755
index a0b72a89f25..c6b92589db5
--- a/indra/newview/installers/darwin/fix_application_icon_position.sh
+++ b/indra/newview/installers/darwin/fix_application_icon_position.sh
@@ -4,11 +4,14 @@ cp -r ./../../../build-darwin-i386/newview/*.dmg ~/Desktop/TempBuild.dmg
 hdid ~/Desktop/TempBuild.dmg
 open -a finder /Volumes/Second\ Life\ Installer
 osascript dmg-cleanup.applescript
-cp /Volumes/Second\ Life\ Installer/.DS_Store ~/Desktop/_DS_Store
-chflags nohidden ~/Desktop/_DS_Store
-cp ~/Desktop/_DS_Store ./firstlook-dmg/_DS_Store
-cp ~/Desktop/_DS_Store ./publicnightly-dmg/_DS_Store
-cp ~/Desktop/_DS_Store ./release-dmg/_DS_Store
-cp ~/Desktop/_DS_Store ./releasecandidate-dmg/_DS_Store
 umount /Volumes/Second\ Life\ Installer/
-rm ~/Desktop/_DS_Store ~/Desktop/TempBuild.dmg
+hdid ~/Desktop/TempBuild.dmg
+open -a finder /Volumes/Second\ Life\ Installer
+#cp /Volumes/Second\ Life\ Installer/.DS_Store ~/Desktop/_DS_Store
+#chflags nohidden ~/Desktop/_DS_Store
+#cp ~/Desktop/_DS_Store ./firstlook-dmg/_DS_Store
+#cp ~/Desktop/_DS_Store ./publicnightly-dmg/_DS_Store
+#cp ~/Desktop/_DS_Store ./release-dmg/_DS_Store
+#cp ~/Desktop/_DS_Store ./releasecandidate-dmg/_DS_Store
+#umount /Volumes/Second\ Life\ Installer/
+#rm ~/Desktop/_DS_Store ~/Desktop/TempBuild.dmg
diff --git a/indra/newview/installers/darwin/publicnightly-dmg/_DS_Store b/indra/newview/installers/darwin/publicnightly-dmg/_DS_Store
index 9d9fd897e7d9cc604462c1732454d823b8573b21..495ec37f5347a38e228c305410c683bbf4166765 100644
GIT binary patch
delta 135
zcmZokXi3-*E5OJxIZhy0#>~)CN5RC<uvSN*+SI^6N5R<0u(p;12n0GepB4DS!YDoY
zjF6<D6GJLP2}2@-0z()>CXih|`H83k$A2(jVBA>vnsGC`#35FqRBslPdm#t_ghnfy

delta 142
zcmZokXi3-*E5OJ#IZhy0#@NtUN5RO%vQ|f-+RVg4N5K@xuI1$9;1uZCd{*EOi?lF<
z4?`wH9zzO4Dv)#ml4U@g!;sHVF!_t90viJZ1JnQi8w>w3Zf2J_#7d<4&5Cl51t&I$
F0{~6ACG`LR

diff --git a/indra/newview/installers/darwin/release-dmg/_DS_Store b/indra/newview/installers/darwin/release-dmg/_DS_Store
index 9d9fd897e7d9cc604462c1732454d823b8573b21..495ec37f5347a38e228c305410c683bbf4166765 100644
GIT binary patch
delta 135
zcmZokXi3-*E5OJxIZhy0#>~)CN5RC<uvSN*+SI^6N5R<0u(p;12n0GepB4DS!YDoY
zjF6<D6GJLP2}2@-0z()>CXih|`H83k$A2(jVBA>vnsGC`#35FqRBslPdm#t_ghnfy

delta 142
zcmZokXi3-*E5OJ#IZhy0#@NtUN5RO%vQ|f-+RVg4N5K@xuI1$9;1uZCd{*EOi?lF<
z4?`wH9zzO4Dv)#ml4U@g!;sHVF!_t90viJZ1JnQi8w>w3Zf2J_#7d<4&5Cl51t&I$
F0{~6ACG`LR

diff --git a/indra/newview/installers/darwin/releasecandidate-dmg/_DS_Store b/indra/newview/installers/darwin/releasecandidate-dmg/_DS_Store
index 9d9fd897e7d9cc604462c1732454d823b8573b21..495ec37f5347a38e228c305410c683bbf4166765 100644
GIT binary patch
delta 135
zcmZokXi3-*E5OJxIZhy0#>~)CN5RC<uvSN*+SI^6N5R<0u(p;12n0GepB4DS!YDoY
zjF6<D6GJLP2}2@-0z()>CXih|`H83k$A2(jVBA>vnsGC`#35FqRBslPdm#t_ghnfy

delta 142
zcmZokXi3-*E5OJ#IZhy0#@NtUN5RO%vQ|f-+RVg4N5K@xuI1$9;1uZCd{*EOi?lF<
z4?`wH9zzO4Dv)#ml4U@g!;sHVF!_t90viJZ1JnQi8w>w3Zf2J_#7d<4&5Cl51t&I$
F0{~6ACG`LR

-- 
GitLab


From b428711814af79533503b8894423502762a54ae7 Mon Sep 17 00:00:00 2001
From: angela <angela@lindenlab.com>
Date: Wed, 3 Feb 2010 15:43:07 +0800
Subject: [PATCH 455/521] EXT-4603) Right-clicking a sound and choosing Play
 doesn't actually play it

---
 indra/newview/llsidepanelinventory.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp
index 7b923f4b0b3..3fd53099475 100644
--- a/indra/newview/llsidepanelinventory.cpp
+++ b/indra/newview/llsidepanelinventory.cpp
@@ -176,7 +176,7 @@ void LLSidepanelInventory::onPlayButtonClicked()
 		performActionOnSelection("play");
 		break;
 	default:
-		performActionOnSelection("activate");
+		performActionOnSelection("open");
 		break;
 	}
 }
-- 
GitLab


From 5e63efe1da6b72fc0ce9771b9ef1e5c9d9bcb537 Mon Sep 17 00:00:00 2001
From: Alexei Arabadji <aarabadji@productengine.com>
Date: Wed, 3 Feb 2010 11:38:03 +0200
Subject: [PATCH 456/521] =?UTF-8?q?fixed=20EXT-4805=20=E2=80=9CFriend=20of?=
 =?UTF-8?q?fer=20is=20corrupted=20in=20resized=20IM=20window=E2=80=9D,=20r?=
 =?UTF-8?q?everted=20IM=20floater=20default=20width;=20made=20offer=20butt?=
 =?UTF-8?q?ons=20have=20absolute=20positions;=20avoided=20text=20message?=
 =?UTF-8?q?=20scrolling=20with=20default=20IM=20floater=20width;?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

--HG--
branch : product-engine
---
 indra/newview/llchathistory.cpp               | 38 +++++++++++++++++++
 .../default/xui/en/floater_im_session.xml     | 10 ++---
 2 files changed, 43 insertions(+), 5 deletions(-)

diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index 581c210bd5c..64226ac52b6 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -55,6 +55,7 @@
 #include "lltoastnotifypanel.h"
 #include "llviewerregion.h"
 #include "llworld.h"
+#include "lluiconstants.h"
 
 
 #include "llsidetray.h"//for blocked objects panel
@@ -664,8 +665,36 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
 		{
 			LLToastNotifyPanel* notify_box = new LLToastNotifyPanel(
 					notification);
+			//we can't set follows in xml since it broke toasts behavior
 			notify_box->setFollowsLeft();
 			notify_box->setFollowsRight();
+			notify_box->setFollowsTop();
+
+			LLButton* accept_button = notify_box->getChild<LLButton> ("Accept",
+					TRUE);
+			if (accept_button != NULL)
+			{
+				accept_button->setFollowsNone();
+				accept_button->setOrigin(2*HPAD, accept_button->getRect().mBottom);
+			}
+
+			LLButton* decline_button = notify_box->getChild<LLButton> (
+					"Decline", TRUE);
+			if (accept_button != NULL && decline_button != NULL)
+			{
+				decline_button->setFollowsNone();
+				decline_button->setOrigin(4*HPAD
+						+ accept_button->getRect().getWidth(),
+						decline_button->getRect().mBottom);
+			}
+
+			LLTextEditor* text_editor = notify_box->getChild<LLTextEditor>("text_editor_box", TRUE);
+			S32 text_heigth = 0;
+			if(text_editor != NULL)
+			{
+				text_heigth = text_editor->getTextBoundingRect().getHeight();
+			}
+
 			//Prepare the rect for the view
 			LLRect target_rect = mEditor->getDocumentView()->getRect();
 			// squeeze down the widget by subtracting padding off left and right
@@ -675,6 +704,15 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
 					notify_box->getRect().getHeight());
 			notify_box->setOrigin(target_rect.mLeft, notify_box->getRect().mBottom);
 
+			if (text_editor != NULL)
+			{
+				S32 text_heigth_delta =
+						text_editor->getTextBoundingRect().getHeight()
+								- text_heigth;
+				notify_box->reshape(target_rect.getWidth(),
+								notify_box->getRect().getHeight() + text_heigth_delta);
+			}
+
 			LLInlineViewSegment::Params params;
 			params.view = notify_box;
 			params.left_pad = mLeftWidgetPad;
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 9aaa660574c..d2e54731573 100644
--- a/indra/newview/skins/default/xui/en/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_session.xml
@@ -12,7 +12,7 @@
  can_minimize="true"
  can_close="true"
  visible="false"
- width="440"
+ width="360"
  can_resize="true"
  min_width="250"
  min_height="190">
@@ -20,7 +20,7 @@
    animate="false" 
   follows="all"
   height="320"
-  width="440"
+  width="360"
   layout="topleft"
   orientation="horizontal"
   name="im_panels"
@@ -38,7 +38,7 @@
        left="0"
        top="0"
        height="200"
-	     width="325"
+	     width="245"
        user_resize="true">
         <button
           height="20"
@@ -65,7 +65,7 @@
          parse_highlights="true"
          allow_html="true"
         left="1"
-         width="320">
+         width="240">
         </chat_history>
         <line_editor
          bottom="0"
@@ -75,7 +75,7 @@
          label="To"
          layout="bottomleft"
          name="chat_editor"
-         width="320">
+         width="240">
         </line_editor>
     </layout_panel>
   </layout_stack>
-- 
GitLab


From 007bc25f66bd54421a089777b1a1ab28eeed1a7d Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Wed, 3 Feb 2010 13:33:14 +0200
Subject: [PATCH 457/521] Fixed critical bug EXT-4838 ([NUX] Add empty Groups
 list condition text) - moved processing of empty list message into
 LLGroupList - implemented separate messages for empty list: No matched groups
 / no groups at all

--HG--
branch : product-engine
---
 indra/newview/llgrouplist.cpp                 | 19 ++++++++++++++++++-
 indra/newview/llgrouplist.h                   | 11 +++++++++++
 indra/newview/llpanelpeople.cpp               |  1 -
 .../skins/default/xui/en/panel_people.xml     |  5 ++---
 4 files changed, 31 insertions(+), 5 deletions(-)

diff --git a/indra/newview/llgrouplist.cpp b/indra/newview/llgrouplist.cpp
index e01709aa3a0..e924e902dfa 100644
--- a/indra/newview/llgrouplist.cpp
+++ b/indra/newview/llgrouplist.cpp
@@ -72,6 +72,8 @@ class LLGroupComparator : public LLFlatListView::ItemComparator
 static const LLGroupComparator GROUP_COMPARATOR;
 
 LLGroupList::Params::Params()
+: no_groups_msg("no_groups_msg")
+, no_filtered_groups_msg("no_filtered_groups_msg")
 {
 	
 }
@@ -79,6 +81,8 @@ LLGroupList::Params::Params()
 LLGroupList::LLGroupList(const Params& p)
 :	LLFlatListView(p)
 	, mDirty(true) // to force initial update
+	, mNoFilteredGroupsMsg(p.no_filtered_groups_msg)
+	, mNoGroupsMsg(p.no_groups_msg)
 {
 	// Listen for agent group changes.
 	gAgent.addListener(this, "new group");
@@ -158,6 +162,18 @@ void LLGroupList::refresh()
 	LLUUID				id;
 	bool				have_filter		= !mNameFilter.empty();
 
+	// set no items message depend on filter state & total count of groups
+	if (have_filter)
+	{
+		// groups were filtered
+		setNoItemsCommentText(mNoFilteredGroupsMsg);
+	}
+	else if (0 == count)
+	{
+		// user is not a member of any group
+		setNoItemsCommentText(mNoGroupsMsg);
+	}
+
 	clear();
 
 	for(S32 i = 0; i < count; ++i)
@@ -173,7 +189,8 @@ void LLGroupList::refresh()
 	sort();
 
 	// Add "none" to list at top if filter not set (what's the point of filtering "none"?).
-	if (!have_filter)
+	// but only if some real groups exists. EXT-4838
+	if (!have_filter && count > 0)
 	{
 		std::string loc_none = LLTrans::getString("GroupsNone");
 		addNewItem(LLUUID::null, loc_none, LLUUID::null, ADD_TOP);
diff --git a/indra/newview/llgrouplist.h b/indra/newview/llgrouplist.h
index f7afe0c0b2a..f3ac676edd6 100644
--- a/indra/newview/llgrouplist.h
+++ b/indra/newview/llgrouplist.h
@@ -53,6 +53,15 @@ class LLGroupList: public LLFlatListView, public LLOldEvents::LLSimpleListener
 public:
 	struct Params : public LLInitParam::Block<Params, LLFlatListView::Params> 
 	{
+		/**
+		 * Contains a message for empty list when user is not a member of any group
+		 */
+		Optional<std::string>	no_groups_msg;
+
+		/**
+		 * Contains a message for empty list when all groups don't match passed filter
+		 */
+		Optional<std::string>	no_filtered_groups_msg;
 		Params();
 	};
 
@@ -80,6 +89,8 @@ class LLGroupList: public LLFlatListView, public LLOldEvents::LLSimpleListener
 	bool mShowIcons;
 	bool mDirty;
 	std::string mNameFilter;
+	std::string mNoFilteredGroupsMsg;
+	std::string mNoGroupsMsg;
 };
 
 class LLButton;
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index b01cdcc832b..fb6f36d4da6 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -516,7 +516,6 @@ BOOL LLPanelPeople::postBuild()
 	mRecentList->setShowIcons("RecentListShowIcons");
 
 	mGroupList = getChild<LLGroupList>("group_list");
-	mGroupList->setNoItemsCommentText(getString("no_groups"));
 
 	mNearbyList->setContextMenu(&LLPanelPeopleMenus::gNearbyMenu);
 	mRecentList->setContextMenu(&LLPanelPeopleMenus::gNearbyMenu);
diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml
index ac98bb9bd91..9b83e0c68eb 100644
--- a/indra/newview/skins/default/xui/en/panel_people.xml
+++ b/indra/newview/skins/default/xui/en/panel_people.xml
@@ -23,9 +23,6 @@ background_visible="true"
     <string
      name="no_friends"
      value="No friends" />
-    <string
-     name="no_groups"
-     value="No groups" />
     <string
      name="people_filter_label"
      value="Filter People" />
@@ -226,6 +223,8 @@ background_visible="true"
              layout="topleft"
              left="0"
              name="group_list"
+             no_filtered_groups_msg="No groups"
+             no_groups_msg="[secondlife:///app/search/groups Trying searching for some groups to join.]"
              top="0"
              width="313" />
             <panel
-- 
GitLab


From e1637b79a426df8cef575352bbee299458bf42b3 Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Wed, 3 Feb 2010 13:34:00 +0200
Subject: [PATCH 458/521] No ticket: removed deprecated commented out code

--HG--
branch : product-engine
---
 indra/newview/llgrouplist.cpp | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/indra/newview/llgrouplist.cpp b/indra/newview/llgrouplist.cpp
index e924e902dfa..1ed1113f4d9 100644
--- a/indra/newview/llgrouplist.cpp
+++ b/indra/newview/llgrouplist.cpp
@@ -89,9 +89,6 @@ LLGroupList::LLGroupList(const Params& p)
 
 	mShowIcons = gSavedSettings.getBOOL("GroupListShowIcons");
 	setCommitOnSelectionChange(true);
-	// TODO: implement context menu
-	// display a context menu appropriate for a list of group names
-//	setContextMenu(LLScrollListCtrl::MENU_GROUP);
 
 	// Set default sort order.
 	setComparator(&GROUP_COMPARATOR);
-- 
GitLab


From 2a77ef80cec7cacb6c812eb358caef6a73332289 Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Wed, 3 Feb 2010 14:18:06 +0200
Subject: [PATCH 459/521] Backed out changeset 5add97e5b6cf Related to major
 bug EXT-3985 [BSI] Landmarks created in Viewer 2.0 show up with 1@ in Viewer
 1.23.x Removed auto-cleanup patch to repair Lanmarks in Favorite bar (remove
 LM Sort prefixes)

--HG--
branch : product-engine
---
 indra/newview/llinventorymodel.cpp | 134 -----------------------------
 1 file changed, 134 deletions(-)

diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index 9e96bbc55f4..961f7adc0a5 100644
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -142,105 +142,6 @@ bool LLCanCache::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
 	return rv;
 }
 
-/*
-This namespace contains a functionality to remove LM prefixes were used to store sort order of
-Favorite Landmarks in landmarks' names.
-Once being in Favorites folder LM inventory Item has such prefix.
-Due to another solution is implemented in EXT-3985 these prefixes should be removed.
-
-*NOTE: It will be unnecessary after the first successful session in viewer 2.0.
-Can be removed before public release.
-
-Implementation details:
-At the first run with this patch it patches all cached landmarks: removes LM sort prefixes and
-updates them on the viewer and server sides.
-Also it calls fetching agent's inventory to process not yet loaded landmarks too.
-If fetching is successfully done it will store special per-agent empty file-marker
-in the user temporary folder (where cached inventory is loaded) while caching agent's inventory.
-After that in will not affect the viewer until cached marker is removed.
-*/
-namespace LMSortPrefix
-{
-	bool cleanup_done = false;
-	const std::string getMarkerPath()
-	{
-		std::string path(gDirUtilp->getExpandedFilename(LL_PATH_CACHE, gAgentID.asString()));
-		std::string marker_filename = llformat("%s-lm_prefix_marker", path.c_str());
-
-		return marker_filename;
-	}
-	bool wasClean()
-	{
-		static bool was_clean = false;
-		static bool already_init = false;
-		if (already_init) return was_clean;
-
-		already_init = true;
-		std::string path_to_marker = getMarkerPath();
-		was_clean = LLFile::isfile(path_to_marker);
-
-		return was_clean;
-	}
-
-	void setLandmarksWereCleaned()
-	{
-		if (cleanup_done)
-		{
-			std::string path_to_marker = getMarkerPath();
-			LLFILE* file = LLFile::fopen(path_to_marker, "w");
-			if(!file)
-			{
-				llwarns << "unable to save marker that LM prefixes were removed: " << path_to_marker << llendl;
-				return;
-			}
-
-			fclose(file);
-		}
-	}
-
-	void removePrefix(LLPointer<LLViewerInventoryItem> inv_item)
-	{
-		if (wasClean())
-		{
-			LL_INFOS_ONCE("") << "Inventory was cleaned for this avatar. Patch can be removed." << LL_ENDL;
-			return;
-		}
-
-		if (LLInventoryType::IT_LANDMARK != inv_item->getInventoryType()) return;
-
-		std::string old_name = inv_item->getName();
-
-		S32 sort_field = -1;
-		std::string display_name;
-		BOOL exists = LLViewerInventoryItem::extractSortFieldAndDisplayName(old_name, &sort_field, &display_name);
-		if (exists && sort_field != -1)
-		{
-			llinfos << "Removing Landmark sort field and separator for: " << old_name << " | " << inv_item->getUUID() << llendl;
-			LLUUID parent_uuid = inv_item->getParentUUID();
-			if (gInventory.getCategory(parent_uuid))
-			{
-				llinfos << "parent folder is: " << gInventory.getCategory(parent_uuid)->getName() << llendl;
-			}
-
-
-			// mark item completed to avoid error while copying and updating server
-			inv_item->setComplete(TRUE);
-			LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(inv_item);
-			new_item->rename(display_name);
-			gInventory.updateItem(new_item);
-			new_item->updateServer(FALSE);
-
-			gInventory.notifyObservers();
-		}
-	}
-
-	void completeCleanup()
-	{
-		// background fetch is completed. can save marker
-		cleanup_done = true;
-	}
-}
-
 ///----------------------------------------------------------------------------
 /// Class LLInventoryModel
 ///----------------------------------------------------------------------------
@@ -1835,8 +1736,6 @@ void LLInventoryModel::stopBackgroundFetch()
 		gIdleCallbacks.deleteFunction(&LLInventoryModel::backgroundFetch, NULL);
 		sBulkFetchCount=0;
 		sMinTimeBetweenFetches=0.0f;
-
-		LMSortPrefix::completeCleanup();
 	}
 }
 
@@ -1983,13 +1882,6 @@ void LLInventoryModel::cache(
 	const LLUUID& parent_folder_id,
 	const LLUUID& agent_id)
 {
-	if (getRootFolderID() == parent_folder_id)
-	{
-		// *TODO: mantipov: can be removed before public release, EXT-3985
-		//save marker to avoid fetching inventory on future sessions
-		LMSortPrefix::setLandmarksWereCleaned();
-	}
-
 	lldebugs << "Caching " << parent_folder_id << " for " << agent_id
 			 << llendl;
 	LLViewerInventoryCategory* root_cat = getCategory(parent_folder_id);
@@ -2800,28 +2692,6 @@ void LLInventoryModel::buildParentChildMap()
 			// The inv tree is built.
 			mIsAgentInvUsable = true;
 
-			{// *TODO: mantipov: can be removed before public release, EXT-3985
-				/*
-				*HACK: mantipov: to cleanup landmarks were marked with sort index prefix in name.
-				Is necessary to be called once per account after EXT-3985 is implemented.
-				So, let fetch agent's inventory, processing will be done in processInventoryDescendents()
-				Should be removed before public release.
-				*/
-				if (!LMSortPrefix::wasClean())
-				{
-					cat_array_t cats;
-					item_array_t items;
-					collectDescendents(agent_inv_root_id, cats, items, INCLUDE_TRASH);
-
-					for (item_array_t::const_iterator it= items.begin(); it != items.end(); ++it)
-					{
-						LMSortPrefix::removePrefix(*it);
-					}
-
-					gInventory.startBackgroundFetch(agent_inv_root_id);
-				}
-			}
-
 			llinfos << "Inventory initialized, notifying observers" << llendl;
 			addChangedMask(LLInventoryObserver::ALL, LLUUID::null);
 			notifyObservers();
@@ -3587,10 +3457,6 @@ void LLInventoryModel::processInventoryDescendents(LLMessageSystem* msg,void**)
 			continue;
 		}
 		gInventory.updateItem(titem);
-
-		{// *TODO: mantipov: can be removed before public release, EXT-3985
-			LMSortPrefix::removePrefix(titem);
-		}
 	}
 
 	// set version and descendentcount according to message.
-- 
GitLab


From 19ba010137a2b43759cbe5d871fb430784e15db2 Mon Sep 17 00:00:00 2001
From: Dmitry Zaporozhan <dzaporozhan@productengine.com>
Date: Wed, 3 Feb 2010 12:49:38 +0200
Subject: [PATCH 460/521] Fixed low bug EXT-4802 - Clearing whole teleport
 history doesn't clear TP history from nav bar

--HG--
branch : product-engine
---
 indra/newview/llpanelteleporthistory.cpp | 3 +++
 indra/newview/llteleporthistory.cpp      | 2 ++
 2 files changed, 5 insertions(+)

diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index 43e0f9a88ce..90c8f2551f1 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -940,6 +940,9 @@ bool LLTeleportHistoryPanel::onClearTeleportHistoryDialog(const LLSD& notificati
 
 	if (0 == option)
 	{
+		// order does matter, call this first or teleport history will contain one record(current location)
+		LLTeleportHistory::getInstance()->purgeItems();
+
 		LLTeleportHistoryStorage *th = LLTeleportHistoryStorage::getInstance();
 		th->purgeItems();
 		th->save();
diff --git a/indra/newview/llteleporthistory.cpp b/indra/newview/llteleporthistory.cpp
index ce00dec802d..dcc85392f7e 100644
--- a/indra/newview/llteleporthistory.cpp
+++ b/indra/newview/llteleporthistory.cpp
@@ -173,6 +173,8 @@ void LLTeleportHistory::purgeItems()
 	// reset the count
 	mRequestedItem = -1;
 	mCurrentItem = 0;
+
+	onHistoryChanged();
 }
 
 // static
-- 
GitLab


From 2a755eca16567e9566007e9771cce78b3f92bc0b Mon Sep 17 00:00:00 2001
From: Dmitry Zaporozhan <dzaporozhan@productengine.com>
Date: Wed, 3 Feb 2010 14:44:32 +0200
Subject: [PATCH 461/521] Fixed normal bug EXT-4766 - System notifications in
 nearby chat has default avatar icon and behave like sent from object

--HG--
branch : product-engine
---
 indra/newview/llviewermessage.cpp | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 26c9a1dd796..3bf0fb6f71b 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -2181,6 +2181,12 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 				chat.mFromID = from_id ^ gAgent.getSessionID();
 			}
 
+			if(SYSTEM_FROM == name)
+			{
+				// System's UUID is NULL (fixes EXT-4766)
+				chat.mFromID = from_id = LLUUID::null;
+			}
+
 			LLSD query_string;
 			query_string["owner"] = from_id;
 			query_string["slurl"] = location;
-- 
GitLab


From cc98d2f034a5109a05b40bd88dfa8dd6b6f7d275 Mon Sep 17 00:00:00 2001
From: Dmitry Zaporozhan <dzaporozhan@productengine.com>
Date: Wed, 3 Feb 2010 14:51:02 +0200
Subject: [PATCH 462/521] Updated comment for ticket EXT-4772(No new IM
 notification when in tabbed IM mode)

--HG--
branch : product-engine
---
 indra/newview/llimfloater.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 4a18c8640f4..36f7304074d 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -515,7 +515,7 @@ BOOL LLIMFloater::getVisible()
 	if(isChatMultiTab())
 	{
 		LLIMFloaterContainer* im_container = LLIMFloaterContainer::getInstance();
-		// Tabbed IM window is "visible" when we minimize it.
+		// getVisible() returns TRUE when Tabbed IM window is minimized.
 		return !im_container->isMinimized() && im_container->getVisible();
 	}
 	else
-- 
GitLab


From 8c9c30116878eb5034531b44c87fd9309e36ec13 Mon Sep 17 00:00:00 2001
From: Dmitry Zaporozhan <dzaporozhan@productengine.com>
Date: Wed, 3 Feb 2010 15:10:03 +0200
Subject: [PATCH 463/521] Fixed normal bug EXT-4873 - Homepage field in My
 Profile (edit) no longer appears

--HG--
branch : product-engine
---
 indra/newview/llpanelavatar.cpp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp
index 48dd5513bdc..0423cf75fae 100644
--- a/indra/newview/llpanelavatar.cpp
+++ b/indra/newview/llpanelavatar.cpp
@@ -582,6 +582,9 @@ void LLPanelAvatarProfile::processProfileProperties(const LLAvatarData* avatar_d
 {
 	fillCommonData(avatar_data);
 
+	// Hide home page textbox if no page was set to fix "homepage URL appears clickable without URL - EXT-4734"
+	childSetVisible("homepage_edit", !avatar_data->profile_url.empty());
+
 	fillPartnerData(avatar_data);
 
 	fillAccountStatus(avatar_data);
@@ -635,9 +638,6 @@ void LLPanelAvatarProfile::fillCommonData(const LLAvatarData* avatar_data)
 	childSetValue("2nd_life_pic", avatar_data->image_id);
 	childSetValue("real_world_pic", avatar_data->fl_image_id);
 	childSetValue("homepage_edit", avatar_data->profile_url);
-
-	// Hide home page textbox if no page was set to fix "homepage URL appears clickable without URL - EXT-4734"
-	childSetVisible("homepage_edit", !avatar_data->profile_url.empty());
 }
 
 void LLPanelAvatarProfile::fillPartnerData(const LLAvatarData* avatar_data)
-- 
GitLab


From a9aa9f41188c78b4025bea7657ead279a2877fd5 Mon Sep 17 00:00:00 2001
From: Dmitry Zaporozhan <dzaporozhan@productengine.com>
Date: Wed, 3 Feb 2010 15:21:08 +0200
Subject: [PATCH 464/521] Update for normal bug EXT-4873 - Homepage field in My
 Profile (edit) no longer appears

--HG--
branch : product-engine
---
 indra/newview/llpanelavatar.cpp | 6 +++---
 indra/newview/llpanelme.cpp     | 4 ++++
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp
index 0423cf75fae..48dd5513bdc 100644
--- a/indra/newview/llpanelavatar.cpp
+++ b/indra/newview/llpanelavatar.cpp
@@ -582,9 +582,6 @@ void LLPanelAvatarProfile::processProfileProperties(const LLAvatarData* avatar_d
 {
 	fillCommonData(avatar_data);
 
-	// Hide home page textbox if no page was set to fix "homepage URL appears clickable without URL - EXT-4734"
-	childSetVisible("homepage_edit", !avatar_data->profile_url.empty());
-
 	fillPartnerData(avatar_data);
 
 	fillAccountStatus(avatar_data);
@@ -638,6 +635,9 @@ void LLPanelAvatarProfile::fillCommonData(const LLAvatarData* avatar_data)
 	childSetValue("2nd_life_pic", avatar_data->image_id);
 	childSetValue("real_world_pic", avatar_data->fl_image_id);
 	childSetValue("homepage_edit", avatar_data->profile_url);
+
+	// Hide home page textbox if no page was set to fix "homepage URL appears clickable without URL - EXT-4734"
+	childSetVisible("homepage_edit", !avatar_data->profile_url.empty());
 }
 
 void LLPanelAvatarProfile::fillPartnerData(const LLAvatarData* avatar_data)
diff --git a/indra/newview/llpanelme.cpp b/indra/newview/llpanelme.cpp
index 0f0fb4b94ea..ea66ef7d2c1 100644
--- a/indra/newview/llpanelme.cpp
+++ b/indra/newview/llpanelme.cpp
@@ -198,6 +198,10 @@ void LLPanelMyProfileEdit::processProfileProperties(const LLAvatarData* avatar_d
 {
 	fillCommonData(avatar_data);
 
+	// 'Home page' was hidden in LLPanelAvatarProfile::fillCommonData() to fix  EXT-4734
+	// Show 'Home page' in Edit My Profile (EXT-4873)
+	childSetVisible("homepage_edit", true);
+
 	fillPartnerData(avatar_data);
 
 	fillAccountStatus(avatar_data);
-- 
GitLab


From 6ebbc5edf6c95f68088577f82b2c1daf73b68205 Mon Sep 17 00:00:00 2001
From: Alexei Arabadji <aarabadji@productengine.com>
Date: Wed, 3 Feb 2010 16:15:34 +0200
Subject: [PATCH 465/521] =?UTF-8?q?fixed=20EXT-4764=20=E2=80=9CForbid=20co?=
 =?UTF-8?q?nnecting=20to=20different=20voice=20channels=20at=20once?=
 =?UTF-8?q?=E2=80=9D,=20removed=20redundant=20call=20status=20notification?=
 =?UTF-8?q?s:=20ringing,=20connected,=20hang=5Fup,=20unavailable,=20answer?=
 =?UTF-8?q?ing;?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

--HG--
branch : product-engine
---
 indra/newview/llimview.cpp           | 42 ----------------------------
 indra/newview/llimview.h             | 10 -------
 indra/newview/llviewerfloaterreg.cpp |  1 -
 indra/newview/llvoicechannel.cpp     | 18 ++++++++----
 4 files changed, 12 insertions(+), 59 deletions(-)

diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index db6b2041f8e..9a3a4c01257 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -2985,48 +2985,6 @@ class LLViewerChatterBoxInvitation : public LLHTTPNode
 	}
 };
 
-LLCallInfoDialog::LLCallInfoDialog(const LLSD& payload) : LLCallDialog(payload)
-{
-}
-
-BOOL LLCallInfoDialog::postBuild()
-{
-	// init notification's lifetime
-	std::istringstream ss( getString("lifetime") );
-	if (!(ss >> mLifetime))
-	{
-		mLifetime = DEFAULT_LIFETIME;
-	}
-	return LLCallDialog::postBuild();
-}
-
-void LLCallInfoDialog::onOpen(const LLSD& key)
-{
-	if(key.has("msg"))
-	{
-		std::string msg = key["msg"];
-		getChild<LLTextBox>("msg")->setValue(msg);
-	}
-
-	mLifetimeTimer.start();
-}
-
-void LLCallInfoDialog::show(const std::string& status_name, const LLSD& args)
-{
-	LLUIString message = LLTrans::getString(status_name);
-	message.setArgs(args);
-
-	LLSD payload;
-	payload["msg"] = message;
-	LLFloater* inst = LLFloaterReg::findInstance("call_info");
-
-	// avoid recreate instance with the same message
-	if (inst == NULL || message.getString() != inst->getChild<LLTextBox>("msg")->getValue())
-	{
-		LLFloaterReg::showInstance("call_info", payload);
-	}
-}
-
 LLHTTPRegistration<LLViewerChatterBoxSessionStartReply>
    gHTTPRegistrationMessageChatterboxsessionstartreply(
 	   "/message/ChatterBoxSessionStartReply");
diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h
index b573490fa3c..1c7aaa3f1bc 100644
--- a/indra/newview/llimview.h
+++ b/indra/newview/llimview.h
@@ -530,16 +530,6 @@ class LLOutgoingCallDialog : public LLCallDialog
 	void hideAllText();
 };
 
-class LLCallInfoDialog : public LLCallDialog
-{
-public:
-	LLCallInfoDialog(const LLSD& payload);
-	/*virtual*/ BOOL postBuild();
-	/*virtual*/ void onOpen(const LLSD& key);
-
-	static void show(const std::string& status_name, const LLSD& args);
-};
-
 // Globals
 extern LLIMMgr *gIMMgr;
 
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index 658d1c9ddd4..29114c33c52 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -200,7 +200,6 @@ void LLViewerFloaterReg::registerFloaters()
 
 	LLFloaterReg::add("openobject", "floater_openobject.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterOpenObject>);
 	LLFloaterReg::add("outgoing_call", "floater_outgoing_call.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLOutgoingCallDialog>);
-	LLFloaterReg::add("call_info", "floater_call_info.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLCallInfoDialog>);
 	LLFloaterReg::add("parcel_info", "floater_preview_url.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterParcelInfo>);
 	LLFloaterPayUtil::registerFloater();
 
diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp
index 9d49fb69d61..bb09a18cc31 100644
--- a/indra/newview/llvoicechannel.cpp
+++ b/indra/newview/llvoicechannel.cpp
@@ -389,13 +389,16 @@ void LLVoiceChannel::setState(EState state)
 	switch(state)
 	{
 	case STATE_RINGING:
-		LLCallInfoDialog::show("ringing", mNotifyArgs);
+		//TODO: remove or redirect this call status notification
+//		LLCallInfoDialog::show("ringing", mNotifyArgs);
 		break;
 	case STATE_CONNECTED:
-		LLCallInfoDialog::show("connected", mNotifyArgs);
+		//TODO: remove or redirect this call status notification
+//		LLCallInfoDialog::show("connected", mNotifyArgs);
 		break;
 	case STATE_HUNG_UP:
-		LLCallInfoDialog::show("hang_up", mNotifyArgs);
+		//TODO: remove or redirect this call status notification
+//		LLCallInfoDialog::show("hang_up", mNotifyArgs);
 		break;
 	default:
 		break;
@@ -635,7 +638,8 @@ void LLVoiceChannelGroup::setState(EState state)
 	case STATE_RINGING:
 		if ( !mIsRetrying )
 		{
-			LLCallInfoDialog::show("ringing", mNotifyArgs);
+			//TODO: remove or redirect this call status notification
+//			LLCallInfoDialog::show("ringing", mNotifyArgs);
 		}
 
 		doSetState(state);
@@ -701,7 +705,8 @@ void LLVoiceChannelProximal::handleStatusChange(EStatusType status)
 		//skip showing "Voice not available at your current location" when agent voice is disabled (EXT-4749)
 		if(LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking())
 		{
-			LLCallInfoDialog::show("unavailable", mNotifyArgs);
+			//TODO: remove or redirect this call status notification
+//			LLCallInfoDialog::show("unavailable", mNotifyArgs);
 		}
 		return;
 	default:
@@ -901,7 +906,8 @@ void LLVoiceChannelP2P::setState(EState state)
 		// so provide a special purpose message here
 		if (mReceivedCall && state == STATE_RINGING)
 		{
-			LLCallInfoDialog::show("answering", mNotifyArgs);
+			//TODO: remove or redirect this call status notification
+//			LLCallInfoDialog::show("answering", mNotifyArgs);
 			doSetState(state);
 			return;
 		}
-- 
GitLab


From cb03e6f92a5d89056ef83e97fe436a165bb3ae78 Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Wed, 3 Feb 2010 16:25:32 +0200
Subject: [PATCH 466/521] fixed EXT-4776 Make avatars in nearby chat
 inspectable

--HG--
branch : product-engine
---
 indra/newview/llchathistory.cpp               | 30 +++++++++++++++++++
 .../default/xui/en/panel_chat_header.xml      |  7 +++--
 2 files changed, 34 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index 64226ac52b6..a351c52ce20 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -53,7 +53,9 @@
 #include "llagent.h"
 #include "llnotificationsutil.h"
 #include "lltoastnotifypanel.h"
+#include "lltooltip.h"
 #include "llviewerregion.h"
+#include "llviewertexteditor.h"
 #include "llworld.h"
 #include "lluiconstants.h"
 
@@ -111,6 +113,34 @@ class LLChatHistoryHeader: public LLPanel
 		return LLPanel::handleMouseUp(x,y,mask);
 	}
 
+	//*TODO remake it using mouse enter/leave and static LLHandle<LLIconCtrl> to add/remove as a child
+	BOOL handleToolTip(S32 x, S32 y, MASK mask)
+	{
+		LLViewerTextEditor* name = getChild<LLViewerTextEditor>("user_name");
+		if (name && name->parentPointInView(x, y) && mAvatarID.notNull() && SYSTEM_FROM != mFrom)
+		{
+
+			// Spawn at right side of the name textbox.
+			LLRect sticky_rect = name->calcScreenRect();
+			S32 icon_x = llmin(sticky_rect.mLeft + name->getTextBoundingRect().getWidth() + 7, sticky_rect.mRight - 3);
+
+			LLToolTip::Params params;
+			params.background_visible(false);
+			params.click_callback(boost::bind(&LLChatHistoryHeader::onHeaderPanelClick, this, 0, 0, 0));
+			params.delay_time(0.0f);		// spawn instantly on hover
+			params.image(LLUI::getUIImage("Info_Small"));
+			params.message("");
+			params.padding(0);
+			params.pos(LLCoordGL(icon_x, sticky_rect.mTop - 2));
+			params.sticky_rect(sticky_rect);
+
+			LLToolTipMgr::getInstance()->show(params);
+			return TRUE;
+		}
+
+		return LLPanel::handleToolTip(x, y, mask);
+	}
+
 	void onObjectIconContextMenuItemClicked(const LLSD& userdata)
 	{
 		std::string level = userdata.asString();
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 39c4923f122..89d632c4c6d 100644
--- a/indra/newview/skins/default/xui/en/panel_chat_header.xml
+++ b/indra/newview/skins/default/xui/en/panel_chat_header.xml
@@ -21,19 +21,20 @@
          width="18" />
     <text_editor
       allow_scroll="false"
-      v_pad = "0"
+      v_pad = "7"
       read_only = "true"
       follows="left|right"
       font.style="BOLD"
-      height="12"
+      height="24"
       layout="topleft"
       left_pad="5"
       right="-120"
       name="user_name"
       text_color="white"
       bg_readonly_color="black"
-      top="8"
+      top="0"
       use_ellipses="true"
+      valign="bottom" 
       value="Ericag Vader" />
     <text
             font="SansSerifSmall"
-- 
GitLab


From 11f732bbbe910c2a63efaeb9044d206142d69e2f Mon Sep 17 00:00:00 2001
From: Andrew Dyukov <adyukov@productengine.com>
Date: Wed, 3 Feb 2010 16:37:32 +0200
Subject: [PATCH 467/521] No ticket. Added comments regarding EXT-4758 and
 LLVoiceClient::voiceWorking() in general to clear things up a bit.

--HG--
branch : product-engine
---
 indra/newview/llvoiceclient.cpp | 2 ++
 indra/newview/llvoiceclient.h   | 1 +
 2 files changed, 3 insertions(+)

diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index 7c6ba33553e..431e9625c48 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -5979,8 +5979,10 @@ bool LLVoiceClient::voiceEnabled()
 	return gSavedSettings.getBOOL("EnableVoiceChat") && !gSavedSettings.getBOOL("CmdLineDisableVoice");
 }
 
+//AD *TODO: investigate possible merge of voiceWorking() and voiceEnabled() into one non-static method
 bool LLVoiceClient::voiceWorking()
 {
+	//Added stateSessionTerminated state to avoid problems with call in parcels with disabled voice (EXT-4758)
 	return (stateLoggedIn <= mState) && (mState <= stateSessionTerminated);
 }
 
diff --git a/indra/newview/llvoiceclient.h b/indra/newview/llvoiceclient.h
index 8f668dff196..a96cf18e276 100644
--- a/indra/newview/llvoiceclient.h
+++ b/indra/newview/llvoiceclient.h
@@ -192,6 +192,7 @@ static	void updatePosition(void);
 		void setVoiceEnabled(bool enabled);
 		static bool voiceEnabled();
 		// Checks is voice working judging from mState
+		// Returns true if vivox has successfully logged in and is not in error state
 		bool voiceWorking();
 		void setUsePTT(bool usePTT);
 		void setPTTIsToggle(bool PTTIsToggle);
-- 
GitLab


From 57234d2744cd55a513a885a0b5e78e0b33ceebbf Mon Sep 17 00:00:00 2001
From: Ychebotarev ProductEngine <ychebotarev@productengine.com>
Date: Wed, 3 Feb 2010 16:42:06 +0200
Subject: [PATCH 468/521] fix CRASH in roles tab in group info panel. no
 ticket...

--HG--
branch : product-engine
---
 indra/newview/skins/default/xui/en/panel_group_roles.xml | 4 ++++
 1 file changed, 4 insertions(+)

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 f19057cae38..25a0213bdea 100644
--- a/indra/newview/skins/default/xui/en/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_roles.xml
@@ -493,6 +493,10 @@ things in this group. There&apos;s a broad variety of Abilities.
          tool_tip="For details of each allowed ability see the abilities tab"
          top_pad="0"
          width="300">
+            <scroll_list.columns
+             label=""
+             name="icon"
+             width="2" />
             <scroll_list.columns
              label=""
              name="checkbox"
-- 
GitLab


From 5bcf9661c5d9724191030896d4db61c57146a062 Mon Sep 17 00:00:00 2001
From: Andrew Dyukov <adyukov@productengine.com>
Date: Wed, 3 Feb 2010 16:48:15 +0200
Subject: [PATCH 469/521] Fixed normal bug EXT-4796 (Linux only: Call Group
 button blinks while Group Chat).

- Removed updateCallButton() call from draw() and added it to LLIMFloater::sessionInitReplyReceived() to enable "Call" button when session is initialized.

--HG--
branch : product-engine
---
 indra/newview/llimfloater.cpp           | 6 ++++++
 indra/newview/llpanelimcontrolpanel.cpp | 2 --
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 36f7304074d..1eac90371d8 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -572,6 +572,12 @@ void LLIMFloater::sessionInitReplyReceived(const LLUUID& im_session_id)
 		setKey(im_session_id);
 		mControlPanel->setSessionId(im_session_id);
 	}
+
+	// updating "Call" button from group control panel here to enable it without placing into draw() (EXT-4796)
+	if(gAgent.isInGroup(im_session_id))
+	{
+		mControlPanel->updateCallButton();
+	}
 	
 	//*TODO here we should remove "starting session..." warning message if we added it in postBuild() (IB)
 
diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp
index ff1e43b5268..d491583b564 100644
--- a/indra/newview/llpanelimcontrolpanel.cpp
+++ b/indra/newview/llpanelimcontrolpanel.cpp
@@ -280,8 +280,6 @@ void LLPanelGroupControlPanel::draw()
 	// Need to resort the participant list if it's in sort by recent speaker order.
 	if (mParticipantList)
 		mParticipantList->updateRecentSpeakersOrder();
-	//* TODO: find better way to properly enable call button for group and remove this call from draw()
-	updateCallButton();
 	LLPanelChatControlPanel::draw();
 }
 
-- 
GitLab


From 5ec6cc4fe1ff4c042b31285e62683eb3f4e9c73d Mon Sep 17 00:00:00 2001
From: Denis Serdjuk <dserduk@productengine.com>
Date: Wed, 3 Feb 2010 16:52:29 +0200
Subject: [PATCH 470/521] fixed critical  Bug  EXT-4831 [NUX] Parcel property
 icons are off by default Default value of 'NavBarShowParcelProperties' has
 been changed

--HG--
branch : product-engine
---
 indra/newview/app_settings/settings.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 62197406b65..793d7b62071 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -7802,7 +7802,7 @@
       <key>Type</key>
       <string>Boolean</string>
       <key>Value</key>
-      <integer>1</integer>
+      <integer>0</integer>
     </map>
     <key>ShowCrosshairs</key>
     <map>
-- 
GitLab


From 906ee0cc6348fc3cce70f971f3009924550c24be Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Wed, 3 Feb 2010 16:57:24 +0200
Subject: [PATCH 471/521] fix for reopened EXT-4578  Noninteractive voice
 notifications should have close affordance

--HG--
branch : product-engine
---
 indra/newview/llimview.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 9a3a4c01257..0c64c2b0329 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -1709,6 +1709,8 @@ BOOL LLOutgoingCallDialog::postBuild()
 
 	childSetAction("Cancel", onCancel, this);
 
+	setCanDrag(FALSE);
+
 	return success;
 }
 
@@ -1808,6 +1810,8 @@ BOOL LLIncomingCallDialog::postBuild()
 		mLifetimeTimer.stop();
 	}
 
+	setCanDrag(FALSE);
+
 	return TRUE;
 }
 
-- 
GitLab


From cabf4f5d58410e9c1fb8c06b0f40900119d37fa7 Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Wed, 3 Feb 2010 17:06:57 +0200
Subject: [PATCH 472/521] Fixed critical bug EXT-4836 ([NUX] Add text to empty
 Friends tab in People Panel) - added an appropriate message into My Friends
 tab when avatar has no friends. - "global search" & "try the Map" are made as
 url to appropriate floaters

--HG--
branch : product-engine
---
 indra/newview/llpanelpeople.cpp                     |  5 +++++
 indra/newview/skins/default/xui/en/panel_people.xml | 11 +++++++++++
 2 files changed, 16 insertions(+)

diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index fb6f36d4da6..423ee61e25f 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -667,6 +667,11 @@ void LLPanelPeople::updateFriendList()
 		lldebugs << "Friends Cards were not found" << llendl;
 	}
 
+	// show special help text for just created account to help found friends. EXT-4836
+	static LLTextBox* no_friends_text = getChild<LLTextBox>("no_friends_msg");
+	no_friends_text->setVisible(all_friendsp.size() == 0);
+
+
 	LLAvatarTracker::buddy_map_t::const_iterator buddy_it = all_buddies.begin();
 	for (; buddy_it != all_buddies.end(); ++buddy_it)
 	{
diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml
index 9b83e0c68eb..3b5add33a88 100644
--- a/indra/newview/skins/default/xui/en/panel_people.xml
+++ b/indra/newview/skins/default/xui/en/panel_people.xml
@@ -160,6 +160,17 @@ background_visible="true"
                          width="313" />
                 </accordion_tab>
             </accordion>
+            <text
+             follows="all"
+             height="450"
+             left="10"
+             name="no_friends_msg"
+             top="10"
+             width="293"
+             wrap="true">
+                To add friends try [secondlife:///app/search/people global search] or click on a user to add them as a friend.
+If you're looking for people to hang out with, [secondlife:///app/worldmap try the Map].
+             </text>
             <panel
              follows="left|right|bottom"
              height="30"
-- 
GitLab


From 3689b28bf7066a750d24dbb34a809a6d2fa953ed Mon Sep 17 00:00:00 2001
From: Ychebotarev ProductEngine <ychebotarev@productengine.com>
Date: Wed, 3 Feb 2010 17:14:04 +0200
Subject: [PATCH 473/521] merge

--HG--
branch : product-engine
---
 indra/newview/llgroupmgr.cpp | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp
index 8bd0e520c35..72a52ba13b4 100644
--- a/indra/newview/llgroupmgr.cpp
+++ b/indra/newview/llgroupmgr.cpp
@@ -1714,6 +1714,8 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id,
 	for (std::vector<LLUUID>::iterator it = member_ids.begin();
 		 it != member_ids.end(); ++it)
 	{
+		LLUUID& ejected_member_id = (*it);
+		
 		// Can't use 'eject' to leave a group.
 		if ((*it) == gAgent.getID()) continue;
 
@@ -1734,7 +1736,7 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id,
 			}
 			
 			msg->nextBlock("EjectData");
-			msg->addUUID("EjecteeID",(*it));
+			msg->addUUID("EjecteeID",ejected_member_id);
 
 			if (msg->isSendFull())
 			{
@@ -1746,13 +1748,15 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id,
 			for (LLGroupMemberData::role_list_t::iterator rit = (*mit).second->roleBegin();
 				 rit != (*mit).second->roleEnd(); ++rit)
 			{
-				if ((*rit).first.notNull())
+				if ((*rit).first.notNull() && (*rit).second!=0)
 				{
-					(*rit).second->removeMember(*it);
+					(*rit).second->removeMember(ejected_member_id);
 				}
 			}
-			delete (*mit).second;
+			
 			group_datap->mMembers.erase(*it);
+			
+			delete (*mit).second;
 		}
 	}
 
-- 
GitLab


From 005ec1479021e698714dcdc4bab189af6fcf5ff4 Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Wed, 3 Feb 2010 17:18:59 +0200
Subject: [PATCH 474/521] implemented EXT-4889 Please add Pay button to IM
 window

--HG--
branch : product-engine
---
 .../default/xui/en/panel_im_control_panel.xml   | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
index 9279d1e686a..3fd75d57555 100644
--- a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
+++ b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
@@ -112,6 +112,23 @@
              name="share_btn"
              width="100" />
         </layout_panel>
+        <layout_panel
+         auto_resize="false"
+         follows="top|left|right"
+         height="25"
+         layout="topleft"
+         min_height="25"
+         width="100"
+         name="share_btn_panel"
+         user_resize="false">
+           <button
+             auto_resize="true"
+             follows="left|top|right"
+             height="23"
+             label="Pay"
+             name="pay_btn"
+             width="100" />
+        </layout_panel>
         <layout_panel
          auto_resize="false"
          follows="top|left|right"
-- 
GitLab


From f7594c713d93f397440c4af2f566a33f1b6af099 Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Wed, 3 Feb 2010 17:42:23 +0200
Subject: [PATCH 475/521] fixed EXT-4737 Nearby chat edit field doesn't get
 focus after pasting

--HG--
branch : product-engine
---
 indra/newview/llbottomtray.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index a2d594cfa21..0102e9488ea 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -474,6 +474,7 @@ void LLBottomTray::onContextMenuItemClicked(const LLSD& userdata)
 	else if (item == "paste")
 	{
 		edit_box->paste();
+		edit_box->setFocus(TRUE);
 	}
 	else if (item == "delete")
 	{
-- 
GitLab


From 594b1ac679a502f92db477e3f09441e361f72c93 Mon Sep 17 00:00:00 2001
From: "Eric M. Tulla (BigPapi)" <tulla@lindenlab.com>
Date: Wed, 3 Feb 2010 11:42:03 -0500
Subject: [PATCH 476/521] EXT-4868: Callback was getting triggered at shutdown,
 leading to crash. Now test isExiting() first. -Reviewed by vir

---
 indra/newview/llagentwearables.cpp | 2 +-
 indra/newview/llappearancemgr.cpp  | 5 ++++-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index b0ff3a56261..3249d0b31f4 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -2300,7 +2300,7 @@ class LLLibraryOutfitsCopyDone: public LLInventoryCallback
 	
 	virtual ~LLLibraryOutfitsCopyDone()
 	{
-		if (mLibraryOutfitsFetcher)
+		if (!!LLApp::isExiting() && mLibraryOutfitsFetcher)
 		{
 			gInventory.addObserver(mLibraryOutfitsFetcher);
 			mLibraryOutfitsFetcher->done();
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 5088c651222..fa1bfdb5ab8 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -279,7 +279,10 @@ class LLUpdateAppearanceOnDestroy: public LLInventoryCallback
 
 	virtual ~LLUpdateAppearanceOnDestroy()
 	{
-		LLAppearanceManager::instance().updateAppearanceFromCOF();
+		if (!!LLApp::isExiting())
+		{
+			LLAppearanceManager::instance().updateAppearanceFromCOF();
+		}
 	}
 
 	/* virtual */ void fire(const LLUUID& inv_item)
-- 
GitLab


From 677f51378e1afc338e92770e56905fe0ff184bc2 Mon Sep 17 00:00:00 2001
From: Dmitry Zaporozhan <dzaporozhan@productengine.com>
Date: Wed, 3 Feb 2010 19:11:44 +0200
Subject: [PATCH 477/521] Fixed normal bug EXT-2124 - [BSI] New notifications
 of group chat messages do not identify the destination group chat of message

--HG--
branch : product-engine
---
 indra/newview/lltoastimpanel.cpp              | 89 +++++++++++++------
 indra/newview/lltoastimpanel.h                |  3 +
 .../default/xui/en/panel_instant_message.xml  | 11 +++
 3 files changed, 78 insertions(+), 25 deletions(-)

diff --git a/indra/newview/lltoastimpanel.cpp b/indra/newview/lltoastimpanel.cpp
index a436dc05460..7ae24042036 100644
--- a/indra/newview/lltoastimpanel.cpp
+++ b/indra/newview/lltoastimpanel.cpp
@@ -37,6 +37,7 @@
 #include "llfloaterreg.h"
 #include "llgroupactions.h"
 #include "llgroupiconctrl.h"
+#include "llimview.h"
 #include "llnotifications.h"
 #include "llinstantmessage.h"
 #include "lltooltip.h"
@@ -52,9 +53,9 @@ LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) :	LLToastPanel(p.notif
 {
 	LLUICtrlFactory::getInstance()->buildPanel(this, "panel_instant_message.xml");
 
-	LLIconCtrl* sys_msg_icon = getChild<LLIconCtrl>("sys_msg_icon");
 	mGroupIcon = getChild<LLGroupIconCtrl>("group_icon");
 	mAvatarIcon = getChild<LLAvatarIconCtrl>("avatar_icon");
+	mAdhocIcon = getChild<LLAvatarIconCtrl>("adhoc_icon");
 	mAvatarName = getChild<LLTextBox>("user_name");
 	mTime = getChild<LLTextBox>("time_box");
 	mMessage = getChild<LLTextBox>("message");
@@ -90,27 +91,7 @@ LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) :	LLToastPanel(p.notif
 	mAvatarID = p.avatar_id;
 	mNotification = p.notification;
 
-	mAvatarIcon->setVisible(FALSE);
-	mGroupIcon->setVisible(FALSE);
-	sys_msg_icon->setVisible(FALSE);
-
-	if(p.from == SYSTEM_FROM)
-	{
-		sys_msg_icon->setVisible(TRUE);
-	}
-	else
-	{
-		if(LLGroupActions::isInGroup(mSessionID))
-		{
-			mGroupIcon->setVisible(TRUE);
-			mGroupIcon->setValue(p.session_id);
-		}
-		else
-		{
-			mAvatarIcon->setVisible(TRUE);
-			mAvatarIcon->setValue(p.avatar_id);
-		}
-	}
+	initIcon();
 
 	S32 maxLinesCount;
 	std::istringstream ss( getString("message_max_lines_count") );
@@ -162,13 +143,27 @@ BOOL LLToastIMPanel::handleToolTip(S32 x, S32 y, MASK mask)
 
 void LLToastIMPanel::showInspector()
 {
-	if(LLGroupActions::isInGroup(mSessionID))
+	LLIMModel::LLIMSession* im_session = LLIMModel::getInstance()->findIMSession(mSessionID);
+	if(!im_session)
 	{
-		LLFloaterReg::showInstance("inspect_group", LLSD().with("group_id", mSessionID));
+		llwarns << "Invalid IM session" << llendl;
+		return;
 	}
-	else
+
+	switch(im_session->mSessionType)
 	{
+	case LLIMModel::LLIMSession::P2P_SESSION:
 		LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", mAvatarID));
+		break;
+	case LLIMModel::LLIMSession::GROUP_SESSION:
+		LLFloaterReg::showInstance("inspect_group", LLSD().with("group_id", mSessionID));
+		break;
+	case LLIMModel::LLIMSession::ADHOC_SESSION:
+		LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", im_session->mOtherParticipantID));
+		break;
+	default:
+		llwarns << "Unknown IM session type" << llendl;
+		break;
 	}
 }
 
@@ -217,4 +212,48 @@ void LLToastIMPanel::spawnGroupIconToolTip()
 	LLToolTipMgr::getInstance()->show(params);
 }
 
+void LLToastIMPanel::initIcon()
+{
+	LLIconCtrl* sys_msg_icon = getChild<LLIconCtrl>("sys_msg_icon");
+
+	mAvatarIcon->setVisible(FALSE);
+	mGroupIcon->setVisible(FALSE);
+	sys_msg_icon->setVisible(FALSE);
+	mAdhocIcon->setVisible(FALSE);
+
+	if(mAvatarName->getValue().asString() == SYSTEM_FROM)
+	{
+		sys_msg_icon->setVisible(TRUE);
+	}
+	else
+	{
+		LLIMModel::LLIMSession* im_session = LLIMModel::getInstance()->findIMSession(mSessionID);
+		if(!im_session)
+		{
+			llwarns << "Invalid IM session" << llendl;
+			return;
+		}
+
+		switch(im_session->mSessionType)
+		{
+		case LLIMModel::LLIMSession::P2P_SESSION:
+			mAvatarIcon->setVisible(TRUE);
+			mAvatarIcon->setValue(mAvatarID);
+			break;
+		case LLIMModel::LLIMSession::GROUP_SESSION:
+			mGroupIcon->setVisible(TRUE);
+			mGroupIcon->setValue(mSessionID);
+			break;
+		case LLIMModel::LLIMSession::ADHOC_SESSION:
+			mAdhocIcon->setVisible(TRUE);
+			mAdhocIcon->setValue(im_session->mOtherParticipantID);
+			mAdhocIcon->setToolTip(im_session->mName);
+			break;
+		default:
+			llwarns << "Unknown IM session type" << llendl;
+			break;
+		}
+	}
+}
+
 // EOF
diff --git a/indra/newview/lltoastimpanel.h b/indra/newview/lltoastimpanel.h
index 444c0af1447..cf4ad806377 100644
--- a/indra/newview/lltoastimpanel.h
+++ b/indra/newview/lltoastimpanel.h
@@ -66,6 +66,8 @@ class LLToastIMPanel: public LLToastPanel
 	void spawnNameToolTip();
 	void spawnGroupIconToolTip();
 
+	void initIcon();
+
 	static const S32 DEFAULT_MESSAGE_MAX_LINE_COUNT;
 
 	LLNotificationPtr	mNotification;
@@ -73,6 +75,7 @@ class LLToastIMPanel: public LLToastPanel
 	LLUUID				mAvatarID;
 	LLAvatarIconCtrl*	mAvatarIcon;
 	LLGroupIconCtrl*	mGroupIcon;
+	LLAvatarIconCtrl*	mAdhocIcon;
 	LLTextBox*			mAvatarName;
 	LLTextBox*			mTime;
 	LLTextBox*			mMessage;
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 5a1bc32db0e..a0ad38cf76e 100644
--- a/indra/newview/skins/default/xui/en/panel_instant_message.xml
+++ b/indra/newview/skins/default/xui/en/panel_instant_message.xml
@@ -45,6 +45,17 @@
          name="group_icon"
          top="3"
          width="18" />
+        <avatar_icon
+         color="Green"
+         follows="right"
+         height="18"
+         image_name="Generic_Person"
+         layout="topleft"
+         left="3"
+         mouse_opaque="false"
+         name="adhoc_icon"
+         top="3"
+         width="18" />
         <!--<icon
          follows="right"
          height="20"
-- 
GitLab


From 7e1911baa23c2c7491c5089015d8f9b30df5ce01 Mon Sep 17 00:00:00 2001
From: Eugene Mutavchi <emutavchi@productengine.com>
Date: Wed, 3 Feb 2010 19:38:12 +0200
Subject: [PATCH 478/521] Fixed normal bug EXT-4229 ("This object costs L$ XXX"
 truncates price)

--HG--
branch : product-engine
---
 indra/newview/skins/default/xui/en/floater_buy_currency.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/indra/newview/skins/default/xui/en/floater_buy_currency.xml b/indra/newview/skins/default/xui/en/floater_buy_currency.xml
index 703a02d9952..961bd6b5e43 100644
--- a/indra/newview/skins/default/xui/en/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/en/floater_buy_currency.xml
@@ -178,8 +178,8 @@
      follows="top|left"
      height="16"
      halign="right"
-     left="150"
-     width="170"
+     left="140"
+     width="180"
      layout="topleft"
      name="buy_action">
         [NAME] L$ [PRICE]
-- 
GitLab


From 8c1618ca5ae81eec0a5fa6229e89cd0f1a072a27 Mon Sep 17 00:00:00 2001
From: Eugene Mutavchi <emutavchi@productengine.com>
Date: Wed, 3 Feb 2010 19:38:12 +0200
Subject: [PATCH 479/521] Fixed major bug EXT-4876 (Switch from slurl.com to
 maps.secondlife.com)

--HG--
branch : product-engine
---
 indra/llui/llurlentry.cpp         |  2 +-
 indra/newview/llslurl.cpp         | 12 ++++++++++--
 indra/newview/llslurl.h           |  1 +
 indra/newview/llviewermessage.cpp |  5 +++++
 4 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp
index b20de914a08..92b7816bddb 100644
--- a/indra/llui/llurlentry.cpp
+++ b/indra/llui/llurlentry.cpp
@@ -232,7 +232,7 @@ std::string LLUrlEntryHTTPNoProtocol::getUrl(const std::string &string) const
 LLUrlEntrySLURL::LLUrlEntrySLURL()
 {
 	// see http://slurl.com/about.php for details on the SLURL format
-	mPattern = boost::regex("http://slurl.com/secondlife/\\S+/?(\\d+)?/?(\\d+)?/?(\\d+)?/?\\S*",
+	mPattern = boost::regex("http://(maps.secondlife.com|slurl.com)/secondlife/\\S+/?(\\d+)?/?(\\d+)?/?(\\d+)?/?\\S*",
 							boost::regex::perl|boost::regex::icase);
 	mMenuName = "menu_url_slurl.xml";
 	mTooltip = LLTrans::getString("TooltipSLURL");
diff --git a/indra/newview/llslurl.cpp b/indra/newview/llslurl.cpp
index 37e268ad343..3343ee88bd4 100644
--- a/indra/newview/llslurl.cpp
+++ b/indra/newview/llslurl.cpp
@@ -39,7 +39,8 @@
 const std::string LLSLURL::PREFIX_SL_HELP		= "secondlife://app.";
 const std::string LLSLURL::PREFIX_SL			= "sl://";
 const std::string LLSLURL::PREFIX_SECONDLIFE	= "secondlife://";
-const std::string LLSLURL::PREFIX_SLURL			= "http://slurl.com/secondlife/";
+const std::string LLSLURL::PREFIX_SLURL_OLD		= "http://slurl.com/secondlife/";
+const std::string LLSLURL::PREFIX_SLURL			= "http://maps.secondlife.com/secondlife/";
 
 const std::string LLSLURL::APP_TOKEN = "app/";
 
@@ -63,6 +64,11 @@ std::string LLSLURL::stripProtocol(const std::string& url)
 	{
 		stripped.erase(0, PREFIX_SLURL.length());
 	}
+	else if (matchPrefix(stripped, PREFIX_SLURL_OLD))
+	{
+		stripped.erase(0, PREFIX_SLURL_OLD.length());
+	}
+
 	
 	return stripped;
 }
@@ -74,6 +80,7 @@ bool LLSLURL::isSLURL(const std::string& url)
 	if (matchPrefix(url, PREFIX_SL))			return true;
 	if (matchPrefix(url, PREFIX_SECONDLIFE))	return true;
 	if (matchPrefix(url, PREFIX_SLURL))			return true;
+	if (matchPrefix(url, PREFIX_SLURL_OLD))		return true;
 	
 	return false;
 }
@@ -83,7 +90,8 @@ bool LLSLURL::isSLURLCommand(const std::string& url)
 { 
 	if (matchPrefix(url, PREFIX_SL + APP_TOKEN) ||
 		matchPrefix(url, PREFIX_SECONDLIFE + "/" + APP_TOKEN) ||
-		matchPrefix(url, PREFIX_SLURL + APP_TOKEN) )
+		matchPrefix(url, PREFIX_SLURL + APP_TOKEN) ||
+		matchPrefix(url, PREFIX_SLURL_OLD + APP_TOKEN) )
 	{
 		return true;
 	}
diff --git a/indra/newview/llslurl.h b/indra/newview/llslurl.h
index 05b0143e72d..21b32ce4093 100644
--- a/indra/newview/llslurl.h
+++ b/indra/newview/llslurl.h
@@ -50,6 +50,7 @@ class LLSLURL
 	static const std::string PREFIX_SL;
 	static const std::string PREFIX_SECONDLIFE;
 	static const std::string PREFIX_SLURL;
+	static const std::string PREFIX_SLURL_OLD;
 
 	static const std::string APP_TOKEN;
 
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index e525561b7df..143d95d27e6 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -1478,6 +1478,11 @@ void inventory_offer_handler(LLOfferInfo* info)
 	// Strip any SLURL from the message display. (DEV-2754)
 	std::string msg = info->mDesc;
 	int indx = msg.find(" ( http://slurl.com/secondlife/");
+	if(indx == std::string::npos)
+	{
+		// try to find new slurl host
+		indx = msg.find(" ( http://maps.secondlife.com/secondlife/");
+	}
 	if(indx >= 0)
 	{
 		LLStringUtil::truncate(msg, indx);
-- 
GitLab


From fb4adc1898f45ffc8311706a9b3430d5d0df1893 Mon Sep 17 00:00:00 2001
From: Eugene Mutavchi <emutavchi@productengine.com>
Date: Wed, 3 Feb 2010 19:38:12 +0200
Subject: [PATCH 480/521] Fixed normal bug EXT-4866 (There is no overflow menu
 for favorites bar)

--HG--
branch : product-engine
---
 indra/newview/llfavoritesbar.cpp              |  7 ++++-
 indra/newview/llfavoritesbar.h                |  3 +++
 .../default/xui/en/panel_navigation_bar.xml   | 26 ++++++++++---------
 3 files changed, 23 insertions(+), 13 deletions(-)

diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
index f5bb7774191..a5b62439f44 100644
--- a/indra/newview/llfavoritesbar.cpp
+++ b/indra/newview/llfavoritesbar.cpp
@@ -370,7 +370,8 @@ struct LLFavoritesSort
 
 LLFavoritesBarCtrl::Params::Params()
 : image_drag_indication("image_drag_indication"),
-  chevron_button("chevron_button")
+  chevron_button("chevron_button"),
+  label("label")
 {
 }
 
@@ -401,6 +402,10 @@ LLFavoritesBarCtrl::LLFavoritesBarCtrl(const LLFavoritesBarCtrl::Params& p)
 	chevron_button_params.click_callback.function(boost::bind(&LLFavoritesBarCtrl::showDropDownMenu, this));     
 	mChevronButton = LLUICtrlFactory::create<LLButton> (chevron_button_params);
 	addChild(mChevronButton); 
+
+	LLTextBox::Params label_param(p.label);
+	mBarLabel = LLUICtrlFactory::create<LLTextBox> (label_param);
+	addChild(mBarLabel);
 }
 
 LLFavoritesBarCtrl::~LLFavoritesBarCtrl()
diff --git a/indra/newview/llfavoritesbar.h b/indra/newview/llfavoritesbar.h
index 40dd551eefc..2c6d8d15807 100644
--- a/indra/newview/llfavoritesbar.h
+++ b/indra/newview/llfavoritesbar.h
@@ -35,6 +35,7 @@
 
 #include "llbutton.h"
 #include "lluictrl.h"
+#include "lltextbox.h"
 
 #include "llinventoryobserver.h"
 #include "llinventorymodel.h"
@@ -46,6 +47,7 @@ class LLFavoritesBarCtrl : public LLUICtrl, public LLInventoryObserver
 	{
 		Optional<LLUIImage*> image_drag_indication;
 		Optional<LLButton::Params> chevron_button;
+		Optional<LLTextBox::Params> label;
 		Params();
 	};
 
@@ -139,6 +141,7 @@ class LLFavoritesBarCtrl : public LLUICtrl, public LLInventoryObserver
 	LLUICtrl* mLandingTab;
 	LLUICtrl* mLastTab;
 	LLButton* mChevronButton;
+	LLTextBox* mBarLabel;
 
 	LLUUID mDragItemId;
 	BOOL mStartDrag;
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 02eddc92122..b2ed51abf37 100644
--- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
@@ -141,12 +141,25 @@
      font="SansSerifSmall"
      height="15"
      layout="topleft"
-     left="102"
+     left="0"
      name="favorite"
      image_drag_indication="Accordion_ArrowOpened_Off"
      bottom="55"
      tool_tip="Drag Landmarks here for quick access to your favorite places in Second Life!"
                width="590">
+        <label
+         follows="left|top"
+         font.style="BOLD"
+         height="15"
+         layout="topleft"
+         left="10"
+         name="favorites_bar_label"
+         text_color="LtGray"
+         tool_tip="Drag Landmarks here for quick access to your favorite places in Second Life!"
+         top="12"
+         width="102">
+          Favorites Bar
+        </label>
     <chevron_button name=">>"
                      image_unselected="TabIcon_Close_Off"
                      image_selected="TabIcon_Close_Off"
@@ -157,15 +170,4 @@
 		     top="15"
                      height="15"/>
   </favorites_bar>
-     <text
-               follows="left|top"
-         font.style="BOLD"
-               height="15"
-               layout="topleft"
-               left="10"
-               top_pad="-12"
-               name="favorites_bar_label"
-               text_color="LtGray"
-               tool_tip="Drag Landmarks here for quick access to your favorite places in Second Life!"
-               width="102">Favorites Bar</text>
 </panel>
-- 
GitLab


From 18af41157d64962fff10b0697c632a5d2a38539e Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 17:54:59 +0000
Subject: [PATCH 481/521] CID-342  	UNINIT_CTOR

--HG--
branch : product-engine
---
 indra/llui/llnotifications.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h
index d55e0f40432..8d993b71d76 100644
--- a/indra/llui/llnotifications.h
+++ b/indra/llui/llnotifications.h
@@ -371,7 +371,7 @@ friend class LLNotifications;
 
 	// this is just for making it easy to look things up in a set organized by UUID -- DON'T USE IT
 	// for anything real!
- LLNotification(LLUUID uuid) : mId(uuid), mCancelled(false), mRespondedTo(false), mIgnored(false), mTemporaryResponder(false) {}
+ LLNotification(LLUUID uuid) : mId(uuid), mCancelled(false), mRespondedTo(false), mIgnored(false), mPriority(NOTIFICATION_PRIORITY_UNSPECIFIED), mTemporaryResponder(false) {}
 
 	void cancel();
 
-- 
GitLab


From 22ccfab764ed5cdeacffa0530b6fbc30f06e0992 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 17:57:47 +0000
Subject: [PATCH 482/521] CID-295

Checker: UNINIT_CTOR
Function: LLGLSLShader::LLGLSLShader()
File: /indra/llrender/llglslshader.cpp

--HG--
branch : product-engine
---
 indra/llrender/llglslshader.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp
index 830617063b9..ca92cb6580f 100644
--- a/indra/llrender/llglslshader.cpp
+++ b/indra/llrender/llglslshader.cpp
@@ -70,7 +70,7 @@ hasGamma(false), hasLighting(false), calculatesAtmospherics(false)
 // LLGLSL Shader implementation
 //===============================
 LLGLSLShader::LLGLSLShader()
-: mProgramObject(0), mShaderLevel(0), mShaderGroup(SG_DEFAULT)
+	: mProgramObject(0), mActiveTextureChannels(0), mShaderLevel(0), mShaderGroup(SG_DEFAULT), mUniformsDirty(FALSE)
 {
 }
 
-- 
GitLab


From 92fc25b83058133d43170364608560cc15249cc9 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 18:00:50 +0000
Subject: [PATCH 483/521] CID-294 Checker: UNINIT_CTOR Function:
 LLPostProcess::LLPostProcess() File: /indra/llrender/llpostprocess.cpp

--HG--
branch : product-engine
---
 indra/llrender/llpostprocess.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/indra/llrender/llpostprocess.cpp b/indra/llrender/llpostprocess.cpp
index 7f4be6a8662..bc7f30cdef6 100644
--- a/indra/llrender/llpostprocess.cpp
+++ b/indra/llrender/llpostprocess.cpp
@@ -59,6 +59,8 @@ LLPostProcess::LLPostProcess(void) :
 	mSceneRenderTexture = NULL ; 
 	mNoiseTexture = NULL ;
 	mTempBloomTexture = NULL ;
+
+	noiseTextureScale = 1.0f;
 					
 	/*  Do nothing.  Needs to be updated to use our current shader system, and to work with the move into llrender.
 	std::string pathName(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight", XML_FILENAME));
-- 
GitLab


From 8b9492a68567fe5b7949f42330514730848331c7 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 18:18:13 +0000
Subject: [PATCH 484/521] CID-293 Defect Checker: UNINIT_CTOR Function:
 LLGLManager::LLGLManager() File: /indra/llrender/llgl.cpp

--HG--
branch : product-engine
---
 indra/llrender/llgl.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index 187a9a984e0..a3f7a946ecd 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -332,6 +332,8 @@ LLGLManager::LLGLManager() :
 	mHasFragmentShader(FALSE),
 	mHasOcclusionQuery(FALSE),
 	mHasPointParameters(FALSE),
+	mHasDrawBuffers(FALSE),
+	mHasTextureRectangle(FALSE),
 
 	mHasAnisotropic(FALSE),
 	mHasARBEnvCombine(FALSE),
@@ -671,7 +673,7 @@ void LLGLManager::initExtensions()
 	llinfos << "initExtensions() checking shell variables to adjust features..." << llendl;
 	// Our extension support for the Linux Client is very young with some
 	// potential driver gotchas, so offer a semi-secret way to turn it off.
-	if (getenv("LL_GL_NOEXT"))	/* Flawfinder: ignore */
+	if (getenv("LL_GL_NOEXT"))
 	{
 		//mHasMultitexture = FALSE; // NEEDED!
 		mHasARBEnvCombine = FALSE;
-- 
GitLab


From 221954f04203968e65325de69c73c961b5e60c56 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 3 Feb 2010 13:22:08 -0500
Subject: [PATCH 485/521]  For EXT-4173: New accounts sometimes appear
 half-naked.  Removed duplicate code block.

---
 indra/newview/llstartup.cpp | 16 ----------------
 1 file changed, 16 deletions(-)

diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 4d814169cb0..f6656355478 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -1849,22 +1849,6 @@ bool idle_startup()
 			LLStartUp::loadInitialOutfit( sInitialOutfit, sInitialOutfitGender );
 		}
 
-#if 0 // WHY 2x? BAP
-		// We now have an inventory skeleton, so if this is a user's first
-		// login, we can start setting up their clothing and avatar 
-		// appearance.  This helps to avoid the generic "Ruth" avatar in
-		// the orientation island tutorial experience. JC
-		if (gAgent.isFirstLogin()
-			&& !sInitialOutfit.empty()    // registration set up an outfit
-			&& !sInitialOutfitGender.empty() // and a gender
-			&& gAgent.getAvatarObject()	  // can't wear clothes without object
-			&& !gAgent.isGenderChosen() ) // nothing already loading
-		{
-			// Start loading the wearables, textures, gestures
-			LLStartUp::loadInitialOutfit( sInitialOutfit, sInitialOutfitGender );
-		}
-#endif
-
 		// wait precache-delay and for agent's avatar or a lot longer.
 		if(((timeout_frac > 1.f) && gAgent.getAvatarObject())
 		   || (timeout_frac > 3.f))
-- 
GitLab


From 011673de5a73eefbd59e29056851e160338be714 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 18:22:25 +0000
Subject: [PATCH 486/521] CID-419

Checker: RESOURCE_LEAK
File: /indra/llui/llstyle.h

--HG--
branch : product-engine
---
 indra/llui/lltexteditor.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index e76fee9f17f..a4c802bd26a 100644
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -2574,7 +2574,7 @@ void LLTextEditor::updateLinkSegments()
 			// then update the link's HREF to be the same as the label text.
 			// This lets users edit Urls in-place.
 			LLStyleConstSP style = segment->getStyle();
-			LLStyle* new_style = new LLStyle(*style);
+			LLStyleSP new_style(new LLStyle(*style));
 			LLWString url_label = wtext.substr(segment->getStart(), segment->getEnd()-segment->getStart());
 			if (LLUrlRegistry::instance().hasUrl(url_label))
 			{
-- 
GitLab


From 36be134aee952cd35bb1ecbf6d2d2c2490a3fe5b Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 18:38:52 +0000
Subject: [PATCH 487/521] CID-292

Checker: UNINIT_CTOR
Function: LLRender::LLRender()
File: /indra/llrender/llrender.cpp
---
 indra/llrender/llrender.cpp | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp
index f97d81126ec..595b8577ffe 100644
--- a/indra/llrender/llrender.cpp
+++ b/indra/llrender/llrender.cpp
@@ -733,8 +733,11 @@ void LLTexUnit::debugTextureUnit(void)
 
 
 LLRender::LLRender()
-: mDirty(false), mCount(0), mMode(LLRender::TRIANGLES),
-	mMaxAnisotropy(0.f) 
+  : mDirty(false),
+    mCount(0),
+    mMode(LLRender::TRIANGLES),
+    mCurrTextureUnitIndex(0),
+    mMaxAnisotropy(0.f) 
 {
 	mBuffer = new LLVertexBuffer(immediate_mask, 0);
 	mBuffer->allocateBuffer(4096, 0, TRUE);
-- 
GitLab


From 48a3e84937607055606baee0dd2eb69ba8bbf0ce Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 18:52:20 +0000
Subject: [PATCH 488/521] CID-291

Checker: UNINIT_CTOR
Function: LLVertexBuffer::LLVertexBuffer(unsigned int, int)
File: /indra/llrender/llvertexbuffer.cpp

also added some sanity-checking around this.
---
 indra/llrender/llvertexbuffer.cpp | 31 ++++++++++++++++++++++++++-----
 1 file changed, 26 insertions(+), 5 deletions(-)

diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp
index ecfe845b342..bf5eda21ebd 100644
--- a/indra/llrender/llvertexbuffer.cpp
+++ b/indra/llrender/llvertexbuffer.cpp
@@ -215,14 +215,18 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask)
 
 void LLVertexBuffer::drawRange(U32 mode, U32 start, U32 end, U32 count, U32 indices_offset) const
 {
+	llassert(mRequestedNumVerts >= 0);
+
 	if (start >= (U32) mRequestedNumVerts ||
-		end >= (U32) mRequestedNumVerts)
+	    end >= (U32) mRequestedNumVerts)
 	{
 		llerrs << "Bad vertex buffer draw range: [" << start << ", " << end << "]" << llendl;
 	}
 
+	llassert(mRequestedNumIndices >= 0);
+
 	if (indices_offset >= (U32) mRequestedNumIndices ||
-		indices_offset + count > (U32) mRequestedNumIndices)
+	    indices_offset + count > (U32) mRequestedNumIndices)
 	{
 		llerrs << "Bad index buffer draw range: [" << indices_offset << ", " << indices_offset+count << "]" << llendl;
 	}
@@ -251,8 +255,9 @@ void LLVertexBuffer::drawRange(U32 mode, U32 start, U32 end, U32 count, U32 indi
 
 void LLVertexBuffer::draw(U32 mode, U32 count, U32 indices_offset) const
 {
+	llassert(mRequestedNumIndices >= 0);
 	if (indices_offset >= (U32) mRequestedNumIndices ||
-		indices_offset + count > (U32) mRequestedNumIndices)
+	    indices_offset + count > (U32) mRequestedNumIndices)
 	{
 		llerrs << "Bad index buffer draw range: [" << indices_offset << ", " << indices_offset+count << "]" << llendl;
 	}
@@ -281,8 +286,9 @@ void LLVertexBuffer::draw(U32 mode, U32 count, U32 indices_offset) const
 
 void LLVertexBuffer::drawArrays(U32 mode, U32 first, U32 count) const
 {
+	llassert(mRequestedNumVerts >= 0);
 	if (first >= (U32) mRequestedNumVerts ||
-		first + count > (U32) mRequestedNumVerts)
+	    first + count > (U32) mRequestedNumVerts)
 	{
 		llerrs << "Bad vertex buffer draw range: [" << first << ", " << first+count << "]" << llendl;
 	}
@@ -354,7 +360,14 @@ void LLVertexBuffer::clientCopy(F64 max_time)
 
 LLVertexBuffer::LLVertexBuffer(U32 typemask, S32 usage) :
 	LLRefCount(),
-	mNumVerts(0), mNumIndices(0), mUsage(usage), mGLBuffer(0), mGLIndices(0), 
+
+	mNumVerts(0),
+	mNumIndices(0),
+	mRequestedNumVerts(-1),
+	mRequestedNumIndices(-1),
+	mUsage(usage),
+	mGLBuffer(0),
+	mGLIndices(0), 
 	mMappedData(NULL),
 	mMappedIndexData(NULL), mLocked(FALSE),
 	mFinal(FALSE),
@@ -600,6 +613,8 @@ void LLVertexBuffer::updateNumVerts(S32 nverts)
 {
 	LLMemType mt2(LLMemType::MTYPE_VERTEX_UPDATE_VERTS);
 
+	llassert(nverts >= 0);
+
 	if (nverts >= 65535)
 	{
 		llwarns << "Vertex buffer overflow!" << llendl;
@@ -628,6 +643,9 @@ void LLVertexBuffer::updateNumVerts(S32 nverts)
 void LLVertexBuffer::updateNumIndices(S32 nindices)
 {
 	LLMemType mt2(LLMemType::MTYPE_VERTEX_UPDATE_INDICES);
+
+	llassert(nindices >= 0);
+
 	mRequestedNumIndices = nindices;
 	if (!mDynamicSize)
 	{
@@ -668,6 +686,9 @@ void LLVertexBuffer::allocateBuffer(S32 nverts, S32 nindices, bool create)
 
 void LLVertexBuffer::resizeBuffer(S32 newnverts, S32 newnindices)
 {
+	llassert(newnverts >= 0);
+	llassert(newnindices >= 0);
+
 	mRequestedNumVerts = newnverts;
 	mRequestedNumIndices = newnindices;
 
-- 
GitLab


From 3495954cd63977e7434e74addae15466955b1f89 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 18:54:18 +0000
Subject: [PATCH 489/521] CID-290

Checker: UNINIT_CTOR
Function: LLCubeMap::LLCubeMap()
File: /indra/llrender/llcubemap.cpp
---
 indra/llrender/llcubemap.cpp | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/indra/llrender/llcubemap.cpp b/indra/llrender/llcubemap.cpp
index 08a96b4e319..036714e5cb8 100644
--- a/indra/llrender/llcubemap.cpp
+++ b/indra/llrender/llcubemap.cpp
@@ -63,6 +63,12 @@ LLCubeMap::LLCubeMap()
 	  mTextureCoordStage(0),
 	  mMatrixStage(0)
 {
+	mTargets[0] = GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB;
+	mTargets[1] = GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB;
+	mTargets[2] = GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB;
+	mTargets[3] = GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB;
+	mTargets[4] = GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB;
+	mTargets[5] = GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB;
 }
 
 LLCubeMap::~LLCubeMap()
@@ -75,13 +81,6 @@ void LLCubeMap::initGL()
 
 	if (gGLManager.mHasCubeMap && LLCubeMap::sUseCubeMaps)
 	{
-		mTargets[0] = GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB;
-		mTargets[1] = GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB;
-		mTargets[2] = GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB;
-		mTargets[3] = GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB;
-		mTargets[4] = GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB;
-		mTargets[5] = GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB;
-		
 		// Not initialized, do stuff.
 		if (mImages[0].isNull())
 		{
-- 
GitLab


From df0d43054c504a3bd7b18298b1d339e95965a9fb Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 18:56:37 +0000
Subject: [PATCH 490/521] CID-289 Checker: UNINIT_CTOR Function:
 LLCamera::LLCamera() File: /indra/llmath/llcamera.cpp

---
 indra/llmath/llcamera.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/indra/llmath/llcamera.cpp b/indra/llmath/llcamera.cpp
index 21ea4b2e7c5..89c32be8cd0 100644
--- a/indra/llmath/llcamera.cpp
+++ b/indra/llmath/llcamera.cpp
@@ -45,7 +45,8 @@ LLCamera::LLCamera() :
 	mNearPlane(DEFAULT_NEAR_PLANE),
 	mFarPlane(DEFAULT_FAR_PLANE),
 	mFixedDistance(-1.f),
-	mPlaneCount(6)
+	mPlaneCount(6),
+	mFrustumCornerDist(0.f)
 {
 	calculateFrustumPlanes();
 } 
@@ -648,7 +649,6 @@ void LLCamera::ignoreAgentFrustumPlane(S32 idx)
 
 void LLCamera::calcAgentFrustumPlanes(LLVector3* frust)
 {
-
 	for (int i = 0; i < 8; i++)
 	{
 		mAgentFrustum[i] = frust[i];
-- 
GitLab


From a4aca0ba1c3efc4ddb9e01a332d3a9c1f16e49d0 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 19:00:30 +0000
Subject: [PATCH 491/521] CID-288

Checker: UNINIT_CTOR
Function: LLCamera::LLCamera(float, float, int, float, float)
File: /indra/llmath/llcamera.cpp
---
 indra/llmath/llcamera.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/indra/llmath/llcamera.cpp b/indra/llmath/llcamera.cpp
index 89c32be8cd0..487ed6451f4 100644
--- a/indra/llmath/llcamera.cpp
+++ b/indra/llmath/llcamera.cpp
@@ -56,7 +56,8 @@ LLCamera::LLCamera(F32 vertical_fov_rads, F32 aspect_ratio, S32 view_height_in_p
 	LLCoordFrame(),
 	mViewHeightInPixels(view_height_in_pixels),
 	mFixedDistance(-1.f),
-	mPlaneCount(6)
+	mPlaneCount(6),
+	mFrustumCornerDist(0.f)
 {
 	mAspect = llclamp(aspect_ratio, MIN_ASPECT_RATIO, MAX_ASPECT_RATIO);
 	mNearPlane = llclamp(near_plane, MIN_NEAR_PLANE, MAX_NEAR_PLANE);
-- 
GitLab


From 9df8583ea8fd242e8f71710a62841d265d090d4c Mon Sep 17 00:00:00 2001
From: "Eric M. Tulla (BigPapi)" <tulla@lindenlab.com>
Date: Wed, 3 Feb 2010 14:01:36 -0500
Subject: [PATCH 492/521] Moss rocks!  Thanks for noticeing the paste error
 that resulted in a double \'\!\' bool op.

---
 indra/newview/llagentwearables.cpp | 2 +-
 indra/newview/llappearancemgr.cpp  | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 3249d0b31f4..41f2ff29e60 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -2300,7 +2300,7 @@ class LLLibraryOutfitsCopyDone: public LLInventoryCallback
 	
 	virtual ~LLLibraryOutfitsCopyDone()
 	{
-		if (!!LLApp::isExiting() && mLibraryOutfitsFetcher)
+		if (!LLApp::isExiting() && mLibraryOutfitsFetcher)
 		{
 			gInventory.addObserver(mLibraryOutfitsFetcher);
 			mLibraryOutfitsFetcher->done();
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index fa1bfdb5ab8..585d42f66d1 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -279,7 +279,7 @@ class LLUpdateAppearanceOnDestroy: public LLInventoryCallback
 
 	virtual ~LLUpdateAppearanceOnDestroy()
 	{
-		if (!!LLApp::isExiting())
+		if (!LLApp::isExiting())
 		{
 			LLAppearanceManager::instance().updateAppearanceFromCOF();
 		}
-- 
GitLab


From c0422e1c6c44c65c8844631430747d798be16879 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 19:06:06 +0000
Subject: [PATCH 493/521] CID-284

Checker: UNINIT_CTOR
Function: MediaPluginWebKit::MediaPluginWebKit(void (*)(const char *, void **), void *)
File: /indra/media_plugins/webkit/media_plugin_webkit.cpp
---
 indra/media_plugins/webkit/media_plugin_webkit.cpp | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/indra/media_plugins/webkit/media_plugin_webkit.cpp b/indra/media_plugins/webkit/media_plugin_webkit.cpp
index 42d680ade61..3c24b4ed22b 100644
--- a/indra/media_plugins/webkit/media_plugin_webkit.cpp
+++ b/indra/media_plugins/webkit/media_plugin_webkit.cpp
@@ -608,6 +608,9 @@ MediaPluginWebKit::MediaPluginWebKit(LLPluginInstance::sendMessageFunction host_
 	mLastMouseX = 0;
 	mLastMouseY = 0;
 	mFirstFocus = true;
+	mBackgroundR = 0.0f;
+	mBackgroundG = 0.0f;
+	mBackgroundB = 0.0f;
 }
 
 MediaPluginWebKit::~MediaPluginWebKit()
-- 
GitLab


From 4020f13fc93426108c761f8519e2dc3af6772d7e Mon Sep 17 00:00:00 2001
From: Leyla Farazha <leyla@lindenlab.com>
Date: Wed, 3 Feb 2010 11:08:53 -0800
Subject: [PATCH 494/521] EXT-4656 	 [crashhunters] Crash in
 LLFloaterAnimPreview::postBuild() reviewed by Richard

---
 indra/newview/llfloateranimpreview.cpp                        | 1 +
 .../skins/default/xui/en/floater_animation_preview.xml        | 4 ++++
 indra/newview/skins/default/xui/en/floater_test_widgets.xml   | 2 +-
 3 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llfloateranimpreview.cpp b/indra/newview/llfloateranimpreview.cpp
index 60f150bd969..3549e2b6bfe 100644
--- a/indra/newview/llfloateranimpreview.cpp
+++ b/indra/newview/llfloateranimpreview.cpp
@@ -117,6 +117,7 @@ std::string STATUS[] =
 "E_ST_NO_XLT_EASEOUT",
 "E_ST_NO_XLT_HAND",
 "E_ST_NO_XLT_EMOTE",
+"E_ST_BAD_ROOT"
 };
 //-----------------------------------------------------------------------------
 // LLFloaterAnimPreview()
diff --git a/indra/newview/skins/default/xui/en/floater_animation_preview.xml b/indra/newview/skins/default/xui/en/floater_animation_preview.xml
index 4f4288b654d..9eb0af31f9a 100644
--- a/indra/newview/skins/default/xui/en/floater_animation_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_animation_preview.xml
@@ -147,6 +147,10 @@ Maximum animation length is [MAX_LENGTH] seconds.
      name="E_ST_NO_XLT_EMOTE">
         Cannot read emote name.
     </floater.string>
+    <floater.string
+     name="E_ST_BAD_ROOT">
+      Invalid ROOT joint.
+    </floater.string>
     <text
      type="string"
      length="1"
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 447bd7f599b..8353dab24f5 100644
--- a/indra/newview/skins/default/xui/en/floater_test_widgets.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_widgets.xml
@@ -254,7 +254,7 @@
      name="first_column"
      label="Column A"/>
     <scroll_list.columns
-     dynamic_width="true"
+     width="-1"
      name="second_column"
      label="Column B"/>
     <row>
-- 
GitLab


From 66bc04339ccc0bf73005ae0cd1e7b04259c4944c Mon Sep 17 00:00:00 2001
From: Leyla Farazha <leyla@lindenlab.com>
Date: Wed, 3 Feb 2010 11:13:17 -0800
Subject: [PATCH 495/521] accidental commit revert

---
 indra/newview/skins/default/xui/en/floater_test_widgets.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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 8353dab24f5..447bd7f599b 100644
--- a/indra/newview/skins/default/xui/en/floater_test_widgets.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_widgets.xml
@@ -254,7 +254,7 @@
      name="first_column"
      label="Column A"/>
     <scroll_list.columns
-     width="-1"
+     dynamic_width="true"
      name="second_column"
      label="Column B"/>
     <row>
-- 
GitLab


From 917841120f8932af112896344c7f25be7bc32773 Mon Sep 17 00:00:00 2001
From: Vadim Savchuk <vsavchuk@productengine.com>
Date: Wed, 3 Feb 2010 21:20:37 +0200
Subject: [PATCH 496/521] Backed out changeset 83d2ec4d4a5e, a hack that forces
 you to fall when entering a parcel with no rights to fly in it.

--HG--
branch : product-engine
---
 indra/newview/llviewerparcelmgr.cpp | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp
index 7ec650629dd..a075a706e1e 100644
--- a/indra/newview/llviewerparcelmgr.cpp
+++ b/indra/newview/llviewerparcelmgr.cpp
@@ -1597,14 +1597,6 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
 				instance->mTeleportInProgress = FALSE;
 				instance->mTeleportFinishedSignal(gAgent.getPositionGlobal());
 			}
-
-			// HACK: This makes agents drop from the sky if they enter a parcel
-			// which is set to no fly.
-			BOOL was_flying = gAgent.getFlying();
-			if (was_flying && !parcel->getAllowFly())
-			{
-				gAgent.setFlying(gAgent.canFly());
-			}
 		}
 	}
 
-- 
GitLab


From 78553cce481e0f05485033ff9a64d53d13893d97 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 19:24:25 +0000
Subject: [PATCH 497/521] CID-283

Checker: UNINIT_CTOR
Function: LLVorbisDecodeState::LLVorbisDecodeState(const LLUUID &, const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&)
File: /indra/llaudio/llaudiodecodemgr.cpp
---
 indra/llaudio/llaudiodecodemgr.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/indra/llaudio/llaudiodecodemgr.cpp b/indra/llaudio/llaudiodecodemgr.cpp
index 6bbaad9cefa..290206ee22b 100644
--- a/indra/llaudio/llaudiodecodemgr.cpp
+++ b/indra/llaudio/llaudiodecodemgr.cpp
@@ -181,6 +181,8 @@ LLVorbisDecodeState::LLVorbisDecodeState(const LLUUID &uuid, const std::string &
 	mFileHandle = LLLFSThread::nullHandle();
 #endif
 	// No default value for mVF, it's an ogg structure?
+	// Hey, let's zero it anyway, for predictability.
+	memset(&mVF, 0, sizeof(mVF));
 }
 
 LLVorbisDecodeState::~LLVorbisDecodeState()
-- 
GitLab


From 5dbd37f50bbefe8552f910d5079b48cd3f648c5e Mon Sep 17 00:00:00 2001
From: Ychebotarev ProductEngine <ychebotarev@productengine.com>
Date: Wed, 3 Feb 2010 21:28:58 +0200
Subject: [PATCH 498/521] a bit log for  major Bug EXT-4778 - may help to find
 problem.

--HG--
branch : product-engine
---
 indra/newview/llgroupmgr.cpp | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp
index 72a52ba13b4..4c1019a8820 100644
--- a/indra/newview/llgroupmgr.cpp
+++ b/indra/newview/llgroupmgr.cpp
@@ -1708,6 +1708,8 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id,
 	bool start_message = true;
 	LLMessageSystem* msg = gMessageSystem;
 
+	
+
 	LLGroupMgrGroupData* group_datap = LLGroupMgr::getInstance()->getGroupData(group_id);
 	if (!group_datap) return;
 
@@ -1715,6 +1717,8 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id,
 		 it != member_ids.end(); ++it)
 	{
 		LLUUID& ejected_member_id = (*it);
+
+		llwarns << "LLGroupMgr::sendGroupMemberEjects -- ejecting member" << ejected_member_id << llendl;
 		
 		// Can't use 'eject' to leave a group.
 		if ((*it) == gAgent.getID()) continue;
@@ -1751,11 +1755,14 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id,
 				if ((*rit).first.notNull() && (*rit).second!=0)
 				{
 					(*rit).second->removeMember(ejected_member_id);
+
+					llwarns << "LLGroupMgr::sendGroupMemberEjects - removing member from role " << llendl;
 				}
 			}
 			
 			group_datap->mMembers.erase(*it);
 			
+			llwarns << "LLGroupMgr::sendGroupMemberEjects - deleting memnber data " << llendl;
 			delete (*mit).second;
 		}
 	}
@@ -1764,6 +1771,8 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id,
 	{
 		gAgent.sendReliableMessage();
 	}
+
+	llwarns << "LLGroupMgr::sendGroupMemberEjects - done " << llendl;
 }
 
 void LLGroupMgr::sendGroupRoleChanges(const LLUUID& group_id)
-- 
GitLab


From a1c3d608199a888584ce8d2172905175fcbd1796 Mon Sep 17 00:00:00 2001
From: Andrew Dyukov <adyukov@productengine.com>
Date: Wed, 3 Feb 2010 21:48:30 +0200
Subject: [PATCH 499/521] No ticket. Removed unrelevant comment and added
 disabling call button if session doesn't exist in
 LLPanelChatControlPanel::updateCallButton().

--HG--
branch : product-engine
---
 indra/newview/llpanelimcontrolpanel.cpp | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp
index d491583b564..cbd6f64a485 100644
--- a/indra/newview/llpanelimcontrolpanel.cpp
+++ b/indra/newview/llpanelimcontrolpanel.cpp
@@ -81,11 +81,15 @@ void LLPanelChatControlPanel::onVoiceChannelStateChanged(const LLVoiceChannel::E
 
 void LLPanelChatControlPanel::updateCallButton()
 {
-	// hide/show call button
 	bool voice_enabled = LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking();
 
 	LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(mSessionId);
-	if (!session) return;
+	
+	if (!session) 
+	{
+		childSetEnabled("call_btn", false);
+		return;
+	}
 
 	bool session_initialized = session->mSessionInitialized;
 	bool callback_enabled = session->mCallBackEnabled;
-- 
GitLab


From f117db5798062d3f0d389a07ca5a75bac0d5cf72 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 20:03:17 +0000
Subject: [PATCH 500/521] CID-281

Checker: UNINIT_CTOR
Function: LLTransferSourceParamsAsset::LLTransferSourceParamsAsset()
File: /indra/llmessage/lltransfersourceasset.cpp
---
 indra/llmessage/lltransfersourceasset.cpp | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/indra/llmessage/lltransfersourceasset.cpp b/indra/llmessage/lltransfersourceasset.cpp
index 7332f5c9540..8f36d516d7c 100644
--- a/indra/llmessage/lltransfersourceasset.cpp
+++ b/indra/llmessage/lltransfersourceasset.cpp
@@ -226,7 +226,10 @@ void LLTransferSourceAsset::responderCallback(LLVFS *vfs, const LLUUID& uuid, LL
 
 
 
-LLTransferSourceParamsAsset::LLTransferSourceParamsAsset() : LLTransferSourceParams(LLTST_ASSET)
+LLTransferSourceParamsAsset::LLTransferSourceParamsAsset()
+	: LLTransferSourceParams(LLTST_ASSET),
+
+	  mAssetType(LLAssetType::AT_NONE)
 {
 }
 
-- 
GitLab


From 428eb8555ee9bcd2476e3e5d61ee1cd844a0d621 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 20:12:31 +0000
Subject: [PATCH 501/521] CID-280

Checker: UNINIT_CTOR
Function: LLTransferTargetParamsVFile::LLTransferTargetParamsVFile()
File: /indra/llmessage/lltransfertargetvfile.cpp

dead field.
---
 indra/llmessage/lltransfertargetvfile.h | 1 -
 1 file changed, 1 deletion(-)

diff --git a/indra/llmessage/lltransfertargetvfile.h b/indra/llmessage/lltransfertargetvfile.h
index 8c2bc7e8bbe..cd18d8ce3f5 100644
--- a/indra/llmessage/lltransfertargetvfile.h
+++ b/indra/llmessage/lltransfertargetvfile.h
@@ -68,7 +68,6 @@ class LLTransferTargetParamsVFile : public LLTransferTargetParams
 	LLTTVFCompleteCallback	mCompleteCallback;
 	void*					mUserDatap;
 	S32						mErrCode;
-	LLVFSThread::handle_t	mHandle;
 };
 
 
-- 
GitLab


From 4e73292e2ce7dcbce17e5edaa4ff10beeea01a51 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 20:14:57 +0000
Subject: [PATCH 502/521] CID-279

Checker: UNINIT_CTOR
Function: LLTransferTarget::LLTransferTarget(e_transfer_target_type, const LLUUID &, e_transfer_source_type)
File: /indra/llmessage/lltransfermanager.cpp
---
 indra/llmessage/lltransfermanager.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/llmessage/lltransfermanager.cpp b/indra/llmessage/lltransfermanager.cpp
index 0a71ad95f2b..d64b666edec 100644
--- a/indra/llmessage/lltransfermanager.cpp
+++ b/indra/llmessage/lltransfermanager.cpp
@@ -1196,6 +1196,7 @@ LLTransferTarget::LLTransferTarget(
 	mType(type),
 	mSourceType(source_type),
 	mID(transfer_id),
+	mChannelp(NULL),
 	mGotInfo(FALSE),
 	mSize(0),
 	mLastPacketID(-1)
-- 
GitLab


From b52d2a2f1b0406becb80862686be7b6f2444006d Mon Sep 17 00:00:00 2001
From: Andrew Dyukov <adyukov@productengine.com>
Date: Wed, 3 Feb 2010 22:16:18 +0200
Subject: [PATCH 503/521] Fixed normal bug EXT-4648 (Right segment of Speak
 button is disabled if nearby voice chat is disabled in estate).

- Added methods for separate enabling of left and right parts of speak button and used them instead of simply enabling/disabling LLSpeakButton in bottomtray.

- Made changes to reset() in LLCallFloater to show "no one near..." instead of "loading" in vcp for nearby chat in regions with disabled voice.

--HG--
branch : product-engine
---
 indra/newview/llbottomtray.cpp  | 13 ++++++++++---
 indra/newview/llcallfloater.cpp | 19 +++++++++++++++----
 indra/newview/llcallfloater.h   |  2 +-
 indra/newview/llspeakbutton.cpp | 10 ++++++++++
 indra/newview/llspeakbutton.h   |  4 ++++
 5 files changed, 40 insertions(+), 8 deletions(-)

diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index 0102e9488ea..4c8cec3d306 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -280,7 +280,13 @@ void LLBottomTray::onChange(EStatusType status, const std::string &channelURI, b
 		break;
 	}
 
-	mSpeakBtn->setEnabled(enable);
+	// We have to enable/disable right and left parts of speak button separately (EXT-4648)
+	mSpeakBtn->setSpeakBtnEnabled(enable);
+	// skipped to avoid button blinking
+	if (status != STATUS_JOINING && status!= STATUS_LEFT_CHANNEL)
+	{
+		mSpeakBtn->setFlyoutBtnEnabled(LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking());
+	}
 }
 
 void LLBottomTray::onMouselookModeOut()
@@ -410,9 +416,10 @@ BOOL LLBottomTray::postBuild()
 	mSpeakPanel = getChild<LLPanel>("speak_panel");
 	mSpeakBtn = getChild<LLSpeakButton>("talk");
 
-	// Speak button should be initially disabled because
+	// Both parts of speak button should be initially disabled because
 	// it takes some time between logging in to world and connecting to voice channel.
-	mSpeakBtn->setEnabled(FALSE);
+	mSpeakBtn->setSpeakBtnEnabled(false);
+	mSpeakBtn->setFlyoutBtnEnabled(false);
 
 	// Localization tool doesn't understand custom buttons like <talk_button>
 	mSpeakBtn->setSpeakToolTip( getString("SpeakBtnToolTip") );
diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp
index f62fd44bc06..8cb240c7c26 100644
--- a/indra/newview/llcallfloater.cpp
+++ b/indra/newview/llcallfloater.cpp
@@ -52,6 +52,7 @@
 #include "lltransientfloatermgr.h"
 #include "llviewerwindow.h"
 #include "llvoicechannel.h"
+#include "llviewerparcelmgr.h"
 
 static void get_voice_participants_uuids(std::vector<LLUUID>& speakers_uuids);
 void reshape_floater(LLCallFloater* floater, S32 delta_height);
@@ -731,11 +732,11 @@ void LLCallFloater::updateState(const LLVoiceChannel::EState& new_state)
 	}
 	else
 	{
-		reset();
+		reset(new_state);
 	}
 }
 
-void LLCallFloater::reset()
+void LLCallFloater::reset(const LLVoiceChannel::EState& new_state)
 {
 	// lets forget states from the previous session
 	// for timers...
@@ -748,8 +749,18 @@ void LLCallFloater::reset()
 	mParticipants = NULL;
 	mAvatarList->clear();
 
-	// update floater to show Loading while waiting for data.
-	mAvatarList->setNoItemsCommentText(LLTrans::getString("LoadingData"));
+	// "loading" is shown in parcel with disabled voice only when state is "ringing"
+	// to avoid showing it in nearby chat vcp all the time- "no_one_near" is now shown there (EXT-4648)
+	bool show_loading = LLVoiceChannel::STATE_RINGING == new_state;
+	if(!show_loading && !LLViewerParcelMgr::getInstance()->allowAgentVoice() && mVoiceType ==  VC_LOCAL_CHAT)
+	{
+		mAvatarList->setNoItemsCommentText(getString("no_one_near"));
+	}
+	else
+	{
+		// update floater to show Loading while waiting for data.
+		mAvatarList->setNoItemsCommentText(LLTrans::getString("LoadingData"));
+	}
 	mAvatarList->setVisible(TRUE);
 	mNonAvatarCaller->setVisible(FALSE);
 
diff --git a/indra/newview/llcallfloater.h b/indra/newview/llcallfloater.h
index 766191379ba..dac4390fa7e 100644
--- a/indra/newview/llcallfloater.h
+++ b/indra/newview/llcallfloater.h
@@ -220,7 +220,7 @@ class LLCallFloater : public LLTransientDockableFloater, LLVoiceClientParticipan
 	 *
 	 * Clears all data from the latest voice session.
 	 */
-	void reset();
+	void reset(const LLVoiceChannel::EState& new_state);
 
 private:
 	speaker_state_map_t mSpeakerStateMap;
diff --git a/indra/newview/llspeakbutton.cpp b/indra/newview/llspeakbutton.cpp
index 8f2c877c7a8..c5c311ed33c 100644
--- a/indra/newview/llspeakbutton.cpp
+++ b/indra/newview/llspeakbutton.cpp
@@ -66,6 +66,16 @@ void LLSpeakButton::draw()
 	mOutputMonitor->setIsMuted(!voiceenabled);
 	LLUICtrl::draw();
 }
+void LLSpeakButton::setSpeakBtnEnabled(bool enabled)
+{
+	LLButton* speak_btn = getChild<LLButton>("speak_btn");
+	speak_btn->setEnabled(enabled);
+}
+void LLSpeakButton::setFlyoutBtnEnabled(bool enabled)
+{
+	LLButton* show_btn = getChild<LLButton>("speak_flyout_btn");
+	show_btn->setEnabled(enabled);
+}
 
 LLSpeakButton::LLSpeakButton(const Params& p)
 : LLUICtrl(p)
diff --git a/indra/newview/llspeakbutton.h b/indra/newview/llspeakbutton.h
index 6660b502407..85c97f1a2cb 100644
--- a/indra/newview/llspeakbutton.h
+++ b/indra/newview/llspeakbutton.h
@@ -61,6 +61,10 @@ class LLSpeakButton : public LLUICtrl
 
 	/*virtual*/ ~LLSpeakButton();
 	/*virtual*/ void draw();
+	
+	// methods for enabling/disabling right and left parts of speak button separately(EXT-4648)
+	void setSpeakBtnEnabled(bool enabled);
+	void setFlyoutBtnEnabled(bool enabled);
 
 	// *HACK: Need to put tooltips in a translatable location,
 	// the panel that contains this button.
-- 
GitLab


From eab2f01b19b3a2ce46b2d44935097747a3eefadb Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 20:18:22 +0000
Subject: [PATCH 504/521] CID-278

Checker: UNINIT_CTOR
Function: LLTransferTargetParamsFile::LLTransferTargetParamsFile()
File: /indra/llmessage/lltransfertargetfile.h
---
 indra/llmessage/lltransfertargetfile.h | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/indra/llmessage/lltransfertargetfile.h b/indra/llmessage/lltransfertargetfile.h
index 18b9b520628..92fb8f807c8 100644
--- a/indra/llmessage/lltransfertargetfile.h
+++ b/indra/llmessage/lltransfertargetfile.h
@@ -40,7 +40,12 @@ typedef void (*LLTTFCompleteCallback)(const LLTSCode status, void *user_data);
 class LLTransferTargetParamsFile : public LLTransferTargetParams
 {
 public:
-	LLTransferTargetParamsFile() : LLTransferTargetParams(LLTTT_FILE) {}
+	LLTransferTargetParamsFile()
+		: LLTransferTargetParams(LLTTT_FILE),
+
+		mCompleteCallback(NULL),
+		mUserData(NULL)
+	{}
 	void setFilename(const std::string& filename)	{ mFilename = filename; }
 	void setCallback(LLTTFCompleteCallback cb, void *user_data)		{ mCompleteCallback = cb; mUserData = user_data; }
 
-- 
GitLab


From 2879692aa2696af80a1f12daaf88b886412dacb5 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 20:25:04 +0000
Subject: [PATCH 505/521] CID-277

Checker: UNINIT_CTOR
Function: LLPacketBuffer::LLPacketBuffer(const LLHost &, const char *, int)
File: /indra/llmessage/llpacketbuffer.cpp
---
 indra/llmessage/llpacketbuffer.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/indra/llmessage/llpacketbuffer.cpp b/indra/llmessage/llpacketbuffer.cpp
index 027d35cf89f..60ced66318f 100644
--- a/indra/llmessage/llpacketbuffer.cpp
+++ b/indra/llmessage/llpacketbuffer.cpp
@@ -44,6 +44,8 @@ LLPacketBuffer::LLPacketBuffer(const LLHost &host, const char *datap, const S32
 {
 	if (size > NET_BUFFER_SIZE)
 	{
+		mSize = 0;
+		mData[0] = 0;
 		llerrs << "Sending packet > " << NET_BUFFER_SIZE << " of size " << size << llendl;
 	}
 	else // we previously relied on llerrs being fatal to not get here...
-- 
GitLab


From 08b93d95ef9d21e39d633ada19a6cbad23c25b91 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 20:26:42 +0000
Subject: [PATCH 506/521] CID-277

Checker: UNINIT_CTOR
Function: LLPacketBuffer::LLPacketBuffer(const LLHost &, const char *, int)
File: /indra/llmessage/llpacketbuffer.cpp

a fix I like better.
---
 indra/llmessage/llpacketbuffer.cpp | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/indra/llmessage/llpacketbuffer.cpp b/indra/llmessage/llpacketbuffer.cpp
index 60ced66318f..441e8ddd270 100644
--- a/indra/llmessage/llpacketbuffer.cpp
+++ b/indra/llmessage/llpacketbuffer.cpp
@@ -42,13 +42,14 @@
 
 LLPacketBuffer::LLPacketBuffer(const LLHost &host, const char *datap, const S32 size) : mHost(host)
 {
+	mSize = 0;
+	mData[0] = '!';
+
 	if (size > NET_BUFFER_SIZE)
 	{
-		mSize = 0;
-		mData[0] = 0;
 		llerrs << "Sending packet > " << NET_BUFFER_SIZE << " of size " << size << llendl;
 	}
-	else // we previously relied on llerrs being fatal to not get here...
+	else
 	{
 		if (datap != NULL)
 		{
-- 
GitLab


From 930035ebdc308960bdb1a51ae622dd06f93a7255 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 20:29:57 +0000
Subject: [PATCH 507/521] CID-273

Checker: UNINIT_CTOR
Function: NamedTimerFactory::NamedTimerFactory()
File: /indra/llcommon/llfasttimer_class.cpp
---
 indra/llcommon/llfasttimer_class.cpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/indra/llcommon/llfasttimer_class.cpp b/indra/llcommon/llfasttimer_class.cpp
index fae0a668732..6d8d81e114e 100644
--- a/indra/llcommon/llfasttimer_class.cpp
+++ b/indra/llcommon/llfasttimer_class.cpp
@@ -114,7 +114,11 @@ static timer_tree_dfs_iterator_t end_timer_tree()
 class NamedTimerFactory : public LLSingleton<NamedTimerFactory>
 {
 public:
-	NamedTimerFactory() 
+	NamedTimerFactory()
+		: mActiveTimerRoot(NULL),
+		  mTimerRoot(NULL),
+		  mAppTimer(NULL),
+		  mRootFrameState(NULL)
 	{}
 
 	/*virtual */ void initSingleton()
-- 
GitLab


From 8b4823acfb1907f936c7a9f27e5138724f54faa7 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 20:33:47 +0000
Subject: [PATCH 508/521] CID-272

Checker: UNINIT_CTOR
Function: LLTreeDFSPostIter<LLView, std::list<LLView *, std::allocator<LLView *>>::_Const_iterator<(bool)0>>::LLTreeDFSPostIter()
File: /indra/llcommon/lltreeiterators.h
---
 indra/llcommon/lltreeiterators.h | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/indra/llcommon/lltreeiterators.h b/indra/llcommon/lltreeiterators.h
index c946566e842..034eeba65d3 100644
--- a/indra/llcommon/lltreeiterators.h
+++ b/indra/llcommon/lltreeiterators.h
@@ -451,10 +451,10 @@ class LLTreeDFSPostIter: public LLBaseIter<LLTreeDFSPostIter<NODE, CHILDITER>, N
     /// Instantiate an LLTreeDFSPostIter to start a depth-first walk. Pass
     /// functors to extract the 'child begin' and 'child end' iterators from
     /// each node.
-    LLTreeDFSPostIter(const ptr_type& node, const func_type& beginfunc, const func_type& endfunc):
-        mBeginFunc(beginfunc),
-        mEndFunc(endfunc),
-		mSkipAncestors(false)
+    LLTreeDFSPostIter(const ptr_type& node, const func_type& beginfunc, const func_type& endfunc)
+	    : mBeginFunc(beginfunc),
+	    mEndFunc(endfunc),
+	    mSkipAncestors(false)
     {
         if (! node)
             return;
@@ -462,7 +462,7 @@ class LLTreeDFSPostIter: public LLBaseIter<LLTreeDFSPostIter<NODE, CHILDITER>, N
         makeCurrent();
     }
     /// Instantiate an LLTreeDFSPostIter to mark the end of the walk
-    LLTreeDFSPostIter() {}
+     LLTreeDFSPostIter() : mSkipAncestors(false) {}
 
 	/// flags iterator logic to skip traversing ancestors of current node on next increment
 	void skipAncestors(bool skip = true) { mSkipAncestors = skip; }
-- 
GitLab


From 193f2e2edc1ade7a211c57a60bc42687aab036d4 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 20:36:56 +0000
Subject: [PATCH 509/521] CID-271

Checker: UNINIT_CTOR
Function: LLTreeDFSIter<LLView, std::list<LLView *, std::allocator<LLView *>>::_Const_iterator<(bool)0>>::LLTreeDFSIter()
File: /indra/llcommon/lltreeiterators.h
---
 indra/llcommon/lltreeiterators.h | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/indra/llcommon/lltreeiterators.h b/indra/llcommon/lltreeiterators.h
index 034eeba65d3..cb1304c54ec 100644
--- a/indra/llcommon/lltreeiterators.h
+++ b/indra/llcommon/lltreeiterators.h
@@ -343,20 +343,20 @@ class LLTreeDFSIter: public LLBaseIter<LLTreeDFSIter<NODE, CHILDITER>, NODE>
     /// Instantiate an LLTreeDFSIter to start a depth-first walk. Pass
     /// functors to extract the 'child begin' and 'child end' iterators from
     /// each node.
-    LLTreeDFSIter(const ptr_type& node, const func_type& beginfunc, const func_type& endfunc):
-        mBeginFunc(beginfunc),
-        mEndFunc(endfunc),
-		mSkipChildren(false)
+    LLTreeDFSIter(const ptr_type& node, const func_type& beginfunc, const func_type& endfunc)
+	    : mBeginFunc(beginfunc),
+	    mEndFunc(endfunc),
+	    mSkipChildren(false)
     {
         // Only push back this node if it's non-NULL!
         if (node)
             mPending.push_back(node);
     }
     /// Instantiate an LLTreeDFSIter to mark the end of the walk
-    LLTreeDFSIter() {}
+    LLTreeDFSIter() : mSkipChildren(false) {}
 
-	/// flags iterator logic to skip traversing children of current node on next increment
-	void skipDescendants(bool skip = true) { mSkipChildren = skip; }
+    /// flags iterator logic to skip traversing children of current node on next increment
+    void skipDescendants(bool skip = true) { mSkipChildren = skip; }
 
 private:
     /// leverage boost::iterator_facade
@@ -405,8 +405,8 @@ class LLTreeDFSIter: public LLBaseIter<LLTreeDFSIter<NODE, CHILDITER>, NODE>
     func_type mBeginFunc;
     /// functor to extract end() child iterator
     func_type mEndFunc;
-	/// flag which controls traversal of children (skip children of current node if true)
-	bool	mSkipChildren;
+    /// flag which controls traversal of children (skip children of current node if true)
+    bool	mSkipChildren;
 };
 
 /**
@@ -455,17 +455,17 @@ class LLTreeDFSPostIter: public LLBaseIter<LLTreeDFSPostIter<NODE, CHILDITER>, N
 	    : mBeginFunc(beginfunc),
 	    mEndFunc(endfunc),
 	    mSkipAncestors(false)
-    {
+	    {
         if (! node)
             return;
         mPending.push_back(typename list_type::value_type(node, false));
         makeCurrent();
     }
     /// Instantiate an LLTreeDFSPostIter to mark the end of the walk
-     LLTreeDFSPostIter() : mSkipAncestors(false) {}
+    LLTreeDFSPostIter() : mSkipAncestors(false) {}
 
-	/// flags iterator logic to skip traversing ancestors of current node on next increment
-	void skipAncestors(bool skip = true) { mSkipAncestors = skip; }
+    /// flags iterator logic to skip traversing ancestors of current node on next increment
+    void skipAncestors(bool skip = true) { mSkipAncestors = skip; }
 
 private:
     /// leverage boost::iterator_facade
-- 
GitLab


From 33a92be286e2b63f76b9a032e5912806d717959f Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 20:39:52 +0000
Subject: [PATCH 510/521] CID-269

Checker: UNINIT_CTOR
Function: LLWorkerClass::LLWorkerClass(LLWorkerThread *, const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&)
File: /indra/llcommon/llworkerthread.cpp
---
 indra/llcommon/llworkerthread.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/llcommon/llworkerthread.cpp b/indra/llcommon/llworkerthread.cpp
index 82c736266db..1b0e03cb2a8 100644
--- a/indra/llcommon/llworkerthread.cpp
+++ b/indra/llcommon/llworkerthread.cpp
@@ -188,6 +188,7 @@ LLWorkerClass::LLWorkerClass(LLWorkerThread* workerthread, const std::string& na
 	: mWorkerThread(workerthread),
 	  mWorkerClassName(name),
 	  mRequestHandle(LLWorkerThread::nullHandle()),
+	  mRequestPriority(LLWorkerThread::PRIORITY_NORMAL),
 	  mMutex(NULL),
 	  mWorkFlags(0)
 {
-- 
GitLab


From e5bd3b8a4846ee21cfaf726cfbf3e943b277e7c1 Mon Sep 17 00:00:00 2001
From: Vadim Savchuk <vsavchuk@productengine.com>
Date: Wed, 3 Feb 2010 22:42:10 +0200
Subject: [PATCH 511/521] Fixed bug EXT-2915 ([BSI] Pay Button is hard to find
 on small resolutions). Added a "Block/Unblock" item to the profile view panel
 overflow menu to make the menu more visible.

--HG--
branch : product-engine
---
 indra/newview/llavataractions.cpp             | 10 +++++++
 indra/newview/llavataractions.h               |  5 ++++
 indra/newview/llpanelavatar.cpp               | 28 +++++++++++++++++++
 indra/newview/llpanelavatar.h                 |  8 +++++-
 indra/newview/llpanelpeoplemenus.cpp          |  6 +---
 .../default/xui/en/menu_profile_overflow.xml  | 13 +++++++++
 6 files changed, 64 insertions(+), 6 deletions(-)

diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index 7eed2e7b9a2..bd987eac77c 100644
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -612,3 +612,13 @@ bool LLAvatarActions::isBlocked(const LLUUID& id)
 	gCacheName->getFullName(id, name);
 	return LLMuteList::getInstance()->isMuted(id, name);
 }
+
+// static
+bool LLAvatarActions::canBlock(const LLUUID& id)
+{
+	std::string firstname, lastname;
+	gCacheName->getName(id, firstname, lastname);
+	bool is_linden = !LLStringUtil::compareStrings(lastname, "Linden");
+	bool is_self = id == gAgentID;
+	return !is_self && !is_linden;
+}
diff --git a/indra/newview/llavataractions.h b/indra/newview/llavataractions.h
index c751661acff..16a58718a21 100644
--- a/indra/newview/llavataractions.h
+++ b/indra/newview/llavataractions.h
@@ -123,6 +123,11 @@ class LLAvatarActions
 	 */
 	static bool isBlocked(const LLUUID& id);
 
+	/**
+	 * @return true if you can block the avatar
+	 */
+	static bool canBlock(const LLUUID& id);
+
 	/**
 	 * Return true if the avatar is in a P2P voice call with a given user
 	 */
diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp
index 48dd5513bdc..4a7cdfc856f 100644
--- a/indra/newview/llpanelavatar.cpp
+++ b/indra/newview/llpanelavatar.cpp
@@ -483,6 +483,7 @@ BOOL LLPanelAvatarProfile::postBuild()
 	LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
 	registrar.add("Profile.Pay",  boost::bind(&LLPanelAvatarProfile::pay, this));
 	registrar.add("Profile.Share", boost::bind(&LLPanelAvatarProfile::share, this));
+	registrar.add("Profile.BlockUnblock", boost::bind(&LLPanelAvatarProfile::toggleBlock, this));
 	registrar.add("Profile.Kick", boost::bind(&LLPanelAvatarProfile::kick, this));
 	registrar.add("Profile.Freeze", boost::bind(&LLPanelAvatarProfile::freeze, this));
 	registrar.add("Profile.Unfreeze", boost::bind(&LLPanelAvatarProfile::unfreeze, this));
@@ -490,6 +491,8 @@ BOOL LLPanelAvatarProfile::postBuild()
 
 	LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable;
 	enable.add("Profile.EnableGod", boost::bind(&enable_god));
+	enable.add("Profile.CheckItem", boost::bind(&LLPanelAvatarProfile::checkOverflowMenuItem, this, _2));
+	enable.add("Profile.EnableItem", boost::bind(&LLPanelAvatarProfile::enableOverflowMenuItem, this, _2));
 
 	mProfileMenu = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_profile_overflow.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
 
@@ -666,6 +669,26 @@ void LLPanelAvatarProfile::fillAccountStatus(const LLAvatarData* avatar_data)
 	childSetValue("acc_status_text", caption_text);
 }
 
+bool LLPanelAvatarProfile::checkOverflowMenuItem(const LLSD& param)
+{
+    std::string item = param.asString();
+
+    if (item == "is_blocked")
+        return LLAvatarActions::isBlocked(getAvatarId());
+
+    return false;
+}
+
+bool LLPanelAvatarProfile::enableOverflowMenuItem(const LLSD& param)
+{
+    std::string item = param.asString();
+
+    if (item == "can_block")
+        return LLAvatarActions::canBlock(getAvatarId());
+
+    return false;
+}
+
 void LLPanelAvatarProfile::pay()
 {
 	LLAvatarActions::pay(getAvatarId());
@@ -676,6 +699,11 @@ void LLPanelAvatarProfile::share()
 	LLAvatarActions::share(getAvatarId());
 }
 
+void LLPanelAvatarProfile::toggleBlock()
+{
+	LLAvatarActions::toggleBlock(getAvatarId());
+}
+
 void LLPanelAvatarProfile::kick()
 {
 	LLAvatarActions::kick(getAvatarId());
diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h
index ce59f1e93d2..632590aa279 100644
--- a/indra/newview/llpanelavatar.h
+++ b/indra/newview/llpanelavatar.h
@@ -192,12 +192,18 @@ class LLPanelAvatarProfile
 	 */
 	void share();
 
+	/**
+	 * Add/remove resident to/from your block list.
+	 */
+	void toggleBlock();
+
 	void kick();
 	void freeze();
 	void unfreeze();
 	void csr();
 	
-
+	bool checkOverflowMenuItem(const LLSD& param);
+	bool enableOverflowMenuItem(const LLSD& param);
 	bool enableGod();
 
 
diff --git a/indra/newview/llpanelpeoplemenus.cpp b/indra/newview/llpanelpeoplemenus.cpp
index 470cfca8fec..7e184c78a8f 100644
--- a/indra/newview/llpanelpeoplemenus.cpp
+++ b/indra/newview/llpanelpeoplemenus.cpp
@@ -164,11 +164,7 @@ bool NearbyMenu::enableContextMenuItem(const LLSD& userdata)
 	if (item == std::string("can_block"))
 	{
 		const LLUUID& id = mUUIDs.front();
-		std::string firstname, lastname;
-		gCacheName->getName(id, firstname, lastname);
-		bool is_linden = !LLStringUtil::compareStrings(lastname, "Linden");
-		bool is_self = id == gAgentID;
-		return !is_self && !is_linden;
+		return LLAvatarActions::canBlock(id);
 	}
 	else if (item == std::string("can_add"))
 	{
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 1dc1c610cfe..407ce14e811 100644
--- a/indra/newview/skins/default/xui/en/menu_profile_overflow.xml
+++ b/indra/newview/skins/default/xui/en/menu_profile_overflow.xml
@@ -19,6 +19,19 @@
         <menu_item_call.on_click
          function="Profile.Share" />
     </menu_item_call>
+    <menu_item_check
+     label="Block/Unblock"
+     layout="topleft"
+     name="block_unblock">
+        <menu_item_check.on_click
+         function="Profile.BlockUnblock" />
+        <menu_item_check.on_check
+         function="Profile.CheckItem"
+         parameter="is_blocked" />
+        <menu_item_check.on_enable
+         function="Profile.EnableItem"
+         parameter="can_block" />
+    </menu_item_check>
   <menu_item_call
    label="Kick"
    layout="topleft"
-- 
GitLab


From a788f758e44ef506a82af8a9dccb71578334cefb Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 20:44:32 +0000
Subject: [PATCH 512/521] CID-267

Checker: UNINIT_CTOR
Function: LLXMLNode::LLXMLNode(const LLXMLNode&)
File: /indra/llxml/llxmlnode.cpp
---
 indra/llxml/llxmlnode.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/indra/llxml/llxmlnode.cpp b/indra/llxml/llxmlnode.cpp
index 07cc612a0aa..e4f6482faea 100644
--- a/indra/llxml/llxmlnode.cpp
+++ b/indra/llxml/llxmlnode.cpp
@@ -131,6 +131,8 @@ LLXMLNode::LLXMLNode(const LLXMLNode& rhs) :
 	mPrecision(rhs.mPrecision),
 	mType(rhs.mType),
 	mEncoding(rhs.mEncoding),
+	mLineNumber(0),
+	mParser(NULL),
 	mParent(NULL),
 	mChildren(NULL),
 	mAttributes(),
-- 
GitLab


From b7405a144ec88943a3781d41cc0768fdb323df6c Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 20:45:53 +0000
Subject: [PATCH 513/521] CID-266

Checker: UNINIT_CTOR
Function: LLXmlTreeParser::LLXmlTreeParser(LLXmlTree *)
File: /indra/llxml/llxmltree.cpp
---
 indra/llxml/llxmltree.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/indra/llxml/llxmltree.cpp b/indra/llxml/llxmltree.cpp
index 1bce5d29f7c..bc2690deff5 100644
--- a/indra/llxml/llxmltree.cpp
+++ b/indra/llxml/llxmltree.cpp
@@ -510,7 +510,8 @@ LLXmlTreeParser::LLXmlTreeParser(LLXmlTree* tree)
 	: mTree(tree),
 	  mRoot( NULL ),
 	  mCurrent( NULL ),
-	  mDump( FALSE )
+	  mDump( FALSE ),
+	  mKeepContents(FALSE)
 {
 }
 
-- 
GitLab


From 81bc33f042fb1574e0119b0f46739a3f32849883 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 20:48:10 +0000
Subject: [PATCH 514/521] CID-264

Checker: UNINIT_CTOR
Function: LLPluginProcessChild::LLPluginProcessChild()
File: /indra/llplugin/llpluginprocesschild.cpp
---
 indra/llplugin/llpluginprocesschild.cpp | 1 +
 indra/llplugin/llpluginprocesschild.h   | 3 ++-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/indra/llplugin/llpluginprocesschild.cpp b/indra/llplugin/llpluginprocesschild.cpp
index 11c924cadfd..0f3254d78d2 100644
--- a/indra/llplugin/llpluginprocesschild.cpp
+++ b/indra/llplugin/llpluginprocesschild.cpp
@@ -43,6 +43,7 @@ static const F32 PLUGIN_IDLE_SECONDS = 1.0f / 100.0f;  // Each call to idle will
 
 LLPluginProcessChild::LLPluginProcessChild()
 {
+	mState = STATE_UNINITIALIZED;
 	mInstance = NULL;
 	mSocket = LLSocket::create(gAPRPoolp, LLSocket::STREAM_TCP);
 	mSleepTime = PLUGIN_IDLE_SECONDS;	// default: send idle messages at 100Hz
diff --git a/indra/llplugin/llpluginprocesschild.h b/indra/llplugin/llpluginprocesschild.h
index 1cfd9dcaf9a..58f8935ed1a 100644
--- a/indra/llplugin/llpluginprocesschild.h
+++ b/indra/llplugin/llpluginprocesschild.h
@@ -89,8 +89,9 @@ class LLPluginProcessChild: public LLPluginMessagePipeOwner, public LLPluginInst
 		STATE_ERROR,				// generic bailout state
 		STATE_DONE					// state machine will sit in this state after either error or normal termination.
 	};
-	EState mState;
 	void setState(EState state);
+
+	EState mState;
 	
 	LLHost mLauncherHost;
 	LLSocket::ptr_t mSocket;
-- 
GitLab


From d98df93ce28be57a7759a3e321ba5f3ebaf8617a Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 20:50:01 +0000
Subject: [PATCH 515/521] CID-263

Checker: UNINIT_CTOR
Function: LLPluginClassMedia::LLPluginClassMedia(LLPluginClassMediaOwner *)
File: /indra/llplugin/llpluginclassmedia.cpp
---
 indra/llplugin/llpluginclassmedia.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp
index 3d2eaed5c5a..91c796a9e6a 100644
--- a/indra/llplugin/llpluginclassmedia.cpp
+++ b/indra/llplugin/llpluginclassmedia.cpp
@@ -104,6 +104,8 @@ void LLPluginClassMedia::reset()
 	mSetMediaHeight = -1;
 	mRequestedMediaWidth = 0;
 	mRequestedMediaHeight = 0;
+	mRequestedTextureWidth = 0;
+	mRequestedTextureHeight = 0;
 	mFullMediaWidth = 0;
 	mFullMediaHeight = 0;
 	mTextureWidth = 0;
-- 
GitLab


From 429fa5a494910c43e2a4cfd0f695146fbfb57dbb Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Wed, 3 Feb 2010 15:50:57 -0500
Subject: [PATCH 516/521] Skip fragile (local ISP dependent) llhttpclient
 integration test.

---
 indra/test/llhttpclient_tut.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/test/llhttpclient_tut.cpp b/indra/test/llhttpclient_tut.cpp
index c541997e89e..2b1496e9121 100644
--- a/indra/test/llhttpclient_tut.cpp
+++ b/indra/test/llhttpclient_tut.cpp
@@ -269,6 +269,7 @@ namespace tut
 	template<> template<>
 	void HTTPClientTestObject::test<2>()
 	{
+		skip("error test depends on dev's local ISP not supplying \"helpful\" search page");
 		LLHTTPClient::get("http://www.invalid", newResult());
 		runThePump();
 		ensureStatusError();
-- 
GitLab


From f1606535e121aff163b5499ab487dcfb04d524b7 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 20:52:06 +0000
Subject: [PATCH 517/521] CID-262

Checker: UNINIT_CTOR
Function: LLPluginProcessParent::LLPluginProcessParent(LLPluginProcessParentOwner *)
File: /indra/llplugin/llpluginprocessparent.cpp
---
 indra/llplugin/llpluginprocessparent.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/indra/llplugin/llpluginprocessparent.cpp b/indra/llplugin/llpluginprocessparent.cpp
index 49f97838241..efd5df687e5 100644
--- a/indra/llplugin/llpluginprocessparent.cpp
+++ b/indra/llplugin/llpluginprocessparent.cpp
@@ -50,6 +50,8 @@ LLPluginProcessParent::LLPluginProcessParent(LLPluginProcessParentOwner *owner)
 	mOwner = owner;
 	mBoundPort = 0;
 	mState = STATE_UNINITIALIZED;
+	mSleepTime = 0.0;
+	mCPUUsage = 0.0;
 	mDisableTimeout = false;
 	mDebug = false;
 
-- 
GitLab


From d182b4f19ab14e07b5d43ad605545fb04686e870 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 20:54:16 +0000
Subject: [PATCH 518/521] CID-261

Checker: UNINIT_CTOR
Function: LLImageJ2COJ::LLImageJ2COJ()
File: /indra/llimagej2coj/llimagej2coj.cpp
---
 indra/llimagej2coj/llimagej2coj.cpp | 3 ++-
 indra/llimagej2coj/llimagej2coj.h   | 3 ---
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/indra/llimagej2coj/llimagej2coj.cpp b/indra/llimagej2coj/llimagej2coj.cpp
index e71429b18d3..3af31da0831 100644
--- a/indra/llimagej2coj/llimagej2coj.cpp
+++ b/indra/llimagej2coj/llimagej2coj.cpp
@@ -97,7 +97,8 @@ void info_callback(const char* msg, void*)
 }
 
 
-LLImageJ2COJ::LLImageJ2COJ() : LLImageJ2CImpl()
+LLImageJ2COJ::LLImageJ2COJ()
+	: LLImageJ2CImpl()
 {
 }
 
diff --git a/indra/llimagej2coj/llimagej2coj.h b/indra/llimagej2coj/llimagej2coj.h
index 73cb074f1fd..8255d5225fa 100644
--- a/indra/llimagej2coj/llimagej2coj.h
+++ b/indra/llimagej2coj/llimagej2coj.h
@@ -51,9 +51,6 @@ class LLImageJ2COJ : public LLImageJ2CImpl
 		// Divide a by b to the power of 2 and round upwards.
 		return (a + (1 << b) - 1) >> b;
 	}
-
-	// Temporary variables for in-progress decodes...
-	LLImageRaw *mRawImagep;
 };
 
 #endif
-- 
GitLab


From 940041992ac429c7d67642f82b64ebc8bc01730f Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 20:57:29 +0000
Subject: [PATCH 519/521] CID-260

Checker: UNINIT_CTOR
Function: LLPidLockFile::LLPidLockFile()
File: /indra/llvfs/llpidlock.cpp
---
 indra/llvfs/llpidlock.cpp | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/indra/llvfs/llpidlock.cpp b/indra/llvfs/llpidlock.cpp
index 95e3692e107..28cee294053 100755
--- a/indra/llvfs/llpidlock.cpp
+++ b/indra/llvfs/llpidlock.cpp
@@ -68,8 +68,12 @@ class LLPidLockFile
 {
 	public:
 		LLPidLockFile( ) :
-			mSaving(FALSE), mWaiting(FALSE), 
-			mClean(TRUE), mPID(getpid())
+			mAutosave(false),
+			mSaving(false),
+			mWaiting(false),
+			mPID(getpid()),
+			mNameTable(NULL),
+			mClean(true)
 		{
 			mLockName = gDirUtilp->getTempDir() + gDirUtilp->getDirDelimiter() + "savelock";
 		}
-- 
GitLab


From 1e6d2c9cd3d8e3a7ee48601ca0ecf0cf8dc4f809 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 21:00:12 +0000
Subject: [PATCH 520/521] CID-259

Checker: UNINIT_CTOR
Function: LLVFile::LLVFile(LLVFS *, const LLUUID &, LLAssetType::EType, int)
File: /indra/llvfs/llvfile.cpp

dead field.
---
 indra/llvfs/llvfile.h | 1 -
 1 file changed, 1 deletion(-)

diff --git a/indra/llvfs/llvfile.h b/indra/llvfs/llvfile.h
index 5f69a410400..c3bca8c7371 100644
--- a/indra/llvfs/llvfile.h
+++ b/indra/llvfs/llvfile.h
@@ -88,7 +88,6 @@ class LLVFile
 	S32		mMode;
 	LLVFS	*mVFS;
 	F32		mPriority;
-	BOOL	mOnReadQueue;
 
 	S32		mBytesRead;
 	LLVFSThread::handle_t mHandle;
-- 
GitLab


From bf18e798c5ca2e238bb5f4affec7182c8e30dcd4 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Wed, 3 Feb 2010 21:13:37 +0000
Subject: [PATCH 521/521] CID-405

Checker: UNUSED_VALUE
Function: LLNormalTextSegment::drawClippedSegment(int, int, int, int, LLRectBase<int>)
File: /indra/llui/lltextbase.cpp
---
 indra/llui/lltextbase.cpp | 2 --
 1 file changed, 2 deletions(-)

diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 75ca6d88950..2b1e2b82268 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -2333,8 +2333,6 @@ F32 LLNormalTextSegment::drawClippedSegment(S32 seg_start, S32 seg_end, S32 sele
 
 	LLColor4 color = (mEditor.getReadOnly() ? mStyle->getReadOnlyColor() : mStyle->getColor())  % alpha;
 
-	font = mStyle->getFont();
-
   	if( selection_start > seg_start )
 	{
 		// Draw normally
-- 
GitLab