@@ -6,6 +6,7 @@
 function QueueStatusMinimapButton_OnLoad(self)
 	self:RegisterForClicks("LeftButtonUp", "RightButtonUp");
 	self:SetFrameLevel(self:GetFrameLevel() + 1);
+	self.glowLocks = {};
 end
 
 function QueueStatusMinimapButton_OnEnter(self)
@@ -21,10 +22,13 @@ function QueueStatusMinimapButton_OnClic
 		QueueStatusDropDown_Show(self.DropDown, self:GetName());
 	else
 		local inBattlefield, showScoreboard = QueueStatus_InActiveBattlefield();
+		local lfgListActiveEntry = C_LFGList.GetActiveEntryInfo();
 		if ( inBattlefield ) then
 			if ( showScoreboard ) then
 				ToggleWorldStateScoreFrame();
 			end
+		elseif ( lfgListActiveEntry ) then
+			LFGListUtil_OpenBestWindow();
 		else
 			QueueStatusDropDown_Show(self.DropDown, self:GetName());
 		end
@@ -35,6 +39,23 @@ function QueueStatusMinimapButton_OnShow
 	self.Eye:SetFrameLevel(self:GetFrameLevel() - 1);
 end
 
+function QueueStatusMinimapButton_SetGlowLock(self, lock, enabled)
+	self.glowLocks[lock] = enabled;
+	QueueStatusMinimapButton_UpdateGlow(self);
+end
+
+function QueueStatusMinimapButton_UpdateGlow(self)
+	local enabled = false;
+	for k, v in pairs(self.glowLocks) do
+		if ( v ) then
+			enabled = true;
+			break;
+		end
+	end
+
+	self.Eye.Highlight:SetShown(enabled);
+end
+
 ----------------------------------------------
 ------------QueueStatusFrame------------------
 ----------------------------------------------
@@ -52,6 +73,12 @@ function QueueStatusFrame_OnLoad(self)
 	self:RegisterEvent("LFG_PROPOSAL_SHOW");
 	self:RegisterEvent("LFG_QUEUE_STATUS_UPDATE");
 
+	--For LFGList
+	self:RegisterEvent("LFG_LIST_ACTIVE_ENTRY_UPDATE");
+	self:RegisterEvent("LFG_LIST_SEARCH_RESULTS_RECEIVED");
+	self:RegisterEvent("LFG_LIST_SEARCH_RESULT_UPDATED");
+	self:RegisterEvent("LFG_LIST_APPLICANT_UPDATED");
+
 	--For PvP Role Checks
 	self:RegisterEvent("PVP_ROLE_CHECK_UPDATED");
 
