diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 0371a819ddc3b2030c31d9c1a6a14a9cbcb78663..1ed4528cb177a33b58b81a3d2626eaa5cbbe8842 100755
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -1697,6 +1697,17 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
+	<key>ChatShowIcons</key>
+	<map>
+		<key>Comment</key>
+		<string>Show/hide people icons in chat</string>
+		<key>Persist</key>
+		<integer>1</integer>
+		<key>Type</key>
+		<string>Boolean</string>
+		<key>Value</key>
+		<integer>1</integer>
+	</map>
     <key>CheesyBeacon</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/llconversationview.cpp b/indra/newview/llconversationview.cpp
index b18e543f0a41cf9a84e7e693caaf4eb1930de4a8..924a8d720679c57217011f0f2fe3f58e103fab66 100644
--- a/indra/newview/llconversationview.cpp
+++ b/indra/newview/llconversationview.cpp
@@ -85,7 +85,8 @@ LLConversationViewSession::LLConversationViewSession(const LLConversationViewSes
     mHasArrow(true),
 	mIsInActiveVoiceChannel(false),
 	mFlashStateOn(false),
-	mFlashStarted(false)
+	mFlashStarted(false),
+	mShowIcons(true)
 {
 	mFlashTimer = new LLFlashTimer();
 }
@@ -173,7 +174,7 @@ BOOL LLConversationViewSession::postBuild()
 			if (session)
 			{
 				LLAvatarIconCtrl* icon = mItemPanel->getChild<LLAvatarIconCtrl>("avatar_icon");
-				icon->setVisible(true);
+				icon->setVisible(mShowIcons);
 				icon->setValue(session->mOtherParticipantID);
 				mSpeakingIndicator->setSpeakerId(gAgentID, session->mSessionID, true);
                 mHasArrow = false;
@@ -426,6 +427,49 @@ void LLConversationViewSession::showVoiceIndicator(bool visible)
 	requestArrange();
 }
 
+void LLConversationViewSession::setIconsVisible(bool visible)
+{
+	if (visible == mShowIcons) // nothing to be done here.
+		return;
+
+	// Save the new value for new items to use.
+	mShowIcons = visible;
+		
+	// Show/hide icons for the 1-n-1 chat.
+	LLConversationItem* vmi = dynamic_cast<LLConversationItem*>(getViewModelItem());
+	if (vmi)
+	{
+		switch (vmi->getType())
+		{
+		case LLConversationItem::CONV_PARTICIPANT:
+		case LLConversationItem::CONV_SESSION_1_ON_1:
+		{
+			LLIconCtrl* icon = mItemPanel->getChild<LLIconCtrl>("avatar_icon");
+			icon->setVisible(mShowIcons);
+			break;
+		}
+		/*
+		case LLConversationItem::CONV_SESSION_AD_HOC:
+		case LLConversationItem::CONV_SESSION_GROUP:
+		{
+			LLIconCtrl* icon = mItemPanel->getChild<LLIconCtrl>("group_icon");
+			icon->setVisible(mShowIcons);
+			break;
+		}
+		*/
+		default:
+			break;
+		}
+	}
+
+	// Show/hide icons for all existing items.
+	items_t::const_iterator iter;
+	for (iter = getItemsBegin(); iter != getItemsEnd(); iter++)
+	{
+		dynamic_cast<LLConversationViewParticipant*>(*iter)->setAvatarIconVisible(mShowIcons);
+	}
+}
+
 void LLConversationViewSession::refresh()
 {
 	// Refresh the session view from its model data
@@ -458,6 +502,9 @@ void LLConversationViewSession::refresh()
 			}
 		}
 	}
+	
+	setIconsVisible(gSavedSettings.getBOOL("ChatShowIcons"));
+	
 	requestArrange();
 	// Do the regular upstream refresh
 	LLFolderViewFolder::refresh();
