Apache Flex 4.13
=================

Apache Flex 4.13 is an update to Apache Flex 4.12. 

Known Issues
_____________

Adobe Flash Builder Integration

Adobe Flash Builder 4.7 and Adobe Flash Builder 4.6 both contain a bug where,
when generating the .mxml file for a new project that uses Apache Flex SDK
4.10.0 or later Spark Application, Flash Builder will incorrectly insert the
attribute:

	layout="absolute"

This results in a compile error in the new project.  The remedy is to simply
remove the errant attribute.

The following wiki page has been set up to contain the latest news on Adobe's
attempt to correct this problem:

https://cwiki.apache.org/confluence/display/FLEX/Adobe+Flash+Builder+'New+Project'+Bug

Adobe has provided a patch for Flash Builder 4.7 that resolves this issue:

http://helpx.adobe.com/flash-builder/kb/flex-new-project-issue--.html


Differences from Apache Flex 4.12 include:

AIR and Flash Player support
------------------------------


SDK Changes
-------------
- New Android skins
- Extended mobile media query support


Build Changes
---------------


Compiler Changes
------------------
- Fix issue with 3rd party license components not working


Bug Fixes
----------
 Below is a complete list of all the bug fixes that have been included since
 the last full release, Apache Flex 4.12.0.
 If you would like specific information about any of the items below, go to
 https://issues.apache.org and search for the JIRA Issue Number by using the
 Quick Search.  Details of the bug and its fix will be included on the
 resulting page.

JIRA Issue Number and Summary                                                                                        
-------------------------------------------------------------------------------------------------------------------
FLEX-34145  Mobile Theme: TextInput with layoutDirection="rtl" becomes mirror on focus out.
FLEX-34142  Can not change the color of the header with the property headerStyleName (MobileGridColumn)
FLEX-34141  softkeyboardActivate events are not dispatched in Flex 4.12 on iOS
FLEX-34139  Missing 120DPI Skin References
FLEX-34133  ADG RTE in columnHeaderWordWrap
FLEX-34132  DataGrid columns with no dataField specified give "[object Object]"
FLEX-34125  CheckAllPlayerGlobals script in ide folder is missing Windows implementation
FLEX-34117  Button: Small gap in the corner
FLEX-33421  Broken metadata RequiresLicense

Apache Flex 4.12
=================

Apache Flex 4.12 is an update to Apache Flex 4.11. 

Known Issues
_____________

Adobe Flash Builder Integration

Adobe Flash Builder 4.7 and Adobe Flash Builder 4.6 both contain a bug where,
when generating the .mxml file for a new project that uses Apache Flex SDK
4.10.0 or later Spark Application, Flash Builder will incorrectly insert the
attribute:

	layout="absolute"

This results in a compile error in the new project.  The remedy is to simply
remove the errant attribute.

The following wiki page has been set up to contain the latest news on Adobe's
attempt to correct this problem:

https://cwiki.apache.org/confluence/display/FLEX/Adobe+Flash+Builder+'New+Project'+Bug

Adobe has provided a patch for Flash Builder 4.7 that resolves this issue:

http://helpx.adobe.com/flash-builder/kb/flex-new-project-issue--.html


Differences from Apache Flex 4.11 include:

AIR and Flash Player support
------------------------------
 - Support Flash Player 12.0 and 13.0 beta.
 - Support for AIR 4.0 and 13.0 beta.

SDK Changes
-------------
- Improved Callout for Desktop.
- Improved UID generation performance.
- Improved mobile memory usage/performance.
- Improved CSS styles memory usage/performance.
- Changed DPI to be 160 for iPad/iPad mini and 320 for iPad retina/iPad mini retina.
- Fixed scaling of Checkbox and Radio button 320dpi skins.
- Option to not store last call result in RomoteObject and WebService.
- StageTextInput can now be included in scrollable content.
- new iOS os-version media css selector.
- iOS7 status bar support.
- Improved try/catch performance in several areas. 
- New MaskedTextinput component.
- JSON support for ArrayCollection and ArrayList.

Build Changes
---------------
- Made PixelBender shader binaries a separate release.
- Support for compiling with Java 7

Compiler Changes
------------------
- Fixed FDB waiting before you can start debugging a SWF

Bug Fixes
----------
 Below is a complete list of all the bug fixes that have been included since
 the last full release, Apache Flex 4.11.0.
 If you would like specific information about any of the items below, go to
 https://issues.apache.org and search for the JIRA Issue Number by using the
 Quick Search.  Details of the bug and its fix will be included on the
 resulting page.

