diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h
index cd76bfe709ebf41690dea87ff9ed286b51ffa48f..8af79c90fd6417602f22e60c1b7d10f8ed861573 100644
--- a/indra/llcommon/llfasttimer.h
+++ b/indra/llcommon/llfasttimer.h
@@ -1,11 +1,11 @@
-/** 
+/**
  * @file llfasttimer.h
  * @brief Declaration of a fast timer.
  *
  * $LicenseInfo:firstyear=2004&license=viewergpl$
- * 
+ *
  * Copyright (c) 2004-2009, Linden Research, Inc.
- * 
+ *
  * Second Life Viewer Source Code
  * The source code in this file ("Source Code") is provided by Linden Lab
  * to you under the terms of the GNU General Public License, version 2.0
@@ -13,17 +13,17 @@
  * ("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.
@@ -69,7 +69,7 @@
 inline U32 get_cpu_clock_count_32()
 {
 	U32 ret_val;
-	__asm 
+	__asm
 	{
         _emit   0x0f
         _emit   0x31
@@ -85,7 +85,7 @@ inline U32 get_cpu_clock_count_32()
 inline U64 get_cpu_clock_count_64()
 {
 	U64 ret_val;
-	__asm 
+	__asm
 	{
         _emit   0x0f
         _emit   0x31
@@ -99,21 +99,21 @@ inline U64 get_cpu_clock_count_64()
 #else
 #define LL_INLINE
 #endif
-
-#if (LL_LINUX || LL_SOLARIS || LL_DARWIN) && (defined(__i386__) || defined(__amd64__))
-inline U32 get_cpu_clock_count_32()
-{																	
-	U64 x;															
-	__asm__ volatile (".byte 0x0f, 0x31": "=A"(x));					
-	return (U32)x >> 8;													
-}
-
-inline U32 get_cpu_clock_count_64()
-{																	
-	U64 x;
-	__asm__ volatile (".byte 0x0f, 0x31": "=A"(x));
-	return x >> 8;
-}
+
+#if (LL_LINUX || LL_SOLARIS || LL_DARWIN) && (defined(__i386__) || defined(__amd64__))
+inline U32 get_cpu_clock_count_32()
+{
+	U64 x;
+	__asm__ volatile (".byte 0x0f, 0x31": "=A"(x));
+	return (U32)x >> 8;
+}
+
+inline U32 get_cpu_clock_count_64()
+{
+	U64 x;
+	__asm__ volatile (".byte 0x0f, 0x31": "=A"(x));
+	return x >> 8;
+}
 #endif
 
 #if ( LL_DARWIN && !(defined(__i386__) || defined(__amd64__))) || (LL_SOLARIS && defined(__sparc__))
@@ -128,7 +128,7 @@ inline U32 get_cpu_clock_count_32()
 }
 
 inline U32 get_cpu_clock_count_64()
-{																	
+{
 	return get_clock_count();
 }
 #endif
@@ -158,7 +158,7 @@ class LL_COMMON_API LLFastTimer
 	};
 
 	// stores a "named" timer instance to be reused via multiple LLFastTimer stack instances
-	class LL_COMMON_API NamedTimer 
+	class LL_COMMON_API NamedTimer
 	:	public LLInstanceTracker<NamedTimer>
 	{
 		friend class DeclareTimer;
@@ -193,7 +193,7 @@ class LL_COMMON_API LLFastTimer
 
 		FrameState& getFrameState() const;
 
-	private: 
+	private:
 		friend class LLFastTimer;
 		friend class NamedTimerFactory;
 
@@ -204,14 +204,14 @@ class LL_COMMON_API LLFastTimer
 		// recursive call to gather total time from children
 		static void accumulateTimings();
 
-		// updates cumulative times and hierarchy, 
+		// updates cumulative times and hierarchy,
 		// can be called multiple times in a frame, at any point
 		static void processTimes();
 
 		static void buildHierarchy();
 		static void resetFrame();
 		static void reset();
-	
+
 		//
 		// members
 		//
@@ -247,7 +247,7 @@ class LL_COMMON_API LLFastTimer
 
 	private:
 		NamedTimer&		mTimer;
-		FrameState*		mFrameState; 
+		FrameState*		mFrameState;
 	};
 
 public:
@@ -267,7 +267,7 @@ class LL_COMMON_API LLFastTimer
 		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;
@@ -305,7 +305,7 @@ class LL_COMMON_API LLFastTimer
 		U64 timer_end = get_cpu_clock_count_64();
 		sTimerCycles += timer_end - timer_start;
 		sTimerCalls++;
-#endif	
+#endif
 	}
 
 public:
@@ -321,13 +321,13 @@ class LL_COMMON_API LLFastTimer
 	typedef std::vector<FrameState> info_list_t;
 	static info_list_t& getFrameStateList();
 
-	
+
 	// call this once a frame to reset timers
 	static void nextFrame();
 
 	// dumps current cumulative frame stats to log
 	// call nextFrame() to reset timers
-	static void dumpCurTimes(); 
+	static void dumpCurTimes();
 
 	// call this to reset timer hierarchy, averages, etc.
 	static void reset();
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index 3734a22f7ef6abdbce453c43358eecde0143577d..4f519afa06cce0a50fefa230e28c95e106e31ef2 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -2388,10 +2388,12 @@ void LLFloaterView::adjustToFitScreen(LLFloater* floater, BOOL allow_partial_out
 			new_height = llmax(new_height, min_height);
 
 			LLRect new_rect;
-			new_rect.setLeftTopAndSize(view_rect.mTop,view_rect.mLeft,new_width, new_height);
+			new_rect.setLeftTopAndSize(view_rect.mLeft,view_rect.mTop,new_width, new_height);
 
 			floater->reshape( new_width, new_height, TRUE );
 			floater->setRect(new_rect);
+
+			floater->translateIntoRect( getLocalRect(), false );
 		}
 	}
 
diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp
index a53a30b501200d5a61b3bebb620a8f182b61617a..4e84013db0c37e037ea5d1cfb7ad76b01b914158 100644
--- a/indra/llui/llscrolllistctrl.cpp
+++ b/indra/llui/llscrolllistctrl.cpp
@@ -142,6 +142,7 @@ LLScrollListCtrl::Params::Params()
 	contents(""),
 	scroll_bar_bg_visible("scroll_bar_bg_visible"),
 	scroll_bar_bg_color("scroll_bar_bg_color")
+	, border("border")
 {
 	name = "scroll_list";
 	mouse_opaque = true;
@@ -231,10 +232,8 @@ LLScrollListCtrl::LLScrollListCtrl(const LLScrollListCtrl::Params& p)
 	if (p.has_border)
 	{
 		LLRect border_rect = getLocalRect();
-		LLViewBorder::Params params;
-		params.name("dig border");
+		LLViewBorder::Params params = p.border;
 		params.rect(border_rect);
-		params.bevel_style(LLViewBorder::BEVEL_IN);
 		mBorder = LLUICtrlFactory::create<LLViewBorder> (params);
 		addChild(mBorder);
 	}
diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h
index 78bc60db6ed5e7f84f8a5be5621ace1c9deb3407..907dc90bead1c9ca429e60cf1f98a4519d0f8776 100644
--- a/indra/llui/llscrolllistctrl.h
+++ b/indra/llui/llscrolllistctrl.h
@@ -51,6 +51,7 @@
 #include "lldate.h"
 #include "llscrolllistitem.h"
 #include "llscrolllistcolumn.h"
+#include "llviewborder.h"
 
 class LLScrollListCell;
 class LLTextBox;
@@ -109,6 +110,8 @@ class LLScrollListCtrl : public LLUICtrl, public LLEditMenuHandler,
 							scroll_bar_bg_color;
 
 		Optional<Contents> contents;
+
+		Optional<LLViewBorder::Params> border;
 		
 		Params();
 	};
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 69336243daa8e0aa8a6a66a060718b5ff71fd895..53ac1dc0b95cd08de2c30209c6885bcd24b84d60 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -3664,17 +3664,6 @@
       <key>Value</key>
       <string />
     </map>
-    <key>IMInChat</key>
-    <map>
-      <key>Comment</key>
-      <string>Copy IM into chat console</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
     <key>IMShowTimestamps</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index 1d739f07b1503c41ecee1e34712408f90ba5af07..5497d6121fb7a7035e6050efd96255e50786b03b 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -1293,11 +1293,12 @@ void LLChicletPanel::onChicletClick(LLUICtrl*ctrl,const LLSD&param)
 
 void LLChicletPanel::removeChiclet(chiclet_list_t::iterator it)
 {
-	mScrollArea->removeChild(*it);
+	LLChiclet* chiclet = *it;
+	mScrollArea->removeChild(chiclet);
 	mChicletList.erase(it);
 	
 	arrange();
-	(*it)->die();
+	chiclet->die();
 }
 
 void LLChicletPanel::removeChiclet(S32 index)
diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp
index 72074955d1436237a7958eecd210ddf55e04bf5b..47f1b7c9f544bd761fff38ea65357392ebbff3fb 100644
--- a/indra/newview/llcompilequeue.cpp
+++ b/indra/newview/llcompilequeue.cpp
@@ -446,10 +446,20 @@ void LLFloaterCompileQueue::scriptArrived(LLVFS *vfs, const LLUUID& asset_id,
 
 		if( LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE == status )
 		{
+			//TODO* CHAT: how to show this?
+			//LLSD args;
+			//args["MESSAGE"] = LLTrans::getString("CompileQueueScriptNotFound);
+			//LLNotificationsUtil::add("SystemMessage", args);
+			
 			buffer = LLTrans::getString("CompileQueueProblemDownloading") + (": ") + data->mScriptName;
 		}
 		else if (LL_ERR_INSUFFICIENT_PERMISSIONS == status)
 		{
+			//TODO* CHAT: how to show this?
+			//LLSD args;
+			//args["MESSAGE"] = LLTrans::getString("CompileQueueScriptNotFound);
+			//LLNotificationsUtil::add("SystemMessage", args);
+
 			buffer = LLTrans::getString("CompileQueueInsufficientPermFor") + (": ") + data->mScriptName;
 		}
 		else
diff --git a/indra/newview/llfloaterchat.cpp b/indra/newview/llfloaterchat.cpp
index c24c224133e8de473786f28e9e7e1c0d68dbad04..cdb9b8edb869101fae9b577e322672c3095aa415 100644
--- a/indra/newview/llfloaterchat.cpp
+++ b/indra/newview/llfloaterchat.cpp
@@ -311,7 +311,7 @@ void LLFloaterChat::onClickToggleShowMute(LLUICtrl* caller, void *data)
 }
 
 // Put a line of chat in all the right places
-void LLFloaterChat::addChat(const LLChat& chat, BOOL from_instant_message, BOOL local_agent)
+void LLFloaterChat::addChat(const LLChat& chat, BOOL local_agent)
 {
 	triggerAlerts(chat.mText);
 
@@ -321,19 +321,7 @@ void LLFloaterChat::addChat(const LLChat& chat, BOOL from_instant_message, BOOL
 	//if(chat.mSourceType == CHAT_SOURCE_AGENT && chat.mFromID.notNull())
 	//	LLRecentPeople::instance().add(chat.mFromID);
 	
-	bool add_chat = true;
-	bool log_chat = true;
-	if(from_instant_message)
-	{
-		if (!gSavedSettings.getBOOL("IMInChat"))
-			add_chat = false;
-		//log_chat = false;
-}
-	
-	if (add_chat)
-	{
-		addChatHistory(chat, log_chat);
-	}
+	addChatHistory(chat, true);
 }
 
 // Moved from lltextparser.cpp to break llui/llaudio library dependency.
diff --git a/indra/newview/llfloaterchat.h b/indra/newview/llfloaterchat.h
index 84fc199bfa95756624cfcb68608fd4cc89b4fcd7..4437a0a5c2d8330262756b37cef3fc5006440152 100644
--- a/indra/newview/llfloaterchat.h
+++ b/indra/newview/llfloaterchat.h
@@ -61,7 +61,7 @@ class LLFloaterChat : public LLFloater
 	//  *TODO:Skinning - move these to LLChat (or LLViewerChat?)
 	// Add chat to console and history list.
 	// Color based on source, type, distance.
-	static void addChat(const LLChat& chat, BOOL from_im = FALSE, BOOL local_agent = FALSE);
+	static void addChat(const LLChat& chat, BOOL local_agent = FALSE);
 	// Add chat to history alone.
 	static void addChatHistory(const LLChat& chat, bool log_to_file = true);
 	
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 6064415a1086bd9709493933cac44b7855eb35b6..3ff156eca3dd5dea761aba1cf71beab966d2331e 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -45,6 +45,7 @@
 #include "lluictrlfactory.h"
 
 #include "llagent.h"
+#include "llappviewer.h"
 #include "llavatariconctrl.h"
 #include "llbottomtray.h"
 #include "llcallingcard.h"
@@ -1855,7 +1856,7 @@ void LLIncomingCallDialog::onStartIM(void* user_data)
 
 void LLIncomingCallDialog::processCallResponse(S32 response)
 {
-	if (!gIMMgr)
+	if (!gIMMgr || gDisconnected)
 		return;
 
 	LLUUID session_id = mPayload["session_id"].asUUID();
diff --git a/indra/newview/lllandmarklist.cpp b/indra/newview/lllandmarklist.cpp
index bd9d22c32700af69284a7c6e2ddbbc13f305600b..ce84474c05aac0d29e10e204f749299ee97224f4 100644
--- a/indra/newview/lllandmarklist.cpp
+++ b/indra/newview/lllandmarklist.cpp
@@ -59,6 +59,13 @@ LLLandmark* LLLandmarkList::getAsset(const LLUUID& asset_uuid, loaded_callback_t
 	LLLandmark* landmark = get_ptr_in_map(mList, asset_uuid);
 	if(landmark)
 	{
+		LLVector3d dummy;
+		if(cb && !landmark->getGlobalPos(dummy))
+		{
+			// landmark is not completely loaded yet
+			loaded_callback_map_t::value_type vt(asset_uuid, cb);
+			mLoadedCallbackMap.insert(vt);
+		}
 		return landmark;
 	}
 	else
diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp
index e29320ffc2bf6f64d53794de4f4a9a4c2080a4e3..3f5d80c1234a4e8bc10b1d1c08b316bd5f665156 100644
--- a/indra/newview/llpanelclassified.cpp
+++ b/indra/newview/llpanelclassified.cpp
@@ -72,6 +72,7 @@
 #include "llviewerwindow.h"	// for window width, height
 #include "llappviewer.h"	// abortQuit()
 #include "lltrans.h"
+#include "llstatusbar.h"
 
 const S32 MINIMUM_PRICE_FOR_LISTING = 50;	// L$
 const S32 MATURE_UNDEFINED = -1;
@@ -1364,6 +1365,7 @@ static const S32 CB_ITEM_PG	   = 1;
 LLPanelClassifiedEdit::LLPanelClassifiedEdit()
  : LLPanelClassifiedInfo()
  , mIsNew(false)
+ , mCanClose(false)
 {
 }
 
@@ -1559,7 +1561,7 @@ void LLPanelClassifiedEdit::resetControls()
 
 bool LLPanelClassifiedEdit::canClose()
 {
-	return isValidName();
+	return mCanClose;
 }
 
 void LLPanelClassifiedEdit::sendUpdate()
@@ -1676,12 +1678,23 @@ void LLPanelClassifiedEdit::onChange()
 
 void LLPanelClassifiedEdit::onSaveClick()
 {
+	mCanClose = false;
+
 	if(!isValidName())
 	{
 		notifyInvalidName();
 		return;
 	}
+	if(isNew())
+	{
+		if(gStatusBar->getBalance() < getPriceForListing())
+		{
+			LLNotificationsUtil::add("ClassifiedInsufficientFunds");
+			return;
+		}
+	}
 
+	mCanClose = true;
 	sendUpdate();
 	resetDirty();
 }
diff --git a/indra/newview/llpanelclassified.h b/indra/newview/llpanelclassified.h
index 10fdf60bbe3da20aabc60239c00cc720a15dd4a6..e46806f5761a4ca1775e5e1c281bb472bf32870a 100644
--- a/indra/newview/llpanelclassified.h
+++ b/indra/newview/llpanelclassified.h
@@ -340,6 +340,7 @@ class LLPanelClassifiedEdit : public LLPanelClassifiedInfo
 
 private:
 	bool mIsNew;
+	bool mCanClose;
 };
 
 #endif // LL_LLPANELCLASSIFIED_H
diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp
index 597b8bdb2dbc34f7dc57ff840d181317b62872e7..9654e17659862e9e1d0386dd3a03a36e852781ac 100644
--- a/indra/newview/llpanellandmarkinfo.cpp
+++ b/indra/newview/llpanellandmarkinfo.cpp
@@ -185,6 +185,13 @@ void LLPanelLandmarkInfo::processParcelInfo(const LLParcelData& parcel_data)
 		region_z = llround(mPosRegion.mV[VZ]);
 	}
 
+	LLSD info;
+	info["update_verbs"] = true;
+	info["global_x"] = parcel_data.global_x;
+	info["global_y"] = parcel_data.global_y;
+	info["global_z"] = parcel_data.global_z;
+	notifyParent(info);
+
 	if (mInfoType == CREATE_LANDMARK)
 	{
 		if (parcel_data.name.empty())
diff --git a/indra/newview/llpanelpick.cpp b/indra/newview/llpanelpick.cpp
index e7615929c82851807b61435c0fbcd3f05cab87fb..5ac05875505d1f25ed2bbca6751711c87e6c9161 100644
--- a/indra/newview/llpanelpick.cpp
+++ b/indra/newview/llpanelpick.cpp
@@ -448,7 +448,7 @@ BOOL LLPanelPickEdit::postBuild()
 {
 	LLPanelPickInfo::postBuild();
 
-	mSnapshotCtrl->setOnSelectCallback(boost::bind(&LLPanelPickEdit::onPickChanged, this, _1));
+	mSnapshotCtrl->setCommitCallback(boost::bind(&LLPanelPickEdit::onSnapshotChanged, this));
 
 	LLLineEditor* line_edit = getChild<LLLineEditor>("pick_name");
 	line_edit->setKeystrokeCallback(boost::bind(&LLPanelPickEdit::onPickChanged, this, _1), NULL);
@@ -537,16 +537,14 @@ void LLPanelPickEdit::sendUpdate()
 	}
 }
 
+void LLPanelPickEdit::onSnapshotChanged()
+{
+	enableSaveButton(true);
+}
+
 void LLPanelPickEdit::onPickChanged(LLUICtrl* ctrl)
 {
-	if(isDirty())
-	{
-		enableSaveButton(true);
-	}
-	else
-	{
-		enableSaveButton(false);
-	}
+	enableSaveButton(isDirty());
 }
 
 void LLPanelPickEdit::resetData()
@@ -613,10 +611,6 @@ void LLPanelPickEdit::initTexturePickerMouseEvents()
 	mSnapshotCtrl->setMouseEnterCallback(boost::bind(&LLPanelPickEdit::onTexturePickerMouseEnter, this, _1));
 	mSnapshotCtrl->setMouseLeaveCallback(boost::bind(&LLPanelPickEdit::onTexturePickerMouseLeave, this, _1));
 	
-	// *WORKAROUND: Needed for EXT-1625: enabling save button each time when picker is opened, even if 
-	// texture wasn't changed (see Steve's comment).
-	mSnapshotCtrl->setMouseDownCallback(boost::bind(&LLPanelPickEdit::enableSaveButton, this, true));
-	
 	text_icon->setVisible(FALSE);
 }
 		
diff --git a/indra/newview/llpanelpick.h b/indra/newview/llpanelpick.h
index 62c3b20c0da9c958fb6dd560a129c79338efac6f..4f27760a8dec7d6703a2ec0c893ee74b585a5d8e 100644
--- a/indra/newview/llpanelpick.h
+++ b/indra/newview/llpanelpick.h
@@ -221,6 +221,11 @@ class LLPanelPickEdit : public LLPanelPickInfo
 	 */
 	void sendUpdate();
 
