------------------------------------------------------------------------------
* Diff since last release:

    TAGDIR=svn://svn.curseforge.net/wow/litebag/mainline/tags
    LATEST=`svn ls -v $TAGDIR | grep -v 'beta' | tail -1 | awk '{print $NF}'`
    svn diff svn://svn.curseforge.net/wow/litebag/mainline/tags/$LATEST \
             svn://svn.curseforge.net/wow/litebag/mainline/trunk


------------------------------------------------------------------------------
* XML syntax check

    xmllint --noout *.xml


------------------------------------------------------------------------------
* TODO List

    Switch the Token stuff to using the CURRENCY_DISPLAY_UPDATE event?
    Would need to call TokenFrame_LoadUI() somewhere before we have
    access to MAX_WATCHED_TOKENS.  It might be easier to leave it.

    What to do with the Token display if we allow resizing.

    Attach the bag buttons somewhere sensible.

    What to do with the specialist bag types?

    Is there a use for indication of "non-useable" items a-la Combuctor?

    Redo the logic for the BagButton colors/texture/tooltips, it is a mess.

    Put the blank spots at the top, not the bottom, so that dragging
    bigger bags in rearranges things the least.  Maybe?

    Make the frames resizeable?  Can't let them get so small that the
    search box doesn't fit any more.  Or the bag buttons if we attach
    them to the outside.

    Make the bank frame default to 14 wide? (Default bank bag is 28 slots.)


------------------------------------------------------------------------------
* Slot colors

    FWIW, these are the colors for different bags from Bagnon.

        slotColors = {
                leather = {1, .6, .45},
                enchant = {0.64, 0.83, 1},
                inscri = {.64, 1, .82},
                engineer = {.68, .63, .25},
                tackle = {0.42, 0.59, 1},
                cooking = {1, .5, .5},
                gem = {1, .65, .98},
                mine = {1, .81, .38},
                herb = {.5, 1, .5},
                normal = {1, 1, 1},
        }


------------------------------------------------------------------------------
* Frame event debugging

    -- Figure out exactly where InCombatLockdown() begins and also
    -- where we first know the bag sizes.

    MyDebugFrame = CreateFrame("Frame", UIParent)
    MyDebugFrame.eventList = { }
    MyDebugFrame:SetScript('OnEvent', function (self, event, ...)
            tinsert(self.eventList, {
                                        time(),
                                        event,
                                        InCombatLockdown(),
                                        GetContainerNumSlots(1)
                                    })
            if event == "PLAYER_ALIVE" then self:UnregisterAllEvents() end
        end)
    MyDebugFrame:RegisterAllEvents()

    /dump MyDebugFrame.eventList


