diff options
author | Caolán McNamara <caolanm@redhat.com> | 2018-12-04 16:42:10 +0000 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2019-01-17 13:45:24 +0100 |
commit | b7d2114afe3991945936270f0d4f5e044b69bfc2 (patch) | |
tree | 0f47e3ca970b2e5ac47a6967dac29930045d3cc0 /slideshow | |
parent | 38acd67522a3ef704fca8cb77dc0caf177f6115c (diff) |
tdf#121830, tdf#121942 TogglePause should reset to original...
state on deactivate_st ?
is that how it should work, or should there be an additional TogglePause
created at import time to get the apparent intended pause effect
Reviewed-on: https://gerrit.libreoffice.org/64548
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
(cherry picked from commit 1aa10fcb668f67f4313b7170a4090027e52164c5)
Change-Id: I0573bd8d9534271f2b36d7ab3b8cdc20e0f985a1
Reviewed-on: https://gerrit.libreoffice.org/64621
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
(cherry picked from commit 8b550ff4c320e3c3e1495b4a38858c23c420dc86)
Diffstat (limited to 'slideshow')
-rw-r--r-- | slideshow/source/engine/animationnodes/animationcommandnode.cxx | 24 | ||||
-rw-r--r-- | slideshow/source/engine/animationnodes/animationcommandnode.hxx | 2 |
2 files changed, 25 insertions, 1 deletions
diff --git a/slideshow/source/engine/animationnodes/animationcommandnode.cxx b/slideshow/source/engine/animationnodes/animationcommandnode.cxx index 0c9519589ed0..1b764b1c5a4a 100644 --- a/slideshow/source/engine/animationnodes/animationcommandnode.cxx +++ b/slideshow/source/engine/animationnodes/animationcommandnode.cxx @@ -38,6 +38,7 @@ AnimationCommandNode::AnimationCommandNode( uno::Reference<animations::XAnimatio ::std::shared_ptr<BaseContainerNode> const& pParent, NodeContext const& rContext ) : BaseNode( xNode, pParent, rContext ), + mbToggled(false), mpShape(), mxCommandNode( xNode, css::uno::UNO_QUERY_THROW ) { @@ -80,12 +81,13 @@ void AnimationCommandNode::activate_st() // the command toggles the pause status on a media object case EffectCommands::TOGGLEPAUSE: { - if( mpShape ) + if (mpShape) { if( mpShape->isPlaying() ) mpShape->pause(); else mpShape->play(); + mbToggled = true; } break; } @@ -109,6 +111,26 @@ void AnimationCommandNode::activate_st() "AnimationCommandNode::deactivate" ) ); } +void AnimationCommandNode::deactivate_st( NodeState /*eDestState*/ ) +{ + switch( mxCommandNode->getCommand() ) { + // the command toggles the pause status on a media object + case EffectCommands::TOGGLEPAUSE: + { + if (mpShape && mbToggled) + { + if( mpShape->isPlaying() ) + mpShape->pause(); + else + mpShape->play(); + mbToggled = false; + } + break; + } + + } +} + bool AnimationCommandNode::hasPendingAnimation() const { return mxCommandNode->getCommand() == EffectCommands::STOPAUDIO || mpShape; diff --git a/slideshow/source/engine/animationnodes/animationcommandnode.hxx b/slideshow/source/engine/animationnodes/animationcommandnode.hxx index 675da7c3b0e8..1aacd1b6a071 100644 --- a/slideshow/source/engine/animationnodes/animationcommandnode.hxx +++ b/slideshow/source/engine/animationnodes/animationcommandnode.hxx @@ -46,9 +46,11 @@ protected: private: virtual void activate_st() override; + virtual void deactivate_st( NodeState eDestState ) override; virtual bool hasPendingAnimation() const override; private: + bool mbToggled; IExternalMediaShapeBaseSharedPtr mpShape; css::uno::Reference<css::animations::XCommand > mxCommandNode; }; |