2016-04-09  Nenue  <Nenue>

[9b3fa734abff] [tip]
* Core.xml, ObjectiveCore.lua, ObjectiveFrame.lua, ObjectiveInfo.lua, ObjectiveTracker.xml, ObjectiveUI.lua, ObjectiveWidgets.lua:

ObjectiveFrame
- polish quest rewards display
- implement money objectives
- set line metrics in UpdateLine
- set block metrics in UpdateBlock (sum of line metrics)


2016-04-08  Nenue  <Nenue>

[d5ee940de273]
* Core.xml, Init.lua, ObjectiveCore.lua, ObjectiveEvents.lua, ObjectiveFrame.lua, ObjectiveInfo.lua, ObjectiveStyle.lua, ObjectiveTracker.xml, ObjectiveUI.lua, ObjectiveWidgets.lua:

use hardcoded aesthetic manipulations over loadstring cramming


2016-04-06  Nenue  <Nenue>

[6bd2102d340b]
* ObjectiveCore.lua, ObjectiveEvents.lua:

ObjectiveCore
- sorting out oddball events


[605e8f0e46db]
* ObjectiveCore.lua, ObjectiveEvents.lua, ObjectiveFrame.lua, ObjectiveInfo.lua, ObjectiveStyle.lua, ObjectiveTracker.xml, ObjectiveUI.lua, ObjectiveWidgets.lua, XPTracker.lua:

ObjectiveCore / Style / Events / Frame
- polishing the execution path for better performance
 - make use of the Blizzard_ObjectiveTracker bitfield values to ensure compatibility in possible secure hooks
 - avoid full updates when possible (using said bitfield values to indicate targeted sections)
- extreme streamlining of event handling layout: specific reason updates are invoked from API hooks; broader updates are invoked by when the event listener catches something vague like 'QUEST_LOG_UPDATE'


2016-04-05  Nenue  <Nenue>

[d1812fb10ae6]
* ObjectiveFrame.lua, ObjectiveInfo.lua, ObjectiveStyle.lua, ObjectiveTracker.xml:

ObjectiveStyle
- move tag/template logic into the corresponding GetInfo


[c33497b116d6]
* ObjectiveStyle.lua:

ObjectiveStyle
- statusbg and titlebg will respect the spacing value


[880828018bf4]
* ObjectiveCore.lua, ObjectiveEvents.lua, ObjectiveFrame.lua, ObjectiveInfo.lua, ObjectiveStyle.lua, ObjectiveTracker.xml, ObjectiveUI.lua, ObjectiveWidgets.lua:

ObjectiveEvents
- trim down the number of events that fire full updates
- begin the general outline for determining which trackers need to refresh
- handlers for accepting and completing auto-popup quests

ObjectiveFrame
- correct variables for money reward calculation
- make sure everythign is scaling to the font strings and that the font strings aren't being pinned by SetSize

ObjectiveInfo
- implementation of autoquest popups
- discern between internal and client bonus objective indexes
- acquire the correct data set from bonus objective query

ObjectiveStyle
- look for a style table under the previously interpreted set before deferring standard options
- horizontal/vertical options in gradient
- remove height-fixing for font strings


2016-04-04  Nenue  <Nenue>

[f660f1c1e0aa]
* ObjectiveFrame.lua, ObjectiveWidgets.lua:

Objective Widgets
- determine completion by fractional value


[ed642234f017]
* BuffFrame.xml, Config.xml, Core.xml, Init.lua, ObjectiveCore.lua, ObjectiveFrame.lua, ObjectiveInfo.lua, ObjectiveStyle.lua, ObjectiveTracker.xml, ObjectiveUI.lua, ObjectiveWidgets.lua, ObjectiveWidgets.xml:

ObjectiveFrame
- implement proper tracker name text
- expanded tracker prototypes to cover "objective lines" formatting and accommodation of widget variables
- implement the progress bars for bonus objectives

ObjectiveStyle
- moved `UpdateWrapperStyle` over and renamed it to fit semantics
- change the formula for block.`height`  to measure non-widget content only
 - allows widgets to position relative to text
 - size FontString `status` to match block.`height`
 - full block height is acquired by adding block.`height` and block.`attachmentHeight` which is calculated during objective parsing

ObjectiveWidgets
- use string keys for generated widgets to deal with multiple objectives under the same questID, and maybe dungeon objectives
- wrapper buttons use a common code path
- specialized handlers for wheel scrolling moved over to fit semantics


2016-04-02  Nenue  <Nenue>

[9455693fc290]
* Init.lua, ObjectiveCore.lua, ObjectiveFrame.lua, ObjectiveInfo.lua, ObjectiveStyle.lua, ObjectiveTracker.xml, ObjectiveUI.lua, ObjectiveWidgets.lua, ObjectiveWidgets.xml:

Init
- recall XML display state on reload

ObjectiveFrame
- quest coloring by relative level
- quest coloring by daily/weekly/complete status
- remember starting scroll value between reload
- limit anchor points to edges for regions affected by style attributes