+	/**
+	 * Called when snapshot image changes.
+	 */
+	void onSnapshotChanged();
+	
 	/**
 	 * Callback for Pick snapshot, name and description changed event.
 	 */
diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp
index 685104a8b1f10ae2257641e235c8bef6845760be..a71c8d895899ae0da56020daad4afe445a7a553b 100644
--- a/indra/newview/llpanelplaces.cpp
+++ b/indra/newview/llpanelplaces.cpp
@@ -449,6 +449,22 @@ void LLPanelPlaces::setItem(LLInventoryItem* item)
 	}
 }
 
+S32 LLPanelPlaces::notifyParent(const LLSD& info)
+{
+	if(info.has("update_verbs"))
+	{
+		if(mPosGlobal.isExactlyZero())
+		{
+			mPosGlobal.setVec(info["global_x"], info["global_y"], info["global_z"]);
+		}
+
+		updateVerbs();
+		
+		return 1;
+	}
+	return LLPanel::notifyParent(info);
+}
+
 void LLPanelPlaces::onLandmarkLoaded(LLLandmark* landmark)
 {
 	if (!mLandmarkInfo)
@@ -460,6 +476,8 @@ void LLPanelPlaces::onLandmarkLoaded(LLLandmark* landmark)
 	mLandmarkInfo->displayParcelInfo(region_id, mPosGlobal);
 
 	mSaveBtn->setEnabled(TRUE);
+
+	updateVerbs();
 }
 
 void LLPanelPlaces::onFilterEdit(const std::string& search_string, bool force_filter)
diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h
index b134cf0cba63fd9064f96ec5834ba7111e59a8fa..27b5911ebb073b9529014a762102e9a78783f2fd 100644
--- a/indra/newview/llpanelplaces.h
+++ b/indra/newview/llpanelplaces.h
@@ -75,6 +75,8 @@ class LLPanelPlaces : public LLPanel
 
 	std::string getPlaceInfoType() { return mPlaceInfoType; }
 
+	/*virtual*/ S32 notifyParent(const LLSD& info);
+
 private:
 	void onLandmarkLoaded(LLLandmark* landmark);
 	void onFilterEdit(const std::string& search_string, bool force_filter);
diff --git a/indra/newview/llspeakingindicatormanager.cpp b/indra/newview/llspeakingindicatormanager.cpp
index b450d38b5a3be2301bbbe5293f6da8f324716b0e..5e1d408e8da2a3fa6bc6754476b9bca294de45e6 100644
--- a/indra/newview/llspeakingindicatormanager.cpp
+++ b/indra/newview/llspeakingindicatormanager.cpp
@@ -36,7 +36,6 @@
 #include "llspeakingindicatormanager.h"
 
 
-#include "llagentdata.h"
 #include "llvoicechannel.h"
 #include "llvoiceclient.h"
 
@@ -134,7 +133,7 @@ class SpeakingIndicatorManager : public LLSingleton<SpeakingIndicatorManager>, L
 //////////////////////////////////////////////////////////////////////////
 void SpeakingIndicatorManager::registerSpeakingIndicator(const LLUUID& speaker_id, LLSpeakingIndicator* const speaking_indicator)
 {
-	if (speaker_id == gAgentID) return;
+	// do not exclude agent's indicators. They should be processed in the same way as others. See EXT-3889.
 
 	LL_DEBUGS("SpeakingIndicator") << "Registering indicator: " << speaker_id << LL_ENDL;
 	speaking_indicator_value_t value_type(speaker_id, speaking_indicator);
diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp
index b980f65e68c338a95a9446220226e173bb0cc2e4..9c4825763bf50ff0e9801e4a8c5038b221acfc50 100644
--- a/indra/newview/lltexturectrl.cpp
+++ b/indra/newview/lltexturectrl.cpp
@@ -878,6 +878,7 @@ LLTextureCtrl::LLTextureCtrl(const LLTextureCtrl::Params& p)
 {
 	setAllowNoTexture(p.allow_no_texture);
 	setCanApplyImmediately(p.can_apply_immediately);
+	mCommitOnSelection = !p.no_commit_on_selection;
 
 	LLTextBox::Params params(p.caption_text);
 	params.name(p.label);
@@ -1122,7 +1123,11 @@ void LLTextureCtrl::onFloaterCommit(ETexturePickOp op)
 			}
 			else
 			{
-				onCommit();
+				// If the "no_commit_on_selection" parameter is set
+				// we commit only when user presses OK in the picker
+				// (i.e. op == TEXTURE_SELECT) or changes texture via DnD.
+				if (mCommitOnSelection || op == TEXTURE_SELECT)
+					onCommit();
 			}
 		}
 	}
