This is an automated email from the ASF dual-hosted git repository. gregdove 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 3b52a9daae quick fix/workaround for change event issues, keeping full binding support in mx ColorPicker 3b52a9daae is described below commit 3b52a9daae48f0d5c9d639a426479fadccd4d2a0 Author: greg-dove <greg.d...@gmail.com> AuthorDate: Mon Nov 28 13:04:58 2022 +1300 quick fix/workaround for change event issues, keeping full binding support in mx ColorPicker --- .../MXRoyale/src/main/royale/mx/controls/ColorPicker.as | 17 ++++++++++++----- .../main/royale/mx/controls/beads/ColorPickerView.as | 5 ++++- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/ColorPicker.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/ColorPicker.as index 73e22c8742..7b0e650b9b 100644 --- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/ColorPicker.as +++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/ColorPicker.as @@ -19,12 +19,14 @@ package mx.controls { - import org.apache.royale.events.Event; + import org.apache.royale.events.Event; import org.apache.royale.core.IColorModel; //import mx.controls.ComboBase; import mx.core.UIComponent; import mx.controls.colorPickerClasses.WebSafePalette; + import mx.controls.beads.ColorPickerView; import org.apache.royale.core.ISelectionModel; + import mx.events.FlexEvent; /* import flash.display.DisplayObject; import flash.events.Event; @@ -665,20 +667,25 @@ public class ColorPicker extends UIComponent //ComboBase else { indexFlag = false; - } + } */ if (value != selectedColor) { - _selectedColor = value; + //selectedColor = value; //updateColor(value); //if (dropdownSwatch) // dropdownSwatch.selectedColor = value; + //quick fix: avoid dispatch of 'change' events from ColorPickerView, which should only be from user-initiated changes: + (view as ColorPickerView).programmaticChange = true; + (model as IColorModel).color = value; + //reset the flag so user-initiated changes will dispatch subsequent changes: + (view as ColorPickerView).programmaticChange = false; + //programmatic changes dispatch 'valueCommit' as they do in Flex, to ensure bindings work for them also: + dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT)); } //dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT)); - */ - (model as IColorModel).color = value; } public function get selectedItem():Object diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/ColorPickerView.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/ColorPickerView.as index 92623545b5..0445c37f0f 100644 --- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/ColorPickerView.as +++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/ColorPickerView.as @@ -216,6 +216,8 @@ package mx.controls.beads { sizeChangeAction(); } + + public var programmaticChange:Boolean = false; /** * @private @@ -223,7 +225,8 @@ package mx.controls.beads protected function handleColorChange(event:Event):void { colorChangeAction(); - (_strand as IEventDispatcher).dispatchEvent(new ColorPickerEvent("change")); + //'change' events should only be from User-initiated changes + if (!programmaticChange) (_strand as IEventDispatcher).dispatchEvent(new ColorPickerEvent("change")); } /**