diff --git a/indra/llui/llflatlistview.cpp b/indra/llui/llflatlistview.cpp
index 35f5a6bbb9364780f6a912fb1ac75b7a361cabed..82f054c4b7be5109bb1a729afe481288e212ede0 100644
--- a/indra/llui/llflatlistview.cpp
+++ b/indra/llui/llflatlistview.cpp
@@ -504,7 +504,68 @@ void LLFlatListView::onItemMouseClick(item_pair_t* item_pair, MASK mask)
 
 	//*TODO find a better place for that enforcing stuff
 	if (mKeepOneItemSelected && numSelected() == 1 && !select_item) return;
-	
+
+	if ( (mask & MASK_SHIFT) && !(mask & MASK_CONTROL)
+		 && mMultipleSelection && !mSelectedItemPairs.empty() )
+	{
+		item_pair_t* last_selected_pair = mSelectedItemPairs.back();
+
+		// If item_pair is already selected - do nothing
+		if (last_selected_pair == item_pair)
+			return;
+
+		bool grab_items = false;
+		pairs_list_t pairs_to_select;
+
+		// Pick out items from list between last selected and current clicked item_pair.
+		for (pairs_iterator_t
+				 iter = mItemPairs.begin(),
+				 iter_end = mItemPairs.end();
+			 iter != iter_end; ++iter)
+		{
+			item_pair_t* cur = *iter;
+			if (cur == last_selected_pair || cur == item_pair)
+			{
+				grab_items = !grab_items;
+				// Skip last selected and current clicked item pairs.
+				continue;
+			}
+			if (!cur->first->getVisible())
+			{
+				// Skip invisible item pairs.
+				continue;
+			}
+			if (grab_items)
+			{
+				pairs_to_select.push_back(cur);
+			}
+		}
+
+		if (select_item)
+		{
+			pairs_to_select.push_back(item_pair);
+		}
+
+		for (pairs_iterator_t
+				 iter = pairs_to_select.begin(),
+				 iter_end = pairs_to_select.end();
+			 iter != iter_end; ++iter)
+		{
+			item_pair_t* pair_to_select = *iter;
+			selectItemPair(pair_to_select, true);
+		}
+
+		if (!select_item)
+		{
+			// Item was already selected but there is a need to update last selected item and its border.
+			// Do it here to prevent extra mCommitOnSelectionChange in selectItemPair().
+			mSelectedItemPairs.remove(item_pair);
+			mSelectedItemPairs.push_back(item_pair);
+			mSelectedItemsBorder->setRect(getLastSelectedItemRect().stretch(-1));
+		}
+		return;
+	}
+
 	if (!(mask & MASK_CONTROL) || !mMultipleSelection) resetSelection();
 	selectItemPair(item_pair, select_item);
 }
diff --git a/indra/llui/llsliderctrl.cpp b/indra/llui/llsliderctrl.cpp
index 80ee5d098437b40373a4cd15d120b9f4b8451e75..04958075db8673d1f8065009e42b061f42d7a569 100644
--- a/indra/llui/llsliderctrl.cpp
+++ b/indra/llui/llsliderctrl.cpp
@@ -63,7 +63,8 @@ LLSliderCtrl::LLSliderCtrl(const LLSliderCtrl::Params& p)
 	mCanEditText(p.can_edit_text),
 	mPrecision(p.decimal_digits),
 	mTextEnabledColor(p.text_color()),
-	mTextDisabledColor(p.text_disabled_color())
+	mTextDisabledColor(p.text_disabled_color()),
+	mLabelWidth(p.label_width)
 {
 	S32 top = getRect().getHeight();
 	S32 bottom = 0;
@@ -86,6 +87,7 @@ LLSliderCtrl::LLSliderCtrl(const LLSliderCtrl::Params& p)
 		params.initial_value(p.label());
 		mLabelBox = LLUICtrlFactory::create<LLTextBox> (params);
 		addChild(mLabelBox);
+		mLabelFont = params.font();
 	}
 
 	if (p.show_text && !p.text_width.isProvided())