diff --git a/indra/newview/lltexturectrl.h b/indra/newview/lltexturectrl.h
index fb1d591e328639d10e5fc3e559602b985a8f685c..023329a9b2c2b5a5712f53c61799a8561c31ace9 100644
--- a/indra/newview/lltexturectrl.h
+++ b/indra/newview/lltexturectrl.h
@@ -74,6 +74,7 @@ class LLTextureCtrl
 		Optional<std::string>	default_image_name;
 		Optional<bool>			allow_no_texture;
 		Optional<bool>			can_apply_immediately;
+		Optional<bool>			no_commit_on_selection; // don't commit unless it's DnD or OK button press
 		Optional<S32>			label_width;
 		Optional<LLUIColor>		border_color;
 		
@@ -88,6 +89,7 @@ class LLTextureCtrl
 			default_image_name("default_image_name"),
 			allow_no_texture("allow_no_texture"),
 			can_apply_immediately("can_apply_immediately"),
+			no_commit_on_selection("no_commit_on_selection", false),
 		    label_width("label_width", -1),
 			border_color("border_color"),
 			multiselect_text("multiselect_text"),
@@ -204,6 +206,7 @@ class LLTextureCtrl
 	PermissionMask			 mImmediateFilterPermMask;
 	PermissionMask			 mNonImmediateFilterPermMask;
 	BOOL					 mCanApplyImmediately;
+	BOOL					 mCommitOnSelection;
 	BOOL					 mNeedsRawImageData;
 	LLViewBorder*			 mBorder;
 	BOOL					 mValid;
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index d96d7df24ad5323290ef79eda37589b356c88a4e..3f556e5608d6790d982a9f0b95dcd8335f07f4d1 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -6373,8 +6373,57 @@ class LLToolsSelectedScriptAction : public view_listener_t
 
 void handle_selected_texture_info(void*)
 {
-	//useless without LLFloaterChat
-	//as since we don't use LLFloaterChat...
+	for (LLObjectSelection::valid_iterator iter = LLSelectMgr::getInstance()->getSelection()->valid_begin();
+   		iter != LLSelectMgr::getInstance()->getSelection()->valid_end(); iter++)
+	{
+		LLSelectNode* node = *iter;
+	   	
+   		std::string msg;
+   		msg.assign("Texture info for: ");
+   		msg.append(node->mName);
+
+		//TODO* CHAT: how to show this?
+		//LLSD args;
+		//args["MESSAGE"] = msg;
+		//LLNotificationsUtil::add("SystemMessage", args);
+	   
+   		U8 te_count = node->getObject()->getNumTEs();
+   		// map from texture ID to list of faces using it
+   		typedef std::map< LLUUID, std::vector<U8> > map_t;
+   		map_t faces_per_texture;
+   		for (U8 i = 0; i < te_count; i++)
+   		{
+   			if (!node->isTESelected(i)) continue;
+	   
+   			LLViewerTexture* img = node->getObject()->getTEImage(i);
+   			LLUUID image_id = img->getID();
+   			faces_per_texture[image_id].push_back(i);
+   		}
+   		// Per-texture, dump which faces are using it.
+   		map_t::iterator it;
+   		for (it = faces_per_texture.begin(); it != faces_per_texture.end(); ++it)
+   		{
+   			LLUUID image_id = it->first;
+   			U8 te = it->second[0];
+   			LLViewerTexture* img = node->getObject()->getTEImage(te);
+   			S32 height = img->getHeight();
+   			S32 width = img->getWidth();
+   			S32 components = img->getComponents();
+   			msg = llformat("%dx%d %s on face ",
+   								width,
+   								height,
+   								(components == 4 ? "alpha" : "opaque"));
+   			for (U8 i = 0; i < it->second.size(); ++i)
+   			{
+   				msg.append( llformat("%d ", (S32)(it->second[i])));
+   			}
+
+			//TODO* CHAT: how to show this?
+			//LLSD args;
+			//args["MESSAGE"] = msg;
+			//LLNotificationsUtil::add("SystemMessage", args);
+   		}
+	}
 }
 
 void handle_test_male(void*)
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 5279c4174a25d5440a384886c9cdb4232d802b62..31a18a2e9827838326e4f1c9a579eb8a9f60f2fd 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -908,6 +908,14 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f
 						LLSideTray::getInstance()->showPanel("panel_places", 
 								LLSD().with("type", "landmark").with("id", item->getUUID()));
 					}
