mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-20 14:17:30 +09:00
Bug 1264125: Queue transitioncancel when animation status is idle
Issue #55
This commit is contained in:
parent
e30e72ff31
commit
ffa8225e06
1 changed files with 45 additions and 31 deletions
|
|
@ -211,9 +211,9 @@ CSSTransition::QueueEvents()
|
||||||
// perhaps even with different timelines.
|
// perhaps even with different timelines.
|
||||||
// The zero timestamp is for transitionrun events where we ignore the delay
|
// The zero timestamp is for transitionrun events where we ignore the delay
|
||||||
// for the purpose of ordering events.
|
// for the purpose of ordering events.
|
||||||
TimeStamp zeroTimeStamp = AnimationTimeToTimeStamp(zeroDuration);
|
TimeStamp zeroTimeStamp = AnimationTimeToTimeStamp(zeroDuration);
|
||||||
TimeStamp startTimeStamp = ElapsedTimeToTimeStamp(intervalStartTime);
|
TimeStamp startTimeStamp = ElapsedTimeToTimeStamp(intervalStartTime);
|
||||||
TimeStamp endTimeStamp = ElapsedTimeToTimeStamp(intervalEndTime);
|
TimeStamp endTimeStamp = ElapsedTimeToTimeStamp(intervalEndTime);
|
||||||
|
|
||||||
TransitionPhase currentPhase;
|
TransitionPhase currentPhase;
|
||||||
if (mPendingState != PendingState::NotPending &&
|
if (mPendingState != PendingState::NotPending &&
|
||||||
|
|
@ -226,30 +226,44 @@ CSSTransition::QueueEvents()
|
||||||
}
|
}
|
||||||
|
|
||||||
AutoTArray<TransitionEventParams, 3> events;
|
AutoTArray<TransitionEventParams, 3> events;
|
||||||
|
|
||||||
|
// Handle cancel events firts
|
||||||
|
if (mPreviousTransitionPhase != TransitionPhase::Idle &&
|
||||||
|
currentPhase == TransitionPhase::Idle) {
|
||||||
|
// FIXME: bug 1264125: We will need to get active time when cancelling
|
||||||
|
// the transition.
|
||||||
|
StickyTimeDuration activeTime(0);
|
||||||
|
TimeStamp activeTimeStamp = ElapsedTimeToTimeStamp(activeTime);
|
||||||
|
events.AppendElement(TransitionEventParams{ eTransitionCancel,
|
||||||
|
activeTime,
|
||||||
|
activeTimeStamp });
|
||||||
|
}
|
||||||
|
|
||||||
|
// All other events
|
||||||
switch (mPreviousTransitionPhase) {
|
switch (mPreviousTransitionPhase) {
|
||||||
case TransitionPhase::Idle:
|
case TransitionPhase::Idle:
|
||||||
if (currentPhase == TransitionPhase::Pending ||
|
if (currentPhase == TransitionPhase::Pending ||
|
||||||
currentPhase == TransitionPhase::Before) {
|
currentPhase == TransitionPhase::Before) {
|
||||||
events.AppendElement(TransitionEventParams{ eTransitionRun,
|
events.AppendElement(TransitionEventParams{ eTransitionRun,
|
||||||
intervalStartTime,
|
intervalStartTime,
|
||||||
zeroTimeStamp });
|
zeroTimeStamp });
|
||||||
} else if (currentPhase == TransitionPhase::Active) {
|
} else if (currentPhase == TransitionPhase::Active) {
|
||||||
events.AppendElement(TransitionEventParams{ eTransitionRun,
|
events.AppendElement(TransitionEventParams{ eTransitionRun,
|
||||||
intervalStartTime,
|
intervalStartTime,
|
||||||
zeroTimeStamp });
|
zeroTimeStamp });
|
||||||
events.AppendElement(TransitionEventParams{ eTransitionStart,
|
events.AppendElement(TransitionEventParams{ eTransitionStart,
|
||||||
intervalStartTime,
|
intervalStartTime,
|
||||||
startTimeStamp });
|
startTimeStamp });
|
||||||
} else if (currentPhase == TransitionPhase::After) {
|
} else if (currentPhase == TransitionPhase::After) {
|
||||||
events.AppendElement(TransitionEventParams{ eTransitionRun,
|
events.AppendElement(TransitionEventParams{ eTransitionRun,
|
||||||
intervalStartTime,
|
intervalStartTime,
|
||||||
zeroTimeStamp });
|
zeroTimeStamp });
|
||||||
events.AppendElement(TransitionEventParams{ eTransitionStart,
|
events.AppendElement(TransitionEventParams{ eTransitionStart,
|
||||||
intervalStartTime,
|
intervalStartTime,
|
||||||
startTimeStamp });
|
startTimeStamp });
|
||||||
events.AppendElement(TransitionEventParams{ eTransitionEnd,
|
events.AppendElement(TransitionEventParams{ eTransitionEnd,
|
||||||
intervalEndTime,
|
intervalEndTime,
|
||||||
endTimeStamp });
|
endTimeStamp });
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
@ -257,42 +271,42 @@ CSSTransition::QueueEvents()
|
||||||
case TransitionPhase::Before:
|
case TransitionPhase::Before:
|
||||||
if (currentPhase == TransitionPhase::Active) {
|
if (currentPhase == TransitionPhase::Active) {
|
||||||
events.AppendElement(TransitionEventParams{ eTransitionStart,
|
events.AppendElement(TransitionEventParams{ eTransitionStart,
|
||||||
intervalStartTime,
|
intervalStartTime,
|
||||||
startTimeStamp });
|
startTimeStamp });
|
||||||
} else if (currentPhase == TransitionPhase::After) {
|
} else if (currentPhase == TransitionPhase::After) {
|
||||||
events.AppendElement(TransitionEventParams{ eTransitionStart,
|
events.AppendElement(TransitionEventParams{ eTransitionStart,
|
||||||
intervalStartTime,
|
intervalStartTime,
|
||||||
startTimeStamp });
|
startTimeStamp });
|
||||||
events.AppendElement(TransitionEventParams{ eTransitionEnd,
|
events.AppendElement(TransitionEventParams{ eTransitionEnd,
|
||||||
intervalEndTime,
|
intervalEndTime,
|
||||||
endTimeStamp });
|
endTimeStamp });
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TransitionPhase::Active:
|
case TransitionPhase::Active:
|
||||||
if (currentPhase == TransitionPhase::After) {
|
if (currentPhase == TransitionPhase::After) {
|
||||||
events.AppendElement(TransitionEventParams{ eTransitionEnd,
|
events.AppendElement(TransitionEventParams{ eTransitionEnd,
|
||||||
intervalEndTime,
|
intervalEndTime,
|
||||||
endTimeStamp });
|
endTimeStamp });
|
||||||
} else if (currentPhase == TransitionPhase::Before) {
|
} else if (currentPhase == TransitionPhase::Before) {
|
||||||
events.AppendElement(TransitionEventParams{ eTransitionEnd,
|
events.AppendElement(TransitionEventParams{ eTransitionEnd,
|
||||||
intervalStartTime,
|
intervalStartTime,
|
||||||
startTimeStamp });
|
startTimeStamp });
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TransitionPhase::After:
|
case TransitionPhase::After:
|
||||||
if (currentPhase == TransitionPhase::Active) {
|
if (currentPhase == TransitionPhase::Active) {
|
||||||
events.AppendElement(TransitionEventParams{ eTransitionStart,
|
events.AppendElement(TransitionEventParams{ eTransitionStart,
|
||||||
intervalEndTime,
|
intervalEndTime,
|
||||||
startTimeStamp });
|
startTimeStamp });
|
||||||
} else if (currentPhase == TransitionPhase::Before) {
|
} else if (currentPhase == TransitionPhase::Before) {
|
||||||
events.AppendElement(TransitionEventParams{ eTransitionStart,
|
events.AppendElement(TransitionEventParams{ eTransitionStart,
|
||||||
intervalEndTime,
|
intervalEndTime,
|
||||||
startTimeStamp });
|
startTimeStamp });
|
||||||
events.AppendElement(TransitionEventParams{ eTransitionEnd,
|
events.AppendElement(TransitionEventParams{ eTransitionEnd,
|
||||||
intervalStartTime,
|
intervalStartTime,
|
||||||
endTimeStamp });
|
endTimeStamp });
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue