Apache Flex 4.17.0
==================


New Features
------------


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


Bug Fixes
---------
FLEX-35329  Initializing member variable/constant that is [Deprecated]
            incorrectly throws extra warning

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.16.0
==================

New Features
____________
FLEX-35122  Update to Font Awesome 4.7

AIR and Flash Player Support
----------------------------
- Support Flash Player 21.0, 22.0, 23.0 and 24.0
- Support for AIR 21.0, 22.0, 23.0 and 24.0

Bug Fixes
---------
FLEX-35165  Remove bundling of Apache 1.0 licensed software
FLEX-35126  DropDownController inside a pop up still listens to MOUSE_DOWN and
		MOUSE_DOWN_SOMEWHERE after the popup has closed
FLEX-35125  DropDownList inside a PopUpAnchor doesn't close when another DropDownList
		is selected
FLEX-35124  RTE 1009 in DropDownController.systemManager_mouseDownHandler() when inside
		a PopUpAnchor and other item is removed on click
FLEX-35123  DOM XSS vulnerability in history.js
FLEX-35109  falcon compiler's build.xml error
FLEX-35106  Incorrect date in datefield popup for fr_FR locale
FLEX-35100  TextFlowLine.recreateTextLine() throws a null object reference error
FLEX-35099  BusyIndicator has the wrong wrong rotation centre for iOS
FLEX-35097  How to compile AIR beta 22 with Flex SDK?
FLEX-35084  Ability to specify FileAttributes at compile time (mxmlc)
FLEX-35082  moveIndexFindRow doesn't accept integer values
FLEX-35078  Fatal when SelectionManager tries to reapply selection onto changed textFlow
FLEX-35056  Pressing escape on s:Alert causes a RangeError when Alert.CANCEL is passed
		as defaultButtonFlag
FLEX-35046  Broken icon using FlatSpark ButtonIcon on mobile apps
FLEX-35045  Flatspark ButtonIcon - icon does not display
FLEX-35043  Unexpected behaviour of ListCollectionView.itemUpdated() when only one
		parameter supplied
FLEX-35042  Mistake in example for Pattern 'O' in ASDoc for DateFormatter.formatString
FLEX-35039  ListCollectionView.setItemAt places the item in the wrong position if there
		are duplicate items in the collection
FLEX-35037  Add ArrayCollection unit tests donated by Justin
FLEX-35031  HierarchicalCollectionViewCursor cannot find sealed class instance
FLEX-35028  Error in DataGrid getHeaderRendererAt(-1)
FLEX-35025  Validator results cannot be intercepted if the value is null
FLEX-34935  Copy From Word Document And Pasting Into TextRegion Not Working Properly
FLEX-34926  Misplaced [PercentProxy] metatag in GridColumn
FLEX-34738  Not delete BusyIndicator
FLEX-34811  Email validator show allow apostrophe in email address
FLEX-34698  Flatspark ButtonIcon: Introduce 'iconFontPlacement' style
FLEX-34391  ScrollableStageText with large y value crashes app
FLEX-34088  CalloutButton closes when selecting an item in a spark Dropdown
FLEX-33646  The "required" property on Validator should be a getter/setter
FLEX-33311  Null pointer fatal in ConstraintLayout when executing Transition on
		DropDownList
FLEX-33058  RTE in HierarchicalCollectionViewCursor when a refresh occurs and old cursor
		had an enumerable property that new cursor item doesn't
FLEX-31948  When all the columns are invisible, pressing any character Key throws RTE
FLEX-27509  AdvancedListBase itemMaskFreeList is null
FLEX-26808  s:DataGrid Drag and Drop of multiple items doesn't work
FLEX-20313  SelectItem on AdvancedDataGrid use weird code


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.15.0
==================

New Features
------------
FLEX-34837    Full support for sorting on complex fields of DataGrid rows
FLEX-34852    Sorting by complex fields in ListCollectionView
FLEX-34927    Allow the setting of an arbitrary property on an object via
                ObjectUtil
FLEX-34941    Allow custom validators to use the triggerEvent
FLEX-34945    Validators now able to validate nested properties

AIR and Flash Player Support
----------------------------
- Support Flash Player 18.0, 19.0 and 20.0
- Support for AIR 18.0, 19.0 and 20.0

Bug Fixes
---------
FLEX-32249	AdvancedDataGrid.makeListData() incorrectly references 
			HierarchicalCollectionViewCursor class instead of 
			IHierarchicalCollectionViewCursor interface
FLEX-33537	Spark TextArea writing in prompt text format
FLEX-34028	Cannot Ctrl-Click A Datagrid Row to deselect it when dragEnabled 
			is set to true
FLEX-34728	HaloDefaults.findStyleDeclaration doesn't go through styleManager 
			chains correctly
FLEX-34741	Spark DataGrid Drag and Drop non functioning
FLEX-34744	TextFlowElement parent nulled when addChild method used via 
			parent reference
FLEX-34751	Regression in fdb tool: VM is resumed if breakpoint can't be set
FLEX-34753	Returning strongly typed object in Promise fails
FLEX-34775	Application hangs (in infinite loop) when opening a node inside  
			a HierarchicalCollectionView whose parent is closed and then  
			trying to navigate the collection
FLEX-34807	TLF - EditManager - TextFlowEdit -insertTextScrap
FLEX-34812	Error "Could not find or load main class Flash" when running 
			`ant frameworks-rsls`
FLEX-34837  DataGrid sorted with complex dataField doesn't keep track of changes
            to those fields, leading to RTE when trying to remove selected item
FLEX-34838	getItemIndex returns -1 for item whose property was edited with 
			GridItemEditor in a sorted DataGrid
FLEX-34850	Applying sort with complex dataField on DataGrid results in 
			unintuitive item ordering
FLEX-34857	Adding an id to a fx:Vector when using -keep compiler argument 
			results in a compiler error
FLEX-34858	Adding a subclass of a Vector's type to the Vector in MXML 
			results in an internal build error
FLEX-34862	RTE on ListBase when dataProvider is changed
FLEX-34876	Paste Problem with multiple paragraphs
FLEX-34878	error property of NumberFormatter returns null and not it's 
			default value
FLEX-34879	FLEX-34853 Deprecate state setters and reverse() for mx and 
			spark SortField and Sort classes
FLEX-34891	TLF: pasted text doesn't get the format of the original text
FLEX-34909	Embedded fonts not working on charts
FLEX-34929	Error #1009 when copy/paste a text with style effect in a 
			RichEditableText/RichTextEditor
FLEX-34934	Spark Window - Closed Window
FLEX-34944	GridItemRenderer overrides error tooltip
FLEX-34954	SkinnableTextBase steals focus by callLater(textDisplay.setFocus)
FLEX-34982	Charting components that are unable to find their style
			declarations causing RTE
FLEX-35003	Update to FontAwesome 4.5
PR#8		Mxmlc accepts not only *.swc but also *.ane files
PR#12		Fix MenuBar.styleChanged() crash bug




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.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
FLEX-34625  Setting focus with a zero size component and focusThickness causes
            RTE

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