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 2019/10/02 14:04:53 UTC

[royale-asjs] branch develop updated: RequireSelection: Fix maximum call stack size exceeded

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

piotrz 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 437803c  RequireSelection: Fix maximum call stack size exceeded
437803c is described below

commit 437803cc190b2e5bdd6a37078432fb12a0a3f5e1
Author: Piotr Zarzycki <pi...@gmail.com>
AuthorDate: Wed Oct 2 16:04:41 2019 +0200

    RequireSelection: Fix maximum call stack size exceeded
    
    - Stop forcing selection if dataProvider is empty. ArraySelectionModel mark selectedIndex = -1 when dataProvider is empty and dispatch event "selectionChanged" which end up of calling forceSelection method and attempt of selectIndex = 0. - It's starting process again cause dataProvider is empty
---
 .../jewel/beads/controls/dropdownlist/RequireSelection.as     | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/dropdownlist/RequireSelection.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/dropdownlist/RequireSelection.as
index 89e8edc..6094e7e 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/dropdownlist/RequireSelection.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/dropdownlist/RequireSelection.as
@@ -120,13 +120,20 @@ package org.apache.royale.jewel.beads.controls.dropdownlist
 			}
 		}
 
-		private function selectionChangeHandler(event:Event):void {
+		private function selectionChangeHandler(event:Event):void
+		{
 			forceSelection();
 		}
 
-		private function forceSelection():void {
+		private function forceSelection():void
+		{
 			if(_requireSelection && ddl.selectedIndex == -1)
 			{
+				if (!ddl.dataProvider || ddl.dataProvider.length == 0)
+				{
+					return;
+				}
+
 				ddl.selectedIndex = 0;
 			}	
 		}