@@ -509,7 +556,7 @@ void LLConversationViewParticipant::initFromParams(const LLConversationViewParti
     LLAvatarIconCtrl::Params avatar_icon_params(params.avatar_icon());
     applyXUILayout(avatar_icon_params, this);
     LLAvatarIconCtrl * avatarIcon = LLUICtrlFactory::create<LLAvatarIconCtrl>(avatar_icon_params);
-    addChild(avatarIcon);	
+    addChild(avatarIcon);
     
 	LLButton::Params info_button_params(params.info_button());
     applyXUILayout(info_button_params, this);
@@ -525,6 +572,7 @@ void LLConversationViewParticipant::initFromParams(const LLConversationViewParti
 BOOL LLConversationViewParticipant::postBuild()
 {
     mAvatarIcon = getChild<LLAvatarIconCtrl>("avatar_icon");
+	mAvatarIcon->setVisible(gSavedSettings.getBOOL("ChatShowIcons"));
 
 	mInfoBtn = getChild<LLButton>("info_btn");
 	mInfoBtn->setClickedCallback(boost::bind(&LLConversationViewParticipant::onInfoBtnClick, this));
@@ -588,12 +636,12 @@ S32 LLConversationViewParticipant::arrange(S32* width, S32* height)
     S32 arranged = LLFolderViewItem::arrange(width, height);
 
     //Adjusts the avatar icon based upon the indentation
-    LLRect avatarRect(getIndentation(), 
-                        mAvatarIcon->getRect().mTop,
-                        getIndentation() + mAvatarIcon->getRect().getWidth(),
-                        mAvatarIcon->getRect().mBottom);
-    mAvatarIcon->setShape(avatarRect);
-
+	LLRect avatarRect(getIndentation(),
+						mAvatarIcon->getRect().mTop,
+						getIndentation() + mAvatarIcon->getRect().getWidth(),
+						mAvatarIcon->getRect().mBottom);
+	mAvatarIcon->setShape(avatarRect);
+	
     //Since dimensions changed, adjust the children (info button, speaker indicator)
     updateChildren();
 
@@ -665,7 +713,7 @@ void LLConversationViewParticipant::onMouseLeave(S32 x, S32 y, MASK mask)
 
 S32 LLConversationViewParticipant::getLabelXPos()
 {
-    return getIndentation() + mAvatarIcon->getRect().getWidth() + mIconPad;
+    return getIndentation() + (mAvatarIcon->getVisible() ? mAvatarIcon->getRect().getWidth() : 0) + mIconPad;
 }
 
 // static
@@ -744,5 +792,18 @@ void LLConversationViewParticipant::hideSpeakingIndicator()
 	mSpeakingIndicator->setVisible(false);
 }
 
+void LLConversationViewParticipant::setAvatarIconVisible(bool visible)
+{
+	// Already done? Then do nothing.
+	if (mAvatarIcon->getVisible() == (BOOL)visible)
+	{
+		return;
+	}
+
+	// Show/hide avatar icon.
+	mAvatarIcon->setVisible(visible);
+	updateChildren();
+}
+
 // EOF
 
diff --git a/indra/newview/llconversationview.h b/indra/newview/llconversationview.h
index 5a74974302678e5978472ad74a926b00743a83ee..6aaba9b59c20085b53569a337df8e45cad48972c 100644
--- a/indra/newview/llconversationview.h
+++ b/indra/newview/llconversationview.h
@@ -83,7 +83,7 @@ class LLConversationViewSession : public LLFolderViewFolder
 	LLConversationViewParticipant* findParticipant(const LLUUID& participant_id);
 
 	void showVoiceIndicator(bool visible);
-
+	void setIconsVisible(bool visible);
 	virtual void refresh();
 
 	/*virtual*/ void setFlashState(bool flash_state);
@@ -110,6 +110,8 @@ class LLConversationViewSession : public LLFolderViewFolder
 
 	bool					mIsInActiveVoiceChannel;
 
+	bool                    mShowIcons;
+
 	LLVoiceClientStatusObserver* mVoiceClientObserver;
 	
 	boost::signals2::connection mActiveVoiceChannelConnection;
@@ -145,6 +147,7 @@ class LLConversationViewParticipant : public LLFolderViewItem
     /*virtual*/ S32 getLabelXPos();
     /*virtual*/ BOOL handleMouseDown( S32 x, S32 y, MASK mask );
 	void hideSpeakingIndicator();
+	void setAvatarIconVisible(bool visible);
 
 protected:
 	friend class LLUICtrlFactory;
diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp
index f1a6ef78a69ce6bb5f0329c794812fc5780e4975..1c9b2e6acbb9621bb479a26489c9cbb274bd2efb 100755
--- a/indra/newview/llfloaterimcontainer.cpp
+++ b/indra/newview/llfloaterimcontainer.cpp
@@ -924,6 +924,10 @@ void LLFloaterIMContainer::onCustomAction(const LLSD& userdata)
 	{
 		setSortOrderParticipants(LLConversationFilter::SO_DISTANCE);
 	}
+	if ("view_icons" == command)
+	{
+		gSavedSettings.setBOOL("ChatShowIcons", !gSavedSettings.getBOOL("ChatShowIcons"));
+	}
 	if ("chat_preferences" == command)
 	{
 		LLFloaterPreference * floater_prefp = LLFloaterReg::showTypedInstance<LLFloaterPreference>("preferences");
@@ -974,6 +978,10 @@ BOOL LLFloaterIMContainer::isActionChecked(const LLSD& userdata)
 	{
 		return (order.getSortOrderParticipants() == LLConversationFilter::SO_DISTANCE);
 	}
+	if ("view_icons" == command)
+	{
+		return gSavedSettings.getBOOL("ChatShowIcons");
+	}
 	if ("Translating.Enabled" == command)
 	{
 		return gSavedPerAccountSettings.getBOOL("TranslatingEnabled");
diff --git a/indra/newview/skins/default/xui/en/menu_participant_view.xml b/indra/newview/skins/default/xui/en/menu_participant_view.xml
index 7ea87ee05c442542a9bcc79117d6b710e832c664..658238bf4196336d93465a9e9f363b4f9ccca757 100755
--- a/indra/newview/skins/default/xui/en/menu_participant_view.xml
+++ b/indra/newview/skins/default/xui/en/menu_participant_view.xml
@@ -59,6 +59,19 @@
          function="IMFloaterContainer.Check"
          parameter="sort_participants_by_recent" />
     </menu_item_check>
+	<menu_item_separator
+     layout="topleft" />
+	<menu_item_check
+	 label="View people icons"
+	 layout="topleft"
+	 name="view_icons">
+		<on_click
+         function="IMFloaterContainer.Action"
+         parameter="view_icons" />
+		<on_check
+         function="IMFloaterContainer.Check"
+         parameter="view_icons" />
+	</menu_item_check>
     <menu_item_separator
      layout="topleft" />
     <menu_item_call