You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by pi...@apache.org on 2018/12/17 09:55:42 UTC

[royale-asjs] branch bugfix/issue_353_double_dispatch_of_change_event_in_Jewel_List updated: DispatchChangeOnStartup: Dispatch "change" based on selected item/index model changes

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

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


The following commit(s) were added to refs/heads/bugfix/issue_353_double_dispatch_of_change_event_in_Jewel_List by this push:
     new 14f6354  DispatchChangeOnStartup: Dispatch "change" based on selected item/index model changes
14f6354 is described below

commit 14f6354e037e5854900ef5620581f6914bd604c4
Author: Piotr Zarzycki <pi...@gmail.com>
AuthorDate: Mon Dec 17 10:55:30 2018 +0100

    DispatchChangeOnStartup: Dispatch "change" based on selected item/index model changes
    
    - Because model do not dispatch anymore change event DispatchChangeOnStartup bead will dispatch "change" event based on dataProviderChanged, selectedItemChanged or selectedIndexChanged event. (reference #353)
---
 .../jewel/beads/controls/DispatchChangeOnStartup.as      | 16 +++++++++-------
 .../royale/jewel/beads/models/ArrayListSelectionModel.as |  3 ---
 2 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/DispatchChangeOnStartup.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/DispatchChangeOnStartup.as
index 2ca3e50..cf6ef81 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/DispatchChangeOnStartup.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/DispatchChangeOnStartup.as
@@ -63,7 +63,7 @@ package org.apache.royale.jewel.beads.controls
 		public function set strand(value:IStrand):void
 		{
 			_strand = value;
-			IEventDispatcher(_strand).addEventListener('beadsAdded', adjustModel);
+			IEventDispatcher(_strand).addEventListener('beadsAdded', onBeadsAdded);
 		}
 
 
@@ -76,14 +76,14 @@ package org.apache.royale.jewel.beads.controls
 		 *  @productversion Royale 0.9.4
 		 *  @royaleignorecoercion org.apache.royale.events.IEventDispatcher
 		 */
-		private function adjustModel(event:Event):void
+		private function onBeadsAdded(event:Event):void
 		{
-			IEventDispatcher(_strand).removeEventListener('beadsAdded', adjustModel);
+			IEventDispatcher(_strand).removeEventListener('beadsAdded', onBeadsAdded);
 			const model:IJewelSelectionModel = _strand.getBeadByType(IJewelSelectionModel) as IJewelSelectionModel;
 			if (model) {
-				model.dispatchChangeOnDataProviderChange = true;
 				IEventDispatcher(model).addEventListener('dataProviderChanged', onChange);
-				IEventDispatcher(model).addEventListener('change', onChange);
+				IEventDispatcher(model).addEventListener('selectedItemChanged', onChange);
+                IEventDispatcher(model).addEventListener('selectedIndexChanged', onChange);
 			} else {
 				//for now
 				throw new Error('DispatchChangeOnStartup bead is not yet compatible with the component it is being applied to');
@@ -102,9 +102,11 @@ package org.apache.royale.jewel.beads.controls
 				return;
 			}
 			const model:IJewelSelectionModel = _strand.getBeadByType(IJewelSelectionModel) as IJewelSelectionModel;
-			model.dispatchChangeOnDataProviderChange = false;
 			IEventDispatcher(model).removeEventListener('dataProviderChanged', onChange);
-			IEventDispatcher(model).removeEventListener('change', onChange);
+            IEventDispatcher(model).removeEventListener('selectedItemChanged', onChange);
+            IEventDispatcher(model).removeEventListener('selectedIndexChanged', onChange);
+
+            IEventDispatcher(_strand).dispatchEvent(new Event("change"));
 		}
 	}
 }
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 1533698..3da08ee 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
@@ -251,9 +251,6 @@ package org.apache.royale.jewel.beads.models
                 dispatchEvent(new Event("selectedItemChanged"));
                 if (indexChanged)
                     dispatchEvent(new Event("selectedIndexChanged"));
-                if (!_processingInteractiveChange) {
-                    dispatchEvent(new Event("change"));
-                }
             }
 		}