JIRA Issue Number and Summary                                                                                        
-------------------------------------------------------------------------------------------------------------------
FLEX-34124  1069 error when try to close a Callout by clicking outside the component
FLEX-34109  Bevel 120DPI back-arrow design problem
FLEX-34107  IconItemRenderer separators disappear when using a large font
FLEX-34108  JSON.stringify and arraycollection
FLEX-34104  fontswf utility fails with exception
FLEX-34101  Regression from 4.8 to 4.10: Spark list doesn't refresh with filterFunction
FLEX-34097  Missing Assets In The mobile.swc Theme File
FLEX-34088  CalloutButton with Dropdown
FLEX-34084  Error with PopupButton/Menu in headerrenderer in DataGrid
FLEX-34070  Build script does not update target-player and swf-version values in air/airmobile config files
FLEX-34065  AdvancedDataGrid throws RTE #1009 when groupedColumns is set to null
FLEX-34062  FDB waits up to 20s per SWF before we can start debugging
FLEX-34059  StageTextInput with prompt turns entered text gray on iOS 7
FLEX-34054  Formatting applied to NumericStepper when using increment/decrement arrows
FLEX-34053  Create a new MaskedTextInput Component
FLEX-34052  ADG RTE in columnResizeMouseOverHandler
FLEX-34051  RTE in endEdit() when clicking at bottom of column
FLEX-34049  Allow the output symbols to be escaped when called from an IDE
FLEX-34046  prints full stack if Flash Player detects not handled exception
FLEX-34045  adds file id to the stack info printed by fdb
FLEX-34044  Breakpoints in ActionScript files do not work when debugging app using ANE
FLEX-34043  Impossible to set breakpoint in MXML files that contains item renderer
FLEX-34038  experimental MobileGrid seems to overflow itself & leak out into any components below it
FLEX-34032  abnormal focus behavior in popup ultimiately causes unhandled exception
FLEX-34020  Null object reference when truncating RichText
FLEX-34019  ComboBox not closed when selecting an item from the dropdown list under certain conditions
FLEX-34011  Axis Render throws RTE when axis is null
FLEX-34006  RTE null reference in ViewTransitionBase.captureEndValues() when Skin doesn't provide an ActionBar
FLEX-33999  spark.skins.mobile480.assets.BeveledActionButton_
FLEX-33992  Zero division at Grid.as setters for horizontalScrollPosition and verticalScrollPosition
FLEX-33990  RTE in AdvancedDataGridBase drawItem
FLEX-33989  ViewNavigatorBase discards MultiDPIBitmapSource information for icon when saving and re-loading view
FLEX-33987  FocusManager NPE
FLEX-33985  [TLF] Pressing BACKSPACE key when editing a TextInput deletes a whole line
FLEX-33984  Spark CheckBox does not support labelPlacement like it's mx counter part
FLEX-33978  AIR mobile + flex sdk 4.10 + text field setFocus runtime error
FLEX-33976  closing Alert from modal TitleWindow removes blur in main app
FLEX-33971  480 DPI Display bug with Mobile CheckBox
FLEX-33947  Errors in mobile ButtonBar Flex 4.11
FLEX-33921  BitmapImage don't show up in specific case
FLEX-33920  spark ComboBox.changeHighlightedSelection doesn't check the newindex upperbound
FLEX-33919  Listbase selectItem getter does not validate selectedIndex for values below 0 other than -1.
FLEX-33913  XMLListCollection addItem(item) modifies a parent XMLList of the item
FLEX-33904  EffectManager#getEventForEffectTrigger : avoid unneeded memory allocations
FLEX-33902  ResourceManager#getInstance should not allocate unneeded memory
FLEX-33899  DataGrid goes blank when removing last item from dataProvider when requestedRowCount is set
FLEX-33897  MediaQueryParser should not allocate memory for expressions already cached
FLEX-33893  CSSStyleDeclaration is inefficient during style matching
FLEX-33891  Styleprotochain#getstyleManager shouldn't be called twice during style computations
FLEX-33885  BindingManager#executeBindings : Avoid unneeded memory allocation
FLEX-33884  Android mobile app crashes when you click on a modal
FLEX-33880  Popup modal blocks the application
FLEX-33878  Matrix computations : avoid unneeded flash.geom.Transform and flash.geom.Matrix allocations
FLEX-33877  BusyCursor : Avoid unneeded Point allocations
FLEX-33875  Runtime error #1069 in MobileSkin class on focus out
FLEX-33874  Binding management is memory inefficient when using the defaultDestFunc
FLEX-33871  message error "Definition spark.skins.mobile480.assets:ActionBarBackground could not be found"
FLEX-33865  ConstraintLayout / LayoutElementHelper are memory inefficient (and slow)
FLEX-33864  spark DataGrid drag and drop on empty grid causes RangeError
FLEX-33861  Flex Incorrectly Scaling Down Application on iPad
FLEX-33860  Support For iOS7 status bar
FLEX-33853  Optimize UIDUtil / RPCUIDUtil fromByteArray() method
FLEX-33852  Port UIDUtil optimizations to RPCUIDUtil
FLEX-33842  CXFormWithAlpha doesn't override toString() method, causing swfdump to ignore alpha effects
FLEX-33835  LocaleSorter#sortLocalesByPreference is slow
FLEX-33836  ResourceManagerImpl should implement some kind of lazy loading
FLEX-33830  SDK 4.10.0 spark datagrid header and horizontal scrollbar behavior effected by app state change
FLEX-33829  Improve ArrayList performance
FLEX-33824  Disappearing spark DataGrid columns when we set dataProvider to null
FLEX-33813  Datagrid goes blank when assigning new dataProvider.source and calling refresh
FLEX-33779  RTE in Label.as when it's 8px wide and uses the Myriad Web Pro font face
FLEX-33772  Incorrect tab focus behavior (closed loops) when using focus groups (such as RadioButton components)
FLEX-33745  Null error in the PopupManagerImpl if accessibility is deactivated
FLEX-33715  Error: Attempted access of inaccessible method getStyle through a reference with static type MXFTETextInput.
FLEX-33671  Warning messages when using experimental components.
FLEX-33632  Getting Run Time Error when loading resource module at runtime.
FLEX-26768  When debugging multi-module projects impossible to set breakpoint
FLEX-26308  ListCollectionView addAllAt causes RTE on filtered collections
FLEX-25962  PopupAnchor needs modal functionality
FLEX-24623  Remove private declarations in PopUpAnchor

Apache Flex 4.11
=================

Apache Flex 4.11 is an update to Apache Flex 4.10. 

Known Issues
_____________

Adobe Flash Builder Integration

Adobe Flash Builder 4.7 and Adobe Flash Builder 4.6 both contain a bug where, 
when generating the .mxml file for a new project that uses Apache Flex 4.10.0 
and Spark Application, Flash Builder will incorrectly insert the attribute:

	layout="absolute"

This results in a compile error in the new project.  The remedy is to simply
remove the errant attribute.

The following wiki page has been set up to contain the latest news on Adobe's
attempt to correct this problem:

https://cwiki.apache.org/confluence/display/FLEX/Adobe+Flash+Builder+'New+Project'+Bug

Adobe has provided a patch for Flash Builder 4.7 that resolves this issue:

http://helpx.adobe.com/flash-builder/kb/flex-new-project-issue--.html


Differences from Apache Flex 4.10 include:

AIR and Flash Player support
------------------------------
 - Support Flash Player 11.9.
 - Support for AIR 3.9.

SDK Changes
-------------
- 120 and 640 dpi mobile resolution/skin support, fixes to 480dpi skins.
- mx:AdvancedDataGrid and mx:DataGrid speed improvements.
- Added column sort type access to the datagrid columns in mx:Datagrid, s:Datagrid, and mx:AdvancedDataGrid. 
- Able to easily change mx:AdvancedDataGrid row and column item renderer spanning.
- s:DataGridEditor will now be visible in ASDocs and be visible in the Tag inspector.
- Minor changes to make SDK compile with Falcon compiler.
- Added access to imageDecodingPolicy in BitmapImage.
- Changes to custom skin for s:DataGrid (was changed in 4.10 but missed in release notes)
- Changed UIComponent removedFromStageHandler from private to protected to allow override
- New experimental mobile spark datagrid.
- Updated OSMF swc to latest version (2.0)
- Renamed experimental supportClazzes package to be supportClasses. 
- Mobile Callout moved to spark and can be used in Desktop and Browser apps.

