Fairly large ITTSW checkin.
- Created ITCutWindowEffect for simple appear and vanish without a
transition. Better than using nil in the ITTSW.
- Moved the concept of effect progress out of the effects and into the
window itself, as a method in the ITWindowMobility protocol (formerly
known as ITWindowPositioning).
- Moved the logic to start the vanish timer into ITTSW's setVisibility
callback method. If an effect sets the window's visibility to the
"Visible" state (having completely appeared, or completely canceled
vanishing), the timer will begin.
- Cleaned up a lot of code, and improved performance a bit. Looks even
better than before on my old dual 450... who knows, it might be good on a
G3 :)
Stuff that's left in the Kit side of MT's statuswindows:
- Implement vanish timer.
- Finalize ITSlide*allyWindowEffect
- ( Warning... long. )
Cancelling a window appearing should always use a reverse of the entry
effect. But sometimes, a different effect may be desired for cancelling
a vanishing window than the reverse of the exit effect. For example,
a window "Cuts" in, and begins to "Dissolve" out. As of now, cancelling
the dissolve out will cause a very fast dissolve back in, however, to
match Apple's style, a simple "cut" back in would be desired.
It's not as simple as always using an inverse of the entry effect to
cancel vanish. Some effects are too radically different (consider trying to
cancel a "Pivot" exit with the inverse of a "SlideHorizontally". It just
wouldn't work.
Personally, i think it's actually better to keep the heuristic as it
is, and in the case of "Cut" in / "Dissolve" out, fuck the way Apple does
it... Ours looks better. However, a third effect object could be
instantiated to handle the cancel vanish effect, which would be used for
that purpose if present. This is a big maybe, and is definitely not a
showstopper for MT FCS.