Quantcast

Changed the logic for the filter buttons to make the currently-selected filter persist between expanding/collapsing the panel.

James D. Callahan III [06-16-10 - 05:17]
Changed the logic for the filter buttons to make the currently-selected filter persist between expanding/collapsing the panel.
Filename
Frame.lua
diff --git a/Frame.lua b/Frame.lua
index f663790..a42fa7b 100644
--- a/Frame.lua
+++ b/Frame.lua
@@ -1349,24 +1349,6 @@ MainPanel:SetScript("OnMouseUp",
 			    opts.offsety = y
 		    end)

--- TODO: Fix this
-function MainPanel:HighlightCategory(target)
-	if not target then
-		self.filter_menu:Hide()
-	end
-
-	for category in pairs(self.filter_menu) do
-		local toggle = "menu_toggle_" .. category
-
-		if target == category then
---			self[toggle].text:SetText(SetTextColor(BASIC_COLORS["white"], CATEGORY_TEXT[category]))
-		elseif category ~= 0 and category ~= "texture" then
-			self[toggle]:SetChecked(false)
---			self[toggle].text:SetText(SetTextColor(BASIC_COLORS["yellow"], CATEGORY_TEXT[category]))
-		end
-	end
-end
-
 function MainPanel:ToggleState()
 	local x, y = self:GetLeft(), self:GetBottom()

@@ -1959,17 +1941,24 @@ MainPanel.filter_toggle:SetScript("OnClick",
 							   MainPanel["menu_toggle_" .. category]:Hide()
 						   end
 					   end
-					   MainPanel:HighlightCategory(nil)
 					   MainPanel.filter_reset:Hide()
+					   MainPanel.filter_menu:Hide()
 				   else
 					   -- Change the text and tooltip for the filter button
 					   self:SetText(L["FILTER_CLOSE"])
 					   SetTooltipScripts(self, L["FILTER_CLOSE_DESC"])

-					   -- Show the category buttons
+					   -- Show the category buttons. If one has been selected, show its information in the panel.
 					   for category in pairs(MainPanel.filter_menu) do
+						   local toggle = "menu_toggle_" .. category
+
 						   if category ~= 0 and category ~= "texture" then
-							   MainPanel["menu_toggle_" .. category]:Show()
+							   MainPanel[toggle]:Show()
+
+							   if MainPanel[toggle]:GetChecked() then
+								   MainPanel.filter_menu[category]:Show()
+								   MainPanel.filter_menu:Show()
+							   end
 						   end
 					   end
 					   MainPanel.filter_reset:Show()
@@ -2017,7 +2006,6 @@ do

 		if MainPanel:IsVisible() then
 			MainPanel:UpdateTitle()
-			MainPanel:HighlightCategory(nil)
 			ListFrame:Update(nil, false)
 		end
 	end
@@ -2055,19 +2043,23 @@ do

 		local toggle = "menu_toggle_" .. panel

-		if MainPanel[toggle]:GetChecked() then
+		if not MainPanel[toggle]:GetChecked() then
 			-- Display the selected filter_menu category frame
-			MainPanel:HighlightCategory(panel)
+			MainPanel[toggle]:SetChecked(true)
 			MainPanel.filter_menu[panel]:Show()

-			-- Hide all of the other filter_menu category frames
+			-- Hide all of the other filter_menu category frames, and un-check them as well.
 			for category in pairs(MainPanel.filter_menu) do
 				if category ~= panel and category ~= 0 and category ~= "texture" then
+					local tog = "menu_toggle_" .. category
+
+					MainPanel[tog]:SetChecked(false)
 					MainPanel.filter_menu[category]:Hide()
 				end
 			end
 			ChangeFilters = true
 		else
+			MainPanel[toggle]:SetChecked(false)
 			ChangeFilters = false
 		end

@@ -2103,6 +2095,8 @@ do
 		cButton:SetHeight(button_size)
 		cButton:SetScript("OnClick",
 				  function(self, button, down)
+					  -- The button must be unchecked for ToggleFilterMenu() to work correctly.
+					  cButton:SetChecked(false)
 					  ToggleFilterMenu(category)
 				  end)