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