You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ca...@apache.org on 2020/11/29 21:53:43 UTC

[royale-asjs] branch develop updated: jewel-scrollToIndex: make list based components scrollToIndex when selectionChanged is performed in all cases but not when user clicks on an item (since we are already viewing the right part of the list)

This is an automated email from the ASF dual-hosted git repository.

carlosrovira pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git


The following commit(s) were added to refs/heads/develop by this push:
     new 8452ffb  jewel-scrollToIndex: make list based components scrollToIndex when selectionChanged is performed in all cases but not when user clicks on an item (since we are already viewing the right part of the list)
8452ffb is described below

commit 8452ffb6e25fc68bcffc5a14a2517628e560601d
Author: Carlos Rovira <ca...@apache.org>
AuthorDate: Sun Nov 29 22:53:30 2020 +0100

    jewel-scrollToIndex: make list based components scrollToIndex when selectionChanged is performed in all cases but not when user clicks on an item (since we are already viewing the right part of the list)
---
 .../beads/controllers/ListSingleSelectionMouseController.as  |  9 +++++++++
 .../royale/jewel/beads/models/ArrayListSelectionModel.as     | 12 ++++++++++++
 .../apache/royale/jewel/beads/models/IJewelSelectionModel.as |  3 +++
 .../royale/org/apache/royale/jewel/beads/views/ListView.as   |  7 +++++++
 4 files changed, 31 insertions(+)

diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/ListSingleSelectionMouseController.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/ListSingleSelectionMouseController.as
index 458be51..84f928c 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/ListSingleSelectionMouseController.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/ListSingleSelectionMouseController.as
@@ -21,6 +21,7 @@ package org.apache.royale.jewel.beads.controllers
 	import org.apache.royale.core.IStrand;
 	import org.apache.royale.events.Event;
 	import org.apache.royale.events.IEventDispatcher;
+	import org.apache.royale.events.ItemClickedEvent;
 	import org.apache.royale.html.beads.controllers.ListSingleSelectionMouseController;
 	import org.apache.royale.jewel.beads.models.IJewelSelectionModel;
 
@@ -83,6 +84,14 @@ package org.apache.royale.jewel.beads.controllers
             }
 		}
 
+        // identify when the selection is from a user click or when is programatically
+        override protected function selectedHandler(event:ItemClickedEvent):void
+		{
+            (listModel as IJewelSelectionModel).isItemClicked = true;
+            super.selectedHandler(event);
+            (listModel as IJewelSelectionModel).isItemClicked = false;
+		}
+
         /**
          * 
          * @param event 
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/ArrayListSelectionModel.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/ArrayListSelectionModel.as
index d9d2355..136b534 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/ArrayListSelectionModel.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/ArrayListSelectionModel.as
@@ -245,6 +245,18 @@ package org.apache.royale.jewel.beads.models
 			}
 		}
 
+        private var _itemClicked:Boolean = false;
+        /**
+         * Identify when the selection is from a user click or when is programatically
+         */
+        public function get isItemClicked():Boolean {
+            return _itemClicked;
+        }
+        public function set isItemClicked(value:Boolean):void {
+            if(value !== _itemClicked)
+                _itemClicked = value;
+        }
+
         /**
          *  @copy org.apache.royale.core.ISelectionModel#selectedIndex
          *
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/IJewelSelectionModel.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/IJewelSelectionModel.as
index 4a8b6d8..cb62093 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/IJewelSelectionModel.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/IJewelSelectionModel.as
@@ -35,5 +35,8 @@ package org.apache.royale.jewel.beads.models
         function get dispatcher():IEventDispatcher;
         function set dispatcher(value:IEventDispatcher):void;
         function get hasDispatcher():Boolean;
+        
+        function get isItemClicked():Boolean;
+        function set isItemClicked(value:Boolean):void;
     }
 }
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ListView.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ListView.as
index a955787..473d9b4 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ListView.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ListView.as
@@ -35,6 +35,7 @@ package org.apache.royale.jewel.beads.views
 	import org.apache.royale.core.ISelectionModel;
 	import org.apache.royale.events.Event;
 	import org.apache.royale.html.beads.DataContainerView;
+	import org.apache.royale.jewel.beads.models.IJewelSelectionModel;
 	import org.apache.royale.jewel.beads.models.ListPresentationModel;
 	import org.apache.royale.jewel.supportClasses.list.IListPresentationModel;
 	import org.apache.royale.utils.getSelectionRenderBead;
@@ -131,6 +132,12 @@ package org.apache.royale.jewel.beads.views
 			}
 			
 			lastSelectedIndex = listModel.selectedIndex;
+
+			// if the selection was not from a user click selection, then scrol to index
+			if(!(listModel as IJewelSelectionModel).isItemClicked)
+			{
+				scrollToIndex(lastSelectedIndex);
+			}
 		}
 
 		protected var lastRollOverIndex:int = -1;