[ https://issues.apache.org/jira/browse/FLEX-26143?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Justin Mclean updated FLEX-26143: --------------------------------- Labels: easyfix easytest (was: ) > incorrect datagrid layout with custom vertical scrollbars when scrollbar > width != 16 > ------------------------------------------------------------------------------------ > > Key: FLEX-26143 > URL: https://issues.apache.org/jira/browse/FLEX-26143 > Project: Apache Flex > Issue Type: Bug > Components: mx: DataGrid > Affects Versions: Adobe Flex SDK 3.5 (Release) > Environment: Affected OS(s): All OS Platforms > Affected OS(s): All OS Platforms > Browser: Internet Explorer 8.x > Language Found: English > Reporter: Adobe JIRA > Labels: easyfix, easytest > > Steps to reproduce: > 1. create a skin for a vertical scrollbar thumb of width 10 > 2. override 'get measuredWidth' to return 10 > 3. create 10px wide images for arrows, track, and background > 4. set everything in CSS > 5. create a test datagrid with 2 columns and enough items to enable scrolling > > Actual Results: > > Datagrid lays out as if the vertical scrollbar has a width of 16. List > content is laid out incorrectly, so the textfield contents of column #2 will > be too far to the left. scrolling the grid, sorting a column, or calling > invalidateList() on the datagrid will force another layout with the correct > results. > > Expected Results: > > Contents are laid out correctly the first time. > > Workaround (if any): > > Nothing reasonable. > Explanation: > The issue is in ScrollControlBase.setScrollBarProperties(). This method is > invoked recursively in an update display list cycle. In here, a vertical > scrollbar is created if needed. The problem is that its minWidth is accessed > (default 16) and used for layout before it has a chance to go through its > lifecycle and measure (which would result in a minWidth of 10). > Once the vertical scrollbar does measure, we get back into the update display > list cycle (and setScrollBarProperties) but there's nothing to indicate that > the scroll area has changed. We get into ListBase.updateDisplayList(), but > the short-circuit fires (because the boolean scrollAreaChanged is false) and > nothing is done. > In ScrollControlBase.createVScrollBar(), there is a comment wondering if > validateNow() should be called on the newly created scrollbar. The answer is > yes, because that would force the measure and the layout would be done > correctly the first time. > The other option is to rewrite scroll control base to use the lifecycle > instead of invoking updateDisplayList() directly and recursively. This would > allow the measure of the vertical scrollbar and the subsequent invalidations > to happen naturally. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira