pfUI:RegisterSkin("Spellbook", function () local rawborder, border = GetBorderSize() local bpad = rawborder > 1 and border - GetPerfectPixel() or GetPerfectPixel() StripTextures(SpellBookFrame) CreateBackdrop(SpellBookFrame, nil, nil, .75) CreateBackdropShadow(SpellBookFrame) SpellBookFrame.backdrop:SetPoint("TOPLEFT", 10, -10) SpellBookFrame.backdrop:SetPoint("BOTTOMRIGHT", -30, 72) SpellBookFrame:SetHitRectInsets(10,30,10,72) EnableMovable(SpellBookFrame) SpellBookTitleText:ClearAllPoints() SpellBookTitleText:SetPoint("TOP", SpellBookFrame.backdrop, "TOP", 0, -10) SpellBookFrameTabButton1:ClearAllPoints() SpellBookFrameTabButton1:SetPoint("TOPLEFT", SpellBookFrame.backdrop, "BOTTOMLEFT", bpad, -(border + (border == 1 and 1 or 2))) for i=1, 3 do local tab = _G["SpellBookFrameTabButton"..i] local lastTab = _G["SpellBookFrameTabButton"..(i-1)] if lastTab then tab:ClearAllPoints() tab:SetPoint("LEFT", lastTab, "RIGHT", border*2 + 1, 0) end SkinTab(tab) end for i=1,SPELLS_PER_PAGE do local button = _G["SpellButton"..i] local texture = _G["SpellButton"..i.."IconTexture"] StripTextures(button) SkinButton(button, nil, nil, nil, texture) -- native cooldown frame in place of the template's indicator Model. -- SpellButton_UpdateButton reads the "