Apache Flex 4.14.1
==================

New Features
------------
FLEX-34772  Add padding property to VerticalLayout/VGroup,
            HorizontalLayout/HGroup and TileLayout/TileGroup

AIR and Flash Player Support
----------------------------
- Support Flash Player 17.0

Bug Fixes
---------
FLEX-34712  Callout loses anchor to CalloutButton while callout open and screen 
            rotates
FLEX-34714  Fix to continue using legacy mobile theme removes iOS status bar 
            padding
FLEX-34746  Upscaling BusyIndicator leads to wrong rotation centre
FLEX-34748  Spark ActionBar chromeColor is ignored in Flex 14
FLEX-34750  BusyIndicatorSkin does not work with mx:Application
FLEX-34758  IOS buttons does not look correct when disabled
FLEX-34766  Android Button Skin transparency issue
FLEX-34778  Application hangs when opening node, closing it, then replacing one 
            of its children
FLEX-34774  Blur effect remains if first modal Popup closes before other modal 
            Popups
FLEX-34732  TextInput/TextArea with borderColor style set gives compiler 
            warnings
FLEX-34805  Unable to set chromeColor property on TabbedViewNavigatorApplication
FLEX-34806  Warning about font embedding on label component

Performance Improvements
---------
FLEX-34759  ArrayList/ArrayCollection performance improvements
 
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



Apache Flex 4.14.0
==================

New Features
------------
- iOS 7+ and Android 4.x+ mobile theme support 
  More info: https://cwiki.apache.org/confluence/x/7AAIAw
- New Spark components skin: FlatSpark
  More info: https://cwiki.apache.org/confluence/x/wQEIAw
- Spark RichTextEditor
- Native support for tables in TLF
- Promises/A+
  More info: https://cwiki.apache.org/confluence/x/cIH_Ag

AIR and Flash Player Support
----------------------------
- Support Flash Player 16.0
- Support for AIR 16.0

Bug Fixes
---------
FLEX-34710  spark datagrid doubleClickMode throws Error #1009 when the 
            application is run
FLEX-34707  Flatspark: Update to current version "Font Awesome 4.2"
FLEX-34701  BusyIndicator does not spin when itscontainer becomes visible
FLEX-34694  Flatspark: Setting Applications "chromeColor" style throws error
FLEX-34693  Flatspark ButtonIcon: Introduce property 'iconFontSize' to set icon
            size directly
FLEX-34692  Flatspark ButtonSkin: Icon defined by using the 'icon' style
            property doesn't appear
FLEX-34690  Skin for BusyIndicator cannot be found (legacy mobile skin)
FLEX-34685  Allow legacy mobile theme to be used if needed
FLEX-34657  SelectedIndices order is messed up
FLEX-34649  (partial) Fatal errors in TextBlock after pasting text of specific
            length in TextArea
FLEX-34644  Datagrid - Rectangle bounds problem
FLEX-34636  Release build does not work as described in README on OS X
FLEX-34634  DataGroup fires RendererExistenceEvent with a null renderer when an
            offscreen item is removed/replaced in the dataProvider
FLEX-34633  HSlider track (Android4 skin) not being filled if thumb position set
            in one case, text selection using the arrow keys doesn't work in
            RichEditableText
FLEX-34631  Cannot add source paths to a mustella test using a config file
FLEX-34611  Application crash when textFlow property set to null with
            preserveSelection
FLEX-34609  ContainerController has superfluous null checks for _container
FLEX-34608  IOS 7 Hslider (Scrubber) skin
FLEX-34606  Redundant variable
FLEX-34592  Can't use optionnal importer for TLF plainTextFormat and
            TextLayoutFormat
FLEX-34564  Minor changes to spelling, punctuation, grammar and logic.
FLEX-34557  Platform.isBrowser does not work correctly
FLEX-34556  Starting an app in portrait on an iPad results in wrong DPI
FLEX-34543  Invalid event data when saving or cancelling grid item editor
            session after data provider changes
FLEX-34539  Callout skin assumes top level application is s:Application
FLEX-34538  Spark Alert component does not add proper padding
FLEX-34531  mx.charts.series.HLOCSeries excluding a style being used in example
FLEX-34507  expected build.xml file missing from Linux binary tarball
            apache-flex-sdk-4.13.0-bin.tar.gz
FLEX-34476  Added RichTextEditor
FLEX-34467  Spark DataGrid performance extremely decreased since "gridView" is 
            introduced
FLEX-34460  adt is missing in windows install
FLEX-34458  HierarchicalCollectionViewCursor.current returns wrong item after
            previous sibling is removed when current was "${L}"
            (CursorBookmark.LAST)
FLEX-34456  HierarchicalCollectionViewCursors interfere with each other's
            operation
FLEX-34454  Setting modalTransparencyBlur to 0 gives blur when Alert ist shown
            on top of modal Dialog
FLEX-34450  mx.validators.EmailValidator does not accept ".email" domain
FLEX-34440  'Bookmark no longer valid' CursorError caused by
            HierarchicalCollectionView's conversion of
            CollectionEventKind.REPLACE into CollectionEventKind.REMOVE
FLEX-34424  HierarchicalCollectionViewCursor.current returns null when previous
            sibling is removed