ObjectiveInfo
- AutoQuest outline definitions
- Pull Quest title and tag data in addition to WatchInfo

ObjectiveStyle
- ensure consistent style table
- hardcode certain attributes for sanity

XML
- ensure consistent naming conventions for heading and content elements
- ensure hardcore anchors are based on edges
- expansion of file structure to deal with complexities of dynamic widgets and style caching

ObjectiveUI
- determine primary style by block handler when restoring original style
- moved framescript to 'ObjectiveWidgets' lua


[8238cddaddb1]
* ObjectiveFrame.lua, ObjectiveTracker.xml, ObjectiveUI.lua, ObjectiveWidgets.xml:

ObjectiveUI
- fillers for 'Hidden' objective widgets


[fb80e365bab3]
* ObjectiveStyle.lua:

ObjectiveStyle & ObjectiveFrame
- abstract aesthetic details away from ObjectiveFrame
- revise SetBlockStyle into a more general algorithm for every frame
 - implement caching of resolved attribute combinations
  - use loadstring functions to store resolved attributes and call upon those when, for example, a MouseUp leads a tracker block to restore its original style (removes a lot of very small fps dipping)


[f03c75f63566]
* ObjectiveCore.lua, ObjectiveFrame.lua, ObjectiveStyle.lua, ObjectiveTracker.xml, ObjectiveUI.lua:

ObjectiveStyle & ObjectiveFrame
- abstract aesthetic details away from ObjectiveFrame
- revise SetBlockStyle into a more general algorithm for every frame
 - implement caching of resolved attribute combinations
  - use loadstring functions to store resolved attributes and call upon those when, for example, a MouseUp leads a tracker block to restore its original style


2016-04-01  Nenue  <Nenue>

[2698173edd40]
* ObjectiveFrame.lua, ObjectiveUI.lua, ObjectiveWidgets.xml:

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


[7923243ae972]
* ObjectiveCore.lua, ObjectiveEvents.lua, ObjectiveFrame.lua, ObjectiveInfo.lua, ObjectiveUI.lua, ObjectiveWidgets.xml:

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


[5301c68f28d8]
* BuffButton.lua, ObjectiveFrame.lua, ObjectiveUI.lua, ObjectiveWidgets.xml:

TrackerBlock
- use IsModifiedClick function to determine appropriate OnClick actions
 - handle 'CHATLINK' modifier
 - handle 'TOGGLEQUESTWATCH' modifier

TrackerBlockObjectives
- use a generic framework to manage frame creation for various criteria tracker types:
 - ProgressBar when Blizzard flag data indicates so
 - skip when Blizzard flag data indicates so
 - DynamicText otherwise
 - events related to the criteria are registered in the criteria frame, and unregistered when the frame is hidden, either by destruction of its parent or completion


[589de8ea05b9]
* ObjectiveCore.lua, ObjectiveEvents.lua, ObjectiveFrame.lua, ObjectiveInfo.lua, ObjectiveTracker.lua, ObjectiveTracker.xml, ObjectiveUI.lua:

- validate tracked objects' existence by use of those handler.Info tables we made
- apply collision checking to action buttons when their corresponding entry has scrolled out


2016-03-31  Nenue  <Nenue>

[e9b61fd5f607]
* ObjectiveFrame.lua, ObjectiveInfo.lua, ObjectiveUI.lua:

- use IsQuestWatched as the determinant for setting action button updates
- check for block match-up in deferred action button updates


[18eee961038e]
* ObjectiveFrame.lua:

- more action button debug


[3397aae1f44d]
* Core.xml, Init.lua, ObjectiveFrame.lua, ObjectiveInfo.lua, ObjectiveTracker.lua, ObjectiveTracker.xml, ObjectiveUI.lua, ObjectiveWidgets.xml:

- use the correct key value when searching for action buttons
- handle pre-built frames from XML


[a2396b03ce63]
* ObjectiveEvents.lua, ObjectiveFrame.lua, ObjectiveInfo.lua, ObjectiveTracker.lua, ObjectiveTracker.xml, ObjectiveUI.lua:

- identify action buttons by the associated QuestID instead of QuestLogIndex
- deferred button placement in general to a self-destructing OnUpdate
-- and defer self-destruct to a end of combat event if InCombatLockdown

- tracker wrapper has an experience/reputation bar; the two elements "feel" related and it's a very simple info display


2016-03-30  Nenue  <Nenue>

[b0447b382f36]
* BuffButton.lua, ObjectiveEvents.lua, ObjectiveFrame.lua, ObjectiveInfo.lua, ObjectiveSecure.xml, ObjectiveTracker.lua, ObjectiveTracker.xml, ObjectiveUI.lua:

sorting client events from maintenance logic
implemented all that action buttons entail for quest items


[3dbcad2b387d]
* BuffAnchors.lua, BuffButton.lua, BuffFrame.xml, Config.lua, Constants.lua, Core.xml, Init.lua, ObjectiveInfo.lua, ObjectiveTracker.lua, ObjectiveTracker.xml, ObjectiveUI.lua, RaidBuffTray.lua, Veneer.toc:

initial push


