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/04/23 20:55:31 UTC

[royale-asjs] branch develop updated: jewel-list: dispatch change when using arrow keys to navigate

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 0d4493e  jewel-list: dispatch change when using arrow keys to navigate
0d4493e is described below

commit 0d4493e87bd0264c8af1a052dd545e1e59f64a29
Author: Carlos Rovira <ca...@apache.org>
AuthorDate: Thu Apr 23 22:55:26 2020 +0200

    jewel-list: dispatch change when using arrow keys to navigate
---
 .../jewel/beads/controllers/ComboBoxController.as   | 14 +++++++++++++-
 .../ListSingleSelectionMouseController.as           | 21 +++++++++++----------
 2 files changed, 24 insertions(+), 11 deletions(-)

diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/ComboBoxController.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/ComboBoxController.as
index bd0bc55..4ae4cdb 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/ComboBoxController.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/ComboBoxController.as
@@ -134,6 +134,7 @@ package org.apache.royale.jewel.beads.controllers
 			list.addEventListener(MouseEvent.MOUSE_DOWN, handleControlMouseDown);
 			list.addEventListener(KeyboardEvent.KEY_DOWN, listKeyEventHandler);
 			list.addEventListener(Event.CHANGE, changeHandler);
+			list.addEventListener(MouseEvent.CLICK, listClickHandler);
             if (model is IJewelSelectionModel) {
 				//don't let the pop-up's list take over as primary dispatcher
 				//it needs to stay with the ComboBox (for selection bindings to work)
@@ -157,7 +158,7 @@ package org.apache.royale.jewel.beads.controllers
 
 			if(event.key === KeyboardEvent.KEYCODE__DOWN)
 			{
-				keyPressed = true
+				keyPressed = true;
 				var view:IListView = list.view as IListView;
 				var dataGroup:IItemRendererOwnerView = view.dataGroup;
 				var goToIndex:int = list.selectedIndex == -1 ? 0 : list.selectedIndex; 
@@ -231,6 +232,8 @@ package org.apache.royale.jewel.beads.controllers
 		}
 
 		/**
+		 *  ComboBox dispatch CHANGE event
+		 *  
          *  @royaleignorecoercion org.apache.royale.core.UIBase
          *  @royaleignorecoercion org.apache.royale.events.IEventDispatcher
 		 */
@@ -239,6 +242,14 @@ package org.apache.royale.jewel.beads.controllers
 			event.stopImmediatePropagation();
 			model.selectedItem = IComboBoxModel(list.getBeadByType(IComboBoxModel)).selectedItem;
 			IEventDispatcher(_strand).dispatchEvent(new Event(Event.CHANGE));
+		}
+		
+		/**
+		 * when click on the list close popup
+		 * @param event 
+		 */
+		private function listClickHandler(event:Event):void
+		{
 			dismissPopUp();
 		}
 
@@ -256,6 +267,7 @@ package org.apache.royale.jewel.beads.controllers
 				list.removeEventListener(MouseEvent.MOUSE_DOWN, handleControlMouseDown);
 				list.removeEventListener(Event.CHANGE, changeHandler);
 				list.removeEventListener(KeyboardEvent.KEY_DOWN, listKeyEventHandler);
+				list.removeEventListener(MouseEvent.CLICK, listClickHandler);
 				viewBead.popUpVisible = false;
 			}
 			keyPressed = false;
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 c239ecc..f6b273d 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
@@ -114,28 +114,29 @@ package org.apache.royale.jewel.beads.controllers
 			// 	return;
 			// }
 
-			var prevIndex:int = listModel.selectedIndex;
+			var index:int = listModel.selectedIndex;
 
 			if(event.key === KeyboardEvent.KEYCODE__UP || event.key === KeyboardEvent.KEYCODE__LEFT)
 			{
-				if(prevIndex > 0)
-					listModel.selectedIndex -=1;
+				if(index > 0)
+					index--;
 			} 
 			else if(event.key === KeyboardEvent.KEYCODE__DOWN || event.key === KeyboardEvent.KEYCODE__RIGHT)
 			{
-				listModel.selectedIndex +=1;
+				index++;
 			}
 
-			if(prevIndex != listModel.selectedIndex)
+			if(index != listModel.selectedIndex)
 			{
-                sendEvent(listView.host, 'selectionChanged');
-				(listView as IScrollToIndexView).scrollToIndex(listModel.selectedIndex);
+				listModel.selectedIndex = index;
+				listModel.selectedItem = listModel.dataProvider.getItemAt(index);
                 
-				var ir:IFocusable = listView.dataGroup.getItemRendererForIndex(listModel.selectedIndex) as IFocusable;
+				var ir:IFocusable = listView.dataGroup.getItemRendererForIndex(index) as IFocusable;
 				ir.setFocus();
 
-				// do this?
-				//sendEvent(listView.host, 'change');
+                (listView as IScrollToIndexView).scrollToIndex(index);
+				
+				sendEvent(listView.host, 'change');
 			}
 		}
 	}