From 59cd36c61d02285bd3298360ccecc5ce43b68124 Mon Sep 17 00:00:00 2001 From: "James D. Callahan III" Date: Fri, 16 Apr 2010 05:36:15 -0400 Subject: [PATCH] The concept of child entries is unnecessary - parents will suffice. Greatly simplifies removals in ListItem_OnClick() --- Frame.lua | 63 ++++++++++++++++++++----------------------------------------- 1 file changed, 20 insertions(+), 43 deletions(-) diff --git a/Frame.lua b/Frame.lua index 2b234f0..d9dffac 100644 --- a/Frame.lua +++ b/Frame.lua @@ -2745,52 +2745,30 @@ do clicked_line.is_expanded = true end else - -- This is an expanded entry. Remove all of its parent's children from the list. - local entries = ListFrame.entries + -- clicked_line is an expanded entry - find the index for its parent, and remove all of the parent's child entries. local parent = clicked_line.parent - local parent_index - - for index = 1, #entries do - if entries[index] == parent then - parent_index = index - break - end - end if parent then - addon:Debug("clicked_line (%s): %s - parent (%s): %s", clicked_line.text, clicked_line.type, parent.text, parent.type) + local parent_index + local entries = ListFrame.entries + + for index = 1, #entries do + if entries[index] == parent then + parent_index = index + break + end + end if not parent_index then addon:Debug("clicked_line (%s): parent wasn't found in ListFrame.entries", clicked_line.text) return end - local children = parent.children - - entries[parent_index].is_expanded = false - - -- Remove the expanded lines. - if children then - local child_index = parent_index + 1 - local num_children = #children - - addon:Debug("Begin: num_children is %d", num_children) - - while #children > 0 and child_index <= #entries do - local child = table.remove(children) + parent.is_expanded = false - num_children = num_children - 1 - addon:Debug("Update: num_children is %d", num_children) + local child_index = parent_index + 1 - if entries[child_index].parent == parent then - ReleaseTable(table.remove(entries, child_index)) - else - local ref = entries[child_index] - addon:Debug("list entry (%s): incorrect parent (%s)", ref.text or "nil", ref.parent and ref.parent.text or "nil") - end - end - wipe(children) - else - addon:Debug("clicked_line (%s): parent (%s) has no children.", clicked_line.text, clicked_line.parent and clicked_line.parent.text or "nil") + while entries[child_index] and entries[child_index].parent == parent do + ReleaseTable(table.remove(entries, child_index)) end else addon:Debug("Error: clicked_line has no parent.") @@ -2880,19 +2858,18 @@ do end function ListFrame:InsertEntry(entry, parent_entry, entry_index, entry_type, entry_expanded, expand_mode) - local insert_index = entry_index - entry.type = entry_type if parent_entry then - entry.parent = parent_entry - parent_entry.children = parent_entry.children or {} - - table.insert(parent_entry.children, entry) - + if parent_entry ~= entry then + entry.parent = parent_entry + else + addon:Debug("Attempting to parent an entry to itself.") + end elseif entry.type ~= "header" then addon:Debug("Non-header entry without a parent: %s - %s", entry.type, entry.text) end + local insert_index = entry_index -- If we have acquire information for this entry, push the data table into the list -- and start processing the acquires. -- 1.7.9.5