@@ -186,9 +188,9 @@ BOOL LLSliderCtrl::setLabelArg( const std::string& key, const LLStringExplicit&
 	if (mLabelBox)
 	{
 		res = mLabelBox->setTextArg(key, text);
-		if (res && mLabelWidth == 0)
+		if (res && mLabelFont && mLabelWidth == 0)
 		{
-			S32 label_width = mFont->getWidth(mLabelBox->getText());
+			S32 label_width = mLabelFont->getWidth(mLabelBox->getText());
 			LLRect rect = mLabelBox->getRect();
 			S32 prev_right = rect.mRight;
 			rect.mRight = rect.mLeft + label_width;
diff --git a/indra/llui/llsliderctrl.h b/indra/llui/llsliderctrl.h
index c425849782245e45806aff1b48f6a621b3bed39b..482c81a0f40aab25514f441441b79e44b3212fa1 100644
--- a/indra/llui/llsliderctrl.h
+++ b/indra/llui/llsliderctrl.h
@@ -141,6 +141,7 @@ class LLSliderCtrl : public LLF32UICtrl
 	void			reportInvalidData();
 
 	const LLFontGL*	mFont;
+	const LLFontGL*	mLabelFont;
 	BOOL			mShowText;
 	BOOL			mCanEditText;
 	
@@ -158,3 +159,4 @@ class LLSliderCtrl : public LLF32UICtrl
 };
 
 #endif  // LL_LLSLIDERCTRL_H
+
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index a1cae4bb988fe24a57ec30c1d2c43fd2a6789ccc..4fd62045e8b841e9aa8f6c4f9f244f43c77b8455 100644
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -713,7 +713,8 @@ BOOL LLTextEditor::handleRightMouseDown(S32 x, S32 y, MASK mask)
 	{
 		setFocus(TRUE);
 	}
-	if (!LLTextBase::handleRightMouseDown(x, y, mask))
+	// Prefer editor menu if it has selection. See EXT-6806.
+	if (hasSelection() || !LLTextBase::handleRightMouseDown(x, y, mask))
 	{
 		if(getShowContextMenu())
 		{
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index ec465358faaeadfde36ca23f4deaf0439afb6704..f434782977709ed6b93756d949b1191fbb49d9d4 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -1295,11 +1295,6 @@ void LLAgent::stopAutoPilot(BOOL user_cancel)
 		{
 			resetAxes(mAutoPilotTargetFacing);
 		}
-		// If the user cancelled, don't change the fly state
-		if (!user_cancel)
-		{
-			setFlying(mAutoPilotFlyOnStop);
-		}
 		//NB: auto pilot can terminate for a reason other than reaching the destination
 		if (mAutoPilotFinishedCallback)
 		{
@@ -1307,6 +1302,11 @@ void LLAgent::stopAutoPilot(BOOL user_cancel)
 		}
 		mLeaderID = LLUUID::null;
 
+		// If the user cancelled, don't change the fly state
+		if (!user_cancel)
+		{
+			setFlying(mAutoPilotFlyOnStop);
+		}
 		setControlFlags(AGENT_CONTROL_STOP);
 
 		if (user_cancel && !mAutoPilotBehaviorName.empty())
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index ab35df1101c8cb1abeae22dbe0a65f987ce0a63b..360c6be2c6b9255eed0f23c2a3500601faa4712c 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -1636,6 +1636,18 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const
 	return false;
 }
 
+class LLPostponedOfferNotification: public LLPostponedNotification
+{
+protected:
+	/* virtual */
+	void modifyNotificationParams()
+	{
+		LLSD substitutions = mParams.substitutions;
+		substitutions["NAME"] = mName;
+		mParams.substitutions = substitutions;
+	}
+};
+
 void inventory_offer_handler(LLOfferInfo* info)
 {
 	//Until throttling is implmented, busy mode should reject inventory instead of silently
@@ -1785,7 +1797,10 @@ void inventory_offer_handler(LLOfferInfo* info)
 		// Inform user that there is a script floater via toast system
 		{
 			payload["give_inventory_notification"] = TRUE;
-			LLNotificationPtr notification = LLNotifications::instance().add(p.payload(payload)); 
+		    LLNotification::Params params(p.name);
+		    params.substitutions = p.substitutions;
+		    params.payload = p.payload;
+		    LLPostponedNotification::add<LLPostponedOfferNotification>(	params, info->mFromID, false);
 		}
 	}
 }
@@ -2557,7 +2572,11 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 				payload["from_id"] = from_id;
 				payload["lure_id"] = session_id;
 				payload["godlike"] = FALSE;
-				LLNotificationsUtil::add("TeleportOffered", args, payload);
+
+			    LLNotification::Params params("TeleportOffered");
+			    params.substitutions = args;
+			    params.payload = payload;
+			    LLPostponedNotification::add<LLPostponedOfferNotification>(	params, from_id, false);
 			}
 		}
 		break;
