Bladeren bron

Fixed color picker getting stuck on hue values

Clement Espeute 3 jaren geleden
bovenliggende
commit
30bcd34704
1 gewijzigde bestanden met toevoegingen van 21 en 14 verwijderingen
  1. 21 14
      hide/comp/ColorPicker.hx

+ 21 - 14
hide/comp/ColorPicker.hx

@@ -136,6 +136,8 @@ class ColorPicker extends Popup {
 	var width = 256;
 	var height = 256;
 
+	var set_valueGuard : Int = 0;
+
 	public var valueToARGB : (value : Vector,  outColor : Color) -> Void;
 	public var ARGBToValue : (color : Color) -> Vector;
 
@@ -218,7 +220,9 @@ class ColorPicker extends Popup {
 
 	public function change(isDragging:Bool) {
 		repaint();
+		set_valueGuard += 1;
 		onChange(isDragging);
+		set_valueGuard -= 1;
 	}
 
 	public function test() {
@@ -285,7 +289,7 @@ class ColorPicker extends Popup {
 				var color = getColorFromString(cast(e.target,InputElement).value);
 				if (color != null) {
 					set_value(color);
-					onChange(false);
+					change(false);
 				}
 				else {
 					repaint(); // we refresh to reset the text of the input to the current color if the input is invalid
@@ -434,20 +438,23 @@ class ColorPicker extends Popup {
 	};
 
 	function set_value(v) {
-		var color : Color = if (!canEditAlpha) new Color(
-			(v >> 16) & 0xFF,
-			(v >> 8) & 0xFF,
-			(v >> 0) & 0xFF,
-			255);
-		else new Color(
-			(v >> 16) & 0xFF,
-			(v >> 8) & 0xFF,
-			(v >> 0) & 0xFF,
-			(v >> 24) & 0xFF
-		);
+		if (set_valueGuard == 0) {
+			var color : Color = if (!canEditAlpha) new Color(
+				(v >> 16) & 0xFF,
+				(v >> 8) & 0xFF,
+				(v >> 0) & 0xFF,
+				255);
+			else new Color(
+				(v >> 16) & 0xFF,
+				(v >> 8) & 0xFF,
+				(v >> 0) & 0xFF,
+				(v >> 24) & 0xFF
+			);
+
+			currentValue = ARGBToValue(color);
+			repaint();
+		}
 
-		currentValue = ARGBToValue(color);
-		repaint();
 		return get_value();
 	}
 }