diff --git a/indra/newview/lloutfitobserver.cpp b/indra/newview/lloutfitobserver.cpp
index 5652a98981f5772f04a64705ad378d2f0fd3c309..efa01bade9a0f77ff12b67fcb491c7e7aae036c3 100644
--- a/indra/newview/lloutfitobserver.cpp
+++ b/indra/newview/lloutfitobserver.cpp
@@ -74,6 +74,16 @@ S32 LLOutfitObserver::getCategoryVersion(const LLUUID& cat_id)
 	return cat->getVersion();
 }
 
+// static
+const std::string& LLOutfitObserver::getCategoryName(const LLUUID& cat_id)
+{
+	LLViewerInventoryCategory* cat = gInventory.getCategory(cat_id);
+	if (!cat)
+		return LLStringUtil::null;
+
+	return cat->getName();
+}
+
 bool LLOutfitObserver::checkCOF()
 {
 	LLUUID cof = LLAppearanceMgr::getInstance()->getCOF();
@@ -105,8 +115,11 @@ void LLOutfitObserver::checkBaseOutfit()
 			return;
 
 		const S32 baseoutfit_ver = getCategoryVersion(baseoutfit_id);
+		const std::string& baseoutfit_name = getCategoryName(baseoutfit_id);
 
-		if (baseoutfit_ver == mBaseOutfitLastVersion)
+		if (baseoutfit_ver == mBaseOutfitLastVersion
+				// renaming category doesn't change version, so it's need to check it
+				&& baseoutfit_name == mLastBaseOutfitName)
 			return;
 	}
 	else
@@ -116,10 +129,11 @@ void LLOutfitObserver::checkBaseOutfit()
 
 		if (baseoutfit_id.isNull())
 			return;
-
-		mBaseOutfitLastVersion = getCategoryVersion(mBaseOutfitId);
 	}
 
+	mBaseOutfitLastVersion = getCategoryVersion(mBaseOutfitId);
+	mLastBaseOutfitName = getCategoryName(baseoutfit_id);
+
 	LLAppearanceMgr& app_mgr = LLAppearanceMgr::instance();
 	// dirtiness state should be updated before sending signal
 	app_mgr.updateIsDirty();
diff --git a/indra/newview/lloutfitobserver.h b/indra/newview/lloutfitobserver.h
index a4b5fbe04acf1c66d0122959dc0d11056f0619ba..3a66b5ea9f2b0143e9875416a640e40ba715eed7 100644
--- a/indra/newview/lloutfitobserver.h
+++ b/indra/newview/lloutfitobserver.h
@@ -68,6 +68,8 @@ class LLOutfitObserver: public LLInventoryObserver, public LLSingleton<LLOutfitO
 	/** Get a version of an inventory category specified by its UUID */
 	static S32 getCategoryVersion(const LLUUID& cat_id);
 
+	static const std::string& getCategoryName(const LLUUID& cat_id);
+
 	bool checkCOF();
 
 	void checkBaseOutfit();
@@ -78,6 +80,7 @@ class LLOutfitObserver: public LLInventoryObserver, public LLSingleton<LLOutfitO
 	LLUUID mBaseOutfitId;
 
 	S32 mBaseOutfitLastVersion;
+	std::string mLastBaseOutfitName;
 
 	bool mLastOutfitDirtiness;
 
diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp
index 3d0684afcabe99f2a9452fa8761a8c10d494a706..32b209dd0dcaaa2db69fecafb1bfe0883ce58c61 100644
--- a/indra/newview/llpaneloutfitedit.cpp
+++ b/indra/newview/llpaneloutfitedit.cpp
@@ -707,6 +707,7 @@ void LLPanelOutfitEdit::updateVerbs()
 
 	mStatus->setText(outfit_is_dirty ? getString("unsaved_changes") : getString("now_editing"));
 
+	updateCurrentOutfitName();
 }
 
 bool LLPanelOutfitEdit::switchPanels(LLPanel* switch_from_panel, LLPanel* switch_to_panel)