You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by gr...@apache.org on 2022/11/28 00:05:26 UTC
[royale-asjs] branch develop updated: quick fix/workaround for change event issues, keeping full binding support in mx ColorPicker
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 <gr...@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"));
}
/**