diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h
index 6a0d8ef3d65d1d07bb1d9ea1784afc6b6d8c4ce5..59b551a16d33947b52d3d51ef2806be19edd7d44 100644
--- a/indra/llui/llbutton.h
+++ b/indra/llui/llbutton.h
@@ -216,6 +216,7 @@ class LLButton
 	void			setImageOverlay(const std::string& image_name, LLFontGL::HAlign alignment = LLFontGL::HCENTER, const LLColor4& color = LLColor4::white);
 	void 			setImageOverlay(const LLUUID& image_id, LLFontGL::HAlign alignment = LLFontGL::HCENTER, const LLColor4& color = LLColor4::white);
 	LLPointer<LLUIImage> getImageOverlay() { return mImageOverlay; }
+	LLFontGL::HAlign getImageOverlayHAlign() const	{ return mImageOverlayAlignment; }
 
 	void            autoResize();	// resize with label of current btn state 
 	void            resize(LLUIString label); // resize with label input
diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp
index 9d23daf56d9b2bd0773efecd405d166fe5748ea4..98c9217306302677c658febf383b1b3daafdf306 100644
--- a/indra/llui/llcombobox.cpp
+++ b/indra/llui/llcombobox.cpp
@@ -703,19 +703,12 @@ void LLComboBox::onListMouseUp()
 
 void LLComboBox::onItemSelected(const LLSD& data)
 {
-	const std::string name = mList->getSelectedItemLabel();
+	setValue(data);
 
-	S32 cur_id = getCurrentIndex();
-	mLastSelectedIndex = cur_id;
-	if (cur_id != -1)
+	if (mAllowTextEntry && mLastSelectedIndex != -1)
 	{
-		setLabel(name);
-
-		if (mAllowTextEntry)
-		{
-			gFocusMgr.setKeyboardFocus(mTextEntry);
-			mTextEntry->selectAll();
-		}
+		gFocusMgr.setKeyboardFocus(mTextEntry);
+		mTextEntry->selectAll();
 	}
 
 	// hiding the list reasserts the old value stored in the text editor/dropdown button
@@ -1069,3 +1062,33 @@ BOOL LLComboBox::selectItemRange( S32 first, S32 last )
 {
 	return mList->selectItemRange(first, last);
 }
+
+
+static LLDefaultChildRegistry::Register<LLIconsComboBox> register_icons_combo_box("icons_combo_box");
+
+LLIconsComboBox::Params::Params()
+:	icon_column("icon_column", ICON_COLUMN),
+	label_column("label_column", LABEL_COLUMN)
+{}
+
+LLIconsComboBox::LLIconsComboBox(const LLIconsComboBox::Params& p)
+:	LLComboBox(p),
+	mIconColumnIndex(p.icon_column),
+	mLabelColumnIndex(p.label_column)
+{}
+
+void LLIconsComboBox::setValue(const LLSD& value)
+{
+	BOOL found = mList->selectByValue(value);
+	if (found)
+	{
+		LLScrollListItem* item = mList->getFirstSelected();
+		if (item)
+		{
+			mButton->setImageOverlay(mList->getSelectedItemLabel(mIconColumnIndex), mButton->getImageOverlayHAlign());
+
+			setLabel(mList->getSelectedItemLabel(mLabelColumnIndex));
+		}
+		mLastSelectedIndex = mList->getFirstSelectedIndex();
+	}
+}
diff --git a/indra/llui/llcombobox.h b/indra/llui/llcombobox.h
index 4f2758846716e8885fb9e1a31cb54b2c3a7f540f..3cc2a8f5d11313d9ab35417df2e2cd1fa345e10b 100644
--- a/indra/llui/llcombobox.h
+++ b/indra/llui/llcombobox.h
@@ -221,6 +221,7 @@ class LLComboBox
 	LLPointer<LLUIImage>	mArrowImage;
 	LLUIString			mLabel;
 	BOOL				mHasAutocompletedText;
+	S32                 mLastSelectedIndex;
 
 private:
 	BOOL				mAllowTextEntry;
@@ -230,6 +231,36 @@ class LLComboBox
 	commit_callback_t	mPrearrangeCallback;
 	commit_callback_t	mTextEntryCallback;
 	commit_callback_t	mSelectionCallback;
-	S32                 mLastSelectedIndex;
 };
+
+// A combo box with icons for the list of items.
+class LLIconsComboBox
+:	public LLComboBox
+{
+public:
+	struct Params
+	:	public LLInitParam::Block<Params, LLComboBox::Params>
+	{
+		Optional<S32>		icon_column,
+							label_column;
+		Params();
+	};
+
+	/*virtual*/ void setValue(const LLSD& value);
+
+private:
+	enum EColumnIndex
+	{
+		ICON_COLUMN = 0,
+		LABEL_COLUMN
+	};
+
+	friend class LLUICtrlFactory;
+	LLIconsComboBox(const Params&);
+	virtual ~LLIconsComboBox() {};
+
+	S32			mIconColumnIndex;
+	S32			mLabelColumnIndex;
+};
+
 #endif
diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp
index 77caaaa425e6f079c544c29b9ea8e165a66ef280..18ec5b51dd00b4ddb1ea109de7fb61f421701da3 100644
--- a/indra/llui/llscrolllistctrl.cpp
+++ b/indra/llui/llscrolllistctrl.cpp
@@ -630,7 +630,9 @@ void LLScrollListCtrl::calcColumnWidths()
 			LLScrollListCell* cellp = (*iter)->getColumn(column->mIndex);
 			if (!cellp) continue;
 
