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