# HG changeset patch # User Nenue # Date 1459536841 14400 # Node ID 2698173edd40728b31ef182b778f5bce4d4255c3 # Parent 7923243ae9720cb7aeaf791d2a573b08cdb6e0fc ObjectiveUI & ObjectiveEvents - securehook to API calls for compatibility with addons that work with the objective tracking interface - let the API hooks invoke ObjectiveUI functions when possible - ObjectiveUI framescript handlers should use the corresponding API call if possible, so that addon space can be fully aware of our actions - Sanity check cached data when possible during 'Remove' hooks ObjectiveInfo - Add cheevID to criteria info ObjectiveCore - Index quest tracker blocks by their watch offset, and use that to verify whether the given block frame should be released into pool ObjectiveFrame - Differentiate between visible and non-visible unused buttons, and only release when their quest has been dropped - Reset 'actualBlocks' count during full updates - Reset scroll Position when the wrapper size shrinks diff -r 7923243ae972 -r 2698173edd40 ObjectiveFrame.lua --- a/ObjectiveFrame.lua Fri Apr 01 14:40:14 2016 -0400 +++ b/ObjectiveFrame.lua Fri Apr 01 14:54:01 2016 -0400 @@ -161,7 +161,6 @@ local r = Scroll:GetHeight() - Scroller:GetHeight() local s = B.Conf.ObjectiveScroll - delta * floor(r/5+.5) local from = self:GetVerticalScroll() - if r == 0 then return end if s >= r then s = r elseif s < 1 then @@ -539,7 +538,7 @@ previousBlock = handler.Tracker local numWatched = handler.GetNumWatched() local numBlocks = handler.numBlocks - local actualBlocks = handler.actualBlocks + local actualBlocks = 0 for watchIndex = 1, 25 do blockIndex = blockIndex + 1 if watchIndex <= numWatched then @@ -612,18 +611,10 @@ -- Update frame dimensions if scrollHeight > wrapperMaxHeight then print(' is larger than', wrapperMaxHeight) - --ScrollBar:Show() - --scrollWidth = wrapperMaxWidth - scrollBarWidth wrapperHeight = wrapperMaxHeight - -- Make ThumbTexture reflect the viewing scale (smaller for longer scroll, bigger for shorter) - --ScrollBar:GetThumbTexture():SetHeight((wrapperMaxHeight/scrollHeight) * (wrapperMaxHeight)) - --ScrollBar:SetWidth(scrollBarWidth) - --ScrollBar:SetPoint('TOPRIGHT', Scroller, 'TOPRIGHT', 0, 0) - --ScrollBar:SetPoint('BOTTOMLEFT', Scroller, 'BOTTOMRIGHT', -scrollBarWidth, 0) - --ScrollBar:SetMinMaxValues(1, scrollHeight - wrapperMaxHeight) else - --ScrollBar:Hide() wrapperHeight = scrollHeight + B.Conf.ObjectiveScroll = 0 end scrollWidth = floor(scrollWidth+.5) scrollHeight = floor(scrollHeight+.5) diff -r 7923243ae972 -r 2698173edd40 ObjectiveUI.lua --- a/ObjectiveUI.lua Fri Apr 01 14:40:14 2016 -0400 +++ b/ObjectiveUI.lua Fri Apr 01 14:54:01 2016 -0400 @@ -22,10 +22,10 @@ end Tracker.OnMouseUp = function(self, button) - if self.initialButton == 'LeftButton' then - if self.modChatLink and ChatEdit_GetActiveWindow() then + if button == 'LeftButton' then + if IsModifiedClick("CHATLINK") and ChatEdit_GetActiveWindow() then self:Link() - elseif self.modQuestWatch then + elseif IsModifiedClick("QUESTWATCHTOGGLE") then self:Remove() else self:Select() @@ -36,14 +36,10 @@ self.initialButton = nil self.modChatLink = nil self.modQuestWatch = nil - print(IsModifiedClick("CHATLINK"), IsModifiedClick("QUESTWATCHTOGGLE")) print('|cFFFF8800'..tostring(self:GetName())..':MouseUp()|r') end Tracker.OnMouseDown = function(self, button) - self.initialButton = button - self.modChatLink = IsModifiedClick("CHATLINK") - self.modQuestWatch = IsModifiedClick("QUESTWATCHTOGGLE") self:SetStyle('Active') print(IsModifiedClick("CHATLINK"), IsModifiedClick("QUESTWATCHTOGGLE")) print(self.info.title) @@ -84,8 +80,8 @@ Cheevs.Remove = function(self) RemoveTrackedAchievement(self.info.cheevID) end -Cheevs.OnMouseUp = function(self) - Tracker.OnMouseUp(self) +Cheevs.OnMouseUp = function(self, button) + Tracker.OnMouseUp(self, button) self:SetStyle('CheevNormal') end Cheevs.Link = function(self) @@ -368,8 +364,9 @@ self.height = params.height self:SetHeight(20) self.bg:SetHeight(20) + self.fg:ClearAllPoints() + self.fg:SetPoint('BOTTOMLEFT', self, 'BOTTOMLEFT', 2, 2) self.fg:SetHeight(16) - self.fg:SetPoint('BOTTOMLEFT', self.bg, 'BOTTOMLEFT', 1, 1) self.quantityString:SetFontObject(params.quantityString.SetFontObject) self.quantityString:SetText(self.info.quantityString) end @@ -379,11 +376,11 @@ local quantity, requiredQuantity = self.info.quantity, self.info.requiredQuantity if self.info.finished then - self.fg:SetWidth(self.bg:GetWidth() - 2) + self.fg:SetWidth(self.bg:GetWidth() - 4) elseif quantity == 0 then self.fg:Hide() else self.fg:Show() - self.fg:SetWidth((self:GetWidth()-2) * (quantity / requiredQuantity)) + self.fg:SetWidth((self.bg:GetWidth()-4) * (quantity / requiredQuantity)) end end \ No newline at end of file diff -r 7923243ae972 -r 2698173edd40 ObjectiveWidgets.xml --- a/ObjectiveWidgets.xml Fri Apr 01 14:40:14 2016 -0400 +++ b/ObjectiveWidgets.xml Fri Apr 01 14:54:01 2016 -0400 @@ -20,7 +20,7 @@ - + @@ -30,7 +30,7 @@ - +