-			column->mMaxContentWidth = llmax(LLFontGL::getFontSansSerifSmall()->getWidth(cellp->getValue().asString()) + mColumnPadding + COLUMN_TEXT_PADDING, column->mMaxContentWidth);
+			// get text value width only for text cells
+			column->mMaxContentWidth = cellp->isText() ?
+					llmax(LLFontGL::getFontSansSerifSmall()->getWidth(cellp->getValue().asString()) + mColumnPadding + COLUMN_TEXT_PADDING, column->mMaxContentWidth) : column->mMaxContentWidth;
 		}
 
 		max_item_width += column->mMaxContentWidth;
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index 839d3f0c21cabae0d276fa5ea019c4da5c31f457..8bffe9bf57a7aa8aa87eacf138db82356058fb20 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -537,10 +537,10 @@ void LLFloaterPreference::onOpen(const LLSD& key)
 	{
 		childSetText("maturity_desired_textbox",  maturity_combo->getSelectedItemLabel());
 		childSetVisible("maturity_desired_combobox", false);
-
-		// Display selected maturity icons.
-		onChangeMaturity();
 	}
+
+	// Display selected maturity icons.
+	onChangeMaturity();
 	
 	// Enabled/disabled popups, might have been changed by user actions
 	// while preferences floater was closed.
diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp
index c4684e982765904735ecb2646b4d7de299fb84cb..9f24ddc7995db47ce4137eb9f2001648233ca684 100644
--- a/indra/newview/llpanelclassified.cpp
+++ b/indra/newview/llpanelclassified.cpp
@@ -1696,7 +1696,8 @@ void LLPanelClassifiedEdit::processProperties(void* data, EAvatarProcessorType t
 			setPosGlobal(c_info->pos_global);
 
 			setClassifiedLocation(createLocationText(c_info->parcel_name, c_info->sim_name, c_info->pos_global));
-			getChild<LLComboBox>("category")->setCurrentByIndex(c_info->category + 1);
+			// *HACK see LLPanelClassifiedEdit::sendUpdate()
+			getChild<LLComboBox>("category")->setCurrentByIndex(c_info->category - 1);
 			getChild<LLComboBox>("category")->resetDirty();
 
 			bool mature = is_cf_mature(c_info->flags);
@@ -1705,6 +1706,7 @@ void LLPanelClassifiedEdit::processProperties(void* data, EAvatarProcessorType t
 			getChild<LLComboBox>("content_type")->setCurrentByIndex(mature ? CB_ITEM_MATURE : CB_ITEM_PG);
 			childSetValue("auto_renew", auto_renew);
 			childSetValue("price_for_listing", c_info->price_for_listing);
+			childSetEnabled("price_for_listing", isNew());
 
 			resetDirty();
 			setInfoLoaded(true);
@@ -1763,6 +1765,7 @@ void LLPanelClassifiedEdit::resetControls()
 	getChild<LLComboBox>("content_type")->setCurrentByIndex(0);
 	childSetValue("auto_renew", false);
 	childSetValue("price_for_listing", MINIMUM_PRICE_FOR_LISTING);
+	childSetEnabled("price_for_listing", TRUE);
 }
 
 bool LLPanelClassifiedEdit::canClose()
@@ -1799,7 +1802,9 @@ void LLPanelClassifiedEdit::sendUpdate()
 
 	c_data.agent_id = gAgent.getID();
 	c_data.classified_id = getClassifiedId();
-	c_data.category = getCategory();
+	// *HACK 
+	// Categories on server start with 1 while combo-box index starts with 0
+	c_data.category = getCategory() + 1;
 	c_data.name = getClassifiedName();
 	c_data.description = getDescription();
 	c_data.parcel_id = getParcelId();
@@ -1814,7 +1819,7 @@ void LLPanelClassifiedEdit::sendUpdate()
 U32 LLPanelClassifiedEdit::getCategory()
 {
 	LLComboBox* cat_cb = getChild<LLComboBox>("category");
-	return cat_cb->getCurrentIndex() + 1;
+	return cat_cb->getCurrentIndex();
 }
 
 U8 LLPanelClassifiedEdit::getFlags()
diff --git a/indra/newview/skins/default/xui/en/panel_region_general.xml b/indra/newview/skins/default/xui/en/panel_region_general.xml
index 1bbe9d80c0f06aa4ebcda81221c53897725d5014..4acfa42c232ba7112f538d9e82eff320dab97752 100644
--- a/indra/newview/skins/default/xui/en/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_general.xml
@@ -171,27 +171,48 @@
      width="100">
         Rating:
     </text>
-    <combo_box
+    <icons_combo_box
+     follows="left|top"
      height="20"
      label="Moderate"
      layout="topleft"
      left_delta="100"
      name="access_combo"
      top_delta="0"
-     width="85">
-        <combo_box.item
+     width="105">
+        <icons_combo_box.drop_down_button
+         image_overlay="Parcel_M_Light"
+         image_overlay_alignment="left"
+         imgoverlay_label_space="3"
+         pad_left="3"/>
+        <icons_combo_box.item
          label="Adult"
-         name="Adult"
-         value="42" />
-        <combo_box.item
+         value="42">
+            <item.columns
+             halign="center"
+             type="icon"
+             value="Parcel_R_Light"
+             width="20"/>
+          </icons_combo_box.item>
+        <icons_combo_box.item
          label="Moderate"
-         name="Mature"
-         value="21" />
-        <combo_box.item
+         value="21">
+            <item.columns
+             halign="center"
+             type="icon"
+             value="Parcel_M_Light"
+             width="20"/>
+        </icons_combo_box.item>
+        <icons_combo_box.item
          label="General"
-         name="PG"
-         value="13" />
-    </combo_box>
+         value="13">
+            <item.columns
+             halign="center"
+             type="icon"
+             value="Parcel_PG_Light"
+             width="20"/>
+        </icons_combo_box.item>
+    </icons_combo_box>
     <button
      enabled="false"
      follows="left|top"