Apache OpenOffice (AOO) Bugzilla – Issue 121164
AnimatedImages : StepTime is ignored
Last modified: 2017-05-20 11:27:29 UTC
Created attachment 79734 [details] Zip containing a Writer document and 6 images Setting (c.s.s.awt.XAnimatedImages) StepTime does not change the rate of images display, at least on Windows XP. Perhaps a consequence of Bug 121161 Attachment is a zip containing AnimatedProblems.odt and 6 png images. Unzip all in the same folder. Run the macro : StepTime should be 2000ms between two images.
Confirmed. I was about to upload my test macros. The implementation has several bugs.
(In reply to comment #1) > Confirmed. > > I was about to upload my test macros. The implementation has several bugs. Did you try playing with changing the image sets? Attachment 77599 [details] seems to work fine, as long as you don't mess with attributes, in the later case strange bugs happen...
It turns out that the control peer actually calls the respective VCL class (Throbber) to change the step time: AnimatedImagesPeer::setProperty() case BASEPROPERTY_STEP_TIME: { sal_Int32 nStepTime( 0 ); if ( i_value >>= nStepTime ) pThrobber->setStepTime( nStepTime ); break; } Unfortunately, Throbber::setStepTime() simply stores that value in a member variable void setStepTime( sal_Int32 nStepTime ) { mnStepTime = nStepTime; } that member variable is never used to actually set the AutoTimer timeout: the timeout is only set on the Throbber constructor, where the timeout value is set to a default value of 100: Throbber::Throbber( Window* i_parentWindow, WinBits i_style, const ImageSet i_imageSet ) :ImageControl( i_parentWindow, i_style ) ,mbRepeat( sal_True ) ,mnStepTime( 100 ) ,mnCurStep( 0 ) ,mnStepCount( 0 ) ,meImageSet( i_imageSet ) { maWaitTimer.SetTimeout( mnStepTime ); maWaitTimer.SetTimeoutHdl( LINK( this, Throbber, TimeOutHdl ) ); SetScaleMode( ImageScaleMode::None ); initImages(); } Possible solutions: a) make Throbber::setStepTime() update the AutoTimer's timeout, but what if the Throbber is running (== the timer is active)? b) reset the AutoTimer's timeout in Throbber::start(), that is, when the animation is started; this will have the effect that setting the step time while the animation is running will only take effect after it restarts c) ....
Reset assigne to the default "issues@openoffice.apache.org".