+					else if("group_offer" == from_name)
+					{
+						// do not open inventory when we open group notice attachment because 
+						// we already opened landmark info panel
+						// "group_offer" is passed by LLOpenTaskGroupOffer
+
+						continue;
+					}
 					else if(from_name.empty())
 					{
 						// we receive a message from LLOpenTaskOffer, it mean that new landmark has been added.
@@ -1356,7 +1364,7 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const
 			if (check_offer_throttle(mFromName, true))
 			{
 				log_message = chatHistory_string + " " + LLTrans::getString("InvOfferGaveYou") + " " + mDesc + LLTrans::getString(".");
-				//TODO* should go to history only - how?
+				//TODO* CHAT: how to show this?
 				//LLSD args;
 				//args["MESSAGE"] = log_message;
 				//LLNotificationsUtil::add("SystemMessage", args);
@@ -1401,7 +1409,7 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const
 			// send the message
 			msg->sendReliable(mHost);
 			
-			//TODO* should go to message history only...
+			//TODO* CHAT: how to show this?
 			//log_message = LLTrans::getString("InvOfferYouDecline") + " " + mDesc + " " + LLTrans::getString("InvOfferFrom") + " " + mFromName +".";
 			//LLSD args;
 			//args["MESSAGE"] = log_message;
@@ -1829,17 +1837,11 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 				// history.  Pretend the chat is from a local agent,
 				// so it will go into the history but not be shown on screen.
 
-				//TODO* should go to message hisyory only
+				//TODO* CHAT: how to show this?
 				//and this is not system message...
 				//LLSD args;
 				//args["MESSAGE"] = buffer;
 				//LLNotificationsUtil::add("SystemMessage", args);
-
-				/*
-				chat.mText = buffer;
-				BOOL local_agent = TRUE;
-				LLFloaterChat::addChat( chat, TRUE, local_agent );
-				*/
 			}
 		}
 		break;
