Selaa lähdekoodia

Merge pull request #324 from mcclure/continuous

Restore continuous update option for UIHSlider, UIColorPicker
Ivan Safrin 12 vuotta sitten
vanhempi
sitoutus
5dbe564fb8

+ 6 - 2
Core/Contents/Include/PolyScreenEntity.h

@@ -275,7 +275,6 @@ class _PolyExport ScreenEntity : public Entity {
 		 */
 		 */
 		ScreenEntity *getScreenEntityById(String id, bool recursive);
 		ScreenEntity *getScreenEntityById(String id, bool recursive);
 
 
-
 		/**
 		/**
 		 * Does the same as getEntitiesByID, but casts each result to ScreenEntity.
 		 * Does the same as getEntitiesByID, but casts each result to ScreenEntity.
 		 *
 		 *
@@ -325,13 +324,18 @@ class _PolyExport ScreenEntity : public Entity {
 
 
 		Number width;
 		Number width;
 		Number height;
 		Number height;
+		
+		/**
+		 * Get the drag status (true if currently being dragged) of the entity.
+		 */
+		bool isDragged();
 
 
 	protected:
 	protected:
 	
 	
 		bool focusable;
 		bool focusable;
 		bool focusChildren;
 		bool focusChildren;
 		
 		
-		bool isDragged;
+		bool dragged;
 		Number dragOffsetX;
 		Number dragOffsetX;
 		Number dragOffsetY;
 		Number dragOffsetY;
 		
 		

+ 8 - 5
Core/Contents/Source/PolyScreenEntity.cpp

@@ -41,7 +41,7 @@ ScreenEntity::ScreenEntity() : Entity() {
 	backfaceCulled = false;
 	backfaceCulled = false;
 	positionMode = POSITION_TOPLEFT;
 	positionMode = POSITION_TOPLEFT;
 	mouseOver = false;
 	mouseOver = false;
-	isDragged = false;
+	dragged = false;
 
 
 	dragOffsetX = 0;
 	dragOffsetX = 0;
 	dragOffsetY = 0;
 	dragOffsetY = 0;
@@ -190,13 +190,13 @@ bool ScreenEntity::isFocusable() const {
 }
 }
 
 
 void ScreenEntity::startDrag(Number xOffset, Number yOffset) {
 void ScreenEntity::startDrag(Number xOffset, Number yOffset) {
-	isDragged = true;
+	dragged = true;
 	dragOffsetX = xOffset;
 	dragOffsetX = xOffset;
 	dragOffsetY = yOffset;
 	dragOffsetY = yOffset;
 }
 }
 
 
 void ScreenEntity::stopDrag() {
 void ScreenEntity::stopDrag() {
-	isDragged = false;
+	dragged = false;
 }
 }
 
 
 ScreenEntity::~ScreenEntity() {
 ScreenEntity::~ScreenEntity() {
@@ -350,6 +350,10 @@ void ScreenEntity::setHitbox(Number width, Number height, Number left, Number to
 	hit.y = top;
 	hit.y = top;
 }
 }
 
 
+bool ScreenEntity::isDragged() {
+	return dragged;
+}
+
 Matrix4 ScreenEntity::getScreenConcatenatedMatrix() {
 Matrix4 ScreenEntity::getScreenConcatenatedMatrix() {
 	Matrix4 retMatrix = transformMatrix;
 	Matrix4 retMatrix = transformMatrix;
 	if(positionMode == POSITION_TOPLEFT) {
 	if(positionMode == POSITION_TOPLEFT) {
@@ -366,8 +370,7 @@ Matrix4 ScreenEntity::getScreenConcatenatedMatrix() {
 
 
 MouseEventResult ScreenEntity::_onMouseMove(Number x, Number y, int timestamp, Vector2 parentAdjust) {
 MouseEventResult ScreenEntity::_onMouseMove(Number x, Number y, int timestamp, Vector2 parentAdjust) {
 
 
-	if(isDragged) {
-	
+	if(dragged) {
 		Vector3 localCoordinate = Vector3(x+(parentAdjust.x*2.0),y+(parentAdjust.y*2.0),0);				
 		Vector3 localCoordinate = Vector3(x+(parentAdjust.x*2.0),y+(parentAdjust.y*2.0),0);				
 				
 				
 		if(parentEntity) {
 		if(parentEntity) {

+ 4 - 1
Modules/Contents/UI/Include/PolyUIColorBox.h

@@ -56,8 +56,10 @@ namespace Polycode {
 			void Update();			
 			void Update();			
 			void onClose();
 			void onClose();
 			
 			
-			void setPickerColor(Color newColor);
+			bool isContinuous();
+			void setContinuous(bool _continuous);
 			
 			
+			void setPickerColor(Color newColor);
 			Color getSelectedColor();
 			Color getSelectedColor();
 			
 			
 		protected:
 		protected:
@@ -66,6 +68,7 @@ namespace Polycode {
 			Number lastHueSelectorPosition;
 			Number lastHueSelectorPosition;
 			
 			
 			bool suppressTextChangeEvent;
 			bool suppressTextChangeEvent;
+			bool continuous;
 		
 		
 			Color selectedColor;
 			Color selectedColor;
 		
 		

+ 4 - 0
Modules/Contents/UI/Include/PolyUIHSlider.h

@@ -42,6 +42,9 @@ namespace Polycode {
 			
 			
 			void Resize(Number width, Number height);
 			void Resize(Number width, Number height);
 			
 			
+			bool isContinuous();
+			void setContinuous(bool _continuous);
+			
 			void setSliderValue(Number val);
 			void setSliderValue(Number val);
 			Number getSliderValue();			
 			Number getSliderValue();			
 			
 			
@@ -50,6 +53,7 @@ namespace Polycode {
 			Number gripPos;
 			Number gripPos;
 			
 			
 			bool dragging;
 			bool dragging;
+			bool continuous;
 			
 			
 			Number bgHeight;
 			Number bgHeight;
 			
 			

+ 16 - 0
Modules/Contents/UI/Source/PolyUIColorBox.cpp

@@ -200,6 +200,14 @@ void UIColorPicker::rebuildFromTextInputs() {
 
 
 }
 }
 
 
+bool UIColorPicker::isContinuous() {
+	return continuous;
+}
+void UIColorPicker::setContinuous(bool _continuous) {
+	continuous = _continuous;
+	alphaSlider->setContinuous(continuous);
+}
+
 void UIColorPicker::setPickerColor(Color newColor) {
 void UIColorPicker::setPickerColor(Color newColor) {
 	currentS = newColor.getSaturation();
 	currentS = newColor.getSaturation();
 	currentV = newColor.getValue();
 	currentV = newColor.getValue();
@@ -398,6 +406,14 @@ void UIColorPicker::updateColorFromHueSelector() {
 }
 }
 
 
 void UIColorPicker::Update() {	
 void UIColorPicker::Update() {	
+	if (continuous) {
+		if (mainSelector->isDragged())
+			updateColorFromMainSelector();
+		
+		if (hueSelector->isDragged())
+			updateColorFromHueSelector();
+	}
+	
 	UIWindow::Update();
 	UIWindow::Update();
 }
 }
 
 

+ 10 - 0
Modules/Contents/UI/Source/PolyUIHSlider.cpp

@@ -94,6 +94,13 @@ void UIHSlider::setSliderValue(Number val) {
 	}
 	}
 }
 }
 
 
+bool UIHSlider::isContinuous() {
+	return continuous;
+}
+void UIHSlider::setContinuous(bool _continuous) {
+	continuous = _continuous;
+}
+
 Number UIHSlider::getSliderValue() {
 Number UIHSlider::getSliderValue() {
 	return sliderValue;
 	return sliderValue;
 }
 }
@@ -157,5 +164,8 @@ void UIHSlider::Update() {
 	if(gripRect->getPosition().x != gripPos) {
 	if(gripRect->getPosition().x != gripPos) {
 		gripPos = gripRect->getPosition().x;
 		gripPos = gripRect->getPosition().x;
 		sliderValue = startValue+((endValue - startValue) * (gripPos/sliderWidth));
 		sliderValue = startValue+((endValue - startValue) * (gripPos/sliderWidth));
+		if (continuous) {
+			dispatchEvent(new UIEvent(), UIEvent::CHANGE_EVENT);
+		}
 	}
 	}
 }
 }