From 04fe0399443cf4a5852e94cd3950ba1fd2d50562 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Thu, 14 Jan 2010 13:55:00 -0800
Subject: [PATCH] Backed out changeset d5b761982e63

This got pushed too early - sorry.  Sigh.
---
 indra/llcommon/llfasttimer.h                  | 163 +++++------
 indra/llplugin/llpluginclassmedia.cpp         |  30 +--
 indra/llplugin/llpluginclassmedia.h           |  12 -
 indra/llui/llfloater.cpp                      |  46 ++--
 indra/llui/llmenugl.cpp                       |   2 +-
 indra/llui/lltexteditor.cpp                   |   3 +-
 .../webkit/media_plugin_webkit.cpp            |   1 -
 indra/newview/CMakeLists.txt                  |   8 +-
 indra/newview/app_settings/settings.xml       |  13 +-
 .../darwin/fix_application_icon_position.sh   |  14 -
 indra/newview/llagent.cpp                     |   9 +-
 indra/newview/llagent.h                       |   1 -
 indra/newview/llavatarlist.cpp                |   7 +-
 indra/newview/llavatarlistitem.cpp            | 251 +++++++----------
 indra/newview/llavatarlistitem.h              |  71 ++---
 indra/newview/llbottomtray.cpp                |  17 +-
 indra/newview/llcallfloater.cpp               |  12 +-
 indra/newview/llchathistory.cpp               |  49 ++--
 indra/newview/llfloaterabout.cpp              |   2 +-
 indra/newview/llfloaterchat.cpp               |  15 +-
 indra/newview/llfloatergesture.cpp            |   2 +-
 indra/newview/llfloatergroups.cpp             |   9 +-
 indra/newview/llfloaterland.cpp               |   7 +-
 indra/newview/llfloaterland.h                 |   1 +
 indra/newview/llfloaterpreference.cpp         |   2 +-
 indra/newview/llfloaterregioninfo.cpp         |   5 -
 indra/newview/llgesturemgr.cpp                |  10 -
 indra/newview/llgesturemgr.h                  |   2 -
 indra/newview/llgroupactions.cpp              |  10 +-
 indra/newview/llimfloater.cpp                 |  86 +++---
 indra/newview/llimfloater.h                   |   5 +-
 indra/newview/llimfloatercontainer.cpp        |  11 -
 indra/newview/llimfloatercontainer.h          |   6 +-
 indra/newview/llimview.cpp                    |  19 +-
 indra/newview/llimview.h                      |   5 -
 indra/newview/llinspectavatar.cpp             |   1 -
 indra/newview/llinspecttoast.cpp              | 122 ---------
 indra/newview/llinspecttoast.h                |  40 ---
 indra/newview/llinventorymodel.cpp            |   8 +-
 indra/newview/llinventoryobserver.cpp         |  35 +--
 indra/newview/llmediactrl.cpp                 |  45 ++--
 indra/newview/llmediactrl.h                   |   1 +
 indra/newview/llnamebox.cpp                   |  24 +-
 indra/newview/llnamebox.h                     |   5 -
 indra/newview/llnearbychat.cpp                |  22 +-
 indra/newview/llnearbychatbar.cpp             | 252 +++++------------
 indra/newview/llnearbychatbar.h               |  47 +---
 indra/newview/llnearbychathandler.cpp         |  25 +-
 indra/newview/lloutputmonitorctrl.cpp         |  65 +----
 indra/newview/lloutputmonitorctrl.h           |  29 +-
 indra/newview/llpanelavatar.cpp               |  18 +-
 indra/newview/llpanelgroup.cpp                |  55 +---
 indra/newview/llpanelgroup.h                  |   4 -
 indra/newview/llpanelgroupgeneral.cpp         |  11 +-
 indra/newview/llpanelgrouproles.cpp           |  61 ++---
 indra/newview/llpanelgrouproles.h             |  13 +-
 indra/newview/llpanelimcontrolpanel.cpp       |   2 +-
 indra/newview/llpanelpeople.cpp               |   8 +-
 indra/newview/llpanelpick.cpp                 |  80 +++---
 indra/newview/llpanelpick.h                   |  18 +-
 indra/newview/llpanelplaces.h                 |   4 -
 indra/newview/llpanelteleporthistory.cpp      |   2 +-
 indra/newview/llpanelvolumepulldown.cpp       | 154 -----------
 indra/newview/llpanelvolumepulldown.h         |  64 -----
 indra/newview/llparticipantlist.cpp           |   8 +-
 indra/newview/llscreenchannel.cpp             | 149 ++++++++--
 indra/newview/llscreenchannel.h               |  19 +-
 indra/newview/llspeakers.cpp                  |   5 -
 indra/newview/llspeakers.h                    |   2 -
 indra/newview/llspeakingindicatormanager.cpp  | 254 ------------------
 indra/newview/llspeakingindicatormanager.h    |  67 -----
 indra/newview/llstatusbar.cpp                 |  19 +-
 indra/newview/llstatusbar.h                   |   2 +-
 indra/newview/llsyswellitem.cpp               |   3 +-
 indra/newview/llsyswellwindow.cpp             |   3 +-
 indra/newview/llsyswellwindow.h               |   3 -
 indra/newview/llteleporthistorystorage.cpp    |   7 +
 indra/newview/lltoastnotifypanel.cpp          |   4 +-
 indra/newview/llviewerdisplay.cpp             |  20 +-
 indra/newview/llviewerfloaterreg.cpp          |   5 +-
 indra/newview/llviewermessage.cpp             |  56 ++--
 indra/newview/llviewerwindow.cpp              |  34 ++-
 indra/newview/llvoiceclient.cpp               |  11 -
 indra/newview/llvoiceclient.h                 |   1 -
 .../textures/bottomtray/Unread_Chiclet.png    | Bin 328 -> 250 bytes
 .../textures/bottomtray/WellButton_Lit.png    | Bin 490 -> 553 bytes
 .../bottomtray/WellButton_Lit_Selected.png    | Bin 302 -> 687 bytes
 .../skins/default/textures/textures.xml       |  28 +-
 .../default/xui/de/floater_buy_currency.xml   |   2 +-
 .../default/xui/de/floater_help_browser.xml   |   4 +-
 .../newview/skins/default/xui/de/strings.xml  |  72 ++---
 .../skins/default/xui/en/floater_about.xml    |   2 +-
 .../default/xui/en/floater_about_land.xml     |   8 +-
 .../default/xui/en/floater_buy_currency.xml   |   4 +-
 .../default/xui/en/floater_customize.xml      | 120 ++++-----
 .../default/xui/en/floater_god_tools.xml      |   2 +-
 .../skins/default/xui/en/floater_im.xml       |   2 +-
 .../default/xui/en/floater_nearby_chat.xml    |   4 +-
 .../default/xui/en/floater_report_abuse.xml   |   4 +-
 .../default/xui/en/floater_select_key.xml     |   8 +-
 .../default/xui/en/floater_top_objects.xml    |  20 +-
 .../skins/default/xui/en/floater_tos.xml      |   6 +-
 .../default/xui/en/floater_voice_controls.xml | 143 ++++++----
 .../skins/default/xui/en/inspect_toast.xml    |  19 --
 .../skins/default/xui/en/menu_viewer.xml      |  36 ++-
 .../skins/default/xui/en/notifications.xml    |  33 +--
 .../xui/en/panel_adhoc_control_panel.xml      |  17 +-
 .../default/xui/en/panel_avatar_list_item.xml |   7 +-
 .../xui/en/panel_block_list_sidetray.xml      |   6 +-
 .../skins/default/xui/en/panel_bottomtray.xml |  45 ++--
 .../skins/default/xui/en/panel_edit_pick.xml  |  32 +--
 .../default/xui/en/panel_edit_profile.xml     |   3 +-
 .../skins/default/xui/en/panel_friends.xml    |   2 +-
 .../xui/en/panel_group_control_panel.xml      |  20 +-
 .../xui/en/panel_group_info_sidetray.xml      |  18 +-
 .../default/xui/en/panel_group_invite.xml     |  14 +-
 .../default/xui/en/panel_group_list_item.xml  |   1 -
 .../default/xui/en/panel_group_notices.xml    |   1 -
 .../default/xui/en/panel_group_roles.xml      |  55 ++--
 .../skins/default/xui/en/panel_login.xml      |   1 -
 .../xui/en/panel_media_settings_general.xml   |   5 +-
 .../skins/default/xui/en/panel_my_profile.xml |  20 +-
 .../default/xui/en/panel_navigation_bar.xml   |   4 +-
 .../default/xui/en/panel_nearby_chat_bar.xml  |   4 +-
 .../skins/default/xui/en/panel_notes.xml      |   6 +-
 .../skins/default/xui/en/panel_people.xml     |  10 +-
 .../skins/default/xui/en/panel_pick_info.xml  |  33 +--
 .../xui/en/panel_preferences_advanced.xml     |   1 +
 .../xui/en/panel_preferences_general.xml      |  15 +-
 .../xui/en/panel_preferences_graphics1.xml    |   4 +-
 .../xui/en/panel_prim_media_controls.xml      |   1 -
 .../skins/default/xui/en/panel_profile.xml    |  26 +-
 .../default/xui/en/panel_region_covenant.xml  |  10 +-
 .../default/xui/en/panel_region_estate.xml    |  12 +-
 .../default/xui/en/panel_region_texture.xml   |   4 +-
 .../skins/default/xui/en/panel_status_bar.xml |  36 +--
 .../default/xui/en/panel_volume_pulldown.xml  |  55 ----
 .../default/xui/en/sidepanel_task_info.xml    |  36 ++-
 .../newview/skins/default/xui/en/strings.xml  |  16 +-
 .../xui/en/widgets/chiclet_im_adhoc.xml       |  22 +-
 .../xui/en/widgets/chiclet_im_group.xml       |  23 +-
 .../default/xui/en/widgets/chiclet_im_p2p.xml |  18 +-
 .../default/xui/en/widgets/chiclet_offer.xml  |  14 +-
 .../default/xui/en/widgets/chiclet_script.xml |  14 +-
 .../xui/en/widgets/gesture_combo_box.xml      |  30 +++
 .../xui/en/widgets/gesture_combo_list.xml     |  21 --
 .../default/xui/en/widgets/location_input.xml |  18 +-
 .../default/xui/es/floater_buy_currency.xml   |   3 -
 .../default/xui/fr/floater_buy_currency.xml   |   4 +-
 .../default/xui/fr/floater_help_browser.xml   |   4 +-
 .../newview/skins/default/xui/fr/strings.xml  |  74 ++---
 .../default/xui/it/floater_buy_currency.xml   |   9 +-
 .../default/xui/ja/floater_buy_currency.xml   |   2 +-
 .../newview/skins/default/xui/ja/strings.xml  |  48 ++--
 .../default/xui/pt/floater_buy_currency.xml   |   3 -
 install.xml                                   |  12 +-
 156 files changed, 1460 insertions(+), 2689 deletions(-)
 delete mode 100644 indra/newview/installers/darwin/fix_application_icon_position.sh
 delete mode 100644 indra/newview/llinspecttoast.cpp
 delete mode 100644 indra/newview/llinspecttoast.h
 delete mode 100644 indra/newview/llpanelvolumepulldown.cpp
 delete mode 100644 indra/newview/llpanelvolumepulldown.h
 delete mode 100644 indra/newview/llspeakingindicatormanager.cpp
 delete mode 100644 indra/newview/llspeakingindicatormanager.h
 delete mode 100644 indra/newview/skins/default/xui/en/inspect_toast.xml
 delete mode 100644 indra/newview/skins/default/xui/en/panel_volume_pulldown.xml
 create mode 100644 indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml
 delete mode 100644 indra/newview/skins/default/xui/en/widgets/gesture_combo_list.xml

diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h
index 5058a2e772d..f5c90291b80 100644
--- a/indra/llcommon/llfasttimer.h
+++ b/indra/llcommon/llfasttimer.h
@@ -39,30 +39,40 @@
 #define TIME_FAST_TIMERS 0
 
 #if LL_WINDOWS
-// 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
-
-#define LL_INLINE __forceinline
+
 // 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()
 {
-	U64 time_stamp = __rdtsc();
-	return (U32)(time_stamp >> 8);
+	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()
 {
-	return __rdtsc();
+	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 // LL_WINDOWS
 
 #if (LL_LINUX || LL_SOLARIS || LL_DARWIN) && (defined(__i386__) || defined(__amd64__))
@@ -103,25 +113,10 @@ class LLMutex;
 #include <queue>
 #include "llsd.h"
 
+
 class LL_COMMON_API LLFastTimer
 {
 public:
-
-	class NamedTimer;
-
-	struct LL_COMMON_API FrameState
-	{
-		FrameState(NamedTimer* timerp);
-
-		U32 				mSelfTimeCounter;
-		U32 				mCalls;
-		FrameState*			mParent;		// info for caller timer
-		FrameState*			mLastCaller;	// used to bootstrap tree construction
-		NamedTimer*			mTimer;
-		U16					mActiveCount;	// number of timers with this ID active on stack
-		bool				mMoveUpTree;	// needs to be moved up the tree of timers at the end of frame
-	};
-
 	// stores a "named" timer instance to be reused via multiple LLFastTimer stack instances
 	class LL_COMMON_API NamedTimer 
 	:	public LLInstanceTracker<NamedTimer>
@@ -154,10 +149,24 @@ class LL_COMMON_API LLFastTimer
 
 		static NamedTimer& getRootNamedTimer();
 
+		struct FrameState
+		{
+			FrameState(NamedTimer* timerp);
+
+			U32 		mSelfTimeCounter;
+			U32 		mCalls;
+			FrameState*	mParent;		// info for caller timer
+			FrameState*	mLastCaller;	// used to bootstrap tree construction
+			NamedTimer*	mTimer;
+			U16			mActiveCount;	// number of timers with this ID active on stack
+			bool		mMoveUpTree;	// needs to be moved up the tree of timers at the end of frame
+		};
+
 		S32 getFrameStateIndex() const { return mFrameStateIndex; }
 
 		FrameState& getFrameState() const;
 
+
 	private: 
 		friend class LLFastTimer;
 		friend class NamedTimerFactory;
@@ -176,6 +185,7 @@ class LL_COMMON_API LLFastTimer
 		static void buildHierarchy();
 		static void resetFrame();
 		static void reset();
+
 	
 		//
 		// members
@@ -197,47 +207,58 @@ class LL_COMMON_API LLFastTimer
 		std::vector<NamedTimer*>	mChildren;
 		bool						mCollapsed;				// don't show children
 		bool						mNeedsSorting;			// sort children whenever child added
+
 	};
 
 	// used to statically declare a new named timer
 	class LL_COMMON_API DeclareTimer
 	:	public LLInstanceTracker<DeclareTimer>
 	{
-		friend class LLFastTimer;
 	public:
 		DeclareTimer(const std::string& name, bool open);
 		DeclareTimer(const std::string& name);
 
 		static void updateCachedPointers();
 
+		// convertable to NamedTimer::FrameState for convenient usage of LLFastTimer(declared_timer)
+		operator NamedTimer::FrameState&() { return *mFrameState; }
 	private:
-		NamedTimer&		mTimer;
-		FrameState*		mFrameState; 
+		NamedTimer&				mTimer;
+		NamedTimer::FrameState* mFrameState; 
 	};
 
+
 public:
-	LLFastTimer(LLFastTimer::FrameState* state);
+	static LLMutex* sLogLock;
+	static std::queue<LLSD> sLogQueue;
+	static BOOL sLog;
+	static BOOL sMetricLog;
+
+	typedef std::vector<NamedTimer::FrameState> info_list_t;
+	static info_list_t& getFrameStateList();
 
-	LL_INLINE LLFastTimer(LLFastTimer::DeclareTimer& timer)
-	:	mFrameState(timer.mFrameState)
+	enum RootTimerMarker { ROOT };
+	LLFastTimer(RootTimerMarker);
+
+	LLFastTimer(NamedTimer::FrameState& timer)
+	:	mFrameState(&timer)
 	{
 #if TIME_FAST_TIMERS
 		U64 timer_start = get_cpu_clock_count_64();
 #endif
 #if FAST_TIMER_ON
-		LLFastTimer::FrameState* frame_state = mFrameState;
-		mStartTime = get_cpu_clock_count_32();
+		NamedTimer::FrameState* frame_state = &timer;
+		U32 cur_time = get_cpu_clock_count_32();
+		mStartSelfTime = cur_time;
+		mStartTotalTime = cur_time;
 
 		frame_state->mActiveCount++;
 		frame_state->mCalls++;
 		// keep current parent as long as it is active when we are
 		frame_state->mMoveUpTree |= (frame_state->mParent->mActiveCount == 0);
 	
-		LLFastTimer::CurTimerData* cur_timer_data = &LLFastTimer::sCurTimerData;
-		mLastTimerData = *cur_timer_data;
-		cur_timer_data->mCurTimer = this;
-		cur_timer_data->mFrameState = frame_state;
-		cur_timer_data->mChildTime = 0;
+		mLastTimer = sCurTimer;
+		sCurTimer = this;
 #endif
 #if TIME_FAST_TIMERS
 		U64 timer_end = get_cpu_clock_count_64();
@@ -245,26 +266,26 @@ class LL_COMMON_API LLFastTimer
 #endif
 	}
 
-	LL_INLINE ~LLFastTimer()
+	~LLFastTimer()
 	{
 #if TIME_FAST_TIMERS
 		U64 timer_start = get_cpu_clock_count_64();
 #endif
 #if FAST_TIMER_ON
-		LLFastTimer::FrameState* frame_state = mFrameState;
-		U32 total_time = get_cpu_clock_count_32() - mStartTime;
+		NamedTimer::FrameState* frame_state = mFrameState;
+		U32 cur_time = get_cpu_clock_count_32();
+		frame_state->mSelfTimeCounter += cur_time - mStartSelfTime;
 
-		frame_state->mSelfTimeCounter += total_time - LLFastTimer::sCurTimerData.mChildTime;
 		frame_state->mActiveCount--;
+		LLFastTimer* last_timer = mLastTimer;
+		sCurTimer = last_timer;
 
 		// store last caller to bootstrap tree creation
-		// do this in the destructor in case of recursion to get topmost caller
-		frame_state->mLastCaller = mLastTimerData.mFrameState;
+		frame_state->mLastCaller = last_timer->mFrameState;
 
 		// we are only tracking self time, so subtract our total time delta from parents
-		mLastTimerData.mChildTime += total_time;
-
-		LLFastTimer::sCurTimerData = mLastTimerData;
+		U32 total_time = cur_time - mStartTotalTime;
+		last_timer->mStartSelfTime += total_time;
 #endif
 #if TIME_FAST_TIMERS
 		U64 timer_end = get_cpu_clock_count_64();
@@ -273,20 +294,7 @@ class LL_COMMON_API LLFastTimer
 #endif	
 	}
 
-public:
-	static LLMutex*			sLogLock;
-	static std::queue<LLSD> sLogQueue;
-	static BOOL				sLog;
-	static BOOL				sMetricLog;
-	static bool 			sPauseHistory;
-	static bool 			sResetHistory;
-	static U64				sTimerCycles;
-	static U32				sTimerCalls;
 
-	typedef std::vector<FrameState> info_list_t;
-	static info_list_t& getFrameStateList();
-
-	
 	// call this once a frame to reset timers
 	static void nextFrame();
 
@@ -304,26 +312,23 @@ class LL_COMMON_API LLFastTimer
 	static void writeLog(std::ostream& os);
 	static const NamedTimer* getTimerByName(const std::string& name);
 
-	struct CurTimerData
-	{
-		LLFastTimer*	mCurTimer;
-		FrameState*		mFrameState;
-		U32				mChildTime;
-	};
-	static CurTimerData		sCurTimerData;
-
+public:
+	static bool 			sPauseHistory;
+	static bool 			sResetHistory;
+	static U64				sTimerCycles;
+	static U32				sTimerCalls;
+	
 private:
+	static LLFastTimer*		sCurTimer;
 	static S32				sCurFrameIndex;
 	static S32				sLastFrameIndex;
 	static U64				sLastFrameTime;
 	static info_list_t*		sTimerInfos;
 
-	U32							mStartTime;
-	LLFastTimer::FrameState*	mFrameState;
-	LLFastTimer::CurTimerData	mLastTimerData;
-
+	U32						mStartSelfTime;	// start time + time of all child timers
+	U32						mStartTotalTime;	// start time + time of all child timers
+	NamedTimer::FrameState*	mFrameState;
+	LLFastTimer*			mLastTimer;
 };
 
-typedef class LLFastTimer LLFastTimer;
-
 #endif // LL_LLFASTTIMER_H
diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp
index 3d2eaed5c5a..ed8d10a88c4 100644
--- a/indra/llplugin/llpluginclassmedia.cpp
+++ b/indra/llplugin/llpluginclassmedia.cpp
@@ -37,8 +37,6 @@
 #include "llpluginclassmedia.h"
 #include "llpluginmessageclasses.h"
 
-#include "llqtwebkit.h"
-
 static int LOW_PRIORITY_TEXTURE_SIZE_DEFAULT = 256;
 
 static int nextPowerOf2( int value )
@@ -126,7 +124,7 @@ void LLPluginClassMedia::reset()
 	mCanPaste = false;
 	mMediaName.clear();
 	mMediaDescription.clear();
-	mBackgroundColor = LLColor4(1.0f, 1.0f, 1.0f, 1.0f);
+	mBackgroundColor = LLColor4::white;
 	
 	// media_browser class
 	mNavigateURI.clear();
@@ -136,9 +134,6 @@ void LLPluginClassMedia::reset()
 	mHistoryForwardAvailable = false;
 	mStatusText.clear();
 	mProgressPercent = 0;	
-	mClickURL.clear();
-	mClickTarget.clear();
-	mClickTargetType = TARGET_NONE;
 	
 	// media_time class
 	mCurrentTime = 0.0f;
@@ -674,26 +669,6 @@ void LLPluginClassMedia::paste()
 	sendMessage(message);
 }
 
-LLPluginClassMedia::ETargetType getTargetTypeFromLLQtWebkit(int target_type)
-{
-	// convert a LinkTargetType value from llqtwebkit to an ETargetType
-	// so that we don't expose the llqtwebkit header in viewer code
-	switch (target_type)
-	{
-	case LinkTargetType::LTT_TARGET_NONE:
-		return LLPluginClassMedia::TARGET_NONE;
-
-	case LinkTargetType::LTT_TARGET_BLANK:
-		return LLPluginClassMedia::TARGET_BLANK;
-
-	case LinkTargetType::LTT_TARGET_EXTERNAL:
-		return LLPluginClassMedia::TARGET_EXTERNAL;
-
-	default:
-		return LLPluginClassMedia::TARGET_OTHER;
-	}
-}
-
 /* virtual */ 
 void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message)
 {
@@ -946,15 +921,12 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message)
 		{
 			mClickURL = message.getValue("uri");
 			mClickTarget = message.getValue("target");
-			U32 target_type = message.getValueU32("target_type");
-			mClickTargetType = ::getTargetTypeFromLLQtWebkit(target_type);
 			mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_CLICK_LINK_HREF);
 		}
 		else if(message_name == "click_nofollow")
 		{
 			mClickURL = message.getValue("uri");
 			mClickTarget.clear();
-			mClickTargetType = TARGET_NONE;
 			mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_CLICK_LINK_NOFOLLOW);
 		}
 		else
diff --git a/indra/llplugin/llpluginclassmedia.h b/indra/llplugin/llpluginclassmedia.h
index ebb90995766..5a1928ab1df 100644
--- a/indra/llplugin/llpluginclassmedia.h
+++ b/indra/llplugin/llpluginclassmedia.h
@@ -214,17 +214,6 @@ class LLPluginClassMedia : public LLPluginProcessParentOwner
 	// This is valid after MEDIA_EVENT_CLICK_LINK_HREF
 	std::string getClickTarget() const { return mClickTarget; };
 
-	typedef enum 
-	{
-		TARGET_NONE,        // empty href target string
-		TARGET_BLANK,       // target to open link in user's preferred browser
-		TARGET_EXTERNAL,    // target to open link in external browser
-		TARGET_OTHER        // nonempty and unsupported target type
-	}ETargetType;
-
-	// This is valid after MEDIA_EVENT_CLICK_LINK_HREF
-	ETargetType getClickTargetType() const { return mClickTargetType; };
-
 	std::string getMediaName() const { return mMediaName; };
 	std::string getMediaDescription() const { return mMediaDescription; };
 
@@ -355,7 +344,6 @@ class LLPluginClassMedia : public LLPluginProcessParentOwner
 	std::string		mLocation;
 	std::string		mClickURL;
 	std::string		mClickTarget;
-	ETargetType     mClickTargetType;
 	
 	/////////////////////////////////////////
 	// media_time class
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index a17e3063258..845203b420e 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -878,11 +878,9 @@ void LLFloater::setSnappedTo(const LLView* snap_view)
 	else
 	{
 		//RN: assume it's a floater as it must be a sibling to our parent floater
-		const LLFloater* floaterp = dynamic_cast<const LLFloater*>(snap_view);
-		if (floaterp)
-		{
-			setSnapTarget(floaterp->getHandle());
-		}
+		LLFloater* floaterp = (LLFloater*)snap_view;
+		
+		setSnapTarget(floaterp->getHandle());
 	}
 }
 
@@ -1067,6 +1065,10 @@ void LLFloater::setMinimized(BOOL minimize)
 		reshape( mExpandedRect.getWidth(), mExpandedRect.getHeight(), TRUE );
 	}
 	
+	// don't show the help button while minimized - it's
+	// not very useful when minimized and uses up space
+	mButtonsEnabled[BUTTON_HELP] = !minimize;
+
 	applyTitle ();
 
 	make_ui_sound("UISndWindowClose");
@@ -1739,32 +1741,14 @@ void LLFloater::updateButtons()
 	S32 button_count = 0;
 	for (S32 i = 0; i < BUTTON_COUNT; i++)
 	{
-		if (!mButtons[i])
-		{
-			continue;
-		}
+		if(!mButtons[i]) continue;
+		mButtons[i]->setEnabled(mButtonsEnabled[i]);
 
-		bool enabled = mButtonsEnabled[i];
-		if (i == BUTTON_HELP)
-		{
-			// don't show the help button if the floater is minimized
-			// or if it is a tear-off hosted floater
-			if (isMinimized() || mButtonsEnabled[BUTTON_TEAR_OFF])
-			{
-				enabled = false;
-			}
-		}
-		if (i == BUTTON_CLOSE && mButtonScale != 1.f)
-		{
-			//*HACK: always render close button for hosted floaters so
-			//that users don't accidentally hit the button when
-			//closing multiple windows in the chatterbox
-			enabled = true;
-		}
-
-		mButtons[i]->setEnabled(enabled);
-
-		if (enabled)
+		if (mButtonsEnabled[i] 
+			//*HACK: always render close button for hosted floaters
+			// so that users don't accidentally hit the button when closing multiple windows
+			// in the chatterbox
+			|| (i == BUTTON_CLOSE && mButtonScale != 1.f))
 		{
 			button_count++;
 
@@ -1791,7 +1775,7 @@ void LLFloater::updateButtons()
 			// the restore button should have a tab stop so that it takes action when you Ctrl-Tab to a minimized floater
 			mButtons[i]->setTabStop(i == BUTTON_RESTORE);
 		}
-		else
+		else if (mButtons[i])
 		{
 			mButtons[i]->setVisible(FALSE);
 		}
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index 21f3f157390..bd67949c2ae 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -2966,7 +2966,7 @@ void LLMenuGL::showPopup(LLView* spawning_view, LLMenuGL* menu, S32 x, S32 y)
 	LLUI::getMousePositionLocal(menu->getParent(), &mouse_x, &mouse_y);
 	LLMenuHolderGL::sContextMenuSpawnPos.set(mouse_x,mouse_y);
 
-	const LLRect menu_region_rect = LLMenuGL::sMenuContainer->getRect();
+	const LLRect menu_region_rect = LLMenuGL::sMenuContainer->getMenuRect();
 
 	const S32 HPAD = 2;
 	LLRect rect = menu->getRect();
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index f2c3879a6c9..e8fc9475a54 100644
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -308,8 +308,7 @@ LLTextEditor::~LLTextEditor()
 	// Scrollbar is deleted by LLView
 	std::for_each(mUndoStack.begin(), mUndoStack.end(), DeletePointer());
 
-	// context menu is owned by menu holder, not us
-	//delete mContextMenu;
+	delete mContextMenu;
 }
 
 ////////////////////////////////////////////////////////////
diff --git a/indra/media_plugins/webkit/media_plugin_webkit.cpp b/indra/media_plugins/webkit/media_plugin_webkit.cpp
index 084cdd9561a..a0336f6156c 100644
--- a/indra/media_plugins/webkit/media_plugin_webkit.cpp
+++ b/indra/media_plugins/webkit/media_plugin_webkit.cpp
@@ -429,7 +429,6 @@ class MediaPluginWebKit :
 		LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "click_href");
 		message.setValue("uri", event.getStringValue());
 		message.setValue("target", event.getStringValue2());
-		message.setValueU32("target_type", event.getLinkType());
 		sendMessage(message);
 	}
 	
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 5b4edefbc13..32761dbf275 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -218,6 +218,7 @@ set(viewer_SOURCE_FILES
     llfloaterurldisplay.cpp
     llfloaterurlentry.cpp
     llfloatervoicedevicesettings.cpp
+    llfloatervolumepulldown.cpp
     llfloaterwater.cpp
     llfloaterwhitelistentry.cpp
     llfloaterwindlight.cpp
@@ -255,7 +256,6 @@ set(viewer_SOURCE_FILES
     llinspectgroup.cpp
     llinspectobject.cpp
     llinspectremoteobject.cpp
-    llinspecttoast.cpp
     llinventorybridge.cpp
     llinventoryclipboard.cpp
     llinventoryfilter.cpp
@@ -355,7 +355,6 @@ set(viewer_SOURCE_FILES
     llpanelshower.cpp
     llpanelteleporthistory.cpp
     llpanelvolume.cpp
-    llpanelvolumepulldown.cpp
     llparcelselection.cpp
     llparticipantlist.cpp
     llpatchvertexarray.cpp
@@ -394,7 +393,6 @@ set(viewer_SOURCE_FILES
     llspatialpartition.cpp
     llspeakbutton.cpp
     llspeakers.cpp
-    llspeakingindicatormanager.cpp
     llsplitbutton.cpp
     llsprite.cpp
     llstartup.cpp
@@ -767,7 +765,6 @@ set(viewer_HEADER_FILES
     llinspectgroup.h
     llinspectobject.h
     llinspectremoteobject.h
-    llinspecttoast.h
     llinventorybridge.h
     llinventoryclipboard.h
     llinventoryfilter.h
@@ -863,7 +860,6 @@ set(viewer_HEADER_FILES
     llpanelshower.h
     llpanelteleporthistory.h
     llpanelvolume.h
-    llpanelvolumepulldown.h
     llparcelselection.h
     llparticipantlist.h
     llpatchvertexarray.h
@@ -904,7 +900,6 @@ set(viewer_HEADER_FILES
     llspatialpartition.h
     llspeakbutton.h
     llspeakers.h
-    llspeakingindicatormanager.h
     llsplitbutton.h
     llsprite.h
     llstartup.h
@@ -1775,7 +1770,6 @@ if (INSTALL)
 endif (INSTALL)
 
 if (LL_TESTS)
-else (LL_TESTS)
   # To add a viewer unit test, just add the test .cpp file below
   # This creates a separate test project per file listed.
   include(LLAddBuildTest)
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index db759f052a5..4bfc6f9e4f8 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -1141,18 +1141,7 @@
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
-      <string>S32</string>
-      <key>Value</key>
-      <integer>5</integer>
-    </map>
-    <key>CallFloaterMaxItems</key>
-    <map>
-      <key>Comment</key>
-      <string>Max number of visible participants in voice controls window</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>S32</string>
+      <string>Boolean</string>
       <key>Value</key>
       <integer>1</integer>
     </map>
diff --git a/indra/newview/installers/darwin/fix_application_icon_position.sh b/indra/newview/installers/darwin/fix_application_icon_position.sh
deleted file mode 100644
index a0b72a89f25..00000000000
--- a/indra/newview/installers/darwin/fix_application_icon_position.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-# just run this script each time after you change the installer's name to fix the icon misalignment 
-#!/bin/bash
-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
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 5ea253709cf..5e2e374df65 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -514,8 +514,6 @@ void LLAgent::resetView(BOOL reset_camera, BOOL change_camera)
 		}
 
 		setFocusOnAvatar(TRUE, ANIMATE);
-
-		mCameraFOVZoomFactor = 0.f;
 	}
 
 	mHUDTargetZoom = 1.f;
@@ -3586,7 +3584,7 @@ F32	LLAgent::calcCameraFOVZoomFactor()
 	{
 		return 0.f;
 	}
-	else if (mFocusObject.notNull() && !mFocusObject->isAvatar() && !mFocusOnAvatar)
+	else if (mFocusObject.notNull() && !mFocusObject->isAvatar())
 	{
 		// don't FOV zoom on mostly transparent objects
 		LLVector3 focus_offset = mFocusObjectOffset;
@@ -5159,11 +5157,6 @@ BOOL LLAgent::setUserGroupFlags(const LLUUID& group_id, BOOL accept_notices, BOO
 	return FALSE;
 }
 
-BOOL LLAgent::canJoinGroups() const
-{
-	return mGroups.count() < MAX_AGENT_GROUPS;
-}
-
 LLQuaternion LLAgent::getHeadRotation()
 {
 	if (mAvatarObject.isNull() || !mAvatarObject->mPelvisp || !mAvatarObject->mHeadp)
diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h
index beede7fbe34..2e95dc72be1 100644
--- a/indra/newview/llagent.h
+++ b/indra/newview/llagent.h
@@ -972,7 +972,6 @@ class LLAgent : public LLOldEvents::LLObservable
 	BOOL 			setGroupContribution(const LLUUID& group_id, S32 contribution);
 	BOOL 			setUserGroupFlags(const LLUUID& group_id, BOOL accept_notices, BOOL list_in_profile);
 	const std::string &getGroupName() const 	{ return mGroupName; }
-	BOOL			canJoinGroups() const;
 private:
 	std::string		mGroupName;
 	LLUUID			mGroupID;
diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp
index 19e9e52ddfd..5df73a994e4 100644
--- a/indra/newview/llavatarlist.cpp
+++ b/indra/newview/llavatarlist.cpp
@@ -82,7 +82,7 @@ void LLAvatarList::setSpeakingIndicatorsVisible(bool visible)
 	getItems(items);
 	for( std::vector<LLPanel*>::const_iterator it = items.begin(); it != items.end(); it++)
 	{
-		static_cast<LLAvatarListItem*>(*it)->showSpeakingIndicator(mShowSpeakingIndicator);
+		static_cast<LLAvatarListItem*>(*it)->setSpeakingIndicatorVisible(mShowSpeakingIndicator);
 	}
 }
 
@@ -323,15 +323,18 @@ boost::signals2::connection LLAvatarList::setRefreshCompleteCallback(const commi
 void LLAvatarList::addNewItem(const LLUUID& id, const std::string& name, BOOL is_online, EAddPosition pos)
 {
 	LLAvatarListItem* item = new LLAvatarListItem();
+	item->showInfoBtn(true);
+	item->showSpeakingIndicator(true);
 	item->setName(name);
 	item->setAvatarId(id, mIgnoreOnlineStatus);
 	item->setOnline(mIgnoreOnlineStatus ? true : is_online);
 	item->showLastInteractionTime(mShowLastInteractionTime);
 
+	item->childSetVisible("info_btn", false);
 	item->setAvatarIconVisible(mShowIcons);
 	item->setShowInfoBtn(mShowInfoBtn);
 	item->setShowProfileBtn(mShowProfileBtn);
-	item->showSpeakingIndicator(mShowSpeakingIndicator);
+	item->setSpeakingIndicatorVisible(mShowSpeakingIndicator);
 
 	addItem(item, id, pos);
 }
diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp
index 1043858373c..6945ac69323 100644
--- a/indra/newview/llavatarlistitem.cpp
+++ b/indra/newview/llavatarlistitem.cpp
@@ -44,10 +44,10 @@
 #include "llbutton.h"
 
 bool LLAvatarListItem::sStaticInitialized = false;
-S32 LLAvatarListItem::sLeftPadding = 0;
-S32 LLAvatarListItem::sRightNamePadding = 0;
-S32 LLAvatarListItem::sChildrenWidths[LLAvatarListItem::ALIC_COUNT];
-
+S32 LLAvatarListItem::sIconWidth = 0;
+S32 LLAvatarListItem::sInfoBtnWidth = 0;
+S32 LLAvatarListItem::sProfileBtnWidth = 0;
+S32 LLAvatarListItem::sSpeakingIndicatorWidth = 0;
 
 LLAvatarListItem::LLAvatarListItem(bool not_from_ui_factory/* = true*/)
 :	LLPanel(),
@@ -91,25 +91,43 @@ BOOL  LLAvatarListItem::postBuild()
 	mProfileBtn->setVisible(false);
 	mProfileBtn->setClickedCallback(boost::bind(&LLAvatarListItem::onProfileBtnClick, this));
 
+	// Remember avatar icon width including its padding from the name text box,
+	// so that we can hide and show the icon again later.
 	if (!sStaticInitialized)
 	{
-		// Remember children widths including their padding from the next sibling,
-		// so that we can hide and show them again later.
-		initChildrenWidths(this);
+		sIconWidth = mAvatarName->getRect().mLeft - mAvatarIcon->getRect().mLeft;
+		sInfoBtnWidth = mInfoBtn->getRect().mRight - mSpeakingIndicator->getRect().mRight;
+		sProfileBtnWidth = mProfileBtn->getRect().mRight - mInfoBtn->getRect().mRight;
+		sSpeakingIndicatorWidth = mSpeakingIndicator->getRect().mRight - mAvatarName->getRect().mRight;
 
 		sStaticInitialized = true;
 	}
 
-	return TRUE;
-}
-
-S32 LLAvatarListItem::notifyParent(const LLSD& info)
-{
-	if (info.has("visibility_changed"))
+/*
+	if(!p.buttons.profile)
 	{
-		updateChildren();
+		delete mProfile;
+		mProfile = NULL;
+
+		LLRect rect;
+
+		rect.setLeftTopAndSize(mName->getRect().mLeft, mName->getRect().mTop, mName->getRect().getWidth() + 30, mName->getRect().getHeight());
+		mName->setRect(rect);
+
+		if(mLocator)
+		{
+			rect.setLeftTopAndSize(mLocator->getRect().mLeft + 30, mLocator->getRect().mTop, mLocator->getRect().getWidth(), mLocator->getRect().getHeight());
+			mLocator->setRect(rect);
+		}
+
+		if(mInfo)
+		{
+			rect.setLeftTopAndSize(mInfo->getRect().mLeft + 30, mInfo->getRect().mTop, mInfo->getRect().getWidth(), mInfo->getRect().getHeight());
+			mInfo->setRect(rect);
+		}
 	}
-	return 0;
+*/
+	return TRUE;
 }
 
 void LLAvatarListItem::onMouseEnter(S32 x, S32 y, MASK mask)
@@ -119,8 +137,6 @@ void LLAvatarListItem::onMouseEnter(S32 x, S32 y, MASK mask)
 	mProfileBtn->setVisible(mShowProfileBtn);
 
 	LLPanel::onMouseEnter(x, y, mask);
-
-	updateChildren();
 }
 
 void LLAvatarListItem::onMouseLeave(S32 x, S32 y, MASK mask)
@@ -130,8 +146,6 @@ void LLAvatarListItem::onMouseLeave(S32 x, S32 y, MASK mask)
 	mProfileBtn->setVisible(false);
 
 	LLPanel::onMouseLeave(x, y, mask);
-
-	updateChildren();
 }
 
 // virtual, called by LLAvatarTracker
@@ -201,8 +215,12 @@ void LLAvatarListItem::showLastInteractionTime(bool show)
 	if (show)
 		return;
 
+	LLRect	name_rect	= mAvatarName->getRect();
+	LLRect	time_rect	= mLastInteractionTime->getRect();
+
 	mLastInteractionTime->setVisible(false);
-	updateChildren();
+	name_rect.mRight += (time_rect.mRight - name_rect.mRight);
+	mAvatarName->setRect(name_rect);
 }
 
 void LLAvatarListItem::setLastInteractionTime(U32 secs_since)
@@ -216,6 +234,12 @@ void LLAvatarListItem::setShowInfoBtn(bool show)
 	if(mShowInfoBtn == show)
 		return;
 	mShowInfoBtn = show;
+	S32 width_delta = show ? - sInfoBtnWidth : sInfoBtnWidth;
+
+	//Translating speaking indicator
+	mSpeakingIndicator->translate(width_delta, 0);
+	//Reshaping avatar name
+	mAvatarName->reshape(mAvatarName->getRect().getWidth() + width_delta, mAvatarName->getRect().getHeight());
 }
 
 void LLAvatarListItem::setShowProfileBtn(bool show)
@@ -224,17 +248,24 @@ void LLAvatarListItem::setShowProfileBtn(bool show)
 	if(mShowProfileBtn == show)
 			return;
 	mShowProfileBtn = show;
+	S32 width_delta = show ? - sProfileBtnWidth : sProfileBtnWidth;
+
+	//Translating speaking indicator
+	mSpeakingIndicator->translate(width_delta, 0);
+	//Reshaping avatar name
+	mAvatarName->reshape(mAvatarName->getRect().getWidth() + width_delta, mAvatarName->getRect().getHeight());
 }
 
-void LLAvatarListItem::showSpeakingIndicator(bool visible)
+void LLAvatarListItem::setSpeakingIndicatorVisible(bool visible)
 {
 	// Already done? Then do nothing.
 	if (mSpeakingIndicator->getVisible() == (BOOL)visible)
 		return;
-// Disabled to not contradict with SpeakingIndicatorManager functionality. EXT-3976
-// probably this method should be totally removed.
-//	mSpeakingIndicator->setVisible(visible);
-//	updateChildren();
+	mSpeakingIndicator->setVisible(visible);
+	S32 width_delta = visible ? - sSpeakingIndicatorWidth : sSpeakingIndicatorWidth;
+
+	//Reshaping avatar name
+	mAvatarName->reshape(mAvatarName->getRect().getWidth() + width_delta, mAvatarName->getRect().getHeight());
 }
 
 void LLAvatarListItem::setAvatarIconVisible(bool visible)
@@ -245,12 +276,36 @@ void LLAvatarListItem::setAvatarIconVisible(bool visible)
 
 	// Show/hide avatar icon.
 	mAvatarIcon->setVisible(visible);
-	updateChildren();
+
+	// Move the avatar name horizontally by icon size + its distance from the avatar name.
+	LLRect name_rect = mAvatarName->getRect();
+	name_rect.mLeft += visible ? sIconWidth : -sIconWidth;
+	mAvatarName->setRect(name_rect);
 }
 
 void LLAvatarListItem::onInfoBtnClick()
 {
 	LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", mAvatarId));
+
+	/* TODO fix positioning of inspector
+	localPointToScreen(mXPos, mYPos, &mXPos, &mYPos);
+	
+	
+	LLRect rect;
+
+	// *TODO Vadim: rewrite this. "+= -" looks weird.
+	S32 delta = mYPos - inspector->getRect().getHeight();
+	if(delta < 0)
+	{
+		mYPos += -delta;
+	}
+	
+	rect.setLeftTopAndSize(mXPos, mYPos,
+	inspector->getRect().getWidth(), inspector->getRect().getHeight()); 
+	inspector->setRect(rect);
+	inspector->setFrontmost(true);
+	inspector->setVisible(true);
+	*/
 }
 
 void LLAvatarListItem::onProfileBtnClick()
@@ -289,6 +344,21 @@ void LLAvatarListItem::onNameCache(const std::string& first_name, const std::str
 	setName(name);
 }
 
+void LLAvatarListItem::reshapeAvatarName()
+{
+	S32 width_delta = 0;
+	width_delta += mShowProfileBtn ? sProfileBtnWidth : 0;
+	width_delta += mSpeakingIndicator->getVisible() ? sSpeakingIndicatorWidth : 0;
+	width_delta += mAvatarIcon->getVisible() ? sIconWidth : 0;
+	width_delta += mShowInfoBtn ? sInfoBtnWidth : 0;
+	width_delta += mLastInteractionTime->getVisible() ? mLastInteractionTime->getRect().getWidth() : 0;
+
+	S32 height = mAvatarName->getRect().getHeight();
+	S32 width  = getRect().getWidth() - width_delta;
+
+	mAvatarName->reshape(width, height);
+}
+
 // Convert given number of seconds to a string like "23 minutes", "15 hours" or "3 years",
 // taking i18n into account. The format string to use is taken from the panel XML.
 std::string LLAvatarListItem::formatSeconds(U32 secs)
@@ -422,133 +492,4 @@ LLAvatarListItem::icon_color_map_t& LLAvatarListItem::getItemIconColorMap()
 	return item_icon_color_map;
 }
 
-// static
-void LLAvatarListItem::initChildrenWidths(LLAvatarListItem* avatar_item)
-{
-	//profile btn width + padding
-	S32 profile_btn_width = avatar_item->getRect().getWidth() - 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;
-
-	// icon width + padding
-	S32 icon_width = avatar_item->mAvatarName->getRect().mLeft - avatar_item->mAvatarIcon->getRect().mLeft;
-
-	sLeftPadding = avatar_item->mAvatarIcon->getRect().mLeft;
-	sRightNamePadding = avatar_item->mLastInteractionTime->getRect().mLeft - avatar_item->mAvatarName->getRect().mRight;
-
-	S32 index = ALIC_COUNT;
-	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;
-}
-
-void LLAvatarListItem::updateChildren()
-{
-	LL_DEBUGS("AvatarItemReshape") << LL_ENDL;
-	LL_DEBUGS("AvatarItemReshape") << "Updating for: " << getAvatarName() << LL_ENDL;
-
-	S32 name_new_width = getRect().getWidth();
-	S32 ctrl_new_left = name_new_width;
-	S32 name_new_left = sLeftPadding;
-
-	// iterate through all children and set them into correct position depend on each child visibility
-	// assume that child indexes are in back order: the first in Enum is the last (right) in the item
-	// iterate & set child views starting from right to left
-	for (S32 i = 0; i < ALIC_COUNT; ++i)
-	{
-		// skip "name" textbox, it will be processed out of loop later
-		if (ALIC_NAME == i) continue;
-
-		LLView* control = getItemChildView((EAvatarListItemChildIndex)i);
-
-		LL_DEBUGS("AvatarItemReshape") << "Processing control: " << control->getName() << LL_ENDL;
-		// skip invisible views
-		if (!control->getVisible()) continue;
-
-		S32 ctrl_width = sChildrenWidths[i]; // including space between current & left controls
-
-		// decrease available for 
-		name_new_width -= ctrl_width;
-		LL_DEBUGS("AvatarItemReshape") << "width: " << ctrl_width << ", name_new_width: " << name_new_width << LL_ENDL;
-
-		LLRect control_rect = control->getRect();
-		LL_DEBUGS("AvatarItemReshape") << "rect before: " << control_rect << LL_ENDL;
-
-		if (ALIC_ICON == i)
-		{
-			// assume that this is the last iteration,
-			// so it is not necessary to save "ctrl_new_left" value calculated on previous iterations
-			ctrl_new_left = sLeftPadding;
-			name_new_left = ctrl_new_left + ctrl_width;
-		}
-		else
-		{
-			ctrl_new_left -= ctrl_width;
-		}
-
-		LL_DEBUGS("AvatarItemReshape") << "ctrl_new_left: " << ctrl_new_left << LL_ENDL;
-
-		control_rect.setLeftTopAndSize(
-			ctrl_new_left,
-			control_rect.mTop,
-			control_rect.getWidth(),
-			control_rect.getHeight());
-
-		LL_DEBUGS("AvatarItemReshape") << "rect after: " << control_rect << LL_ENDL;
-		control->setShape(control_rect);
-	}
-
-	// set size and position of the "name" child
-	LLView* name_view = getItemChildView(ALIC_NAME);
-	LLRect name_view_rect = name_view->getRect();
-	LL_DEBUGS("AvatarItemReshape") << "name rect before: " << name_view_rect << LL_ENDL;
-
-	// apply paddings
-	name_new_width -= sLeftPadding;
-	name_new_width -= sRightNamePadding;
-
-	name_view_rect.setLeftTopAndSize(
-		name_new_left,
-		name_view_rect.mTop,
-		name_new_width,
-		name_view_rect.getHeight());
-
-	name_view->setShape(name_view_rect);
-
-	LL_DEBUGS("AvatarItemReshape") << "name rect after: " << name_view_rect << LL_ENDL;
-}
-
-LLView* LLAvatarListItem::getItemChildView(EAvatarListItemChildIndex child_view_index)
-{
-	LLView* child_view = mAvatarName;
-	if (child_view_index < 0 || ALIC_COUNT <= child_view_index)
-	{
-		LL_WARNS("AvatarItemReshape") << "Child view index is out of range: " << child_view_index << LL_ENDL;
-		return child_view;
-	}
-	switch (child_view_index)
-	{
-	case ALIC_ICON:					child_view = mAvatarIcon; break;
-	case ALIC_NAME:					child_view = mAvatarName; break;
-	case ALIC_INTERACTION_TIME:		child_view = mLastInteractionTime; break;
-	case ALIC_SPEAKER_INDICATOR:	child_view = mSpeakingIndicator; break;
-	case ALIC_INFO_BUTTON:			child_view = mInfoBtn; break;
-	case ALIC_PROFILE_BUTTON:		child_view = mProfileBtn; break;
-	default:
-		LL_WARNS("AvatarItemReshape") << "Unexpected child view index is passed: " << child_view_index << LL_ENDL;
-	}
-	
-	return child_view;
-}
-
 // EOF
diff --git a/indra/newview/llavatarlistitem.h b/indra/newview/llavatarlistitem.h
index f76ffb391d4..96097bc9b52 100644
--- a/indra/newview/llavatarlistitem.h
+++ b/indra/newview/llavatarlistitem.h
@@ -74,11 +74,6 @@ class LLAvatarListItem : public LLPanel, public LLFriendObserver
 	virtual ~LLAvatarListItem();
 
 	virtual BOOL postBuild();
-
-	/**
-	 * Processes notification from speaker indicator to update children when indicator's visibility is changed.
-	 */
-	virtual S32	notifyParent(const LLSD& info);
 	virtual void onMouseLeave(S32 x, S32 y, MASK mask);
 	virtual void onMouseEnter(S32 x, S32 y, MASK mask);
 	virtual void setValue(const LLSD& value);
@@ -93,8 +88,7 @@ class LLAvatarListItem : public LLPanel, public LLFriendObserver
 	//Show/hide profile/info btn, translating speaker indicator and avatar name coordinates accordingly
 	void setShowProfileBtn(bool show);
 	void setShowInfoBtn(bool show);
-	void showSpeakingIndicator(bool show);
-	void showLastInteractionTime(bool show);
+	void setSpeakingIndicatorVisible(bool visible);
 	void setAvatarIconVisible(bool visible);
 	
 	const LLUUID& getAvatarId() const;
@@ -103,6 +97,17 @@ class LLAvatarListItem : public LLPanel, public LLFriendObserver
 	void onInfoBtnClick();
 	void onProfileBtnClick();
 
+	void showSpeakingIndicator(bool show) { mSpeakingIndicator->setVisible(show); }
+	void showInfoBtn(bool show_info_btn) {mInfoBtn->setVisible(show_info_btn); }
+	void showLastInteractionTime(bool show);
+
+	/**
+	 * This method was added to fix EXT-2364 (Items in group/ad-hoc IM participant list (avatar names) should be reshaped when adding/removing the "(Moderator)" label)
+	 * But this is a *HACK. The real reason of it was in incorrect logic while hiding profile/info/speaker buttons
+	 * *TODO: new reshape method should be provided in lieu of this one to be called when visibility if those buttons is changed
+	 */
+	void reshapeAvatarName();
+
 protected:
 	/**
 	 * Contains indicator to show voice activity. 
@@ -119,23 +124,6 @@ class LLAvatarListItem : public LLPanel, public LLFriendObserver
 		E_UNKNOWN,
 	} EOnlineStatus;
 
-	/**
-	 * Enumeration of item elements in order from right to left.
-	 * 
-	 * updateChildren() assumes that indexes are in the such order to process avatar icon easier.
-	 *
-	 * @see updateChildren()
-	 */
-	typedef enum e_avatar_item_child {
-		ALIC_PROFILE_BUTTON,
-		ALIC_INFO_BUTTON,
-		ALIC_SPEAKER_INDICATOR,
-		ALIC_INTERACTION_TIME,
-		ALIC_NAME,
-		ALIC_ICON,
-		ALIC_COUNT,
-	} EAvatarListItemChildIndex;
-
 	void setNameInternal(const std::string& name, const std::string& highlight);
 	void onNameCache(const std::string& first_name, const std::string& last_name);
 
@@ -147,26 +135,6 @@ class LLAvatarListItem : public LLPanel, public LLFriendObserver
 	typedef std::map<EItemState, LLColor4> icon_color_map_t;
 	static icon_color_map_t& getItemIconColorMap();
 
-	/**
-	 * Initializes widths of all children to use them while changing visibility of any of them.
-	 *
-	 * @see updateChildren()
-	 */
-	static void initChildrenWidths(LLAvatarListItem* self);
-
-	/**
-	 * Updates position and rectangle of visible children to fit all available item's width.
-	 */
-	void updateChildren();
-
-	/**
-	 * Gets child view specified by index.
-	 *
-	 * This method implemented via switch by all EAvatarListItemChildIndex values.
-	 * It is used to not store children in array or vector to avoid of increasing memory usage.
-	 */
-	LLView* getItemChildView(EAvatarListItemChildIndex child_index);
-
 	LLTextBox* mAvatarName;
 	LLTextBox* mLastInteractionTime;
 	LLStyle::Params mAvatarNameStyle;
@@ -183,17 +151,10 @@ class LLAvatarListItem : public LLPanel, public LLFriendObserver
 	bool mShowProfileBtn;
 
 	static bool	sStaticInitialized; // this variable is introduced to improve code readability
-	static S32  sLeftPadding; // padding to first left visible child (icon or name)
-	static S32  sRightNamePadding; // right padding from name to next visible child
-
-	/**
-	 * Contains widths of each child specified by EAvatarListItemChildIndex
-	 * including padding to the next right one.
-	 *
-	 * @see initChildrenWidths()
-	 */
-	static S32 sChildrenWidths[ALIC_COUNT];
-
+	static S32	sIconWidth; // icon width + padding
+	static S32  sInfoBtnWidth; //info btn width + padding
+	static S32  sProfileBtnWidth; //profile btn width + padding
+	static S32  sSpeakingIndicatorWidth; //speaking indicator width + padding
 };
 
 #endif //LL_LLAVATARLISTITEM_H
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index beccefa4301..976b3125093 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -161,9 +161,6 @@ void LLBottomTray::sessionAdded(const LLUUID& session_id, const std::string& nam
 	{
 		chiclet->setIMSessionName(name);
 		chiclet->setOtherParticipantId(other_participant_id);
-		
-		LLIMFloater::onIMChicletCreated(session_id);
-
 	}
 	else
 	{
@@ -254,24 +251,14 @@ void LLBottomTray::setVisible(BOOL visible)
 		{
 			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)))
+			
+			if ("chat_bar" == name || "movement_panel" == name || "cam_panel" == name || "snapshot_panel" == name || "gesture_panel" == name)
 				continue;
 			else 
 			{
 				viewp->setVisible(visibility);
 			}
 		}
-
-		// Apply the saved settings when we are not in mouselook mode, see EXT-3988.
-		if (visibility)
-		{
-			showCameraButton(gSavedSettings.getBOOL("ShowCameraButton"));
-			showSnapshotButton(gSavedSettings.getBOOL("ShowSnapshotButton"));
-			showMoveButton(gSavedSettings.getBOOL("ShowMoveButton"));
-			showGestureButton(gSavedSettings.getBOOL("ShowGestureButton"));
-		}
 	}
 }
 
diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp
index c0efb85b512..1468f6d584f 100644
--- a/indra/newview/llcallfloater.cpp
+++ b/indra/newview/llcallfloater.cpp
@@ -51,7 +51,6 @@
 #include "lltransientfloatermgr.h"
 #include "llviewerwindow.h"
 #include "llvoicechannel.h"
-#include "lllayoutstack.h"
 
 static void get_voice_participants_uuids(std::vector<LLUUID>& speakers_uuids);
 
@@ -315,7 +314,7 @@ void LLCallFloater::updateSession()
 	
 	//hide "Leave Call" button for nearby chat
 	bool is_local_chat = mVoiceType == VC_LOCAL_CHAT;
-	childSetVisible("leave_call_btn_panel", !is_local_chat);
+	childSetVisible("leave_call_btn", !is_local_chat);
 	
 	refreshParticipantList();
 	updateAgentModeratorState();
@@ -819,8 +818,8 @@ void reshape_floater(LLCallFloater* floater, S32 delta_height)
 		}
 	}
 
-	floater->setShape(floater_rect);
-	floater->getChild<LLLayoutStack>("my_call_stack")->updateLayout(FALSE);
+	floater->reshape(floater_rect.getWidth(), floater_rect.getHeight());
+	floater->setRect(floater_rect);
 }
 
 void LLCallFloater::reshapeToFitContent()
@@ -865,8 +864,9 @@ S32 LLCallFloater::getParticipantItemHeight()
 
 S32 LLCallFloater::getMaxVisibleItems()
 {
-	static LLCachedControl<S32> max_visible_items(*LLUI::sSettingGroups["config"],"CallFloaterMaxItems");
-	return max_visible_items;
+	S32 value = 5; // default value, in case convertToS32() fails.
+	LLStringUtil::convertToS32(getString("max_visible_items"), value);
+	return value;
 }
 
 //EOF
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index 2fc83c7e54f..cda3e3a4191 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -499,24 +499,7 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_
 	style_params.font.name(font_name);
 	style_params.font.size(font_size);	
 	style_params.font.style(input_append_params.font.style);
-
-	std::string prefix = chat.mText.substr(0, 4);
-
-	//IRC styled /me messages.
-	bool irc_me = prefix == "/me " || prefix == "/me'";
-
-	// Delimiter after a name in header copy/past and in plain text mode
-	std::string delimiter = (chat.mChatType != CHAT_TYPE_SHOUT && chat.mChatType != CHAT_TYPE_WHISPER)
-		? ": "
-		: " ";
-
-	// Don't add any delimiter after name in irc styled messages
-	if (irc_me || chat.mChatStyle == CHAT_STYLE_IRC)
-	{
-		delimiter = LLStringUtil::null;
-		style_params.font.style = "ITALIC";
-	}
-
+	
 	if (use_plain_text_chat_history)
 	{
 		mEditor->appendText("[" + chat.mTimeStr + "] ", mEditor->getText().size() != 0, style_params);
@@ -529,11 +512,11 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_
 				LLStyle::Params link_params(style_params);
 				link_params.fillFrom(LLStyleMap::instance().lookupAgent(chat.mFromID));
 				// Convert the name to a hotlink and add to message.
-				mEditor->appendText(chat.mFromName + delimiter, false, link_params);
+				mEditor->appendText(chat.mFromName + ": ", false, link_params);
 			}
 			else
 			{
-				mEditor->appendText(chat.mFromName + delimiter, false, style_params);
+				mEditor->appendText(chat.mFromName + ": ", false, style_params);
 			}
 		}
 	}
@@ -579,22 +562,36 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_
 
 		std::string header_text = "[" + chat.mTimeStr + "] ";
 		if (utf8str_trim(chat.mFromName).size() != 0 && chat.mFromName != SYSTEM_FROM)
-			header_text += chat.mFromName + delimiter;
+			header_text += chat.mFromName + ": ";
 
 		mEditor->appendWidget(p, header_text, false);
 		mLastFromName = chat.mFromName;
 		mLastFromID = chat.mFromID;
 		mLastMessageTime = new_message_time;
 	}
-
-	std::string message = irc_me ? chat.mText.substr(3) : chat.mText;
-	if ( message.size() > 0 && !LLStringOps::isSpace(message[message.size() - 1]) )
+	//Handle IRC styled /me messages.
+	std::string prefix = chat.mText.substr(0, 4);
+	if (prefix == "/me " || prefix == "/me'")
 	{
+		style_params.font.style = "ITALIC";
+
+		if (chat.mFromName.size() > 0)
+			mEditor->appendText(chat.mFromName, TRUE, style_params);
 		// Ensure that message ends with NewLine, to avoid losing of new lines
 		// while copy/paste from text chat. See EXT-3263.
-		message += NEW_LINE;
+		mEditor->appendText(chat.mText.substr(3) + NEW_LINE, FALSE, style_params);
+	}
+	else
+	{
+		std::string message(chat.mText);
+		if ( message.size() > 0 && !LLStringOps::isSpace(message[message.size() - 1]) )
+		{
+			// Ensure that message ends with NewLine, to avoid losing of new lines
+			// while copy/paste from text chat. See EXT-3263.
+			message += NEW_LINE;
+		}
+		mEditor->appendText(message, FALSE, style_params);
 	}
-	mEditor->appendText(message, FALSE, style_params);
 	mEditor->blockUndo();
 
 	// automatically scroll to end when receiving chat from myself
diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp
index ef69f39ad2d..aa343b2f697 100644
--- a/indra/newview/llfloaterabout.cpp
+++ b/indra/newview/llfloaterabout.cpp
@@ -269,7 +269,7 @@ LLSD LLFloaterAbout::getInfo()
 	info["VIVOX_VERSION"] = gVoiceClient ? gVoiceClient->getAPIVersion() : LLTrans::getString("NotConnected");
 
 	// TODO: Implement media plugin version query
-	info["QT_WEBKIT_VERSION"] = "4.6 (version number hard-coded)";
+	info["QT_WEBKIT_VERSION"] = "4.5.2 (version number hard-coded)";
 
 	if (gPacketsIn > 0)
 	{
diff --git a/indra/newview/llfloaterchat.cpp b/indra/newview/llfloaterchat.cpp
index 18b9f0484fd..b9e0f928f14 100644
--- a/indra/newview/llfloaterchat.cpp
+++ b/indra/newview/llfloaterchat.cpp
@@ -190,14 +190,7 @@ void LLFloaterChat::addChatHistory(const LLChat& chat, bool log_to_file)
 {	
 	if (log_to_file && (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);
-		}
+		LLLogChat::saveHistory("chat", chat.mFromName, chat.mFromID, chat.mText);
 	}
 	
 	LLColor4 color = get_text_color(chat);
@@ -318,10 +311,8 @@ void LLFloaterChat::addChat(const LLChat& chat, BOOL from_instant_message, BOOL
 	triggerAlerts(chat.mText);
 
 	// Add the sender to the list of people with which we've recently interacted.
-	// this is not the best place to add _all_ messages to recent list
-	// comment this for now, may remove later on code cleanup
-	//if(chat.mSourceType == CHAT_SOURCE_AGENT && chat.mFromID.notNull())
-	//	LLRecentPeople::instance().add(chat.mFromID);
+	if(chat.mSourceType == CHAT_SOURCE_AGENT && chat.mFromID.notNull())
+		LLRecentPeople::instance().add(chat.mFromID);
 	
 	bool add_chat = true;
 	bool log_chat = true;
diff --git a/indra/newview/llfloatergesture.cpp b/indra/newview/llfloatergesture.cpp
index 6a9c602db20..5072bc8c820 100644
--- a/indra/newview/llfloatergesture.cpp
+++ b/indra/newview/llfloatergesture.cpp
@@ -415,7 +415,7 @@ void LLFloaterGesture::onClickPlay()
 	LL_DEBUGS("Gesture")<<" Trying to play gesture id: "<< item_id <<LL_ENDL;
 	if(!LLGestureManager::instance().isGestureActive(item_id))
 	{
-		// we need to inform server about gesture activating to be consistent with LLPreviewGesture and  LLGestureComboList.
+		// we need to inform server about gesture activating to be consistent with LLPreviewGesture and  LLGestureComboBox.
 		BOOL inform_server = TRUE;
 		BOOL deactivate_similar = FALSE;
 		LLGestureManager::instance().setGestureLoadedCallback(item_id, boost::bind(&LLFloaterGesture::playGesture, this, item_id));
diff --git a/indra/newview/llfloatergroups.cpp b/indra/newview/llfloatergroups.cpp
index 29f415bd439..7cb925bc0b0 100644
--- a/indra/newview/llfloatergroups.cpp
+++ b/indra/newview/llfloatergroups.cpp
@@ -247,7 +247,14 @@ void LLPanelGroups::enableButtons()
 		childDisable("IM");
 		childDisable("Leave");
 	}
-	childSetEnabled("Create", gAgent.canJoinGroups());
+	if(gAgent.mGroups.count() < MAX_AGENT_GROUPS)
+	{
+		childEnable("Create");
+	}
+	else
+	{
+		childDisable("Create");
+	}
 }
 
 
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 42c961a956b..598a13de158 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -276,7 +276,6 @@ void LLFloaterLand::refresh()
 	mPanelAudio->refresh();
 	mPanelMedia->refresh();
 	mPanelAccess->refresh();
-	mPanelCovenant->refresh();
 }
 
 
@@ -2796,6 +2795,12 @@ LLPanelLandCovenant::~LLPanelLandCovenant()
 {
 }
 
+BOOL LLPanelLandCovenant::postBuild()
+{
+	refresh();
+	return TRUE;
+}
+
 // virtual
 void LLPanelLandCovenant::refresh()
 {
diff --git a/indra/newview/llfloaterland.h b/indra/newview/llfloaterland.h
index a4785e8f5b0..d7d02ba1a37 100644
--- a/indra/newview/llfloaterland.h
+++ b/indra/newview/llfloaterland.h
@@ -391,6 +391,7 @@ class LLPanelLandCovenant
 public:
 	LLPanelLandCovenant(LLSafeHandle<LLParcelSelection>& parcelp);
 	virtual ~LLPanelLandCovenant();
+	virtual BOOL postBuild();
 	void refresh();
 	static void updateCovenantText(const std::string& string);
 	static void updateEstateName(const std::string& name);
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index 9af37e81749..d0716f67b80 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -602,8 +602,8 @@ void LLFloaterPreference::onBtnOK()
 		apply();
 		closeFloater(false);
 
-		LLUIColorTable::instance().saveUserSettings();
 		gSavedSettings.saveToFile( gSavedSettings.getString("ClientSettingsFile"), TRUE );
+		LLUIColorTable::instance().saveUserSettings();
 		std::string crash_settings_filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, CRASH_SETTINGS_FILE);
 		// save all settings, even if equals defaults
 		gCrashSettings.saveToFile(crash_settings_filename, FALSE);
diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp
index 0402ba20e21..c4b87c1b2dc 100644
--- a/indra/newview/llfloaterregioninfo.cpp
+++ b/indra/newview/llfloaterregioninfo.cpp
@@ -406,11 +406,6 @@ LLPanelEstateCovenant* LLFloaterRegionInfo::getPanelCovenant()
 
 void LLFloaterRegionInfo::refreshFromRegion(LLViewerRegion* region)
 {
-	if (!region)
-	{
-		return; 
-	}
-
 	// call refresh from region on all panels
 	std::for_each(
 		mInfoPanels.begin(),
diff --git a/indra/newview/llgesturemgr.cpp b/indra/newview/llgesturemgr.cpp
index 82293b4aa0b..df7aa9eabf3 100644
--- a/indra/newview/llgesturemgr.cpp
+++ b/indra/newview/llgesturemgr.cpp
@@ -417,16 +417,6 @@ BOOL LLGestureManager::isGesturePlaying(const LLUUID& item_id)
 	return gesture->mPlaying;
 }
 
-BOOL LLGestureManager::isGesturePlaying(LLMultiGesture* gesture)
-{
-	if(!gesture)
-	{
-		return FALSE;
-	}
-
-	return gesture->mPlaying;
-}
-
 void LLGestureManager::replaceGesture(const LLUUID& item_id, LLMultiGesture* new_gesture, const LLUUID& asset_id)
 {
 	const LLUUID& base_item_id = get_linked_uuid(item_id);
diff --git a/indra/newview/llgesturemgr.h b/indra/newview/llgesturemgr.h
index c562587c6fd..e80eea9ae90 100644
--- a/indra/newview/llgesturemgr.h
+++ b/indra/newview/llgesturemgr.h
@@ -103,8 +103,6 @@ class LLGestureManager : public LLSingleton<LLGestureManager>, public LLInventor
 
 	BOOL isGesturePlaying(const LLUUID& item_id);
 
-	BOOL isGesturePlaying(LLMultiGesture* gesture);
-
 	const item_map_t& getActiveGestures() const { return mActive; }
 	// Force a gesture to be played, for example, if it is being
 	// previewed.
diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp
index d6e2bb0445f..7dd8ea694e9 100644
--- a/indra/newview/llgroupactions.cpp
+++ b/indra/newview/llgroupactions.cpp
@@ -146,12 +146,6 @@ void LLGroupActions::startCall(const LLUUID& group_id)
 // static
 void LLGroupActions::join(const LLUUID& group_id)
 {
-	if (!gAgent.canJoinGroups())
-	{
-		LLNotificationsUtil::add("JoinedTooManyGroups");
-		return;
-	}
-
 	LLGroupMgrGroupData* gdatap = 
 		LLGroupMgr::getInstance()->getGroupData(group_id);
 
@@ -232,9 +226,7 @@ void LLGroupActions::activate(const LLUUID& group_id)
 
 static bool isGroupUIVisible()
 {
-	static LLPanel* panel = 0;
-	if(!panel)
-		panel = LLSideTray::getInstance()->findChild<LLPanel>("panel_group_info_sidetray");
+	LLPanel* panel = LLSideTray::getInstance()->findChild<LLPanel>("panel_group_info_sidetray");
 	if(!panel)
 		return false;
 	return panel->isInVisibleChain();
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index aee34eb0af5..b05568f353f 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -361,7 +361,35 @@ LLIMFloater* LLIMFloater::show(const LLUUID& session_id)
 {
 	if (!gIMMgr->hasSession(session_id)) return NULL;
 
-	if(!isChatMultiTab())
+	// we should make sure all related chiclets are in place when the session is a voice call
+	// chiclets come firts, then comes IM window
+	if (gIMMgr->isVoiceCall(session_id))
+	{
+		LLIMModel* im_model = LLIMModel::getInstance();
+		LLBottomTray* b_tray = LLBottomTray::getInstance();
+		
+		//*TODO hide that into Bottom tray
+		if (!b_tray->getChicletPanel()->findChiclet<LLChiclet>(session_id))
+		{
+			LLIMChiclet* chiclet = b_tray->createIMChiclet(session_id);
+			if(chiclet)
+			{
+				chiclet->setIMSessionName(im_model->getName(session_id));
+				chiclet->setOtherParticipantId(im_model->getOtherParticipantID(session_id));
+			}
+		}
+
+		LLIMWellWindow::getInstance()->addIMRow(session_id);
+	}
+		
+	bool not_existed = true;
+
+	if(isChatMultiTab())
+	{
+		LLIMFloater* target_floater = findInstance(session_id);
+		not_existed = NULL == target_floater;
+	}
+	else
 	{
 		//hide all
 		LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("impanel");
@@ -376,33 +404,19 @@ LLIMFloater* LLIMFloater::show(const LLUUID& session_id)
 		}
 	}
 
-	bool exist = findInstance(session_id);
-
-	LLIMFloater* floater = getInstance(session_id);
-	if (!floater) return NULL;
+	LLIMFloater* floater = LLFloaterReg::showTypedInstance<LLIMFloater>("impanel", session_id);
 
 	if(isChatMultiTab())
 	{
-		LLIMFloaterContainer* floater_container = LLIMFloaterContainer::getInstance();
-
 		// do not add existed floaters to avoid adding torn off instances
-		if (!exist)
+		if (not_existed)
 		{
 			//		LLTabContainer::eInsertionPoint i_pt = user_initiated ? LLTabContainer::RIGHT_OF_CURRENT : LLTabContainer::END;
 			// TODO: mantipov: use LLTabContainer::RIGHT_OF_CURRENT if it exists
 			LLTabContainer::eInsertionPoint i_pt = LLTabContainer::END;
-			
-			if (floater_container)
-			{
-				floater_container->addFloater(floater, TRUE, i_pt);
-			}
-		}
 
-		if (floater_container)
-		{
-			//selecting the panel resets a chiclet's counter
-			floater_container->selectFloater(floater);
-			floater_container->setVisible(TRUE);
+			LLIMFloaterContainer* floater_container = LLFloaterReg::showTypedInstance<LLIMFloaterContainer>("im_container");
+			floater_container->addFloater(floater, TRUE, i_pt);
 		}
 	}
 	else
@@ -429,8 +443,8 @@ LLIMFloater* LLIMFloater::show(const LLUUID& session_id)
 		}
 
 		// window is positioned, now we can show it.
+		floater->setVisible(true);
 	}
-	floater->setVisible(TRUE);
 
 	return floater;
 }
@@ -470,6 +484,16 @@ void LLIMFloater::setDocked(bool docked, bool pop_on_undock)
 	}
 }
 
+void LLIMFloater::setTornOff(bool torn_off)
+{
+	// When IM Floater isn't torn off, "close" button should be hidden.
+	// This call will just disables it, since there is a hack in LLFloater::updateButton,
+	// which prevents hiding of close button in that case.
+	setCanClose(torn_off);
+
+	LLTransientDockableFloater::setTornOff(torn_off);
+}
+
 void LLIMFloater::setVisible(BOOL visible)
 {
 	LLNotificationsUI::LLScreenChannel* channel = dynamic_cast<LLNotificationsUI::LLScreenChannel*>
@@ -524,11 +548,6 @@ LLIMFloater* LLIMFloater::findInstance(const LLUUID& session_id)
 	return LLFloaterReg::findTypedInstance<LLIMFloater>("impanel", session_id);
 }
 
-LLIMFloater* LLIMFloater::getInstance(const LLUUID& session_id)
-{
-	return LLFloaterReg::getTypedInstance<LLIMFloater>("impanel", session_id);
-}
-
 void LLIMFloater::sessionInitReplyReceived(const LLUUID& im_session_id)
 {
 	mSessionInitialized = true;
@@ -1007,20 +1026,3 @@ void LLIMFloater::sRemoveTypingIndicator(const LLSD& data)
 
 	floater->removeTypingIndicator();
 }
-
-void LLIMFloater::onIMChicletCreated( const LLUUID& session_id )
-{
-
-	if (isChatMultiTab())
-	{
-		LLIMFloaterContainer* im_box = LLIMFloaterContainer::getInstance();
-		if (!im_box) return;
-
-		if (LLIMFloater::findInstance(session_id)) return;
-
-		LLIMFloater* new_tab = LLIMFloater::getInstance(session_id);
-
-		im_box->addFloater(new_tab, FALSE, LLTabContainer::END);
-	}
-
-}
diff --git a/indra/newview/llimfloater.h b/indra/newview/llimfloater.h
index d9db385d06a..bc7a43e852a 100644
--- a/indra/newview/llimfloater.h
+++ b/indra/newview/llimfloater.h
@@ -64,6 +64,7 @@ class LLIMFloater : public LLTransientDockableFloater
 	// LLFloater overrides
 	/*virtual*/ void onClose(bool app_quitting);
 	/*virtual*/ void setDocked(bool docked, bool pop_on_undock = true);
+	/*virtual*/ void setTornOff(bool torn_off);
 
 	// Make IM conversion visible and update the message history
 	static LLIMFloater* show(const LLUUID& session_id);
@@ -74,8 +75,6 @@ class LLIMFloater : public LLTransientDockableFloater
 
 	static LLIMFloater* findInstance(const LLUUID& session_id);
 
-	static LLIMFloater* getInstance(const LLUUID& session_id);
-
 	void sessionInitReplyReceived(const LLUUID& im_session_id);
 
 	// get new messages from LLIMModel
@@ -114,8 +113,6 @@ class LLIMFloater : public LLTransientDockableFloater
 	//used as a callback on receiving new IM message
 	static void sRemoveTypingIndicator(const LLSD& data);
 
-	static void onIMChicletCreated(const LLUUID& session_id);
-
 private:
 	// process focus events to set a currently active session
 	/* virtual */ void onFocusLost();
diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp
index 6cc985aef49..2d7333f7e47 100644
--- a/indra/newview/llimfloatercontainer.cpp
+++ b/indra/newview/llimfloatercontainer.cpp
@@ -34,7 +34,6 @@
 #include "llviewerprecompiledheaders.h"
 
 #include "llimfloatercontainer.h"
-#include "llfloaterreg.h"
 
 //
 // LLIMFloaterContainer
@@ -94,14 +93,4 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp,
 	}
 }
 
-LLIMFloaterContainer* LLIMFloaterContainer::findInstance()
-{
-	return LLFloaterReg::findTypedInstance<LLIMFloaterContainer>("im_container");
-}
-
-LLIMFloaterContainer* LLIMFloaterContainer::getInstance()
-{
-	return LLFloaterReg::getTypedInstance<LLIMFloaterContainer>("im_container");
-}
-
 // EOF
diff --git a/indra/newview/llimfloatercontainer.h b/indra/newview/llimfloatercontainer.h
index d4a542dfc22..ead7cf47309 100644
--- a/indra/newview/llimfloatercontainer.h
+++ b/indra/newview/llimfloatercontainer.h
@@ -52,11 +52,7 @@ class LLIMFloaterContainer : public LLMultiFloater
 								LLTabContainer::eInsertionPoint insertion_point = LLTabContainer::END);
 
 	static LLFloater* getCurrentVoiceFloater();
-
-	static LLIMFloaterContainer* findInstance();
-
-	static LLIMFloaterContainer* getInstance();
-
+	
 protected:
 	
 	LLFloater* mActiveVoiceFloater;
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index e9661003ea0..daabf1f7178 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -382,6 +382,10 @@ void LLIMModel::LLIMSession::addMessage(const std::string& from, const LLUUID& f
 		mSpeakers->speakerChatted(from_id);
 		mSpeakers->setSpeakerTyping(from_id, FALSE);
 	}
+
+	if( mSessionType == P2P_SESSION ||
+		mSessionType == ADHOC_SESSION)
+		LLRecentPeople::instance().add(from_id);
 }
 
 void LLIMModel::LLIMSession::addMessagesFromHistory(const std::list<LLSD>& history)
@@ -680,12 +684,6 @@ bool LLIMModel::addMessage(const LLUUID& session_id, const std::string& from, co
 	LLIMSession* session = addMessageSilently(session_id, from, from_id, utf8_text, log2file);
 	if (!session) return false;
 
-	//good place to add some1 to recent list
-	//other places may be called from message history.
-	if( !from_id.isNull() &&
-		( session->isP2PSessionType() || session->isAdHocSessionType() ) )
-		LLRecentPeople::instance().add(from_id);
-
 	// notify listeners
 	LLSD arg;
 	arg["session_id"] = session_id;
@@ -1379,7 +1377,7 @@ void LLCallDialogManager::onVoiceChannelChanged(const LLUUID &session_id)
 	}
 
 	sSession = session;
-	sSession->mVoiceChannel->setStateChangedCallback(boost::bind(LLCallDialogManager::onVoiceChannelStateChanged, _1, _2, _3));
+	sSession->mVoiceChannel->setStateChangedCallback(LLCallDialogManager::onVoiceChannelStateChanged);
 	if(sCurrentSessionlName != session->mName)
 	{
 		sPreviousSessionlName = sCurrentSessionlName;
@@ -1603,12 +1601,7 @@ void LLOutgoingCallDialog::show(const LLSD& key)
 
 	if (!mPayload["disconnected_channel_name"].asString().empty())
 	{
-		std::string channel_name = mPayload["disconnected_channel_name"].asString();
-		if (LLIMModel::LLIMSession::AVALINE_SESSION == mPayload["session_type"].asInteger())
-		{
-			channel_name = LLTextUtil::formatPhoneNumber(channel_name);
-		}
-		childSetTextArg("nearby", "[VOICE_CHANNEL_NAME]", channel_name);
+		childSetTextArg("nearby", "[VOICE_CHANNEL_NAME]", mPayload["disconnected_channel_name"].asString());
 		childSetTextArg("nearby_P2P", "[VOICE_CHANNEL_NAME]", mPayload["disconnected_channel_name"].asString());
 	}
 
diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h
index e72bda6c2bf..20d8e283927 100644
--- a/indra/newview/llimview.h
+++ b/indra/newview/llimview.h
@@ -78,11 +78,6 @@ class LLIMModel :  public LLSingleton<LLIMModel>
 		bool isP2P();
 		bool isOtherParticipantAvaline();
 
-		bool isP2PSessionType() const { return mSessionType == P2P_SESSION;}
-		bool isAdHocSessionType() const { return mSessionType == ADHOC_SESSION;}
-		bool isGroupSessionType() const { return mSessionType == GROUP_SESSION;}
-		bool isAvalineSessionType() const { return mSessionType == AVALINE_SESSION;}
-
 		LLUUID mSessionID;
 		std::string mName;
 		EInstantMessage mType;
diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp
index 0374a1d25b0..8f4fba244d2 100644
--- a/indra/newview/llinspectavatar.cpp
+++ b/indra/newview/llinspectavatar.cpp
@@ -418,7 +418,6 @@ void LLInspectAvatar::updateModeratorPanel()
 				LLPointer<LLSpeaker> selected_speakerp = speaker_mgr->findSpeaker(mAvatarID);
 				
 				if(speaker_mgr->isVoiceActive() && selected_speakerp && 
-					selected_speakerp->isInVoiceChannel() &&
 					((self_speakerp && self_speakerp->mIsModerator) || gAgent.isGodlike()))
 				{
 					getChild<LLUICtrl>("enable_voice")->setVisible(selected_speakerp->mModeratorMutedVoice);
diff --git a/indra/newview/llinspecttoast.cpp b/indra/newview/llinspecttoast.cpp
deleted file mode 100644
index 3ca8fa2f56e..00000000000
--- a/indra/newview/llinspecttoast.cpp
+++ /dev/null
@@ -1,122 +0,0 @@
-/** 
- * @file llinspecttoast.cpp
- * @brief Toast inspector implementation.
- *
- * $LicenseInfo:firstyear=2003&license=viewergpl$
- * 
- * Copyright (c) 2003-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 "llviewerprecompiledheaders.h" // must be first include
-
-#include "llinspecttoast.h"
-#include "llinspect.h"
-#include "llfloaterreg.h"
-#include "llscreenchannel.h"
-#include "llchannelmanager.h"
-#include "lltransientfloatermgr.h"
-
-using namespace LLNotificationsUI;
-
-/**
- * Represents inspectable toast .
- */
-class LLInspectToast: public LLInspect
-{
-public:
-
-	LLInspectToast(const LLSD& notification_idl);
-	virtual ~LLInspectToast();
-
-	/*virtual*/ void onOpen(const LLSD& notification_id);
-private:
-	void onToastDestroy(LLToast * toast);
-
-private:
-	LLPanel* mPanel;
-	LLScreenChannel* mScreenChannel;
-};
-
-LLInspectToast::LLInspectToast(const LLSD& notification_id) :
-	LLInspect(LLSD()), mPanel(NULL)
-{
-	LLScreenChannelBase* channel = LLChannelManager::getInstance()->findChannelByID(
-																LLUUID(gSavedSettings.getString("NotificationChannelUUID")));
-	mScreenChannel = dynamic_cast<LLScreenChannel*>(channel);
-	if(NULL == mScreenChannel)
-	{
-		llwarns << "Could not get requested screen channel." << llendl;
-		return;
-	}
-
-	LLTransientFloaterMgr::getInstance()->addControlView(this);
-}
-LLInspectToast::~LLInspectToast()
-{
-	LLTransientFloaterMgr::getInstance()->removeControlView(this);
-}
-
-void LLInspectToast::onOpen(const LLSD& notification_id)
-{
-	LLInspect::onOpen(notification_id);
-	LLToast* toast = mScreenChannel->getToastByNotificationID(notification_id);
-	if (toast == NULL)
-	{
-		llwarns << "Could not get requested toast  from screen channel." << llendl;
-		return;
-	}
-	toast->setOnToastDestroyedCallback(boost::bind(&LLInspectToast::onToastDestroy, this, _1));
-
-	LLPanel * panel = toast->getPanel();
-	panel->setVisible(TRUE);
-	panel->setMouseOpaque(FALSE);
-	if(mPanel != NULL && mPanel->getParent() == this)
-	{
-		removeChild(mPanel);
-	}
-	addChild(panel);
-	panel->setFocus(TRUE);
-	mPanel = panel;
-
-
-	LLRect panel_rect;
-	panel_rect = panel->getRect();
-	reshape(panel_rect.getWidth(), panel_rect.getHeight());
-
-	LLUI::positionViewNearMouse(this);
-}
-
-void LLInspectToast::onToastDestroy(LLToast * toast)
-{
-	closeFloater(false);
-}
-
-void LLNotificationsUI::registerFloater()
-{
-	LLFloaterReg::add("inspect_toast", "inspect_toast.xml",
-			&LLFloaterReg::build<LLInspectToast>);
-}
-
diff --git a/indra/newview/llinspecttoast.h b/indra/newview/llinspecttoast.h
deleted file mode 100644
index ff547154b83..00000000000
--- a/indra/newview/llinspecttoast.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/** 
- * @file llinspecttoast.h
- *
- * $LicenseInfo:firstyear=2003&license=viewergpl$
- * 
- * Copyright (c) 2003-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_LLINSPECTTOAST_H
-#define LL_LLINSPECTTOAST_H
-
-namespace LLNotificationsUI
-{
-void registerFloater();
-}
-
-#endif
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index a468a9a95c4..711114173c9 100644
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -2001,16 +2001,14 @@ void LLInventoryModel::accountForUpdate(const LLCategoryUpdate& update) const
 		}
 		if(!accounted)
 		{
-			// Error condition, this means that the category did not register that
-			// it got new descendents (perhaps because it is still being loaded)
-			// which means its descendent count will be wrong.
-			llwarns << "Accounting failed for '" << cat->getName() << "' version:"
+			lldebugs << "No accounting for: '" << cat->getName() << "' "
 					 << version << llendl;
 		}
 	}
 	else
 	{
-		llwarns << "No category found for update " << update.mCategoryID << llendl;
+		llwarns << "No category found for update " << update.mCategoryID
+				<< llendl;
 	}
 }
 
diff --git a/indra/newview/llinventoryobserver.cpp b/indra/newview/llinventoryobserver.cpp
index 2fb8aea4e94..2d9ea21b5f2 100644
--- a/indra/newview/llinventoryobserver.cpp
+++ b/indra/newview/llinventoryobserver.cpp
@@ -311,10 +311,10 @@ bool LLInventoryFetchDescendentsObserver::isEverythingComplete() const
 
 bool LLInventoryFetchDescendentsObserver::isComplete(LLViewerInventoryCategory* cat)
 {
-	const S32 version = cat->getVersion();
-	const S32 expected_num_descendents = cat->getDescendentCount();
-	if ((version == LLViewerInventoryCategory::VERSION_UNKNOWN) ||
-		(expected_num_descendents == LLViewerInventoryCategory::DESCENDENT_COUNT_UNKNOWN))
+	S32 version = cat->getVersion();
+	S32 descendents = cat->getDescendentCount();
+	if((LLViewerInventoryCategory::VERSION_UNKNOWN == version)
+	   || (LLViewerInventoryCategory::DESCENDENT_COUNT_UNKNOWN == descendents))
 	{
 		return false;
 	}
@@ -325,28 +325,15 @@ bool LLInventoryFetchDescendentsObserver::isComplete(LLViewerInventoryCategory*
 	gInventory.getDirectDescendentsOf(cat->getUUID(), cats, items);
 	if(!cats || !items)
 	{
-		llwarns << "Category '" << cat->getName() << "' descendents corrupted, fetch failed." << llendl;
-		// NULL means the call failed -- cats/items map doesn't exist (note: this does NOT mean
-		// that the cat just doesn't have any items or subfolders).
-		// Unrecoverable, so just return done so that this observer can be cleared
-		// from memory.
+		// bit of a hack - pretend we're done if they are gone or
+		// incomplete. should never know, but it would suck if this
+		// kept tight looping because of a corrupt memory state.
 		return true;
 	}
-	const S32 current_num_known_descendents = cats->count() + items->count();
-	
-	// Got the number of descendents that we were expecting, so we're done.
-	if (current_num_known_descendents == expected_num_descendents)
-	{
-		return true;
-	}
-
-	// Error condition, but recoverable.  This happens if something was added to the
-	// category before it was initialized, so accountForUpdate didn't update descendent
-	// count and thus the category thinks it has fewer descendents than it actually has.
-	if (current_num_known_descendents >= expected_num_descendents)
+	S32 known = cats->count() + items->count();
+	if(descendents == known)
 	{
-		llwarns << "Category '" << cat->getName() << "' expected descendentcount:" << expected_num_descendents << " descendents but got descendentcount:" << current_num_known_descendents << llendl;
-		cat->setDescendentCount(current_num_known_descendents);
+		// hey - we're done.
 		return true;
 	}
 	return false;
@@ -365,7 +352,7 @@ void LLInventoryFetchComboObserver::changed(U32 mask)
 				continue;
 			}
 			if(item->isComplete())
-		{	
+			{
 				mCompleteItems.push_back(*it);
 				it = mIncompleteItems.erase(it);
 				continue;
diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp
index 87ebce1d347..6b0f9b709d1 100644
--- a/indra/newview/llmediactrl.cpp
+++ b/indra/newview/llmediactrl.cpp
@@ -84,6 +84,7 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :
 	mHomePageUrl( "" ),
 	mIgnoreUIScale( true ),
 	mAlwaysRefresh( false ),
+	mExternalUrl( "" ),
 	mMediaSource( 0 ),
 	mTakeFocusOnClick( true ),
 	mCurrentNavUrl( "" ),
@@ -876,27 +877,9 @@ bool LLMediaCtrl::onClickLinkExternalTarget(const LLSD& notification, const LLSD
 	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
 	if ( 0 == option )
 	{
-		LLSD payload = notification["payload"];
-		std::string url = payload["url"].asString();
-		S32 target_type = payload["target_type"].asInteger();
-
-		switch (target_type)
-		{
-		case LLPluginClassMedia::TARGET_EXTERNAL:
-			// load target in an external browser
-			LLWeb::loadURLExternal(url);
-			break;
-
-		case LLPluginClassMedia::TARGET_BLANK:
-			// load target in the user's preferred browser
-			LLWeb::loadURL(url);
-			break;
-
-		default:
-			// unsupported link target - shouldn't happen
-			LL_WARNS("LinkTarget") << "Unsupported link target type" << LL_ENDL;
-			break;
-		}
+		// open in external browser because we don't support 
+		// creation of our own secondary browser windows
+		LLWeb::loadURLExternal( notification["payload"]["external_url"].asString() );
 	}
 	return false;
 }
@@ -1010,18 +993,20 @@ void LLMediaCtrl::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event)
 void LLMediaCtrl::onClickLinkHref( LLPluginClassMedia* self )
 {
 	// retrieve the event parameters
+	std::string target = self->getClickTarget();
 	std::string url = self->getClickURL();
-	U32 target_type = self->getClickTargetType();
 	
-	// is there is a target specified for the link?
-	if (target_type == LLPluginClassMedia::TARGET_EXTERNAL ||
-		target_type == LLPluginClassMedia::TARGET_BLANK)
+	// if there is a value for the target
+	if ( !target.empty() )
 	{
-		LLSD payload;
-		payload["url"] = url;
-		payload["target_type"] = LLSD::Integer(target_type);
-		LLNotificationsUtil::add( "WebLaunchExternalTarget", LLSD(), payload, onClickLinkExternalTarget);
-		return;
+		if ( target == "_external" )		
+		{
+			mExternalUrl = url;
+			LLSD payload;
+			payload["external_url"] = mExternalUrl;
+			LLNotificationsUtil::add( "WebLaunchExternalTarget", LLSD(), payload, onClickLinkExternalTarget);
+			return;
+		}
 	}
 
 	const std::string protocol1( "http://" );
diff --git a/indra/newview/llmediactrl.h b/indra/newview/llmediactrl.h
index b0aca3cfa46..8f9e6e71797 100644
--- a/indra/newview/llmediactrl.h
+++ b/indra/newview/llmediactrl.h
@@ -182,6 +182,7 @@ class LLMediaCtrl :
 		bool mOpenLinksInInternalBrowser;
 		bool mTrusted;
 		std::string mHomePageUrl;
+		std::string mExternalUrl;
 		std::string mCurrentNavUrl;
 		bool mIgnoreUIScale;
 		bool mAlwaysRefresh;
diff --git a/indra/newview/llnamebox.cpp b/indra/newview/llnamebox.cpp
index d4340178049..2f4a2661985 100644
--- a/indra/newview/llnamebox.cpp
+++ b/indra/newview/llnamebox.cpp
@@ -52,7 +52,6 @@ LLNameBox::LLNameBox(const Params& p)
 :	LLTextBox(p)
 {
 	mNameID = LLUUID::null;
-	mLink = p.link;
 	LLNameBox::sInstances.insert(this);
 	setText(LLStringUtil::null);
 }
@@ -77,7 +76,7 @@ void LLNameBox::setNameID(const LLUUID& name_id, BOOL is_group)
 		gCacheName->getGroupName(name_id, name);
 	}
 
-	setName(name, is_group);
+	setText(name);
 }
 
 void LLNameBox::refresh(const LLUUID& id, const std::string& firstname,
@@ -94,7 +93,7 @@ void LLNameBox::refresh(const LLUUID& id, const std::string& firstname,
 		{
 			name = firstname;
 		}
-		setName(name, is_group);
+		setText(name);
 	}
 }
 
@@ -110,22 +109,3 @@ void LLNameBox::refreshAll(const LLUUID& id, const std::string& firstname,
 		box->refresh(id, firstname, lastname, is_group);
 	}
 }
-
-void LLNameBox::setName(const std::string& name, BOOL is_group)
-{
-	if (mLink)
-	{
-		std::string url;
-
-		if (is_group)
-			url = "[secondlife:///app/group/" + LLURI::escape(name) + "/about " + name + "]";
-		else
-			url = "[secondlife:///app/agent/" + mNameID.asString() + "/about " + name + "]";
-
-		setText(url);
-	}
-	else
-	{
-		setText(name);
-	}
-}
diff --git a/indra/newview/llnamebox.h b/indra/newview/llnamebox.h
index 0109525e856..3edb36883f9 100644
--- a/indra/newview/llnamebox.h
+++ b/indra/newview/llnamebox.h
@@ -47,11 +47,9 @@ class LLNameBox
 	struct Params : public LLInitParam::Block<Params, LLTextBox::Params>
 	{
 		Optional<bool>		is_group;
-		Optional<bool>		link;
 
 		Params()
 		:	is_group("is_group", false)
-		,	link("link", false)
 		{}
 	};
 
@@ -69,13 +67,10 @@ class LLNameBox
 
 	friend class LLUICtrlFactory;
 private:
-	void setName(const std::string& name, BOOL is_group);
-
 	static std::set<LLNameBox*> sInstances;
 
 private:
 	LLUUID mNameID;
-	BOOL mLink;
 
 };
 
diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index a7c1e73328e..fc0e51b76d1 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -179,7 +179,27 @@ void	LLNearbyChat::addMessage(const LLChat& chat,bool archive)
 	if (!chat.mMuted)
 	{
 		tmp_chat.mFromName = chat.mFromName;
-		mChatHistory->appendMessage(chat, use_plain_text_chat_history);
+
+		if (chat.mChatStyle == CHAT_STYLE_IRC)
+		{
+			LLColor4 txt_color = LLUIColorTable::instance().getColor("White");
+			LLViewerChat::getChatColor(chat,txt_color);
+			LLFontGL* fontp = LLViewerChat::getChatFont();
+			std::string font_name = LLFontGL::nameFromFont(fontp);
+			std::string font_size = LLFontGL::sizeFromFont(fontp);
+			LLStyle::Params append_style_params;
+			append_style_params.color(txt_color);
+			append_style_params.readonly_color(txt_color);
+			append_style_params.font.name(font_name);
+			append_style_params.font.size(font_size);
+			append_style_params.font.style = "ITALIC";
+
+			mChatHistory->appendMessage(chat, use_plain_text_chat_history, append_style_params);
+		}
+		else
+		{
+			mChatHistory->appendMessage(chat, use_plain_text_chat_history);
+		}
 	}
 
 	if(archive)
diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp
index 6cf8bcb4178..8dbaa5ac53a 100644
--- a/indra/newview/llnearbychatbar.cpp
+++ b/indra/newview/llnearbychatbar.cpp
@@ -48,16 +48,13 @@
 #include "llcommandhandler.h"
 #include "llviewercontrol.h"
 #include "llnavigationbar.h"
-#include "llwindow.h"
-#include "llviewerwindow.h"
-#include "llrootview.h"
 
 S32 LLNearbyChatBar::sLastSpecialChatChannel = 0;
 
 // legacy callback glue
 void send_chat_from_viewer(const std::string& utf8_out_text, EChatType type, S32 channel);
 
-static LLDefaultChildRegistry::Register<LLGestureComboList> r("gesture_combo_list");
+static LLDefaultChildRegistry::Register<LLGestureComboBox> r("gesture_combo_box");
 
 struct LLChatTypeTrigger {
 	std::string name;
@@ -69,42 +66,13 @@ static LLChatTypeTrigger sChatTypeTriggers[] = {
 	{ "/shout"	, CHAT_TYPE_SHOUT}
 };
 
-LLGestureComboList::Params::Params()
-:	combo_button("combo_button"),
-	combo_list("combo_list")
-{
-}
-
-LLGestureComboList::LLGestureComboList(const LLGestureComboList::Params& p)
-:	LLUICtrl(p)
+LLGestureComboBox::LLGestureComboBox(const LLGestureComboBox::Params& p)
+	: LLComboBox(p)
+	, mGestureLabelTimer()
 	, mLabel(p.label)
 	, mViewAllItemIndex(0)
 {
-	LLButton::Params button_params = p.combo_button;
-	button_params.follows.flags(FOLLOWS_LEFT|FOLLOWS_BOTTOM|FOLLOWS_RIGHT);
-
-	mButton = LLUICtrlFactory::create<LLButton>(button_params);
-	mButton->reshape(getRect().getWidth(),getRect().getHeight());
-	mButton->setCommitCallback(boost::bind(&LLGestureComboList::onButtonCommit, this));
-
-	addChild(mButton);
-
-	LLScrollListCtrl::Params params = p.combo_list;
-	params.name("GestureComboList");
-	params.commit_callback.function(boost::bind(&LLGestureComboList::onItemSelected, this, _2));
-	params.visible(false);
-	params.commit_on_keyboard_movement(false);
-
-	mList = LLUICtrlFactory::create<LLScrollListCtrl>(params);
-	
-	// *HACK: adding list as a child to NonSideTrayView to make it fully visible without
-	// making it top control (because it would cause problems).
-	gViewerWindow->getNonSideTrayView()->addChild(mList);
-	mList->setVisible(FALSE);
-
-	//****************************Gesture Part********************************/
-
-	setCommitCallback(boost::bind(&LLGestureComboList::onCommitGesture, this));
+	setCommitCallback(boost::bind(&LLGestureComboBox::onCommitGesture, this));
 
 	// now register us as observer since we have a place to put the results
 	LLGestureManager::instance().addObserver(this);
@@ -112,139 +80,23 @@ LLGestureComboList::LLGestureComboList(const LLGestureComboList::Params& p)
 	// refresh list from current active gestures
 	refreshGestures();
 
-	setFocusLostCallback(boost::bind(&LLGestureComboList::hideList, this));
-}
-
-BOOL LLGestureComboList::handleKey(KEY key, MASK mask, BOOL called_from_parent)
-{
-	BOOL handled = FALSE;
-	
-	if (key == KEY_ESCAPE && mask == MASK_NONE )
-	{
-		hideList();
-		handled = TRUE;
-	}
-	else
-	{
-		handled = mList->handleKey(key, mask, called_from_parent);
-	}
-
-	return handled; 		
-}
-
-void LLGestureComboList::showList()
-{
-	LLRect rect = mList->getRect();
-	LLRect screen;
-	mButton->localRectToScreen(getRect(), &screen);
-	
-	// Calculating amount of space between the navigation bar and gestures combo
-	LLNavigationBar* nb = LLNavigationBar::getInstance();
-
-	S32 x, nb_bottom;
-	nb->localPointToScreen(0, 0, &x, &nb_bottom);
-
-	S32 max_height = nb_bottom - screen.mTop;
-	mList->calcColumnWidths();
-	rect.setOriginAndSize(screen.mLeft, screen.mTop, llmax(mList->getMaxContentWidth(),mButton->getRect().getWidth()), max_height);
-
-	mList->setRect(rect);
-	mList->fitContents( llmax(mList->getMaxContentWidth(),mButton->getRect().getWidth()), max_height);
-
-	gFocusMgr.setKeyboardFocus(this);
-
-	// Show the list and push the button down
-	mButton->setToggleState(TRUE);
-	mList->setVisible(TRUE);
-}
-
-void LLGestureComboList::onButtonCommit()
-{
-	if (!mList->getVisible())
-	{
-		// highlight the last selected item from the original selection before potentially selecting a new item
-		// as visual cue to original value of combo box
-		LLScrollListItem* last_selected_item = mList->getLastSelectedItem();
-		if (last_selected_item)
-		{
-			mList->mouseOverHighlightNthItem(mList->getItemIndex(last_selected_item));
-		}
-
-		if (mList->getItemCount() != 0)
-		{
-			showList();
-		}
-	}
-	else
-	{
-		hideList();
-	} 
-}
-
-void LLGestureComboList::hideList()
-{
-	if (mList->getVisible())
-	{
-		mButton->setToggleState(FALSE);
-		mList->setVisible(FALSE);
-		mList->mouseOverHighlightNthItem(-1);
-		gFocusMgr.setKeyboardFocus(NULL);
-	}
-}
-
-S32 LLGestureComboList::getCurrentIndex() const
-{
-	LLScrollListItem* item = mList->getFirstSelected();
-	if( item )
-	{
-		return mList->getItemIndex( item );
-	}
-	return -1;
-}
-
-void LLGestureComboList::onItemSelected(const LLSD& data)
-{
-	const std::string name = mList->getSelectedItemLabel();
-
-	S32 cur_id = getCurrentIndex();
-	mLastSelectedIndex = cur_id;
-	if (cur_id != mList->getItemCount()-1 && cur_id != -1)
-	{
-		mButton->setLabel(name);
-	}
-
-	// hiding the list reasserts the old value stored in the text editor/dropdown button
-	hideList();
-
-	// commit does the reverse, asserting the value in the list
-	onCommit();
-}
-
-void LLGestureComboList::sortByName(bool ascending)
-{
-	mList->sortOnce(0, ascending);
+	// This forces using of halign from xml, since LLComboBox
+	// sets it to LLFontGL::LEFT, if text entry is disabled
+	mButton->setHAlign(p.drop_down_button.font_halign);
 }
 
-LLSD LLGestureComboList::getValue() const
+LLGestureComboBox::~LLGestureComboBox()
 {
-	LLScrollListItem* item = mList->getFirstSelected();
-	if( item )
-	{
-		return item->getValue();
-	}
-	else
-	{
-		return LLSD();
-	}
+	LLGestureManager::instance().removeObserver(this);
 }
 
-void LLGestureComboList::refreshGestures()
+void LLGestureComboBox::refreshGestures()
 {
 	//store current selection so we can maintain it
 	LLSD cur_gesture = getValue();
-	
-	mList->selectFirstItem();
-	mList->clearRows();
+	selectFirstItem();
+	// clear
+	clearRows();
 	mGestures.clear();
 
 	LLGestureManager::item_map_t::const_iterator it;
@@ -255,7 +107,7 @@ void LLGestureComboList::refreshGestures()
 		LLMultiGesture* gesture = (*it).second;
 		if (gesture)
 		{
-			mList->addSimpleElement(gesture->mName, ADD_BOTTOM, LLSD(idx));
+			addSimpleElement(gesture->mName, ADD_BOTTOM, LLSD(idx));
 			mGestures.push_back(gesture);
 			idx++;
 		}
@@ -265,42 +117,23 @@ void LLGestureComboList::refreshGestures()
 
 	// store index followed by the last added Gesture and add View All item at bottom
 	mViewAllItemIndex = idx;
-	
-	mList->addSimpleElement(LLTrans::getString("ViewAllGestures"), ADD_BOTTOM, LLSD(mViewAllItemIndex));
+	addSimpleElement(LLTrans::getString("ViewAllGestures"), ADD_BOTTOM, LLSD(mViewAllItemIndex));
 
 	// Insert label after sorting, at top, with separator below it
-	mList->addSeparator(ADD_TOP);	
-	mList->addSimpleElement(mLabel, ADD_TOP);
+	addSeparator(ADD_TOP);		
+	addSimpleElement(mLabel, ADD_TOP);
 
 	if (cur_gesture.isDefined())
 	{ 
-		mList->selectByValue(cur_gesture);
-
+		selectByValue(cur_gesture);
 	}
 	else
 	{
-		mList->selectFirstItem();
+		selectFirstItem();
 	}
-
-	LLCtrlListInterface* gestures = getListInterface();
-	LLMultiGesture* gesture = NULL;
-	
-	if (gestures)
-	{
-		S32 index = gestures->getSelectedValue().asInteger();
-		if(index > 0)
-			gesture = mGestures.at(index);
-	}
-	
-	if(gesture && LLGestureManager::instance().isGesturePlaying(gesture))
-	{
-		return;
-	}
-	
-	mButton->setLabel(mLabel);
 }
 
-void LLGestureComboList::onCommitGesture()
+void LLGestureComboBox::onCommitGesture()
 {
 	LLCtrlListInterface* gestures = getListInterface();
 	if (gestures)
@@ -331,11 +164,50 @@ void LLGestureComboList::onCommitGesture()
 			}
 		}
 	}
+
+	mGestureLabelTimer.start();
+	// free focus back to chat bar
+	setFocus(FALSE);
 }
 
-LLGestureComboList::~LLGestureComboList()
+//virtual
+void LLGestureComboBox::draw()
 {
-	LLGestureManager::instance().removeObserver(this);
+	// HACK: Leave the name of the gesture in place for a few seconds.
+	const F32 SHOW_GESTURE_NAME_TIME = 2.f;
+	if (mGestureLabelTimer.getStarted() && mGestureLabelTimer.getElapsedTimeF32() > SHOW_GESTURE_NAME_TIME)
+	{
+		LLCtrlListInterface* gestures = getListInterface();
+		if (gestures) gestures->selectFirstItem();
+		mGestureLabelTimer.stop();
+	}
+
+	LLComboBox::draw();
+}
+
+//virtual
+void LLGestureComboBox::showList()
+{
+	LLComboBox::showList();
+
+	// Calculating amount of space between the navigation bar and gestures combo
+	LLNavigationBar* nb = LLNavigationBar::getInstance();
+	S32 x, nb_bottom;
+	nb->localPointToScreen(0, 0, &x, &nb_bottom);
+	
+	S32 list_bottom;
+	mList->localPointToScreen(0, 0, &x, &list_bottom);
+
+	S32 max_height = nb_bottom - list_bottom;
+
+	LLRect rect = mList->getRect();
+	// List overlapped navigation bar, downsize it
+	if (rect.getHeight() > max_height) 
+	{
+		rect.setOriginAndSize(rect.mLeft, rect.mBottom, rect.getWidth(), max_height);
+		mList->setRect(rect);
+		mList->reshape(rect.getWidth(), rect.getHeight());
+	}
 }
 
 LLNearbyChatBar::LLNearbyChatBar() 
diff --git a/indra/newview/llnearbychatbar.h b/indra/newview/llnearbychatbar.h
index d9a7403611a..224118e088d 100644
--- a/indra/newview/llnearbychatbar.h
+++ b/indra/newview/llnearbychatbar.h
@@ -42,52 +42,33 @@
 #include "llspeakers.h"
 
 
-class LLGestureComboList
-	: public LLGestureManagerObserver
-	, public LLUICtrl
+class LLGestureComboBox
+	: public LLComboBox
+	, public LLGestureManagerObserver
 {
 public:
-	struct Params :	public LLInitParam::Block<Params, LLUICtrl::Params>
-	{
-		Optional<LLButton::Params>			combo_button;
-		Optional<LLScrollListCtrl::Params>	combo_list;
-		
-		Params();
-	};
-
+	struct Params : public LLInitParam::Block<Params, LLComboBox::Params> { };
 protected:
-	
+	LLGestureComboBox(const Params&);
 	friend class LLUICtrlFactory;
-	LLGestureComboList(const Params&);
-	std::vector<LLMultiGesture*> mGestures;
-	std::string mLabel;
-	LLSD::Integer mViewAllItemIndex;
-
 public:
+	~LLGestureComboBox();
 
-	~LLGestureComboList();
-
-	LLCtrlListInterface* getListInterface()		{ return (LLCtrlListInterface*)mList; };
-	virtual void	showList();
-	virtual void	hideList();
-	virtual BOOL	handleKey(KEY key, MASK mask, BOOL called_from_parent);
-
-	S32				getCurrentIndex() const;
-	void			onItemSelected(const LLSD& data);
-	void			sortByName(bool ascending = true);
 	void refreshGestures();
 	void onCommitGesture();
-	void onButtonCommit();
-	virtual LLSD	getValue() const;
+	virtual void draw();
 
 	// LLGestureManagerObserver trigger
 	virtual void changed() { refreshGestures(); }
 
-private:
+protected:
+
+	virtual void showList();
 
-	LLButton*			mButton;
-	LLScrollListCtrl*	mList;
-	S32                 mLastSelectedIndex;
+	LLFrameTimer mGestureLabelTimer;
+	std::vector<LLMultiGesture*> mGestures;
+	std::string mLabel;
+	LLSD::Integer mViewAllItemIndex;
 };
 
 class LLNearbyChatBar
diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp
index 96442fafcc6..9e13a626b44 100644
--- a/indra/newview/llnearbychathandler.cpp
+++ b/indra/newview/llnearbychathandler.cpp
@@ -180,11 +180,6 @@ void LLNearbyChatScreenChannel::addNotification(LLSD& notification)
 
 		if(panel && panel->messageID() == fromID && panel->canAddText())
 		{
-			if (CHAT_STYLE_IRC == notification["chat_style"].asInteger())
-			{
-				notification["message"] = notification["from"].asString() + notification["message"].asString();
-			}
-
 			panel->addMessage(notification);
 			toast->reshapeToPanel();
 			toast->resetTimer();
@@ -307,6 +302,7 @@ LLNearbyChatHandler::LLNearbyChatHandler(e_notification_type type, const LLSD& i
 	channel->setCreatePanelCallback(callback);
 
 	mChannel = LLChannelManager::getInstance()->addChannel(channel);
+	mChannel->setOverflowFormatString("You have %d unread nearby chat messages");
 }
 
 LLNearbyChatHandler::~LLNearbyChatHandler()
@@ -336,22 +332,25 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg)
 
 	LLChat& tmp_chat = const_cast<LLChat&>(chat_msg);
 
-	LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
+	if (tmp_chat.mChatStyle == CHAT_STYLE_IRC)
+	{
+		if(!tmp_chat.mFromName.empty())
+			tmp_chat.mText = tmp_chat.mFromName + tmp_chat.mText.substr(3);
+		else
+			tmp_chat.mText = tmp_chat.mText.substr(3);
+	}
+	
 	{
 		//sometimes its usefull to have no name at all...
 		//if(tmp_chat.mFromName.empty() && tmp_chat.mFromID!= LLUUID::null)
 		//	tmp_chat.mFromName = tmp_chat.mFromID.asString();
 	}
+	
+	LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
 	nearby_chat->addMessage(chat_msg);
 	if(nearby_chat->getVisible())
 		return;//no need in toast if chat is visible
-
-	// Handle irc styled messages for toast panel
-	if (tmp_chat.mChatStyle == CHAT_STYLE_IRC)
-	{
-		tmp_chat.mText = tmp_chat.mText.substr(3);
-	}
-
+	
 	// arrange a channel on a screen
 	if(!mChannel->getVisible())
 	{
diff --git a/indra/newview/lloutputmonitorctrl.cpp b/indra/newview/lloutputmonitorctrl.cpp
index f816dc589d6..63803469dd1 100644
--- a/indra/newview/lloutputmonitorctrl.cpp
+++ b/indra/newview/lloutputmonitorctrl.cpp
@@ -77,9 +77,7 @@ LLOutputMonitorCtrl::LLOutputMonitorCtrl(const LLOutputMonitorCtrl::Params& p)
 	mImageLevel3(p.image_level_3),
 	mAutoUpdate(p.auto_update),
 	mSpeakerId(p.speaker_id),
-	mIsAgentControl(false),
-	mIsSwitchDirty(false),
-	mShouldSwitchOn(false)
+	mIsAgentControl(false)
 {
 	//static LLUIColor output_monitor_muted_color = LLUIColorTable::instance().getColor("OutputMonitorMutedColor", LLColor4::orange);
 	//static LLUIColor output_monitor_overdriven_color = LLUIColorTable::instance().getColor("OutputMonitorOverdrivenColor", LLColor4::red);
@@ -110,7 +108,6 @@ LLOutputMonitorCtrl::LLOutputMonitorCtrl(const LLOutputMonitorCtrl::Params& p)
 LLOutputMonitorCtrl::~LLOutputMonitorCtrl()
 {
 	LLMuteList::getInstance()->removeObserver(this);
-	LLSpeakingIndicatorManager::unregisterSpeakingIndicator(mSpeakerId, this);
 }
 
 void LLOutputMonitorCtrl::setPower(F32 val)
@@ -120,26 +117,6 @@ void LLOutputMonitorCtrl::setPower(F32 val)
 
 void LLOutputMonitorCtrl::draw()
 {
-	// see also switchIndicator()
-	if (mIsSwitchDirty)
-	{
-		mIsSwitchDirty = false;
-		if (mShouldSwitchOn)
-		{
-			// just notify parent visibility may have changed
-			notifyParentVisibilityChanged();
-		}
-		else
-		{
-			// make itself invisible and notify parent about this
-			setVisible(FALSE);
-			notifyParentVisibilityChanged();
-
-			// no needs to render for invisible element
-			return;
-		}
-	}
-
 	// Copied from llmediaremotectrl.cpp
 	// *TODO: Give the LLOutputMonitorCtrl an agent-id to monitor, then
 	// call directly into gVoiceClient to ask if that agent-id is muted, is
@@ -252,7 +229,6 @@ void LLOutputMonitorCtrl::setSpeakerId(const LLUUID& speaker_id)
 	if (speaker_id.isNull() || speaker_id == mSpeakerId) return;
 
 	mSpeakerId = speaker_id;
-	LLSpeakingIndicatorManager::registerSpeakingIndicator(mSpeakerId, this);
 
 	//mute management
 	if (mAutoUpdate)
@@ -275,42 +251,3 @@ void LLOutputMonitorCtrl::onChange()
 	// check only blocking on voice. EXT-3542
 	setIsMuted(LLMuteList::getInstance()->isMuted(mSpeakerId, LLMute::flagVoiceChat));
 }
-
-// virtual
-void LLOutputMonitorCtrl::switchIndicator(bool switch_on)
-{
-	// ensure indicator is visible in case it is not in visible chain
-	// to be called when parent became visible next time to notify parent that visibility is changed.
-	setVisible(TRUE);
-
-	// if parent is in visible chain apply switch_on state and notify it immediately
-	if (getParent() && getParent()->isInVisibleChain())
-	{
-		LL_DEBUGS("SpeakingIndicator") << "Indicator is in visible chain, notifying parent: " << mSpeakerId << LL_ENDL;
-		setVisible((BOOL)switch_on);
-		notifyParentVisibilityChanged();
-	}
-
-	// otherwise remember necessary state and mark itself as dirty.
-	// State will be applied i next draw when parents chain became visible.
-	else
-	{
-		LL_DEBUGS("SpeakingIndicator") << "Indicator is not in visible chain, parent won't be notified: " << mSpeakerId << LL_ENDL;
-		mIsSwitchDirty = true;
-		mShouldSwitchOn = switch_on;
-	}
-}
-
-//////////////////////////////////////////////////////////////////////////
-// PRIVATE SECTION
-//////////////////////////////////////////////////////////////////////////
-void LLOutputMonitorCtrl::notifyParentVisibilityChanged()
-{
-	LL_DEBUGS("SpeakingIndicator") << "Notify parent that visibility was changed: " << mSpeakerId << " ,new_visibility: " << getVisible() << LL_ENDL;
-
-	LLSD params = LLSD().with("visibility_changed", getVisible());
-
-	notifyParent(params);
-}
-
-// EOF
diff --git a/indra/newview/lloutputmonitorctrl.h b/indra/newview/lloutputmonitorctrl.h
index 2bbfa251e9d..85ea552a572 100644
--- a/indra/newview/lloutputmonitorctrl.h
+++ b/indra/newview/lloutputmonitorctrl.h
@@ -36,7 +36,6 @@
 #include "v4color.h"
 #include "llview.h"
 #include "llmutelist.h"
-#include "llspeakingindicatormanager.h"
 
 class LLTextBox;
 class LLUICtrlFactory;
@@ -46,7 +45,7 @@ class LLUICtrlFactory;
 //
 
 class LLOutputMonitorCtrl
-: public LLView, public LLSpeakingIndicator, LLMuteListObserver
+: public LLView, LLMuteListObserver
 {
 public:
 	struct Params : public LLInitParam::Block<Params, LLView::Params>
@@ -91,29 +90,7 @@ class LLOutputMonitorCtrl
 	//called by mute list
 	virtual void onChange();
 
-	/**
-	 * Implementation of LLSpeakingIndicator interface.
-	 * Behavior is implemented via changing visibility.
-	 *
-	 * If instance is in visible chain now (all parents are visible) it changes visibility 
-	 * and notify parent about this.
-	 *
-	 * Otherwise it marks an instance as dirty and stores necessary visibility.
-	 * It will be applied in next draw and parent will be notified.
-	 */
-	virtual void	switchIndicator(bool switch_on);
-
 private:
-
-	/**
-	 * Notifies parent about changed visibility.
-	 *
-	 * Passes LLSD with "visibility_changed" => <current visibility> value.
-	 * For now it is processed by LLAvatarListItem to update (reshape) its children.
-	 * Implemented fo complete EXT-3976
-	 */
-	void			notifyParentVisibilityChanged();
-
 	//static LLColor4	sColorMuted;
 	//static LLColor4	sColorNormal;
 	//static LLColor4	sColorOverdriven;
@@ -140,10 +117,6 @@ class LLOutputMonitorCtrl
 
 	/** uuid of a speaker being monitored */
 	LLUUID			mSpeakerId;
-
-	/** indicates if the instance is dirty and should notify parent */
-	bool			mIsSwitchDirty;
-	bool			mShouldSwitchOn;
 };
 
 #endif
diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp
index 85e95ca1d65..fb898f7cdf6 100644
--- a/indra/newview/llpanelavatar.cpp
+++ b/indra/newview/llpanelavatar.cpp
@@ -52,7 +52,6 @@
 #include "llfloaterreg.h"
 #include "llnotificationsutil.h"
 #include "llvoiceclient.h"
-#include "llnamebox.h"
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // Class LLDropTarget
@@ -596,10 +595,7 @@ void LLPanelAvatarProfile::processGroupProperties(const LLAvatarGroups* avatar_g
 			groups += ", ";
 
 		std::string group_name = LLURI::escape(it->first);
-		std::string group_url= it->second.notNull()
-				? "[secondlife:///app/group/" + it->second.asString() + "/about " + group_name + "]"
-						: getString("no_group_text");
-
+		std::string group_url="[secondlife:///app/group/" + it->second.asString() + "/about " + group_name + "]";
 		groups += group_url;
 	}
 
@@ -625,15 +621,19 @@ void LLPanelAvatarProfile::fillCommonData(const LLAvatarData* avatar_data)
 
 void LLPanelAvatarProfile::fillPartnerData(const LLAvatarData* avatar_data)
 {
-	LLNameBox* name_box = getChild<LLNameBox>("partner_text");
 	if (avatar_data->partner_id.notNull())
 	{
-		name_box->setNameID(avatar_data->partner_id, FALSE);
+		std::string first, last;
+		BOOL found = gCacheName->getName(avatar_data->partner_id, first, last);
+		if (found)
+		{
+			childSetTextArg("partner_text", "[FIRST]", first);
+			childSetTextArg("partner_text", "[LAST]", last);
+		}
 	}
 	else
 	{
-		name_box->setNameID(LLUUID::null, FALSE);
-		name_box->setText(getString("no_partner_text"));
+		childSetTextArg("partner_text", "[FIRST]", getString("no_partner_text"));
 	}
 }
 
diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp
index daec793d756..94de17c17d8 100644
--- a/indra/newview/llpanelgroup.cpp
+++ b/indra/newview/llpanelgroup.cpp
@@ -151,11 +151,6 @@ BOOL LLPanelGroup::postBuild()
 	button->setVisible(true);
 	button->setEnabled(false);
 
-	button = getChild<LLButton>("btn_call");
-	button->setClickedCallback(onBtnGroupCallClicked, this);
-
-	button = getChild<LLButton>("btn_chat");
-	button->setClickedCallback(onBtnGroupChatClicked, this);
 
 	button = getChild<LLButton>("btn_join");
 	button->setVisible(false);
@@ -220,8 +215,6 @@ void LLPanelGroup::reposButtons()
 	reposButton("btn_create");
 	reposButton("btn_refresh");
 	reposButton("btn_cancel");
-	reposButton("btn_chat");
-	reposButton("btn_call");
 }
 
 void LLPanelGroup::reshape(S32 width, S32 height, BOOL called_from_parent )
@@ -269,18 +262,6 @@ void LLPanelGroup::onBtnApply(void* user_data)
 	self->apply();
 }
 
-void LLPanelGroup::onBtnGroupCallClicked(void* user_data)
-{
-	LLPanelGroup* self = static_cast<LLPanelGroup*>(user_data);
-	self->callGroup();
-}
-
-void LLPanelGroup::onBtnGroupChatClicked(void* user_data)
-{
-	LLPanelGroup* self = static_cast<LLPanelGroup*>(user_data);
-	self->chatGroup();
-}
-
 void LLPanelGroup::onBtnJoin()
 {
 	lldebugs << "joining group: " << mID << llendl;
@@ -368,8 +349,6 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id)
 	LLButton* button_create = findChild<LLButton>("btn_create");
 	LLButton* button_join = findChild<LLButton>("btn_join");
 	LLButton* button_cancel = findChild<LLButton>("btn_cancel");
-	LLButton* button_call = findChild<LLButton>("btn_call");
-	LLButton* button_chat = findChild<LLButton>("btn_chat");
 
 
 	bool is_null_group_id = group_id == LLUUID::null;
@@ -383,11 +362,6 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id)
 	if(button_cancel)
 		button_cancel->setVisible(!is_null_group_id);
 
-	if(button_call)
-			button_call->setVisible(!is_null_group_id);
-	if(button_chat)
-			button_chat->setVisible(!is_null_group_id);
-
 	getChild<LLUICtrl>("prepend_founded_by")->setVisible(!is_null_group_id);
 
 	LLAccordionCtrl* tab_ctrl = findChild<LLAccordionCtrl>("group_accordion");
@@ -449,15 +423,12 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id)
 
 		getChild<LLUICtrl>("group_name")->setVisible(true);
 		getChild<LLUICtrl>("group_name_editor")->setVisible(false);
-
-		if(button_apply)
-			button_apply->setVisible(is_member);
 	}
 
 	reposButtons();
 }
 
-bool LLPanelGroup::apply(LLPanelGroupTab* tab)
+bool	LLPanelGroup::apply(LLPanelGroupTab* tab)
 {
 	if(!tab)
 		return false;
@@ -500,17 +471,12 @@ void LLPanelGroup::draw()
 		childEnable("btn_refresh");
 	}
 
-	LLButton* button_apply = findChild<LLButton>("btn_apply");
-	
-	if(button_apply && button_apply->getVisible())
-	{
-		bool enable = false;
-		std::string mesg;
-		for(std::vector<LLPanelGroupTab* >::iterator it = mTabs.begin();it!=mTabs.end();++it)
-			enable = enable || (*it)->needsApply(mesg);
+	bool enable = false;
+	std::string mesg;
+	for(std::vector<LLPanelGroupTab* >::iterator it = mTabs.begin();it!=mTabs.end();++it)
+		enable = enable || (*it)->needsApply(mesg);
 
-		childSetEnabled("btn_apply", enable);
-	}
+	childSetEnabled("btn_apply", enable);
 }
 
 void LLPanelGroup::refreshData()
@@ -525,15 +491,6 @@ void LLPanelGroup::refreshData()
 	mRefreshTimer.setTimerExpirySec(5);
 }
 
-void LLPanelGroup::callGroup()
-{
-	LLGroupActions::startCall(getID());
-}
-
-void LLPanelGroup::chatGroup()
-{
-	LLGroupActions::startIM(getID());
-}
 
 void LLPanelGroup::showNotice(const std::string& subject,
 							  const std::string& message,
diff --git a/indra/newview/llpanelgroup.h b/indra/newview/llpanelgroup.h
index 7ea5e67b44f..f6aefdb676d 100644
--- a/indra/newview/llpanelgroup.h
+++ b/indra/newview/llpanelgroup.h
@@ -74,8 +74,6 @@ class LLPanelGroup : public LLPanel,
 
 	bool apply();
 	void refreshData();
-	void callGroup();
-	void chatGroup();
 
 	virtual void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
 
@@ -105,8 +103,6 @@ class LLPanelGroup : public LLPanel,
 
 	static void onBtnApply(void*);
 	static void onBtnRefresh(void*);
-	static void onBtnGroupCallClicked(void*);
-	static void onBtnGroupChatClicked(void*);
 
 	void reposButton(const std::string& name);
 	void reposButtons();
diff --git a/indra/newview/llpanelgroupgeneral.cpp b/indra/newview/llpanelgroupgeneral.cpp
index 21b253223f0..31dfdde887c 100644
--- a/indra/newview/llpanelgroupgeneral.cpp
+++ b/indra/newview/llpanelgroupgeneral.cpp
@@ -580,6 +580,7 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
 			}
 		}
 
+		mComboActiveTitle->resetDirty();
 	}
 
 	// If this was just a titles update, we are done.
@@ -594,6 +595,8 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
 	{
 		mCtrlShowInGroupList->set(gdatap->mShowInList);
 		mCtrlShowInGroupList->setEnabled(mAllowEdit && can_change_ident);
+		mCtrlShowInGroupList->resetDirty();
+
 	}
 	if (mComboMature)
 	{
@@ -607,16 +610,19 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
 		}
 		mComboMature->setEnabled(mAllowEdit && can_change_ident);
 		mComboMature->setVisible( !gAgent.isTeen() );
+		mComboMature->resetDirty();
 	}
 	if (mCtrlOpenEnrollment) 
 	{
 		mCtrlOpenEnrollment->set(gdatap->mOpenEnrollment);
 		mCtrlOpenEnrollment->setEnabled(mAllowEdit && can_change_member_opts);
+		mCtrlOpenEnrollment->resetDirty();
 	}
 	if (mCtrlEnrollmentFee) 
 	{	
 		mCtrlEnrollmentFee->set(gdatap->mMembershipFee > 0);
 		mCtrlEnrollmentFee->setEnabled(mAllowEdit && can_change_member_opts);
+		mCtrlEnrollmentFee->resetDirty();
 	}
 	
 	if (mSpinEnrollmentFee)
@@ -626,6 +632,7 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
 		mSpinEnrollmentFee->setEnabled( mAllowEdit &&
 						(fee > 0) &&
 						can_change_member_opts);
+		mSpinEnrollmentFee->resetDirty();
 	}
 	if (mCtrlReceiveNotices)
 	{
@@ -634,6 +641,7 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
 		{
 			mCtrlReceiveNotices->setEnabled(mAllowEdit);
 		}
+		mCtrlReceiveNotices->resetDirty();
 	}
 
 
@@ -657,6 +665,7 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
 	if (mEditCharter)
 	{
 		mEditCharter->setText(gdatap->mCharter);
+		mEditCharter->resetDirty();
 	}
 	
 	if (mListVisibleMembers)
@@ -684,8 +693,6 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
 			mListVisibleMembers->addElement(row);
 		}
 	}
-
-	resetDirty();
 }
 
 void LLPanelGroupGeneral::updateMembers()
diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp
index 0e55ff3214d..29b647415c3 100644
--- a/indra/newview/llpanelgrouproles.cpp
+++ b/indra/newview/llpanelgrouproles.cpp
@@ -460,8 +460,17 @@ LLPanelGroupSubTab::~LLPanelGroupSubTab()
 {
 }
 
-BOOL LLPanelGroupSubTab::postBuildSubTab(LLView* root) 
-{ 
+BOOL LLPanelGroupSubTab::postBuild()
+{
+	// Hook up the search widgets.
+	bool recurse = true;
+	mSearchEditor = getChild<LLFilterEditor>("filter_input", recurse);
+
+	if (!mSearchEditor) 
+		return FALSE;
+
+	mSearchEditor->setCommitCallback(boost::bind(&LLPanelGroupSubTab::setSearchFilter, this, _2));
+	
 	// Get icons for later use.
 	mActionIcons.clear();
 
@@ -479,19 +488,6 @@ BOOL LLPanelGroupSubTab::postBuildSubTab(LLView* root)
 	{
 		mActionIcons["partial"] = getString("power_partial_icon");
 	}
-	return TRUE; 
-}
-
-BOOL LLPanelGroupSubTab::postBuild()
-{
-	// Hook up the search widgets.
-	bool recurse = true;
-	mSearchEditor = getChild<LLFilterEditor>("filter_input", recurse);
-
-	if (!mSearchEditor) 
-		return FALSE;
-
-	mSearchEditor->setCommitCallback(boost::bind(&LLPanelGroupSubTab::setSearchFilter, this, _2));
 
 	return LLPanelGroupTab::postBuild();
 }
@@ -571,6 +567,7 @@ bool LLPanelGroupSubTab::matchesActionSearchFilter(std::string action)
 void LLPanelGroupSubTab::buildActionsList(LLScrollListCtrl* ctrl, 
 										  U64 allowed_by_some, 
 										  U64 allowed_by_all,
+										  icon_map_t& icons,
 										  LLUICtrl::commit_callback_t commit_callback,
 										  BOOL show_all,
 										  BOOL filter,
@@ -591,6 +588,7 @@ void LLPanelGroupSubTab::buildActionsList(LLScrollListCtrl* ctrl,
 							allowed_by_some,
 							allowed_by_all,
 							(*ras_it),
+							icons, 
 							commit_callback,
 							show_all,
 							filter,
@@ -602,6 +600,7 @@ void LLPanelGroupSubTab::buildActionCategory(LLScrollListCtrl* ctrl,
 											 U64 allowed_by_some,
 											 U64 allowed_by_all,
 											 LLRoleActionSet* action_set,
+											 icon_map_t& icons,
 											 LLUICtrl::commit_callback_t commit_callback,
 											 BOOL show_all,
 											 BOOL filter,
@@ -615,26 +614,26 @@ void LLPanelGroupSubTab::buildActionCategory(LLScrollListCtrl* ctrl,
 		LLSD row;
 
 		row["columns"][0]["column"] = "icon";
-		row["columns"][0]["type"] = "icon";
-		
-		icon_map_t::iterator iter = mActionIcons.find("folder");
-		if (iter != mActionIcons.end())
+		icon_map_t::iterator iter = icons.find("folder");
+		if (iter != icons.end())
 		{
+			row["columns"][0]["type"] = "icon";
 			row["columns"][0]["value"] = (*iter).second;
 		}
 
 		row["columns"][1]["column"] = "action";
-		row["columns"][1]["type"] = "text";
 		row["columns"][1]["value"] = action_set->mActionSetData->mName;
 		row["columns"][1]["font"]["name"] = "SANSSERIF_SMALL";
-		
+		row["columns"][1]["font"]["style"] = "BOLD";
 
 		LLScrollListItem* title_row = ctrl->addElement(row, ADD_BOTTOM, action_set->mActionSetData);
 		
-		LLScrollListText* name_textp = dynamic_cast<LLScrollListText*>(title_row->getColumn(2)); //?? I have no idea fix getColumn(1) return column spacer...
+		LLScrollListText* name_textp = dynamic_cast<LLScrollListText*>(title_row->getColumn(1));
 		if (name_textp)
 			name_textp->setFontStyle(LLFontGL::BOLD);
 
+
+
 		bool category_matches_filter = (filter) ? matchesActionSearchFilter(action_set->mActionSetData->mName) : true;
 
 		std::vector<LLRoleAction*>::iterator ra_it = action_set->mActions.begin();
@@ -687,8 +686,8 @@ void LLPanelGroupSubTab::buildActionCategory(LLScrollListCtrl* ctrl,
 			{
 				if (show_full_strength)
 				{
-					icon_map_t::iterator iter = mActionIcons.find("full");
-					if (iter != mActionIcons.end())
+					icon_map_t::iterator iter = icons.find("full");
+					if (iter != icons.end())
 					{
 						row["columns"][column_index]["column"] = "checkbox";
 						row["columns"][column_index]["type"] = "icon";
@@ -698,8 +697,8 @@ void LLPanelGroupSubTab::buildActionCategory(LLScrollListCtrl* ctrl,
 				}
 				else
 				{
-					icon_map_t::iterator iter = mActionIcons.find("partial");
-					if (iter != mActionIcons.end())
+					icon_map_t::iterator iter = icons.find("partial");
+					if (iter != icons.end())
 					{
 						row["columns"][column_index]["column"] = "checkbox";
 						row["columns"][column_index]["type"] = "icon";
@@ -793,8 +792,6 @@ LLPanelGroupMembersSubTab::~LLPanelGroupMembersSubTab()
 
 BOOL LLPanelGroupMembersSubTab::postBuildSubTab(LLView* root)
 {
-	LLPanelGroupSubTab::postBuildSubTab(root);
-	
 	// Upcast parent so we can ask it for sibling controls.
 	LLPanelGroupRoles* parent = (LLPanelGroupRoles*) root;
 
@@ -891,6 +888,7 @@ void LLPanelGroupMembersSubTab::handleMemberSelect()
 	buildActionsList(mAllowedActionsList,
 					 allowed_by_some,
 					 allowed_by_all,
+					 mActionIcons,
 					 NULL,
 					 FALSE,
 					 FALSE,
@@ -1213,6 +1211,7 @@ void LLPanelGroupMembersSubTab::handleRoleCheck(const LLUUID& role_id,
 	buildActionsList(mAllowedActionsList,
 					 powers_some_have,
 					 powers_all_have,
+					 mActionIcons,
 					 NULL,
 					 FALSE,
 					 FALSE,
@@ -1685,8 +1684,6 @@ LLPanelGroupRolesSubTab::~LLPanelGroupRolesSubTab()
 
 BOOL LLPanelGroupRolesSubTab::postBuildSubTab(LLView* root)
 {
-	LLPanelGroupSubTab::postBuildSubTab(root);
-
 	// Upcast parent so we can ask it for sibling controls.
 	LLPanelGroupRoles* parent = (LLPanelGroupRoles*) root;
 
@@ -1997,6 +1994,7 @@ void LLPanelGroupRolesSubTab::handleRoleSelect()
 		buildActionsList(mAllowedActionsList,
 						 rd.mRolePowers,
 						 0LL,
+						 mActionIcons,
 						 boost::bind(&LLPanelGroupRolesSubTab::handleActionCheck, this, _1, false),
 						 TRUE,
 						 FALSE,
@@ -2383,8 +2381,6 @@ LLPanelGroupActionsSubTab::~LLPanelGroupActionsSubTab()
 
 BOOL LLPanelGroupActionsSubTab::postBuildSubTab(LLView* root)
 {
-	LLPanelGroupSubTab::postBuildSubTab(root);
-
 	// Upcast parent so we can ask it for sibling controls.
 	LLPanelGroupRoles* parent = (LLPanelGroupRoles*) root;
 
@@ -2452,6 +2448,7 @@ void LLPanelGroupActionsSubTab::update(LLGroupChange gc)
 	buildActionsList(mActionList,
 					 GP_ALL_POWERS,
 					 GP_ALL_POWERS,
+					 mActionIcons,
 					 NULL,
 					 FALSE,
 					 TRUE,
diff --git a/indra/newview/llpanelgrouproles.h b/indra/newview/llpanelgrouproles.h
index 2f81900e609..bb3c9096cf4 100644
--- a/indra/newview/llpanelgrouproles.h
+++ b/indra/newview/llpanelgrouproles.h
@@ -108,7 +108,7 @@ class LLPanelGroupSubTab : public LLPanelGroupTab
 	virtual BOOL postBuild();
 
 	// This allows sub-tabs to collect child widgets from a higher level in the view hierarchy.
-	virtual BOOL postBuildSubTab(LLView* root);
+	virtual BOOL postBuildSubTab(LLView* root) { return TRUE; }
 
 	virtual void setSearchFilter( const std::string& filter );
 
@@ -117,15 +117,10 @@ class LLPanelGroupSubTab : public LLPanelGroupTab
 
 	// Helper functions
 	bool matchesActionSearchFilter(std::string action);
-
-
-	void setFooterEnabled(BOOL enable);
-
-	virtual void setGroupID(const LLUUID& id);
-protected:
 	void buildActionsList(LLScrollListCtrl* ctrl,
 								 U64 allowed_by_some,
 								 U64 allowed_by_all,
+								 icon_map_t& icons,
 						  		 LLUICtrl::commit_callback_t commit_callback,
 								 BOOL show_all,
 								 BOOL filter,
@@ -134,11 +129,15 @@ class LLPanelGroupSubTab : public LLPanelGroupTab
 									U64 allowed_by_some,
 									U64 allowed_by_all,
 									LLRoleActionSet* action_set,
+									icon_map_t& icons,
 									LLUICtrl::commit_callback_t commit_callback,
 									BOOL show_all,
 									BOOL filter,
 									BOOL is_owner_role);
 
+	void setFooterEnabled(BOOL enable);
+
+	virtual void setGroupID(const LLUUID& id);
 protected:
 	LLPanel* mHeader;
 	LLPanel* mFooter;
diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp
index 0cfe501fab5..b547997e7aa 100644
--- a/indra/newview/llpanelimcontrolpanel.cpp
+++ b/indra/newview/llpanelimcontrolpanel.cpp
@@ -302,7 +302,7 @@ void LLPanelGroupControlPanel::setSessionId(const LLUUID& session_id)
 {
 	LLPanelChatControlPanel::setSessionId(session_id);
 
-	mGroupID = session_id;
+	mGroupID = LLIMModel::getInstance()->getOtherParticipantID(session_id);
 
 	// for group and Ad-hoc chat we need to include agent into list 
 	if(!mParticipantList)
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index 03cc870a595..e14a5778adc 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -35,7 +35,6 @@
 // libs
 #include "llfloaterreg.h"
 #include "llmenugl.h"
-#include "llnotificationsutil.h"
 #include "llfiltereditor.h"
 #include "lltabcontainer.h"
 #include "lluictrlfactory.h"
@@ -751,6 +750,7 @@ void LLPanelPeople::updateButtons()
 
 		LLPanel* groups_panel = mTabContainer->getCurrentPanel();
 		groups_panel->childSetEnabled("activate_btn",	item_selected && !cur_group_active); // "none" or a non-active group selected
+		groups_panel->childSetEnabled("plus_btn",		item_selected);
 		groups_panel->childSetEnabled("minus_btn",		item_selected && selected_id.notNull());
 	}
 	else
@@ -1138,12 +1138,6 @@ void LLPanelPeople::onAvatarPicked(
 
 void LLPanelPeople::onGroupPlusButtonClicked()
 {
-	if (!gAgent.canJoinGroups())
-	{
-		LLNotificationsUtil::add("JoinedTooManyGroups");
-		return;
-	}
-
 	LLMenuGL* plus_menu = (LLMenuGL*)mGroupPlusMenuHandle.get();
 	if (!plus_menu)
 		return;
diff --git a/indra/newview/llpanelpick.cpp b/indra/newview/llpanelpick.cpp
index e7615929c82..7a4dd3569d5 100644
--- a/indra/newview/llpanelpick.cpp
+++ b/indra/newview/llpanelpick.cpp
@@ -35,30 +35,24 @@
 // profile.
 
 #include "llviewerprecompiledheaders.h"
-
-#include "llpanelpick.h"
-
+#include "llpanel.h"
 #include "message.h"
-
-#include "llparcel.h"
-
+#include "llagent.h"
+#include "llagentpicksinfo.h"
 #include "llbutton.h"
-#include "llfloaterreg.h"
 #include "lliconctrl.h"
 #include "lllineeditor.h"
-#include "llpanel.h"
-#include "llscrollcontainer.h"
+#include "llparcel.h"
+#include "llviewerparcelmgr.h"
 #include "lltexteditor.h"
-
-#include "llagent.h"
-#include "llagentpicksinfo.h"
-#include "llavatarpropertiesprocessor.h"
-#include "llfloaterworldmap.h"
 #include "lltexturectrl.h"
 #include "lluiconstants.h"
-#include "llviewerparcelmgr.h"
 #include "llviewerregion.h"
 #include "llworldmap.h"
+#include "llfloaterworldmap.h"
+#include "llfloaterreg.h"
+#include "llavatarpropertiesprocessor.h"
+#include "llpanelpick.h"
 
 
 #define XML_PANEL_EDIT_PICK "panel_edit_pick.xml"
@@ -99,10 +93,6 @@ LLPanelPickInfo::LLPanelPickInfo()
  , mPickId(LLUUID::null)
  , mParcelId(LLUUID::null)
  , mRequestedId(LLUUID::null)
- , mScrollingPanelMinHeight(0)
- , mScrollingPanelWidth(0)
- , mScrollingPanel(NULL)
- , mScrollContainer(NULL)
 {
 }
 
@@ -156,35 +146,9 @@ BOOL LLPanelPickInfo::postBuild()
 	childSetAction("show_on_map_btn", boost::bind(&LLPanelPickInfo::onClickMap, this));
 	childSetAction("back_btn", boost::bind(&LLPanelPickInfo::onClickBack, this));
 
-	mScrollingPanel = getChild<LLPanel>("scroll_content_panel");
-	mScrollContainer = getChild<LLScrollContainer>("profile_scroll");
-
-	mScrollingPanelMinHeight = mScrollContainer->getScrolledViewRect().getHeight();
-	mScrollingPanelWidth = mScrollingPanel->getRect().getWidth();
-
 	return TRUE;
 }
 
-void LLPanelPickInfo::reshape(S32 width, S32 height, BOOL called_from_parent)
-{
-	LLPanel::reshape(width, height, called_from_parent);
-
-	if (!mScrollContainer || !mScrollingPanel)
-		return;
-
-	static LLUICachedControl<S32> scrollbar_size ("UIScrollbarSize", 0);
-
-	S32 scroll_height = mScrollContainer->getRect().getHeight();
-	if (mScrollingPanelMinHeight >= scroll_height)
-	{
-		mScrollingPanel->reshape(mScrollingPanelWidth, mScrollingPanelMinHeight);
-	}
-	else
-	{
-		mScrollingPanel->reshape(mScrollingPanelWidth + scrollbar_size, scroll_height);
-	}
-}
-
 void LLPanelPickInfo::processProperties(void* data, EAvatarProcessorType type)
 {
 	if(APT_PICK_INFO != type)
@@ -320,6 +284,7 @@ void LLPanelPickInfo::setPickName(const std::string& name)
 void LLPanelPickInfo::setPickDesc(const std::string& desc)
 {
 	childSetValue(XML_DESC, desc);
+	updateContentPanelRect();
 }
 
 void LLPanelPickInfo::setPickLocation(const std::string& location)
@@ -327,6 +292,31 @@ void LLPanelPickInfo::setPickLocation(const std::string& location)
 	childSetValue(XML_LOCATION, location);
 }
 
+void LLPanelPickInfo::updateContentPanelRect()
+{
+	LLTextBox* desc = getChild<LLTextBox>(XML_DESC);
+
+	S32 text_height = desc->getTextPixelHeight();
+	LLRect text_rect = desc->getRect();
+
+	// let text-box height fit text height
+	text_rect.set(text_rect.mLeft, text_rect.mTop, text_rect.mRight, text_rect.mTop - text_height);
+	desc->setRect(text_rect);
+	desc->reshape(text_rect.getWidth(), text_rect.getHeight());
+	// force reflow
+	desc->setText(desc->getText());
+
+	// bottom of description text-box will be bottom of content panel
+	desc->localRectToOtherView(desc->getLocalRect(), &text_rect, getChild<LLView>("profile_scroll"));
+
+	LLPanel* content_panel = getChild<LLPanel>("scroll_content_panel");
+	LLRect content_rect = content_panel->getRect();
+	content_rect.set(content_rect.mLeft, content_rect.mTop, content_rect.mRight, text_rect.mBottom);
+	// Somehow setRect moves all elements down.
+	// Single reshape() updates rect and does not move anything.
+	content_panel->reshape(content_rect.getWidth(), content_rect.getHeight());
+}
+
 void LLPanelPickInfo::onClickMap()
 {
 	LLFloaterWorldMap::getInstance()->trackLocation(getPosGlobal());
diff --git a/indra/newview/llpanelpick.h b/indra/newview/llpanelpick.h
index 62c3b20c0da..12b5a116b48 100644
--- a/indra/newview/llpanelpick.h
+++ b/indra/newview/llpanelpick.h
@@ -43,7 +43,6 @@
 
 class LLIconCtrl;
 class LLTextureCtrl;
-class LLScrollContainer;
 class LLMessageSystem;
 class LLAvatarPropertiesObserver;
 
@@ -70,8 +69,6 @@ class LLPanelPickInfo : public LLPanel, public LLAvatarPropertiesObserver, LLRem
 
 	/*virtual*/ BOOL postBuild();
 
-	/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
-
 	/*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
 
 	/**
@@ -142,6 +139,15 @@ class LLPanelPickInfo : public LLPanel, public LLAvatarPropertiesObserver, LLRem
 	virtual void setPosGlobal(const LLVector3d& pos) { mPosGlobal = pos; }
 	virtual LLVector3d& getPosGlobal() { return mPosGlobal; }
 
+	/**
+	 * Reshapes content panel to fit all elements.
+	 *
+	 * Assume that description text-box is the last element of panel.
+	 * Reshape text-box to fit text height and then reshape content panel to fit 
+	 * text-box bottom. EXT-1326
+	 */
+	void updateContentPanelRect();
+
 	/**
 	 * Callback for "Map" button, opens Map
 	 */
@@ -156,11 +162,7 @@ class LLPanelPickInfo : public LLPanel, public LLAvatarPropertiesObserver, LLRem
 
 protected:
 
-	S32						mScrollingPanelMinHeight;
-	S32						mScrollingPanelWidth;
-	LLScrollContainer*		mScrollContainer;
-	LLPanel*				mScrollingPanel;
-	LLTextureCtrl*			mSnapshotCtrl;
+	LLTextureCtrl* mSnapshotCtrl;
 
 	LLUUID mAvatarId;
 	LLVector3d mPosGlobal;
diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h
index b134cf0cba6..5ee87049926 100644
--- a/indra/newview/llpanelplaces.h
+++ b/indra/newview/llpanelplaces.h
@@ -71,10 +71,6 @@ class LLPanelPlaces : public LLPanel
 
 	void setItem(LLInventoryItem* item);
 
-	LLInventoryItem* getItem() { return mItem; }
-
-	std::string getPlaceInfoType() { return mPlaceInfoType; }
-
 private:
 	void onLandmarkLoaded(LLLandmark* landmark);
 	void onFilterEdit(const std::string& search_string, bool force_filter);
diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index 0a2217fc51c..65a3d9d41b9 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -550,7 +550,7 @@ void LLTeleportHistoryPanel::updateVerbs()
 
 	LLTeleportHistoryFlatItem* itemp = dynamic_cast<LLTeleportHistoryFlatItem *> (mLastSelectedFlatlList->getSelectedItem());
 
-	mTeleportBtn->setEnabled(NULL != itemp);
+	mTeleportBtn->setEnabled(NULL != itemp && itemp->getIndex() < (S32)mTeleportHistory->getItems().size() - 1);
 	mShowOnMapBtn->setEnabled(NULL != itemp);
 }
 
diff --git a/indra/newview/llpanelvolumepulldown.cpp b/indra/newview/llpanelvolumepulldown.cpp
deleted file mode 100644
index 74e37efe4e4..00000000000
--- a/indra/newview/llpanelvolumepulldown.cpp
+++ /dev/null
@@ -1,154 +0,0 @@
-/** 
- * @file llpanelvolumepulldown.cpp
- * @author Tofu Linden
- * @brief A floater showing the master volume pull-down
- *
- * $LicenseInfo:firstyear=2008&license=viewergpl$
- * 
- * Copyright (c) 2008-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 "llviewerprecompiledheaders.h"
-
-#include "llpanelvolumepulldown.h"
-
-// Viewer libs
-#include "llviewercontrol.h"
-#include "llstatusbar.h"
-
-// Linden libs
-#include "llbutton.h"
-#include "lltabcontainer.h"
-#include "llfloaterreg.h"
-#include "llfloaterpreference.h"
-#include "llslider.h"
-
-/* static */ const F32 LLPanelVolumePulldown::sAutoCloseFadeStartTimeSec = 4.0f;
-/* static */ const F32 LLPanelVolumePulldown::sAutoCloseTotalTimeSec = 5.0f;
-
-///----------------------------------------------------------------------------
-/// Class LLPanelVolumePulldown
-///----------------------------------------------------------------------------
-
-// Default constructor
-LLPanelVolumePulldown::LLPanelVolumePulldown()
-{
-    mCommitCallbackRegistrar.add("Vol.setControlFalse", boost::bind(&LLPanelVolumePulldown::setControlFalse, this, _2));
-	mCommitCallbackRegistrar.add("Vol.GoAudioPrefs", boost::bind(&LLPanelVolumePulldown::onAdvancedButtonClick, this, _2));
-	LLUICtrlFactory::instance().buildPanel(this, "panel_volume_pulldown.xml");
-}
-
-BOOL LLPanelVolumePulldown::postBuild()
-{
-	// set the initial volume-slider's position to reflect reality
-	LLSlider* volslider =  getChild<LLSlider>( "mastervolume" );
-	volslider->setValue(gSavedSettings.getF32("AudioLevelMaster"));
-
-	return LLPanel::postBuild();
-}
-
-/*virtual*/
-void LLPanelVolumePulldown::onMouseEnter(S32 x, S32 y, MASK mask)
-{
-	mHoverTimer.stop();
-	LLPanel::onMouseEnter(x,y,mask);
-}
-
-
-/*virtual*/
-void LLPanelVolumePulldown::onMouseLeave(S32 x, S32 y, MASK mask)
-{
-	mHoverTimer.start();
-	LLPanel::onMouseLeave(x,y,mask);
-}
-
-/*virtual*/ 
-void LLPanelVolumePulldown::handleVisibilityChange ( BOOL new_visibility )
-{
-	if (new_visibility)	
-	{
-		mHoverTimer.start(); // timer will be stopped when mouse hovers over panel
-		gFocusMgr.setTopCtrl(this);
-	}
-	else
-	{
-		mHoverTimer.stop();
-		gFocusMgr.setTopCtrl(NULL);
-	}
-}
-
-/*virtual*/ 
-void LLPanelVolumePulldown::onTopLost()
-{
-	setVisible(FALSE);
-}
-
-void LLPanelVolumePulldown::onAdvancedButtonClick(const LLSD& user_data)
-{
-	// close the global volume minicontrol, we're bringing up the big one
-	setVisible(FALSE);
-
-	// bring up the prefs floater
-	LLFloaterPreference* prefsfloater = dynamic_cast<LLFloaterPreference*>
-		(LLFloaterReg::showInstance("preferences"));
-	if (prefsfloater)
-	{
-		// grab the 'audio' panel from the preferences floater and
-		// bring it the front!
-		LLTabContainer* tabcontainer = prefsfloater->getChild<LLTabContainer>("pref core");
-		LLPanel* audiopanel = prefsfloater->getChild<LLPanel>("audio");
-		if (tabcontainer && audiopanel)
-		{
-			tabcontainer->selectTabPanel(audiopanel);
-		}
-	}
-}
-
-void LLPanelVolumePulldown::setControlFalse(const LLSD& user_data)
-{
-	std::string control_name = user_data.asString();
-	LLControlVariable* control = findControl(control_name);
-	
-	if (control)
-		control->set(LLSD(FALSE));
-}
-
-//virtual
-void LLPanelVolumePulldown::draw()
-{
-	F32 alpha = mHoverTimer.getStarted() 
-		? clamp_rescale(mHoverTimer.getElapsedTimeF32(), sAutoCloseFadeStartTimeSec, sAutoCloseTotalTimeSec, 1.f, 0.f)
-		: 1.0f;
-	LLViewDrawContext context(alpha);
-
-	LLPanel::draw();
-
-	if (alpha == 0.f)
-	{
-		setVisible(FALSE);
-	}
-}
-
diff --git a/indra/newview/llpanelvolumepulldown.h b/indra/newview/llpanelvolumepulldown.h
deleted file mode 100644
index 9f20caa1a8b..00000000000
--- a/indra/newview/llpanelvolumepulldown.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/** 
- * @file llpanelvolumepulldown.h
- * @author Tofu Linden
- * @brief A panel showing the master volume pull-down
- *
- * $LicenseInfo:firstyear=2008&license=viewergpl$
- * 
- * Copyright (c) 2008-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_LLPANELVOLUMEPULLDOWN_H
-#define LL_LLPANELVOLUMEPULLDOWN_H
-
-#include "linden_common.h"
-
-#include "llpanel.h"
-
-class LLFrameTimer;
-
-class LLPanelVolumePulldown : public LLPanel
-{
- public:
-	LLPanelVolumePulldown();
-	/*virtual*/ void draw();
-	/*virtual*/ void onMouseEnter(S32 x, S32 y, MASK mask);
-	/*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask);
-	/*virtual*/ void handleVisibilityChange ( BOOL new_visibility );
-	/*virtual*/ void onTopLost();
-	/*virtual*/ BOOL postBuild();
-	
- private:
-	void setControlFalse(const LLSD& user_data);
-	void onAdvancedButtonClick(const LLSD& user_data);
-
-	LLFrameTimer mHoverTimer;
-	static const F32 sAutoCloseFadeStartTimeSec;
-	static const F32 sAutoCloseTotalTimeSec;
-};
-
-
-#endif // LL_LLPANELVOLUMEPULLDOWN_H
diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp
index b6f78d08f12..e2da4c44758 100644
--- a/indra/newview/llparticipantlist.cpp
+++ b/indra/newview/llparticipantlist.cpp
@@ -166,6 +166,7 @@ void LLParticipantList::onAvatarListRefreshed(LLUICtrl* ctrl, const LLSD& param)
 				{
 					name.erase(found, moderator_indicator_len);
 					item->setName(name);
+					item->reshapeAvatarName();
 				}
 			}
 		}
@@ -187,6 +188,7 @@ void LLParticipantList::onAvatarListRefreshed(LLUICtrl* ctrl, const LLSD& param)
 					name += " ";
 					name += moderator_indicator;
 					item->setName(name);
+					item->reshapeAvatarName();
 				}
 			}
 		}
@@ -277,9 +279,6 @@ bool LLParticipantList::onModeratorUpdateEvent(LLPointer<LLOldEvents::LLEvent> e
 					mModeratorList.erase(id);
 				}
 			}
-
-			// apply changes immediately
-			onAvatarListRefreshed(mAvatarList, LLSD());
 		}
 	}
 	return true;
@@ -593,7 +592,8 @@ bool LLParticipantList::LLParticipantListMenu::enableContextMenuItem(const LLSD&
 			if (speakerp.notNull())
 			{
 				// not in voice participants can not be moderated
-				return speakerp->isInVoiceChannel();
+				return speakerp->mStatus == LLSpeaker::STATUS_VOICE_ACTIVE
+					|| speakerp->mStatus == LLSpeaker::STATUS_MUTED;
 			}
 		}
 		return false;
diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp
index 027f3daffbd..da3f1543dda 100644
--- a/indra/newview/llscreenchannel.cpp
+++ b/indra/newview/llscreenchannel.cpp
@@ -59,14 +59,17 @@ bool LLScreenChannel::mWasStartUpToastShown = false;
 // LLScreenChannelBase
 //////////////////////
 LLScreenChannelBase::LLScreenChannelBase(const LLUUID& id) :
-												mToastAlignment(NA_BOTTOM)
+												mOverflowToastPanel(NULL) 
+												,mToastAlignment(NA_BOTTOM)
 												,mCanStoreToasts(true)
 												,mHiddenToastsNum(0)
+												,mOverflowToastHidden(false)
 												,mHoveredToast(NULL)
 												,mControlHovering(false)
 												,mShowToasts(true)
 {	
 	mID = id;
+	mOverflowFormatString = LLTrans::getString("OverflowInfoChannelString");
 	mWorldViewRectConnection = gViewerWindow->setOnWorldViewRectUpdated(boost::bind(&LLScreenChannelBase::updatePositionAndSize, this, _1, _2));
 	setMouseOpaque( false );
 	setVisible(FALSE);
@@ -214,6 +217,11 @@ void LLScreenChannel::addToast(const LLToast::Params& p)
 
 	ToastElem new_toast_elem(p);
 
+	// reset HIDDEN flags for the Overflow Toast
+	mOverflowToastHidden = false;
+	if(mOverflowToastPanel)
+		mOverflowToastPanel->setIsHidden(false);
+	
 	new_toast_elem.toast->setOnFadeCallback(boost::bind(&LLScreenChannel::onToastFade, this, _1));
 	new_toast_elem.toast->setOnToastDestroyedCallback(boost::bind(&LLScreenChannel::onToastDestroyed, this, _1));
 	if(mControlHovering)
@@ -314,6 +322,8 @@ void LLScreenChannel::loadStoredToastsToChannel()
 
 	if(mStoredToastList.size() == 0)
 		return;
+	
+	mOverflowToastHidden = false;
 
 	for(it = mStoredToastList.begin(); it != mStoredToastList.end(); ++it)
 	{
@@ -334,6 +344,8 @@ void LLScreenChannel::loadStoredToastByNotificationIDToChannel(LLUUID id)
 	if( it == mStoredToastList.end() )
 		return;
 
+	mOverflowToastHidden = false;
+
 	LLToast* toast = (*it).toast;
 
 	if(toast->getVisible())
@@ -345,6 +357,7 @@ void LLScreenChannel::loadStoredToastByNotificationIDToChannel(LLUUID id)
 	toast->setIsHidden(false);
 	toast->resetTimer();
 	mToastList.push_back((*it));
+	mStoredToastList.erase(it);
 
 	redrawToasts();
 }
@@ -478,7 +491,7 @@ void LLScreenChannel::showToastsBottom()
 		if(floater && floater->overlapsScreenChannel())
 		{
 			LLRect world_rect = gViewerWindow->getWorldViewRectScaled();
-			if(toast_rect.mTop > world_rect.mTop)
+			if(toast_rect.mTop + getOverflowToastHeight() + toast_margin > world_rect.mTop)
 			{
 				break;
 			}
@@ -514,7 +527,7 @@ void LLScreenChannel::showToastsBottom()
 		}		
 	}
 
-	if(it != mToastList.rend())
+	if(it != mToastList.rend() && !mOverflowToastHidden)
 	{
 		mHiddenToastsNum = 0;
 		for(; it != mToastList.rend(); it++)
@@ -523,6 +536,7 @@ void LLScreenChannel::showToastsBottom()
 			(*it).toast->setVisible(FALSE);
 			mHiddenToastsNum++;
 		}
+		createOverflowToast(bottom, gSavedSettings.getS32("NotificationTipToastLifeTime"));
 	}
 	else
 	{
@@ -552,6 +566,94 @@ void LLScreenChannel::showToastsTop()
 {
 }
 
+//--------------------------------------------------------------------------
+void LLScreenChannel::createOverflowToast(S32 bottom, F32 timer)
+{
+	LLRect toast_rect;
+	LLToast::Params p;
+	p.lifetime_secs = timer;
+
+	if(!mOverflowToastPanel)
+		mOverflowToastPanel = new LLToast(p);
+
+	if(!mOverflowToastPanel)
+		return;
+
+	mOverflowToastPanel->startFading();
+	mOverflowToastPanel->setOnFadeCallback(boost::bind(&LLScreenChannel::onOverflowToastHide, this));
+
+	LLTextBox* text_box = mOverflowToastPanel->getChild<LLTextBox>("toast_text");
+	std::string	text = llformat(mOverflowFormatString.c_str(),mHiddenToastsNum);
+	if(mHiddenToastsNum == 1)
+	{
+		text += ".";
+	}
+	else
+	{
+		text += "s.";
+	}
+
+	toast_rect = mOverflowToastPanel->getRect();
+	mOverflowToastPanel->reshape(getRect().getWidth(), toast_rect.getHeight(), true);
+	toast_rect.setLeftTopAndSize(getRect().mLeft, bottom + toast_rect.getHeight()+gSavedSettings.getS32("ToastGap"), getRect().getWidth(), toast_rect.getHeight());	
+	mOverflowToastPanel->setRect(toast_rect);
+
+	// don't show overflow toast if there is not enough space for it.
+	LLDockableFloater* floater = dynamic_cast<LLDockableFloater*>(LLDockableFloater::getInstanceHandle().get());
+	if(floater && floater->overlapsScreenChannel())
+	{
+		LLRect world_rect = gViewerWindow->getWorldViewRectScaled();
+		if(toast_rect.mTop > world_rect.mTop)
+		{
+			closeOverflowToastPanel();
+			return;
+		}
+	}
+
+	text_box->setValue(text);
+	text_box->setVisible(TRUE);
+
+	mOverflowToastPanel->setVisible(TRUE);
+}
+
+//--------------------------------------------------------------------------
+void LLScreenChannel::onOverflowToastHide()
+{
+	mOverflowToastHidden = true;
+
+	// remove all hidden toasts from channel and save interactive notifications
+	for(std::vector<ToastElem>::iterator it = mToastList.begin(); it != mToastList.end();)
+	{
+		if(!(*it).toast->getVisible())
+		{
+			if((*it).toast->getCanBeStored())
+			{
+				storeToast((*it));
+			}
+			else
+			{
+				deleteToast((*it).toast);
+			}
+
+			it = mToastList.erase(it);
+		}
+		else
+		{
+			++it;
+		}
+	}
+}
+
+//--------------------------------------------------------------------------
+void LLScreenChannel::closeOverflowToastPanel()
+{
+	if(mOverflowToastPanel != NULL)
+	{
+		mOverflowToastPanel->setVisible(FALSE);
+		mOverflowToastPanel->stopFading();
+	}
+}
+
 //--------------------------------------------------------------------------
 void LLScreenChannel::createStartUpToast(S32 notif_num, F32 timer)
 {
@@ -597,6 +699,24 @@ F32 LLScreenChannel::getHeightRatio()
 	return ratio;
 }
 
+S32 LLScreenChannel::getOverflowToastHeight()
+{
+	if(mOverflowToastPanel)
+	{
+		return mOverflowToastPanel->getRect().getHeight();
+	}
+
+	static S32 height = 0;
+	if(0 == height)
+	{
+		LLToast::Params p;
+		LLToast* toast = new LLToast(p);
+		height = toast->getRect().getHeight();
+		delete toast;
+	}
+	return height;
+}
+
 //--------------------------------------------------------------------------
 void LLScreenChannel::updateStartUpString(S32 num)
 {
@@ -658,19 +778,6 @@ void LLScreenChannel::hideToastsFromScreen()
 		(*it).toast->setVisible(FALSE);
 }
 
-//--------------------------------------------------------------------------
-void LLScreenChannel::hideToast(const LLUUID& notification_id)
-{
-	std::vector<ToastElem>::iterator it = find(mToastList.begin(), mToastList.end(), notification_id);
-	if(mToastList.end() != it)
-	{
-		ToastElem te = *it;
-		te.toast->setVisible(FALSE);
-		te.toast->stopTimer();
-		mToastList.erase(it);
-	}
-}
-
 //--------------------------------------------------------------------------
 void LLScreenChannel::removeToastsFromChannel()
 {
@@ -789,13 +896,3 @@ void LLScreenChannel::updateShowToastsState()
 
 //--------------------------------------------------------------------------
 
-LLToast* LLScreenChannel::getToastByNotificationID(LLUUID id)
-{
-	std::vector<ToastElem>::iterator it = find(mStoredToastList.begin(),
-			mStoredToastList.end(), id);
-
-	if (it == mStoredToastList.end())
-		return NULL;
-
-	return it->toast;
-}
diff --git a/indra/newview/llscreenchannel.h b/indra/newview/llscreenchannel.h
index 88053d87d9d..38f27f756b6 100644
--- a/indra/newview/llscreenchannel.h
+++ b/indra/newview/llscreenchannel.h
@@ -72,7 +72,8 @@ class LLScreenChannelBase : public LLUICtrl
 	virtual void		setToastAlignment(EToastAlignment align) {mToastAlignment = align;}
 	
 	virtual void		setChannelAlignment(EChannelAlignment align) {mChannelAlignment = align;}
-
+	virtual void		setOverflowFormatString ( const std::string& str)  { mOverflowFormatString = str; }
+	
 	// kill or modify a toast by its ID
 	virtual void		killToastByNotificationID(LLUUID id) {};
 	virtual void		modifyToastNotificationByID(LLUUID id, LLSD data) {};
@@ -120,13 +121,17 @@ class LLScreenChannelBase : public LLUICtrl
 	LLToast*		mHoveredToast;
 	bool		mCanStoreToasts;
 	bool		mDisplayToastsAlways;
+	bool		mOverflowToastHidden;
 	// controls whether a channel shows toasts or not
 	bool		mShowToasts;
 	// 
 	EToastAlignment		mToastAlignment;
 	EChannelAlignment	mChannelAlignment;
 
+	// attributes for the Overflow Toast
 	S32			mHiddenToastsNum;
+	LLToast*	mOverflowToastPanel;	
+	std::string mOverflowFormatString;
 
 	// channel's ID
 	LLUUID	mID;
@@ -171,8 +176,6 @@ class LLScreenChannel : public LLScreenChannelBase
 	void		modifyToastByNotificationID(LLUUID id, LLPanel* panel);
 	// hide all toasts from screen, but not remove them from a channel
 	void		hideToastsFromScreen();
-	// hide toast by notification id
-	void		hideToast(const LLUUID& notification_id);
 	// removes all toasts from a channel
 	void		removeToastsFromChannel();
 	// show all toasts in a channel
@@ -187,6 +190,8 @@ class LLScreenChannel : public LLScreenChannelBase
 	void		removeToastsBySessionID(LLUUID id);
 	// remove all storable toasts from screen and store them
 	void		removeAndStoreAllStorableToasts();
+	// close the Overflow Toast
+	void 		closeOverflowToastPanel();
 	// close the StartUp Toast
 	void		closeStartUpToast();
 
@@ -209,8 +214,6 @@ class LLScreenChannel : public LLScreenChannelBase
 	// update number of notifications in the StartUp Toast
 	void	updateStartUpString(S32 num);
 
-	LLToast* getToastByNotificationID(LLUUID id);
-
 	// Channel's signals
 	// signal on storing of faded toasts event
 	typedef boost::function<void (LLPanel* info_panel, const LLUUID id)> store_tost_callback_t;
@@ -254,6 +257,7 @@ class LLScreenChannel : public LLScreenChannelBase
 	void	onToastHover(LLToast* toast, bool mouse_enter);
 	void	onToastFade(LLToast* toast);
 	void	onToastDestroyed(LLToast* toast);
+	void	onOverflowToastHide();
 	void	onStartUpToastHide();
 
 	//
@@ -266,6 +270,9 @@ class LLScreenChannel : public LLScreenChannelBase
 	void	showToastsCentre();
 	void	showToastsTop();
 	
+	// create the Overflow Toast
+	void	createOverflowToast(S32 bottom, F32 timer);
+
 	// create the StartUp Toast
 	void	createStartUpToast(S32 notif_num, F32 timer);
 
@@ -274,6 +281,8 @@ class LLScreenChannel : public LLScreenChannelBase
 	 */
 	static F32 getHeightRatio();
 
+	S32 getOverflowToastHeight();
+
 	// Channel's flags
 	static bool	mWasStartUpToastShown;
 
diff --git a/indra/newview/llspeakers.cpp b/indra/newview/llspeakers.cpp
index 0dd9203c6d9..010dfd1b331 100644
--- a/indra/newview/llspeakers.cpp
+++ b/indra/newview/llspeakers.cpp
@@ -88,11 +88,6 @@ void LLSpeaker::onAvatarNameLookup(const LLUUID& id, const std::string& first, c
 	mDisplayName = first + " " + last;
 }
 
-bool LLSpeaker::isInVoiceChannel()
-{
-	return mStatus == LLSpeaker::STATUS_VOICE_ACTIVE || mStatus == LLSpeaker::STATUS_MUTED;
-}
-
 LLSpeakerUpdateModeratorEvent::LLSpeakerUpdateModeratorEvent(LLSpeaker* source)
 : LLEvent(source, "Speaker add moderator event"),
   mSpeakerID (source->mID),
diff --git a/indra/newview/llspeakers.h b/indra/newview/llspeakers.h
index da8dfdf548e..1a8c23f56a2 100644
--- a/indra/newview/llspeakers.h
+++ b/indra/newview/llspeakers.h
@@ -67,8 +67,6 @@ class LLSpeaker : public LLRefCount, public LLOldEvents::LLObservable, public LL
 
 	void onAvatarNameLookup(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group);
 
-	bool isInVoiceChannel();
-
 	ESpeakerStatus	mStatus;			// current activity status in speech group
 	F32				mLastSpokeTime;		// timestamp when this speaker last spoke
 	F32				mSpeechVolume;		// current speech amplitude (timea average rms amplitude?)
diff --git a/indra/newview/llspeakingindicatormanager.cpp b/indra/newview/llspeakingindicatormanager.cpp
deleted file mode 100644
index 42db6bf9c3f..00000000000
--- a/indra/newview/llspeakingindicatormanager.cpp
+++ /dev/null
@@ -1,254 +0,0 @@
-/** 
- * @file llspeakingindicatormanager.cpp
- * @author Mike Antipov
- * @brief Implementation of SpeackerIndicatorManager class to process registered LLSpeackerIndicator
- * depend on avatars are in the same voice channel.
- *
- * $LicenseInfo:firstyear=2010&license=viewergpl$
- * 
- * Copyright (c) 2010, 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 "llviewerprecompiledheaders.h"
-#include "llspeakingindicatormanager.h"
-
-
-#include "llagentdata.h"
-#include "llvoicechannel.h"
-#include "llvoiceclient.h"
-
-/**
- * This class intended to control visibility of avatar speaking indicators depend on whether avatars
- * are in the same voice channel.
- *
- * Speaking indicator should be visible for avatars in the same voice channel. See EXT-3976.
- *
- * It stores passed instances of LLOutputMonitorCtrl in a multimap by avatar LLUUID.
- * It observes changing of voice channel and changing of participant list in voice channel.
- * When voice channel or voice participant list is changed it updates visibility of an appropriate 
- * speaking indicator.
- *
- * Several indicators can be registered for the same avatar.
- */
-class SpeakingIndicatorManager : public LLSingleton<SpeakingIndicatorManager>, LLVoiceClientParticipantObserver
-{
-	LOG_CLASS(SpeakingIndicatorManager);
-public:
-
-	/**
-	 * Stores passed speaking indicator to control its visibility.
-	 *
-	 * Registered indicator is set visible if an appropriate avatar is in the same voice channel with Agent.
-	 * It ignores instances of Agent's indicator.
-	 *
-	 * @param speaker_id LLUUID of an avatar whose speaking indicator is registered.
-	 * @param speaking_indicator instance of the speaking indicator to be registered.
-	 */
-	void registerSpeakingIndicator(const LLUUID& speaker_id, LLSpeakingIndicator* const speaking_indicator);
-
-	/**
-	 * Removes passed speaking indicator from observing.
-	 *
-	 * @param speaker_id LLUUID of an avatar whose speaking indicator should be unregistered.
-	 * @param speaking_indicator instance of the speaking indicator to be unregistered.
-	 */
-	void unregisterSpeakingIndicator(const LLUUID& speaker_id, const LLSpeakingIndicator* const speaking_indicator);
-
-private:
-	typedef std::set<LLUUID> speaker_ids_t;
-	typedef std::multimap<LLUUID, LLSpeakingIndicator*> speaking_indicators_mmap_t;
-	typedef speaking_indicators_mmap_t::value_type speaking_indicator_value_t;
-	typedef speaking_indicators_mmap_t::const_iterator indicator_const_iterator;
-	typedef std::pair<indicator_const_iterator, indicator_const_iterator> indicator_range_t;
-
-	friend class LLSingleton<SpeakingIndicatorManager>;
-	SpeakingIndicatorManager();
-	~SpeakingIndicatorManager();
-
-	/**
-	 * Callback to determine when voice channel is changed.
-	 *
-	 * It switches all registered speaking indicators off.
-	 * To reduce overheads only switched on indicators are processed.
-	 */
-	void sOnCurrentChannelChanged(const LLUUID& session_id);
-
-	/**
-	 * Callback of changing voice participant list (from LLVoiceClientParticipantObserver).
-	 *
-	 * Switches off indicators had been switched on and switches on indicators of current participants list.
-	 * There is only a few indicators in lists should be switched off/on.
-	 * So, method does not calculate difference between these list it only switches off already 
-	 * switched on indicators and switches on indicators of voice channel participants
-	 */
-	void onChange();
-
-	/**
-	 * Changes state of indicators specified by LLUUIDs
-	 *
-	 * @param speakers_uuids - avatars' LLUUIDs whose speaking indicators should be switched
-	 * @param switch_on - if TRUE specified indicator will be switched on, off otherwise.
-	 */
-	void switchSpeakerIndicators(const speaker_ids_t& speakers_uuids, BOOL switch_on);
-
-	/**
-	 * Multimap with all registered speaking indicators
-	 */
-	speaking_indicators_mmap_t mSpeakingIndicators;
-
-	/**
-	 * LUUIDs of avatar for which we have speaking indicators switched on.
-	 *
-	 * Is used to switch off all previously ON indicators when voice participant list is changed.
-	 *
-	 * @see onChange()
-	 */
-	speaker_ids_t mSwitchedIndicatorsOn;
-};
-
-//////////////////////////////////////////////////////////////////////////
-// PUBLIC SECTION
-//////////////////////////////////////////////////////////////////////////
-void SpeakingIndicatorManager::registerSpeakingIndicator(const LLUUID& speaker_id, LLSpeakingIndicator* const speaking_indicator)
-{
-	if (speaker_id == gAgentID) return;
-
-	LL_DEBUGS("SpeakingIndicator") << "Registering indicator: " << speaker_id << LL_ENDL;
-	speaking_indicator_value_t value_type(speaker_id, speaking_indicator);
-	mSpeakingIndicators.insert(value_type);
-
-	speaker_ids_t speakers_uuids;
-	BOOL is_in_same_voice = LLVoiceClient::getInstance()->findParticipantByID(speaker_id) != NULL;
-
-	speakers_uuids.insert(speaker_id);
-	switchSpeakerIndicators(speakers_uuids, is_in_same_voice);
-}
-
-void SpeakingIndicatorManager::unregisterSpeakingIndicator(const LLUUID& speaker_id, const LLSpeakingIndicator* const speaking_indicator)
-{
-	speaking_indicators_mmap_t::iterator it;
-	it = mSpeakingIndicators.find(speaker_id);
-	for (;it != mSpeakingIndicators.end(); ++it)
-	{
-		if (it->second == speaking_indicator)
-		{
-			mSpeakingIndicators.erase(it);
-			break;
-		}
-	}
-}
-
-//////////////////////////////////////////////////////////////////////////
-// PRIVATE SECTION
-//////////////////////////////////////////////////////////////////////////
-SpeakingIndicatorManager::SpeakingIndicatorManager()
-{
-	LLVoiceChannel::setCurrentVoiceChannelChangedCallback(boost::bind(&SpeakingIndicatorManager::sOnCurrentChannelChanged, this, _1));
-	LLVoiceClient::getInstance()->addObserver(this);
-}
-
-SpeakingIndicatorManager::~SpeakingIndicatorManager()
-{
-	// Don't use LLVoiceClient::getInstance() here without check
-	// singleton MAY have already been destroyed.
-	if(LLVoiceClient::instanceExists())
-	{
-		LLVoiceClient::getInstance()->removeObserver(this);
-	}
-}
-
-void SpeakingIndicatorManager::sOnCurrentChannelChanged(const LLUUID& /*session_id*/)
-{
-	switchSpeakerIndicators(mSwitchedIndicatorsOn, FALSE);
-	mSwitchedIndicatorsOn.clear();
-}
-
-void SpeakingIndicatorManager::onChange()
-{
-	LL_DEBUGS("SpeakingIndicator") << "Voice participant list was changed, updating indicators" << LL_ENDL;
-
-	speaker_ids_t speakers_uuids;
-	LLVoiceClient::getInstance()->getParticipantsUUIDSet(speakers_uuids);
-
-	LL_DEBUGS("SpeakingIndicator") << "Switching all OFF, count: " << mSwitchedIndicatorsOn.size() << LL_ENDL;
-	// switch all indicators off
-	switchSpeakerIndicators(mSwitchedIndicatorsOn, FALSE);
-	mSwitchedIndicatorsOn.clear();
-
-	LL_DEBUGS("SpeakingIndicator") << "Switching all ON, count: " << speakers_uuids.size() << LL_ENDL;
-	// then switch current voice participants indicators on
-	switchSpeakerIndicators(speakers_uuids, TRUE);
-}
-
-void SpeakingIndicatorManager::switchSpeakerIndicators(const speaker_ids_t& speakers_uuids, BOOL switch_on)
-{
-	speaker_ids_t::const_iterator it_uuid = speakers_uuids.begin(); 
-	for (; it_uuid != speakers_uuids.end(); ++it_uuid)
-	{
-		LL_DEBUGS("SpeakingIndicator") << "Looking for indicator: " << *it_uuid << LL_ENDL;
-		indicator_range_t it_range = mSpeakingIndicators.equal_range(*it_uuid);
-		indicator_const_iterator it_indicator = it_range.first;
-		bool was_found = false;
-		for (; it_indicator != it_range.second; ++it_indicator)
-		{
-			was_found = true;
-			LLSpeakingIndicator* indicator = (*it_indicator).second;
-			indicator->switchIndicator(switch_on);
-		}
-
-		if (was_found)
-		{
-			LL_DEBUGS("SpeakingIndicator") << mSpeakingIndicators.count(*it_uuid) << " indicators where found" << LL_ENDL;
-
-			if (switch_on)
-			{
-				// store switched on indicator to be able switch it off
-				mSwitchedIndicatorsOn.insert(*it_uuid);
-			}
-		}
-		else
-		{
-			LL_WARNS("SpeakingIndicator") << "indicator was not found among registered: " << *it_uuid << LL_ENDL;
-		}
-	}
-}
-
-/************************************************************************/
-/*         LLSpeakingIndicatorManager namespace implementation          */
-/************************************************************************/
-
-void LLSpeakingIndicatorManager::registerSpeakingIndicator(const LLUUID& speaker_id, LLSpeakingIndicator* const speaking_indicator)
-{
-	SpeakingIndicatorManager::instance().registerSpeakingIndicator(speaker_id, speaking_indicator);
-}
-
-void LLSpeakingIndicatorManager::unregisterSpeakingIndicator(const LLUUID& speaker_id, const LLSpeakingIndicator* const speaking_indicator)
-{
-	SpeakingIndicatorManager::instance().unregisterSpeakingIndicator(speaker_id, speaking_indicator);
-}
-
-// EOF
-
diff --git a/indra/newview/llspeakingindicatormanager.h b/indra/newview/llspeakingindicatormanager.h
deleted file mode 100644
index ce0158f7d86..00000000000
--- a/indra/newview/llspeakingindicatormanager.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/** 
- * @file llspeakingindicatormanager.h
- * @author Mike Antipov
- * @brief Interfeace of LLSpeackerIndicator class to be processed depend on avatars are in the same voice channel.
- * Also register/unregister methods for this class are declared
- *
- * $LicenseInfo:firstyear=2010&license=viewergpl$
- * 
- * Copyright (c) 2010, 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_LLSPEAKINGINDICATORMANAGER_H
-#define LL_LLSPEAKINGINDICATORMANAGER_H
-
-class LLSpeakingIndicator
-{
-public:
-	virtual void switchIndicator(bool switch_on) = 0;
-};
-
-// See EXT-3976.
-namespace LLSpeakingIndicatorManager
-{
-	/**
-	 * Stores passed speaking indicator to control its visibility.
-	 *
-	 * Registered indicator is set visible if an appropriate avatar is in the same voice channel with Agent.
-	 * It ignores instances of Agent's indicator.
-	 *
-	 * @param speaker_id LLUUID of an avatar whose speaker indicator is registered.
-	 * @param speaking_indicator instance of the speaker indicator to be registered.
-	 */
-	void registerSpeakingIndicator(const LLUUID& speaker_id, LLSpeakingIndicator* const speaking_indicator);
-
-	/**
-	 * Removes passed speaking indicator from observing.
-	 *
-	 * @param speaker_id LLUUID of an avatar whose speaker indicator should be unregistered.
-	 * @param speaking_indicator instance of the speaker indicator to be unregistered.
-	 */
-	void unregisterSpeakingIndicator(const LLUUID& speaker_id, const LLSpeakingIndicator* const speaking_indicator);
-}
-
-#endif // LL_LLSPEAKINGINDICATORMANAGER_H
diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp
index b3b2b9ee5d5..5ce3bbb9f62 100644
--- a/indra/newview/llstatusbar.cpp
+++ b/indra/newview/llstatusbar.cpp
@@ -42,7 +42,7 @@
 #include "llfloaterbuycurrency.h"
 #include "llfloaterchat.h"
 #include "llfloaterlagmeter.h"
-#include "llpanelvolumepulldown.h"
+#include "llfloatervolumepulldown.h"
 #include "llfloaterregioninfo.h"
 #include "llfloaterscriptdebug.h"
 #include "llhudicon.h"
@@ -204,21 +204,6 @@ LLStatusBar::LLStatusBar(const LLRect& rect)
 	addChild(mSGPacketLoss);
 
 	childSetActionTextbox("stat_btn", onClickStatGraph);
-
-	mPanelVolumePulldown = new LLPanelVolumePulldown();
-	addChild(mPanelVolumePulldown);
-
-	LLRect volume_pulldown_rect = mPanelVolumePulldown->getRect();
-	LLButton* volbtn =  getChild<LLButton>( "volume_btn" );
-	volume_pulldown_rect.setLeftTopAndSize(volbtn->getRect().mLeft -
-	     (volume_pulldown_rect.getWidth() - volbtn->getRect().getWidth())/2,
-			       volbtn->calcScreenRect().mBottom,
-			       volume_pulldown_rect.getWidth(),
-			       volume_pulldown_rect.getHeight());
-
-	mPanelVolumePulldown->setShape(volume_pulldown_rect);
-	mPanelVolumePulldown->setFollows(FOLLOWS_TOP|FOLLOWS_RIGHT);
-	mPanelVolumePulldown->setVisible(FALSE);
 }
 
 LLStatusBar::~LLStatusBar()
@@ -516,7 +501,7 @@ static void onClickScriptDebug(void*)
 void LLStatusBar::onMouseEnterVolume(LLUICtrl* ctrl)
 {
 	// show the master volume pull-down
-	gStatusBar->mPanelVolumePulldown->setVisible(TRUE);
+	LLFloaterReg::showInstance("volume_pulldown");
 }
 
 static void onClickVolume(void* data)
diff --git a/indra/newview/llstatusbar.h b/indra/newview/llstatusbar.h
index 0e98da0fe45..f77cc1acb86 100644
--- a/indra/newview/llstatusbar.h
+++ b/indra/newview/llstatusbar.h
@@ -112,7 +112,7 @@ class LLStatusBar
 	S32				mSquareMetersCommitted;
 	LLFrameTimer*	mBalanceTimer;
 	LLFrameTimer*	mHealthTimer;
-	LLPanelVolumePulldown* mPanelVolumePulldown;
+		
 	static std::vector<std::string> sDays;
 	static std::vector<std::string> sMonths;
 	static const U32 MAX_DATE_STRING_LENGTH;
diff --git a/indra/newview/llsyswellitem.cpp b/indra/newview/llsyswellitem.cpp
index 0cfcfdc6345..eef84350064 100644
--- a/indra/newview/llsyswellitem.cpp
+++ b/indra/newview/llsyswellitem.cpp
@@ -77,11 +77,10 @@ void LLSysWellItem::onClickCloseBtn()
 //---------------------------------------------------------------------------------
 BOOL LLSysWellItem::handleMouseDown(S32 x, S32 y, MASK mask)
 {
-	BOOL res = LLPanel::handleMouseDown(x, y, mask);
 	if(!mCloseBtn->getRect().pointInRect(x, y))
 		mOnItemClick(this);
 
-	return res;
+	return LLPanel::handleMouseDown(x, y, mask);
 }
 
 //---------------------------------------------------------------------------------
diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp
index ba15053381c..44cf82540a0 100644
--- a/indra/newview/llsyswellwindow.cpp
+++ b/indra/newview/llsyswellwindow.cpp
@@ -700,7 +700,8 @@ void LLNotificationWellWindow::connectListUpdaterToSignal(std::string notificati
 void LLNotificationWellWindow::onItemClick(LLSysWellItem* item)
 {
 	LLUUID id = item->getID();
-	LLFloaterReg::showInstance("inspect_toast", id);
+	if(mChannel)
+		mChannel->loadStoredToastByNotificationIDToChannel(id);
 }
 
 void LLNotificationWellWindow::onItemClose(LLSysWellItem* item)
diff --git a/indra/newview/llsyswellwindow.h b/indra/newview/llsyswellwindow.h
index 0c81d1f369b..ded3abcbf40 100644
--- a/indra/newview/llsyswellwindow.h
+++ b/indra/newview/llsyswellwindow.h
@@ -162,9 +162,6 @@ class LLNotificationWellWindow : public LLSysWellWindow
 	void onItemClick(LLSysWellItem* item);
 	void onItemClose(LLSysWellItem* item);
 
-	// ID of a toast loaded by user (by clicking notification well item)
-	LLUUID mLoadedToastId;
-
 };
 
 /**
diff --git a/indra/newview/llteleporthistorystorage.cpp b/indra/newview/llteleporthistorystorage.cpp
index c635f914239..d3bbda1c72c 100644
--- a/indra/newview/llteleporthistorystorage.cpp
+++ b/indra/newview/llteleporthistorystorage.cpp
@@ -246,6 +246,13 @@ void LLTeleportHistoryStorage::goToItem(S32 idx)
 		dump();
 		return;
 	}
+	
+	if (idx == (S32)mItems.size() - 1)
+	{
+		llwarns << "Will not teleport to the same location." << llendl;
+		dump();
+		return;
+	}
 
 	// Attempt to teleport to the requested item.
 	gAgent.teleportViaLocation(mItems[idx].mGlobalPos);
diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp
index d0c125eb771..766cf83a012 100644
--- a/indra/newview/lltoastnotifypanel.cpp
+++ b/indra/newview/lltoastnotifypanel.cpp
@@ -179,9 +179,7 @@ void LLToastNotifyPanel::adjustPanelForScriptNotice(const LLNotificationFormPtr
 	//adjust layout
 	LLRect button_rect = mControlPanel->getRect();
 	reshape(getRect().getWidth(), mInfoPanel->getRect().getHeight() + button_panel_height);
-	button_rect.set(0, button_rect.mBottom + button_panel_height, button_rect.getWidth(), button_rect.mBottom);
 	mControlPanel->reshape(button_rect.getWidth(), button_panel_height);
-	mControlPanel->setRect(button_rect);
 }
 
 // static
@@ -219,7 +217,7 @@ LLButton* LLToastNotifyPanel::addButton(const std::string& name, const std::stri
 	S32 ignore_pad = 0;
 	S32 button_index = mNumButtons;
 	S32 index = button_index;
-	S32 x = HPAD * 2; // *2 - to make a nice offset
+	S32 x = (HPAD * 4) + 32;
 
 	if (mIsScriptDialog)
 	{
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index b16134cc28e..66451f47a30 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -1005,7 +1005,7 @@ void render_hud_attachments()
 
 LLRect get_whole_screen_region()
 {
-	LLRect whole_screen = gViewerWindow->getWorldViewRectScaled();
+	LLRect whole_screen = gViewerWindow->getWindowRectScaled();
 	
 	// apply camera zoom transform (for high res screenshots)
 	F32 zoom_factor = LLViewerCamera::getInstance()->getZoomFactor();
@@ -1013,13 +1013,13 @@ LLRect get_whole_screen_region()
 	if (zoom_factor > 1.f)
 	{
 		S32 num_horizontal_tiles = llceil(zoom_factor);
-		S32 tile_width = llround((F32)gViewerWindow->getWorldViewWidthScaled() / zoom_factor);
-		S32 tile_height = llround((F32)gViewerWindow->getWorldViewHeightScaled() / zoom_factor);
+		S32 tile_width = llround((F32)gViewerWindow->getWindowWidthScaled() / zoom_factor);
+		S32 tile_height = llround((F32)gViewerWindow->getWindowHeightScaled() / zoom_factor);
 		int tile_y = sub_region / num_horizontal_tiles;
 		int tile_x = sub_region - (tile_y * num_horizontal_tiles);
 		glh::matrix4f mat;
 		
-		whole_screen.setLeftTopAndSize(tile_x * tile_width, gViewerWindow->getWorldViewHeightScaled() - (tile_y * tile_height), tile_width, tile_height);
+		whole_screen.setLeftTopAndSize(tile_x * tile_width, gViewerWindow->getWindowHeightScaled() - (tile_y * tile_height), tile_width, tile_height);
 	}
 	return whole_screen;
 }
@@ -1039,12 +1039,12 @@ bool get_hud_matrices(const LLRect& screen_region, glh::matrix4f &proj, glh::mat
 		F32 aspect_ratio = LLViewerCamera::getInstance()->getAspect();
 		
 		glh::matrix4f mat;
-		F32 scale_x = (F32)gViewerWindow->getWorldViewWidthScaled() / (F32)screen_region.getWidth();
-		F32 scale_y = (F32)gViewerWindow->getWorldViewHeightScaled() / (F32)screen_region.getHeight();
+		F32 scale_x = (F32)gViewerWindow->getWindowWidthScaled() / (F32)screen_region.getWidth();
+		F32 scale_y = (F32)gViewerWindow->getWindowHeightScaled() / (F32)screen_region.getHeight();
 		mat.set_scale(glh::vec3f(scale_x, scale_y, 1.f));
 		mat.set_translate(
-			glh::vec3f(clamp_rescale((F32)screen_region.getCenterX(), 0.f, (F32)gViewerWindow->getWorldViewWidthScaled(), 0.5f * scale_x * aspect_ratio, -0.5f * scale_x * aspect_ratio),
-					   clamp_rescale((F32)screen_region.getCenterY(), 0.f, (F32)gViewerWindow->getWorldViewHeightScaled(), 0.5f * scale_y, -0.5f * scale_y),
+			glh::vec3f(clamp_rescale((F32)screen_region.getCenterX(), 0.f, (F32)gViewerWindow->getWindowWidthScaled(), 0.5f * scale_x * aspect_ratio, -0.5f * scale_x * aspect_ratio),
+					   clamp_rescale((F32)screen_region.getCenterY(), 0.f, (F32)gViewerWindow->getWindowHeightScaled(), 0.5f * scale_y, -0.5f * scale_y),
 					   0.f));
 		proj *= mat;
 		
@@ -1294,8 +1294,8 @@ void render_ui_2d()
 	if (gAgent.getAvatarObject() && gAgent.mHUDCurZoom < 0.98f)
 	{
 		glPushMatrix();
-		S32 half_width = (gViewerWindow->getWorldViewWidthScaled() / 2);
-		S32 half_height = (gViewerWindow->getWorldViewHeightScaled() / 2);
+		S32 half_width = (gViewerWindow->getWindowWidthScaled() / 2);
+		S32 half_height = (gViewerWindow->getWindowHeightScaled() / 2);
 		glScalef(LLUI::sGLScaleFactor.mV[0], LLUI::sGLScaleFactor.mV[1], 1.f);
 		glTranslatef((F32)half_width, (F32)half_height, 0.f);
 		F32 zoom = gAgent.mHUDCurZoom;
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index 0edd4ac0256..801c2d0fd24 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -107,6 +107,7 @@
 #include "llfloateruipreview.h"
 #include "llfloaterurldisplay.h"
 #include "llfloatervoicedevicesettings.h"
+#include "llfloatervolumepulldown.h"
 #include "llfloaterwater.h"
 #include "llfloaterwhitelistentry.h"
 #include "llfloaterwindlight.h"
@@ -117,7 +118,6 @@
 #include "llinspectgroup.h"
 #include "llinspectobject.h"
 #include "llinspectremoteobject.h"
-#include "llinspecttoast.h"
 #include "llmediaremotectrl.h"
 #include "llmoveview.h"
 #include "llnearbychat.h"
@@ -189,7 +189,6 @@ void LLViewerFloaterReg::registerFloaters()
 	LLInspectGroupUtil::registerFloater();
 	LLInspectObjectUtil::registerFloater();
 	LLInspectRemoteObjectUtil::registerFloater();
-	LLNotificationsUI::registerFloater();
 	
 	LLFloaterReg::add("lagmeter", "floater_lagmeter.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLagMeter>);
 	LLFloaterReg::add("land_holdings", "floater_land_holdings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLandHoldings>);
@@ -261,7 +260,7 @@ void LLViewerFloaterReg::registerFloaters()
 	LLFloaterReg::add("upload_image", "floater_image_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterImagePreview>, "upload");
 	LLFloaterReg::add("upload_sound", "floater_sound_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSoundPreview>, "upload");
 	LLFloaterReg::add("upload_model", "floater_model_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterModelPreview>, "upload");
-
+	LLFloaterReg::add("volume_pulldown", "floater_volume_pulldown.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterVolumePulldown>);
 	LLFloaterReg::add("voice_controls", "floater_voice_controls.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLCallFloater>);
 	
 	LLFloaterReg::add("whitelist_entry", "floater_whitelist_entry.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWhiteListEntry>);	
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 43c75748300..42c45589c08 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -904,19 +904,7 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f
 						LLPanelPlaces *places_panel = dynamic_cast<LLPanelPlaces*>(LLSideTray::getInstance()->showPanel("panel_places", LLSD()));
 						if (places_panel)
 						{
-							// we are creating a landmark
-							if("create_landmark" == places_panel->getPlaceInfoType() && !places_panel->getItem())
-							{
-								places_panel->setItem(item);
-							}
-							// we are opening a group notice attachment
-							else
-							{
-								LLSD args;
-								args["type"] = "landmark";
-								args["id"] = item_id;
-								LLSideTray::getInstance()->showPanel("panel_places", args);
-							}
+							places_panel->setItem(item);
 						}
 					}
 				}
@@ -1110,6 +1098,28 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&
 		gCacheName->get(mFromID, mFromGroup, boost::bind(&inventory_offer_mute_callback,_1,_2,_3,_4,this));
 	}
 
+	// *NOTE dzaporozhan
+	// Restored from viewer-1-23 to fix EXT-3520
+	// Saves Group Notice Attachments to inventory.
+	LLMessageSystem* msg = gMessageSystem;
+	msg->newMessageFast(_PREHASH_ImprovedInstantMessage);
+	msg->nextBlockFast(_PREHASH_AgentData);
+	msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
+	msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
+	msg->nextBlockFast(_PREHASH_MessageBlock);
+	msg->addBOOLFast(_PREHASH_FromGroup, FALSE);
+	msg->addUUIDFast(_PREHASH_ToAgentID, mFromID);
+	msg->addU8Fast(_PREHASH_Offline, IM_ONLINE);
+	msg->addUUIDFast(_PREHASH_ID, mTransactionID);
+	msg->addU32Fast(_PREHASH_Timestamp, NO_TIMESTAMP); // no timestamp necessary
+	std::string name;
+	LLAgentUI::buildFullname(name);
+	msg->addStringFast(_PREHASH_FromAgentName, name);
+	msg->addStringFast(_PREHASH_Message, ""); 
+	msg->addU32Fast(_PREHASH_ParentEstateID, 0);
+	msg->addUUIDFast(_PREHASH_RegionID, LLUUID::null);
+	msg->addVector3Fast(_PREHASH_Position, gAgent.getPositionAgent());
+
 	std::string from_string; // Used in the pop-up.
 	std::string chatHistory_string;  // Used in chat history.
 	
@@ -1145,10 +1155,8 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&
 				}
 			}
 			break;
-		case IM_GROUP_NOTICE:
-			send_auto_receive_response();
-			break;
 		case IM_TASK_INVENTORY_OFFERED:
+		case IM_GROUP_NOTICE:
 		case IM_GROUP_NOTICE_REQUESTED:
 			// This is an offer from a task or group.
 			// We don't use a new instance of an opener
@@ -1163,6 +1171,10 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&
 		// end switch (mIM)
 			
 	case IOR_ACCEPT:
+		msg->addU8Fast(_PREHASH_Dialog, (U8)(mIM + 1));
+		msg->addBinaryDataFast(_PREHASH_BinaryBucket, &(mFolderID.mData), sizeof(mFolderID.mData));
+		msg->sendReliable(mHost);
+
 		//don't spam them if they are getting flooded
 		if (check_offer_throttle(mFromName, true))
 		{
@@ -1185,10 +1197,7 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&
 			{
 				chat.mMuted = TRUE;
 			}
-
-			// *NOTE dzaporozhan
-			// Disabled logging to old chat floater to fix crash in group notices - EXT-4149
-			// LLFloaterChat::addChatHistory(chat);
+			LLFloaterChat::addChatHistory(chat);
 			
 			LLInventoryFetchComboObserver::folder_ref_t folders;
 			LLInventoryFetchComboObserver::item_ref_t items;
@@ -1759,9 +1768,10 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 		}
 		else if (from_id.isNull())
 		{
-			LLSD args;
-			args["MESSAGE"] = message;
-			LLNotificationsUtil::add("SystemMessage", args);
+			// Messages from "Second Life" ID don't go to IM history
+			// messages which should be routed to IM window come from a user ID with name=SYSTEM_NAME
+			chat.mText = name + ": " + message;
+			LLFloaterChat::addChat(chat, FALSE, FALSE);
 		}
 		else if (to_id.isNull())
 		{
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 33bfee798a1..9285ab94dcb 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -604,6 +604,7 @@ BOOL LLViewerWindow::handleAnyMouseClick(LLWindow *window,  LLCoordGL pos, MASK
 {
 	const char* buttonname = "";
 	const char* buttonstatestr = "";
+	BOOL handled = FALSE;	
 	S32 x = pos.mX;
 	S32 y = pos.mY;
 	x = llround((F32)x / mDisplayScale.mV[VX]);
@@ -698,10 +699,7 @@ BOOL LLViewerWindow::handleAnyMouseClick(LLWindow *window,  LLCoordGL pos, MASK
 		}
 		else
 		{
-			if (top_ctrl->pointInView(local_x, local_y) && top_ctrl->handleMouseUp(local_x, local_y, mask))
-			{
-				return TRUE;
-			}
+			handled = top_ctrl->pointInView(local_x, local_y) && top_ctrl->handleMouseUp(local_x, local_y, mask);
 		}
 	}
 
@@ -719,12 +717,34 @@ BOOL LLViewerWindow::handleAnyMouseClick(LLWindow *window,  LLCoordGL pos, MASK
 		llinfos << buttonname << " Mouse " << buttonstatestr << " not handled by view" << llendl;
 	}
 
-	// Do not allow tool manager to handle mouseclicks if we have disconnected	
-	if(!gDisconnected && LLToolMgr::getInstance()->getCurrentTool()->handleAnyMouseClick( x, y, mask, clicktype, down ) )
+	if (down)
 	{
-		return TRUE;
+		if (gDisconnected)
+		{
+			return FALSE;
+		}
+	
+		if(LLToolMgr::getInstance()->getCurrentTool()->handleAnyMouseClick( x, y, mask, clicktype, down ) )
+		{
+			return TRUE;
+		}
 	}
+	else
+	{
+		if( !handled )
+		{
+			handled = mRootView->handleAnyMouseClick(x, y, mask, clicktype, down);
+		}
 	
+		if( !handled )
+		{
+			LLTool *tool = LLToolMgr::getInstance()->getCurrentTool();
+			if (tool)
+			{
+				handled = tool->handleAnyMouseClick(x, y, mask, clicktype, down);
+			}
+		}
+	}
 
 	// If we got this far on a down-click, it wasn't handled.
 	// Up-clicks, though, are always handled as far as the OS is concerned.
diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index 42b8a1c2b6b..423c46e14c7 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -5004,17 +5004,6 @@ LLVoiceClient::participantMap *LLVoiceClient::getParticipantList(void)
 	return result;
 }
 
-void LLVoiceClient::getParticipantsUUIDSet(std::set<LLUUID>& participant_uuids)
-{
-	if (NULL == mAudioSession) return;
-
-	participantUUIDMap::const_iterator it = mAudioSession->mParticipantsByUUID.begin(),
-		it_end = mAudioSession->mParticipantsByUUID.end();
-	for (; it != it_end; ++it)
-	{
-		participant_uuids.insert((*(*it).first));
-	}
-}
 
 LLVoiceClient::participantState *LLVoiceClient::sessionState::findParticipant(const std::string &uri)
 {
diff --git a/indra/newview/llvoiceclient.h b/indra/newview/llvoiceclient.h
index 6231c6ba29f..724179847dc 100644
--- a/indra/newview/llvoiceclient.h
+++ b/indra/newview/llvoiceclient.h
@@ -354,7 +354,6 @@ static	void updatePosition(void);
 
 		participantState *findParticipantByID(const LLUUID& id);
 		participantMap *getParticipantList(void);
-		void getParticipantsUUIDSet(std::set<LLUUID>& participant_uuids);
 		
 		typedef std::map<const std::string*, sessionState*, stringMapComparitor> sessionMap;
 		typedef std::set<sessionState*> sessionSet;
diff --git a/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png b/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png
index 6343ddf035a738440af60dbc13317f33587e39db..447e0af0be61761287ef55d611d7e96428174a53 100644
GIT binary patch
delta 199
zcmV;&067210{Q`v7YYjq1^@s6Pldc<ks&C5oJmAMRCwBA{Qv(y0}43EXagiAfH)Y4
zd5~mM8SMYRfN>b%8V@oW0Lg5qCS2eM5HAE70MU4m(F3Z981My%3mN|(06S+knzIOj
zBTP^Yq-X*G6(*?FUr5w=hY9G>FJKQ74?rQi5It0z3Hc2csw~LXqnXNp7BwjG$O5%8
z4HP)#NQ!m>6|KQ%H4D^<<<OA51J$&HkVgRm3;>Z+G{?neYefJ6002ovPDHLkV1lF7
BN>u;=

delta 278
zcmV+x0qOqw0muT77YYst1^@s6A4o0Hks&C5>PbXFRCwBA{Qv(y137>ZS>xPC&)9&J
zJrFAbu`v+;0^+kkyf0Z!>Jf&<8TTJD1KF8CTmi(=I4s!##043O@;BicC*8ii6v&Pu
z!i8Ue*e6d_^&n&Cl}jKEOG)tFYamu)`SI(AABo{23dDXa-+z7MBqLBIfEvGV1(`s9
zqQ>Lkz)9b;ZVQm(O{AvjGhKqRSU@bGtr0+~1&H(UX!r}#1d0-j1Q5Dmt`?Arg<?>A
zf+GDg6wg{6kbEC&%7FpDRa1`vDIp*>-xQYp5u5ca=mH+g`aynu2gLq6q6$9}l~zds
c009O7nMqhi-AyM#00000NkvXXu0mh|f^X<`2LJ#7

diff --git a/indra/newview/skins/default/textures/bottomtray/WellButton_Lit.png b/indra/newview/skins/default/textures/bottomtray/WellButton_Lit.png
index 661d1c5611030be801d620730b1979c79e474a09..dd9133bcc463fe3303ae364bdd381ae3132f66a0 100644
GIT binary patch
delta 526
zcmaFGyplz+Gr-TCmrII^fq{Y7)59eQNGk%dI0rM3+$4GJ?L<ZOdWJs%J|V7c;c_J|
zg41#>JE9bTKvYyzM@L6cP*6@zPD)BjNJvOoS-H@WTSq~x%w4F)Uq(qusl-)KTU)y^
zLao9}q&-TxF-SVgUMSm1tUf@hE>N~TLcYpNxF=CZQBko!MYl6nqtZvpL`$hJS+5~T
zwmU(~z`#IOR<^%BS-&e@vol7uEkdz1Lb)+mF3(X&US7U6!7$T7*ic<wPfu@po^^$%
za95maXN+=Nlxlsfc}u8VwYP|{uy9wbnzXcZU65R<n^0@Gd`FT=wVzC(16R2#Ph+5X
zgTHuFuw<=|NQnzii8FUwxNMmVceR&LONg|gp<#hNXOUw)mw<r4m$Wacz#w5Q3Gxg6
z4+IRqxA6so!pPIbF{I*F&!wZHOpXE!7unK8qwm}Wg2aT+=UJ^9ULLo<zOiBDq&zN-
zNv9-M-1NM!b?MzU36I-XPN*4u$t(*vWhfB+!f3`$>xEfG2EzJI4Bdxj1{_{gq>{72
zV?IZ)&N1;6CxPx?lLZbYm8$;Om?6Vqtn-QANv8Wnufc&se-(H9(=Mw%^ebFrruo6e
z#S;$k6+U>8A>(y!g6oQxQ&JO7K8>l^bnS6j!kG_ZJ3DeVtY=_mF#EK5GEaKwe4z6g
NJYD@<);T3K0RSRgwgCVD

delta 463
zcmV;=0Wkil1nL7JiBL{Q4GJ0x0000DNk~Le0000W0000N2nGNE0BQwI;gKOHe*uh1
zL_t(|+QgMHOT$nQfbZqKBt<2Hx(MQ+TS0NDi&ZFvy0pKhn{?0Af8r!KI0;&WIyksF
zxM(LqA=275&AaElnA+-|>yd-^rtj{%dqfyxKnM{4K#g*n(w_5-gz}m4lGvY$;2WjN
z@mZyQy1%-<wgL<>91P;C^NSL(e?ujutd{Gw1Mpq%?c+U0gC<WnL80LJ&Ji&mZtkjz
zH0*#9>T5LAb{rf*EOcFE*}Do6ecQA~%|o|AB!yBC+g0{%wc8IEV>;@z0Ikum8c3OP
zRsgjRhF3t!oEe~DXwtxHKuY*y02gb(&<-H)4rCpt1q}Lq7{y~&1BvI)e+)QEqC~~I
z1H_!)0s9Dem%uWA3&<(}<}I8v@N?xg0RIfYLJcfn1XG@J9A|8R*?-0(_QVN-pcfBE
zF<k`P6C{>p68l9p8jVi3bH7(C9~S+B=d%2YH71X@-6zWyGz-~ox3|JDJc*)cGf9%A
zoV(Z5`D?4yx^6a`J&`SgB}2JP>1OA=$3LO$TN&R13;>Yp<c70)<_Q1*002ovPDHLk
FV1mZ)&r$#Y

diff --git a/indra/newview/skins/default/textures/bottomtray/WellButton_Lit_Selected.png b/indra/newview/skins/default/textures/bottomtray/WellButton_Lit_Selected.png
index f927fd3989b32ab663cdc45f238f1158ee2b0638..0080e71f4191729d2902dc07d49329c185833100 100644
GIT binary patch
delta 661
zcmV;G0&4xP0<Q%jiBL{Q4GJ0x0000DNk~Le0000X0000N2m=5B0J0g@?U5lTe*sWX
zOjJc}K^9go3m_mM2?+@-EG$(m3rHgZIwTY~A`=i05FH&IQYiybC<7uQA{-nX6%`dm
zAp%4o0wW_M3JMBcGYoJ;7FH_+Y(N%QFbi5U5LYb(X+IW6FC9}g86F-UWH}F8G7M8N
z6HF)yVKoaQ92Z$K4?-#$L@**<e>N0NHYILE8)!TdSu+x6JQOW0Em|%HVmTCNJP}GM
z3r998NH8BZArfam8#yBsRW1xS9SIl_3}iSC6ciLf9|A-z98@zFVmAzFJ{DOq3{E^Q
zTr>=9K^Rm%ElDvTQ7Q>YG9qn48CEY19~l!WDk?!A1Zh4LKQbmuG$BGOe;QFM3@jN7
zD=RBhDg+M?4^%7)8xsv?I}-~F3k(blU^^KW78WotFmgo}RX{CYI2C6(3~oRZX*>^a
zK@?~^4QxIUTQ3DMF)>&y1X?ZxUNHq-Fa-z*2+JL_;{X5v19VbOQ~&<}*UAk+0002y
zNkl<Zc-mrM;^K_X#{rnbf4P{L82D6-o!t^~08Jk`CI-%cKzofO93WPfUx<NOUC}_C
z0S6E_6J}w^_tfzhO~3&}weqtV^4%r1({KVWkO~u3!xWsr6{JGOTRsCPkOrx+v#?IZ
z2^>Kxf+8H!aRObC3N;VqWSk%hq{5s{Di0@c0jXeT%g)6KM2J)&YaoW(76p(B4uP;t
zoWKdJLXbNLCy*dY1+%FwPc}}#D4fN>8REwyhD(9I5q}l~pOvK&D=Q;bz#1Is%fi6K
v6c>XtCEMs_2?15`hQ?>%0xY~t009O7&a(liW03Bh00000NkvXXu0mjfIwiIW

delta 273
zcmV+s0q*{<1+D@iiBL{Q4GJ0x0000DNk~Le0000U0000K2m$~A02Rp^laV1Oe*n-)
zL_t(|+O(9h3c^4TL@$?(V4;GAjg=rml%W6r6N05b5Rh1T9>ipK+)E+Y?+we9k70K9
z=y+~+r+Tqk3d9*HhWGt?qy423;PLDrX6Ta2ZG9jV2qD11*+~Yesu_uZ?fm`(K+z&>
zk7j1lhz%F`=NgHf0WCZQlEJk?XKB=^neDSKHEZn$!`?LueUf@}bm2hyq{+Z0y>cD<
zK&J8~W$JY<w0GG=n8MC*jUZOC%dkc*Umv3{yzMvQy_aF6SKG}uYpN>K9ZGDUUjYUH
XIkBEHgwRw600000NkvXXu0mjf8g_O?

diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index cfa7479fa98..db60b90a930 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -224,7 +224,7 @@ with the same filename but different name
            scale.left="4" scale.top="28" scale.right="60" scale.bottom="4" />
   <texture name="Inspector_Hover" file_name="windows/Inspector_Hover.png" preload="false" />
   <texture name="Inspector_I" file_name="windows/Inspector_I.png" preload="false" />
-
+  
   <texture name="Inv_Acessories" file_name="icons/Inv_Accessories.png" preload="false" />
   <texture name="Inv_Alpha" file_name="icons/Inv_Alpha.png" preload="false" />
   <texture name="Inv_Animation" file_name="icons/Inv_Animation.png" preload="false" />
@@ -650,12 +650,6 @@ with the same filename but different name
   <texture name="PowerOff_Over" file_name="icons/PowerOff_Over.png" preload="false" />
   <texture name="PowerOff_Press" file_name="icons/PowerOff_Press.png" preload="false" />
 
-  <texture name="pixiesmall.j2c" use_mips="true" />
-  <texture name="script_error.j2c" use_mips="true" />
-  <texture name="silhouette.j2c" use_mips="true" />
-  <texture name="foot_shadow.j2c" use_mips="true" />
-  <texture name="cloud-particle.j2c" use_mips="true" />
-
   <!--WARNING OLD ART BELOW *do not use*-->
   <texture name="icn_chatbar.tga" />
   <texture name="icn_media_web.tga" preload="true" />
@@ -684,6 +678,8 @@ with the same filename but different name
 
   <texture name="toggle_button_off" file_name="toggle_button_off.png" preload="true" />
   <texture name="toggle_button_selected" file_name="toggle_button_selected.png" preload="true" />
+
+  <texture name="sm_rounded_corners_simple.tga" scale.left="4" scale.top="4" scale.bottom="4" scale.right="4" />
   <texture name="color_swatch_alpha.tga" preload="true" />
 
   <texture name="button_anim_pause.tga" />
@@ -702,6 +698,7 @@ with the same filename but different name
   <texture name="icon_event_mature.tga" />
   <texture name="icon_for_sale.tga" />
   <texture name="icon_place_for_sale.tga" />
+  <texture name="icon_popular.tga" />
   <texture name="icon_top_pick.tga" />
 
   <texture name="inv_folder_mesh.tga"/>
@@ -722,10 +719,27 @@ with the same filename but different name
   <texture name="map_telehub.tga" />
   <texture name="map_track_16.tga" />
 
+  <texture name="media_icon.tga" file_name="icn_label_media.tga" />
+  <texture name="music_icon.tga" file_name="icn_label_music.tga" />
+
+  <texture name="notify_tip_icon.tga" />
   <texture name="notify_caution_icon.tga" />
   <texture name="notify_next.png" preload="true" />
   <texture name="notify_box_icon.tga" />
 
+  <texture name="pixiesmall.j2c" use_mips="true" />
+  <texture name="script_error.j2c" use_mips="true" />
+  <texture name="silhouette.j2c" use_mips="true" />
+  <texture name="foot_shadow.j2c" use_mips="true" />
+  <texture name="cloud-particle.j2c" use_mips="true" />
+
+  <texture name="status_no_build.tga" />
+  <texture name="status_voice.tga" />
+  <texture name="status_no_fly.tga" />
+  <texture name="status_health.tga" />
+  <texture name="status_no_push.tga" />
+  <texture name="status_no_scripts.tga" />
+
   <texture name="icn_active-speakers-dot-lvl0.tga" />
   <texture name="icn_active-speakers-dot-lvl1.tga" />
   <texture name="icn_active-speakers-dot-lvl2.tga" />
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 c320e796c20..3c336cc40b0 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/ payment method] | [http://www.secondlife.com/ currency] | [http://www.secondlife.com exchange rate]
 	</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_help_browser.xml b/indra/newview/skins/default/xui/de/floater_help_browser.xml
index 2344d6f412a..53bddcced13 100644
--- a/indra/newview/skins/default/xui/de/floater_help_browser.xml
+++ b/indra/newview/skins/default/xui/de/floater_help_browser.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="floater_help_browser" title="HILFE-BROWSER">
 	<floater.string name="home_page_url">
-		http://de.secondlife.com
+		http://www.secondlife.com
 	</floater.string>
 	<floater.string name="support_page_url">
-		http://de.secondlife.com/support
+		http://support.secondlife.com
 	</floater.string>
 	<layout_stack name="stack1">
 		<layout_panel name="external_controls">
diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
index e93a38f187a..809ac33e154 100644
--- a/indra/newview/skins/default/xui/de/strings.xml
+++ b/indra/newview/skins/default/xui/de/strings.xml
@@ -166,7 +166,7 @@
 	<string name="TooltipSLAPP">
 		Anklicken, um Befehl secondlife:// auszuführen
 	</string>
-	<string name="CurrentURL" value=" CurrentURL: [CurrentURL]"/>
+	<string name="CurrentURL" value="CurrentURL: [CurrentURL]"/>
 	<string name="SLurlLabelTeleport">
 		Teleportieren nach
 	</string>
@@ -821,46 +821,46 @@
 	<string name="InventoryNoTexture">
 		Sie haben keine Kopie dieser Textur in Ihrem Inventar.
 	</string>
-	<string name="no_transfer" value=" (kein Transferieren)"/>
-	<string name="no_modify" value=" (kein Bearbeiten)"/>
-	<string name="no_copy" value=" (kein Kopieren)"/>
-	<string name="worn" value=" (getragen)"/>
-	<string name="link" value=" (Link)"/>
-	<string name="broken_link" value=" (unvollständiger_Link)"/>
+	<string name="no_transfer" value="(kein Transferieren)"/>
+	<string name="no_modify" value="(kein Bearbeiten)"/>
+	<string name="no_copy" value="(kein Kopieren)"/>
+	<string name="worn" value="(getragen)"/>
+	<string name="link" value="(Link)"/>
+	<string name="broken_link" value="(unvollständiger_Link)"/>
 	<string name="LoadingContents">
 		Inhalte werden geladen...
 	</string>
 	<string name="NoContents">
 		Keine Inhalte
 	</string>
-	<string name="WornOnAttachmentPoint" value=" (getragen am [ATTACHMENT_POINT])"/>
+	<string name="WornOnAttachmentPoint" value="(getragen am [ATTACHMENT_POINT])"/>
 	<string name="PermYes">
 		Ja
 	</string>
 	<string name="PermNo">
 		Nein
 	</string>
-	<string name="Chat" value=" Chat:"/>
-	<string name="Sound" value=" Sound:"/>
-	<string name="Wait" value=" --- Warten:"/>
-	<string name="AnimFlagStop" value=" Animation stoppen:"/>
-	<string name="AnimFlagStart" value=" Animation starten:"/>
-	<string name="Wave" value=" Winken"/>
-	<string name="HelloAvatar" value=" Hallo Avatar!"/>
-	<string name="ViewAllGestures" value="  Alle anzeigen &gt;&gt;"/>
-	<string name="Animations" value=" Animationen,"/>
-	<string name="Calling Cards" value=" Visitenkarten,"/>
-	<string name="Clothing" value=" Kleidung,"/>
-	<string name="Gestures" value=" Gesten,"/>
-	<string name="Landmarks" value=" Landmarken,"/>
-	<string name="Notecards" value=" Notizkarten,"/>
-	<string name="Objects" value=" Objekte,"/>
-	<string name="Scripts" value=" Skripts,"/>
-	<string name="Sounds" value=" Sounds,"/>
-	<string name="Textures" value=" Texturen,"/>
-	<string name="Snapshots" value=" Fotos,"/>
-	<string name="No Filters" value="Nein "/>
-	<string name="Since Logoff" value=" - Seit Abmeldung"/>
+	<string name="Chat" value="Chat:"/>
+	<string name="Sound" value="Sound:"/>
+	<string name="Wait" value="--- Warten:"/>
+	<string name="AnimFlagStop" value="Animation stoppen:"/>
+	<string name="AnimFlagStart" value="Animation starten:"/>
+	<string name="Wave" value="Winken"/>
+	<string name="HelloAvatar" value="Hallo Avatar!"/>
+	<string name="ViewAllGestures" value="Alle anzeigen &gt;&gt;"/>
+	<string name="Animations" value="Animationen,"/>
+	<string name="Calling Cards" value="Visitenkarten,"/>
+	<string name="Clothing" value="Kleidung,"/>
+	<string name="Gestures" value="Gesten,"/>
+	<string name="Landmarks" value="Landmarken,"/>
+	<string name="Notecards" value="Notizkarten,"/>
+	<string name="Objects" value="Objekte,"/>
+	<string name="Scripts" value="Skripts,"/>
+	<string name="Sounds" value="Sounds,"/>
+	<string name="Textures" value="Texturen,"/>
+	<string name="Snapshots" value="Fotos,"/>
+	<string name="No Filters" value="Nein"/>
+	<string name="Since Logoff" value="- Seit Abmeldung"/>
 	<string name="InvFolder My Inventory">
 		Mein Inventar
 	</string>
@@ -1239,13 +1239,13 @@
 	<string name="GroupsNone">
 		keine
 	</string>
-	<string name="Group" value=" (Gruppe)"/>
+	<string name="Group" value="(Gruppe)"/>
 	<string name="Unknown">
 		(unbekannt)
 	</string>
-	<string name="SummaryForTheWeek" value="Zusammenfassung für diese Woche, beginnend am "/>
-	<string name="NextStipendDay" value="Der nächste Stipendium-Tag ist "/>
-	<string name="GroupIndividualShare" value="                      Gruppenanteil       Einzelanteil"/>
+	<string name="SummaryForTheWeek" value="Zusammenfassung für diese Woche, beginnend am"/>
+	<string name="NextStipendDay" value="Der nächste Stipendium-Tag ist"/>
+	<string name="GroupIndividualShare" value="Gruppenanteil	Einzelanteil"/>
 	<string name="Balance">
 		Kontostand
 	</string>
@@ -1324,8 +1324,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>
@@ -1616,7 +1616,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.
diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml
index 9806f45bc4f..82ed1a7d7fb 100644
--- a/indra/newview/skins/default/xui/en/floater_about.xml
+++ b/indra/newview/skins/default/xui/en/floater_about.xml
@@ -112,7 +112,7 @@ Packets Lost: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number
        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.
 
-Thank you to the following Residents for helping to ensure that this is the best version yet: (in progress)
+Thank you to the following residents for helping to ensure that this is the best version yet: (in progress)
 
 
 
diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml
index 900f4c5956a..33fdd923ad2 100644
--- a/indra/newview/skins/default/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_about_land.xml
@@ -1036,7 +1036,7 @@ Leyla Linden               </text>
              name="Autoreturn"
              top="164"
              width="294">
-                Autoreturn other Residents&apos; objects (minutes, 0 for off):
+                Autoreturn other residents&apos; objects (minutes, 0 for off):
             </text>
             <line_editor
              border_style="line"
@@ -1175,7 +1175,7 @@ Only large parcels can be listed in search.
              name="allow_label"
              top="10"
              width="278">
-                Allow other Residents to:
+                Allow other residents to:
             </text>
             <check_box
              height="16"
@@ -1917,7 +1917,7 @@ Only large parcels can be listed in search.
              layout="topleft"
              left_delta="0"
              name="limit_payment"
-             tool_tip="Ban unidentified Residents."
+             tool_tip="Ban unidentified residents."
              top_pad="4"
              width="278" />
             <check_box
@@ -1927,7 +1927,7 @@ Only large parcels can be listed in search.
              layout="topleft"
              left_delta="0"
              name="limit_age_verified"
-             tool_tip="Ban Residents who have not verified their age. See the [SUPPORT_SITE] for more information."
+             tool_tip="Ban residents who have not verified their age. See the [SUPPORT_SITE] for more information."
              top_pad="4"
              width="278" />
             <check_box
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 d202bf1b9f1..86229c6691f 100644
--- a/indra/newview/skins/default/xui/en/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/en/floater_buy_currency.xml
@@ -107,7 +107,7 @@
      height="16"
      layout="topleft"
      top_delta="0"
-     left="217"
+     left="242"
      name="currency_label"
      width="15">
       L$
@@ -123,7 +123,7 @@
      label="L$"
      left_pad="3"
      name="currency_amt"
-     width="85">
+     width="60">
         1234
     </line_editor>
     <text
diff --git a/indra/newview/skins/default/xui/en/floater_customize.xml b/indra/newview/skins/default/xui/en/floater_customize.xml
index ddc0d9af729..0dc7d62b19f 100644
--- a/indra/newview/skins/default/xui/en/floater_customize.xml
+++ b/indra/newview/skins/default/xui/en/floater_customize.xml
@@ -260,9 +260,10 @@
              left="10"
              name="not worn instructions"
              top="31"
-             word_wrap="true"
              width="373">
-                Put on a new shape by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it.
+                Put on a new shape by dragging one from your inventory
+to your avatar. Alternately, you create a new one from
+scratch and wear it.
             </text>
             <text
              type="string"
@@ -273,7 +274,6 @@
              left_delta="0"
              name="no modify instructions"
              top_delta="0"
-             word_wrap="true"
              width="373">
                 You do not have permission to modify this wearable.
             </text>
@@ -300,7 +300,7 @@
              left="10"
              name="Create New"
              top="104"
-             width="160" />
+             width="140" />
             <button
              follows="right|bottom"
              height="23"
@@ -463,9 +463,10 @@
              left="10"
              name="not worn instructions"
              top="31"
-             word_wrap="true"
              width="373">
-                Put on a new skin by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it.
+                Put on a new skin by dragging one from your inventory
+to your avatar. Alternately, you create a new one from
+scratch and wear it.
             </text>
             <text
              type="string"
@@ -476,7 +477,6 @@
              left_delta="0"
              name="no modify instructions"
              top_delta="0"
-             word_wrap="true"
              width="373">
                 You do not have permission to modify this wearable.
             </text>
@@ -542,7 +542,7 @@
              left_delta="0"
              name="Create New"
              top_delta="-249"
-             width="160" />
+             width="120" />
             <button
              follows="right|bottom"
              height="23"
@@ -713,9 +713,10 @@
              left="10"
              name="not worn instructions"
              top="31"
-             word_wrap="true"
              width="373">
-                Put on a new hair by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it.
+                Put on a new hair by dragging one from your inventory
+to your avatar. Alternately, you create a new one from
+scratch and wear it.
             </text>
             <text
              type="string"
@@ -726,7 +727,6 @@
              left_delta="0"
              name="no modify instructions"
              top_delta="0"
-             word_wrap="true"
              width="373">
                 You do not have permission to modify this wearable.
             </text>
@@ -765,7 +765,7 @@
              left_delta="0"
              name="Create New"
              top_delta="-89"
-             width="160" />
+             width="120" />
             <button
              follows="right|bottom"
              height="23"
@@ -898,9 +898,10 @@
              left_delta="0"
              name="not worn instructions"
              top_pad="8"
-             word_wrap="true"
              width="373">
-                Put on a new set of eyes by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it.
+                Put on a new eyes by dragging one from your inventory
+to your avatar. Alternately, you create a new one from
+scratch and wear it.
             </text>
             <text
              type="string"
@@ -911,7 +912,6 @@
              left_delta="0"
              name="no modify instructions"
              top_delta="0"
-             word_wrap="true"
              width="373">
                 You do not have permission to modify this wearable.
             </text>
@@ -950,7 +950,7 @@
              left_delta="0"
              name="Create New"
              top_delta="39"
-             width="160" />
+             width="120" />
             <button
              follows="right|bottom"
              height="23"
@@ -1056,7 +1056,7 @@
              left_delta="0"
              name="Create New"
              top_delta="-41"
-             width="160" />
+             width="120" />
             <button
              follows="left|top"
              height="23"
@@ -1170,9 +1170,10 @@
              left_delta="0"
              name="not worn instructions"
              top_pad="8"
-             word_wrap="true"
              width="373">
-                Put on a new shirt by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it.
+                Put on a new shirt by dragging one from your inventory
+to your avatar. Alternately, you create a new one from
+scratch and wear it.
             </text>
             <text
              type="string"
@@ -1183,7 +1184,6 @@
              left_delta="0"
              name="no modify instructions"
              top_delta="0"
-             word_wrap="true"
              width="373">
                 You do not have permission to modify this wearable.
             </text>
@@ -1262,7 +1262,7 @@
              left_delta="0"
              name="Create New"
              top_delta="-41"
-             width="160" />
+             width="120" />
             <button
              follows="left|top"
              height="23"
@@ -1376,9 +1376,10 @@
              left_delta="0"
              name="not worn instructions"
              top_pad="8"
-             word_wrap="true"
              width="373">
-                Put on new pants by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it.
+                Put on a new pants by dragging one from your inventory
+to your avatar. Alternately, you create a new one from
+scratch and wear it.
             </text>
             <text
              type="string"
@@ -1389,7 +1390,6 @@
              left_delta="0"
              name="no modify instructions"
              top_delta="0"
-             word_wrap="true"
              width="373">
                 You do not have permission to modify this wearable.
             </text>
@@ -1509,9 +1509,10 @@
              left_delta="0"
              name="not worn instructions"
              top_pad="8"
-             word_wrap="true"
              width="373">
-                Put on a new pair of shoes by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it.
+                Put on a new shoes by dragging one from your inventory
+to your avatar. Alternately, you create a new one from
+scratch and wear it.
             </text>
             <text
              type="string"
@@ -1522,7 +1523,6 @@
              left_delta="0"
              name="no modify instructions"
              top_delta="0"
-             word_wrap="true"
              width="373">
                 You do not have permission to modify this wearable.
             </text>
@@ -1572,7 +1572,7 @@
              left_delta="0"
              name="Create New"
              top_delta="-41"
-             width="160" />
+             width="120" />
             <button
              follows="left|top"
              height="23"
@@ -1715,9 +1715,10 @@
              left_delta="0"
              name="not worn instructions"
              top_pad="8"
-             word_wrap="true"
              width="373">
-                Put on new socks by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it.
+                Put on a new socks by dragging one from your inventory
+to your avatar. Alternately, you create a new one from
+scratch and wear it.
             </text>
             <text
              type="string"
@@ -1728,7 +1729,6 @@
              left_delta="0"
              name="no modify instructions"
              top_delta="0"
-             word_wrap="true"
              width="373">
                 You do not have permission to modify this wearable.
             </text>
@@ -1778,7 +1778,7 @@
              left_delta="0"
              name="Create New"
              top_delta="-41"
-             width="160" />
+             width="120" />
             <button
              follows="left|top"
              height="23"
@@ -1921,9 +1921,10 @@
              left_delta="0"
              name="not worn instructions"
              top_pad="8"
-             word_wrap="true"
              width="373">
-                Put on a new jacket by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it.
+                Put on a new jacket by dragging one from your inventory
+to your avatar. Alternately, you create a new one from
+scratch and wear it.
             </text>
             <text
              type="string"
@@ -1934,7 +1935,6 @@
              left_delta="0"
              name="no modify instructions"
              top_delta="0"
-             word_wrap="true"
              width="373">
                 You do not have permission to modify this wearable.
             </text>
@@ -1996,7 +1996,7 @@
              left_delta="0"
              name="Create New"
              top_delta="-121"
-             width="160" />
+             width="140" />
             <button
              follows="left|top"
              height="23"
@@ -2139,9 +2139,10 @@
              left_delta="0"
              name="not worn instructions"
              top_pad="8"
-             word_wrap="true"
              width="373">
-                Put on new gloves by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it.
+                Put on a new gloves by dragging one from your inventory
+to your avatar. Alternately, you create a new one from
+scratch and wear it.
             </text>
             <text
              type="string"
@@ -2152,7 +2153,6 @@
              left_delta="0"
              name="no modify instructions"
              top_delta="0"
-             word_wrap="true"
              width="373">
                 You do not have permission to modify this wearable.
             </text>
@@ -2202,7 +2202,7 @@
              left_delta="0"
              name="Create New"
              top_delta="-41"
-             width="160" />
+             width="130" />
             <button
              follows="left|top"
              height="23"
@@ -2345,9 +2345,10 @@
              left_delta="0"
              name="not worn instructions"
              top_pad="8"
-             word_wrap="true"
              width="373">
-                Put on a new undershirt by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it.
+                Put on a new undershirt by dragging one from your inventory
+to your avatar. Alternately, you create a new one from
+scratch and wear it.
             </text>
             <text
              type="string"
@@ -2358,7 +2359,6 @@
              left_delta="0"
              name="no modify instructions"
              top_delta="0"
-             word_wrap="true"
              width="373">
                 You do not have permission to modify this wearable.
             </text>
@@ -2551,9 +2551,10 @@
              left_delta="0"
              name="not worn instructions"
              top_pad="8"
-             word_wrap="true"
              width="373">
-                Put on new underpants by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it.
+                Put on a new underpants by dragging one from your inventory
+to your avatar. Alternately, you create a new one from
+scratch and wear it.
             </text>
             <text
              type="string"
@@ -2564,7 +2565,6 @@
              left_delta="0"
              name="no modify instructions"
              top_delta="0"
-             word_wrap="true"
              width="373">
                 You do not have permission to modify this wearable.
             </text>
@@ -2757,9 +2757,10 @@
              left_delta="0"
              name="not worn instructions"
              top_pad="8"
-             word_wrap="true"
              width="373">
-                Put on a new skirt by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it.
+                Put on a new skirt by dragging one from your inventory
+to your avatar. Alternately, you create a new one from
+scratch and wear it.
             </text>
             <text
              type="string"
@@ -2770,7 +2771,6 @@
              left_delta="0"
              name="no modify instructions"
              top_delta="0"
-             word_wrap="true"
              width="373">
                 You do not have permission to modify this wearable.
             </text>
@@ -2820,7 +2820,7 @@
              left_delta="0"
              name="Create New"
              top_delta="-41"
-             width="160" />
+             width="120" />
             <button
              follows="left|top"
              height="23"
@@ -2962,10 +2962,11 @@
              layout="topleft"
              left_delta="-2"
              name="not worn instructions"
-             top_pad="8"
-             word_wrap="true"
+             top_delta="2"
              width="373">
-                Put on a new alpha mask by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it.
+                Put on a new alpha mask by dragging one from your inventory
+to your avatar. Alternately, you create a new one from
+scratch and wear it.
             </text>
             <text
              type="string"
@@ -2976,7 +2977,6 @@
              left_delta="0"
              name="no modify instructions"
              top_delta="0"
-             word_wrap="true"
              width="373">
                 You do not have permission to modify this wearable.
             </text>
@@ -3108,7 +3108,7 @@
              left="8"
              name="Create New"
              top="104"
-             width="160" />
+             width="120" />
             <button
              follows="left|top"
              height="23"
@@ -3250,10 +3250,11 @@
              layout="topleft"
              left_delta="-2"
              name="not worn instructions"
-             top_pad="8"
-             word_wrap="true"
+             top_delta="2"
              width="373">
-                Put on a new tattoo by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it.
+                Put on a new tattoo by dragging one from your inventory
+to your avatar. Alternately, you create a new one from
+scratch and wear it.
             </text>
             <text
              type="string"
@@ -3264,7 +3265,6 @@
              left_delta="0"
              name="no modify instructions"
              top_delta="0"
-             word_wrap="true"
              width="373">
                 You do not have permission to modify this wearable.
             </text>
@@ -3327,7 +3327,7 @@
              left_delta="0"
              name="Create New"
              top_delta="-121"
-             width="160" />
+             width="120" />
             <button
              follows="left|top"
              height="23"
diff --git a/indra/newview/skins/default/xui/en/floater_god_tools.xml b/indra/newview/skins/default/xui/en/floater_god_tools.xml
index 0fac6cd5f17..b01c0edc8bc 100644
--- a/indra/newview/skins/default/xui/en/floater_god_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_god_tools.xml
@@ -123,7 +123,7 @@
              layout="topleft"
              left_delta="0"
              name="check reset home"
-             tool_tip="When Resident teleports out, reset their home to the destination position."
+             tool_tip="When resident teleports out, reset their home to the destination position."
              top_pad="4"
              width="180">
 			       <check_box.commit_callback
diff --git a/indra/newview/skins/default/xui/en/floater_im.xml b/indra/newview/skins/default/xui/en/floater_im.xml
index a21242ffe17..92a61117598 100644
--- a/indra/newview/skins/default/xui/en/floater_im.xml
+++ b/indra/newview/skins/default/xui/en/floater_im.xml
@@ -26,7 +26,7 @@
     </multi_floater.string>
     <multi_floater.string
      name="muted_message">
-        You have blocked this Resident. Sending a message will automatically unblock them.
+        You have blocked this resident. Sending a message will automatically unblock them.
     </multi_floater.string>
     <multi_floater.string
      name="generic_request_error">
diff --git a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml
index ae686d9ab7a..920f0c909a7 100644
--- a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml
@@ -4,8 +4,8 @@
  border_drop_shadow_visible="false"
  drop_shadow_visible="false"
  border="false"
- bg_opaque_image="Window_Foreground" 
- bg_alpha_image="Window_Background" 
+ bg_opaque_image="Inspector_Background"
+ bg_alpha_image="Toast_Background"
  bg_alpha_color="0 0 0 0"
  legacy_header_height="18"
  can_minimize="true"
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..f1a75bfcb4d 100644
--- a/indra/newview/skins/default/xui/en/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/en/floater_report_abuse.xml
@@ -201,11 +201,11 @@
          name="Age__Age_play"
          value="31" />
         <combo_box.item
-         label="Age &gt; Adult Resident on Teen Second Life"
+         label="Age &gt; Adult resident on Teen Second Life"
          name="Age__Adult_resident_on_Teen_Second_Life"
          value="32" />
         <combo_box.item
-         label="Age &gt; Underage Resident outside of Teen Second Life"
+         label="Age &gt; Underage resident outside of Teen Second Life"
          name="Age__Underage_resident_outside_of_Teen_Second_Life"
          value="33" />
         <combo_box.item
diff --git a/indra/newview/skins/default/xui/en/floater_select_key.xml b/indra/newview/skins/default/xui/en/floater_select_key.xml
index 4e89df5a735..93aa1f0e31a 100644
--- a/indra/newview/skins/default/xui/en/floater_select_key.xml
+++ b/indra/newview/skins/default/xui/en/floater_select_key.xml
@@ -15,12 +15,13 @@
      follows="left|top"
      height="30"
      layout="topleft"
-     left="30"
+     left="10"
      name="Save item as:"
      top="25"
      word_wrap="true"
-     width="180">
-        Press a key to set your Speak button trigger.
+     width="220">
+        Press a key to set your
+Speak button trigger.
     </text>
     <button
      height="23"
@@ -29,6 +30,5 @@
      layout="topleft"
      right="-10"
      name="Cancel"
-     top_pad="8"
      width="100" />
 </floater>
diff --git a/indra/newview/skins/default/xui/en/floater_top_objects.xml b/indra/newview/skins/default/xui/en/floater_top_objects.xml
index b06c6dc215d..68bb500c785 100644
--- a/indra/newview/skins/default/xui/en/floater_top_objects.xml
+++ b/indra/newview/skins/default/xui/en/floater_top_objects.xml
@@ -9,7 +9,7 @@
  name="top_objects"
  help_topic="top_objects"
  title="Top Objects"
- width="800">
+ width="550">
     <floater.string
      name="top_scripts_title">
         Top Scripts
@@ -64,7 +64,7 @@
      multi_select="true"
      name="objects_list"
      top_delta="17"
-     width="780">
+     width="530">
         <scroll_list.columns
          label="Score"
          name="score"
@@ -84,15 +84,11 @@
         <scroll_list.columns
          label="Time"
          name="time"
-         width="150" />
+         width="100" />
         <scroll_list.columns
          label="Mono Time"
          name="mono_time"
-         width="100" />
-          <scroll_list.columns
-          	label="URLs"
-          	name="URLs"
-          	width="100" />
+         width="55" />
 		<scroll_list.commit_callback
           function="TopObjects.CommitObjectsList" />
     </scroll_list>
@@ -116,7 +112,7 @@
      left_pad="3"
      name="id_editor"
      top_delta="-3"
-     width="575" />
+     width="325" />
     <button
      follows="bottom|right"
      height="23"
@@ -148,7 +144,7 @@
      left_pad="3"
      name="object_name_editor"
      top_delta="-3"
-     width="575" />
+     width="325" />
     <button
      follows="bottom|right"
      height="23"
@@ -180,7 +176,7 @@
      left_pad="3"
      name="owner_name_editor"
      top_delta="-3"
-     width="575" />
+     width="325" />
     <button
      follows="bottom|right"
      height="23"
@@ -194,7 +190,7 @@
           function="TopObjects.GetByOwnerName" />
     </button>
     <button
-     follows="bottom|right"
+     follows="top|left"
      height="22"
      image_overlay="Refresh_Off"
      layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/floater_tos.xml b/indra/newview/skins/default/xui/en/floater_tos.xml
index 5e168fe4aa6..1adb824e2a6 100644
--- a/indra/newview/skins/default/xui/en/floater_tos.xml
+++ b/indra/newview/skins/default/xui/en/floater_tos.xml
@@ -49,9 +49,9 @@
      left_delta="0"
      name="tos_heading"
      top_delta="-399"
-     word_wrap="true"
      width="552">
-        Please read the following Terms of Service carefully. To continue logging in to [SECOND_LIFE], you must accept the agreement.
+        Please read the following Terms of Service carefully. To continue logging in to [SECOND_LIFE],
+you must accept the agreement.
     </text>
     <web_browser
      follows="left|top"
@@ -60,6 +60,6 @@
      left_delta="0"
      name="tos_html"
      start_url="data:text/html,%3Chtml%3E%3Chead%3E%3C/head%3E%3Cbody text=%22000000%22%3E%3Ch2%3E Loading %3Ca%20target%3D%22_external%22%20href%3D%22http%3A//secondlife.com/app/tos/%22%3ETerms%20of%20Service%3C/a%3E...%3C/h2%3E %3C/body%3E %3C/html%3E"
-     top_delta="40"
+     top_delta="0"
      width="568" />
 </floater>
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 ae198d69a37..b9649e9c577 100644
--- a/indra/newview/skins/default/xui/en/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/en/floater_voice_controls.xml
@@ -3,9 +3,9 @@
  can_resize="true"
  can_minimize="true"
  can_close="false"
- height="275"
+ height="270"
  layout="topleft"
- min_height="100"
+ min_height="122"
  min_width="190"
  name="floater_voice_controls"
  help_topic="floater_voice_controls"
@@ -33,23 +33,27 @@
      name="no_one_near">
         No one near has voice enabled
     </string>
-      <layout_stack
-         clip="false"
-         follows="all"
-         height="262"
+    <string
+     name="max_visible_items">
+        5
+    </string>
+    <panel
+     bevel_style="out"
+     border="true"
+     follows="left|right|top"
+     height="62"
+     layout="topleft"
+     left="0"
+     name="control_panel"
+     top="0"
+     width="282">
+        <panel
+         height="18"
+         follows="top|left|right"
          layout="topleft"
          left="10"
-         mouse_opaque="false"
-         name="my_call_stack"
-         orientation="vertical"
+         name="my_panel"
          width="263">
-        <layout_panel
-         follows="top|left|right"
-          user_resize="false" 
-         auto_resize="false" 
-         layout="topleft"
-         height="26"
-         name="my_panel">
             <avatar_icon
              enabled="false"
              follows="left|top"
@@ -75,57 +79,92 @@
             <output_monitor
              auto_update="true"
              draw_border="false"
-             follows="top|right"
+             follows="right"
              height="16"
              layout="topleft"
              name="speaking_indicator"
-             left_pad="5"
+             right="-1"
+             top="2"
              visible="true"
              width="20" />
-        </layout_panel>
+        </panel>
+        <layout_stack
+         border_size="0"
+         clip="false"
+         follows="all"
+         height="28"
+         layout="topleft"
+         left="10"
+         mouse_opaque="false"
+         name="leave_call_stack"
+         orientation="horizontal"
+         top_pad="5"
+         width="263">
+         <layout_panel
+          auto_resize="true"
+          follows="left|right"
+          height="26"
+          layout="topleft"
+          min_height="23"
+          min_width="5"
+          mouse_opaque="false"
+          name="left_anchor"
+          width="80"/>
          <layout_panel
           auto_resize="false"
-          user_resize="false" 
-          follows="top|left"
+          follows="left|right"
           height="26"
-          visible="true"
           layout="topleft"
+          mouse_opaque="false"
+          min_height="24"
+          min_width="100"
           name="leave_call_btn_panel"
           width="100">
            <button
-          follows="right|top"
-            height="23"
-            top_pad="0"
+            follows="left|right"
+            height="24"
             label="Leave Call"
+            left="0"
             name="leave_call_btn"
+            top="0"
             width="100" />
          </layout_panel>
-      <layout_panel
-          follows="all"
-          layout="topleft"
-          left="2"
-          top_pad="0"
-          height="205" 
-          name="callers_panel"
-          user_resize="false" 
-          width="280">
-        <avatar_list
-         follows="all"
-         height="205"
-         ignore_online_status="true"
-         layout="topleft"
-         multi_select="true"
-         name="speakers_list"
-         width="280" />
-        <panel
-         filename="panel_avatar_list_item.xml"
-         follows="left|right|top"
-         height="24"
+         <layout_panel
+         auto_resize="true"
+         follows="left|right"
+         height="26"
          layout="topleft"
-         left="0"
-         name="non_avatar_caller"
-         top="10"
-         width="276" />
-      </layout_panel>
-    </layout_stack>
+         mouse_opaque="false"
+         min_height="24"
+         min_width="5"
+         name="right_anchor"
+         width="80"/>
+        </layout_stack>
+    </panel>
+    <avatar_list
+     follows="all"
+     height="197"
+     ignore_online_status="true"
+     layout="topleft"
+     left="0"
+     multi_select="true"
+     name="speakers_list"
+     width="282" />
+    <panel
+     filename="panel_avatar_list_item.xml"
+     follows="left|right|top"
+     height="24"
+     layout="topleft"
+     left="0"
+     name="non_avatar_caller"
+     top="70"
+     width="282" />
+    <view_border
+     bevel_style="out"
+     follows="left|top|right|bottom"
+     height="206"
+     layout="topleft"
+     left="0"
+     top="63"
+     width="282" />
 </floater>
diff --git a/indra/newview/skins/default/xui/en/inspect_toast.xml b/indra/newview/skins/default/xui/en/inspect_toast.xml
deleted file mode 100644
index 0221397a8ca..00000000000
--- a/indra/newview/skins/default/xui/en/inspect_toast.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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
- legacy_header_height="25"
- bevel_style="in"
- bg_opaque_image="Inspector_Background"
- can_close="false"
- can_minimize="false"
- height="148"
- layout="topleft"
- name="inspect_toast"
- single_instance="true"
- sound_flags="0"
- visible="true"
- width="228">
-</floater>
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 45100eb1ffa..fa7e3e86a33 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -198,6 +198,40 @@
              function="Floater.Toggle"
              parameter="nearby_media" />
         </menu_item_check>
+        <!--menu_item_check
+         label="Block List"
+         layout="topleft"
+         name="Mute List">
+            <menu_item_check.on_check
+             function="Floater.Visible"
+             parameter="mute" />
+            <menu_item_check.on_click
+             function="Floater.Toggle"
+             parameter="mute" />
+        </menu_item_check-->
+        <menu_item_separator
+         layout="topleft" />
+        <menu_item_check
+         label="(Legacy) Communicate"
+         layout="topleft"
+         name="Instant Message"
+         shortcut="control|T">
+            <menu_item_check.on_check
+             function="Floater.Visible"
+             parameter="communicate" />
+            <menu_item_check.on_click
+             function="Floater.Toggle"
+             parameter="communicate" />
+        </menu_item_check>
+        <menu_item_call
+         label="(Temp) Media Remote Ctrl"
+         layout="topleft"
+         name="Preferences"
+         shortcut="control|alt|M">
+            <menu_item_call.on_click
+             function="Floater.Toggle"
+             parameter="media_remote_ctrl" />
+        </menu_item_call>
     </menu>
     <menu
      label="World"
@@ -249,7 +283,7 @@
             </menu_item_call>
       <menu
            create_jump_keys="true"
-           label="Place Profile"
+           label="About This Place"
            layout="topleft"
            name="Land"
            tear_off="true">
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 5ec8018eaec..eb82dd4a7f0 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -246,7 +246,7 @@ Save all changes to clothing/body parts?
    icon="alertmodal.tga"
    name="GrantModifyRights"
    type="alertmodal">
-Granting modify rights to another Resident allows them to change, delete or take ANY objects you may have in-world. Be VERY careful when handing out this permission.
+Granting modify rights to another resident allows them to change, delete or take ANY objects you may have in-world. Be VERY careful when handing out this permission.
 Do you want to grant modify rights for [FIRST_NAME] [LAST_NAME]?
     <usetemplate
      name="okcancelbuttons"
@@ -258,7 +258,7 @@ Do you want to grant modify rights for [FIRST_NAME] [LAST_NAME]?
    icon="alertmodal.tga"
    name="GrantModifyRightsMultiple"
    type="alertmodal">
-Granting modify rights to another Resident allows them to change ANY objects you may have in-world. Be VERY careful when handing out this permission.
+Granting modify rights to another resident allows them to change ANY objects you may have in-world. Be VERY careful when handing out this permission.
 Do you want to grant modify rights for the selected Residents?
     <usetemplate
      name="okcancelbuttons"
@@ -1597,8 +1597,7 @@ Unable to force land ownership because selection spans multiple regions. Please
    icon="alertmodal.tga"
    name="ForceOwnerAuctionWarning"
    type="alertmodal">
-This parcel is up for auction. Forcing ownership will cancel the auction and potentially make some Residents unhappy if bidding has begun.
-Force ownership?
+This parcel is up for auction. Forcing ownership will cancel the auction and potentially make some residents unhappy if bidding has begun. Force ownership?
     <usetemplate
      name="okcancelbuttons"
      notext="Cancel"
@@ -2916,16 +2915,6 @@ You have reached your maximum number of groups. Please leave another group befor
      yestext="Join"/>
   </notification>
 
-  <notification
-   icon="alert.tga"
-   name="JoinedTooManyGroups"
-   type="alert">
-You have reached your maximum number of groups. Please leave some group before joining or creating a new one.
-    <usetemplate
-     name="okbutton"
-     yestext="OK"/>
-  </notification>
-
   <notification
    icon="alert.tga"
    name="KickUser"
@@ -3564,7 +3553,7 @@ Type a short announcement which will be sent to everyone in this region.
 The maturity rating for this region has been updated.
 It may take some time for the change to be reflected on the map.
 
-To enter Adult regions, Residents must be Account Verified, either by age-verification or payment-verification.
+To enter Adult regions, residents must be Account Verified, either by age-verification or payment-verification.
   </notification>
 
   <notification
@@ -4554,8 +4543,8 @@ Click on any landmark to select it, then click &apos;Teleport&apos; at the botto
    icon="notifytip.tga"
    name="TeleportToPerson"
    type="notifytip">
-You can contact Residents like &apos;[NAME]&apos; by opening the People panel on the right side of your screen.
-Select the Resident from the list, then click &apos;IM&apos; at the bottom of the panel.
+You can contact residents like &apos;[NAME]&apos; by opening the People panel on the right side of your screen.
+Select the resident from the list, then click &apos;IM&apos; at the bottom of the panel.
 (You can also double-click on their name in the list, or right-click and choose &apos;IM&apos;).
   </notification>
 
@@ -4704,7 +4693,7 @@ The objects on the selected parcel of land that is owned by [FIRST] [LAST] have
    icon="notify.tga"
    name="OtherObjectsReturned2"
    type="notify">
-The objects on the selected parcel of land owned by the Resident &apos;[NAME]&apos; have been returned to their owner.
+The objects on the selected parcel of land owned by the resident &apos;[NAME]&apos; have been returned to their owner.
   </notification>
 
   <notification
@@ -4985,7 +4974,7 @@ No valid parcel could be found.
    icon="notify.tga"
    name="ObjectGiveItem"
    type="offer">
-An object named [OBJECTFROMNAME] owned by [NAME_SLURL] has given you this [OBJECTTYPE]:
+An object named [OBJECTFROMNAME] owned by [NAME_SLURL] has given you [OBJECTTYPE]:
 [ITEM_SLURL]
     <form name="form">
       <button
@@ -5007,7 +4996,7 @@ An object named [OBJECTFROMNAME] owned by [NAME_SLURL] has given you this [OBJEC
    icon="notify.tga"
    name="ObjectGiveItemUnknownUser"
    type="offer">
-An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you this [OBJECTTYPE]:
+An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you [OBJECTTYPE]:
 [ITEM_SLURL]
     <form name="form">
       <button
@@ -5029,7 +5018,7 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you th
    icon="notify.tga"
    name="UserGiveItem"
    type="offer">
-[NAME_SLURL] has given you this [OBJECTTYPE]:
+[NAME_SLURL] has given you [OBJECTTYPE]:
 [ITEM_SLURL]
     <form name="form">
       <button
@@ -5192,7 +5181,7 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you th
    name="OfferCallingCard"
    type="notify">
 [FIRST] [LAST] is offering their calling card.
-This will add a bookmark in your inventory so you can quickly IM this Resident.
+This will add a bookmark in your inventory so you can quickly IM this resident.
     <form name="form">
       <button
        index="0"
diff --git a/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml
index 28a6995186b..6c54532a3a8 100644
--- a/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml
+++ b/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml
@@ -4,7 +4,7 @@
  follows="all"
  height="215"
  name="panel_im_control_panel"
- width="150">
+ width="180">
     <layout_stack
      mouse_opaque="false"
      border_size="0"
@@ -16,16 +16,15 @@
      name="vertical_stack"
      orientation="vertical"
      top="0"
-     width="147">
+     width="177">
         <layout_panel
          auto_resize="true"
          follows="top|left"
          height="130"
          layout="topleft"
-         left="0"
          min_height="0"
          mouse_opaque="false"
-         width="147"
+         width="180"
          top="0"
          name="speakers_list_panel"
          user_resize="false">
@@ -40,7 +39,7 @@
              show_info_btn="false"
              show_profile_btn="false"
              show_speaking_indicator="false"
-             width="147" />
+             width="180" />
         </layout_panel>
         <layout_panel
          auto_resize="false"
@@ -48,7 +47,7 @@
          height="25"
          layout="topleft"
          min_height="25"
-         width="130"
+         width="160"
          name="call_btn_panel"
          user_resize="false"
          visible="false">
@@ -57,7 +56,7 @@
              height="20"
              label="Call"
              name="call_btn"
-             width="130"
+             width="160"
              top="5" />
         </layout_panel>
         <layout_panel
@@ -66,7 +65,7 @@
          height="25"
          layout="topleft"
          min_height="25"
-         width="130"
+         width="160"
          name="end_call_btn_panel"
          user_resize="false"
          visible="false">
@@ -83,7 +82,7 @@
          height="25"
          layout="topleft"
          min_height="25"
-         width="130"
+         width="160"
          name="voice_ctrls_btn_panel"
          user_resize="false"
          visible="false">
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..45f9d9c7b65 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
@@ -58,13 +58,13 @@
      top="6"
      use_ellipses="true"
      value="Unknown"
-     width="180" />
+     width="182" />
     <text
      follows="right"
      font="SansSerifSmall"
      height="15"
      layout="topleft"
-     left_pad="5"
+     left_pad="8"
      name="last_interaction"
      text_color="LtGray_50"
      value="0s"
@@ -75,7 +75,7 @@
      draw_border="false"
      height="16"
      layout="topleft"
-     left_pad="5"
+     left_pad="0"
      mouse_opaque="true"
      name="speaking_indicator"
      visible="true"
@@ -98,7 +98,6 @@
      left_pad="5"
      right="-3"
      name="profile_btn"
-     tool_tip="View profile"
      top_delta="-2"
      width="20" />
 </panel>
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..003e1baa7eb 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
@@ -37,7 +37,7 @@
      layout="topleft"
      left="5"
      name="blocked"
-     tool_tip="List of currently blocked Residents"
+     tool_tip="List of currently blocked residents"
      top="30"
      width="270" />
     <button
@@ -47,7 +47,7 @@
      layout="topleft"
      left_delta="0"
      name="Block resident..."
-     tool_tip="Pick a Resident to block"
+     tool_tip="Pick a resident to block"
      top_pad="4"
      width="210">
         <button.commit_callback
@@ -74,7 +74,7 @@
      layout="topleft"
      left_delta="0"
      name="Unblock"
-     tool_tip="Remove Resident or object from blocked list"
+     tool_tip="Remove resident or object from blocked list"
      top_pad="4"
      width="210" >
         <button.commit_callback
diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
index 4b39210f30c..aeaa049f1ff 100644
--- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
@@ -33,10 +33,10 @@
          height="10"
          image_name="spacer24.tga"
          layout="topleft"
-         min_width="2"
+         min_width="4"
          left="0"
          top="0"
-         width="2" />
+         width="4" />
         <layout_panel
  	mouse_opaque="false"
          auto_resize="false"
@@ -71,7 +71,7 @@
            layout="topleft"
            left="0"
            name="talk"
-           top="5"
+           top="4"
           width="100">
               <show_button>
                   <show_button.init_callback
@@ -103,20 +103,20 @@
          min_width="52"
          name="gesture_panel"
          user_resize="false">
-         <gesture_combo_list
+         <gesture_combo_box
           follows="left|right"
           height="23"
           label="Gesture"
           layout="topleft"
           name="Gesture"
           left="0"
-          top="5"
+          top="4"
           width="82"
           tool_tip="Shows/hides gestures">
-             <gesture_combo_list.combo_button
+             <gesture_combo_box.drop_down_button
               pad_right="10"
               use_ellipses="true" />
-         </gesture_combo_list>
+         </gesture_combo_box>
         </layout_panel>
 		 <icon
          auto_resize="false"
@@ -153,7 +153,7 @@
              layout="topleft"
              name="movement_btn"
              tool_tip="Shows/hides movement controls"
-             top="5"
+             top="4"
              width="80">
                 <button.init_callback
                  function="Button.SetDockableFloaterToggle"
@@ -195,7 +195,7 @@
              layout="topleft"
              left="0"
              tool_tip="Shows/hides camera controls"
-             top="5"
+             top="4"
              name="camera_btn"
              width="80">
                 <button.init_callback
@@ -235,7 +235,7 @@
              layout="topleft"
              name="snapshots"
              width="36"
-             top="5"
+             top="4"
              is_toggle="true"
              image_overlay="Snapshot_Off"
              tool_tip="Take snapshot">
@@ -338,7 +338,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
              layout="topleft"
              left="0"
              name="im_well"
-             top="5"
+             top="4"
              width="35">
              <!--
 Emulate 4 states of button by background images, see details in EXT-3147. The same should be for notification_well button
@@ -362,6 +362,8 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well
                  label_color="Black"
                  left="0"
                  name="Unread IM messages"
+                 pad_left="0"
+                 pad_right="0"
                  tool_tip="Conversations"
                  width="35" >
                     <button.init_callback
@@ -379,8 +381,8 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well
          top="0"
          left_pad="3"
          name="notification_well_panel"
-         width="40"
-         min_width="40"
+         width="35"
+         min_width="35"
          user_resize="false">
             <chiclet_notification
              flash_period="0.25"
@@ -390,7 +392,7 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well
              left="0"
              max_displayed_count="99"
              name="notification_well"
-             top="5"
+             top="4"
              width="35">
               <button
                  bottom_pad="3"
@@ -403,11 +405,11 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well
                follows="right"
                flash_color="ChicletFlashColor"
                 label_color="Black"
-               left="0"
+               left="5"
                name="Unread"
                image_overlay="Notices_Unread"
                image_overlay_alignment="center"
-               pad_right="15"
+               pad_right="5"
                tool_tip="Notifications"
                width="35" >
                   <button.init_callback
@@ -416,5 +418,16 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well
               </button>
 	    </chiclet_notification>
         </layout_panel>
+        <icon
+         auto_resize="false"
+         color="0 0 0 0"
+         follows="left|right"
+         height="10"
+         image_name="spacer24.tga"
+         layout="topleft"
+         min_width="4"
+         right="-1"
+         top="0"
+         width="4"/>
     </layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_edit_pick.xml b/indra/newview/skins/default/xui/en/panel_edit_pick.xml
index 7769189219c..d6de5af32d3 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_pick.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_pick.xml
@@ -38,27 +38,28 @@
    <scroll_container
      color="DkGray2"
      follows="all"
-     height="500"
+     height="510"
      layout="topleft"
      left="10"
      top_pad="10"
      name="profile_scroll"
+     reserve_scroll_corner="false"
      opaque="true"
      width="313">
     <panel
      name="scroll_content_panel"
-     follows="left|top|right"
+     follows="left|top"
      min_height="300"
      layout="topleft"
      top="0"
      background_visible="false"
-     height="500"
+     height="510"
      left="0"
-     width="285">
+     width="295">
     <texture_picker
      follows="left|top|right"
      height="197"
-     width="280"
+     width="290"
      layout="topleft"
      top="20"
      left="10"
@@ -76,7 +77,7 @@
         <text
          type="string"
          length="1"
-         follows="left|top|right"
+         follows="left|top"
          height="15"
          font="SansSerifSmall"
          font.style="BOLD"
@@ -85,7 +86,7 @@
          top="215"
          name="Name:"
          text_color="white"
-         width="280">
+         width="290">
             Title:
         </text>
         <line_editor
@@ -98,11 +99,11 @@
          max_length="63"
          name="pick_name"
          text_color="black"
-         width="280" />
+         width="290" />
         <text
          type="string"
          length="1"
-         follows="left|top|right"
+         follows="left|top"
          height="15"
          font="SansSerifSmall"
          font.style="BOLD"
@@ -111,13 +112,13 @@
          top_pad="20"
          name="description_label"
          text_color="white"
-         width="280">
+         width="290">
             Description:
         </text>
         <text_editor
          follows="left|top|right"
          height="100"
-         width="280"
+         width="290"
          hide_scrollbar="false"
          layout="topleft"
          left="10"
@@ -131,26 +132,27 @@
          length="1"
          font="SansSerifSmall"
          font.style="BOLD"
-         follows="left|top|right"
+         follows="left|top"
          height="15"
          layout="topleft"
          left="10"
          name="location_label"
          text_color="white"
          top_pad="20"
-         width="280">
+         width="290">
             Location:
         </text>
         <text
          type="string"
          length="1"
-         follows="left|top|right"
+         follows="left|top"
          height="50"
          layout="topleft"
          left="10"
          name="pick_location"
+         right="-10"
          top_pad="2"
-         width="280"
+         width="290"
          word_wrap="true">
             loading...
         </text>
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 172cf18fc4b..be3c0bbd969 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_profile.xml
@@ -301,13 +301,14 @@
          left="10"
          name="partner_data_panel"
          width="285">
-            <name_box
+            <text
              follows="left|top|right"
              height="30"
              layout="topleft"
              left="0"
              name="partner_text"
              top="0"
+             value="[FIRST] [LAST]"
              width="285"
              word_wrap="true" />
          </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_friends.xml b/indra/newview/skins/default/xui/en/panel_friends.xml
index c315adb33eb..ac731bcdf00 100644
--- a/indra/newview/skins/default/xui/en/panel_friends.xml
+++ b/indra/newview/skins/default/xui/en/panel_friends.xml
@@ -118,7 +118,7 @@
      layout="topleft"
      left_delta="0"
      name="add_btn"
-     tool_tip="Offer friendship to a Resident"
+     tool_tip="Offer friendship to a resident"
      top_pad="13"
      width="80" />
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_group_control_panel.xml b/indra/newview/skins/default/xui/en/panel_group_control_panel.xml
index aa7d621e4c8..4073ef158bb 100644
--- a/indra/newview/skins/default/xui/en/panel_group_control_panel.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_control_panel.xml
@@ -4,7 +4,7 @@
  follows="all"
  height="238"
  name="panel_im_control_panel"
- width="150">
+ width="180">
     <layout_stack
      mouse_opaque="false"
      border_size="0"
@@ -16,7 +16,7 @@
      name="vertical_stack"
      orientation="vertical"
      top="0"
-     width="145">
+     width="175">
         <layout_panel
          auto_resize="true"
          follows="top|left"
@@ -24,7 +24,7 @@
          layout="topleft"
          min_height="0"
          mouse_opaque="false"
-         width="145"
+         width="180"
          top="0"
          name="speakers_list_panel"
          user_resize="false">
@@ -39,7 +39,7 @@
              show_info_btn="false"
              show_profile_btn="false"
              show_speaking_indicator="false"
-             width="145" />
+             width="180" />
         </layout_panel>
         <layout_panel
          auto_resize="false"
@@ -47,7 +47,7 @@
          height="28"
          layout="topleft"
          min_height="28"
-         width="130"
+         width="160"
          name="group_info_btn_panel"
          user_resize="false">
             <button
@@ -57,7 +57,7 @@
              name="group_info_btn"
              use_ellipses="true"
              top="5"
-             width="130" />
+             width="160" />
         </layout_panel>
         <layout_panel
          auto_resize="false"
@@ -65,7 +65,7 @@
          height="28"
          layout="topleft"
          min_height="28"
-         width="130"
+         width="160"
          name="call_btn_panel"
          user_resize="false">
             <button
@@ -74,7 +74,7 @@
              label="Call Group"
              name="call_btn"
              use_ellipses="true" 
-             width="130" />
+             width="160" />
         </layout_panel>
         <layout_panel
          auto_resize="false"
@@ -82,7 +82,7 @@
          height="28"
          layout="topleft"
          min_height="28"
-         width="130"
+         width="160"
          name="end_call_btn_panel"
          user_resize="false"
          visible="false">
@@ -99,7 +99,7 @@
          height="28"
          layout="topleft"
          min_height="28"
-         width="130"
+         width="160"
          name="voice_ctrls_btn_panel"
          user_resize="false"
          visible="false">
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 81880488218..c0db734f8c1 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
@@ -216,28 +216,12 @@ background_visible="true"
      visible="false"
      width="65" />-->
      <button
-     follows="bottom|right"          
-     label="Group Chat"
-     name="btn_chat"
-     right="-184"
-     left_pad="2"     
-     height="22"          
-     width="85" />
-     <button
-     follows="bottom|right"          
-     label="Group Call"
-     name="btn_call"
-     right="-97"
-     left_pad="2"     
-     height="22"          
-     width="85" />
-     <button
      height="22"
      label="Save"
      label_selected="Save"
      name="btn_apply"
      left_pad="10"
      right="-10"
-     width="85" />
+     width="100" />
      </panel>
 </panel>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/panel_group_invite.xml b/indra/newview/skins/default/xui/en/panel_group_invite.xml
index 48083b7677d..37578eae703 100644
--- a/indra/newview/skins/default/xui/en/panel_group_invite.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_invite.xml
@@ -17,7 +17,7 @@
     </panel.string>
     <panel.string
      name="already_in_group">
-        Some Residents you chose are already in the group, and so were not sent an invitation.
+        Some avatars are already in group and were not invited.
     </panel.string>
     <text
      type="string"
@@ -26,10 +26,11 @@
      layout="topleft"
      left="7"
      name="help_text"
-     top="28"
-     word_wrap="true"
+     top="24"
      width="200">
-        You can select multiple Residents to invite to your group. Click &apos;Open Resident Chooser&apos; to start.
+        You can select multiple residents to 
+invite to your group. Click &apos;Open 
+Resident Chooser&apos; to start.
     </text>
     <button
      height="20"
@@ -47,7 +48,7 @@
      left_delta="0"
      multi_select="true"
      name="invitee_list"
-     tool_tip="Hold the Ctrl key and click Resident names to multi-select"
+     tool_tip="Hold the Ctrl key and click resident names to multi-select"
      top_pad="4"
      width="200" />
     <button
@@ -56,7 +57,7 @@
      layout="topleft"
      left_delta="0"
      name="remove_button"
-     tool_tip="Removes the Residents selected above from the invite list"
+     tool_tip="Removes residents selected above from the invite list"
      top_pad="4"
      width="200" />
     <text
@@ -67,7 +68,6 @@
      left_delta="4"
      name="role_text"
      top_pad="5"
-     word_wrap="true"
      width="200">
         Choose what Role to assign them to:
     </text>
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..5f6b911620f 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
@@ -65,7 +65,6 @@
      left_pad="5"
      right="-3"
      name="profile_btn"
-     tool_tip="View profile"
      top_delta="-2"
      width="20" />
 </panel>
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..e096715ceec 100644
--- a/indra/newview/skins/default/xui/en/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_notices.xml
@@ -136,7 +136,6 @@ Maximum 200 per group daily
          left_pad="3"
          max_length="63"
          name="create_subject"
-         prevalidate_callback="ascii"
          width="220" />
         <text
          follows="left|top"
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..a5bab3232cf 100644
--- a/indra/newview/skins/default/xui/en/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_roles.xml
@@ -210,18 +210,6 @@ including the Everyone and Owner Roles.
                 Abilities allow Members in Roles to do specific
 things in this group. There&apos;s a broad variety of Abilities.
             </panel.string>
-            <panel.string
-             name="power_folder_icon">
-                Inv_FolderClosed
-            </panel.string>
-            <panel.string
-             name="power_all_have_icon">
-                Checkbox_On
-            </panel.string>
-            <panel.string
-             name="power_partial_icon">
-                Checkbox_Off
-            </panel.string>
          <filter_editor
          layout="topleft"
          top="5"
@@ -232,32 +220,23 @@ things in this group. There&apos;s a broad variety of Abilities.
          max_length="250"
          label="Filter Abilities"
          name="filter_input" />
-
-        <scroll_list
-         column_padding="0"
-         draw_stripes="true"
-         height="200"
-         follows="left|top"
-         layout="topleft"
-         left="0"
-         name="action_list"
-         search_column="2"
-         tool_tip="Select an Ability to view more details"
-         top_pad="5"
-         width="300">
-            <scroll_list.columns
-             label=""
-             name="icon"
-             width="2" />
-            <scroll_list.columns
-             label=""
-             name="checkbox"
-             width="20" />
-            <scroll_list.columns
-             label=""
-             name="action"
-             width="270" />
-        </scroll_list>
+            <scroll_list
+             column_padding="0"
+             draw_stripes="false"
+             follows="left|top"
+             height="200"
+             layout="topleft"
+             left="0"
+             multi_select="true"
+             name="action_list"
+             search_column="1"
+             tool_tip="Select an Ability to view more details"
+             top_pad="5"
+             width="300">
+                <scroll_list.columns
+                 name="action"
+                 width="300" />
+            </scroll_list>
         </panel>
     </tab_container>
     <panel
diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml
index df942b1a267..e5df37e366c 100644
--- a/indra/newview/skins/default/xui/en/panel_login.xml
+++ b/indra/newview/skins/default/xui/en/panel_login.xml
@@ -186,7 +186,6 @@ height="80">
    <text
 follows="right|bottom"
 font="SansSerifSmall"
-text_color="EmphasisColor"
 halign="right"
 height="16"
 top="12"
diff --git a/indra/newview/skins/default/xui/en/panel_media_settings_general.xml b/indra/newview/skins/default/xui/en/panel_media_settings_general.xml
index 38e8b9844f5..5217ab35717 100644
--- a/indra/newview/skins/default/xui/en/panel_media_settings_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_media_settings_general.xml
@@ -30,7 +30,6 @@
     (This page does not pass the specified whitelist)
   </text>
   <line_editor 
-   max_length="1024"
    bottom_delta="-24" 
    enabled="true" 
    follows="left|top" 
@@ -73,15 +72,13 @@
     Current Page:
   </text>
   <text 
-   name="current_url"
-   max_length="1024"
-   use_ellipses="true"
    bottom_delta="-20" 
    enabled="false" 
    follows="left|top" 
    font="SansSerif"
    height="20" 
    left="10" 
+   name="current_url"
    tool_tip="The current page for this media source"
    value="" 
    width="340" />
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 27c1af1860c..8327edfdd08 100644
--- a/indra/newview/skins/default/xui/en/panel_my_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_my_profile.xml
@@ -27,9 +27,6 @@
     <string
      name="no_partner_text"
      value="None" />
-    <string
-     name="no_group_text"
-     value="None" />
     <string
 	 name="RegisterDateFormat">
 	 [REG_DATE] ([AGE])
@@ -65,11 +62,10 @@
           <panel
                 layout="topleft"
           follows="left|top|right"
-                height="505"
                name="scroll_content_panel"
                 top="0"
                 left="0"
-                width="297">
+                width="303">
             <panel
                   follows="left|top|right"
                   height="117"
@@ -77,7 +73,7 @@
                   left="10"
                   name="second_life_image_panel"
                   top="0"
-                  width="297">
+                  width="300">
               <texture_picker
                allow_no_texture="true"
                default_image_name="None"
@@ -118,7 +114,7 @@
                textbox.max_length="512"
                name="sl_description_edit"
                top_pad="-3"
-               width="181"
+               width="188"
                expanded_bg_visible="true"
                expanded_bg_color="DkGray">
                 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.
@@ -131,7 +127,7 @@
        top_pad="10"
              left="10"
              name="first_life_image_panel"
-             width="297">
+             width="300">
               <texture_picker
                allow_no_texture="true"
                default_image_name="None"
@@ -171,7 +167,7 @@
                textbox.max_length="512"
                name="fl_description_edit"
                top_pad="-3"
-               width="181"
+               width="188"
                expanded_bg_visible="true"
                expanded_bg_color="DkGray">
                 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.
@@ -264,14 +260,14 @@
              name="partner_data_panel"
              top_pad="0"
              width="300">
-              <name_box
+              <text
                follows="left|top"
                height="10"
                layout="topleft"
                left="0"
-               link="true"
                name="partner_text"
                top="0"
+               value="[FIRST] [LAST]"
            width="300"
                word_wrap="true" />
             </panel>
@@ -316,7 +312,7 @@
          left="0"
          mouse_opaque="false"
          name="add_friend"
-         tool_tip="Offer friendship to the Resident"
+         tool_tip="Offer friendship to the resident"
          top="5"
          width="80" />
         <button
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 9ad99b1f135..e2884dbedcf 100644
--- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
@@ -47,7 +47,7 @@
 	     left="10"
 	     name="back_btn"
 	     tool_tip="Go back to previous location"
-	     top="2"
+	     top="3"
 	     width="31" />
 	    <button
 	     follows="left|top"
@@ -92,6 +92,7 @@
 	         width="20" />
 	      -->
 	    </location_input>
+
 	<!--     <button -->
 	<!--      follows="right|top" -->
 	<!--      height="20" -->
@@ -107,6 +108,7 @@
 	<!--      name="search_bg" -->
 	<!--      top_delta="0" -->
 	<!--      width="168" /> -->
+
         <search_combo_box
 	     bevel_style="none"
 	     border_style="line"
diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
index 2b361c06286..f09a0e03ed0 100644
--- a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
@@ -27,7 +27,7 @@
      max_length="512"
      name="chat_box"
      tool_tip="Press Enter to say, Ctrl+Enter to shout"
-     top="2"
+     top="1"
      width="283" />
     <output_monitor
      auto_update="true"
@@ -45,7 +45,7 @@
      follows="right"
      is_toggle="true"
      width="20"
-     top="2"
+     top="1"
      layout="topleft"
      left_pad="4"
      image_disabled="ComboButton_UpOff"
diff --git a/indra/newview/skins/default/xui/en/panel_notes.xml b/indra/newview/skins/default/xui/en/panel_notes.xml
index 45b64d5e26b..73528b28ad2 100644
--- a/indra/newview/skins/default/xui/en/panel_notes.xml
+++ b/indra/newview/skins/default/xui/en/panel_notes.xml
@@ -120,7 +120,7 @@
          left="0"
          mouse_opaque="false"
          name="add_friend"
-         tool_tip="Offer friendship to the Resident"
+         tool_tip="Offer friendship to the resident"
          top="5"
          width="80" />
         <button
@@ -139,7 +139,7 @@
          label="Call"
          layout="topleft"
          name="call"
-         tool_tip="Call this Resident"
+         tool_tip="Call this resident"
          left_pad="3"
          top="5"
          width="45" />
@@ -150,7 +150,7 @@
          label="Map"
          layout="topleft"
          name="show_on_map_btn"
-         tool_tip="Show the Resident on the map"
+         tool_tip="Show the resident on the map"
          top="5"
          left_pad="3"
          width="45" />
diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml
index 8a02637817a..adf22f825ff 100644
--- a/indra/newview/skins/default/xui/en/panel_people.xml
+++ b/indra/newview/skins/default/xui/en/panel_people.xml
@@ -106,7 +106,7 @@ background_visible="true"
                  left_pad="5"
                  name="add_friend_btn"
                  top_delta="0"
-                 tool_tip="Add selected Resident to your friends List"
+                 tool_tip="Add selected resident to your friends List"
                  width="18">
                <commit_callback
                   function="People.addFriend" />
@@ -192,7 +192,7 @@ background_visible="true"
                  layout="topleft"
                  left_pad="5"
                  name="add_btn"
-                 tool_tip="Offer friendship to a Resident"
+                 tool_tip="Offer friendship to a resident"
                  top_delta="0"
                  width="18" />
                 <button
@@ -327,7 +327,7 @@ background_visible="true"
                  left_pad="5"
                  name="add_friend_btn"
                  top_delta="0"
-                 tool_tip="Add selected Resident to your friends List"
+                 tool_tip="Add selected resident to your friends List"
                  width="18">
                 <commit_callback
                    function="People.addFriend" />
@@ -350,7 +350,7 @@ background_visible="true"
          label="Profile"
          layout="topleft"
          name="view_profile_btn"
-         tool_tip="Show picture, groups, and other Residents information"
+         tool_tip="Show picture, groups, and other residents information"
          width="70" />
         <button
          follows="bottom|left"
@@ -370,7 +370,7 @@ background_visible="true"
          label="Call"
          layout="topleft"
          name="call_btn"
-         tool_tip="Call this Resident"
+         tool_tip="Call this resident"
          width="50" />
         <button
          follows="left|top"
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 9c7f38e6888..f68202d2878 100644
--- a/indra/newview/skins/default/xui/en/panel_pick_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_pick_info.xml
@@ -40,30 +40,31 @@
      left="10"
      top_pad="10"
      name="profile_scroll"
+     reserve_scroll_corner="false"
      width="313">
     <panel
      name="scroll_content_panel"
-     follows="left|top|right"
+     follows="left|top"
      min_height="300"
      layout="topleft"
      top="0"
      background_visible="false"
-     height="400"
+     height="470"
      left="0"
-     width="285">
+     width="295">
         <texture_picker
          enabled="false"
-         follows="left|top|right"
+         follows="left|top"
          height="197"
          layout="topleft"
          left="10"
          name="pick_snapshot"
          top="20"
-         width="280" />
+         width="290" />
         <text
          follows="left|top|right"
          height="35"
-         width="280"
+         width="290"
          layout="topleft"
          font="SansSerifBig"
          font.style="BOLD"
@@ -74,29 +75,23 @@
          value="[name]"
          use_ellipses="true" />
         <text
-         follows="left|top|right"
+         follows="left|top"
          height="25"
          layout="topleft"
          left="10"
          name="pick_location"
-         width="280"
+         width="290"
          word_wrap="true"
          value="[loading...]" />
-        <text_editor
-         bg_readonly_color="DkGray2"
-         follows="all"
-         height="100"
-         width="280"
-         hide_scrollbar="false"
+        <text
+         follows="left|top|right"
+         height="280"
          layout="topleft"
          left="10"
-         top_pad="2"
-         max_length="1023"
          name="pick_desc"
-         read_only="true"
-         text_readonly_color="white"
+         width="290"
          value="[description]"
-         wrap="true" />
+         word_wrap="true" />
     </panel>
     </scroll_container>
     <panel
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 1e7acb566fe..17651b8caae 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
@@ -2,6 +2,7 @@
 
 <panel
  border="true"
+ background_visible="true"
  follows="left|top|right|bottom"
  height="408"
  layout="topleft"
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..c98555735a7 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
@@ -260,7 +260,7 @@
      width="200">
         My effects:
     </text>
-    <text
+  <text
       type="string"
       length="1"
       follows="left|top"
@@ -270,23 +270,16 @@
       name="title_afk_text"
       width="190">
     Away timeout:
-    </text>
+  </text>
     <color_swatch
-	 can_apply_immediately="true"
+     control_name="EffectColor"
      follows="left|top"
      height="50"
      layout="topleft"
      left="50"
      name="effect_color_swatch"
      tool_tip="Click to open Color Picker"
-     width="38">
-		<color_swatch.init_callback
-		 function="Pref.getUIColor"
-		 parameter="EffectColor" />
-		<color_swatch.commit_callback
-		 function="Pref.applyUIColor"
-		 parameter="EffectColor" />
-	</color_swatch>
+     width="38" />
   <combo_box
             height="23"
             layout="topleft"
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..cc00abf5a0d 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
@@ -378,7 +378,7 @@
 		layout="topleft"
 		left_delta="250"
 		name="DrawDistanceMeterText2"
-		top_delta="0"
+		top_delta="1"
 		width="128">
 			m
 		</text>
@@ -395,7 +395,7 @@
 		left="216"
 		max_val="8192"
 		name="MaxParticleCount"
-		top_pad="7"
+		top_pad="6"
 		width="262" />
 		<slider
 		control_name="RenderGlowResolutionPow"
diff --git a/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml
index ab6384203fa..075d9232b1d 100644
--- a/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml
+++ b/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml
@@ -321,7 +321,6 @@
 		min_width="90">
 	  <line_editor 
 		  name="media_address_url"
-		  max_length="1024"
 		  follows="top|left|right" 
 		  height="22"
 		  top="0"
diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml
index 597b6410cda..43947262ec5 100644
--- a/indra/newview/skins/default/xui/en/panel_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile.xml
@@ -27,9 +27,6 @@
     <string
      name="no_partner_text"
      value="None" />
-    <string
-     name="no_group_text"
-     value="None" />
     <string
 	 name="RegisterDateFormat">
 	 [REG_DATE] ([AGE])
@@ -65,11 +62,10 @@
           <panel
                 layout="topleft"
           follows="left|top|right"
-                height="505"
                 name="profile_scroll_panel"
                 top="0"
                 left="0"
-                width="297">
+                width="303">
             <panel
                   follows="left|top|right"
                   height="117"
@@ -77,7 +73,7 @@
                   left="10"
                   name="second_life_image_panel"
                   top="0"
-                  width="297">
+                  width="303">
               <texture_picker
                allow_no_texture="true"
                default_image_name="None"
@@ -121,7 +117,7 @@
        top_pad="10"
              left="10"
              name="first_life_image_panel"
-             width="297">
+             width="303">
               <texture_picker
                allow_no_texture="true"
                default_image_name="None"
@@ -244,14 +240,14 @@
              name="partner_data_panel"
              top_pad="0"
              width="300">
-              <name_box
+              <text
                follows="left|top"
                height="10"
                layout="topleft"
                left="0"
-               link="true"
                name="partner_text"
                top="0"
+               value="[FIRST] [LAST]"
            width="300"
                word_wrap="true" />
             </panel>
@@ -273,7 +269,7 @@
             left="7"
             name="sl_groups"
             top_pad="0"
-            width="290"
+            width="298"
             expanded_bg_visible="true"
             expanded_bg_color="DkGray">
               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. Aenean viverra tulip moosetop. Slan de heelish marfnik tooplod. Sum sum to whop de wompam booster copm.
@@ -296,7 +292,7 @@
          left="0"
          mouse_opaque="false"
          name="add_friend"
-         tool_tip="Offer friendship to the Resident"
+         tool_tip="Offer friendship to the resident"
          top="5"
          width="80" />
         <button
@@ -315,7 +311,7 @@
          label="Call"
          layout="topleft"
          name="call"
-         tool_tip="Call this Resident"
+         tool_tip="Call this resident"
          left_pad="3"
          top="5"
          width="45" />
@@ -326,7 +322,7 @@
          label="Map"
          layout="topleft"
          name="show_on_map_btn"
-         tool_tip="Show the Resident on the map"
+         tool_tip="Show the resident on the map"
          top="5"
          left_pad="3"
          width="45" />
@@ -346,7 +342,7 @@
          label="â–¼"
          layout="topleft"
          name="overflow_btn"
-         tool_tip="Pay money to or share inventory with the Resident"
+         tool_tip="Pay money to or share inventory with the resident"
          right="-1"
          top="5"
 	 left_pad="3"
@@ -379,4 +375,4 @@
         </layout_panel>
     
 </layout_stack>
-</panel>
+</panel>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/panel_region_covenant.xml b/indra/newview/skins/default/xui/en/panel_region_covenant.xml
index dc8f71c868a..ff55090f162 100644
--- a/indra/newview/skins/default/xui/en/panel_region_covenant.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_covenant.xml
@@ -135,8 +135,7 @@
      left="120"
      name="covenant_help_text"
      top_pad="10"
-     word_wrap="true"
-     width="360">
+     width="460">
         Changes to the covenant will show on all parcels in the estate.
     </text>
     <text
@@ -146,10 +145,9 @@
      left_delta="0"
      name="covenant_instructions"
      top_pad="5"
-     word_wrap="true"
-     font.style="ITALIC"
-     width="360">
-        Drag and drop a notecard to change the Covenant for this estate.
+     width="465">
+        Drag and drop a notecard to change
+        the Covenant for this Estate.
     </text>
 
     <text
diff --git a/indra/newview/skins/default/xui/en/panel_region_estate.xml b/indra/newview/skins/default/xui/en/panel_region_estate.xml
index 3980eb86d30..ba39e880249 100644
--- a/indra/newview/skins/default/xui/en/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_estate.xml
@@ -19,9 +19,9 @@
      left="10"
      name="estate_help_text"
      top="14"
-     word_wrap="true"
-     width="275">
-        Changes to settings on this tab will affect all regions in the estate.
+     width="313">
+        Changes to settings on this tab will affect all
+regions in the estate.
     </text>
     <text
      type="string"
@@ -138,7 +138,7 @@
      name="Only Allow"
      top="250"
      width="278">
-        Restrict Access to accounts verified by:
+        Restrict Access to Accounts Verified by:
     </text>
     <check_box
      follows="top|left"
@@ -147,7 +147,7 @@
      layout="topleft"
      left_delta="0"
      name="limit_payment"
-     tool_tip="Ban unidentified Residents"
+     tool_tip="Ban unidentified residents"
      top_pad="2"
      width="278" />
     <check_box
@@ -157,7 +157,7 @@
      layout="topleft"
      left_delta="0"
      name="limit_age_verified"
-     tool_tip="Ban Residents who have not verified their age. See the [SUPPORT_SITE] for more information."
+     tool_tip="Ban residents who have not verified their age. See the [SUPPORT_SITE] for more information."
      top_pad="2"
      width="278" />
     <check_box
diff --git a/indra/newview/skins/default/xui/en/panel_region_texture.xml b/indra/newview/skins/default/xui/en/panel_region_texture.xml
index 04dbf73be94..502a5804c31 100644
--- a/indra/newview/skins/default/xui/en/panel_region_texture.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_texture.xml
@@ -292,7 +292,7 @@
        name="height_text_lbl10"
        top_delta="30"
        width="400"
-       word_wrap="true">
+       wrap="true">
         These values represent the blend range for the textures above.
       </text>
       <text
@@ -303,7 +303,7 @@
        name="height_text_lbl11"
        top_delta="32"
        width="400"
-       word_wrap="true">
+       wrap="true">
         Measured in meters, the LOW value is the MAXIMUM height of Texture #1, and the HIGH value is the MINIMUM height of Texture #4.
       </text>
     <button
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 bfca2f2e46c..00f54feabde 100644
--- a/indra/newview/skins/default/xui/en/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml
@@ -42,36 +42,18 @@
     <button
      auto_resize="true"
      halign="right"
-     font="SansSerifSmall"
-     follows="right|top"
-     image_overlay=""
-     image_selected="spacer35.tga"
-     image_unselected="spacer35.tga"
-     image_pressed="spacer35.tga"
-     height="16"
-     right="-228"
-     label_shadow="false"
-     name="buycurrency"
-     tool_tip="My Balance"
-     top="5"
-     width="100" />
-    <button
-     auto_resize="true"
-     halign="right"
-     font="SansSerifSmall"
      follows="right|top"
      image_selected="BuyArrow_Over"
      image_unselected="BuyArrow_Over"
      image_pressed="BuyArrow_Press"
      height="16"
-     label="Buy L$"
-     label_color="EmphasisColor"
-     left_pad="0"
+     right="-128"
+     label_color="White"
      label_shadow="false"
-     name="buyL"
+     name="buycurrency"
      pad_right="20px"
-     tool_tip="Click to buy more L$"
-     top="5"
+     tool_tip="My Balance: Click to buy more L$"
+     top="3"
      width="100" />
     <text
      type="string"
@@ -80,27 +62,29 @@
      follows="right|bottom"
      halign="right"
      height="16"
-     top="7"
+     top="4"
      layout="topleft"
      left_pad="0"
      name="TimeText"
+     text_color="TimeTextColor"
      tool_tip="Current time (Pacific)"
      width="85">
         12:00 AM
     </text>
     <button
      follows="right|bottom"
-     height="15"
+     height="16"
      image_selected="AudioMute_Off"
      image_pressed="Audio_Press"
      image_unselected="Audio_Off"
      is_toggle="true"
      left_pad="18"
-     top="4"
+     top="1"
      name="volume_btn"
      tool_tip="Global Volume Control"
      width="16" />
     <text
+     enabled="true"
      follows="right|bottom"
      halign="center"
      height="12"
diff --git a/indra/newview/skins/default/xui/en/panel_volume_pulldown.xml b/indra/newview/skins/default/xui/en/panel_volume_pulldown.xml
deleted file mode 100644
index 60d4a7e00b5..00000000000
--- a/indra/newview/skins/default/xui/en/panel_volume_pulldown.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- background_opaque="true"
- background_visible="false"
- border_visible="false"
- border="false"
- chrome="true" 
- follows="bottom"
- height="150"
- layout="topleft"
- name="volumepulldown_floater"
- width="32">
-  <!-- floater background image -->
-  <icon
-   height="150"
-   image_name="Inspector_Background"
-   layout="topleft"
-   left="0"
-   name="normal_background"
-   top="0"
-   width="32" />
- <slider
-  control_name="AudioLevelMaster"
-  follows="left|top"
-  left="0"
-  top="1"
-  orientation="vertical"
-  height="120"
-  increment="0.05"
-  initial_value="0.5"
-  layout="topleft"
-  name="mastervolume"
-  show_text="false"
-  slider_label.halign="right"
-  top_pad="2"
-  volume="true">
-  <slider.commit_callback
-   function="Vol.setControlFalse"
-   parameter="MuteAudio" />
-  </slider>
-  <button
-    left="7"
-    top_pad="9"
-    width="18"
-    height="12"
-    follows="top|left"
-    name="prefs_btn"
-    image_unselected="Icon_Gear_Foreground"
-    image_disabled="Icon_Gear_Background"
-    image_pressed="Icon_Gear_Press"
-    scale_image="false">
-    <button.commit_callback
-       function="Vol.GoAudioPrefs" />
-  </button>
-</panel>
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 2dfcdf4a4cf..d26e855e2f6 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
@@ -153,19 +153,28 @@
 		     layout="topleft"
     		 left="5"
 		 name="CreatorNameLabel"
-		  top_pad="12"
+		  top_pad="10"
 		     width="78">
 	        Creator:
     	</text>
+	    	<avatar_icon
+     follows="top|left"
+     height="20"
+     default_icon_name="Generic_Person"
+     layout="topleft"
+     left_pad="0"
+      top_delta="-6"
+     mouse_opaque="true"
+     width="20" />
 	    <text
 		     type="string"
-     follows="left|right|top"
+     follows="left|right"
      font="SansSerifSmall"
      height="15"
      layout="topleft"
-     left_pad="0"
+     left_pad="5"
              name="Creator Name"
-		     top_delta="0"
+		     top_delta="6"
 		     width="140">
 	        Erica Linden
 	     </text>
@@ -177,19 +186,28 @@
 			layout="topleft"
 			left="5"
 			name="Owner:"
-			top_pad="15"
+			top_pad="10"
 			 width="78">
 			    Owner:
 	     </text>
+	     <avatar_icon
+     follows="top|left"
+     height="20"
+     default_icon_name="Generic_Person"
+     layout="topleft"
+     left_pad="0"
+	    top_delta="-6"
+	    mouse_opaque="true"
+     width="20" />
 	     <text
 			    type="string"
-			    follows="left|right|top"
+			    follows="left|right"
 			    font="SansSerifSmall"
 			    height="15"
 			    layout="topleft"
-			    left_pad="0"
+			    left_pad="5"
 			    name="Owner Name"
-			    top_delta="0"
+			    top_delta="6"
 			    width="140">
 			    Erica Linden
 	     </text>
@@ -201,7 +219,7 @@
 			 layout="topleft"
 			 left="5"
 			name="Group_label"
-			top_pad="15"
+			top_pad="10"
 			width="78">
 			    Group:
 	     </text>
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index fbdac7164dd..bd868ef61e1 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -67,7 +67,7 @@
 	<!-- tooltips for Urls -->
 	<string name="TooltipHttpUrl">Click to view this web page</string>
 	<string name="TooltipSLURL">Click to view this location's information</string>
-	<string name="TooltipAgentUrl">Click to view this Resident's profile</string>
+	<string name="TooltipAgentUrl">Click to view this resident's profile</string>
 	<string name="TooltipGroupUrl">Click to view this group's description</string>
 	<string name="TooltipEventUrl">Click to view this event's description</string>
 	<string name="TooltipClassifiedUrl">Click to view this classified</string>
@@ -1609,11 +1609,11 @@ Sends an HTTP request to the specified url with the body of the request and para
 	</string>
 	<string name="LSLTipText_llResetLandBanList" translate="false">
 llResetLandBanList()
-Removes all Residents from the land ban list
+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
+Removes all residents from the land access/pass list
 	</string>
 	<string name="LSLTipText_llGetObjectPrimCount" translate="false">
 integer llGetObjectPrimCount(key object_id)
@@ -1621,7 +1621,7 @@ 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.
+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">
@@ -1808,7 +1808,7 @@ Clears (deletes) the media and all params from the given face.
 
 	<!-- inventory -->
 	<string name="InventoryNoMatchingItems">No matching items found in inventory.</string>
-  <string name="FavoritesNoMatchingItems">Drag a landmark here to add it to your favorites.</string>
+  <string name="FavoritesNoMatchingItems">Drag and drop a landmark here to add to your favorites.</string>
 	<string name="InventoryNoTexture">
 		You do not have a copy of
 this texture in your inventory
@@ -2040,7 +2040,7 @@ this texture in your inventory
 	<string name="RegionInfoAllEstatesYouManage">
 		all estates that you manage for [OWNER]
 	</string>
-	<string name="RegionInfoAllowedResidents">Allowed Residents: ([ALLOWEDAGENTS], max [MAXACCESS])</string>
+	<string name="RegionInfoAllowedResidents">Allowed residents: ([ALLOWEDAGENTS], max [MAXACCESS])</string>
 	<string name="RegionInfoAllowedGroups">Allowed groups: ([ALLOWEDGROUPS], max [MAXACCESS])</string>
 
 	<!-- script limits floater -->
@@ -2111,7 +2111,7 @@ this texture in your inventory
 
 	<!-- Mute -->
 	<string name="MuteByName">(by name)</string>
-	<string name="MuteAgent">(Resident)</string>
+	<string name="MuteAgent">(resident)</string>
 	<string name="MuteObject">(object)</string>
 	<string name="MuteGroup">(group)</string>
 
@@ -2938,7 +2938,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
     Click the [BUTTON NAME] button to accept/connect to this voice chat.
   </string>
   <string name="muted_message">
-    You have blocked this Resident. Sending a message will automatically unblock them.
+    You have blocked this resident. Sending a message will automatically unblock them.
   </string>
   <!--Some times string name is getting from the body of server response.
   For ex.: from gIMMgr::showSessionStartError in the LLViewerChatterBoxSessionStartReply::post. 
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml
index 693c43f141b..af0d3382565 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <chiclet_im_adhoc
+ font="SansSerif"
  height="25"
  name="im_adhoc_chiclet"
  show_speaker="false"
@@ -11,14 +12,15 @@
      left="25"
      name="speaker"
      visible="false"
-     width="20" />
+     width="20"/>
     <chiclet_im_adhoc.avatar_icon
      follows="left|top|bottom"
      height="22"
      mouse_opaque="true"
      name="adhoc_icon"
-     width="22" />
+     width="22"/>
     <chiclet_im_adhoc.unread_notifications
+     font="SansSerif"
      font_halign="center"
      height="25"
      left="25"
@@ -27,13 +29,13 @@
      text_color="white"
      v_pad="5"
      visible="false"
-     width="20" />
+     width="20"/>
     <chiclet_im_adhoc.new_message_icon
-  bottom="11"
-  height="14"
-  image_name="Unread_Chiclet"
-  left="12"
-  name="new_message_icon"
-  visible="false"
-  width="14" />
+     bottom="12"
+     height="13"
+     image_name="Unread_Chiclet"
+     left="12"
+     name="new_message_icon"
+     visible="false"
+     width="13" />
 </chiclet_im_adhoc>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml
index f4fc58701c6..b1988a2d200 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <chiclet_im_group
+ font="SansSerif"
  height="25"
  name="im_group_chiclet"
  show_speaker="false"
@@ -11,17 +12,17 @@
      left="25"
      name="speaker"
      visible="false"
-     width="20" />
+     width="20"/>
     <chiclet_im_group.group_icon
      default_icon="Generic_Group"
      follows="left|top|bottom"
-     height="18"
-  bottom_pad="4"
+     height="22"
      mouse_opaque="true"
      name="group_icon"
-     width="18" />
+     width="22"/>
     <chiclet_im_group.unread_notifications
      height="25"
+     font="SansSerif"
      font_halign="center"
      left="25"
      mouse_opaque="false"
@@ -31,11 +32,11 @@
      visible="false"
      width="20"/>
     <chiclet_im_group.new_message_icon
-bottom="11"
-  height="14"
-  image_name="Unread_Chiclet"
-  left="12"
-  name="new_message_icon"
-  visible="false"
-  width="14" />
+     bottom="12"
+     height="13"
+     image_name="Unread_Chiclet"
+     left="12"
+     name="new_message_icon"
+     visible="false"
+     width="13" />
 </chiclet_im_group>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml
index 535113f7176..52fbce0de76 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <chiclet_im_p2p
+ font="SansSerif"
  height="25"
  name="im_p2p_chiclet"
  show_speaker="false"
@@ -17,9 +18,10 @@
      height="22"
      mouse_opaque="true"
      name="avatar_icon"
-     width="22" />
+     width="22"/>
     <chiclet_im_p2p.unread_notifications
      height="25"
+     font="SansSerif"
      font_halign="center"
      left="25"
      mouse_opaque="false"
@@ -29,11 +31,11 @@
      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" />
+     bottom="12"
+     height="13"
+     image_name="Unread_Chiclet"
+     left="12"
+     name="new_message_icon"
+     visible="false"
+     width="13" />
 </chiclet_im_p2p>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml
index 86bea9be504..33f85a964cf 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml
@@ -1,22 +1,22 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <chiclet_offer
+ font="SansSerif"
  height="25"
  name="offer_chiclet"
  width="25">
  <chiclet_offer.icon
-  default_icon="Generic_Object_Small"
+  default_icon="Generic_Object_Small" 
   follows="all"
-  height="20"
+  height="22"
   mouse_opaque="false"
   name="chiclet_icon"
-  bottom_pad="2"
-  width="20" />
+  width="22"/>
  <chiclet_offer.new_message_icon
-  bottom="11"
-  height="14"
+  bottom="12"
+  height="13"
   image_name="Unread_Chiclet"
   left="12"
   name="new_message_icon"
   visible="false"
-  width="14" />
+  width="13" />
 </chiclet_offer>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml
index b1f9f5b0e80..560c8e6ea5c 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml
@@ -1,22 +1,22 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <chiclet_script
+ font="SansSerif"
  height="25"
  name="script_chiclet"
  width="25">
  <chiclet_script.icon
   follows="all"
-  height="20"
-  image_name="Generic_Object_Small"
+  height="22"
+  image_name="Generic_Object_Small" 
   mouse_opaque="false"
   name="chiclet_icon"
-  width="20"
-  bottom_pad="2" />
+  width="22"/>
  <chiclet_script.new_message_icon
-  bottom="11"
-  height="14"
+  bottom="12"
+  height="13"
   image_name="Unread_Chiclet"
   left="12"
   name="new_message_icon"
   visible="false"
-  width="14" />
+  width="13" />
 </chiclet_script>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml b/indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml
new file mode 100644
index 00000000000..4229f34c09f
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<gesture_combo_box
+           label="Gestures" 
+           list_position="below"
+           max_chars="20"
+           follows="right|top">
+  <gesture_combo_box.combo_button name="Combobox Button"
+                          label=""
+                          hover_glow_amount="0.15"
+                          scale_image="true"
+                          image_unselected="ComboButton_Off"
+                          image_selected="ComboButton_Selected"
+                          image_disabled="ComboButton_Disabled"
+                          image_disabled_selected="ComboButton_Disabled_Selected" />
+  <gesture_combo_box.drop_down_button name="Drop Down Button"
+                              label=""
+                              halign="center"
+                              hover_glow_amount="0.15"
+                              scale_image="true"
+                 image_selected="PushButton_Selected_Press"
+                 image_pressed="PushButton_Press"
+		 image_pressed_selected="PushButton_Selected_Press"
+                              image_unselected="PushButton_Off"
+                              image_disabled="PushButton_Disabled"
+                              image_disabled_selected="PushButton_Selected_Disabled" />
+  <gesture_combo_box.combo_list bg_writeable_color="MenuDefaultBgColor"
+                                scroll_bar_bg_visible="false" />
+  <gesture_combo_box.combo_editor name="Combo Text Entry"
+                          select_on_focus="true" />
+</gesture_combo_box>
diff --git a/indra/newview/skins/default/xui/en/widgets/gesture_combo_list.xml b/indra/newview/skins/default/xui/en/widgets/gesture_combo_list.xml
deleted file mode 100644
index 808683864d9..00000000000
--- a/indra/newview/skins/default/xui/en/widgets/gesture_combo_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<gesture_combo_list
-    follows="right|top">
-    <gesture_combo_list.combo_button
-     name="Combolist Button"
-     label=""
-     layout="topleft"
-     halign="center"
-     hover_glow_amount="0.15"
-     mouse_opaque="false"
-     scale_image="true"
-     image_selected="PushButton_Selected_Press"
-     image_pressed="PushButton_Press"
-     image_pressed_selected="PushButton_Selected_Press"
-     image_unselected="PushButton_Off"
-     image_disabled="PushButton_Disabled"
-     image_disabled_selected="PushButton_Selected_Disabled" />
-    <gesture_combo_list.combo_list 
-     bg_writeable_color="MenuDefaultBgColor"
-     scroll_bar_bg_visible="false" />
-</gesture_combo_list>
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..67bb7c1896f 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="22"
     left="2"
     follows="right|top"
     image_name="Parcel_Damage_Dark"
@@ -112,19 +112,17 @@
 	font="SansSerifSmall"
 	text_color="TextFgColor"
 	/>
-  <combo_button
-		name="Location History"
-                label=""
-                pad_right="0"/>
-  <combo_list
-	      bg_writeable_color="MenuDefaultBgColor"
-	      page_lines="10"
+
+  <combo_button name="Location History"
+                          label=""
+                          pad_right="0"/>
+  <combo_list bg_writeable_color="MenuDefaultBgColor" page_lines="10"
               scroll_bar_bg_visible="true" />
   <combo_editor name="Combo Text Entry"
-                text_pad_left="27"
+                text_pad_left="22"
                 select_on_focus="false"
                 font="SansSerifSmall"
                 bevel_style="none"
                 border_style="line"
-                border.border_thickness="0" />
+                border.border_thickness="0"/>
 </location_input>
diff --git a/indra/newview/skins/default/xui/es/floater_buy_currency.xml b/indra/newview/skins/default/xui/es/floater_buy_currency.xml
index 1ecb813dd1e..eb25493adce 100644
--- a/indra/newview/skins/default/xui/es/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/es/floater_buy_currency.xml
@@ -52,9 +52,6 @@
 	<text name="total_amount">
 		[AMT] L$
 	</text>
-	<text name="currency_links">
-		[http://www.secondlife.com/my/account/payment_method_management.php?lang=es-ES payment method] | [http://www.secondlife.com/my/account/currency.php?lang=es-ES currency] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=es-ES exchange rate]
-	</text>
 	<text name="purchase_warning_repurchase" right="-10">
 		Confirmando esta compra sólo compra la moneda.
 Tendrá que intentar de nuevo la operación.
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 9a92c446f25..e6a49cbc6fe 100644
--- a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
@@ -46,12 +46,12 @@
 		[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/ payment method] | [http://www.secondlife.com/ currency] | [http://www.secondlife.com exchange rate]
 	</text>
 	<text name="exchange_rate_note">
 		Saisissez à nouveau le montant pour voir le taux de change actuel.
 	</text>
-	<text name="purchase_warning_repurchase">
+	<text bottom_delta="-64" height="48" name="purchase_warning_repurchase" right="-10">
 		La confirmation de cet achat n&apos;achète que des L$, pas l&apos;objet.
 	</text>
 	<text bottom_delta="16" name="purchase_warning_notenough">
diff --git a/indra/newview/skins/default/xui/fr/floater_help_browser.xml b/indra/newview/skins/default/xui/fr/floater_help_browser.xml
index 20894d42fc3..0eb3ea3d219 100644
--- a/indra/newview/skins/default/xui/fr/floater_help_browser.xml
+++ b/indra/newview/skins/default/xui/fr/floater_help_browser.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="floater_help_browser" title="NAVIGATEUR D&apos;AIDE">
 	<floater.string name="home_page_url">
-		http://fr.secondlife.com
+		http://www.secondlife.com
 	</floater.string>
 	<floater.string name="support_page_url">
-		http://fr.secondlife.com/support
+		http://support.secondlife.com
 	</floater.string>
 	<layout_stack name="stack1">
 		<layout_panel name="external_controls">
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index 3ff829bfb7f..2f0c7038fc0 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -166,7 +166,7 @@
 	<string name="TooltipSLAPP">
 		Cliquez pour exécuter la commande secondlife:// command
 	</string>
-	<string name="CurrentURL" value=" URL actuelle : [CurrentURL]"/>
+	<string name="CurrentURL" value="URL actuelle : [CurrentURL]"/>
 	<string name="SLurlLabelTeleport">
 		Me téléporter vers
 	</string>
@@ -174,7 +174,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)
@@ -821,46 +821,46 @@
 	<string name="InventoryNoTexture">
 		Vous n&apos;avez pas de copie de cette texture dans votre inventaire
 	</string>
-	<string name="no_transfer" value=" (pas de transfert)"/>
-	<string name="no_modify" value=" (pas de modification)"/>
-	<string name="no_copy" value=" (pas de copie)"/>
-	<string name="worn" value=" (porté)"/>
-	<string name="link" value=" (lien)"/>
-	<string name="broken_link" value=" (broken_link)"/>
+	<string name="no_transfer" value="(pas de transfert)"/>
+	<string name="no_modify" value="(pas de modification)"/>
+	<string name="no_copy" value="(pas de copie)"/>
+	<string name="worn" value="(porté)"/>
+	<string name="link" value="(lien)"/>
+	<string name="broken_link" value="(broken_link)"/>
 	<string name="LoadingContents">
 		chargement des contenus en cours...
 	</string>
 	<string name="NoContents">
 		Aucun contenu
 	</string>
-	<string name="WornOnAttachmentPoint" value=" (porté sur [ATTACHMENT_POINT])"/>
+	<string name="WornOnAttachmentPoint" value="(porté sur [ATTACHMENT_POINT])"/>
 	<string name="PermYes">
 		Oui
 	</string>
 	<string name="PermNo">
 		Non
 	</string>
-	<string name="Chat" value=" Chat :"/>
-	<string name="Sound" value=" Son :"/>
-	<string name="Wait" value=" --- Attendre :"/>
-	<string name="AnimFlagStop" value=" Arrêter l&apos;animation :"/>
-	<string name="AnimFlagStart" value=" Démarrer l&apos;animation :"/>
-	<string name="Wave" value=" Faire signe"/>
-	<string name="HelloAvatar" value=" Bonjour, avatar !"/>
-	<string name="ViewAllGestures" value="  Tout afficher &gt;&gt;"/>
-	<string name="Animations" value=" Animations,"/>
-	<string name="Calling Cards" value=" Cartes de visite,"/>
-	<string name="Clothing" value=" Habits,"/>
-	<string name="Gestures" value=" Gestes,"/>
-	<string name="Landmarks" value=" Repères,"/>
-	<string name="Notecards" value=" Notes,"/>
-	<string name="Objects" value=" Objets,"/>
-	<string name="Scripts" value=" Scripts,"/>
-	<string name="Sounds" value=" Sons,"/>
-	<string name="Textures" value=" Textures,"/>
-	<string name="Snapshots" value=" Photos,"/>
-	<string name="No Filters" value="Non "/>
-	<string name="Since Logoff" value=" - Depuis la déconnexion"/>
+	<string name="Chat" value="Chat :"/>
+	<string name="Sound" value="Son :"/>
+	<string name="Wait" value="--- Attendre :"/>
+	<string name="AnimFlagStop" value="Arrêter l&apos;animation :"/>
+	<string name="AnimFlagStart" value="Démarrer l&apos;animation :"/>
+	<string name="Wave" value="Faire signe"/>
+	<string name="HelloAvatar" value="Bonjour, avatar !"/>
+	<string name="ViewAllGestures" value="Tout afficher &gt;&gt;"/>
+	<string name="Animations" value="Animations,"/>
+	<string name="Calling Cards" value="Cartes de visite,"/>
+	<string name="Clothing" value="Habits,"/>
+	<string name="Gestures" value="Gestes,"/>
+	<string name="Landmarks" value="Repères,"/>
+	<string name="Notecards" value="Notes,"/>
+	<string name="Objects" value="Objets,"/>
+	<string name="Scripts" value="Scripts,"/>
+	<string name="Sounds" value="Sons,"/>
+	<string name="Textures" value="Textures,"/>
+	<string name="Snapshots" value="Photos,"/>
+	<string name="No Filters" value="Non"/>
+	<string name="Since Logoff" value="- Depuis la déconnexion"/>
 	<string name="InvFolder My Inventory">
 		Mon inventaire
 	</string>
@@ -1239,13 +1239,13 @@
 	<string name="GroupsNone">
 		aucun
 	</string>
-	<string name="Group" value=" (groupe)"/>
+	<string name="Group" value="(groupe)"/>
 	<string name="Unknown">
 		(Inconnu)
 	</string>
-	<string name="SummaryForTheWeek" value="Récapitulatif de la semaine, début le "/>
-	<string name="NextStipendDay" value="Prochaine prime le "/>
-	<string name="GroupIndividualShare" value="                      Groupe    Part individuelle"/>
+	<string name="SummaryForTheWeek" value="Récapitulatif de la semaine, début le"/>
+	<string name="NextStipendDay" value="Prochaine prime le"/>
+	<string name="GroupIndividualShare" value="Groupe 	 Part individuelle"/>
 	<string name="Balance">
 		Solde
 	</string>
@@ -1324,8 +1324,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>
@@ -1616,7 +1616,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.
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..a22850bc4b9 100644
--- a/indra/newview/skins/default/xui/it/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/it/floater_buy_currency.xml
@@ -52,11 +52,10 @@
 	<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]
-	</text>
-	<text name="purchase_warning_repurchase">
-		Confermando questa operazione si acquisterà solo la valuta. Per acquistare il bene, dovrai riprovare l&apos;operazione nuovamente.
+	<text name="purchase_warning_repurchase" height="48" bottom_delta="-64" right="-10">
+		Confermando questa operazione si acquisterà solo
+la valuta. Per acquistare il bene, dovrai riprovare
+l&apos;operazione nuovamente.
 	</text>
 	<text name="purchase_warning_notenough" bottom_delta="16">
 		Non stai comprando abbastanza denaro.
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 9d49a389822..03cd0f391ad 100644
--- a/indra/newview/skins/default/xui/ja/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/ja/floater_buy_currency.xml
@@ -46,7 +46,7 @@
 		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]
+		[http://www.secondlife.com/ payment method] | [http://www.secondlife.com/ currency] | [http://www.secondlife.com exchange rate]
 	</text>
 	<text name="exchange_rate_note">
 		金額を再入力して最新換算レートを確認します。
diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml
index b37d97bc5dc..4d395b474f3 100644
--- a/indra/newview/skins/default/xui/ja/strings.xml
+++ b/indra/newview/skins/default/xui/ja/strings.xml
@@ -166,7 +166,7 @@
 	<string name="TooltipSLAPP">
 		クリックして secondlife:// コマンドを出す
 	</string>
-	<string name="CurrentURL" value=" 現在のURL: [CurrentURL]"/>
+	<string name="CurrentURL" value="現在のURL: [CurrentURL]"/>
 	<string name="SLurlLabelTeleport">
 		テレポート
 	</string>
@@ -174,7 +174,7 @@
 		地図に表示
 	</string>
 	<string name="BUTTON_CLOSE_DARWIN">
-		閉じる (&#8984;W)
+		閉じる (⌘W)
 	</string>
 	<string name="BUTTON_CLOSE_WIN">
 		閉じる (Ctrl+W)
@@ -821,33 +821,33 @@
 	<string name="InventoryNoTexture">
 		持ち物内にこのテクスチャのコピーがありません
 	</string>
-	<string name="no_transfer" value=" (再販/プレゼント不可)"/>
-	<string name="no_modify" value=" (編集不可)"/>
-	<string name="no_copy" value=" (コピー不可)"/>
-	<string name="worn" value=" (着用中)"/>
-	<string name="link" value=" (リンク)"/>
-	<string name="broken_link" value=" (壊れたリンク)"/>
+	<string name="no_transfer" value="(再販/プレゼント不可)"/>
+	<string name="no_modify" value="(編集不可)"/>
+	<string name="no_copy" value="(コピー不可)"/>
+	<string name="worn" value="(着用中)"/>
+	<string name="link" value="(リンク)"/>
+	<string name="broken_link" value="(壊れたリンク)"/>
 	<string name="LoadingContents">
 		コンテンツをロード中です...
 	</string>
 	<string name="NoContents">
 		コンテンツなし
 	</string>
-	<string name="WornOnAttachmentPoint" value=" ([ATTACHMENT_POINT] に装着中)"/>
+	<string name="WornOnAttachmentPoint" value="([ATTACHMENT_POINT] に装着中)"/>
 	<string name="PermYes">
 		はい
 	</string>
 	<string name="PermNo">
 		いいえ
 	</string>
-	<string name="Chat" value=" チャット:"/>
-	<string name="Sound" value=" サウンド:"/>
-	<string name="Wait" value=" --- 待機::"/>
-	<string name="AnimFlagStop" value=" アニメーションを停止:"/>
-	<string name="AnimFlagStart" value=" アニメーションを開始:"/>
-	<string name="Wave" value=" 手を振る"/>
-	<string name="HelloAvatar" value=" やあ、アバター!"/>
-	<string name="ViewAllGestures" value="  すべて表示 &gt;&gt;"/>
+	<string name="Chat" value="チャット:"/>
+	<string name="Sound" value="サウンド:"/>
+	<string name="Wait" value="--- 待機::"/>
+	<string name="AnimFlagStop" value="アニメーションを停止:"/>
+	<string name="AnimFlagStart" value="アニメーションを開始:"/>
+	<string name="Wave" value="手を振る"/>
+	<string name="HelloAvatar" value="やあ、アバター!"/>
+	<string name="ViewAllGestures" value="すべて表示 &gt;&gt;"/>
 	<string name="Animations" value="アニメーション、"/>
 	<string name="Calling Cards" value="コーリングカード、"/>
 	<string name="Clothing" value="衣類、"/>
@@ -859,8 +859,8 @@
 	<string name="Sounds" value="サウンド、"/>
 	<string name="Textures" value="テクスチャ、"/>
 	<string name="Snapshots" value="スナップショット、"/>
-	<string name="No Filters" value="いいえ "/>
-	<string name="Since Logoff" value=" - ログオフ以来"/>
+	<string name="No Filters" value="いいえ"/>
+	<string name="Since Logoff" value="- ログオフ以来"/>
 	<string name="InvFolder My Inventory">
 		マイ 持ち物
 	</string>
@@ -1239,13 +1239,13 @@
 	<string name="GroupsNone">
 		なし
 	</string>
-	<string name="Group" value=" (グループ)"/>
+	<string name="Group" value="(グループ)"/>
 	<string name="Unknown">
 		(不明)
 	</string>
 	<string name="SummaryForTheWeek" value="今週のまとめ。開始日は"/>
 	<string name="NextStipendDay" value="次回のお小遣い支給日は"/>
-	<string name="GroupIndividualShare" value="                      グループ       個人の割り当て"/>
+	<string name="GroupIndividualShare" value="グループ   個人の割り当て"/>
 	<string name="Balance">
 		残高
 	</string>
@@ -1324,8 +1324,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>
@@ -1616,7 +1616,7 @@
 		致命的なエラー
 	</string>
 	<string name="MBRequiresAltiVec">
-		 [APP_NAME] は、AltiVec搭載のプロセッサが必要です。(G4 以降)
+		[APP_NAME] は、AltiVec搭載のプロセッサが必要です。(G4 以降)
 	</string>
 	<string name="MBAlreadyRunning">
 		[APP_NAME] はすでに実行中です。
diff --git a/indra/newview/skins/default/xui/pt/floater_buy_currency.xml b/indra/newview/skins/default/xui/pt/floater_buy_currency.xml
index f17c069ecf0..aac8438fdcf 100644
--- a/indra/newview/skins/default/xui/pt/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/pt/floater_buy_currency.xml
@@ -52,9 +52,6 @@
 	<text name="total_amount">
 		L$ [AMT]
 	</text>
-	<text name="currency_links">
-		[http://www.secondlife.com/my/account/payment_method_management.php?lang=pt-BR payment method] | [http://www.secondlife.com/my/account/currency.php?lang=pt-BR currency] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=pt-BR exchange rate]
-	</text>
 	<text name="purchase_warning_repurchase">
 		Confirmando esta compra só compra a moeda.
 Você precisará tentar novamente a operação.
diff --git a/install.xml b/install.xml
index e912ddfd8b0..41f8a28044c 100644
--- a/install.xml
+++ b/install.xml
@@ -1014,23 +1014,23 @@ anguage Infrstructure (CLI) international standard</string>
           <key>darwin</key>
           <map>
             <key>md5sum</key>
-            <string>2eb58f544c0d912aa382de2c947be7f1</string>
+            <string>5362a53488693f9bd7d9083758af25eb</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-4.6-darwin-20100104.tar.bz2</uri>
+            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-4.6-darwin-20091218.tar.bz2</uri>
           </map>
           <key>linux</key>
           <map>
             <key>md5sum</key>
-            <string>c4c40fca14a8bd32096f8a27c75c526f</string>
+            <string>09674cbae982e7e7f6ebc7e1d06580e8</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-linux-20100105c.tar.bz2</uri>
+            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-linux-20091216.tar.bz2</uri>
           </map>
           <key>windows</key>
           <map>
             <key>md5sum</key>
-            <string>b50db4fdb833111e1e679188e4cb5815</string>
+            <string>4dd305f2ce38b2e55a2014ad3a2de34d</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-windows-qt4.6-20100104.tar.bz2</uri>
+            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-windows-qt4.6-20091218.tar.bz2</uri>
           </map>
         </map>
       </map>
-- 
GitLab