diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp
index 1acdb96da6d74a34816b87c577cdf563d7a1f568..2521bde8fa1548e5508d25ca185238ff46200393 100644
--- a/indra/newview/llcallfloater.cpp
+++ b/indra/newview/llcallfloater.cpp
@@ -153,6 +153,10 @@ void LLCallFloater::draw()
 		setModeratorMutedVoice(is_moderator_muted);
 	}
 
+	// Need to resort the participant list if it's in sort by recent speaker order.
+	if (mPaticipants)
+		mPaticipants->updateRecentSpeakersOrder();
+
 	LLDockableFloater::draw();
 }
 
diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp
index 8d03f9e68654c183ab250917f01201bd4ae5dcb1..3f309b3bf583939d3cb7b995102a159bd5a8086e 100644
--- a/indra/newview/llpanelimcontrolpanel.cpp
+++ b/indra/newview/llpanelimcontrolpanel.cpp
@@ -247,10 +247,9 @@ void LLPanelGroupControlPanel::draw()
 	//Remove event does not raised until speakerp->mActivityTimer.hasExpired() is false, see LLSpeakerManager::update()
 	//so we need update it to raise needed event
 	mSpeakerManager->update(true);
-	// Need to refresh participants to display ones not in voice as disabled and 
-	// resort the avatar list if it's in sort by recent speaker order.
+	// Need to resort the participant list if it's in sort by recent speaker order.
 	if (mParticipantList)
-		mParticipantList->refreshVoiceState();
+		mParticipantList->updateRecentSpeakersOrder();
 	LLPanelChatControlPanel::draw();
 }
 
diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp
index 8fb4063ea7d502fa69a608d65fff25763a243e73..dfe0b504bd4cdd29421982d6f910d16df7012ba4 100644
--- a/indra/newview/llparticipantlist.cpp
+++ b/indra/newview/llparticipantlist.cpp
@@ -227,6 +227,10 @@ void LLParticipantList::refreshVoiceState()
 			item->setOnline(!is_in_voice);
 		}
 	}
+}
+
+void LLParticipantList::updateRecentSpeakersOrder()
+{
 	if (E_SORT_BY_RECENT_SPEAKERS == getSortOrder())
 	{
 		// Resort avatar list
diff --git a/indra/newview/llparticipantlist.h b/indra/newview/llparticipantlist.h
index 21eda86edd32332d1a357c4e3e9344b205ac4871..515529452bdfb7bca589fb8c0d5fda03fc557483 100644
--- a/indra/newview/llparticipantlist.h
+++ b/indra/newview/llparticipantlist.h
@@ -65,6 +65,11 @@ class LLParticipantList
 		 */
 		void refreshVoiceState();
 
+		/**
+		 * Refreshes the participant list if it's in sort by recent speaker order.
+		 */
+		void updateRecentSpeakersOrder();
+
 	protected:
 		/**
 		 * LLSpeakerMgr event handlers