You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flex.apache.org by "Alexander Farber (JIRA)" <ji...@apache.org> on 2013/08/10 11:46:48 UTC

[jira] [Updated] (FLEX-33660) ensureIndexIsVisible() does not work for spark.components.List

     [ https://issues.apache.org/jira/browse/FLEX-33660?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Alexander Farber updated FLEX-33660:
------------------------------------

    Attachment: ScrollToBottom.mxml

The very simple test case, which demonstrates the failure in Flex 4.10.0
                
> ensureIndexIsVisible() does not work for spark.components.List
> --------------------------------------------------------------
>
>                 Key: FLEX-33660
>                 URL: https://issues.apache.org/jira/browse/FLEX-33660
>             Project: Apache Flex
>          Issue Type: Bug
>          Components: Spark: List
>    Affects Versions: Apache Flex 4.10.0
>         Environment: Flex 4.10.0 and Flash Builder 4.7 on Windows 7
>            Reporter: Alexander Farber
>         Attachments: ScrollToBottom.mxml
>
>
> The method ensureIndexIsVisible() does not really work when an item has been added to a List and you have to use wrokarounds like the one described at the http://flexponential.com/2011/02/13/scrolling-to-the-bottom-of-a-spark-list/
> I am attaching a very simple test case which demonstrates the failure (and the workaround) for Flex 4.10.0:
> <?xml version="1.0" encoding="utf-8"?>
> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
> 			   xmlns:s="library://ns.adobe.com/flex/spark" 
> 			   xmlns:mx="library://ns.adobe.com/flex/mx">
> 	
> 	<fx:Script>
> 		<![CDATA[
> 			import spark.core.NavigationUnit;
> 			
> 			private function addMessage():void {
> 				// add the message
> 				chatList.dataProvider.addItem({label:message.text});
> 				
> 				// clear the text input
> 				message.text = "";
> 				
> 				// scroll to the bottom of the List to show this item
> 				scrollToBottomBuggy();
> 			}
> 			
> 			private function scrollToBottomBuggy():void {
> 				chatList.ensureIndexIsVisible(chatList.dataProvider.length - 1);
> 			}
> 			
> 			private function scrollToBottomWorkaround():void {
> 				// update the verticalScrollPosition to the end of the List
> 				// virtual layout may require us to validate a few times
> 				var delta:Number = 0;
> 				var count:int = 0;
> 				while (count++ < 10){
> 					chatList.validateNow();
> 					delta = chatList.layout.getVerticalScrollPositionDelta(NavigationUnit.END);
> 					chatList.layout.verticalScrollPosition += delta;
> 					
> 					if (delta == 0)
> 						break;
> 				}
> 			}
> 		]]>
> 	</fx:Script>
> 	
> 	<s:Panel title="Chat" defaultButton="{btn}" horizontalCenter="0" verticalCenter="0" width="300">
> 		<s:List id="chatList" alternatingItemColors="[#EEEEEE,#DDDDDD]" height="120" width="100%">
> 			<s:layout>
> 				<s:VerticalLayout horizontalAlign="justify" gap="0" />
> 			</s:layout>
> 			<s:dataProvider>
> 				<s:ArrayCollection id="dp" />
> 			</s:dataProvider>
> 		</s:List>
> 		
> 		<s:controlBarContent>
> 			<s:TextInput id="message" width="100%" />
> 			<s:Button id="btn" label="Send" click="addMessage()" />
> 		</s:controlBarContent>
> 	</s:Panel>
> </s:Application>

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