Compiler changes
------------------
 - Support for [Experimental] metadata tag.

Bug Fixes
----------
 Below is a complete list of all the bug fixes that have been included since
 the last full release, Apache Flex 4.10.0.
 If you would like specific information about any of the items below, go to
 https://issues.apache.org and search for the JIRA Issue Number by using the
 Quick Search.  Details of the bug and its fix will be included on the
 resulting page.

JIRA Issue Number and Summary                                                                                        
-------------------------------------------------------------------------------------------------------------------
FLEX-33823  Certain DateField format strings causes null value in selectedDate
FLEX-33820  Cutted text after pasting it from MS Excel in spark TextInput
FLEX-33819  fontswf.bat error line 19
FLEX-33818  Spark Datagrid column resize and sort bug when releasing mouse outside of headers
FLEX-33813  Datagrid goes blank when assigning new dataProvider.source and calling refresh
FLEX-33807  DateValidator class (mx.validators.DateValidator) incorrectly validating date
FLEX-33803  Mark experimental components with the experimental metadata tag
FLEX-33801  Missing embedded examples in ASDOC on flex.apache.org/asdoc/
FLEX-33789  Logical error: self-reference in GridHeaderViewLayout
FLEX-33783  mxmlc -help returns 1
FLEX-33782  AccordionData labelField and labelFunction properties don't work
FLEX-33772  Incorrect tab focus behavior (closed loops) when using focus groups (such as RadioButton components)
FLEX-33771  compatibilityVersionString returns the wrong value
FLEX-33748  TabBar shouldn't be colorized in TabNavigatorSkin
FLEX-33741  Propagation of Escape key in mx.controls.DateField should only be stopped if the DropDown is shown
FLEX-33739  Duplication segment of code calling MultiBitmapSource getSource(dpi)
FLEX-33738  ArrayCollection addAll() adds items in the wrong order
FLEX-33736  NullPointer exception in VideoDisplay
FLEX-33730  RTE in Application.as line 2157 in Air simulator
FLEX-33726  DateField.stringToDate returns null when inputFormat has no separators
FLEX-33724  Error in mx:DataGridBase.addClipMask() when using custom item renderer and locked columns
FLEX-33722  Dragging a row with an itemRenderer which extends DefaultGridItemRenderer causes null pointer
FLEX-33718  Warning: variable definition duplicates function parameter in MX project
FLEX-33714  Falcon compiler is stricter with ++ and -- operator on constants.
FLEX-33712  DataGrid with itemRenderer Drag and Drop error
FLEX-33710  spark DataGrid isCellEditable is missing index bounds check
FLEX-33705  DataGridDragProxy created item renderer without a reference to the column
FLEX-33702  DataGrid columns unable to specify sorting internal compare functions used.
FLEX-33698  Shift Return creates new ParagraphElement
FLEX-33692  Spark button border issue
FLEX-33690  focus does not move correctly when there are multiple non-modal popup windows
FLEX-33689  Flex Library project unit tests creates invalid FlexUnitApplication.mxml
FLEX-33688  RTE in advanced list when setting selection to null and column is sorted
FLEX-33687  DataGridEditor is not visible in ASDOCS has been excluded
FLEX-33683  Bad ordering of ListCollectionView addAllAt
FLEX-33682  Large Advanced Data Grid slow to resize
FLEX-33678  DataGrid VerticalScrollBar disappears in CallOut or on StateChange in 4.10.0
FLEX-33667  Compiler with Apache Flex 4.10 occur error : Uncaught exception in compiler.
FLEX-33666  When scrolling a Spark Datagrid with the mousewheel after starting an itemEditor session, the itemEdito
FLEX-33665  ItemEditors are placed on the wrong position after scrolling an editable Spark Datagrid
FLEX-33657  Spark NumericStepper - View is decimal
FLEX-33655  RTE when closing SkinnablePopUpContainer
FLEX-33654  Spark Datagrid - ItemEditor Keyboad Ctrl+V & Ctrl+C dont work
FLEX-33643  Improve experimental CallOut component frame arrow display
FLEX-33636  Error when creating new project in FB 4.7 using SDK 4.10.0 (11.8/3.8)
FLEX-33630  ComboBox RTE when opened and DEL pressed OR when opened, text input and BACKSPACE pressed
FLEX-33428  mx:Text with htmlText attribute compiled for FTETextField displays no text
FLEX-33409  TLF crashes when hypens are shown in a multi span textFlow
FLEX-33159  addSortField method in the AdvancedDataGridEx degenerates the internal state of the Sort object
FLEX-33158  addSortField method in the AdvancedDataGridEx works inconsistently
FLEX-33157  Sort class: _fields and fieldList variables can be out of sync
FLEX-33131  rendererDescriptionMap is private, should be made protected to allow customizing the grid for condition
FLEX-33052  Runtime error when using a chart in a module in an app that is also using charts
FLEX-32998  NullPointerException in AdvancedDataGrid.getFieldSortInfo
FLEX-32848  AdvancedDataGrid doesn't respect style property 'textSelectedColor' for selectionMode='singleCell'
FLEX-28012  FormItemSkin and StackedFormItemSkib indicatorDisplay's toolTip is not localized
FLEX-27658  DataGrid component does not allow a default sorting order
FLEX-27648  ViewStack.getItemIndex() throws error instead of returning -1 when item is not a child of the ViewStack
FLEX-26779  DataGrid Problem
FLEX-25906  ComboBox textInput not cleared when dataprovider changes
FLEX-25369  Sorting DataGridColumn with complex dataField throws Null Object Reference
FLEX-22182  AdvancedDatagrid get resorted once a refresh on the group Collection of a sorted ArrayCollection

Apache Flex 4.10
=================

Apache Flex 4.10 is an update to Apache Flex 4.9. 

Apache Flex 4.10 fixes over 200 bugs, introduces new datagrid features,
experimental Spark components,and adds support for the latest versions of
Flash Player and AIR. Improvements have been made to the build and testing
infrastructure and initial support for Linux added. 

Apache Flex 4.10 continues to be compatible with Flex release 4.6 (Adobe's
final release).

Make sure to review this document to see what has been changed.


Known Issues
_____________

