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

[jira] [Comment Edited] (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:comment-tabpanel&focusedCommentId=13737442#comment-13737442 ] 

Mark Kessler edited comment on FLEX-33660 at 8/12/13 10:20 PM:
---------------------------------------------------------------

I think this will show a bit more about what Alex was mentioning.  Below is a modified version of your test.  After you add an item to the dataProvider it's not immediately updated in the List. Calling the validateNow forces it to finish updating before trying to make the newest / last item visible.



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

    <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 = "";

                //Fixed version
                chatList.validateNow();
                chatList.ensureIndexIsVisible(chatList.dataProvider.length - 1);
            }
            
        ]]>
    </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>

                
      was (Author: paeros):
    I think this will show a bit more about what Alex was mentioning.  Below is a modified version of your test.  After you add an item to the dataProvider it's not immediately updated in the List. Calling the validateNow forces it to finish updating before trying to make the newest / last item visible.



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

	<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 = "";

				//Fixed version
				chatList.validateNow();
				chatList.ensureIndexIsVisible(chatList.dataProvider.length - 1);
			}
			
		]]>
	</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>

                  
> 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
>            Assignee: Mark Kessler
>              Labels: easyfix, easytest
>         Attachments: ScrollToBottom.mxml, ScrollToBottom.png
>
>
> The method ensureIndexIsVisible() does not really work, when an item has been added to a List recently.
> You have to use workarounds 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 ScrollToBottom.mxml which demonstrates the failure (and the workaround) for Flex 4.10.0.

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