diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp
index 7dec2251e84de8a0b7c3506698a5d1ae52b8713c..b4a18d83896a9f845529df00e8bf8e01722a24eb 100644
--- a/indra/newview/llpanelgrouproles.cpp
+++ b/indra/newview/llpanelgrouproles.cpp
@@ -1749,8 +1749,7 @@ BOOL LLPanelGroupRolesSubTab::postBuildSubTab(LLView* root)
 	mRoleTitle->setKeystrokeCallback(onPropertiesKey, this);
 
 	mRoleDescription->setCommitOnFocusLost(TRUE);
-	mRoleDescription->setCommitCallback(onDescriptionCommit, this);
-	mRoleDescription->setFocusReceivedCallback(boost::bind(onDescriptionFocus, _1, this));
+	mRoleDescription->setKeystrokeCallback(boost::bind(&LLPanelGroupRolesSubTab::onDescriptionKeyStroke, this, _1));
 
 	setFooterEnabled(FALSE);
 
@@ -2216,6 +2215,12 @@ void LLPanelGroupRolesSubTab::onDescriptionFocus(LLFocusableElement* ctrl, void*
 	self->notifyObservers();
 }
 
+void LLPanelGroupRolesSubTab::onDescriptionKeyStroke(LLTextEditor* caller)
+{
+	mHasRoleChange = TRUE;
+	notifyObservers();
+}
+
 // static 
 void LLPanelGroupRolesSubTab::onDescriptionCommit(LLUICtrl* ctrl, void* user_data)
 {
diff --git a/indra/newview/llpanelgrouproles.h b/indra/newview/llpanelgrouproles.h
index 44aa7cea381fbd8418da56f42ebba9ab96fb9455..cb7941ad9e47204888985003909c6c8d9ff5292d 100644
--- a/indra/newview/llpanelgrouproles.h
+++ b/indra/newview/llpanelgrouproles.h
@@ -244,8 +244,9 @@ class LLPanelGroupRolesSubTab : public LLPanelGroupSubTab
 
 	static void onPropertiesKey(LLLineEditor*, void*);
 
+	void onDescriptionKeyStroke(LLTextEditor* caller);
+
 	static void onDescriptionCommit(LLUICtrl*, void*);
-	static void onDescriptionFocus(LLFocusableElement*, void*);
 
 	static void onMemberVisibilityChange(LLUICtrl*, void*);
 	void handleMemberVisibilityChange(bool value);