@@ -2626,7 +2645,10 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 				else
 				{
 					args["[MESSAGE]"] = message;
-				        LLNotificationsUtil::add("OfferFriendship", args, payload);
+				    LLNotification::Params params("OfferFriendship");
+				    params.substitutions = args;
+				    params.payload = payload;
+				    LLPostponedNotification::add<LLPostponedOfferNotification>(	params, from_id, false);
 				}
 			}
 		}
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 8c5928224f1f2db0da44348bd422a8c8e75683a0..acb3b0d458a1e8a2c5166a36eeef50a9b7209c84 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -5612,8 +5612,6 @@ void LLVOAvatar::sitDown(BOOL bSitting)
 //-----------------------------------------------------------------------------
 void LLVOAvatar::sitOnObject(LLViewerObject *sit_object)
 {
-	sitDown(TRUE);
-
 	if (isSelf())
 	{
 		// Might be first sit
@@ -5646,6 +5644,7 @@ void LLVOAvatar::sitOnObject(LLViewerObject *sit_object)
 	mDrawable->mXform.setRotation(mDrawable->getWorldRotation() * inv_obj_rot);
 
 	gPipeline.markMoved(mDrawable, TRUE);
+	sitDown(TRUE);
 	mRoot.getXform()->setParent(&sit_object->mDrawable->mXform); // LLVOAvatar::sitOnObject
 	mRoot.setPosition(getPosition());
 	mRoot.updateWorldMatrixChildren();
diff --git a/indra/newview/skins/default/xui/en/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/en/floater_script_debug_panel.xml
index bd9925be1da7d882c1918f1969fc79b50eb4f1bf..e94af2c8d512c9f4d5c02a186947629cd1e4c838 100644
--- a/indra/newview/skins/default/xui/en/floater_script_debug_panel.xml
+++ b/indra/newview/skins/default/xui/en/floater_script_debug_panel.xml
@@ -15,7 +15,7 @@
      follows="left|top|right|bottom"
      height="176"
      layout="topleft"
-     max_length="10000"
+     max_length="2147483647"
      name="Chat History Editor"
      parse_highlights="true" 
      width="420"
diff --git a/indra/newview/skins/default/xui/en/panel_scrolling_param.xml b/indra/newview/skins/default/xui/en/panel_scrolling_param.xml
index 80425639006667ec27d272997a69609064f65187..19eb4bb0d64205f4dbf414bc846a1b20806a615f 100644
--- a/indra/newview/skins/default/xui/en/panel_scrolling_param.xml
+++ b/indra/newview/skins/default/xui/en/panel_scrolling_param.xml
@@ -110,7 +110,6 @@
      increment="1"
      initial_value="0"
      label="[DESC]"
-     label_width="100"
      layout="bottom|left"
      left="6"
      max_val="100"