Adobe Flash Builder Integration

Adobe Flash Builder 4.7 and Adobe Flash Builder 4.6 both contain a bug where, 
when generating the .mxml file for a new project that uses Apache Flex 4.10.0 
and Spark Application, Flash Builder will incorrectly insert the attribute:

	layout="absolute"

This results in a compile error in the new project.  The remedy is to simply
remove the errant attribute.

The following wiki page has been set up to contain the latest news on Adobe's
attempt to correct this problem:

https://cwiki.apache.org/confluence/display/FLEX/Adobe+Flash+Builder+'New+Project'+Bug


Differences from Apache Flex 4.9 include:

AIR and Flash Player support
------------------------------
 - Support Flash Player 11.8, 11.7, 11.6 and 11.5.
 - Support for AIR 3.8, 3.7, 3.6 and 3.5.
 - Support for AIR 2.6, 2.7 and 3.0.
 - Initial Linux support.
 - Mac scripts to change Flash Player and AIR version configuration.

Compiler changes
------------------
 - Support for Advanced Telemetry in Flash Builder, ant task and command line
   tools.
 - SVG support is no longer deprecated.
 - SWF ProductInfo is now "Apache Flex" instead of "Adobe Flex"

Build script changes
----------------------
 - Improved clean targets in build scripts.
 - Changed SDK description to include AIR version.
 - Change the internal release number to be date format YYYYMMDD.
 - Support for auto discovery of TLF directory and TLF_HOME environment
   variable.
 - Added no.thirdparty-clean and no.thirdparty-downloads options.
 - Fixed issue with pt_PT, el_GR, en_AU, en_GB and en_CA locales.

SDK Changes
-------------
 - New navigation for Grid, DataGrid, ComboBox, DropDownList, List, ButtonBar 
   and TabBar.
 - New data grid features to lock rows and columns, sort multiple columns and
   move and sorting columns via the keyboard.
 - Row, column, cell and table datagrid double click modes.
 - Spark RadioButtonGroup now has a selectedIndex property.
 - Spark ButtonBar and TabBar can now enable/disable buttons.
 - Spark ButtonBar and TabBar can now prevent the selection / toggling of their
   buttons.
 - Added enabled property when buttons are created for the MX ButtonBar.
 - Fixed RTEs in Advanced DataGrid when dynamically assigning columns.
 - Fixed RTEs and improved performance in Advanced DataGrid.
 - Improved support of dates including DD/MM/YYYY support, single digit day and
   month in date formats and international dates including Japanese, Chinese
   and Korean dates.
 - Improved dates formatter and validators with timezone and millisecond
   formatting.
 - Improved support for international number separators.
 - Improved number formatting.
 - Improved email validation.
 - Improved NumericStepper.
 - Improved DateField and DateChooser.
 - Improve currency formatting support.
 - More supported locales for postcode validator and formatters.
 - Added 'no color' support to ColorPicker.
 - Added removeItem to ListCollectionView.
 - Bitmap scaling works in fill and crop modes.
 - Fixed performance issue with matchesStyleClient.
 - Improved performance of truncating text to fit.
 - RPC toString improvements.
 - Better support of small numbers and scientific notation in numeric steppers.
 - 480 dpi mobile resolution/skin support.
 - New fr_CH locale.
 - Many minor improvements and changes, including RTE fixes.
  
 Check the bug fix list below for more details.
 
Experimental Components
-------------------------
 - Added new components Accordion, DataAccordion, InlineScroller and layouts
   AccordionLayout, CarouselLayout, CoverflowLayout, StackLayout (and more).
 - Spark CallOut and CallOut Button.
 - Spark Alert.
 - Spark ColorPicker.
 - Spark MenuBar and Menu.
 - Spark ProgressBar.

Mustella Test Framework changes
---------------------------------
 - Many improvements to mustella tests.
 - Better consistency between running tests on windows and OSX.
 - Fixed mobile and AIR mustella tests.
 - Fixed issue with embedded fonts and mustella tests.
 - Added more tests for charts, datefields, date formatters, OLAPDataGrid,
   data grid locked row and columns and other miscellaneous tests.
 - Regenerated mustella baseline images.
 - Moved imageDiffAIR to utilities and added improvements.
 - New patch testing service.

Version Control
-----------------
 - Apache Flex has officially moved it's code base to Git from SVN. Information
   on the new checkout and build instructions can be found in the README file.

Bug Fixes
----------
 Below is a complete list of all the bug fixes that have been included since
 the last full release, Apache Flex 4.9.0.
 If you would like specific information about any of the items below, go to
 https://issues.apache.org and search for the JIRA Issue Number by using the
 Quick Search.  Details of the bug and its fix will be included on the
 resulting page.

