There is a gap between how you build the SDK and how you make and test changes to the SDK:
(working from memory here) After you build the SDK ('ant main') you run the script 'ide/constructFlexForIDE' to prepare the SDK for use in Flash Builder. You then create your test application (in which you will reproduce the bug) to use this newly build and prepared SDK. Now a question to all of you: can we make an app (or extend the Installer) so the steps to prepare a system for building the SDK are performed automatically? - I think we can download and launch the installers (not sure if we can poll for completion, though) - we can create an env.properties with all the paths set, bypassing the need to set system wide variables in obscure settings panes/files - we can create a preset directory structure to hold the source files and their dependencies (AIR SDK, playerglobal etc.) - we can find and edit mm.cfg and create a FlashPlayerTrust file - etc. Does anyone see any major obstacles that I'm overlooking? EdB On Thu, Jul 25, 2013 at 1:31 PM, Justin Mclean <jus...@classsoftware.com> wrote: > Hi, > > I took some notes while fixing this bug. > https://issues.apache.org/jira/browse/FLEX-33165 > > Any feedback and questions welcome. > > Bug information > Note that it's marked as "easyfix" and a RTE. Generally these sort of bugs > don't take much to fix. Looking at the report you can see it's for a mobile > project and Adobe Flex 4.6 so the line numbers are not going to match up to > the current development branch. Search for the line of code where the error > occurs, as the code may of change first look for the function name. You can > see that the error is now on line 1581. > > Reproduce the Bug > There is no sample code so you need to work out how to reproduce it, so > create a new sample mobile project containing a horizontal spark list and run > it. See if it can reproduce the issue using the 4.6 SDK. No luck. (See the > JIRA issue for the code used) > > Try and work out how to generate the RTE. Looking at the snapElement method > it looks like the error would only occur when scrollProperty is null and that > could happen if both canScrollHorizontally and canScrollVertically are false. > It's possible that this could happen when size changes removes the scrollbars > when screen orientation changes. This is probably why the bug is hard to > reproduce as it depends on the amount of content in the list and the screen > size. The easy way to simulate this is to turn off both horizontal scrolling > and vertical scrolling and call the mx_internal method. Modify the code to > call the method directly with both scroll bar policy off and smapping set to > something other than none. Bingo we have the RTE! > > protected function init(event:FlexEvent):void > { > list.scroller.mx_internal::snapElement(10, false); > } > > <s:List id="list" dataProvider="{listdata}" width="100%" > height="100%" verticalScrollPolicy="off" horizontalScrollPolicy="off" > scrollSnappingMode="center"> > <s:layout> > <s:HorizontalLayout /> > </s:layout> > </s:List> > > > Test in the develop branch > Change to using the latest develop branch and see if the issue still exists > and yes it does. > > Fix the bug > To fix add a null check and recompile the spark project by changing to the > frameworks/projects/spark directory and run ant to compile, this should only > take less than a min to compile. > > Clean the FB project so it picks up the framework change. Sometime it will > cache the swc and may require swapping to and old SDK and then back again. > Double check you are using the SDK you made the change in. > > Test the Change > Run the program again and/or text code path in the debugger to see that the > issue has been fixed. Play about with the sample application to make sure > nothing else has been broken. > > Running mustella tests > A change to the scroller class could effect a lot of tests but we can run the > basic tests to make sure and assume the CI will pick up any other issues. For > a change like this I wouldn't expect any issues or side effects as the RTE > would normally occur, but it's best to be safe. > > ./mini_run.sh tests/gumbo/components/ScrollBar > ./mini_run.sh tests/gumbo/components/Scroller > > Both sets of test pass as expected. > > [java] ===================================================== > [java] Passes: 122 > [java] Fails: 0 > [java] ===================================================== > > [java] ===================================================== > [java] Passes: 74 > [java] Fails: 0 > [java] ===================================================== > > > Commit the change > If you are a committer you can directly commit the change via a git push. If > you are not not a committer you would need to generate a patch file and add > it to the JIRA issue. Make sure you generate the patch from the base SDK > directory like so. > > git diff frameworks/projects/spark/src/spark/components/Scroller.as > > diff --git a/frameworks/projects/spark/src/spark/components/Scroller.as > b/frameworks/projects/spark/ > index 9f91412..c48222d 100644 > --- a/frameworks/projects/spark/src/spark/components/Scroller.as > +++ b/frameworks/projects/spark/src/spark/components/Scroller.as > @@ -1579,7 +1579,8 @@ public class Scroller extends SkinnableComponent > } > else > { > - viewport[scrollProperty] = snapScrollPosition; > + if (scrollProperty) > + viewport[scrollProperty] = snapScrollPosition; > > return null; > } > > Update JIRA > Mark the bug as resolved noting down the Apache Flex versions it has been > fixed in. > > Hope that was helpful, > Justin -- Ix Multimedia Software Jan Luykenstraat 27 3521 VB Utrecht T. 06-51952295 I. www.ixsoftware.nl