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');
}
}
}