@@ -94,7 +121,7 @@ function QueueStatusFrame_GetEntry(self,
 end
 
 function QueueStatusFrame_Update(self)
-	local showMinimapButton, animateEye;
+	local animateEye;
 
 	local nextEntry = 1;
 
@@ -110,13 +137,35 @@ function QueueStatusFrame_Update(self)
 			totalHeight = totalHeight + entry:GetHeight();
 			nextEntry = nextEntry + 1;
 
-			showMinimapButton = true;
 			if ( mode == "queued" ) then
 				animateEye = true;
 			end
 		end
 	end
 
+	--Try LFGList entries
+	local isActive = C_LFGList.GetActiveEntryInfo();
+	if ( isActive ) then
+		local entry = QueueStatusFrame_GetEntry(self, nextEntry);
+		QueueStatusEntry_SetUpLFGListActiveEntry(entry);
+		entry:Show();
+		totalHeight = totalHeight + entry:GetHeight();
+		nextEntry = nextEntry + 1;
+	end
+
+	--Try LFGList applications
+	local apps = C_LFGList.GetApplications();
+	for i=1, #apps do
+		local _, appStatus = C_LFGList.GetApplicationInfo(apps[i]);
+		if ( appStatus == "applied" ) then
+			local entry = QueueStatusFrame_GetEntry(self, nextEntry);
+			QueueStatusEntry_SetUpLFGListApplication(entry, apps[i]);
+			entry:Show();
+			totalHeight = totalHeight + entry:GetHeight();
+			nextEntry = nextEntry + 1;
+		end
+	end
+
 	local inProgress, _, _, _, _, isBattleground = GetLFGRoleUpdate();
 	--Try PvP Role Check
 	if ( inProgress and isBattleground ) then
@@ -125,7 +174,6 @@ function QueueStatusFrame_Update(self)
 		entry:Show();
 		totalHeight = totalHeight + entry:GetHeight();
 		nextEntry = nextEntry + 1;
-		showMinimapButton = true;
 	end
 
 	--Try all PvP queues
@@ -138,7 +186,6 @@ function QueueStatusFrame_Update(self)
 			totalHeight = totalHeight + entry:GetHeight();
 			nextEntry = nextEntry + 1;
 
-			showMinimapButton = true;
 			if ( status == "queued" and not suspend ) then
 				animateEye = true;
 			end
@@ -155,7 +202,6 @@ function QueueStatusFrame_Update(self)
 			totalHeight = totalHeight + entry:GetHeight();
 			nextEntry = nextEntry + 1;
 
-			showMinimapButton = true;
 			if ( status == "queued" ) then
 				animateEye = true;
 			end
@@ -169,8 +215,6 @@ function QueueStatusFrame_Update(self)
 		entry:Show();
 		totalHeight = totalHeight + entry:GetHeight();
 		nextEntry = nextEntry + 1;
-
-		showMinimapButton = true;
 	end
 
 	--Pet Battle PvP Queue
@@ -182,7 +226,6 @@ function QueueStatusFrame_Update(self)
 		totalHeight = totalHeight + entry:GetHeight();
 		nextEntry = nextEntry + 1;
 
-		showMinimapButton = true;
 		if ( pbStatus == "queued" ) then
 			animateEye = true;
 		end
@@ -197,7 +240,7 @@ function QueueStatusFrame_Update(self)
 	self:SetHeight(totalHeight);
 
 	--Update the minimap icon
-	if ( showMinimapButton ) then
+	if ( nextEntry > 1 ) then
 		QueueStatusMinimapButton:Show();
 	else
 		QueueStatusMinimapButton:Hide();
@@ -315,6 +358,18 @@ function QueueStatusEntry_SetUpLFG(entry
 	end
 end
 
+function QueueStatusEntry_SetUpLFGListActiveEntry(entry)
+	local _, _, _, name = C_LFGList.GetActiveEntryInfo();
+	local numApplicants, numActiveApplicants = C_LFGList.GetNumApplicants();
+	QueueStatusEntry_SetMinimalDisplay(entry, name, QUEUED_STATUS_LISTED, string.format(LFG_LIST_PENDING_APPLICANTS, numActiveApplicants));
+end
+
+function QueueStatusEntry_SetUpLFGListApplication(entry, resultID)
+	local _, activityID, name = C_LFGList.GetSearchResultInfo(resultID);
+	local activityName = C_LFGList.GetActivityInfo(activityID);
+	QueueStatusEntry_SetMinimalDisplay(entry, name, QUEUED_STATUS_SIGNED_UP, activityName);
+end
+
 function QueueStatusEntry_SetUpBattlefield(entry, idx)
 	local status, mapName, teamSize, registeredMatch, suspend = GetBattlefieldStatus(idx);
 	if ( status == "queued" ) then
@@ -555,6 +610,21 @@ function QueueStatusDropDown_Update()
 		end
 	end
 
+	--LFGList
+	local isActive = C_LFGList.GetActiveEntryInfo();
+	if ( isActive ) then
+		QueueStatusDropDown_AddLFGListButtons(info);
+	end
+
+	local apps = C_LFGList.GetApplications();
+	for i=1, #apps do
+		local _, appStatus = C_LFGList.GetApplicationInfo(apps[i]);
+		if ( appStatus == "applied" ) then
+			QueueStatusDropDown_AddLFGListApplicationButtons(info, apps[i]);
+		end
+	end
+
+	--PvP
 	local inProgress, _, _, _, _, isBattleground = GetLFGRoleUpdate();
 	if ( inProgress and isBattleground ) then
 		QueueStatusDropDown_AddPVPRoleCheckButtons(info);
@@ -567,6 +637,7 @@ function QueueStatusDropDown_Update()
 		end
 	end
 
+	--World PvP
 	for i=1, MAX_WORLD_PVP_QUEUES do
 		local status, mapName, queueID = GetWorldPVPQueueStatus(i);
 		if ( status and status ~= "none" ) then
@@ -589,6 +660,7 @@ function QueueStatusDropDown_Update()
 		UIDropDownMenu_AddButton(info);
 	end
 
+	--Pet Battles
 	if ( C_PetBattles.GetPVPMatchmakingInfo() ) then
 		QueueStatusDropDown_AddPetBattleButtons(info);
 	end
@@ -694,7 +766,7 @@ function QueueStatusDropDown_AddBattlefi
 	elseif ( status == "active" ) then
 		local inArena = IsActiveBattlefieldArena();
 
-		if ( not inArena or GetBattlefieldWinner() ) then
+		if ( not inArena or GetBattlefieldWinner() or CommentatorGetMode() > 0) then
 			info.text = TOGGLE_SCOREBOARD;
 			info.func = wrapFunc(ToggleWorldStateScoreFrame);
 			info.arg1 = nil;
@@ -819,6 +891,46 @@ function QueueStatusDropDown_AddLFGButto
 	end
 end
 
+function QueueStatusDropDown_AddLFGListButtons(info)
+	wipe(info);
+	local _, _, _, name = C_LFGList.GetActiveEntryInfo();
+	info.text = name;
+	info.isTitle = 1;
+	info.notCheckable = 1;
+	UIDropDownMenu_AddButton(info);
+
+	info.text = LFG_LIST_VIEW_GROUP;
+	info.isTitle = nil;
+	info.leftPadding = 10;
+	info.func = LFGListUtil_OpenBestWindow;
+	info.disabled = false;
+	UIDropDownMenu_AddButton(info);
+
+	info.text = UNLIST_MY_GROUP;
+	info.isTitle = nil;
+	info.leftPadding = 10;
+	info.func = wrapFunc(C_LFGList.RemoveListing);
+	info.disabled = not UnitIsGroupLeader("player");
+	UIDropDownMenu_AddButton(info);
+end
+
+function QueueStatusDropDown_AddLFGListApplicationButtons(info, resultID)
+	wipe(info);
+	local _, _, name = C_LFGList.GetSearchResultInfo(resultID);
+	info.text = name;
+	info.isTitle = 1;
+	info.notCheckable = 1;
+	UIDropDownMenu_AddButton(info);
+
+	info.text = CANCEL_SIGN_UP;
+	info.isTitle = nil;
+	info.leftPadding = 10;
+	info.func = wrapFunc(C_LFGList.CancelApplication);
+	info.arg1 = resultID;
+	info.disabled = IsInGroup() and not UnitIsGroupLeader("player");
+	UIDropDownMenu_AddButton(info);
+end
+
 function QueueStatusDropDown_AcceptQueuedPVPMatch()
 	if ( IsFalling() ) then
 		UIErrorsFrame:AddMessage(ERR_NOT_WHILE_FALLING, 1.0, 0.1, 0.1, 1.0);