diff --git a/indra/newview/llpanelgroup.h b/indra/newview/llpanelgroup.h
index 0e6f5b89247d1c4f9fa9385bc2de2b5ab98f553a..05be4b5aeef7b8119b4a1eb03c7cc59008c99375 100644
--- a/indra/newview/llpanelgroup.h
+++ b/indra/newview/llpanelgroup.h
@@ -164,6 +164,8 @@ public:
 
 	virtual void setupCtrls	(LLPanel* parent) {};
 
+	virtual void onFilterChanged() { }
+
 protected:
 	LLUUID	mGroupID;
 	BOOL mAllowEdit;
diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp
index 473451bdb61e504c19f4246577b4693d597afe0e..78270c20bb247d00dc9244f66640362f5fe977ef 100644
--- a/indra/newview/llpanelgrouproles.cpp
+++ b/indra/newview/llpanelgrouproles.cpp
@@ -494,6 +494,7 @@ void LLPanelGroupSubTab::setSearchFilter(const std::string& filter)
 	mSearchFilter = filter;
 	LLStringUtil::toLower(mSearchFilter);
 	update(GC_ALL);
+	onFilterChanged();
 }
 
 void LLPanelGroupSubTab::activate()
@@ -2826,6 +2827,20 @@ void LLPanelGroupActionsSubTab::update(LLGroupChange gc)
 	}
 }
 
+void LLPanelGroupActionsSubTab::onFilterChanged()
+{
+	mActionDescription->clear();
+	mActionList->deselectAllItems();
+	mActionList->deleteAllItems();
+	buildActionsList(mActionList,
+		GP_ALL_POWERS,
+		GP_ALL_POWERS,
+		NULL,
+		FALSE,
+		TRUE,
+		FALSE);
+}
+
 void LLPanelGroupActionsSubTab::handleActionSelect()
 {
 	mActionMembers->deleteAllItems();
diff --git a/indra/newview/llpanelgrouproles.h b/indra/newview/llpanelgrouproles.h
index 9a696124a8cbb4a130ba92e20197f952fd68358a..1d1d69e0ae3501a382d99257a63eb387b711c86e 100644
--- a/indra/newview/llpanelgrouproles.h
+++ b/indra/newview/llpanelgrouproles.h
@@ -311,6 +311,7 @@ public:
 	virtual bool needsApply(std::string& mesg);
 	virtual bool apply(std::string& mesg);
 	virtual void update(LLGroupChange gc);
+	virtual void onFilterChanged();
 
 	void handleActionSelect();