FLEX-34390  SkinnableTextBase bug (found in Flex 4.13.0 RC2)
FLEX-34385  Document try..catch limitation
FLEX-34378  mx:DateValidator allows multiple separator chars
FLEX-34373  spark.components.Alert should set a focus to defaultButton
FLEX-34336  Strange Trace Statements When Debugging
FLEX-34323  Allow the mustella tests directory to be located anywhere
FLEX-34318  [Mavenizer] Refactor the Mavenizer in preparation of future
            mavenized releases of flex
FLEX-34260  s:datagrid cacheAsBitmap caches an itemRenderer for every item in 
            the dataProvider
FLEX-34213  Flex mobile list performance
FLEX-34212  invalidIndex RTE in LinearLayoutVector when mouse scrolling List
FLEX-34119  mx.collections.HierarchicalCollectionViewCursor causes CursorError
            RTE from ListCollectionView when the underlying collections change
FLEX-34034  You can paste a newline code to a single-line TextInput.
FLEX-33732  Mobile theme support Android 4.x look and feel
FLEX-33054  Cursor Seek in HierarchicalCollectionViewCursor operates on wrong
            child level
FLEX-32541  sortable ou sortableColumns = false still shows box of sorting and
            sortItemRenderer = null throws error
FLEX-28291  Linear Vector Layout on the ComboBox
FLEX-26478  Runtime error occured when a TextInput's text mouse selection isn't
            finished yet but the TextInput instance is removed or its text
            changes

Other fixes (no JIRA issue created):
- correct case for osmf.swc so compiles on Linux work
- Adding a mixin to set android os version during AIR simulation

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



Apache Flex 4.13.0
=================

Apache Flex 4.13.0 is an update to Apache Flex 4.12.1 

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.1 include:

AIR and Flash Player support
------------------------------
 - Support Flash Player 14.0
 - Support for AIR 14.0

SDK Changes
-------------
- FDB supports debugging ActionScript Workers

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.1.
 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-34368  percentWidth for GridColumn
FLEX-34377  Add Chinese translations for all the installers of Flex
FLEX-34376  TreeItemRenderer can in some situations throw an RTE
FLEX-34375  FormItem label doesn't show when formItem visible and includeInLayout are set FLEX-34353  Focus not going into Flex application when user press the Shfit + Tab button
FLEX-34347  propagate breakpoint shouldn't throw an NPE when the location is not found
FLEX-34346  BP in mxml inline item renderer shouldn't be consider as Ambiguous
FLEX-34343  Remove the fdbworkers directory before to merge to the develop branch
FLEX-34342  Break and Clear command should accept paths
FLEX-34334  FDB should allow to set / removed breakpoint by default in all existed and new created instances of a worker
FLEX-34333  print #<number> should be evaluated in the context of the current worker
FLEX-34332  frame should return info in the context of the current worker
FLEX-34324  Operation class improperly builds rest call parameters
FLEX-34315  Building framework 4.12.1 manually does not work due to OSMF uppercase renaming
FLEX-34304  Wrong version of AIR / FP installed
FLEX-34303  Installer licenses refer to wrong product
FLEX-34302  Installer not cleaning up after itself
FLEX-34301  Installer missing javascript directory
FLEX-34300  Installer not installing airsdk.xml
FLEX-34297  FDB set a breakpoint in the wrong file when asked to be set for a file existing in another Worker
FLEX-34296  Disable and Remove Breakpoint should now respect the Worker logic
FLEX-34295  info breakpoints should now display the worker ID
FLEX-34294  Create a base Class for workers making them debuggable via FDB
FLEX-34292  Can't select another worker while a pending prompt is required
FLEX-34291  Merge the donated FDB with the current one
FLEX-34219  Tooltip displays in a wrong tag
FLEX-34193  Bugs from Spark ColorPicker
FLEX-34131  ResourceManagerImpl bug fix fails
FLEX-34078  mx:DateField and datechange
FLEX-33986  Validator, make "source" property [Bindable]
FLEX-23915  LabelWidth not updating properly in Forms
FLEX-13036  NestLevel never gets set for a control added to a container whilst the container is not parented if the scrollbars are on

Apache Flex 4.12.1
=================

Apache Flex 4.12.1 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
------------------------------
 - Support Flash Player 13.0
 - Support for AIR 13.0

SDK Changes
-------------
- Extended mobile media query support

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-34231  StageText displays wrong text
FLEX-34230  StageText skins prevents garbage collection of component with TextInputs and TextAreas
FLEX-34229  DataGridEditor doesn't remove the Event.DEACTIVATE listener on destroyItemEditor()
FLEX-34228  spark datagrid syntax
FLEX-34216  GridItemEditor's save() method is still called despite the grid not being on stage anymore
FLEX-34209  DateFormatter's parseDateTime method doesn't handle AM PM properly when time is in the 12 PM hour
FLEX-34200  ResourceModuleProxy doesn't load properly
FLEX-34189  ActionBar button is too big in 640 DPI
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-34098  Deleteing/Replacing Surrogate-Pair string causes RTE in TLF
FLEX-34057  RTE on pasting empty data after Excel operation
FLEX-34013  RTE at TextClipboard#importToScrap()
FLEX-33994  Need a way to distinguish phone and tablet target devices through css
FLEX-33948  Add touch behaviour to spark DropDownList classes
FLEX-33423  We can input text over than maxChars when we use "Insert" mode.
FLEX-33421  Broken metadata RequiresLicense
FLEX-33350  CallOutButton for Web (desktop / not AIR)

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


ASDoc Examples

The mx.controls.VideoDisplay and mx.effects.SoundEffect examples are not operational
pending new media.


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/>
