diff --git a/haxe/ui/components/pickers/ItemPicker.hx b/haxe/ui/components/pickers/ItemPicker.hx index ef618d5ee..0577e319d 100644 --- a/haxe/ui/components/pickers/ItemPicker.hx +++ b/haxe/ui/components/pickers/ItemPicker.hx @@ -1,5 +1,6 @@ package haxe.ui.components.pickers; +import haxe.ui.actions.ActionType; import haxe.ui.components.Image; import haxe.ui.containers.Box; import haxe.ui.containers.HBox; @@ -13,6 +14,7 @@ import haxe.ui.core.ItemRenderer; import haxe.ui.core.Screen; import haxe.ui.data.ArrayDataSource; import haxe.ui.data.DataSource; +import haxe.ui.events.ActionEvent; import haxe.ui.events.MouseEvent; import haxe.ui.events.UIEvent; import haxe.ui.geom.Size; @@ -144,6 +146,7 @@ class ItemPickerBuilder extends CompositeBuilder { var target = renderer.findComponent("itemPickerTrigger", Component); if (target != null) { picker.unregisterEvent(triggerEvent, onTrigger); + picker.unregisterEvent(ActionEvent.ACTION_START, onActionStart); picker.removeClass("item-picker-trigger"); return target; } @@ -192,7 +195,10 @@ class ItemPickerBuilder extends CompositeBuilder { private function registerTriggerEvents() { triggerTarget.addClass("item-picker-trigger"); if (!triggerTarget.hasEvent(triggerEvent, onTrigger)) { - triggerTarget.registerEvent(triggerEvent, onTrigger); + triggerTarget.registerEvent(triggerEvent, onTrigger); + } + if (!triggerTarget.hasEvent(ActionEvent.ACTION_START, onActionStart)) { + triggerTarget.registerEvent(ActionEvent.ACTION_START, onActionStart); } } @@ -234,6 +240,14 @@ class ItemPickerBuilder extends CompositeBuilder { hidePanel(); } } + private function onActionStart(event:ActionEvent) { + switch (event.action) { + case ActionType.CONFIRM | ActionType.PRESS: + event.cancel(); + onTrigger(null); + case _: + } + } private var _panelVisible:Bool = false; private var _panelFiller:Component = null; diff --git a/haxe/ui/components/pickers/ListItemPicker.hx b/haxe/ui/components/pickers/ListItemPicker.hx index 09b0217fe..db241a552 100644 --- a/haxe/ui/components/pickers/ListItemPicker.hx +++ b/haxe/ui/components/pickers/ListItemPicker.hx @@ -15,6 +15,10 @@ class ListItemPicker extends ItemPicker { } private class Builder extends ItemPickerBuilder { + private override function get_panelSelectionEvent():String { + return UIEvent.SUBMIT; + } + private override function get_handlerClass():Class { return Handler; } diff --git a/haxe/ui/containers/ListView.hx b/haxe/ui/containers/ListView.hx index 4a498dc1b..cabb6f6b9 100644 --- a/haxe/ui/containers/ListView.hx +++ b/haxe/ui/containers/ListView.hx @@ -243,6 +243,7 @@ class ListViewEvents extends ScrollViewEvents { case SelectionMode.ONE_ITEM: _listview.selectedIndex = renderer.itemIndex; + dispatch(new UIEvent(UIEvent.SUBMIT)); case SelectionMode.ONE_ITEM_REPEATED: _listview.selectedIndices = [renderer.itemIndex]; @@ -325,6 +326,8 @@ class ListViewEvents extends ScrollViewEvents { _listview.selectedIndex = n; } event.repeater = true; + case ActionType.CONFIRM: + dispatch(new UIEvent(UIEvent.SUBMIT)); case _: } }