JIRA Issue Number  Summary                                                                                         Resolution
------------------------------------------------------------------------------------------------------------------------------
FLEX-33632         Getting Run Time Error when loading resource module at runtime                                  Fixed
FLEX-33613         RTE when closing Popup with RIATEST open but the application compiled with accessibility = falseFixed
FLEX-33604         Spark DataGrid causes a tooltip (text: ""<dataTip>"") to appear for its typical item renderer   Fixed										
FLEX-33600         Creating a pop up from a menubar or from within Firefox crashes                                 Fixed										
FLEX-33596         Tween.stop can stop some other Tween object after Tween has ended                               Fixed										
FLEX-33593         mx.controls.MenuBar#mouseOutHandler TypeError                                                   Fixed										
FLEX-33592         mx.controls.MenuBar#getMenuAt TypeError                                                         Fixed										
FLEX-33590         Adding a preventSelection feature to spark components inheriting listbase                       Implemented										
FLEX-33570         When I press a key to pop up a new window, how to forbid inputting into the edit control        Implemented			
FLEX-33559         Horizontal scrolling of an empty spark DataGrid does not work                                   Implemented	
FLEX-33545         RTE in destroyItemEditor in AdvancedDataGrid                                                    Fixed										
FLEX-33542         mx:AdvancedDataGrid header column separators display embedded SWF on mouseover                  Fixed					
FLEX-33537         Spark TextArea writing in prompt text format                                                    Fixed										
FLEX-33526         findRowIndicies to complement findRowIndex                                                      Implemented										
FLEX-33524         ButtonBar/TabBar enable/disable buttons                                                         Implemented										
FLEX-33523         MultiDPIBitmapSource is not behaving properly when fillMode = repeat                            Fixed										
FLEX-33518         Flash charts/graphs do not display when printed                                                 Fixed										
FLEX-33516         DateFormatter.parseDate assumes months comes before days in all locales                         Fixed										
FLEX-33514         DateFormatter should support Japanese and Chinese date formats                                  Fixed										
FLEX-33510         DateFormatter can ignore PM string and give result 12 hours out                                 Fixed										
FLEX-33505         value property of NumericStepper does not update on text input                                  Fixed										
FLEX-33504         Some dateFormat locale properties not well displayed by DateField                               Fixed										
FLEX-33502         Files missing Apache licence                                                                    Fixed										
FLEX-33501         Source attachment of TextLayout.swc points to the wrong directory                               Fixed
FLEX-33500         XMLEncoder fails to encode WSDL simpleType union                                                Fixed										
FLEX-33498         Enhancement for dataProvier/selectedIndex supporting components                                 Implemented										
FLEX-33497         Provide a new DPI density                                                                       Fixed									
FLEX-33480         Build error when locale is set to pt_PT                                                         Fixed										
FLEX-33477         Listbase doesn't expose setSelectedIndex                                                        Fixed										
FLEX-33476         Get Involved Page Outdated                                                                      Fixed										
FLEX-33453         Compilers have wrong copyright year                                                             Fixed										
FLEX-33450         RTE - PopupManager mx.controls.DataGrid                                                         Fixed
FLEX-33448         DataGrid doubleClickMode getter event binder not being called                                   Fixed										
FLEX-33447         SWF/SWC mixed up                                                                                Fixed										
FLEX-33443         Typo in manifest.xml (apache.swc): VectorCollecton instead of VectorCollection                  Fixed										
FLEX-33442         mxmlc ant compile issue when passing services argument                                          Fixed										
FLEX-33439         copylocale utility not working for locales other than english                                   Fixed										
FLEX-33436         Improved descriptions in TextFlow class                                                         Fixed										
FLEX-33426         SDK Installer UI/UX: Checkbox Improvement Request                                               Fixed										
FLEX-33422         Typo in the French translation for the SDK Installer: "Installation terminer"                   Fixed										
FLEX-33419         RuntimeLocale.as for Apache Flex Installer needs to be updated for the German language          Fixed										
FLEX-33417         mx.core.BitmapAsset & ByteArrayAsset missing in Flex 4.9 core.swc?                              Fixed										
FLEX-33416         CLONE - Apache Flex Mavenized SDK Generator Bug                                                 Fixed										
FLEX-33414         Null textInput in ComboBox                                                                      Fixed										
FLEX-33413         HTML wrapper ANT task fails to write playerProductInstall.swf to disk                           Fixed										
FLEX-33408         UIComponent#getVisibleRect() omitted from documentation                                         Fixed										
FLEX-33405         TitleWindow with TextInput throws exception on close using mobile skins                         Fixed										
FLEX-33400         Wrong item name in SOFTWARE list of README file                                                 Fixed										
FLEX-33397         Spark button skin doesn't exclude coloring icon.                                                Fixed										
FLEX-33390         Can't embed SVG asset                                                                           Fixed										
FLEX-33385         titleText SkinPart in TitleBar is NOT Required but exception is thrown if not implemented.      Fixed										
FLEX-33384         Caret visible in all textinputs after they've been selected once.                               Fixed										
FLEX-33382         Run Time Error 1009 in mx:Combobox in destoryDropdown                                           Fixed										
FLEX-33381         Setting s:ComboBox#typicalItem produces unnecessarily long width                                Fixed										
FLEX-33377         Focus can be transferred from a modal window to a non-modal window open in the background if    Fixed										
FLEX-33376         Missing locales in apache and experimental libs avoid its use in Maven                          Fixed										
FLEX-33370         max drag rate in SliderBase should not be a Constant                                            Fixed										
FLEX-33368         Support for Locale fr_CH                                                                        Fixed										
FLEX-33356         PostCodeFormatter and PostCodeValidator classes are not in Flex Docs                            Fixed										
FLEX-33355         VectorList and VectorCollection doesn't appear in Flex 4.9 Docs                                 Fixed										
FLEX-33350         CallOutButton for Web (desktop / not AIR)                                                       Fixed										
FLEX-33349         TypeError #1009 happening in dataProviderRefreshed() of List.as after refreshing the dataProv   Fixed										
FLEX-33347         DateSpinner dateAndTime jumping                                                                 Fixed										
FLEX-33345         The file frameworks\projects\apache\bundles\pt_PT\apache.properties contains no entries         Fixed										
FLEX-33344         Typo in the portuguese bundle - olap.properties                                                 Fixed										
FLEX-33340         New translations for all the keys of the Installer's Greek locale                               Fixed										
FLEX-33338         Incomplete translation and formatting when using Greek locale with the installer.               Fixed										
FLEX-33336         HDividerGroup not resizing properly if the divider is not in the initial position               Fixed										
FLEX-33335         Unable to use sdk 4.9.0 in flash builder                                                        Fixed										
FLEX-33334         AIRSDK version numbers mismatched in Flash Builder IDE make file                                Fixed										
FLEX-33328         Merge Adobe.next changes into spark DataGrid                                                    Fixed										
FLEX-33323         gumbo/components/TextInput/Properties/TextInput_properties_tester Gumbo_TextInput_alpha_proper  Fixed										
FLEX-33319         spark/formatters/CurrencyFormatter/Fallback/ some tests fail in FP 11.4+                        Fixed										
FLEX-33316         checkintests fails on no english OS                                                             Fixed										
FLEX-33315         selectedItem returns [] after setting it to [], and selecting an item                           Fixed
FLEX-33311         Nullpointer in ConstraintLayout when executing Transition on content                            Fixed										
FLEX-33309         Setup for testLayoutSWC is incomplete                                                           Fixed										
FLEX-33298         The apache lib compile without including anything                                               Fixed										
FLEX-33296         Apache Flex Mavenized SDK Bug                                                                   Fixed										
FLEX-33294         Apache Flex Mavenized SDK Generator rb.swc                                                      Fixed										
FLEX-33292         Apache Flex Mavenized SDK Generator non-swc external compile Bug                                Fixed										
FLEX-33291         Apache Flex Mavenized SDK Generator Bug                                                         Fixed										
FLEX-33290         Apache Flex Mavenized SDK Deployer Bug                                                          Fixed										
FLEX-33288         Numeric Stepper value once NaN does not change to any number user sets or increments            Fixed										
FLEX-33286         Fix version.properties for several compile-config files                                         Fixed										
FLEX-33284         New Spark Components                                                                            Implemented										
FLEX-33277         There are no Mustella tests for Charts                                                          Fixed										
FLEX-33273         CSSCondition.matchesStyleClient() is slow and creates excessive garbage                         Fixed										
FLEX-33270         FLEX-33242 spark/validators/CurrencyValidator/Methods/CV_validate_error_message_localized_test  Fixed										
FLEX-33269         FLEX-33242 testcase for sort function of Sort without SortField set to fields property on spar  Fixed										
FLEX-33267         FLEX-33242 RuntimeLocalization/RTL_SparkSkin/Integration/RTL_Compiler_LocaleParams_2_Tester     Fixed										
FLEX-33260         An initial value in SHA256 for type 'int' must be between -2147483648 and 2147483647            Fixed										
FLEX-33257         handlePropertyChangeEvents() uses duplicate events declarations                                 Fixed										
FLEX-33245         FLEX-33244 Apache Flex Mavenizer needs a review of the licenses used                            Fixed										
FLEX-33244         Create a tool for generating a mavenized form of a previously downloaded Flex SDK (Apache or    Fixed										
FLEX-33242         Mustella tests failed: when your computer language doesn't match the expected localized error   Fixed										
FLEX-33230         FLEX-33226 Config file for frameworks/projects/spark                                            Fixed										
FLEX-33229         FLEX-33226 Config files for frameworks/projects/mx                                              Fixed										
FLEX-33228         FLEX-33226 Config files for frameworks/projects/rpc                                             Fixed										
FLEX-33227         FLEX-33226 Config files for frameworks/projects/framework                                       Fixed										
FLEX-33224         Translations for supported languages in the installer                                           Fixed										
FLEX-33223         Failed installer translation into languages other than en_US                                    Fixed										
FLEX-33192         EMailValidator doesn't exclude hyphens at the beginning and end of domain names                 Fixed										
FLEX-33190         GridEvent.GRID_DOUBLE_CLICK is dispatched even when two different cells are clicked             Fixed										
FLEX-33189         centerPopUp() doesn't work correctly with layoutDirection=='rtl'                                Fixed
FLEX-33169         Spark List selection on mobile doesn't work properly                                            Fixed										
FLEX-33165         RTE on Scroller when rotating device in mobile simulator                                        Fixed
FLEX-33163         When a collection reset event is received by List selectedItem is not always cleared            Fixed										
FLEX-33130         mx.core.IButton should have getter/setter function for label property                           Fixed										
FLEX-33142         embeddedFontRegistry Null reference error loading a module that has <s:FormItem>                Fixed
FLEX-33124         FLEX-33108 Change build script to download specified version of playerglobal.swc                Fixed										
FLEX-33123         Existing validator and formatter classes only validate US and Canadian postcodes                Fixed										
FLEX-33122         FLEX-33106 MakeApacheFlexForFlashBuilder change language at runtime                             Fixed										
FLEX-33117         Removing dependency to a contrib library in the MXML download/build script                      Fixed										
FLEX-33116         Add Vector implementations of IList and ICollectionView                                         Fixed										
FLEX-33109         Add support for newer versions of the Text Layout Framework to build scripts                    Fixed										
FLEX-33106         AIR version of makeApacheFlexForFlashBuilder for Windows                                        Fixed										
FLEX-33080         Classpath for the Flex-Compiler project has hardcoded absolute paths                            Fixed										
FLEX-33070         Mustella build file issues                                                                      Fixed										
FLEX-33069         env.properties is not used in *.bat files                                                       Fixed										
FLEX-33065         env.properties not used if mxmlc/compc/asdoc run from ant task or jar executed directly         Fixed										
FLEX-33064         The Max value restriction in Spark NumericStepper doesn't work properly                         Fixed										
FLEX-32846         [Dependent][FP]AdvancedDataGrid shows wrong selection in FlashPlayer 10.1                       Fixed			
FLEX-32721         Border skin sometimes dissappears from AdvancedDataGrid                                         Fixed
FLEX-32692         AdvancedDataGrid border not rendered when switching between Flex 4 states                       Fixed			
FLEX-32599         TypeError: Error #1009: Cannot access a property or method of a null object reference           Fixed
FLEX-32589         pendingCellSelection only cleared when setting selectedCells property                           Fixed		
FLEX-32571         ADG border disappears on state transition                                                       Fixed
FLEX-29002         RunTime Error #1009 at mx.managers::PopUpManagerImpl/addModalPopUpAccessibility()               Fixed										
FLEX-28967         PopUpManagerImpl - centerPopUp method - TypeError: Error #1009: Cannot access a property or     Fixed										
FLEX-28947         Clear NumericStepper Value and get NaN in the display text area                                 Fixed										
FLEX-28946         MX DataGrid default column sort breaks on NULL complex fields                                   Fixed										
FLEX-28933         ZipCodeValidator does not fail "A0A0A" when set to CANADA_ONLY                                  Fixed
FLEX-28915         Data disappears from DataGrid when tablet state changed from portrait to landscape              Fixed					
FLEX-28883         List.requireSelection doesn't always work                                                       Fixed										
FLEX-28876         DataGrid lockedRowCount RTE when used with variableRowHeight                                    Fixed										
FLEX-28561         CLONE -Spark NumericStepper : unable to use decimals as stepSize - Displays NaN                 Fixed										
FLEX-28530         mx:DateValidator crash when property allowedFormatChars is null                                 Fixed										
FLEX-28247         In a NumericStepper, when typing a value manually and tabbing out of the field, the new value   Fixed										
FLEX-28130         The Max value restriction in Spark Numeric doesn't work properly                                Fixed										
FLEX-28045         FocusManager throws TypeError                                                                   Fixed
FLEX-27855         NumericStepper steps incorrectly with decimal values in European locale                         Fixed										
FLEX-27815         Add in Portuguese locale to Flex SDK for string externalization                                 Fixed										
FLEX-27797         Spark Datagrid double click is fired even when you make the first and second click in different Fixed										
FLEX-27768         DateField formatString doesn't display month name as expected                                   Fixed										
FLEX-27652         DateChooser displays incorrect month label                                                      Fixed										
FLEX-27315         Scroller Crash On Window Resize                                                                 Fixed
FLEX-27235         NumericStepper cannot display the correct decimal separator for various locale (fr_FR, ru_RU)   Fixed										
FLEX-27075         Wrong behavior of DateField control with fr_FR locale on French OS                              Fixed										
FLEX-26948         Null reference in Slider class: updateDisplayList                                               Fixed
FLEX-26698         CurrencyFormatter returns malformed string when formatting the number 0                         Fixed										
FLEX-26438         ArrayCollection - setItemAt API malfunctioning when it has filter function                      Fixed	
FLEX-26325         RemoteObject logs too eagerly all sent messages                                                 Fixed										
FLEX-26048         DateChooser throws #1010 error when selectableRange is empty object                             Fixed										
FLEX-25939         NumericStepper fails to commit when value is set to NaN                                         Fixed										
FLEX-25847         Odd Long Numbers Appearing In NumericStepper                                                    Fixed										
FLEX-25622         NumberValidator doesn't handle scientific notation                                              Fixed										
FLEX-25617         ValidationResultEvent message property throws exception (EmailValidator)                        Fixed										
FLEX-25071         removeAll() on a sorted ArrayCollection returns a RangeError: Index '-1'                        Fixed										
FLEX-24921         Nummericstepper displays icorrect values when minimum is decimal                                Fixed										
FLEX-24780         Initially I can change the selectedItem in a List programmatically, but if the event preventDe  Fixed										
FLEX-24764         Applying NumberFormatter.format() to 17.76 returns the incorrect value                          Fixed										
FLEX-24691         ObjectUtil.dateCompare does not handle an invalid date object                                   Fixed										
FLEX-24411         DateFormatter.parseDateString() function doesn't properly read in SQLite seconds values         Fixed										
FLEX-24296         ListCollectionView should throw a RangeError instead of Error when accessed with negative index Fixed										
FLEX-24259         DateField does not correctly parse nor format dates in fr_FR locale                             Fixed										
FLEX-24257         DateField text scrolled when pressing DateField calendar button                                 Fixed
FLEX-24225         DateFormatter "parseDateString" method cannot parse dateString value formatted with non default Fixed										
FLEX-24197         Email Validator allows for invalid email addresses                                              Fixed										
FLEX-24142         Null reference in Slider class: getComponentBounds                                              Fixed
FLEX-23980         EmailValidator's disallowed character does not include tab                                      Fixed										
FLEX-23974         Datagrid with ArrayCollection provider, error at setter of selectedIndex after applying filters Fixed										
FLEX-23834         mx.controls.DateField with editable=true and DataGrid itemEditor                                Fixed										
FLEX-23781         Error #1009 after assigning null to mx:Image source property                                    Fixed										
FLEX-23695         CurrencyFormatter.format() gives wrong result if the number has "e" exponent.                   Fixed										
FLEX-23556         Flex SDK has no Locale for en_GB                                                                Fixed										
FLEX-23486         mx:List / selectedItemsCompareFunction property is not applied correctly                        Fixed										
FLEX-23464         Setting selectedDate in closed handler of DateField doesn't update selectedDate                 Fixed										
FLEX-23303         getting the selectedIndex from a RadioButtonGroup                                               Implemented										
FLEX-23267         DateField, impossible to change a date after being invalid.                                     Fixed										
FLEX-22865         Changing a DateChooser's displayedMonth to X and then immediately changing it back results in   Fixed										
FLEX-22574         Adobe AIR updater UI not work correctly                                                         Fixed										
FLEX-22502         DateField component, when Editable, and using a DateValidator, cause 3 "invalid" events to fire Fixed										
FLEX-22452         Error in SortField.nullCompare logic                                                            Fixed										
FLEX-22068         DateFormatter.parse does not correctly handle positive GMT offset (such as UK)                  Fixed										
FLEX-21609         Make the Date.parse locale aware.                                                               Fixed										
FLEX-21066         Make removeItem( item:Object) accessible in ArrayCollection                                     Implemented										
FLEX-20956         [Localization]: DateField should support "MMM" and "MMMM" for formatString                      Fixed									
FLEX-20951         [Localization]: DateFormatter.parseDateString does not support non-latin characters in month a  Fixed										
FLEX-20566         Date Validator not handling single digit date configurations correctly for localized versions   Fixed										
FLEX-20370         DateField do not honor min or maxYear setting.                                                  Fixed										
FLEX-20322         Locale fr_FR with different monthNames and DateFormatter doesnt provide expected result         Fixed										
FLEX-20117         ValidationResultEvent.message getter throws exception if the evnt is of type                    Fixed										
FLEX-19943         DateField does not open when you click the text entry area                                      Fixed										
FLEX-19842         DateField size measured too small                                                               Fixed
FLEX-19211         StringUtil.trim() function does not remove the space in japanese language                       Fixed										
FLEX-19055         Sliders don't function with small intervals                                                     Fixed
FLEX-18951         NumberFormatter.format returns wrong number for some scientific notation values                 Fixed										
FLEX-18697         ObjectUtil.getCacheKey does not make cache key correctly                                        Fixed
FLEX-18324         Halo NumericStepper clears value is an illegal character is typed in textInput                  Fixed										
FLEX-18090         DateField with a lowercase formatString does not work                                           Fixed										
FLEX-17931         [Localization]:[HS:CN]The default value of property "dateFormat" of the Class DateFormatter     Fixed										
FLEX-17257         DateValidator attachs the inputFormat on custom wrongLength parameters                          Fixed										
FLEX-16909         DateField should support "M" for formatString                                                   Fixed									
FLEX-16876         Unrequired cast in DataGridItemRenderer.as                                                      Fixed										
FLEX-16857         Value is not a function on null ArrayCollection Sort                                            Fixed										
FLEX-16840         Unused local variable                                                                           Fixed										
FLEX-16676         When setting the date range for the DataPicker,it will not correctly update the datechooser's   Fixed										
FLEX-16656         DateField format string causes null value in selectedDate                                       Fixed										
FLEX-16235         mx.utils.ObjectUtil.getClassInfo doesn't treat XML as dynamic                                   Fixed										
FLEX-16004         DateFormatter return empty string when modifies properties of DateBase for non US               Fixed										
FLEX-15903         Error #1006: value is not a function in ListCollectionView.getFilteredItemIndex()               Fixed										
FLEX-15274         ComboBox: setting selectedItem=null does not reset the control as it is should be               Fixed										
FLEX-15171         ObjectUtil.compare() returns 0 or -1 when comparing 2 objects depending on which parameter is   Fixed										
FLEX-14804         DateField throws RTE when selecting the calendar icon when editable is set to true and the text Fixed										
FLEX-14787         Confusing, implicit cast to Number                                                              Fixed										
FLEX-14773         ListBase::findKey is invoked with event.keyCode instead of event.charCode                       Fixed										
FLEX-14766         Creating a tween with duration zero can remove random playing tween                             Fixed
FLEX-14630         Flex-SDK cannot be built entirely from source                                                   Fixed										
FLEX-14596         Add time zone formatting to DateFormatter                                                       Fixed
FLEX-14581         Mx.Controls.DateChooser - Setting .monthNames to Array of Length < 12 causes "Null" months      Fixed										
FLEX-14522         enable/disable items within the building phase of the ButtonBar component not possible          Implemented										
FLEX-14454         stop function of Tween object does not working properly                                         Fixed
FLEX-14450         NumberValidator maxValue/minValue don't work with non-english settings                          Fixed										
FLEX-14316         mx.core.UITextField.truncateToFit() contains dead code                                          Fixed										
FLEX-14269         RTE in Slider when used as dataRenderer in some test cases                                      Fixed
FLEX-14181         DividedBox call to getDividerAt(num) encounters null reference when no dividers are present     Fixed							
FLEX-14153         Unrequired cast of calHeader in DateChooser                                                     Fixed										
FLEX-13994         ListBase throws an exception due to lack of error checking                                      Fixed										
FLEX-13423         DateChooser selectedRanges gives selectedRange start+1 day [if selectedRanges.rangeStart is     Fixed										
FLEX-13401         format() method in NumbeFormatter should understand numbers in Scientic notation e.g. 1.2E7     Fixed										
FLEX-12749         DateChooser doesn't handle Daylight Saving Time correctly with multiple selection=on            Fixed										
FLEX-12628         add optional formatString argument to constructor                                               Fixed										
FLEX-12202         Passing a false Boolean argument to ArrayUtil.toArray() returns an empty Array instead of an    Fixed										
FLEX-11930         Inproper condition for IF statement                                                             Fixed

Apache Flex 4.9.1
=================

Apache Flex 4.9.1 is a minor update to Apache Flex 4.9.

Differences from Apache Flex 4.9.0: 
  - Updated README and RELEASE_NOTES.
  - Minor change to fix issue with changing locale.
  - Added AeonGraphical missing theme assets.
  - Fixed non debug compiler RTE (see ASC-2993).
  - Updated ASDocs to use correct logo.
  - Updated Mustella Japanese language pack tests to pass.
 
Bugs fixed:

JIRA Issue Number   Summary
------------------------------------------------------------------------------------------------------

FLEX-33390          Can't embed SVG asset
FLEX-33377          Focus can be transferred from a modal window to a non-modal window
                    open in the background if clicked on some specific dimension of the
                    non-modal window in the background i.e. by clicking on the extreme
                    left i.e. x=0 dimension of the application
FLEX-33384          Caret visible in all textinputs after they've been selected once
FLEX-33381          Setting s:ComboBox#typicalItem produces unnecessarily long width
FLEX-29002          RunTime Error #1009 at mx.managers::PopUpManagerImpl/addModalPopUpAccessibility()
                    when displaying more than one modal popup via PopUpManager on top of each other

Apache Flex 4.9.0
=================

This is first release after the Apache Flex 4.8.0 parity release.

The official Apache distribution is the source kit which can contain only source.
Because of this, and various licensing constraints, there must be a few differences.  

====> Please see the README, especially the "Install Prerequisites" section. <====
  
  Differences from Apache Flex 4.8.0:
  - New locales for Apache Flex including Australian, British, Canadian, Greek, Switzerland (German) and Portuguese
  - Apache Flex SDK can be compiled for any version of the Flash Player from 10.2 to 11.5
  - New PostCodeFormatter and PostCodeValidator classes for international postcode formatting and validation
  - New VectorList and VectorCollection classes for lists and collections of vectors
  - New version of the TLF (Text Layout Framework), the TLF 3.0.33 source code is now included as it is now part
    of the Apache Flex donation.
  - Can use Java 7 to compile SDK (see README for instructions)
  - Many improvements and updates to Mustella tests
  - An SDK installer has also been created and is the recommended way of installing the Apache Flex SDK in an IDE.
    For more information see http://flex.apache.org/installer.html
  
  Several bug have also been fixed including (but not limited to):
  FLEX-33272 A #1010 error occurred while trying to hide columns of an AdvancedDataGrid having lockedColumnCount
             greater than 0
  FLEX-33263 FocusOut in datagrid causes RTE if target.parent is null
  FLEX-33248 Spark GridItemEditor cannot edit nested properties
  FLEX-33216 Chart initialization performance degradation between Flex 3 and Flex 4
  FLEX-33110 Building the SDK with Java 7
  FLEX-29002 RunTime Error #1009 at mx.managers::PopUpManagerImpl/addModalPopUpAccessibility() when displaying more
             than one modal popup via PopUpManager on top of each other. On Windows 7 running on some PCs
  FLEX-28982 DropDownController - Null Object Reference
  FLEX-27758 Keyboard navigation stops working in mx:DataGrid
  
  For a full list see https://issues.apache.org/jira/browse/FLEX
  
  Differences from Adobe Flex 4.6.0:
  
  - BlazeDS integration is an optional feature (Adobe license)
  - Adobe embedded font support is an optional feature  

  - the lib directory has been restructured
        -- lib  (jars built from source)
           -- external (other Apache jars or ones with compatible licenses)
              -- optional (optional jars with incompatible licenses)

  - the default linkage is -static-link-runtime-shared-libraries=true

  - there are no longer Adobe signed RSLs (swz files) in frameworks/rsls
  - the frameworks/rsls directory contains unsigned RSL for libraries we build
    
  - the frameworks/osmf src is not included which means there is not an osmf RSL.  
  
  - the ASDoc in the asdoc package no longer has active links for Adobe Flash,
    Adobe Air, the Open Source Media Framework (OSMF) or Text Layout Format (TLF).
    We hope to correct this in a future release.

Please report new issues to our bugbase at:

    https://issues.apache.org/jira/browse/FLEX

                                          The Apache Flex Project
                                          <http://flex.apache.org/>
