@@ -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,11 +22,26 @@ 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(true);
 		else
+			--See if we have any active LFGList applications
+			local apps = C_LFGList.GetApplications();
+			for i=1, #apps do
+				local _, appStatus = C_LFGList.GetApplicationInfo(apps[i]);
+				if ( appStatus == "applied" or appStatus == "invited" ) then
+					--We want to open to the LFGList screen
+					LFGListUtil_OpenBestWindow(true);
+					return;
+				end
+			end
+
+			--Just show the dropdown
 			QueueStatusDropDown_Show(self.DropDown, self:GetName());
 		end
 	end
@@ -35,6 +51,28 @@ 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.Highlight:SetShown(enabled);
+	if ( enabled ) then
+		self.EyeHighlightAnim:Play();
+	else
+		self.EyeHighlightAnim:Stop();
+	end
+end
+
 ----------------------------------------------
 ------------QueueStatusFrame------------------
 ----------------------------------------------
@@ -52,6 +90,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 +138,7 @@ function QueueStatusFrame_GetEntry(self,
 end
 
 function QueueStatusFrame_Update(self)
-	local showMinimapButton, animateEye;
+	local animateEye;
 
 	local nextEntry = 1;
 
@@ -110,13 +154,40 @@ 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;
+		animateEye = true;
+	end
+
+	--Try LFGList applications
+	local apps = C_LFGList.GetApplications();
+	for i=1, #apps do
+		local _, appStatus = C_LFGList.GetApplicationInfo(apps[i]);
+		if ( appStatus == "applied" or appStatus == "invited" ) then
+			local entry = QueueStatusFrame_GetEntry(self, nextEntry);
+			QueueStatusEntry_SetUpLFGListApplication(entry, apps[i]);
+			entry:Show();
+			totalHeight = totalHeight + entry:GetHeight();
+			nextEntry = nextEntry + 1;
+
+			if ( appStatus == "applied" ) then
+				animateEye = true;
+			end
+		end
+	end
+
 	local inProgress, _, _, _, _, isBattleground = GetLFGRoleUpdate();
 	--Try PvP Role Check
 	if ( inProgress and isBattleground ) then
@@ -125,7 +196,6 @@ function QueueStatusFrame_Update(self)
 		entry:Show();
 		totalHeight = totalHeight + entry:GetHeight();
 		nextEntry = nextEntry + 1;
-		showMinimapButton = true;
 	end
 
 	--Try all PvP queues
@@ -138,7 +208,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 +224,6 @@ function QueueStatusFrame_Update(self)
 			totalHeight = totalHeight + entry:GetHeight();
 			nextEntry = nextEntry + 1;
 
-			showMinimapButton = true;
 			if ( status == "queued" ) then
 				animateEye = true;
 			end
@@ -169,8 +237,6 @@ function QueueStatusFrame_Update(self)
 		entry:Show();
 		totalHeight = totalHeight + entry:GetHeight();
 		nextEntry = nextEntry + 1;
-
-		showMinimapButton = true;
 	end
 
 	--Pet Battle PvP Queue
@@ -182,7 +248,6 @@ function QueueStatusFrame_Update(self)
 		totalHeight = totalHeight + entry:GetHeight();
 		nextEntry = nextEntry + 1;
 
-		showMinimapButton = true;
 		if ( pbStatus == "queued" ) then
 			animateEye = true;
 		end
@@ -197,7 +262,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 +380,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 +632,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 +659,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 +682,7 @@ function QueueStatusDropDown_Update()
 		UIDropDownMenu_AddButton(info);
 	end
 
+	--Pet Battles
 	if ( C_PetBattles.GetPVPMatchmakingInfo() ) then
 		QueueStatusDropDown_AddPetBattleButtons(info);
 	end
@@ -651,7 +745,7 @@ end
 
 function QueueStatusDropDown_AddBattlefieldButtons(info, idx)
 	wipe(info);
-	local status, mapName, teamSize, registeredMatch = GetBattlefieldStatus(idx);
+	local status, mapName, teamSize, registeredMatch,_,_,_,_, asGroup = GetBattlefieldStatus(idx);
 
 	local name = mapName;
 	if ( status == "active" ) then
@@ -671,7 +765,7 @@ function QueueStatusDropDown_AddBattlefi
 		info.func = wrapFunc(AcceptBattlefieldPort);
 		info.arg1 = idx;
 		info.arg2 = false;
-		info.disabled = registeredMatch and IsInGroup() and not UnitIsGroupLeader("player");
+		info.disabled = registeredMatch and IsInGroup() and not UnitIsGroupLeader("player") and asGroup;
 		UIDropDownMenu_AddButton(info);
 	elseif ( status == "locked" ) then
 		info.text = LEAVE_BATTLEGROUND;
@@ -694,7 +788,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;
@@ -813,12 +907,52 @@ function QueueStatusDropDown_AddLFGButto
 			info.text = LEAVE_QUEUE;
 			info.func = wrapFunc(RejectProposal);
 			info.arg1 = category;
-			info.disabled = (submode == "unempowered");
+			info.disabled = false;
 			UIDropDownMenu_AddButton(info);
 		end
 	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);