@@ -3076,7 +3078,7 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)
 		{
 			// Chat the "back" SLURL. (DEV-4907)
 
-			//should go to history only so leave commented
+			//TODO* CHAT: how to show this?
 			//LLSD args;
 			//args["MESSAGE"] = message;
 			//LLNotificationsUtil::add("SystemMessage", args);
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 21fe2bb242e5f10d3535f0c9001490bd44afcbcd..a98a049c17832ffefece8728bd1e962cba60cbe0 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -1603,17 +1603,6 @@
              function="ToggleControl"
              parameter="MouseSmooth" />
         </menu_item_check>
-        <menu_item_check
-         label="Show IMs in Nearby Chat"
-         layout="topleft"
-         name="IMInChat">
-            <menu_item_check.on_check
-             function="CheckControl"
-             parameter="IMInChat" />
-            <menu_item_check.on_click
-             function="ToggleControl"
-             parameter="IMInChat" />
-        </menu_item_check>
         <menu_item_separator
          layout="topleft" />
         <menu
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 1ec004b194b0816ac8687f94d8324fd6af63b1f6..dddd178aea242d882216c4aadcfb2e229f62c0df 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -770,6 +770,16 @@ Save changes to classified [NAME]?
      notext="Don&apos;t Save"
      yestext="Save"/>
   </notification>
+  
+  <notification
+   icon="alertmodal.tga"
+   name="ClassifiedInsufficientFunds"
+   type="alertmodal">
+Insufficient funds to create classified.
+    <usetemplate
+     name="okbutton"
+     yestext="OK"/>
+  </notification>
 
   <notification
    icon="alertmodal.tga"
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 15eff4b67c14596448fe2c7177d7f1a2d2d58aab..8e39697a16ec63e57f6d1672a3dc7019bb13a734 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_pick.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_pick.xml
@@ -61,6 +61,7 @@
      height="197"
      width="280"
      layout="topleft"
+     no_commit_on_selection="true"
      top="20"
      left="10"
      name="pick_snapshot" />
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 58cb5fed5dc8dfd680502271cfc8d3752d7e88f2..bfc97ed5da556a615001de860204d231c9fb7e75 100644
--- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
@@ -127,7 +127,11 @@
           label="Search [SECOND_LIFE]"
           name="search_combo_editor"/>
          <combo_list
-          draw_border="true" />
+          draw_border="true"
+          border.highlight_light_color="FocusColor"
+          border.highlight_dark_color="FocusColor"
+          border.shadow_light_color="FocusColor"
+          border.shadow_dark_color="FocusColor"/>
         </search_combo_box>
 	</panel>
     <favorites_bar
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 1e7acb566fe049e711665904160686b83041597d..141678f7eb23d1c08c6822d98701067d787ea95d 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
@@ -34,7 +34,14 @@
      name="background"
      tool_tip="Choose color for bubble chat"
      top_delta="1"
-     width="44" />
+     width="44">
+        <color_swatch.init_callback
+		     function="Pref.getUIColor"
+		     parameter="BackgroundChatColor" />
+		    <color_swatch.commit_callback
+		     function="Pref.applyUIColor"
+		     parameter="BackgroundChatColor" />
+    </color_swatch>
     <slider
      control_name="ChatBubbleOpacity"
      follows="left|top"
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 2bec5b8a29b23f65eaae82aac55083e11d304a58..328d5216363065161f24bb7a3601c3db8c5363c3 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,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <chiclet_im_adhoc
- height="25"
+ height="23"
  name="im_adhoc_chiclet"
  show_speaker="false"
  width="25">
     <chiclet_im_adhoc.chiclet_button 
-     height="25"
+     height="23"
      image_selected="PushButton_Selected"
      image_unselected="PushButton_Off"
      name="chiclet_button"
@@ -14,27 +14,27 @@
     <chiclet_im_adhoc.speaker
      auto_update="true"
      draw_border="false"
-     height="25"
+     height="23"
      left="25"
      name="speaker"
      visible="false"
      width="20" />
     <chiclet_im_adhoc.avatar_icon
-     bottom="3"
+     bottom="2"
      follows="left|top|bottom"
      height="19"
      left="3"
      mouse_opaque="true"
      name="adhoc_icon"
-     width="19" />
+     width="18" />
     <chiclet_im_adhoc.unread_notifications
      font_halign="center"
-     height="25"
+     height="23"
      left="25"
      mouse_opaque="false"
      name="unread"
      text_color="white"
-     v_pad="5"
+     v_pad="3"
      visible="false"
      width="20" />
     <chiclet_im_adhoc.new_message_icon
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 1d7f3208af986c3b3ad252f7adec2ac31f8a582d..60658899ee29371d291c04e5bb227d313ec36e0f 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,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <chiclet_im_group
- height="25"
+ height="23"
  name="im_group_chiclet"
  show_speaker="false"
  width="25">
     <chiclet_im_group.chiclet_button 
-     height="25"
+     height="23"
      image_selected="PushButton_Selected"
      image_unselected="PushButton_Off"
      name="chiclet_button"
@@ -14,28 +14,28 @@
     <chiclet_im_group.speaker
      auto_update="true"
      draw_border="false"
-     height="25"
+     height="23"
      left="25"
      name="speaker"
      visible="false"
      width="20" />
     <chiclet_im_group.group_icon
-     bottom="3"
+     bottom="2"
      default_icon="Generic_Group"
      follows="left|top|bottom"
-     height="19"
+     height="18"
      left="3"
      mouse_opaque="false"
      name="group_icon"
      width="19" />
     <chiclet_im_group.unread_notifications
-     height="25"
+     height="23"
      font_halign="center"
      left="25"
      mouse_opaque="false"
      name="unread"
      text_color="white"
-     v_pad="5"
+     v_pad="3"
      visible="false"
      width="20"/>
     <chiclet_im_group.new_message_icon
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 e6289f7cefebbfe0e8ffee694a77fd667b8ff341..b5b8f0d07a31a605fd65e63ca8e038878a8935ae 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,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <chiclet_im_p2p
- height="25"
+ height="23"
  name="im_p2p_chiclet"
  show_speaker="false"
  width="25">
     <chiclet_im_p2p.chiclet_button 
-     height="25"
+     height="23"
      image_selected="PushButton_Selected"
      image_unselected="PushButton_Off"
      name="chiclet_button"
@@ -14,27 +14,27 @@
     <chiclet_im_p2p.speaker
      auto_update="true"
      draw_border="false"
-     height="25"
+     height="23"
      left="25"
      name="speaker"
      visible="false"
      width="20"/>
     <chiclet_im_p2p.avatar_icon
-     bottom="3"
+     bottom="2"
      follows="left|top|bottom"
-     height="19"
+     height="18"
      left="3"
      mouse_opaque="false"
      name="avatar_icon"
      width="19" />
     <chiclet_im_p2p.unread_notifications
-     height="25"
+     height="23"
      font_halign="center"
      left="25"
      mouse_opaque="false"
      name="unread"
      text_color="white"
-     v_pad="5"
+     v_pad="3"
      visible="false"
      width="20"/>
     <chiclet_im_p2p.new_message_icon
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 138b50c968f0a32e463c83db8dc76be960043779..1bf9bc9e71b4243e2b88e31142ff1a3d76751c44 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml
@@ -1,20 +1,20 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <chiclet_offer
- height="25"
+ height="23"
  name="offer_chiclet"
  width="25">
  <chiclet_offer.chiclet_button 
-  height="25"
+  height="23"
   image_selected="PushButton_Selected"
   image_unselected="PushButton_Off"
   name="chiclet_button"
   tab_stop="false"
   width="25"/>
  <chiclet_offer.icon
-  bottom="3"
+  bottom="2"
   default_icon="Generic_Object_Small"
   follows="all"
-  height="19"
+  height="18"
   left="3"
   mouse_opaque="false"
   name="chiclet_icon"
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 ecf149dc76f5ee5876ddc82fd73e14279ab2fff4..38d9904d130249422dfb6c5655d81e47671a926f 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml
@@ -1,19 +1,19 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <chiclet_script
- height="25"
+ height="23"
  name="script_chiclet"
  width="25">
  <chiclet_script.chiclet_button 
-  height="25"
+  height="23"
   image_selected="PushButton_Selected"
   image_unselected="PushButton_Off"
   name="chiclet_button"
   tab_stop="false"
   width="25"/>
  <chiclet_script.icon
-  bottom="3"
+  bottom="2"
   follows="all"
-  height="19"
+  height="18"
   image_name="Generic_Object_Small"
   left="3"
   mouse_opaque="false"
diff --git a/indra/newview/skins/default/xui/en/widgets/scroll_list.xml b/indra/newview/skins/default/xui/en/widgets/scroll_list.xml
index 45207682165d3cb868cd0e0df9a0edeb8e7395f2..63166f32b7f3d9c1fb6ffcd099678fabe7ddd7ba 100644
--- a/indra/newview/skins/default/xui/en/widgets/scroll_list.xml
+++ b/indra/newview/skins/default/xui/en/widgets/scroll_list.xml
@@ -15,4 +15,6 @@
              background_visible="true"
              heading_height="23"
              draw_border="false"
-             draw_heading="false" />
+             draw_heading="false"
+             border.name="dig border"
+             border.bevel_style="in" />